DATA dref TYPE REF TO data. FIELD-SYMBOLS: <xyz> TYPE ANY TABLE. TRY. CREATE DATA dref TYPE STANDARD TABLE OF (tab) WITH NON-UNIQUE DEFAULT KEY. ASSIGN dref->* TO <xyz>. CATCH cx_sy_create_data_error. WRITE 'Wrong Database!'. ENDTRY.
You are done with it...
(tab) can hold any table name.
regards,
Sandeep Josyula
*Reward if found useful...pl dont forget
Below code might give you some idea:
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. * Creates a dyanamic internal table ** 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." / 2. xfc-decimals = xdetails-decimals. " / 2. 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.
<b>Thanks to the Original Contributors.</b>
Kind Regards
Eswar
Have a look at below code.
REPORT ZCLUST1 .
Example: how to create a dynamic internal table
The dynamic internal table stucture
DATA: BEGIN OF STRUCT OCCURS 10,
FILDNAME(8) TYPE C,
ABPTYPE TYPE C,
LENGTH TYPE I,
END OF STRUCT.
The dynamic program source table
DATA: BEGIN OF INCTABL OCCURS 10,
LINE(72),
END OF INCTABL.
DATA: LNG TYPE I, TYPESRTING(6).
Sample dynamic internal table stucture
STRUCT-FILDNAME = 'field1'. STRUCT-ABPTYPE = 'c'. STRUCT-LENGTH = '6'.
APPEND STRUCT. CLEAR STRUCT.
STRUCT-FILDNAME = 'field2'. STRUCT-ABPTYPE = 'd'.
APPEND STRUCT. CLEAR STRUCT.
STRUCT-FILDNAME = 'field3'. STRUCT-ABPTYPE = 'i'.
APPEND STRUCT. CLEAR STRUCT.
Create the dynamic internal table definition in the dyn. program
INCTABL-LINE = 'program zdynpro.'. APPEND INCTABL.
INCTABL-LINE = 'data: begin of dyntab occurs 10,'. APPEND INCTABL.
LOOP AT STRUCT.
INCTABL-LINE = STRUCT-FILDNAME.
LNG = STRLEN( STRUCT-FILDNAME ).
IF NOT STRUCT-LENGTH IS INITIAL .
TYPESRTING(1) = '('.
TYPESRTING+1 = STRUCT-LENGTH.
TYPESRTING+5 = ')'.
CONDENSE TYPESRTING NO-GAPS.
INCTABL-LINE+LNG = TYPESRTING.
ENDIF.
INCTABL-LINE+15 = 'type '.
INCTABL-LINE+21 = STRUCT-ABPTYPE.
INCTABL-LINE+22 = ','.
APPEND INCTABL.
ENDLOOP.
INCTABL-LINE = 'end of dyntab. '.
APPEND INCTABL.
Create the code processes the dynamic internal table
INCTABL-LINE = ' '. APPEND INCTABL.
INCTABL-LINE = 'dyntab-field1 = ''aaaaaa''.'. APPEND INCTABL.
INCTABL-LINE = 'dyntab-field1 = ''19970814''.'. APPEND INCTABL.
INCTABL-LINE = 'dyntab-field1 = 1.'. APPEND INCTABL.
INCTABL-LINE = 'append dyntab.'. APPEND INCTABL.
INCTABL-LINE = ' '. APPEND INCTABL.
INCTABL-LINE = 'loop at dyntab.'. APPEND INCTABL.
INCTABL-LINE = 'write: / dyntab.'. APPEND INCTABL.
INCTABL-LINE = 'endloop.'. APPEND INCTABL.
Create and run the dynamic program
INSERT REPORT 'zdynpro'(001) FROM INCTABL.
SUBMIT ZDYNPRO.
I hope it helps.
Best Regards,
Vibha
*Please mark all the helpful answers
Add a comment