微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在嵌套内部表中添加新行?

如何解决如何在嵌套内部表中添加新行?

DATA: BEGIN OF line,CUOBJ TYPE CUOBJ,tab_atinn   TYPE STANDARD TABLE OF ATINN WITH DEFAULT KEY,END OF line.

  DATA:
    CUBOBJ_TABLE LIKE STANDARD TABLE OF line WITH DEFAULT KEY.

...

DATA(table) = CUBOBJ_TABLE[ CUOBJ = value-instance ]-tab_atinn.
      IF NOT line_exists( table[ currentatinn ] ).
        INSERT currentatinn INTO table INDEX 1.
      ENDIF.

我正在尝试向CUOBJ_TABLE [..]-tab_atinn中添加新行。 执行完代码后,表变量将有一个新行,但是CUBOBJ_TABLE [CUOBJ = value-instance] -tab_atinn表将没有该行。

如何使用引用或其他方法将其直接添加到CUBOBJ_TABLE [CUOBJ = value-instance] -tab_atinn?

解决方法

确切地说,问题是作业:

DATA(table) = CUBOBJ_TABLE[ CUOBJ = value-instance ]-tab_atinn.

这将创建一个新表,其值与tab_atinn字段的值相同。然后,将条目添加到此新表中,而不会影响CUOBJ_TABLE中的深表。 您需要的是一个指向您要更改的表的引用,因此它实际上是在更新表而不是表的副本,类似于下面的代码。

TYPES: atinn_tab TYPE STANDARD TABLE OF atinn WITH DEFAULT KEY.

DATA: BEGIN OF line,cuobj     TYPE cuobj,tab_atinn TYPE atinn_tab,END OF line.

DATA:
  cubobj_table   LIKE STANDARD TABLE OF line WITH DEFAULT KEY,value_instance TYPE                   cuobj,current_atinn  TYPE                   atinn.

...

data(table_ref) = REF atinn_tab( cubobj_table[ cuobj = value_instance ]-tab_atinn ).
IF NOT line_exists( table_ref->*[ current_atinn ] ).
  INSERT current_atinn INTO table_ref->* INDEX 1.
ENDIF.
,

只需检查您是否需要辅助变量

IF NOT line_exists( cubobj_table[ cuobj = 'VAL' ]-tab_atinn[ '0000000020' ] ).

ENDIF.

但是要添加行,您需要

READ TABLE cubobj_table WITH KEY cuobj = 'VAL' ASSIGNING FIELD-SYMBOL(<fs_cubobj>).
INSERT atinn INTO <fs_cubobj>-tab_atinn INDEX 1.

因为INSERT不允许将表表达式放在itab_position中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。