abap - 使用 CORRESPONDING without LOOP 对平面结构进行映射

标签 abap

我使用的是 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 ).

最佳答案

那么,下面的解决方案呢?

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 - 使用 CORRESPONDING without LOOP 对平面结构进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48525350/

相关文章:

abap - 将选择屏幕上的参数名称更改为真实文本

dynamic - 从(lv_表名)中选择错误: the output table is too small

synchronization - 共享内存对象同步

abap - 假脱机请求未链接到后台作业

parameters - 使用 SELECT-OPTIONS 作为类方法的导出参数?

abap - 是否有功能可以提供数据深层结构的格式化显示?

abap - 将数字转换为单词的功能?

abap - 如何学习“ABAP之道”?

abap - 使 table 可定制/可移动?

pdf - 语言为 PL(波兰语)时的大 PDF 文件