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

  • 本文关键字:语法 COND 字符串 abap
  • 更新时间 :
  • 英文 :


我在字符串模板中使用时发现了新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后放置空间,那么没关系。 将BBBB放在THEN之后l_v_line4可以解决问题。

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

来自 ABAP 文档

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

如果操作数类型不完全可识别,则具有 必须在第一个之后指定静态可识别的类型 然后。然后使用此类型。

相关内容

  • 没有找到相关文章

最新更新