data : wa_zdemo likelineof it_zdemo,
wa_zdemo1 likelineof it_zdemo.
data : gv_pos typei.
data : fname type string.
* Dynamic Table Declarations
data : gt_dyn_table typereftodata,
gw_line typereftodata,
gw_dyn_fcat type lvc_s_fcat,
gt_dyn_fcat type lvc_t_fcat.
* Field Symbols Declarations
field-symbols: <gfs_line>,<gfs_line1>,
<gfs_dyn_table> typestandardtable,
<fs1>.
* This would create structure part WW1301 WW1302 ....
gv_pos = gv_pos + 1.
gw_dyn_fcat-fieldname = 'PART'.
gw_dyn_fcat-outputlen = 5.
gw_dyn_fcat-tabname = 'IT_DEMO'.
gw_dyn_fcat-COLTEXT = 'PART'.
gw_dyn_fcat-col_pos = gv_pos.
gw_dyn_fcat-key = 'X'.
gw_dyn_fcat-key_sel = 'X'.
append gw_dyn_fcat to gt_dyn_fcat.
loopat it_zdemo into wa_zdemo.
gv_pos = gv_pos + 1.
concatenate'WW' wa_zdemo-wweek into fname.
gw_dyn_fcat-fieldname = wa_zdemo-wweek.
gw_dyn_fcat-tabname = 'IT_DEMO'.
gw_dyn_fcat-COLTEXT = fname.
gw_dyn_fcat-outputlen = 10.
gw_dyn_fcat-col_pos = gv_pos.
append gw_dyn_fcat to gt_dyn_fcat.
endloop.
* Create a dynamic internal table with this structure.
callmethod cl_alv_table_create=>create_dynamic_table
exporting
i_style_table = 'X'
it_fieldcatalog = gt_dyn_fcat
importing
ep_table = gt_dyn_table
exceptions
generate_subpool_dir_full = 1
others = 2.
if sy-subrc eq0.
* Assign the new table to field symbol
assign gt_dyn_table->* to<gfs_dyn_table>.
* Create dynamic work area for the dynamic table
createdata gw_line likelineof<gfs_dyn_table>.
assign gw_line->* to<gfs_line>.
assign gw_line->* to<gfs_line1>.
endif.
loopat it_zdemo into wa_zdemo.
* Avoid duplicate entries for key field PART.
READTABLE<gfs_dyn_table> INTO<gfs_line1> WITHKEY ('PART') = wa_zdemo-part.
if sy-subrc = 0.
CONTINUE.
endif.
assigncomponent'PART'ofstructure<gfs_line> to<fs1>.
<fs1> = wa_zdemo-part.
unassign <fs1>.
loopat gt_dyn_fcat into gw_dyn_fcat.
if gw_dyn_fcat-fieldname = 'PART'.
continue.
endif.
readtable it_zdemo WITHkey part = wa_zdemo-part wweek = gw_dyn_fcat-fieldname INTO wa_zdemo1.
if sy-subrc = 0.
assigncomponent gw_dyn_fcat-fieldname ofSTRUCTURE<gfs_line> to<fs1>.
<fs1> = wa_zdemo1-qty.
unassign <fs1>.
endif.
endloop.
append<gfs_line> to<gfs_dyn_table>.
clear: <gfs_line>.
endloop.
write :/.
loopat gt_dyn_fcat into gw_dyn_fcat.
write (10) : gw_dyn_fcat-coltext.
endloop.
write :/.
loopat<gfs_dyn_table> into<gfs_line>.
loopat gt_dyn_fcat into gw_dyn_fcat.
assigncomponent gw_dyn_fcat-fieldname ofSTRUCTURE<gfs_line> to<fs1>.
write : <fs1>.
endloop.
write :/ .
endloop.