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