首页 > 解决方案 > 表行表达式的动态 ASSIGN

问题描述

在我的 ABAP 报告中,我有一些结构:

data: 
  begin of struct1,
    field1 type char10,
  end of struct1.

我可以直接访问它的字段 field1:

data(val) = struct1-field1

或动态分配:

assign ('struct1-field1') to field-symbol(<val>).

我还有一些内部表:

data: table1 like standard table of struct1 with default key.
append initial line to table1.

我可以直接访问第一行的列 field1:

data(val) = table1[ 1 ]-field1.

但我无法通过动态分配访问 field1:

assign ('table1[ 1 ]-field1') to field-symbol(<val>).

赋值后 sy-subrc 等于“4”。

为什么?

标签: dynamicabap

解决方案


Sandra 是绝对正确的,如果帮助中没有指定表表达式,那么它们是不允许的。

您可以将 ASSIGN COMPONENT 语句用于您的动态性:

FIELD-SYMBOLS: <tab> TYPE INDEX TABLE.

ASSIGN ('table1') TO <tab>.
ASSIGN COMPONENT 'field1' OF STRUCTURE <tab>[ 1 ] TO FIELD-SYMBOL(<val>).

但是,由于此版本行规范的性质,这种动态仅适用于索引表(标准 + 排序) 。如果您尝试将散列表传递给字段符号,它将转储。


推荐阅读