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'.
执行,输入参数如下:

非预期结果:

预期结果:

本文介绍了SAP ABAP中的COND运算符及其使用注意事项,通过实例演示了如何使用COND来实现三元及多元运算,并强调了结果类型的一致性和长度匹配的重要性。

933

被折叠的 条评论
为什么被折叠?



