Skip to Content
author's profile photo Former Member
Former Member

how to create dynamic internal table

hi all,

how to create dynamic internal table

if possible i need even the sample code

Thanks in advance

Points will be rewarded

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

6 Answers

  • Best Answer
    Posted on Jul 10, 2007 at 10:26 AM
    REPORT zpwtest .
    
    *** Tables
    DATA: lt_data TYPE REF TO data.
    DATA: lt_fieldcatalog TYPE lvc_t_fcat.
    
    *** Structure
    DATA: ls_fieldcatalog TYPE lvc_s_fcat.
    
    *** Data References
    DATA: new_line TYPE REF TO data.
    
    *** Field Symbols
    FIELD-SYMBOLS: <fs_data> TYPE REF TO data,
                   <fs_1> TYPE ANY TABLE,
                   <fs_2>,
                   <fs_3>.
    
    
    
    ls_fieldcatalog-fieldname = 'MANDT'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
    
    ls_fieldcatalog-fieldname = 'CARRID'. "Fieldname
    ls_fieldcatalog-inttype = 'C'. "Internal Type C-> Character
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
    
    ls_fieldcatalog-fieldname = 'CONNID'.
    ls_fieldcatalog-inttype = 'N'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
    
    ls_fieldcatalog-fieldname = 'FLDATE'.
    ls_fieldcatalog-inttype = 'D'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
    
    ls_fieldcatalog-fieldname = 'PRICE'.
    ls_fieldcatalog-inttype = 'P'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
    
    ls_fieldcatalog-fieldname = 'CURRENCY'.
    ls_fieldcatalog-inttype = 'C'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
    
    
    ASSIGN lt_data TO <fs_data>.
    
    
    CALL METHOD cl_alv_table_create=create_dynamic_table
         EXPORTING
           it_fieldcatalog = lt_fieldcatalog
         IMPORTING
           ep_table = fs_data
         EXCEPTIONS
           generate_subpool_dir_full = 1
           OTHERS = 2
    		.
    IF sy-subrc <> 0.
    ENDIF.
    
    
    
    *** So <FS_1> now points to our dynamic internal table.
    
    ASSIGN <fs_data>->* TO <fs_1>.
    
    *** Next step is to create a work area for our dynamic internal table.
    
    CREATE DATA new_line LIKE LINE OF <fs_1>.
    
    *** A field-symbol to access that work area
    ASSIGN new_line->*  TO <fs_2>.
    
    *** And to put the data in the internal table
    SELECT mandt carrid connid fldate price currency
      FROM sflight
      INTO CORRESPONDING FIELDS OF TABLE <fs_1>.
    
    *** Access contents of internal table
    LOOP AT <fs_1> ASSIGNING <fs_2>.
    
      ASSIGN COMPONENT 1 OF STRUCTURE <fs_2> TO <fs_3>.
      WRITE: / <fs_3>.
    ENDLOOP.
    
    
    
    
    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jul 10, 2007 at 10:30 AM

    HI,

    DATA:DB_TABLE(30) TYPE C value 'MARA'.

    DATA FCAT1 TYPE LVC_T_FCAT.

    DATA:DYN_ITAB TYPE REF TO DATA,"holding the dynamic internal table

    WA TYPE REF TO DATA."holding the wa for dynamic internal table

    FIELD-SYMBOLS: <DISP_TABLE> TYPE TABLE,

    <WA> TYPE ANY.

    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

    EXPORTING

    I_STRUCTURE_NAME = DB_TABLE

    CHANGING

    CT_FIELDCAT = FCAT1[].

    CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE"creating dynamic internal table using fieldcat

    EXPORTING

    IT_FIELDCATALOG = FCAT1[]

    IMPORTING

    EP_TABLE = DYN_ITAB.

    ASSIGN DYN_ITAB->* TO <DISP_TABLE>."creating internal table by refering the dynamically generated internal table structure

    CREATE DATA WA LIKE LINE OF <DISP_TABLE>."creating work area for the internal table

    ASSIGN WA->* TO <WA>.

    SELECT * FROM (DB_TABLE) INTO <WA>."filling the internal table

    APPEND <WA> TO <DISP_table>.

    ENDSELECT.

    <b>reward if helpful</b>

    rgds,

    bharat.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jul 10, 2007 at 10:25 AM
    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jul 10, 2007 at 10:26 AM

    Hi,

    try this short example:

    PARAMETER: P_DBTAB LIKE DATABROWSE-TABLENAME DEFAULT 'MARA'.

    *

    DATA: GDO_DATA TYPE REF TO DATA.

    FIELD-SYMBOLS: <GT_ITAB> TYPE TABLE.

    *

    CREATE DATA GDO_DATA TYPE TABLE OF (P_DBTAB).

    ASSIGN GDO_DATA->* TO <GT_ITAB>.

    *

    SELECT * FROM (P_DBTAB) UP TO 100 ROWS INTO TABLE <GT_ITAB>.

    Regards, Dieter

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jul 10, 2007 at 10:26 AM

    Hi Jayasree,

    Dynamic internal tables can be created using <b>CL_ALV_TABLE_CREATE</b> class and method <b>CREATE_DYNAMIC_TABLE.</b>

    Just fill the field catalog(IT_FIELDCATALOG) in the parameter of method (like you do in normal ALV reports) and it creates a pointer to dynamic data table.

    Check this code.

    report  ytest.
    data: lt_fieldcatalog type lvc_t_fcat.
    data: ls_fieldcatalog type lvc_s_fcat.
    field-symbols: <fs_data> type ref to data.
    field-symbols: <fs_1>.
    field-symbols: <fs_2> type any table.
    field-symbols: <fs_3> type ypoll.
     
     
    data: lt_data type ref to data.
     
    assign lt_data to <fs_data>.
     
    ls_fieldcatalog-fieldname = 'MANDT'.
    ls_fieldcatalog-tabname   = 'LT_TAB'.
    append ls_fieldcatalog to lt_fieldcatalog.
     
    ls_fieldcatalog-fieldname = 'POLLID'.
    ls_fieldcatalog-tabname   = 'LT_TAB'.
    append ls_fieldcatalog to lt_fieldcatalog.
     
    ls_fieldcatalog-fieldname = 'TEAM'.
    ls_fieldcatalog-tabname   = 'LT_TAB'.
    append ls_fieldcatalog to lt_fieldcatalog.
     
    ls_fieldcatalog-fieldname = 'INITIATOR'.
    ls_fieldcatalog-tabname   = 'LT_TAB'.
    append ls_fieldcatalog to lt_fieldcatalog.
     
    ls_fieldcatalog-fieldname = 'DESCRIPTION'.
    ls_fieldcatalog-tabname   = 'LT_TAB'.
    append ls_fieldcatalog to lt_fieldcatalog.
     
    ls_fieldcatalog-fieldname = 'APPROVED'.
    ls_fieldcatalog-tabname   = 'LT_TAB'.
    append ls_fieldcatalog to lt_fieldcatalog.
     
    ls_fieldcatalog-fieldname = 'INITIATED_DATE'.
    ls_fieldcatalog-tabname   = 'LT_TAB'.
    append ls_fieldcatalog to lt_fieldcatalog.
     
    ls_fieldcatalog-fieldname = 'END_DATE'.
    ls_fieldcatalog-tabname   = 'LT_TAB'.
    append ls_fieldcatalog to lt_fieldcatalog.
     
    ls_fieldcatalog-fieldname = 'WINNER'.
    ls_fieldcatalog-tabname   = 'LT_TAB'.
    append ls_fieldcatalog to lt_fieldcatalog.
     
     
    call method cl_alv_table_create=>create_dynamic_table
      exporting
        it_fieldcatalog           = lt_fieldcatalog
      importing
        ep_table                  = <fs_data>
      exceptions
        generate_subpool_dir_full = 1
        others                    = 2
            .
    if sy-subrc <> 0.
    endif.
     
    assign <fs_data>->* to <fs_1>.
    assign <fs_1> to <fs_2>.
     
    loop at <fs_2> assigning <fs_3>.
      write: <fs_3>-pollid.
    endloop.

    Thanks,

    Vinay

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jun 12, 2014 at 07:00 AM

    hi,

    u can use the


    data : it_tabdescr type abap_compdescr_tab,
    wa_tabdescr type abap_compdescr.
    data : ref_table_descr type ref to cl_abap_structdescr.

    * Return structure of the table.
    ref_table_descr ?= cl_abap_typedescr=>describe_by_name( p_table ).
    it_tabdescr[] = ref_table_descr->components[].
    loop at it_tabdescr into wa_tabdescr.
    clear wa_fieldcat.
    wa_fieldcat-fieldname = wa_tabdescr-name .
    wa_fieldcat-datatype = wa_tabdescr-type_kind.
    wa_fieldcat-inttype = wa_tabdescr-type_kind.
    wa_fieldcat-intlen = wa_tabdescr-length.
    wa_fieldcat-decimals = wa_tabdescr-decimals.
    append wa_fieldcat to it_fieldcat.
    endloop.


    * Create dynamic internal table and assign to Field-Symbol
    call method cl_alv_table_create=>create_dynamic_table
    EXPORTING
    it_fieldcatalog = it_fieldcat
    IMPORTING
    ep_table = dyn_table.
    assign dyn_table->* to <fs_table>.
    * Create dynamic work area and assign to Field Symbol
    create data dyn_line like line of <fs_table>.
    assign dyn_line->* to <fs_wa>.




    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.