ABAP
Controle stroomverklaringen
Zoeken…
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.
GEVAL
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
CONTROLEREN
CHECK is een eenvoudige instructie die een logische uitdrukking evalueert en het huidige verwerkingsblok verlaat als deze onwaar is.
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.
ASSERT
ASSERT wordt gebruikt in gevoelige gebieden waar u absoluut zeker wilt zijn dat een variabele een specifieke waarde heeft. Als de logische voorwaarde na ASSERT onwaar blijkt te zijn, wordt een onverhandelbare uitzondering ( ASSERTION_FAILED ) gegenereerd.
ASSERT 1 = 1. "No Problem - Program continues
ASSERT 1 = 2. "ERROR
COND / SWITCH
SWITCH en COND bieden een speciale vorm van voorwaardelijke programmastroom. In tegenstelling tot IF en CASE , vertegenwoordigen ze verschillende waarden op basis van een uitdrukking in plaats van het uitvoeren van instructies. Daarom tellen ze als functioneel.
COND
Wanneer meerdere voorwaarden moeten worden overwogen, kan COND het werk doen. De syntaxis is vrij eenvoudig:
COND <type>(
WHEN <condition> THEN <value>
...
[ ELSE <default> | throw <exception> ]
).
Voorbeelden
" 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'
).
SCHAKELAAR
SWITCH is een handig hulpmiddel voor het in kaart brengen van waarden, omdat het alleen op gelijkheid controleert en in sommige gevallen dus korter is dan COND . Als een onverwachte invoer is gegeven, is het ook mogelijk om een uitzondering te maken. De syntaxis is een beetje anders:
SWITCH <type>(
<variable>
WHEN <value> THEN <new_value>
...
[ ELSE <default> | throw <exception> ]
).
Voorbeelden
DATA(lw_language) = SWITCH string(
sy-langu
WHEN 'E' THEN 'English'
WHEN 'D' THEN 'German'
" ...
ELSE THROW cx_sy_conversion_unknown_langu( )
).