内部表的移动对应?

B0B*_*BBY 2 abap internal-tables

我想要基于字段名称从到 的MOVE字段。我尝试过以下操作:itab1itab2

CLEAR itab2.
MOVE-CORRESPONDING itab1 TO itab2.
Run Code Online (Sandbox Code Playgroud)

这是可行的,但前提是FIELDS名称相同。

现在我想做类似的事情:

CLEAR itab2.
MOVE-CORRESPONDING itab1-field1 TO itab2-field2.
MOVE-CORRESPONDING itab1-field3 TO itab2-field4.
Run Code Online (Sandbox Code Playgroud)

等等..但是每次我尝试这样做时都会出现以下错误"itab1-field1" is not a structure or an internal table.

我也尝试过这样写,MOVE-CORRESPONDING <itab1>-field1但这也行不通。

我怎样才能实现我想要的?感谢您尝试帮助我..

Józ*_*zai 6

从 ABAP 7.4 开始,可以使用 CORRESPONDING ... MAPPING 语句来完成:

itab_target = CORRESPONDING #( itab_source
                               MAPPING field2 = field1
                                       field4 = field3 ).
Run Code Online (Sandbox Code Playgroud)

目标将基于源,其中字段具有相同的名称,否则将使用映射(目标字段2将是源字段1等)这也适用于结构和内部表。

ABAP帮助对应

  • 请注意,如果两个表中都存在具有这些名称的字段(除了 MAPPING 指令之外),这仍会将“field1”复制到“field1”,将“field3”复制到“field3”。如果您想避免这种情况,则需要为任何相同的内容添加 [EXCEPT](https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-us/abencorresponding_constr_mapping.htm#!ABAP_ADDITION_2@2@) 添加- 您不想覆盖的命名字段。 (2认同)