ABAP
Declaraciones de flujo de control
Buscar..
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.
CASO
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
COMPROBAR
CHECK es una declaración simple que evalúa una expresión lógica y sale del bloque de procesamiento actual si es 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.
AFIRMAR
ASSERT se utiliza en áreas sensibles donde desea estar absolutamente seguro de que una variable tiene un valor específico. Si la condición lógica después de ASSERT resulta ser falsa, se lanza una excepción no ASSERTION_FAILED ( ASSERTION_FAILED ).
ASSERT 1 = 1. "No Problem - Program continues
ASSERT 1 = 2. "ERROR
COND / INTERRUPTOR
SWITCH y COND ofrecen una forma especial de flujo de programa condicional. A diferencia de IF y CASE , representan valores diferentes basados en una expresión en lugar de ejecutar sentencias. Es por eso que cuentan como funcionales.
COND
Cuando se deben considerar múltiples condiciones, COND puede hacer el trabajo. La sintaxis es bastante simple:
COND <type>(
WHEN <condition> THEN <value>
...
[ ELSE <default> | throw <exception> ]
).
Ejemplos
" 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'
).
CAMBIAR
SWITCH es una buena herramienta para mapear valores, ya que solo verifica la igualdad, por lo que es más corto que COND en algunos casos. Si se dio una entrada inesperada, también es posible lanzar una excepción. La sintaxis es un poco diferente:
SWITCH <type>(
<variable>
WHEN <value> THEN <new_value>
...
[ ELSE <default> | throw <exception> ]
).
Ejemplos
DATA(lw_language) = SWITCH string(
sy-langu
WHEN 'E' THEN 'English'
WHEN 'D' THEN 'German'
" ...
ELSE THROW cx_sy_conversion_unknown_langu( )
).