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( )
).