Zoeken…


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.

GEVAL

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

CONTROLEREN

CHECK is een eenvoudige instructie die een logische uitdrukking evalueert en het huidige verwerkingsblok verlaat als deze onwaar is.

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.  

ASSERT

ASSERT wordt gebruikt in gevoelige gebieden waar u absoluut zeker wilt zijn dat een variabele een specifieke waarde heeft. Als de logische voorwaarde na ASSERT onwaar blijkt te zijn, wordt een onverhandelbare uitzondering ( ASSERTION_FAILED ) gegenereerd.

ASSERT 1 = 1. "No Problem - Program continues

ASSERT 1 = 2. "ERROR

COND / SWITCH

SWITCH en COND bieden een speciale vorm van voorwaardelijke programmastroom. In tegenstelling tot IF en CASE , vertegenwoordigen ze verschillende waarden op basis van een uitdrukking in plaats van het uitvoeren van instructies. Daarom tellen ze als functioneel.

COND

Wanneer meerdere voorwaarden moeten worden overwogen, kan COND het werk doen. De syntaxis is vrij eenvoudig:

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

Voorbeelden

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

SCHAKELAAR

SWITCH is een handig hulpmiddel voor het in kaart brengen van waarden, omdat het alleen op gelijkheid controleert en in sommige gevallen dus korter is dan COND . Als een onverwachte invoer is gegeven, is het ook mogelijk om een uitzondering te maken. De syntaxis is een beetje anders:

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

Voorbeelden

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow