‎2011 Mar 17 9:41 AM
Dear Experts,
I am working on a report need to move the data from 1 internal table to Dynamic internal table.
Data in Internal table 1. ( having 4 columns )
G/L account G/L text BusA Amount
1111 Customer AA 100
BB 200-
2222 Vendor AA 100
BB 100
CC -200
Expected O/p Format Internal table 2 - ( dynamic internal table )
G/L account G/L text AA BB CC DD EE FF ........
1111 Customer 100 200-
2222 Vendor 100 100 200-
where BusA will be dynamic , collecting the same from 'TGSB'
let's say as on today have 40 BusA. , after 2 months it will be 50 ...then the report should work and will have 50 BusA in column header.
Pls help how i can move the data.
‎2011 Apr 06 11:40 AM
Dear All,
Got the solution and working as expected.
PF the same
REPORT ZDYNAMIC_ITAB .
TYPE-POOLS: slis.
TYPES : BEGIN OF ty_itab1,
gl_ac(10) TYPE c,
gl_txt(15) TYPE c,
busa(2) TYPE c,
amt(10) TYPE c,
END OF ty_itab1.
TYPES : BEGIN OF ty_busa,
busa(2) TYPE c,
END OF ty_busa.
TYPES : BEGIN OF ty_gl_ac,
gl_ac(10) TYPE c,
END OF ty_gl_ac.
DATA: lt_itab1 TYPE STANDARD TABLE OF ty_itab1,
lw_itab1 LIKE LINE OF lt_itab1,
lt_busa TYPE STANDARD TABLE OF ty_busa,
lw_busa LIKE LINE OF lt_busa,
lt_gl_ac TYPE STANDARD TABLE OF ty_gl_ac,
lw_gl_ac LIKE LINE OF lt_gl_ac.
DATA: lt_fcat TYPE slis_t_fieldcat_alv,
lw_fcat LIKE LINE OF lt_fcat.
DATA: it_fieldcat TYPE lvc_t_fcat,
wa_fieldcat LIKE LINE OF it_fieldcat.
DATA: lv_cnt TYPE i,
lv_fname(20) TYPE c.
DATA: lt_itab2 TYPE REF TO data,
lw_itab2 TYPE REF TO data.
FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE,
<fs_dyntable>,
<fs_fldval> TYPE ANY.
Dummy Data
CLEAR lw_itab1.
lw_itab1-gl_ac = '1111'.
lw_itab1-gl_txt = 'Customer'.
lw_itab1-busa = 'AA'.
lw_itab1-amt = '100'.
APPEND lw_itab1 TO lt_itab1.
CLEAR lw_itab1.
lw_itab1-gl_ac = '1111'.
lw_itab1-gl_txt = 'Customer'.
lw_itab1-busa = 'BB'.
lw_itab1-amt = '200'.
APPEND lw_itab1 TO lt_itab1.
CLEAR lw_itab1.
lw_itab1-gl_ac = '2222'.
lw_itab1-gl_txt = 'Vendor'.
lw_itab1-busa = 'AA'.
lw_itab1-amt = '100'.
APPEND lw_itab1 TO lt_itab1.
CLEAR lw_itab1.
lw_itab1-gl_ac = '2222'.
lw_itab1-gl_txt = 'Vendor'.
lw_itab1-busa = 'BB'.
lw_itab1-amt = '100'.
APPEND lw_itab1 TO lt_itab1.
CLEAR lw_itab1.
lw_itab1-gl_ac = '2222'.
lw_itab1-gl_txt = 'Vendor'.
lw_itab1-busa = 'CC'.
lw_itab1-amt = '300'.
APPEND lw_itab1 TO lt_itab1.
SORT lt_itab1 BY gl_ac.
LOOP AT lt_itab1 INTO lw_itab1.
lw_busa-busa = lw_itab1-busa.
APPEND lw_busa TO lt_busa.
CLEAR lw_busa.
lw_gl_ac-gl_ac = lw_itab1-gl_ac.
APPEND lw_gl_ac TO lt_gl_ac.
CLEAR lw_gl_ac.
ENDLOOP.
SORT lt_busa BY busa ASCENDING.
DELETE ADJACENT DUPLICATES FROM lt_busa.
SORT lt_gl_ac BY gl_ac ASCENDING.
DELETE ADJACENT DUPLICATES FROM lt_gl_ac COMPARING gl_ac.
Creation of field catalog.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-fieldname = 'GL_AC'.
wa_fieldcat-TABNAME = 'LT_OVERVIEW'.
wa_fieldcat-reptext = 'GL Account'.
wa_fieldcat-key = 'X'.
wa_fieldcat-just = 'L'.
wa_fieldcat-outputlen = '14'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-fieldname = 'GL_TXT'.
wa_fieldcat-TABNAME = 'LT_OVERVIEW'.
wa_fieldcat-reptext = 'GL Text'.
wa_fieldcat-key = 'X'.
wa_fieldcat-just = 'L'.
wa_fieldcat-outputlen = '15'.
APPEND wa_fieldcat TO it_fieldcat.
lv_cnt = 2.
LOOP AT lt_busa INTO lw_busa.
lv_cnt = lv_cnt + 1.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = lv_cnt.
wa_fieldcat-fieldname = lw_busa-busa.
wa_fieldcat-TABNAME = 'LT_OVERVIEW'.
wa_fieldcat-reptext = lw_busa-busa.
wa_fieldcat-key = ' '.
wa_fieldcat-just = 'R'.
wa_fieldcat-outputlen = '14'.
APPEND wa_fieldcat TO it_fieldcat.
ENDLOOP.
Create Dynamic Internal table.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcat
IMPORTING
ep_table = lt_itab2
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ASSIGN lt_itab2->* TO <t_dyntable>.
Create dynamic Work Area and assign it to Field Symbol.
CREATE DATA lw_itab2 LIKE LINE OF <t_dyntable>.
ASSIGN lw_itab2->* TO <fs_dyntable>.
Transposing the entries.
LOOP AT lt_gl_ac INTO lw_gl_ac.
READ TABLE lt_itab1 INTO lw_itab1 WITH KEY gl_ac = lw_gl_ac-gl_ac.
IF sy-subrc EQ 0.
CLEAR lv_fname.
lv_fname = 'GL_TXT'.
ASSIGN COMPONENT lv_fname OF STRUCTURE <fs_dyntable> TO <fs_fldval>.
<fs_fldval> = lw_itab1-gl_txt.
assign lw_itab1-gl_txt to <fs_fldval>.
ENDIF.
CLEAR lv_fname.
lv_fname = 'GL_AC'.
ASSIGN COMPONENT lv_fname OF STRUCTURE <fs_dyntable> TO <fs_fldval>.
<fs_fldval> = lw_gl_ac-gl_ac.
LOOP AT lt_itab1 INTO lw_itab1 WHERE gl_ac = lw_gl_ac-gl_ac.
CLEAR lv_fname.
lv_fname = lw_itab1-busa.
ASSIGN COMPONENT lv_fname OF STRUCTURE <fs_dyntable> TO <fs_fldval>.
<fs_fldval> = lw_itab1-amt.
ENDLOOP.
APPEND <fs_dyntable> TO <t_dyntable>.
CLEAR <fs_dyntable>.
ENDLOOP.