CONDSWITCH

SWITCHCOND 提供了一種特殊形式的條件程式流程。與 IFCASE 不同,它們基於表示式而不是執行語句來表示不同的值。這就是他們算作功能的原因。

條件

每當必須考慮多個條件時,COND 就可以完成這項工作。語法很簡單:

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

例子

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

開關

SWITCH 是一個用於對映值的簡潔工具,因為它只檢查相等性,因此在某些情況下比 COND 短。如果給出了意外的輸入,也可以丟擲異常。語法有點不同:

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

例子

DATA(lw_language) = SWITCH string(
    sy-langu
    WHEN 'E' THEN 'English'
    WHEN 'D' THEN 'German'
    " ...
    ELSE THROW cx_sy_conversion_unknown_langu( )
).