访问定义为运行时 ABAP 的字段符号

accessing field symbol that is defined runtime ABAP


我目前正在处理一份动态报告,我必须为其编写一些动态查询,但我被困在了一个地方。拜托,如果有人能建议我出路,那就太好了。贝娄我试图解释我在做什么以及我被困在哪里。谢谢。
定义 2 字段符号

<o_fs> TYPE table,
<owa_fs> type any.

为 o_fs

动态创建内部 table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_cat
IMPORTING
ep_table = d_ref2.
ASSIGN d_ref2->* TO <o_fs>.

然后我在o_fs
中填写数据 之后我想向 o_fs 的字段之一添加一个值 在

处循环
<O_FS> ASSIGNING <OWA_FS>.
 *<owa_fs>-columnname = 'value to be added'.
 IF SY-TABIX = INDEX.
 MODIFY (p_vtab) From <OWA_FS>.
 COMMIT WORK.
 ENDIF.

标记为 * 的行给我一个编译时错误,即 "The data object "" 没有结构,因此没有名为 'COLUMNNAME' 的组件。称为 'COLUMNNAME'"

语法检查时,系统不知道字段符号是否结构化。您必须将结构组件分配给另一个字段符号。请参阅 ASSIGN COMPONENT ... 命令。

将命令放入您的示例中:

ASSIGN COMPONENT 'COLUMNMAME' OF STRUCTURE <owa_fs> TO <another_fs>.
IF sy-subrc = 0.
  <another_fs> = 'value to be added'.
ENDIF.

<another_fs>可以是ANY类型。