VALUE从文字中构造表行时出现语法错误

Jag*_*ger 5 sap abap

这是给你的。

这个怎么不编译

REPORT ZZY.

TYPES: my_int TYPE x LENGTH 4,
  my_int_table TYPE STANDARD TABLE OF my_int WITH EMPTY KEY.

DATA(g_tab_my_int) = VALUE my_int_table( ( 2 ) ).
Run Code Online (Sandbox Code Playgroud)

而这个呢?

REPORT ZZY.

TYPES: my_int TYPE x LENGTH 4,
  my_int_table TYPE STANDARD TABLE OF my_int WITH EMPTY KEY.

DATA(g_tab_my_int) = VALUE my_int_table( ( 2 * 1 ) ).
Run Code Online (Sandbox Code Playgroud)

San*_*ssi 7

内部的ABAP文档VALUE dtype|#( line | {LINES OF itab ...} )说:

如果为指定了数据对象line,则该对象必须与行类型兼容

如果为指定了表达式(内置函数,函数方法,计算表达式,构造函数表达式或表表达式)line,则表达式的结果必须可转换为行类型。

在您的示例中:

  • “ 2”是数字文字,因此是数据对象,仅当与类型兼容时才有效,即它是完全相同的类型。
  • “ 1 * 2”是一个表达式,它是有效的,因为存在从类型I到类型X的转换规则。

您可以输入一个较短的表达式,例如“ + 2”: VALUE my_int_table( ( + 2 ) ).