New Way of joining multiple internal tables

1

By using FOR loop with new read syntax, multiple internal tables can joined.

 

 

Many times in development, to prepare a final internal tables which contains columns from more than 2 internal tables, loop and read statement are used. Now the same can be done by using FOR loop and by using the new syntax of reading an internal table.

SAMPLE CODE

TYPES: BEGIN OF ty_scarr,
                carrid   TYPE scarr–carrid,
                carrname TYPE scarr–carrname,
              END OF ty_scarr,
              BEGIN OF ty_spfli,
                carrid    TYPE spfli–carrid,
                connid    TYPE spfli–connid,
                countryfr TYPE spfli–countryfr,
                countryto TYPE spfli–countryto,
              END OF ty_spfli,
              BEGIN OF ty_flight,
                carrid    TYPE spfli–carrid,
                carrname  TYPE scarr–carrname,
                connid    TYPE spfli–connid,
                countryfr TYPE spfli–countryfr,
                countryto TYPE spfli–countryto,
            END OF ty_flight.
TYPES: tt_flight TYPE TABLE OF ty_flight WITH NON-UNIQUE KEY carrid.
DATA: lt_scarr  TYPE TABLE OF ty_scarr,
              lt_spfli  TYPE TABLE OF ty_spfli,
              lt_flight TYPE TABLE OF ty_flight.

SELECT carrid carrname FROM scarr INTO CORRESPONDING FIELDS OF TABLE lt_scarr.
SELECT carrid connid countryfr countryto FROM spfli INTO CORRESPONDING FIELDS OF TABLE lt_spfli.

lt_flight = VALUE tt_flight( FOR ls_spfli IN lt_spfli
                                                       ( carrid = ls_spfli–carrid
                                                         carrname = lt_scarr[ carrid = ls_spfli–carrid ]–carrname
                                                         connid = ls_spfli–connid
                                                         countryfr = ls_spfli–countryfr
                                                        countryto = ls_spfli–countryto ) ).
”  carrname = lt_scarr[ carrid = ls_spfli–carrid ]–carrname   -> This line reads the                 carrid line from LT_SCARR table and returns the CARRNAME field.
cl_demo_output=>display_data( lt_flight ).


DB Table records.

34

 


OUTPUT

2.jpg


 

2 comments

  1. Hi sir.

    Need some more clarfication in the above syntax.

    carrname = lt_scarr[ carrid = ls_spfli–carrid ]–carrname.

    from carrname i have to fetch another field value from lt_scarr,

    Regards
    Shashank

    Like

    1. lt_scarr[ carrid = ls_spfli–carrid ]–carrname means from LT_SCARR inbternal table reads record where CARRID = LS_SPFLI-CARRID and from that line returns CARRNAME field value.

      Like

Leave a Reply