ABAP 两个内表字段名不同的匹配赋值

一、基本介绍
一般两个内表的赋值
1.如果是结构完全一样使用: A = B[] .
2.若是结构有些一样有些不同那就是使用 MOVE-CORRESPONDING,但是它只能把相同的字段的名的值赋值进去,不同字段名的就无法赋值过去了。
3.loop 循环进行赋值,赋值字段名相同或者不同的都可以办得到,但是资源耗费大。
4.使用方法cl_abap_corresponding=>create ,可以不使用循环,把字段名不同的字段匹配赋值。
5.使用MAPPING的方法—代码特别简单易懂。

二、实例


TYPES:BEGIN OF ty_a,
        a TYPE char20, "姓名
        b TYPE i,      "年龄
        c TYPE string, "籍贯
      END OF ty_a.

TYPES:BEGIN OF ty_e,
        e TYPE char2,
        f TYPE i,
        c TYPE string,
      END OF ty_e.

DATA:gt_a TYPE TABLE OF  ty_a.
DATA:gt_e TYPE TABLE OF  ty_e.

gt_a = VALUE #(
     (  a = '张三'  b = 25  c =  '湖南人' )
     (  a = '李四啊'  b = 34  c = '广东人'  ) ).

DATA(lo_mapping_excutor) = cl_abap_corresponding=>create(
  source     =  gt_a
  destination = gt_e
  mapping     = VALUE cl_abap_corresponding=>mapping_table(
 ( level = 0 kind = 1 srcname = 'A'   dstname = 'E ' )
 ( level = 0 kind = 1 srcname = 'B'   dstname = 'F ' )  )   ).

lo_mapping_excutor->execute( EXPORTING source      = gt_a
                             CHANGING  destination = gt_e  ).

cl_demo_output=>display( gt_e ).

运行结果:
在这里插入图片描述
三、注意点
1.字段强制转换,C类型不能强制转换为 i类型,i类型可以转成C类型。
2.字段长度,定义的短了,会强制截断。
3.字段名相同的,会自动匹配赋值。

四、MAPPING实例代码

TYPES:BEGIN OF ty_a,
        a TYPE char20, "姓名
        b TYPE i,      "年龄
        c TYPE string, "籍贯
      END OF ty_a.

TYPES:BEGIN OF ty_e,
        e TYPE char2,
        f TYPE i,
        c TYPE string,
      END OF ty_e.

DATA:gt_a TYPE TABLE OF  ty_a.
DATA:gt_e TYPE TABLE OF  ty_e.

gt_a = VALUE #(
     (  a = '张三'  b = 25  c =  '湖南人' )
     (  a = '李四啊'  b = 34  c = '广东人'  ) ).

gt_e =  CORRESPONDING #(
        gt_a MAPPING e   = a
                     f    = b ) .

cl_demo_output=>display( gt_e ).

运行结果:与上面的一致。
在这里插入图片描述

五、参考链接
1.汪子熙微信分享
2.感谢康师傅的提醒,让我了解F1里面的MAPPING方法。

好了,今天的分享到这里。分享是我快乐,我是寒武青锋。
长沙真冷。
请添加图片描述

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值