ABAP新语法: MOVE-CORRESPONDING新语法

1.工作区

*&---------------------------------------------------------------------*
*CORRESPONGDING关键字
*关键字MAPPING指定不同字段赋值
*关键字EXCEPT排除某个字段不赋值
*&---------------------------------------------------------------------*
”1.工作区相同字段赋值
DATA:BEGIN OF ls_data1,
             fd1 TYPE char10,
             fd2 TYPE char10,
             fd3 TYPE char10,
         END OF ls_data1,

         BEGIN OF ls_data2,
             fd1 TYPE char10,
             fd2 TYPE char10,
             fd4 TYPE char10,
         END OF ls_data2.

ls_data1 = VALUE #( fd1 = |First|
                    fd2 = |Second|
                    fd3 = |Third| ).

"相同字段赋值
ls_data2 = CORRESPONDING #( ls_data1 ).
WRITE:/ |FD1:|,ls_data2-fd1, |FD2:|,ls_data2-fd2,
             |FD4:|,ls_data2-fd4.

"相同字段赋值基础上,指定把ls_data1-fd3赋值给ls_data2-fd4
ls_data2 = CORRESPONDING #( ls_data1 MAPPING fd4 = fd3 ).
WRITE:/ |FD1:|,ls_data2-fd1, |FD2:|,ls_data2-fd2,
             |FD4:|,ls_data2-fd4.

"相同字段赋值的基础上,排除fd2不赋值(注:EXCEPT时是将EXCEPT的字段置为空而不是不赋值)
ls_data2 = CORRESPONDING #( ls_data1 EXCEPT fd2 ).
WRITE:/ |FD1:|,ls_data2-fd1, |FD2:|,ls_data2-fd2,
             |FD4:|,ls_data2-fd4.

"相同字段赋值基础上,指定把ls_data1-fd3赋值给ls_data2-fd4,排除fd2不赋值
ls_data2 = CORRESPONDING #( ls_data1 MAPPING fd4 = fd3 EXCEPT fd2).
WRITE:/ |FD1:|,ls_data2-fd1, |FD2:|,ls_data2-fd2,
             |FD4:|,ls_data2-fd4.

运行结果:如下
在这里插入图片描述
2.内表

DATA:lt_001 TYPE TABLE OF ACDOCA.

SELECT
    bukrs,
    belnr,
    gjahr,
    buzei,
    FROM bseg
    UP TO 3 ROWS
    INTO TABLE @DATA(lt_besg).

lt_001 = CORRESPONDING #( lt_besg MAPPING rbukrs = bukrs
                                          docln  = buzei ).

3.RANGE表

RANGES:lr_rank FOR mara-matnr.
lr_rank[] = CORREPONGDING #(gt_data MAPPING low = matnr
                                    EXCEPT * ).
lr_rank-sign = 'I'.
lr_rank-option = 'EQ'.
MODIFY lr_rank TRANSPORTING sign option WHERE low IS NOT INITIAL.

SORT lr_rank BY low.
DELETE ADJACENT DUPLICATES FROM lr_rank COMPARING low.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值