CONDSWITCH
SWITCH
和 COND
提供了一種特殊形式的條件程式流程。與 IF
和 CASE
不同,它們基於表示式而不是執行語句來表示不同的值。這就是他們算作功能的原因。
條件
每當必須考慮多個條件時,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( )
).