使用字符串模板和新的 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_line
和 l_v_line2
会被截断,即使条件计算结果为 false。如果我在 l_v_line3
中的 AAA
之后放置 space 就可以了。在 THEN
之后为 l_v_line4
加上 BBBB
解决了问题。
我的问题是:这种行为是否记录在 SAP 文档中的任何地方?我找不到任何可以引导我找到它的线索。
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.
我发现在字符串模板中使用新的 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
之后放置 space 就可以了。在 THEN
之后为 l_v_line4
加上 BBBB
解决了问题。
我的问题是:这种行为是否记录在 SAP 文档中的任何地方?我找不到任何可以引导我找到它的线索。
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.