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.
programmieren, Ausbildung, Programmierung, Informatik
2 Antworten