ABAP
Instructions de flux de contrôle
Recherche…
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.
CAS
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
VÉRIFIER
CHECK est une instruction simple qui évalue une expression logique et quitte le bloc de traitement en cours si elle est fausse.
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.
AFFIRMER
ASSERT est utilisé dans les zones sensibles où vous voulez être absolument sûr qu'une variable a une valeur spécifique. Si la condition logique après ASSERT s'avère fausse, une exception non ASSERTION_FAILED ( ASSERTION_FAILED ) est ASSERTION_FAILED .
ASSERT 1 = 1. "No Problem - Program continues
ASSERT 1 = 2. "ERROR
COND / SWITCH
SWITCH et COND offrent une forme particulière de flux de programme conditionnel. Contrairement à IF et CASE , ils représentent différentes valeurs basées sur une expression plutôt que d'exécuter des instructions. C'est pourquoi ils comptent comme fonctionnels.
COND
Chaque fois que plusieurs conditions doivent être prises en compte, COND peut faire le travail. La syntaxe est assez simple:
COND <type>(
WHEN <condition> THEN <value>
...
[ ELSE <default> | throw <exception> ]
).
Exemples
" 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'
).
COMMUTATEUR
SWITCH est un outil pratique pour le mappage des valeurs, car il vérifie uniquement l'égalité, donc plus court que COND dans certains cas. Si une entrée inattendue a été donnée, il est également possible de lancer une exception. La syntaxe est un peu différente:
SWITCH <type>(
<variable>
WHEN <value> THEN <new_value>
...
[ ELSE <default> | throw <exception> ]
).
Exemples
DATA(lw_language) = SWITCH string(
sy-langu
WHEN 'E' THEN 'English'
WHEN 'D' THEN 'German'
" ...
ELSE THROW cx_sy_conversion_unknown_langu( )
).