簡體   English   中英

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

[英]How to add a new row into a nested internal table?

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 中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM