Oma*_*oup 3 abap internal-tables
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.
Run Code Online (Sandbox Code Playgroud)
我正在尝试将新行添加到 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.
Run Code Online (Sandbox Code Playgroud)
这将创建一个与 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.
Run Code Online (Sandbox Code Playgroud)