当前位置: 首页 > article >正文

ABAP 两个内表不同名称字段赋值的方法

*& 两个内表不同名称字段赋值的方法
*& 方法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         ).

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


http://www.kler.cn/a/467164.html

相关文章:

  • Day30:break语句
  • 《Vue3实战教程》42:Vue3TypeScript 与组合式 API
  • Python爬虫 - 豆瓣图书数据爬取、处理与存储
  • creating-custom-commands-in-flask
  • ubuntu 使用s3fs配置自动挂载对象存储
  • 谷歌2025年AI战略与产品线布局
  • openwrt host方式编译ffmpeg尝试及问题分析
  • 青少年编程与数学 02-006 前端开发框架VUE 02课题、创建工程
  • LeetCode -Hot100 - 53. 最大子数组和
  • 什么是护网行动?
  • spring cloud微服务分布式架构
  • vllm源码(一)
  • jQuery Mobile 可折叠块
  • 51单片机——LED模块
  • NS4863 500mA 锂电池充放电管理IC
  • LeetCode算法题——有序数组的平方
  • UGUI 优化DrawCall操作记录(基于Unity2021.3.18)
  • 049_小驰私房菜_MTK Camera debug,通过adb 命令读写Camera sensor寄存器地址的值
  • iOS 中performBatchUpdates 的机制
  • Day2 -- QingLuoPay基础功能搭建