我在ABAP 7.4 SP13上。
我想在下面的代码中使用“选项2”,但我该如何进行深度映射?这里的目标是拥有一个干净,简单,易于阅读的映射,避免循环。
TYPES:
BEGIN OF ty_s_audit,
CreatedBy TYPE ernam,
LastChangedBy TYPE aenam,
END OF ty_s_audit,
BEGIN OF ty_s_equipment,
EquipmentId TYPE equi-equnr,
Audit TYPE ty_s_audit BOXED,
END OF ty_s_equipment,
ty_t_equipment TYPE STANDARD TABLE OF ty_s_equipment WITH KEY PRIMARY_KEY COMPONENTS EquipmentId.
DATA: lt_equipments TYPE ty_t_equipment.
SELECT equnr, ernam, aenam FROM equi INTO TABLE @DATA(lt_equi).
"Option 1:
LOOP AT lt_equi ASSIGNING FIELD-SYMBOL(<ls_equi>).
APPEND INITIAL LINE TO lt_equipments ASSIGNING FIELD-SYMBOL(<ls_equipment>).
<ls_equipment> = CORRESPONDING #( <ls_equi> MAPPING EquipmentId = EQUNR ).
<ls_equipment>-Audit = CORRESPONDING #( <ls_equi> MAPPING CreatedBy = ERNAM
LastChangedBy = AENAM ).
ENDLOOP.
"Option 2:
lt_equipments = CORRESPONDING #( lt_equi MAPPING EquipmentId = EQUNR
“Audit-CreatedBy = ERNAM
“Audit-LastChangedBy = AENAM ).
答案 0 :(得分:5)
那么,以下解决方案呢?
lt_equipments = VALUE #( FOR i IN lt_equi
(
equipmentid = i-equnr
audit-createdby = i-ernam
audit-lastchangedby = i-aenam
)
).
或者,如果您真的想在某处使用CORRESPONDING MAPPING
,那么就是这样。
lt_equipments = VALUE #( FOR i IN lt_equi
(
equipmentid = i-equnr
audit = CORRESPONDING #( i MAPPING createdby = ernam lastchangedby = aenam )
)
).