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.
OUTPUT
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
LikeLike
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.
LikeLike