Use of CL_ABAP_CORRESPONDING with internal table

Ne1kFo1465660380CL_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

5.png


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

6


 

Leave a Reply