Achtung schwere Kost,
die habe ich von einem Mitarbeiter der FIS geschickt bekommen (natürlich nur gegen Bezahlung) Er meinte das die Werte hart einprogrammiert sind im SAP. Die unten aufgeführte Codierung beschreibt wie die Werte im System einprogrammiert sind.
Hehe noch Fragen? Also ich hätte noch so einige aber werde mich nun mal wieder ein wenig damit beschäftigen :-)
Gruß Thomas
Codingstelle:
……
* Umrechnung von Type P in F, damit Vergleich auf Dezimalzahlen möglich
merk_lgrad = vbwh-lgrad.
MOVE 0 TO sichf.
* Ermittlung der Intervallgrenzen zur Berechnung des Sich.faktors
PERFORM intervallgrenzen_ermitteln.
FORM INTERVALLGRENZEN_ERMITTELN.
DO.
IF MERK_LGRAD GT 999.
MERK_LGRAD = 999.
ENDIF.
IF MERK_LGRAD LE 999 AND MERK_LGRAD GT 995.
LGRADO = 999 / 10.
LGRADU = 995 / 10.
SFO = 400 / 100.
SFU = 320 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 995 AND VBWH-LGRAD GT 990.
LGRADO = 995 / 10.
LGRADU = 990 / 10.
SFO = 320 / 100.
SFU = 291 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 990 AND VBWH-LGRAD GT 980.
LGRADO = 990 / 10.
LGRADU = 980 / 10.
SFO = 291 / 100.
SFU = 256 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 980 AND VBWH-LGRAD GT 950.
LGRADO = 980 / 10.
LGRADU = 950 / 10.
SFO = 256 / 100.
SFU = 206 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 950 AND VBWH-LGRAD GT 900.
LGRADO = 950 / 10.
LGRADU = 900 / 10.
SFO = 206 / 100.
SFU = 160 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 900 AND VBWH-LGRAD GT 850.
LGRADO = 900 / 10.
LGRADU = 850 / 10.
SFO = 160 / 100.
SFU = 130 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 850 AND VBWH-LGRAD GT 800.
LGRADO = 850 / 10.
LGRADU = 800 / 10.
SFO = 130 / 100.
SFU = 105 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 800 AND VBWH-LGRAD GT 750.
LGRADO = 800 / 10.
LGRADU = 750 / 10.
SFO = 105 / 100.
SFU = 84 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 750 AND VBWH-LGRAD GT 700.
LGRADO = 750 / 10.
LGRADU = 700 / 10.
SFO = 84 / 100.
SFU = 65 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 700 AND VBWH-LGRAD GT 650.
LGRADO = 700 / 10.
LGRADU = 650 / 10.
SFO = 65 / 100.
SFU = 49 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 650 AND VBWH-LGRAD GT 600.
LGRADO = 650 / 10.
LGRADU = 600 / 10.
SFO = 49 / 100.
SFU = 31 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 600 AND VBWH-LGRAD GT 550.
LGRADO = 600 / 10.
LGRADU = 550 / 10.
SFO = 31 / 100.
SFU = 16 / 100.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 550 AND VBWH-LGRAD GT 500.
LGRADO = 550 / 10.
LGRADU = 500 / 10.
SFO = 16 / 100.
SFU = 0.
EXIT.
ENDIF.
IF VBWH-LGRAD LE 500.
LGRADO = 500 / 10.
LGRADU = 0.
SFO = 0.
SFU = 0.
EXIT.
ENDIF.
EXIT. " exit, falls LGRAD-Wert ungueltig
ENDDO.
ENDFORM.
* Interpolation zwischen den Intervallgrenzen
delta_sf = sfo - sfu.
delta_lgrad = lgrado - lgradu.
sichf = sfu + ( merk_lgrad / 10 - lgradu ) / delta_lgrad * delta_sf.