在字符串模板中使用时,我发现了新的COND
语法的奇怪行为。这是关于字符串长度默认。即使条件不满足,看起来字符串的长度也会默认为THEN
之后的长度。
查看以下代码!
REPORT zzz.
CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
main.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD main.
DATA(l_bool) = abap_true.
DATA(l_v_line) = |{ COND #( WHEN l_bool IS INITIAL THEN 'AAA' ELSE 'BBBB' ) }|.
DATA(l_v_line2) = |{ COND #( WHEN l_bool IS INITIAL THEN 'AAA' ELSE 'BBBB' ) WIDTH = 4 }|.
DATA(l_v_line3) = |{ COND #( WHEN l_bool IS INITIAL THEN 'AAA ' ELSE 'BBBB' ) }|.
DATA(l_v_line4) = |{ COND #( WHEN l_bool IS NOT INITIAL THEN 'BBBB' ELSE 'AAA' ) }|.
WRITE /: l_v_line, l_v_line2, l_v_line3, l_v_line4.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
lcl_main=>main( ).
输出
BBB
BBB·
BBBB
BBBB
即使条件的计算结果为false,前两个变量l_v_line
和l_v_line2
也会被截断。如果我在AAA
l_v_line3
之后添加空格,那么就可以了。将BBBB
放在THEN
之后l_v_line4
解决问题。
我的问题是:这种行为是否记录在SAP文档中的任何位置?我找不到任何可以引导我的线索。
答案 0 :(得分:4)
#字符作为操作数类型的符号。
...
如果操作数类型不完全可识别,则操作数带有 静态可识别类型必须在第一个之后指定 THEN 即可。然后使用这种类型。