我在字符串模板中使用时发现了新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
前两个变量 l_v_line
和 l_v_line2
将被截断,即使条件的计算结果为 false。如果我在l_v_line3
AAA
后放置空间,那么没关系。 将BBBB
放在THEN
之后l_v_line4
可以解决问题。
我的问题是:这种行为是否记录在SAP文档中的任何地方?我找不到任何线索可以引导我找到它。
来自 ABAP 文档
# 字符作为操作数类型的符号。
。
如果操作数类型不完全可识别,则具有 必须在第一个之后指定静态可识别的类型 然后。然后使用此类型。