ABAP
Выражения управляющего потока
Поиск…
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.
ДЕЛО
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
ПРОВЕРЯТЬ
CHECK - это простой оператор, который оценивает логическое выражение и выходит из текущего блока обработки, если он является ложным.
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 используется в чувствительных областях, где вы хотите быть абсолютно уверенными, что переменная имеет определенное значение. Если логическое условие после ASSERT оказывается ложным, генерируется исключение, ASSERTION_FAILED ( ASSERTION_FAILED ).
ASSERT 1 = 1. "No Problem - Program continues
ASSERT 1 = 2. "ERROR
COND / SWITCH
SWITCH и COND предлагают специальную форму условного программного потока. В отличие от IF и CASE , они представляют разные значения, основанные на выражении, а не на выполнении операторов. Вот почему они считаются функциональными.
COND
Всякий раз, когда нужно учитывать несколько условий, COND может выполнять эту работу. Синтаксис довольно прост:
COND <type>(
WHEN <condition> THEN <value>
...
[ ELSE <default> | throw <exception> ]
).
Примеры
" 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'
).
ВЫКЛЮЧАТЕЛЬ
SWITCH - это аккуратный инструмент для отображения значений, поскольку он проверяет только на равенство, поэтому в некоторых случаях он короче, чем COND . Если был предоставлен неожиданный ввод, можно также исключить исключение. Синтаксис немного отличается:
SWITCH <type>(
<variable>
WHEN <value> THEN <new_value>
...
[ ELSE <default> | throw <exception> ]
).
Примеры
DATA(lw_language) = SWITCH string(
sy-langu
WHEN 'E' THEN 'English'
WHEN 'D' THEN 'German'
" ...
ELSE THROW cx_sy_conversion_unknown_langu( )
).