zoukankan      html  css  js  c++  java
  • 两个内表不同名称字段赋值的方法

    *& 两个内表不同名称字段赋值的方法
    *& 方法1:使用Loop循环手动赋值
    *& 方法2:维护一个映射表,返回一个执行器,调用其execute方法
    *& 方法3:CORRESPONDING #( )

    TYPES :BEGIN OF developer,              "内表1
             name           TYPE string,
             focus_language TYPE string,
             salary         TYPE i,
           END OF developer,
    
           BEGIN OF presale,               "内表2
             name              TYPE string,
             focus_area        TYPE string,
             salary_plus_bouns TYPE i,
           END OF presale.
    
    DATA: developer_list TYPE TABLE OF developer WITH EMPTY KEY,
          presale_list1  TYPE TABLE OF presale WITH EMPTY KEY,
          presale_list2  TYPE TABLE OF presale WITH EMPTY KEY,
          presale_list3  TYPE TABLE OF presale WITH EMPTY KEY.
    
    developer_list = VALUE #( ( name = 'AAA' focus_language = 'ZH' salary = 1 )
                              ( name = 'BBB' focus_language = 'EN' salary = 2 ) ).
    
    "方法一:使用Loop循环手动赋值
    LOOP AT developer_list ASSIGNING FIELD-SYMBOL(<temp1>).
      APPEND INITIAL LINE TO presale_list1 ASSIGNING FIELD-SYMBOL(<temp2>).
      <temp2>-name = <temp1>-name.
      <temp2>-focus_area = <temp1>-focus_language.
      <temp2>-salary_plus_bouns = <temp1>-salary.
    ENDLOOP.
    
    "方法2:维护一个映射表,返回一个执行器,调用其execute方法
    *DATA(it_mapping) = VALUE cl_abap_corresponding=>mapping_table( ( level = 0 kind = 1 srcname = 'name' dstname = 'name' ) ).
    DATA(lo_mapping_executor) = cl_abap_corresponding=>create(
      source      = developer_list
      destination = presale_list2
      mapping     = VALUE cl_abap_corresponding=>mapping_table(
        ( level = 0 kind = 1 srcname = 'name' dstname = 'name' )
        ( level = 0 kind = 1 srcname = 'focus_language' dstname = 'focus_area' )
        ( level = 0 kind = 1 srcname = 'salary' dstname = 'salary_plus_bouns' )
        )
      ).
    lo_mapping_executor->execute( EXPORTING source = developer_list
                                  CHANGING  destination = presale_list2 ).
    
    "方法3:CORRESPONDING #( )
    presale_list3 = CORRESPONDING #( developer_list MAPPING name               = name
                                                            focus_area         = focus_language
                                                            salary_plus_bouns  = salary         ).

    推荐方法三,动态的话就用方法二。

  • 相关阅读:
    在 Students 的 Index 页面增加列标题链接(排序),分页,过滤和分组功能
    Contoso 大学
    如何搭建MVC + EF 框架
    EF与手写Model的区别以及联系
    報錯:One or more validation errors were detected during model generation:System.Data.Edm.EdmEntityType: : EntityType 'Movie' has no key
    Oracle四舍五入,向上取整,向下取整
    datagrid中设置编辑,删除列是否可以访问
    datagrid中设置编辑,删除列是否可以访问
    C#实现打印
    C#中rpt的数据类型和Oracle中数据类型的匹配
  • 原文地址:https://www.cnblogs.com/seven1314pp/p/15419163.html
Copyright © 2011-2022 走看看