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( )
).


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow