使用 CORRESPONDING 无 LOOP 的平面结构映射
MAPPING of flat structure using CORRESPONDING without LOOP
我正在使用 ABAP 7.4 SP13。
我想在下面的代码中使用 "Option 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 ).
那么,下面的解决方案呢?
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 )
)
).
我正在使用 ABAP 7.4 SP13。
我想在下面的代码中使用 "Option 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 ).
那么,下面的解决方案呢?
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 )
)
).