ABAP 语法中是否有可用的三元运算符或条件运算符?我还没有找到一个,所以我假设答案是否定的,但是有没有一种替代方法可以用来清除我经常使用的常见“哑巴” IF 语句?

例如,考虑使用可选消息参数记录消息的方法。要决定使用导入的参数还是默认值,我必须像这样检查值:

IF iv_class IS INITIAL.
    lv_message_class = 'DEFAULT'.
ELSE.
    lv_message_class = iv_class.
ENDIF.
IF iv_number IS INITIAL.
    lv_message_number = '000'.
ELSE.
    lv_message_number = iv_number.
ENDIF.
IF iv_type IS INITIAL.
    lv_message_type = 'E'.
ELSE.
    lv_message_type = iv_type.
ENDIF.

三元运算符会将这些五行语句中的每一个都减少为一行,如下面的代码块所示。当操作符在线使用时,它甚至可以使临时变量的使用变得不必要。
lv_message_class  = iv_class  IS INITIAL ? 'DEFAULT' : iv_class.
lv_message_number = iv_number IS INITIAL ? '000'     : iv_number .
lv_message_type   = iv_type   IS INITIAL ? 'E'       : iv_type   .

有没有办法在 ABAP 中近似这种编程风格,或者我是否陷入困惑?

最佳答案

7.40 版 带来了一大堆 ABAP 改进,我发现这些改进非常有趣。三元样式声明(至少是类似的东西)就是其中之一

句法:

COND dtype|#( WHEN log_exp1 THEN result1
            [ WHEN log_exp2 THEN result2 ]
            ...
            [ ELSE resultn ] ) ...

名为“bool”的变量的示例数据声明和一行中的条件值赋值。旧 skool ABAP 这将需要 10 行。
DATA(bool) = COND #( WHEN i * i > number THEN abap_true ELSE abap_false ).

更多信息:http://scn.sap.com/community/abap/blog/2013/07/22/abap-news-for-release-740

关于abap - 三元运算符(替代),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24330301/

10-16 13:57