В abap давно уже есть функциональные операторы SWITH и COND которые являются альтернативой CASE и IF соответственно.
Операторы умеют определять возвращаемый тип из контекста. Если это не возможно, необходимо указать его в ручную.
Также возможно использование LET.
Пример с IF:
1 2 3 4 5 6 7 |
if lv_a > 0. data(lv_result_1) = 1. elseif lv_a < 0. lv_result_1 = 2. else. lv_result_1 = 0. endif. |
Заменим на COND:
1 2 3 |
data(lv_result_1_new) = cond i( when lv_a > 0 then 1 when lv_a < 0 then 2 else 0 ) . |
Пример с CASE:
1 2 3 4 5 6 7 8 |
case lv_b. when 'A'. data(lv_result_2) = 'First'. when 'B'. lv_result_2 = 'Second'. when others. lv_result_2 = 'Others'. endcase. |
Замена на SWITH:
1 2 3 4 5 |
DATA(lv_result_2_new) = switch #( lv_b when 'A' then 'First' when 'B' then 'Second' else 'Others' ). |