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

Strange behaviour using string templates and new COND syntax

我发现在字符串模板中使用新的 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_linel_v_line2 会被截断,即使条件计算结果为 false。如果我在 l_v_line3 中的 AAA 之后放置 space 就可以了。在 THEN 之后为 l_v_line4 加上 BBBB 解决了问题。

我的问题是:这种行为是否记录在 SAP 文档中的任何地方?我找不到任何可以引导我找到它的线索。

from ABAP documentation

The # character as a symbol for the operand type.

...

If the operand type is not fully identifiable, an operand with a statically identifiable type must be specified after the first THEN. This type is then used.