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.

运行结果:如下

ABAP新语法: MOVE-CORRESPONDING新语法_字段


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.