Suche…


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.

FALL

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

PRÜFEN

CHECK ist eine einfache Anweisung, die einen logischen Ausdruck auswertet und den aktuellen Verarbeitungsblock beendet, wenn er falsch ist.

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.  

BEHAUPTEN

ASSERT wird in sensiblen Bereichen verwendet, in denen Sie absolut sicher sein möchten, dass eine Variable einen bestimmten Wert hat. Wenn sich die logische Bedingung nach ASSERT als falsch herausstellt, wird eine unhandliche Ausnahme ( ASSERTION_FAILED ) ausgelöst.

ASSERT 1 = 1. "No Problem - Program continues

ASSERT 1 = 2. "ERROR

COND / SWITCH

SWITCH und COND bieten eine spezielle Form des bedingten Programmablaufs. Im Gegensatz zu IF und CASE repräsentieren sie unterschiedliche Werte, die auf einem Ausdruck basieren, anstatt Anweisungen auszuführen. Deshalb gelten sie als funktional.

COND

Wenn mehrere Bedingungen berücksichtigt werden müssen, kann COND die Arbeit erledigen. Die Syntax ist ziemlich einfach:

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

Beispiele

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

SCHALTER

SWITCH ist ein übersichtliches Werkzeug zum Abbilden von Werten, da es nur die Gleichheit prüft und daher in manchen Fällen kürzer als COND ist. Bei einer unerwarteten Eingabe kann auch eine Ausnahme ausgelöst werden. Die Syntax ist etwas anders:

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

Beispiele

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow