Abap 使用字符串模板和新COND语法的奇怪行为

Abap 使用字符串模板和新COND语法的奇怪行为,abap,Abap,在字符串模板中使用新COND语法时,我发现了一种奇怪的行为。这是关于字符串长度的默认设置。看起来,即使不满足条件,字符串的长度也将始终默认为之后的长度 检查下面的代码 REPORT zzz. CLASS lcl_main DEFINITION FINAL CREATE PRIVATE. PUBLIC SECTION. CLASS-METHODS: main. ENDCLASS. CLASS lcl_main IMPLEMENTATION. METHOD main.

在字符串模板中使用新COND语法时,我发现了一种奇怪的行为。这是关于字符串长度的默认设置。看起来,即使不满足条件,字符串的长度也将始终默认为之后的长度

检查下面的代码

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_line 2被截断,即使条件的计算结果为false。如果我在l_v_第3行的AAA后面加上空格,就可以了。将BBBB放在l_v_line4之后解决了问题

我的问题是:SAP文档中是否记录了这种行为?我找不到任何可能让我找到它的线索

作为操作数类型符号的字符

如果操作数类型不能完全识别,则使用 静态可识别类型必须在第一个 然后然后使用这种类型


谢谢有趣的是,这和预期的一样有效:{COND当l_bool是首字母时,那么'AAA'ELSE'bbbbbb`}。然后,该类型似乎默认为string,而不是char3。你看到|{COND,当l|bool是首字母,然后是'AAA'或'BBBB'}|的区别了吗从我的角度来看:当你使用这些引号-`AAA`-类型是可识别的,它是一个字符串,字符串没有固定的长度。当您使用“AAA”时,它可以是C3或字符串,出于某种原因,SAP决定它是C3