ABAP
Controllo delle dichiarazioni di flusso
Ricerca…
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.
ASTUCCIO
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
DAI UN'OCCHIATA
CHECK è una semplice istruzione che valuta un'espressione logica ed esce dal blocco di elaborazione corrente se è falso.
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.
AFFERMARE
ASSERT viene utilizzato in aree sensibili in cui si desidera essere assolutamente sicuri che una variabile abbia un valore specifico. Se la condizione logica dopo ASSERT risulta essere falsa, viene generata un'eccezione non ASSERTION_FAILED ( ASSERTION_FAILED ).
ASSERT 1 = 1. "No Problem - Program continues
ASSERT 1 = 2. "ERROR
COND / INTERRUTTORE
SWITCH e COND offrono una forma speciale di flusso del programma condizionale. A differenza di IF e CASE , rappresentavano valori diversi in base a un'espressione anziché a istruzioni di esecuzione. Ecco perché contano come funzionali.
COND
Ogni volta che devono essere considerate condizioni multiple, COND può fare il lavoro. La sintassi è abbastanza semplice:
COND <type>(
WHEN <condition> THEN <value>
...
[ ELSE <default> | throw <exception> ]
).
Esempi
" 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'
).
INTERRUTTORE
SWITCH è uno strumento pulito per la mappatura dei valori, poiché controlla solo l'uguaglianza, in alcuni casi è più breve di COND . Se è stato fornito un input imprevisto, è anche possibile generare un'eccezione. La sintassi è leggermente diversa:
SWITCH <type>(
<variable>
WHEN <value> THEN <new_value>
...
[ ELSE <default> | throw <exception> ]
).
Esempi
DATA(lw_language) = SWITCH string(
sy-langu
WHEN 'E' THEN 'English'
WHEN 'D' THEN 'German'
" ...
ELSE THROW cx_sy_conversion_unknown_langu( )
).