Abap 如何将新行添加到嵌套的内部表中?

Abap 如何将新行添加到嵌套的内部表中?,abap,internal-tables,Abap,Internal Tables,我正试图在CUOBJ_表[…]tab_atinn中添加一个新行。 执行代码后,table变量将有一个新行,但CUBOBJ_table[CUOBJ=value instance]-tab_atinn table不会有它 如何使用引用或其他方法将其直接添加到CUBOBJ_表[CUOBJ=value instance]-tab_\n中?使用引用,问题在于赋值: DATA: BEGIN OF line, CUOBJ TYPE CUOBJ, tab_atinn TYPE

我正试图在CUOBJ_表[…]tab_atinn中添加一个新行。 执行代码后,table变量将有一个新行,但CUBOBJ_table[CUOBJ=value instance]-tab_atinn table不会有它


如何使用引用或其他方法将其直接添加到CUBOBJ_表[CUOBJ=value instance]-tab_\n中?

使用引用,问题在于赋值:

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_表中的deep表。 您需要的是一个指向要更改的表的引用,这样它实际上会更新表,而不是表的副本,类似下面的代码应该可以工作

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

只是为了检查是否存在,不需要辅助变量

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,其中键cuobj='VAL'分配字段-SYMBOL()。
在-tab\u atinn索引1中插入atinn。

因为INSERT不允许将表表达式放入.

中,所以行_exists应该使用字段值执行,因为[]解释为索引值。所以它应该是table\u ref->*[table\u line=current\u atinn]。但由于可读性,我更喜欢字段符号。
READ TABLE cubobj_table WITH KEY cuobj = 'VAL' ASSIGNING FIELD-SYMBOL(<fs_cubobj>).
INSERT atinn INTO <fs_cubobj>-tab_atinn INDEX 1.