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.