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