Use of CL_ABAP_CORRESPONDING with nested structure

KweiRC1465657816CL_ABAP_CORRESPONDING class provides simple methods for field mapping between nested structures.

 

 

CODE
DATA: BEGIN OF src,
                     col1 TYPE string VALUE ‘AA’,
                     col2 TYPE string VALUE ‘BB’,
                    BEGIN OF src_1,
                           col3 TYPE string VALUE ‘AA1’,
                           col4 TYPE string VALUE ‘BB1’,
                           BEGIN OF src_2,
                          col5 TYPE string VALUE ‘AA2’,
                          col6 TYPE string VALUE ‘BB2’,
                         END OF src_2,
                 END OF src_1,
            END OF src,
      BEGIN OF tgt,
                     fld1 TYPE string VALUE ‘XX’,
                     fld2 TYPE string VALUE ‘YY’,
                   BEGIN OF tgt_1,
                      fld3 TYPE string VALUE ‘XX1’,
                      fld4 TYPE string VALUE ‘YY1’,
                   BEGIN OF tgt_2,
                        fld5 TYPE string VALUE ‘XX2’,
                       fld6 TYPE string VALUE ‘YY2’,
                    END OF tgt_2,
               END OF tgt_1,
         END OF tgt.
WRITE:/ ‘Source’ COLOR 3.
WRITE:/1 src–col1, 6 src–col2,
               11 src–src_1–col3,16 src–src_1–col4,
              21 src–src_1–src_2–col5,26 src–src_1–src_2–col6.
WRITE:/ ‘Target’ COLOR 3.
WRITE:/1 tgt–fld1, 6 tgt–fld2,
               11 tgt–tgt_1–fld3, 16 tgt–tgt_1–fld4,
              21 tgt–tgt_1–tgt_2–fld5,26 tgt–tgt_1–tgt_2–fld6.

” Define the mapping table, here level define the depth of structure fields

DATA(mapping_tab) = VALUE cl_abap_corresponding=>mapping_table(
( level = 0 kind = 1 srcname = ‘COL1’ dstname = ‘FLD2’ )
( level = 0 kind = 1 srcname = ‘COL2’ dstname = ‘FLD1’ )
( level = 0 kind = 1 srcname = ‘SRC_1’ dstname = ‘TGT_1’ )
( level = 1 kind = 1 srcname = ‘COL3’ dstname = ‘FLD3’ )
( level = 1 kind = 1 srcname = ‘COL4’ dstname = ‘FLD4’ )
( level = 1 kind = 1 srcname = ‘SRC_2’ dstname = ‘TGT_2’ )
( level = 2 kind = 1 srcname = ‘COL5’ dstname = ‘FLD6’ )
( level = 2 kind = 1 srcname = ‘COL6’ dstname = ‘FLD5’ ) ).
” Create mapping object from mapping table
DATA(mapper) = cl_abap_corresponding=>create(
                                        source = src
                                        destination = tgt
                                        mapping = mapping_tab ).

” Change the target structure

mapper->execute( EXPORTING source      = src
                                    CHANGING  destination = tgt ).
WRITE:/ ‘Target After:’ COLOR 3.
WRITE:/1 tgt–fld1, 6 tgt–fld2,
               11 tgt–tgt_1–fld3, 16 tgt–tgt_1–fld4,
                21 tgt–tgt_1–tgt_2–fld5,26 tgt–tgt_1–tgt_2–fld6.


OUTPUT

4


 

Leave a Reply