Sök…


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

KOLLA UPP

CHECK är ett enkelt uttalande som utvärderar ett logiskt uttryck och lämnar det aktuella behandlingsblocket om det är felaktigt.

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.  

HÄVDA

ASSERT används i känsliga områden där du vill vara helt säker på att en variabel har ett specifikt värde. Om det logiska tillståndet efter ASSERT visar sig vara felaktigt kastas ett obehandlingsbart undantag ( ASSERTION_FAILED ).

ASSERT 1 = 1. "No Problem - Program continues

ASSERT 1 = 2. "ERROR

COND / SWITCH

SWITCH och COND erbjuder en speciell form av villkorat programflöde. Till skillnad från IF och CASE representerar de olika värden baserade på ett uttryck snarare än att utföra uttalanden. Det är därför de räknar som funktionella.

COND

När flera villkor måste beaktas kan COND göra jobbet. Syntaxen är ganska enkel:

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

exempel

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

VÄXLA

SWITCH är ett snyggt verktyg för att kartlägga värden, eftersom den endast kontrollerar för jämlikhet och därmed är kortare än COND i vissa fall. Om en oväntad inmatning gavs är det också möjligt att kasta ett undantag. Syntaxen är lite annorlunda:

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

exempel

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow