CL_ABAP_CORRESPONDING class provides simple methods for field mapping between internal tables.
CODE
DATA: BEGIN OF line1,
col1 TYPE STRING,
col2 TYPE STRING,
END OF line1,
BEGIN OF line2,
col2 TYPE STRING,
col3 TYPE STRING,
END OF line2.
DATA: itab1 LIKE TABLE OF line1 WITH EMPTY KEY,
itab2 LIKE TABLE OF line2 WITH EMPTY KEY.
itab1 = VALUE #(
( col1 = ‘A1’ col2 = ‘A2’ )
( col1 = ‘B1’ col2 = ‘B2’ ) ).
itab2 = VALUE #(
( col2 = ‘X1’ col3 = ‘X2’ )
( col2 = ‘Y1’ col3 = ‘Y2’ ) ).
WRITE:/ ‘ITAB1 CONTENT’ COLOR 3.
WRITE:/1 ‘COL1’, 10 ‘COL2’.
LOOP AT itab1 INTO line1.
WRITE:/1 line1–col1, 10 line1–col2.
ENDLOOP.
WRITE:/ ‘ITAB2 CONTENT’ COLOR 3.
WRITE:/1 ‘COL2’, 10 ‘COL3’.
LOOP AT itab2 INTO line2.
WRITE:/1 line2–col2,10 line2–col3.
ENDLOOP.
” Define Mapping table
DATA(mapper) = cl_abap_corresponding=>create(
source = itab1
destination = itab2
mapping = VALUE cl_abap_corresponding=>mapping_table( ) ).
mapper->execute( EXPORTING source = itab1
CHANGING destination = itab2 ).
CLEAR: line2.
WRITE:/ ‘ITAB2 CONTENT AFTER’ COLOR 3.
WRITE:/1 ‘COL2’, 10 ‘COL3’.
LOOP AT itab2 INTO line2.
WRITE:/1 line2–col2, 10 line2–col3.
ENDLOOP.
OUTPUT
DATA: BEGIN OF line1,
col1 TYPE STRING,
col2 TYPE STRING,
END OF line1,
BEGIN OF line2,
col2 TYPE STRING,
col3 TYPE STRING,
END OF line2.
DATA: itab1 LIKE TABLE OF line1 WITH EMPTY KEY,
itab2 LIKE TABLE OF line2 WITH EMPTY KEY.
itab1 = VALUE #(
( col1 = ‘A1’ col2 = ‘A2’ )
( col1 = ‘B1’ col2 = ‘B2’ ) ).
itab2 = VALUE #(
( col2 = ‘X1’ col3 = ‘X2’ )
( col2 = ‘Y1’ col3 = ‘Y2’ ) ).
WRITE:/ ‘ITAB1 CONTENT’ COLOR 3.
WRITE:/1 ‘COL1’, 10 ‘COL2’.
LOOP AT itab1 INTO line1.
WRITE:/1 line1–col1, 10 line1–col2.
ENDLOOP.
WRITE:/ ‘ITAB2 CONTENT’ COLOR 3.
WRITE:/1 ‘COL2’, 10 ‘COL3’.
LOOP AT itab2 INTO line2.
WRITE:/1 line2–col2,10 line2–col3.
ENDLOOP.
” Define mapping table
DATA(mapper) = cl_abap_corresponding=>create(
source = itab1
destination = itab2
mapping = VALUE cl_abap_corresponding=>mapping_table(
( level = 0 kind = 1 srcname = ‘col1’ dstname = ‘col2’ )
( level = 0 kind = 1 srcname = ‘col2’ dstname = ‘col3’ ) ) ).
mapper->execute( EXPORTING source = itab1
CHANGING destination = itab2 ).
CLEAR: line2.
WRITE:/ ‘ITAB2 CONTENT AFTER’ COLOR 3.
WRITE:/1 ‘COL2’, 10 ‘COL3’.
LOOP AT itab2 INTO line2.
WRITE:/1 line2–col2, 10 line2–col3.
ENDLOOP.
OUTPUT