ABAP
Steuerungsflussanweisungen
Suche…
IF / ELSEIF / ELSE
IF lv_foo = 3.
WRITE: / 'lv_foo is 3'.
ELSEIF lv_foo = 5.
WRITE: / 'lv_foo is 5'.
ELSE.
WRITE: / 'lv_foo is neither 3 nor 5'.
ENDIF.
FALL
CASE lv_foo.
WHEN 1.
WRITE: / 'lv_foo is 1'.
WHEN 2.
WRITE: / 'lv_foo is 2'.
WHEN 3.
WRITE: / 'lv_foo is 3'.
WHEN OTHERS.
WRITE: / 'lv_foo is something else'.
ENDCASE
PRÜFEN
CHECK ist eine einfache Anweisung, die einen logischen Ausdruck auswertet und den aktuellen Verarbeitungsblock beendet, wenn er falsch ist.
METHOD do_something.
CHECK iv_input IS NOT INITIAL. "Exits method immediately if iv_input is initial
"The rest of the method is only executed if iv_input is not initial
ENDMETHOD.
BEHAUPTEN
ASSERT wird in sensiblen Bereichen verwendet, in denen Sie absolut sicher sein möchten, dass eine Variable einen bestimmten Wert hat. Wenn sich die logische Bedingung nach ASSERT als falsch herausstellt, wird eine unhandliche Ausnahme ( ASSERTION_FAILED ) ausgelöst.
ASSERT 1 = 1. "No Problem - Program continues
ASSERT 1 = 2. "ERROR
COND / SWITCH
SWITCH und COND bieten eine spezielle Form des bedingten Programmablaufs. Im Gegensatz zu IF und CASE repräsentieren sie unterschiedliche Werte, die auf einem Ausdruck basieren, anstatt Anweisungen auszuführen. Deshalb gelten sie als funktional.
COND
Wenn mehrere Bedingungen berücksichtigt werden müssen, kann COND die Arbeit erledigen. Die Syntax ist ziemlich einfach:
COND <type>(
WHEN <condition> THEN <value>
...
[ ELSE <default> | throw <exception> ]
).
Beispiele
" Set screen element active depending on radio button
screen-active = COND i(
WHEN p_radio = abap_true THEN 1
ELSE 0 " optional, because type 'i' defaults to zero
).
" Check how two operands are related to each other
" COND determines its type from rw_compare
rw_compare = COND #(
WHEN op1 < op2 THEN 'LT'
WHEN op1 = op2 THEN 'EQ'
WHEN op1 > op2 THEN 'GT'
).
SCHALTER
SWITCH ist ein übersichtliches Werkzeug zum Abbilden von Werten, da es nur die Gleichheit prüft und daher in manchen Fällen kürzer als COND ist. Bei einer unerwarteten Eingabe kann auch eine Ausnahme ausgelöst werden. Die Syntax ist etwas anders:
SWITCH <type>(
<variable>
WHEN <value> THEN <new_value>
...
[ ELSE <default> | throw <exception> ]
).
Beispiele
DATA(lw_language) = SWITCH string(
sy-langu
WHEN 'E' THEN 'English'
WHEN 'D' THEN 'German'
" ...
ELSE THROW cx_sy_conversion_unknown_langu( )
).