Was ist an diesem ABAP-Code falsch?
Mein Ziel: Einen Taschenrechner in ABAP mit Pushbuttons, die der Benutzer anklicken kann (+,-,*,/)
Mein Problem: Wenn ich die beiden Variablen "zahl1" und "zahl2" mit einander verrechne, wird das Ergebnis nicht in dem Parameter "Ergebnis" angezeigt, was es eigentlich tun sollte.
REPORT z_taschenrechner.
DATA: ergebnis TYPE p DECIMALS 3.
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: zahl1 TYPE i,
zahl2 TYPE i.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN: BEGIN OF LINE,
PUSHBUTTON 42(5) push1 USER-COMMAND f1,
PUSHBUTTON 48(5) push2 USER-COMMAND f2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE,
PUSHBUTTON 42(5) push3 USER-COMMAND f3,
PUSHBUTTON 48(5) push4 USER-COMMAND f4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE,
PUSHBUTTON 45(5) push5 USER-COMMAND f5.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF BLOCK b2.
PARAMETERS: op TYPE c,
result TYPE p DECIMALS 3 DEFAULT ergebnis.
SELECTION-SCREEN END OF BLOCK b2.
*********************************************************************
* INITIALIZATION *
*********************************************************************
INITIALIZATION.
push1 = '+'.
push2 = '-'.
push3 = '*'.
push4 = '/'.
push5 = '='.
clear op.
clear ergebnis.
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'F1'.
op = '+'.
WHEN 'F2'.
op = '-'.
WHEN 'F3'.
op = '*'.
WHEN 'F4'.
op = '/'.
when 'F5'.
CASE op.
WHEN '+'.
ergebnis = zahl1 + zahl2.
WHEN '-'.
ergebnis = zahl1 - zahl2.
WHEN '*'.
ergebnis = zahl1 * zahl2.
WHEN '/'.
ergebnis = zahl1 / zahl2.
ENDCASE.
ENDCASE.
2 Antworten
Ich kenne die Programmiersprache nicht, aber ich vermute, dass "Clear op." dafür sorgt, dass beim Drücken von F5 die gespeicherte Operation verloren geht und somit im CASE unter "when 'F5'" keine Entsprechung gefunden wird.
Setz mal testweise zwischendrin für ergebnis Fehlwerte oder füge einen Aufrufzähler ein, um zu schauen, wo er rein läuft.
Oder füg Zwischenausgaben für deine Variablen ein.
Die Frage ist, ob der Parameter RESULT überhaupt aus dem Feld ERGEBNIS gefüllt wird.
Oder anders gesagt, zu welchem Zeitpunkt in der ABAP-Laufzeitumgebung die Anweisung DEFAULT ausgewertet wird.
Warum füllst du das Rechenergebnis nicht direkt in RESULT?
Danke für deinen Hinweis, hat aber leider nichts gebracht :(