Abap 利用对应无环映射平面结构
我在ABAP7.4SP13上 我想在下面的代码中使用选项2,但是如何进行这种深度映射呢?这里的目标是创建一个干净、简单、易于阅读的映射,避免循环Abap 利用对应无环映射平面结构,abap,Abap,我在ABAP7.4SP13上 我想在下面的代码中使用选项2,但是如何进行这种深度映射呢?这里的目标是创建一个干净、简单、易于阅读的映射,避免循环 TYPES: BEGIN OF ty_s_audit, CreatedBy TYPE ernam, LastChangedBy TYPE aenam, END OF ty_s_audit, BEGIN OF ty_s_equipment
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 ).
那么,下面的解决方案呢
lt_equipments = VALUE #( FOR i IN lt_equi
(
equipmentid = i-equnr
audit-createdby = i-ernam
audit-lastchangedby = i-aenam
)
).
或者,如果您真的想在某个地方使用相应的映射,例如
lt_equipments = VALUE #( FOR i IN lt_equi
(
equipmentid = i-equnr
audit = CORRESPONDING #( i MAPPING createdby = ernam lastchangedby = aenam )
)
).
我试着用台线。它不起作用。对应的lt_equi mapping equipmentid=equinr audit=table_line mapping createdby=ernam lastchangedby=aenam。谢谢!第一个非常适合这个用例!