Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Move data from Internal table to Dynamic Internal table

Former Member
0 Kudos

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.

1 REPLY 1

Former Member
0 Kudos

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.