ABAP
Oświadczenia dotyczące kontroli przepływu
Szukaj…
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.
WALIZKA
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
CZEK
CHECK jest prostą instrukcją, która ocenia wyrażenie logiczne i wychodzi z bieżącego bloku przetwarzania, jeśli jest fałszem.
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.
ZAPEWNIAĆ
ASSERT jest używany w obszarach wrażliwych, w których chcesz mieć absolutną pewność, że zmienna ma określoną wartość. Jeśli warunek logiczny po ASSERT okaże się fałszywy, ASSERTION_FAILED zostanie nieobsługiwany wyjątek ( ASSERTION_FAILED ).
ASSERT 1 = 1. "No Problem - Program continues
ASSERT 1 = 2. "ERROR
COND / SWITCH
SWITCH i COND oferują specjalną formę warunkowego przebiegu programu. W przeciwieństwie do IF i CASE reprezentują one różne wartości oparte na wyrażeniu, a nie na wykonywaniu instrukcji. Dlatego liczą się jako funkcjonalne.
COND
Ilekroć trzeba wziąć pod uwagę wiele warunków, COND może wykonać zadanie. Składnia jest dość prosta:
COND <type>(
WHEN <condition> THEN <value>
...
[ ELSE <default> | throw <exception> ]
).
Przykłady
" 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'
).
PRZEŁĄCZNIK
SWITCH jest dobrym narzędziem do mapowania wartości, ponieważ sprawdza tylko równość, dlatego w niektórych przypadkach jest krótszy niż COND . Jeśli podano nieoczekiwane dane wejściowe, możliwe jest również zgłoszenie wyjątku. Składnia jest nieco inna:
SWITCH <type>(
<variable>
WHEN <value> THEN <new_value>
...
[ ELSE <default> | throw <exception> ]
).
Przykłady
DATA(lw_language) = SWITCH string(
sy-langu
WHEN 'E' THEN 'English'
WHEN 'D' THEN 'German'
" ...
ELSE THROW cx_sy_conversion_unknown_langu( )
).