
Eine bedingte Verzweigung ist eine Kontrollstruktur, mit der Sie die Ausführung von Quelltext von logischen Bedingungen abhängig machen können.
Die häufigste bedingte Verzweigung besteht aus einem Paar der Schlüsselwörter IF und ENDIF. Der Quelltextblock zwischen IF und ENDIF wird nur ausgeführt, wenn die Bedingung nach IF erfüllt ist.
Sie können weitere Quelltextblöcke hinzufügen, indem Sie die Struktur IF … ENDIF um maximal ein Schlüsselwort ELSE und eine beliebige Anzahl von Schlüsselwörtern ELSEIF erweitern. Durch das Hinzufügen des Schlüsselworts ELSE stellen Sie sicher, dass immer genau einer der Quelltextblöcke ausgeführt wird. Wenn ELSE fehlt, kann es vorkommen, dass keiner der Quelltextblöcke ausgeführt wird.
Der auszuführende Quelltextblock wird wie folgt ermittelt:
- Zuerst wird die IF-Bedingung ausgewertet. Wenn diese erfüllt ist, wird der zugehörige Quelltextblock ausgeführt, und das Programm wird nach ENDIF fortgesetzt.
- Nur wenn die IF-Bedingung nicht erfüllt ist, wird die Bedingung nach dem ersten ELSEIF ausgewertet. Wenn diese erfüllt ist, wird der zugehörige Quelltextblock ausgeführt, und das Programm wird nach ENDIF fortgesetzt.
- Dies geschieht nacheinander für alle ELSEIF-Bedingungen. Wenn keine der Bedingungen erfüllt ist und die Struktur ELSE enthält, wird der Quelltextblock nach ELSE ausgeführt. Andernfalls wird keiner der Quelltextblöcke ausgeführt.
Hinweis

Logische Bedingungen sind eine Kombination aus Vergleichen, logischen Operationen, Ausdrücken und Funktionen, die das Laufzeitsystem auswertet, um zu entscheiden, ob die Bedingung wahr oder falsch ist.
Der häufigste Anwendungsfall für logische Bedingungen ist nach den Schlüsselwörtern IF oder ELSEIF in einer „IF ... ENDIF."-Struktur.
Das erste Beispiel ist ein einfacher Vergleich: Die Bedingung ist wahr, wenn die beiden Datenobjekte x und y den gleichen Wert haben.
Das zweite Beispiel ist etwas differenzierter: Entweder ist der Wert von x größer oder gleich y und kleiner als das Doppelte des Werts von y oder er ist kleiner oder gleich y und größer als der doppelte Wert von y.
Das dritte Beispiel verwendet die arithmetische Funktion „abs( )" und den logischen Ausdruck „BETWEEN <Ausdruck1> AND <Ausdruck2>". Die Bedingung ist wahr, wenn der absolute Wert von x zwischen dem absoluten Wert von y und dem absoluten Wert von zweimal y liegt.
Für einfache Wertevergleiche können Sie die Operatoren =, <>, >, <, >= und <= verwenden. Sie können nicht nur die Werte von Datenobjekten vergleichen, sondern auch die Werte vieler anderer Ausdrücke, wie beim arithmetischen Ausdruck „2 * y" im Beispiel.
Notiz
Sie können die Operatoren AND und OR verwenden, um logische Ausdrücke zu kombinieren, und den Operator NOT, um einen Ausdruck zu negieren. Ohne Klammern bindet NOT stärker als AND und AND stärker als OR.
ABAP kennt einige spezielle logische Ausdrücke:
- <Datenobjekt> IS INITIAL ist wahr, wenn <Datenobjekt> seinen typgerechten Initialwert enthält
- <Datenobjekt> IS NOT INITIAL ist wahr, wenn <Datenobjekt> einen Wert enthält, der vom typgerechten Initialwert abweicht
- <Datenobjekt> BETWEEN <Ausdruck1> AND <Ausdruck2>
Einige spezielle ABAP-Funktionen sind Prädikatfunktionen. Dies bedeutet, dass sie selbst logische Bedingungen sind. „Contains( )" ist eine Funktion, die zeichenartige Werte vergleicht und „line_exists( )" führt eine Existenzprüfung für eine Zeile einer internen Tabelle durch.

Eine zweite Technik für bedingte Verzweigungen ist das CASE … WHEN .. ENDCASE Kontrollstruktur.
Bedingte Verzweigung mit CASE .. ENDCASE ist ein Spezialfall der allgemeineren Verzweigung mit IF … ENDIF. Sie können CASE in Situationen verwenden, in denen die Verzweigung vom Wert eines einzelnen Datenobjekts abhängt, das Sie nacheinander mit einer Reihe möglicher Werte vergleichen, indem Sie jedes Mal einen „Ist-gleich"-Vergleich verwenden.
Im Beispiel wird der Wert des Datenobjekts number mit den Werten 1 und 2 verglichen. Wenn der Wert gleich 1 ist, wird <code_block_1> ausgeführt, und wenn der Wert euqals 2 ist, wird stattdessen <code_blocl_2> ausgeführt. Bei jedem anderen Wert wird der Quelltextblock nach WHEN OTHERS ausgeführt.
Alle bedingten Verzweigungen mit CASE … ENDCASE könnten auch mit einer IF … ENDIF-Struktur implementiert werden. Dies wird durch das Beispiel auf der rechten Seite veranschaulicht.
Hinweis


