Ricerca…


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.

ASTUCCIO

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

DAI UN'OCCHIATA

CHECK è una semplice istruzione che valuta un'espressione logica ed esce dal blocco di elaborazione corrente se è 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.  

AFFERMARE

ASSERT viene utilizzato in aree sensibili in cui si desidera essere assolutamente sicuri che una variabile abbia un valore specifico. Se la condizione logica dopo ASSERT risulta essere falsa, viene generata un'eccezione non ASSERTION_FAILED ( ASSERTION_FAILED ).

ASSERT 1 = 1. "No Problem - Program continues

ASSERT 1 = 2. "ERROR

COND / INTERRUTTORE

SWITCH e COND offrono una forma speciale di flusso del programma condizionale. A differenza di IF e CASE , rappresentavano valori diversi in base a un'espressione anziché a istruzioni di esecuzione. Ecco perché contano come funzionali.

COND

Ogni volta che devono essere considerate condizioni multiple, COND può fare il lavoro. La sintassi è abbastanza semplice:

COND <type>( 
    WHEN <condition> THEN <value> 
    ... 
    [ ELSE <default> | throw <exception> ]
).

Esempi

" 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' 
).

INTERRUTTORE

SWITCH è uno strumento pulito per la mappatura dei valori, poiché controlla solo l'uguaglianza, in alcuni casi è più breve di COND . Se è stato fornito un input imprevisto, è anche possibile generare un'eccezione. La sintassi è leggermente diversa:

SWITCH <type>( 
    <variable>
    WHEN <value> THEN <new_value> 
    ... 
    [ ELSE <default> | throw <exception> ]
).

Esempi

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow