Application Development and Automation 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: 
Read only

internal table dynamically

Former Member
0 Likes
877

How to create internal table dynamically?

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
823

This code might help u

DATA:

gr_structdescr TYPE REF TO cl_abap_structdescr,

gr_tabldesct TYPE REF TO cl_abap_tabledescr,

gr_dref TYPE REF TO data.

FIELD-SYMBOLS:

<gt_table> TYPE STANDARD TABLE.

gr_structdescr ?= cl_abap_structdescr=>describe_by_name( <f_table ).

gr_tabledescr ?= cl_abap_tabledescr=>create( gr_structdest ).

CREATE DATA gr_dref TYPE HANDLE gr_tabledescr.

ASSIGN gr_dref->* TO <gt_table>.

  • now field-symbol <GT_TABLE> points to an internal standard

  • table with the same structure as the DDIC table specified in

  • <F_TABLE>

Rega

Prajwal

7 REPLIES 7
Read only

Former Member
0 Likes
824

This code might help u

DATA:

gr_structdescr TYPE REF TO cl_abap_structdescr,

gr_tabldesct TYPE REF TO cl_abap_tabledescr,

gr_dref TYPE REF TO data.

FIELD-SYMBOLS:

<gt_table> TYPE STANDARD TABLE.

gr_structdescr ?= cl_abap_structdescr=>describe_by_name( <f_table ).

gr_tabledescr ?= cl_abap_tabledescr=>create( gr_structdest ).

CREATE DATA gr_dref TYPE HANDLE gr_tabledescr.

ASSIGN gr_dref->* TO <gt_table>.

  • now field-symbol <GT_TABLE> points to an internal standard

  • table with the same structure as the DDIC table specified in

  • <F_TABLE>

Rega

Prajwal

Read only

Former Member
0 Likes
823

hi check this example..

report z_dynamic.

type-pools : abap.

field-symbols: <dyn_table> type standard table,

<dyn_wa>,

<dyn_field>.

data: dy_table type ref to data,

dy_line type ref to data,

xfc type lvc_s_fcat,

ifc type lvc_t_fcat.

selection-screen begin of block b1 with frame.

parameters: p_table(30) type c default 'T001'.

selection-screen end of block b1.

start-of-selection.

perform get_structure.

perform create_dynamic_itab.

perform get_data.

perform write_out.

form get_structure.

data : idetails type abap_compdescr_tab,

xdetails type abap_compdescr.

data : ref_table_des type ref to cl_abap_structdescr.

  • Get the structure of the table.

ref_table_des ?=

cl_abap_typedescr=>describe_by_name( p_table ).

idetails[] = ref_table_des->components[].

loop at idetails into xdetails.

clear xfc.

xfc-fieldname = xdetails-name .

xfc-datatype = xdetails-type_kind.

xfc-inttype = xdetails-type_kind.

xfc-intlen = xdetails-length.

xfc-decimals = xdetails-decimals.

append xfc to ifc.

endloop.

endform.

form create_dynamic_itab.

  • Create dynamic internal table and assign to FS

call method cl_alv_table_create=>create_dynamic_table

exporting

it_fieldcatalog = ifc

importing

ep_table = dy_table.

assign dy_table->* to <dyn_table>.

  • Create dynamic work area and assign to FS

create data dy_line like line of <dyn_table>.

assign dy_line->* to <dyn_wa>.

endform.

form get_data.

  • Select Data from table.

select * into table <dyn_table>

from (p_table).

endform.

&----


*& Form write_out

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form write_out .

  • Write out data from table.

loop at <dyn_table> into <dyn_wa>.

do.

assign component sy-index

of structure <dyn_wa> to <dyn_field>.

if sy-subrc <> 0.

exit.

endif.

if sy-index = 1.

write:/ <dyn_field>.

else.

write: <dyn_field>.

endif.

enddo.

endloop.

endform. " write_out

Read only

Former Member
0 Likes
823

Pl. see this sample code...

report z_dynamic.

type-pools : abap.

field-symbols: <dyn_table> type standard table,

<dyn_wa>,

<dyn_field>.

data: dy_table type ref to data,

dy_line type ref to data,

xfc type lvc_s_fcat,

ifc type lvc_t_fcat.

selection-screen begin of block b1 with frame.

parameters: p_table(30) type c default 'T001'.

selection-screen end of block b1.

start-of-selection.

perform get_structure.

perform create_dynamic_itab.

perform get_data.

perform write_out.

form get_structure.

data : idetails type abap_compdescr_tab,

xdetails type abap_compdescr.

data : ref_table_des type ref to cl_abap_structdescr.

  • Get the structure of the table.

ref_table_des ?=

cl_abap_typedescr=>describe_by_name( p_table ).

idetails[] = ref_table_des->components[].

loop at idetails into xdetails.

clear xfc.

xfc-fieldname = xdetails-name .

xfc-datatype = xdetails-type_kind.

xfc-inttype = xdetails-type_kind.

xfc-intlen = xdetails-length.

xfc-decimals = xdetails-decimals.

append xfc to ifc.

endloop.

endform.

form create_dynamic_itab.

  • Create dynamic internal table and assign to FS

call method cl_alv_table_create=>create_dynamic_table

exporting

it_fieldcatalog = ifc

importing

ep_table = dy_table.

assign dy_table->* to <dyn_table>.

  • Create dynamic work area and assign to FS

create data dy_line like line of <dyn_table>.

assign dy_line->* to <dyn_wa>.

endform.

form get_data.

  • Select Data from table.

select * into table <dyn_table>

from (p_table).

endform.

form write_out .

  • Write out data from table.

loop at <dyn_table> into <dyn_wa>.

do.

assign component sy-index

of structure <dyn_wa> to <dyn_field>.

if sy-subrc <> 0.

exit.

endif.

if sy-index = 1.

write:/ <dyn_field>.

else.

write: <dyn_field>.

endif.

enddo.

endloop.

endform.

Read only

Former Member
0 Likes
823

Sravanthi,

i rekon you closed all answered thread without giving mark.

please mark all good answers on SDN.

just refer:

you will get you answer.

Amit.

Read only

Former Member
0 Likes
823

Hi,

Please check this link

http://www.saptechnical.com/Tutorials/ABAP/DynamicInternaltable/DynamicInternalTable.htm

http://www.sap-img.com/ab030.htm

Creating Dynamic internal table

PARAMETERS : p_table(10) TYPE C. 

  DATA: w_tabname TYPE w_tabname,             

        w_dref TYPE REF TO data,              

        w_grid TYPE REF TO cl_gui_alv_grid.  

  FIELD-SYMBOLS: <t_itab> TYPE ANY TABLE.  

  w_tabname = p_table.  

  CREATE DATA w_dref TYPE TABLE OF (w_tabname). 

  ASSIGN w_dref->* TO <t_itab>. 

*Populating Dynamic internal table

SELECT * 

    FROM (w_tabname) UP TO 20 ROWS 

    INTO TABLE <t_itab>. 

Displaying dynamic internal table using Grid.

CREATE OBJECT w_grid 

    EXPORTING i_parent = cl_gui_container=>screen0.  

  CALL METHOD w_grid->set_table_for_first_display 

    EXPORTING 

      i_structure_name = w_tabname 

    CHANGING 

      it_outtab        = <t_itab>.  

  CALL SCREEN 100.

Scenario 2:

Create a dynamic internal table with the specified number of columns.

Creating Dynamic internal table

TYPE-POOLS: slis. 

 FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE,  u201C Dynamic internal table name 

               <fs_dyntable>,                     u201C Field symbol to create work area 

               <fs_fldval> type any.              u201C Field symbol to assign values  

PARAMETERS: p_cols(5) TYPE c.                     u201C Input number of columns 

DATA:   t_newtable TYPE REF TO data, 

        t_newline  TYPE REF TO data, 

        t_fldcat   TYPE slis_t_fldcat_alv, 

        t_fldcat   TYPE lvc_t_fcat, 

        wa_it_fldcat TYPE lvc_s_fcat, 

        wa_colno(2) TYPE n, 

        wa_flname(5) TYPE c.  

* Create fields . 

  DO p_cols TIMES. 

    CLEAR wa_it_fldcat. 

    move sy-index to wa_colno. 

    concatenate 'COL' 

                wa_colno 

           into wa_flname. 

    wa_it_fldcat-fieldname = wa_flname. 

    wa_it_fldcat-datatype = 'CHAR'. 

    wa_it_fldcat-intlen = 10. 

    APPEND wa_it_fldcat TO t_fldcat. 

  ENDDO.  

* Create dynamic internal table and assign to FS 

  CALL METHOD cl_alv_table_create=>create_dynamic_table 

    EXPORTING 

      it_fieldcatalog = t_fldcat 

    IMPORTING 

      ep_table        = t_newtable.  

  ASSIGN t_newtable->* TO <t_dyntable>.  

* Create dynamic work area and assign to FS 

  CREATE DATA t_newline LIKE LINE OF <t_dyntable>. 

  ASSIGN t_newline->* TO <fs_dyntable>. 

Populating Dynamic internal table

  DATA: fieldname(20) TYPE c. 

  DATA: fieldvalue(10) TYPE c. 

  DATA: index(3) TYPE c.  

  DO p_cols TIMES.  

    index = sy-index. 

    MOVE sy-index TO wa_colno. 

    CONCATENATE 'COL' 

                wa_colno 

           INTO wa_flname.  

* Set up fieldvalue 

    CONCATENATE 'VALUE' index INTO 

                fieldvalue. 

    CONDENSE    fieldvalue NO-GAPS.  

    ASSIGN COMPONENT  wa_flname 

        OF STRUCTURE <fs_dyntable> TO <fs_fldval>. 

    <fs_fldval> =  fieldvalue.  

  ENDDO.  

* Append to the dynamic internal table 

  APPEND <fs_dyntable> TO <t_dyntable>. 

Displaying dynamic internal table using Grid.

DATA: wa_cat LIKE LINE OF fs_fldcat.  

  DO p_cols TIMES. 

    CLEAR wa_cat. 

    MOVE sy-index TO wa_colno. 

    CONCATENATE 'COL' 

                wa_colno 

           INTO wa_flname.  

    wa_cat-fieldname = wa_flname. 

    wa_cat-seltext_s = wa_flname. 

    wa_cat-outputlen = '10'. 

    APPEND wa_cat TO fs_fldcat. 

  ENDDO.  

* Call ABAP List Viewer (ALV) 

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 

    EXPORTING 

      it_fieldcat = fs_fldcat 

    TABLES 

      t_outtab    = <t_dyntable>.

Best regards,

raam

Read only

Former Member
0 Likes
823

Hi,

Please check this link

http://www.sap-img.com/ab030.htm

Best regards,

raam

Read only

Former Member
0 Likes
823

thanks & regards

sravanthi