
Bedingte Verzweigungen führen Anweisungsblöcke in Abhängigkeit vom Ergebnis eines oder mehrerer logischer Ausdrücke aus. ABAP enthält zwei Kontrollstrukturen für bedingte Verzweigungen.
IF-Kontrollstrukturen können geschachtelt werden. Die Anweisungsblöcke müssen jedoch innerhalb des aktuellen Verarbeitungsblock beendet werden. Das bedeutet, dass ein IF - ENDIF-Block beispielsweise kein Ereignisschlüsselwort enthalten darf.
REPORT demo_flow_control_if.
DATA: text1(30) TYPE c VALUE 'This is the first text', text2(30) TYPE c VALUE 'This is the second text', text3(30) TYPE c VALUE 'This is the third text', string(5) TYPE c VALUE 'eco'.
IF text1 CS string. WRITE / 'Condition 1 is fulfilled'.ELSEIF text2 CS string. WRITE / 'Condition 2 is fulfilled'.ELSEIF text3 CS string. WRITE / 'Condition 3 is fulfilled'.ELSE. WRITE / 'No condition is fulfilled'.ENDIF.
Die Listenausgabe ist:
Condition 2 is fulfilled.
In diesem Beispiel ist der zweite logische Ausdruck text2 CS string wahr, weil der String 'eco' in text2enthalten ist.
CASE-Kontrollstrukturen können geschachtelt und mit IF-Kontrollstrukturen kombiniert werden. Sie müssen jedoch innerhalb des aktuellen Verarbeitungsblocks durch ENDCASEbeendet werden.
REPORT demo_flow_control_case.
DATA: text1 TYPE c VALUE 'X', text2 TYPE c VALUE 'Y', text3 TYPE c VALUE 'Z', string TYPE c VALUE 'A'.
CASE string. WHEN text1 OR text2. WRITE: / 'String is', text1, 'OR', text2. WHEN text3. WRITE: / 'String is', text3. WHEN OTHERS. WRITE: / 'String is not', text1, text2, text3.ENDCASE.
Die Listenausgabe ist:
String is not X Y Z
In diesem Beispiel wird der letzte Anweisungsblock nach WHEN OTHERS verarbeitet, weil der Inhalt von string , 'A', nicht mit 'X', 'Y' oder 'Z' übereinstimmt.