wir führen bei uns auf Arbeit gerade SAP ein und ich bin für die Formularerstellung eingeteielt.
Zwar kenne ich mich in JAVA relativ gut aus,doch habe ich keinerlei Ahnung in ABAP.
Aber nun zum Problem:
Ich habe das Formular für die Bestellung (wird verwendet bei Transcode: Me22n) bearbeitet.
Möchte nun eine Abfrage einbauen, dass wenn der Bestellwert über 50.000 Euro ist etwas anderes ausgegeben wird als bei unter 50.000 ?.
Die Var. die den ges.Bestellwert enthält lautet:
KOMK-FKWRT.
Diese möchte ich nun mit der Zahl 50000 vergleichen.
Wie kann ich das machen bzw. wie muss die IF Struktur aussehen.
Habe es schon so probiert:
IF 50000 <= KOMK-FKWRT
mache das
ELSE
mache dies
ENDIF
als das nicht funktioniert hat, habe ich versucht ein Programm in ABAP zu schreiben:
*&---------------------------------------------------------------------*
*& Form vergleich
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->IN_PAR text
* -->OUT_PAR text
*----------------------------------------------------------------------*
form vergleich TABLES IN_PAR STRUCTURE ITCSY
OUT_PAR STRUCTURE ITCSY .
data: iBetrag type n,
iVergleich TYPE n,
YES_NO type C LENGTH 3.
* Eingangstabelle lesen
read table in_par with key 'KOMK-FKWRT'.
CHECK SY-SUBRC = 0.
move IN_PAR-VALUE to IBETRAG.
read table in_par with key 'VERGLEICH'.
CHECK SY-SUBRC = 0.
move IN_PAR-VALUE to IVERGLEICH.
loop at out_par where name = 'YES_NO'.
IF IBETRAG <= IVERGLEICH.
out_par-value = 'YES'.
ELSE.
out_par-value = 'NO'.
ENDIF.
modify out_par.
endloop.
endform. "vergleich
und im Formular folgendes aufgerufen:
/: DEFINE &VERGLEICH& := '10'
/: SET COUNTRY 'GB'
/: DEFINE &YES_NO& = ''
/: PERFORM VERGLEICH IN PROGRAM ZZUSATZDATEN
/: USING &KOMK-FKWRT&
/: USING &VERGLEICH&
/: CHANGING &YES_NO&
/: ENDPERFORM
Nur klappt das Ganze nicht.
Habe die Vermutung das KOMK-FKWRT evt. gar nicht als Zahl sondern als Text/Currency interpretiert wird.
Wie könnte ich das umwandeln bzw. was müsste ich verändern?
Deine Vermutung ist richtig. SAPScript ist ein Textverarbeitungssystem und wandelt deshalb alle Zahlenwerte in deren externe Darstellung um (mit Tausendertrennzeichen, Dezimalkomma und Vorzeichen am Ende).
Eine Konvertierung in ein zahlenartiges Feld muss folgendes machen:
- Entfernen von Tausendertrennzeichen
- Umwandeln von Dezimalkomma in Dezimalpunkt
- Zuweisen auf ein Zahlenfeld
translate textfeld using '. '.
condense textfeld no-gaps.
translate textfeld using ',.'.
move textfeld to numfeld.
Achtung: Falls Benutzer mit dem Programm arbeiten, die eine andere Zahlendarstellung eingestellt haben, als die deutsche, funktioniert das so nicht. In diesem Fall muss zunächst einmal die Einstellung des Benutzers geprüft werden und die Umwandlung dann entsprechend von Statten gehen.
Viel Erfolg!
Jörg Krause, Anwendungsentwickler und SAP-Betreuer MM/PP