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.