【SAP Abap】SAP ABAP 三元运算的实现与使用注意事项

ABAP 0 次阅读
【SAP Abap】SAP ABAP 三元运算的实现与使用注意事项

ABAP的三元运算

三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”。 在SAP ABAP中可以使用COND实现类似甚至更多元运算功能。

COND - Conditional Operator 
 
 Syntax 

... COND type( [let_exp] 
               WHEN log_exp1 THEN [let_exp] result1 
             [ WHEN log_exp2 THEN [let_exp] result2 ] 
             ... 
             [ ELSE [let_exp] resultn ] ) ... 

使用注意事项

多元结果最好是同一类型,如果不是,需要让长度最长的放置在第一值位,否则按第一值位的长度对后续结果截断。

演示

TABLES:CE11000.
SELECT-OPTIONS: S_BUKRS FOR CE11000-BUKRS OBLIGATORY,
    S_FADAT FOR  CE11000-FADAT.

DATA(LV_STR_WRONG) = COND #( WHEN S_FADAT-LOW IS INITIAL THEN '' ELSE S_FADAT-LOW )   " 开始日期
        && '_' && COND #( WHEN S_FADAT-HIGH IS INITIAL THEN '' ELSE S_FADAT-HIGH )    " 结束日期
        && COND #( WHEN SY-BATCH IS INITIAL THEN ' Front' ELSE '' ).                     " 前台标识
MESSAGE LV_STR_WRONG TYPE 'I'.

DATA(LV_STR_RIGHT) = COND #( WHEN S_FADAT-LOW IS NOT INITIAL THEN S_FADAT-LOW ELSE '' )   " 开始日期
        && '_' && COND #( WHEN S_FADAT-HIGH IS NOT INITIAL THEN S_FADAT-HIGH ELSE '' )    " 结束日期
        && COND #( WHEN SY-BATCH IS INITIAL THEN ' Front' ELSE '' ).                     " 前台标识
MESSAGE LV_STR_RIGHT TYPE 'I'.

执行,输入参数如下: 在这里插入图片描述 非预期结果: 在这里插入图片描述 预期结果: 在这里插入图片描述