Internal Table Structure

hi
i have an internal table itab with fields
f1(20) type c,
f2     type p,
f3     type p decimals 2,
f4     like mseg-matnr,
f5     like makt-maktx.
can i know the structure and dat type of the firleds at run time of an internal table..... like what we get thru FM <b>DDIF_FIELDINFO_GET</b>
Abhishek suppal

Hi Abhishek,
1. This can be done using Class/Object.
2. The required class (SE24) is
   CL_ABAP_structDESCR.
3. Sample Program : (Just copy and paste)
REPORT typedescr_test.
*------- Variables
data : det type ref to CL_ABAP_structDESCR.
data : wa like line of det->components.
*------ Internal Table
DATA : BEGIN OF ITAB OCCURS 0,
       MANDT TYPE T001-MANDT,  "--- type
       PERNR LIKE P0001-PERNR, " --- like
       MATNR TYPE MARA-MATNR,  "--- type
       EBELN LIKE EKKO-EBELN,  "--- like
      END OF ITAB.
Start of selection
START-OF-SELECTION.
det ?= cl_abap_typedescr=>describe_by_DATA( ITAB ).
loop at det->components into wa.
write :/ wa-name , wa-type_kind , wa-length.
endloop.
Number Of columns
describe table det->components.
write /: sy-tfill.
hope the above helps.
Regards,
Amit M.

Similar Messages

  • Determining internal table structure dynamically

    Hi,
    I have a number of internal tables in my program which I declare using types. As an example:
    TYPES: begin of ty_hierarchy,
                   control_id(6)   type c,
                   node_id(10)     type c,
                   node_name       type bezei40,
                   material        type matnr,
                   node_level      type prodh_stuf,
                   node_parent(10) type c,
                end of ty_hierarchy.
    DATA: it_hierarchy type ty_hierarchy occurs 0.
    Further down my program I need to determine the structure of internal table IT_HIERARCHY dynamically. Because I have a number of internal tables, I need to determine which internal table is being processed. Therefore it's important that I know the structure of the table that I'm currently processing.
    I am aware of CL_ABAP* classes and functions like GET_COMPONENT_LIST. However because I have declared my tables using the TYPE statement the method/function cannot read my table structure correctly. If I changed my declaration to be as below, the method/function work! However I don't want to do this as I use field symbols to reference my internal tables and need to use the TYPE statement.
    DATA: begin of ty_hierarchy,
                   control_id(6)   type c,
                   node_id(10)     type c,
                   node_name       type bezei40,
                   material        type matnr,
                   node_level      type prodh_stuf,
                   node_parent(10) type c,
                end of ty_hierarchy.
    DATA: begin of it_hierarchy occurs 0.
                 include structure ty_hierarchy
    DATA: end of it_hierarchy.
    Does anyone know on how I can determine my  internal table structure dynamically but still keeping my internal table declarations using TYPE statement?
    Any help would be greatly appreciated with reward points .....
    Thanks
    Liam

    Hello Liam
    Both the ABAP-OO as well as the FM-based approach described by Eswar work well with your way of defining the itabs. I described three different ways how to get the structure of your itab dynamically:
    - directly using the itab
    - using a field symbol
    - using a data reference
    REPORT  zus_sdn_dynamic_itabs.
    TYPE-POOLS: abap.
    TYPES: BEGIN OF ty_hierarchy,
    control_id(6) TYPE c,
    node_id(10) TYPE c,
    node_name TYPE bezei40,
    material TYPE matnr,
    node_level TYPE prodh_stuf,
    node_parent(10) TYPE c,
    END OF ty_hierarchy.
    DATA:
      gs_hierarchy    TYPE ty_hierarchy,
      it_hierarchy    TYPE ty_hierarchy OCCURS 0.
    DATA:
      gt_comp         TYPE abap_compdescr_tab,
      gs_comp_a       LIKE LINE OF gt_comp,
      gd_type         TYPE abap_typekind,
      gs_comp    TYPE rstrucinfo,
      it_comp TYPE TABLE OF rstrucinfo.
    DATA:
      go_struct    TYPE REF TO cl_abap_structdescr,
      go_table     TYPE REF TO cl_abap_tabledescr,
      gdo_data     TYPE REF TO data.
    FIELD-SYMBOLS:
      <gt_itab>    TYPE table.
    START-OF-SELECTION.
      GET REFERENCE OF it_hierarchy INTO gdo_data.
      ASSIGN gdo_data->* TO <gt_itab>.
    * (1) Describe directly by using the itab
    *  go_table  ?= cl_abap_structdescr=>describe_by_data( it_hierarchy ).
    * (2) Describe indirectly by using field symbol
    *  go_table  ?= cl_abap_structdescr=>describe_by_data( <gt_itab> ).
    * (3) Describe by data reference to itab
      go_table  ?= cl_abap_structdescr=>describe_by_data_ref( gdo_data ).
      go_struct ?= go_table->get_table_line_type( ).
      WRITE: / 'ABAP-OO Version:'.
      gt_comp = go_struct->components.
      LOOP AT gt_comp INTO gs_comp_a.
        WRITE: / gs_comp_a-name,
                 gs_comp_a-length,
                 gs_comp_a-type_kind,
                 gs_comp_a-decimals.
      ENDLOOP.
      SKIP 2.
      CALL FUNCTION 'GET_COMPONENT_LIST'
        EXPORTING
          program    = sy-repid
          fieldname  = 'GS_HIERARCHY'
        TABLES
          components = it_comp.
      WRITE: / 'Function Module Version:'.
      LOOP AT it_comp INTO gs_comp.
        WRITE: / gs_comp-compname,
                 gs_comp-level,
                 gs_comp-leng,
                 gs_comp-type,
                 gs_comp-olen,
                 gs_comp-decs.
      ENDLOOP.
    END-OF-SELECTION.
    Regards
      Uwe

  • Dynamic internal table structure

    pl. give the solution to create dynamically internal table structure with respective of different table.

    Hi and welcome to the SDN,
    this topic is more related to abap, but anyway:
    data: l_tabname(30) type c value 'MARA',
          ref_data type ref to data.
    field-symbols: <fs_tab> type table.
    create data ref_data type standard table of (l_tabname).
    assign ref_data->* to <fs_tab>.
    Now <fs_tab> is a internal table with structure of table mara.
    Hope this helps!
    regards
    Siggi

  • Change internal table structure dynamically

    Dear Experts , I have a requirement to add an attribute to already declared internal table which is declared in standard SAP code, is it possible to change internal table structure dynamically.
    my internal table is of type merel_t_grid2 which is standard table type in SAP , now I want to add an attribute of type  LVC_T_STYL in my internal table so that I can modify the cell property of ALV grid.
    I cant append LVC_T_STYL in standard structure because enhancement category of merel_t_grid2 is of type char and not deep
    my internal table contains data to be displayed in ALV.
    please help

    Dear Experts , I have a requirement to add an attribute to already declared internal table which is declared in standard SAP code, is it possible to change internal table structure dynamically.
    my internal table is of type merel_t_grid2 which is standard table type in SAP , now I want to add an attribute of type  LVC_T_STYL in my internal table so that I can modify the cell property of ALV grid.
    I cant append LVC_T_STYL in standard structure because enhancement category of merel_t_grid2 is of type char and not deep
    my internal table contains data to be displayed in ALV.
    please help

  • Internal table structure/ALV Problem

    Hello, Im new to ABAP (third day) so careful explination would be greatly appreciated.
    So I'm trying to display two tables together that I've joined into an ALV.  Im creating an internal table to hold the information that I want to display from the join I created. 
    When I call my alv set_table_for_first_display I need to specify i_structure_name.  Right now im using the name of my internal table, but I dont know if im doing this right.  When I run my program i get an error NO_FIELDCATALOG_AVAILABLE.  After searching many other posts i think its because my internal table doesnt have a structure, but im not sure.
    Here is my code, thanks in advance!:
    CLASS application DEFINITION.
      PUBLIC SECTION.
        METHODS: constructor,
           read_data IMPORTING l_DAUAT TYPE AFPO-DAUAT,
           fill_list.
      PRIVATE SECTION.
        DATA: BEGIN OF tbljoin,
                AFPO_AUFNR TYPE AFPO-AUFNR,
                AFPO_DAUAT TYPE AFPO-DAUAT,
                AFPO_DGLTP TYPE AFPO-DGLTP,
                AFPO_DGLTS TYPE AFPO-DGLTS,
                AFPO_OBJNP TYPE AFPO-OBJNP,
                AFPO_XLOEK TYPE AFPO-XLOEK,
                AFKO_GLTRP TYPE AFKO-GLTRP,
        END OF tbljoin,
       afpo_tab TYPE TABLE OF afpo,
        join_tab LIKE STANDARD TABLE OF TBLJOIN,
        container TYPE REF TO cl_gui_custom_container,
        alv_list TYPE REF TO cl_gui_alv_grid.
    ENDCLASS.
    *Class Implementations
    CLASS application IMPLEMENTATION.
      METHOD read_data.
        Select: POAUFNR PODAUAT PODGLTP PODGLTS POOBJNP POXLOEK
    KO~GLTRP
        FROM afpo as po INNER JOIN AFKO as KO
          on POAUFNR = KOAUFNR
        INTO TABLE join_tab
        where dauat = l_dauat.
      ENDMETHOD.
      METHOD constructor.
        CREATE OBJECT container
            EXPORTING container_name = 'LIST_AREA'.
        CREATE OBJECT alv_list
            EXPORTING i_parent = container.
          CALL METHOD alv_list->set_table_for_first_display
            EXPORTING i_structure_name = 'JOINTAB'
            CHANGING it_outtab = join_tab.
      ENDMETHOD.
      METHOD fill_list.
        CALL METHOD alv_list->refresh_table_display.
      ENDMETHOD.
    ENDCLASS.
    DATA: object_ref TYPE REF TO application.
    *Screens Interfaces
    TABLES: AFPO, AFKO.
    *Processing Blocks called by the Runtime Environment             *
    *Event Block START-OF-SELECTION
    START-OF-SELECTION.
      CREATE OBJECT object_ref.
      CALL SCREEN 100.
    *Dialog Module PBO
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'SCREEN_100'.
      CALL METHOD object_ref->fill_list.
    ENDMODULE.
    *Dialog Module PAI
    MODULE user_command_0100 INPUT.
      IF sy-ucomm = 'BACK' OR
         sy-ucomm = 'EXIT' OR
         sy-ucomm = 'CANCEL'.
        LEAVE PROGRAM.
      ELSE.
        CALL METHOD object_ref->read_data
            EXPORTING l_dauat = afpo-dauat.
      ENDIF.
    ENDMODULE.

    Hi Nathan,
    Fieldcatalog has important role in ALV .U missed that one .Go through these steps.
    <b>1</b>.
    Define ur Fieldcatalog table like this .
    DATA:
      i_field   TYPE lvc_t_fcat,
      w_field   TYPE lvc_s_fcat.
    <b>2</b>.
    Build like this
    FORM build_fieldcatalog_tab .
      DATA :pos TYPE i VALUE 1.
      CLEAR: w_field,i_field[],pos.
      w_field-col_pos   = pos  + 1.
      w_field-fieldname = 'MATNR' .
      w_field-tabname   = 'I_MARC' .
      w_field-scrtext_m = 'Material' .
      APPEND w_field TO i_field.
      CLEAR w_field.
      w_field-col_pos   = pos  + 1.
      w_field-fieldname = 'WERKS' .
      w_field-tabname   = 'I_MARC' .
      w_field-scrtext_m = 'Plant' .
      APPEND w_field TO i_field.
      CLEAR w_field.
    ENDFORM.
    <b>3</b>.
    Pass through this method
    <b>  CALL METHOD alv_grid->set_table_for_first_display</b>
        EXPORTING
         I_BUFFER_ACTIVE               =
         I_BYPASSING_BUFFER            =
         I_CONSISTENCY_CHECK           =
         i_structure_name              = 'MARA'
         IS_VARIANT                    =
         I_SAVE                        =
         I_DEFAULT                     = 'X'
           is_layout                     = w_layout
         IS_PRINT                      = w_print
         IT_SPECIAL_GROUPS             =
         IT_TOOLBAR_EXCLUDING          =
         IT_HYPERLINK                  =
         IT_ALV_GRAPHICS               =
         IT_EXCEPT_QINFO               =
        CHANGING
    <b>     it_outtab                     = i_marc</b>
    <b>     it_fieldcatalog               = i_field</b>
         IT_SORT                       =
         IT_FILTER                     =
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        OTHERS                        = 4
    <b>4</b>.
    You should remove
    <b>i_structure_name = 'JOINTAB'</b>
    y should use this when u pass single table data display.
    I hope that it helps u .
    <b>Thanks,
    Venkat.O</b>

  • Need to make the internal table structure dynamic

    Hi ,
    I need to upload data from an excel file, the columns in the excel keep on varying
    E.g the number of columns in one excel file can be 10, in the second excel file it can be 15.
    So in order to upload the data into an internal table the structre of internal table needs to be dynamic and change according to the number of fields in the input file .
    Is it possible by using field symbols or is there any other method to do the same
    Thanks.
    Nishant
    Edited by: nishant patel on Sep 17, 2009 10:48 AM

    Hi Nishant,
    According to ur requirement, dynamic internal table can be created like below. But database table name has to passed dynacimally.
        DATA: ftab TYPE STANDARD TABLE OF ddfield,
              ftab_wa TYPE ddfield,
              fcat_itab TYPE lvc_t_fcat,
              fcat_wa TYPE lvc_s_fcat,
              poi_itab TYPE REF TO data.
    FIELD-SYMBOLS: <itab> TYPE STANDARD TABLE.
        CALL FUNCTION 'DD_NAMETAB_TO_DDFIELDS'
          EXPORTING
            tabname  = p_table  " Pass database table name dynamically
          TABLES
            ddfields = ftab.
        LOOP AT ftab INTO ftab_wa.
          fcat_wa-fieldname = ftab_wa-fieldname.
          fcat_wa-ref_field = ftab_wa-fieldname.
          fcat_wa-ref_table = p_table.
          APPEND fcat_wa TO fcat_itab.
        ENDLOOP.
        CALL METHOD cl_alv_table_create=>create_dynamic_table
          EXPORTING
            it_fieldcatalog           = fcat_itab
          IMPORTING
            ep_table                  = poi_itab
          EXCEPTIONS
            generate_subpool_dir_full = 1
            OTHERS                    = 2.
        ASSIGN poi_itab->* TO <itab>.  " <itab> is dynamic internal table
    Might help u.
    Thanks.
    Edited by: Sap Fan on Sep 17, 2009 1:19 PM

  • CCM 2.0's internal table structure

    Hi,
    I want to know how CCM stores the catalog content internally (if it stores in a table,then please provide the table name).
    Please provide an answer at the earliest.
    Thanks,
    Swetha

    I was hunting for same recently. I ran the SQL trace on report /CCM/VERIFY_CATALOG. This report returns all items with field values for a particular catalog.
    According to the trace results, the report mainly hits two tables: /CCM/D_VALUE_D, /CCM/D_VALUE_TXT.
    Upon a brief look in SE11, these tables don't actually hold field values but rather store a bunch of "cluster" references. Being a non-technical person, I can only guess that this is the closest I can get to item data in the ABAP Dictionary. I'll be happy if someone can prove me wrong
    Cheers,
    Serguei

  • Create object/structure like dynamic internal table

    Hi,
    We have created dynamic internal table with some fields.
    for the above how to create structure or internal table like dynamic internal table structure .
    Scenario: internal table itab1 ( with header line) have 5 fields.
    Based on some of the conditions in layout of the report.
    we have to create dynamic internal table.
    field-symbols: <FS> type standard table.
    we are able to create dynamic internal table with 3 fields
    with assignment <fs> = itab1[]
    the columns are not appearing but data appearing in next column.
    how to solve this one
    Thanks
    Ramesh

    Hi Ramesh,
      I hope this code works...
    report  yup_alv_datbase                         .
    *-Display Database table contents in ALV Grid Format
    >********************************************************************
    This report displays data from SAP tables, views (like SE16)        *
    FM : REUSE_ALV_GRID_DISPLAY                                         *
    tables:
      dd02l,                               " SAP tables
      dd03l.                               " Table Fields
    type-pools: slis.                      " ALV Global Types
    selection-screen :
    begin of line, comment 1(35) v_1 for field p_table.         "#EC NEEDED
    parameters p_table like dd03l-tabname obligatory memory id dtb.
    selection-screen end of line.
    selection-screen :
    begin of line, comment 1(35) v_2 for field p_max.           "#EC NEEDED
    parameters p_max(2) type n default '20' obligatory.
    selection-screen end of line.
    at selection-screen.
      select single * from dd02l where tabname  = p_table
                                   and as4local = 'A'
                                   and as4vers  = '0000'.
      if sy-subrc ne 0.
      Table & is not active in the Dictionary
        message e402(mo) with p_table.
      elseif dd02l-tabclass = 'INTTAB'.
      & is a structure, not a table
        message e403(mo) with p_table.
      endif.
    initialization.
      v_1 = 'Table'.
      v_2 = 'Maximum of records'.
    start-of-selection.
      perform f_display_data.
         Form  F_DISPLAY_DATA
    form f_display_data.
    Macro definition
      define m_sort.
        add 1 to ls_sort-spos.
        ls_sort-fieldname = &1.
        ls_sort-up = 'X'.
        append ls_sort to lt_sort.
      end-of-definition.
      data:
        l_long type i,
        lp_struct   type ref to data,
        lp_table    type ref to data,      " Pointer to dynamic table
        of_sdescr   type ref to cl_abap_structdescr,
        ls_lvc_cat  type lvc_s_fcat,
        lt_lvc_cat  type lvc_t_fcat,       " Field catalog
        ls_fieldcat type slis_fieldcat_alv,
        lt_fieldcat type slis_t_fieldcat_alv,  " Field catalog
        ls_layout   type slis_layout_alv,
        lt_sort     type slis_t_sortinfo_alv,  " Sort table
        ls_sort     type slis_sortinfo_alv.
      field-symbols :
        <fieldcat>   type slis_fieldcat_alv,
        <lt_data>    type table,           " Data to display
        <fs>         type any,
        <components> type abap_compdescr.
    Dynamic creation of a structure
      create data lp_struct type (p_table).
      assign lp_struct->* to <fs>.
    Fields Structure
      of_sdescr ?= cl_abap_typedescr=>describe_by_data( <fs> ).
      loop at of_sdescr->components assigning <components>.
      Field MANDT not displayed
        if sy-tabix = 1 and <components>-name = 'MANDT'.
          continue.                        " Next loop
        endif.
      Build Fieldcatalog
        ls_lvc_cat-fieldname = <components>-name.
        ls_lvc_cat-ref_table = p_table.
        append ls_lvc_cat to lt_lvc_cat.
      Build Fieldcatalog
        ls_fieldcat-fieldname = <components>-name.
        ls_fieldcat-ref_tabname = p_table.
        append ls_fieldcat to lt_fieldcat.
      endloop.
    Create internal table
      call method cl_alv_table_create=>create_dynamic_table
        exporting it_fieldcatalog = lt_lvc_cat
        importing ep_table = lp_table.
      assign lp_table->* to <lt_data>.
    Read data
      select * from (p_table) up to p_max rows
        into corresponding fields of table <lt_data>
       order by primary key.
      if <lt_data>[] is initial.
      No table entries found for specified key
        message i429(mo).
        exit.
      endif.
    Read key field to Build Sort Table
      select * from dd03l where tabname  = p_table
                            and fieldname <> '.INCLUDE'
                            and as4vers  = '0000'
                            and as4local = 'A'
                          order by position.
        read table lt_fieldcat assigning <fieldcat>
                                with key fieldname = dd03l-fieldname.
        check sy-subrc eq 0.
        add dd03l-leng to l_long.
        if dd03l-keyflag = 'X'.
        Build Sort Table
          m_sort dd03l-fieldname.
          <fieldcat>-key = 'X'.
        elseif l_long > 150.
          <fieldcat>-tech = 'X'.
        endif.
      endselect.
      ls_layout-zebra = 'X'.
      ls_layout-colwidth_optimize = 'X'.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                is_layout   = ls_layout
                it_fieldcat = lt_fieldcat
                it_sort     = lt_sort
           tables
                t_outtab    = <lt_data>.
    endform.                               " F_DISPLAY_DATA
    END OF PROGRAM Z_ALV_DYNAMIC_DATA *********************
    Regards,
    Sampath

  • Modify the structure of internal table which created dynamically!!!

    HI All,
    I am creating internal table dynamically using the below syntax.  Now I need to remove few of the fields from the internal table structure. Could you please help me how to go ahead in these cases?
    * Create table dynamically for local data
      CREATE DATA gv_table_l TYPE TABLE OF (<fs_tabname>).
      CREATE DATA gv_wa_l    TYPE (<fs_tabname>).
      ASSIGN gv_table_l->*   TO <fs_local_tab>.
      ASSIGN gv_wa_l->*      TO <fs_local_wa
    >.
    Please let me know if you have any thoughts.
    Thanks,
    Raghu.

    Hi ,
    check this wiki
    [Internal Table|http://wiki.sdn.sap.com/wiki/display/Snippets/Howtocreateinternaltable+dynamically]
    in your case ...
    1.Get filed list based on the type ...make use of  "cl_abap_datadescr=>describe_by_type('MARA'), check for syntax or sample programs...
    2.Delete fields which you dont want to be in your internal table....
    3.Create internal table using method " CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE" ref attached link for sample code by Pinaki...
    regards
    Prabhu

  • Internal table header structure!

    Hi friends!
    I am creating a dynamic internal table for WAGE TYPES and the internal table structure is like PERNR WT1500 WT1501.
    The Wage Types depends on the selection screen and therefore they vary and the dynamic internal table structure is created successfully.
    Now, I have another internal table
    PERNR WAGETYP AMOUNT
    1           1500          200
    1           1501          300
    2           1500          100
    2           1501          500
    Final output shall be populated under the dynamic Internal table.
    PERNR WT1500 WT1501
    1           200        300
    2           100        500
    Could you please help as to how can I get the desired output or any ideas.
    Thank you for your time.

    Any thoughts!

  • Report output from memory to internal table (corresponding fields)

    How can we pick any standard report output such as
    RM07DOCS on to memory and from memory to an internal
    table.Here by internal table ,i do not mean of type c
    containing complete report but data should go from output to corresponding fields of internal table structure of whom is defined as same of the output.

    SUBMIT rfbila00 AND RETURN
         EXPORTING LIST TO MEMORY
        WITH sd_ktopl-low = ' '
         WITH sd_bukrs IN  s_bukrs
         WITH sd_prctr IN s_prctr
         WITH bilavers =  p_fsv
         WITH bilaspra =  'EN'
         WITH bilbjahr =   p_fyear
         WITH b-monate IN s_per
         WITH bilvjahr = v_cfyear
         WITH v-monate = l_per
         WITH bilagvar = P_LAYOUT
         WITH bilagrid = 'X'
         WITH bilabkon = '2'
         WITH bilagkon = '3'
         WITH bilasumm = '0'
         WITH bilavart = '1'
         WITH bilaskal = '3/0'.
      CALL FUNCTION 'LIST_FROM_MEMORY'
        TABLES
          listobject = t_list
        EXCEPTIONS
          not_found  = 1.
      REFRESH t_ascii.
      CALL FUNCTION 'LIST_TO_ASCI'
        TABLES
          listasci           = t_ascii " list converted to ASCII
          listobject         = t_list
        EXCEPTIONS
          empty_list         = 1
          list_index_invalid = 2
          OTHERS             = 3.
    u will get the output in t_list...u have to split as per ur requir......
    this will help u.....
    Reward IF...........
    Regards
    Anbu

  • How to use dynamic internal table when using gui_upload?

    Hi Experts,
    my scenario is like i have header data, item data and serial numbers.
    so with respect to the  quantity in unit of measure ,there will be number of serial numbers..
    i have declared the dynamic internal table,but i am not getting the logic to change the structure accordingly with respect to the flat file entries..
    is it possible to do or its not possible....any suggestion!!!!i have declared like this....
    TYPES: BEGIN OF ty_final,
          bldat TYPE string,      "Document Date
          budat TYPE string,      "Psting Date
          bktxt TYPE string,      "Document Header Text
          werks TYPE string,      "Plant
          lgort TYPE string,      "Storage Location
          matnr TYPE string,      "Material Number
          erfmg TYPE string,      "Quantity in Unit Of Entry
          anln1 TYPE string,      "Asset Number
          anln2 TYPE string,      "Asset Subnumber
          sernr TYPE string,      "serial Number
    END OF ty_final.
    DATA : it_final TYPE TABLE OF ty_final,
           wa_final TYPE ty_final.
    FIELD-SYMBOLS : <fs_final> TYPE table.
    ASSIGN it_final TO <fs_final>.
    after this i called gui upload and passed internal table it_final..
    but i have to change the internal table structure dynamically before the upload function.so that it will match with the flat file...
    Regards
    Karthick

    There are at least two approaches you can use to change/generate new dynamic-structured table. Either with [RTTI + RTTS|https://wiki.sdn.sap.com/wiki/display/Snippets/CreatingFlatandComplexInternalTablesDynamicallyusingRTTI] or using [CL_ALV_TABLE_CREATE|http://www.sdn.sap.com/irj/scn/advancedsearch?query=cl_alv_table_create] . In this one just determine fieldcatalog of current table and change it accordingly, then regenarate table.
    There are plenty of examples in SCN for this. You should not face difficulties applying this.
    Regards
    Marcin

  • How to populate internal table field with text data?

    Hello Experts,
    I was able to load text file to a internal table but data is not populating each field. Can someone help me how to populate each field of internal table from text file?
    Here is the text file:
    io_name, io_type, io_txsht, io_txlng, io_datatype, io_length
    ZEA_IO1, CHA, IO Test,     IO Test 1, CHAR,       20
    ZEA_IO2, CHA, IO Test,     IO Test 2, CHAR,       20
    Here is the Code:
    *& Report  ZAS_BAPI_TEST                                               *
    *& InfoObject Creation through BAPI.
    *& Read the Text file, call a BAPI to create InfoObjects.              *
    *& Text file will hold the Info Object Structure. Text file will be    *
    *& located either work station or local PC.
    *& Step 1. Create internal table to hold InfoObject structure          *
    *& Step 2. Retrieve/Load text file into Internal Table structure       *
    *& Step 3. Call BAPI Function to Create IO                             *
    *& Step 4. Call BAPI Function to Activate IO                           *
    REPORT  ZAS_BAPI_TEST                           .
    Make data separator a comma
    CONSTANTS: gc_tab TYPE c VALUE ','.
          Declaring Internal table for creating InfoObject
    DATA: p_file TYPE string.
    DATA: BEGIN OF itab-bapi OCCURS 0,
            io_name like BAPI6108-infoobject,
            io_type like BAPI6108-type,
            io_txsht like BAPI6108-textshort,
            io_txlng like BAPI6108-textlong,
            io_datatype like BAPI6108-datatp,
            io_length like BAPI6108-intlen,
          END OF itab-bapi.
    DATA ibapi LIKE STANDARD TABLE OF itab-bapi.
    PARAMETERS: sel_file(1500) TYPE c default ' ' OBLIGATORY LOWER CASE.
          PUT THE TEXT FILE PATH TO P_FILE
    p_file = sel_file.
         Copy the file from the workstation to the server        ****
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                = p_file
                   FILETYPE                = 'ASC'
                   HAS_FIELD_SEPARATOR     = SPACE
                   HEADER_LENGTH           = 0
                   DAT_MODE                = SPACE
                   CODEPAGE                = SPACE
                   IGNORE_CERR             = ABAP_TRUE
                   REPLACEMENT             = '#'
                   READ_BY_LINE            = 'X'
                 IMPORTING
                   FILELENGTH              =
                   HEADER                  =
      TABLES
        data_tab                = itab-bapi[]
      EXCEPTIONS
        file_open_error         = 1
        file_read_error         = 2
        no_batch                = 3
        gui_refuse_filetransfer = 4
        invalid_type            = 5
        no_authority            = 6
        unknown_error           = 7
        bad_data_format         = 8
        header_not_allowed      = 9
        separator_not_allowed   = 10
        header_too_long         = 11
        unknown_dp_error        = 12
        access_denied           = 13
        dp_out_of_memory        = 14
        disk_full               = 15
        dp_timeout              = 16
        not_supported_by_gui    = 17
        error_no_gui            = 18
        OTHERS                  = 19.
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      MESSAGE e012(zea_spms) WITH 'Method' 'GUI_UPLOAD' sy-subrc.
      &1 &2 issued return code &3
       ELSE.
         pit_data[] = lit_data[].
       ENDIF.
    ENDIF.
    loop at itab-bapi.
      write: /5 itab-bapi-io_name,
               20 itab-bapi-io_type,
               30 itab-bapi-io_txsht,
               50 itab-bapi-io_txlng,
               75 itab-bapi-io_datatype,
               85 itab-bapi-io_length.
    endloop.
          SELECT THE LOCATION FOR TEXT FILE
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR sel_file.
      CALL FUNCTION 'WS_FILENAME_GET'
        EXPORTING
          def_filename     = ''
          def_path         = 'C:\'
          mask             = ',Documentos de texto (*.txt), *.txt.'
          mode             = ''
        IMPORTING
          filename         = p_file
        EXCEPTIONS
          inv_winsys       = 1
          no_batch         = 2
          selection_cancel = 3
          selection_error  = 4
          OTHERS           = 5.
      find '.txt' IN p_file.
      if sy-subrc <> 0.
        concatenate p_file '.txt' into sel_file.
      else.
        sel_file = p_file.
      endif.
          Create InfoObject through BAPI Function
    *CALL FUNCTION 'BAPI_IOBJ_CREATE'.
    *IMPORTING
        VALUE(DETAILS) LIKE  BAPI6108 STRUCTURE  BAPI6108
    *EXPORTING
        VALUE(INFOOBJECT) LIKE  BAPI6108-INFOOBJECT
        VALUE(RETURN) LIKE  BAPIRET2 STRUCTURE  BAPIRET2
    TABLES
         COMPOUNDS STRUCTURE  BAPI6108CM OPTIONAL
         ATTRIBUTES STRUCTURE  BAPI6108AT OPTIONAL
         NAVIGATIONATTRIBUTES STRUCTURE  BAPI6108AN OPTIONAL
         ATRNAVINFOPROVIDER STRUCTURE  BAPI6108NP OPTIONAL
         HIERARCHYCHARACTERISTICS STRUCTURE  BAPI6108HC OPTIONAL
         ELIMINATION STRUCTURE  BAPI6108IE OPTIONAL
         RETURNTABLE STRUCTURE  BAPIRET2 OPTIONAL
          Activate InfoObject through BAPI Function
    CALL FUNCTION 'BAPI_IOBJ_ACTIVATE_MULTIPLE'
    *ENDFORM.                    " RETRIEVE_DATASET
    I appreciate your help.
    Regards,
    Mau

    I have used tab delimited file.
    Here are file contents
    io_name     io_type     io_txsht     io_txlng     io_datatype     io_length
    ZEA_IO1     CHA     IO Test     IO Test 1     CHAR     20
    ZEA_IO2     CHA     IO Test     IO Test 2     CHAR     20
    And here is program used
    *& Report ZAS_BAPI_TEST *
    *& InfoObject Creation through BAPI.
    *& Read the Text file, call a BAPI to create InfoObjects. *
    *& Text file will hold the Info Object Structure. Text file will be *
    *& located either work station or local PC.
    *& Step 1. Create internal table to hold InfoObject structure *
    *& Step 2. Retrieve/Load text file into Internal Table structure *
    *& Step 3. Call BAPI Function to Create IO *
    *& Step 4. Call BAPI Function to Activate IO *
    REPORT ZAS_BAPI_TEST .
    Make data separator a comma
    CONSTANTS: gc_tab TYPE c VALUE ','.
    Declaring Internal table for creating InfoObject
    DATA: p_file TYPE string.
    DATA: BEGIN OF itab-bapi OCCURS 0,
    io_name like BAPI6108-infoobject,
    io_type like BAPI6108-type,
    io_txsht like BAPI6108-textshort,
    io_txlng like BAPI6108-textlong,
    io_datatype like BAPI6108-datatp,
    io_length like BAPI6108-intlen,
    END OF itab-bapi.
    DATA ibapi LIKE STANDARD TABLE OF itab-bapi.
    PARAMETERS: sel_file(1500) TYPE c default ' ' OBLIGATORY LOWER CASE.
    PUT THE TEXT FILE PATH TO P_FILE
    p_file = sel_file.
    Copy the file from the workstation to the server ****
    CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
    filename = p_file
    <b>FILETYPE = 'ASC'
    HAS_FIELD_SEPARATOR = 'X'</b>
    TABLES
    data_tab = itab-bapi[]
    EXCEPTIONS
    file_open_error = 1
    file_read_error = 2
    no_batch = 3
    gui_refuse_filetransfer = 4
    invalid_type = 5
    no_authority = 6
    unknown_error = 7
    bad_data_format = 8
    header_not_allowed = 9
    separator_not_allowed = 10
    header_too_long = 11
    unknown_dp_error = 12
    access_denied = 13
    dp_out_of_memory = 14
    disk_full = 15
    dp_timeout = 16
    not_supported_by_gui = 17
    error_no_gui = 18
    OTHERS = 19.
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    MESSAGE e012(zea_spms) WITH 'Method' 'GUI_UPLOAD' sy-subrc.
    &1 &2 issued return code &3
    ELSE.
    pit_data[] = lit_data[].
    ENDIF.
    ENDIF.
    loop at itab-bapi.
    write: /5 itab-bapi-io_name,
    20 itab-bapi-io_type,
    30 itab-bapi-io_txsht,
    50 itab-bapi-io_txlng,
    75 itab-bapi-io_datatype,
    85 itab-bapi-io_length.
    endloop.
    SELECT THE LOCATION FOR TEXT FILE
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR sel_file.
    CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
    def_filename = ''
    def_path = 'C:\'
    mask = ',Documentos de texto (*.txt), *.txt.'
    mode = ''
    IMPORTING
    filename = p_file
    EXCEPTIONS
    inv_winsys = 1
    no_batch = 2
    selection_cancel = 3
    selection_error = 4
    OTHERS = 5.
    find '.txt' IN p_file.
    if sy-subrc <> 0.
    concatenate p_file '.txt' into sel_file.
    else.
    sel_file = p_file.
    endif.
    Create InfoObject through BAPI Function
    *CALL FUNCTION 'BAPI_IOBJ_CREATE'.
    *IMPORTING
    VALUE(DETAILS) LIKE BAPI6108 STRUCTURE BAPI6108
    *EXPORTING
    VALUE(INFOOBJECT) LIKE BAPI6108-INFOOBJECT
    VALUE(RETURN) LIKE BAPIRET2 STRUCTURE BAPIRET2
    TABLES
    COMPOUNDS STRUCTURE BAPI6108CM OPTIONAL
    ATTRIBUTES STRUCTURE BAPI6108AT OPTIONAL
    NAVIGATIONATTRIBUTES STRUCTURE BAPI6108AN OPTIONAL
    ATRNAVINFOPROVIDER STRUCTURE BAPI6108NP OPTIONAL
    HIERARCHYCHARACTERISTICS STRUCTURE BAPI6108HC OPTIONAL
    ELIMINATION STRUCTURE BAPI6108IE OPTIONAL
    RETURNTABLE STRUCTURE BAPIRET2 OPTIONAL
    Activate InfoObject through BAPI Function
    CALL FUNCTION 'BAPI_IOBJ_ACTIVATE_MULTIPLE'
    *ENDFORM. " RETRIEVE_DATASET
    This program is working fine. You can test it.
    Only problem is as the column headings are big for some columns, they are getting truncated which you can always change by changing the column width in declaration
    Please let me know if this helps.
    ashish

  • Creation of dynamic internal table is not synchronous

    In my code following lines are used to create a dynamic table.
    REFRESH : INCTABL .
      CLEAR INCTABL .
      INCTABL-LINE = 'data: begin of dyntab occurs 10,'. APPEND INCTABL.
      INCTABL-LINE =   'zpltnamec like zvendplt-zpltnamec,'. APPEND INCTABL.
      INCTABL-LINE =   'sourcing like zopsdwbom-sourcing,'. APPEND INCTABL.
    INCTABL-LINE =   'zmatgrp like zrmrpmaterial-zmatgrp,'. APPEND INCTABL.
      INCTABL-LINE =   'zcollection like zrmrpmaterial-zcollection,'.
      APPEND INCTABL.
      INCTABL-LINE =   'fiscintrodt like zrmrpmaterial-zfiscintrodt,'.
      APPEND INCTABL.
      INCTABL-LINE =   'bednr like ekpo-bednr,'. APPEND INCTABL.
      INCTABL-LINE =   'revlv like ekpo-revlv,'. APPEND INCTABL.
      INCTABL-LINE =   'ematn like ekpo-ematn,'. APPEND INCTABL.
      INCTABL-LINE =   'menge like mara-eannr,'. APPEND INCTABL.
      INCTABL-LINE =   'stprs like mara-eannr,'. APPEND INCTABL.
    *inctabl-line =   'kbetr like cdred-f_new,'. append inctabl.
      DATA : T_KBETR(72) .
      DATA :CNT(2).
      DO LIN TIMES .
        CNT = SY-INDEX .
        CONCATENATE 'kbetr' CNT ' like cdred-f_new,' INTO T_KBETR .
        CONDENSE T_KBETR .
        INCTABL-LINE =   T_KBETR . APPEND INCTABL.
      ENDDO .
      INCTABL-LINE = 'end of dyntab. '. APPEND INCTABL.
      INSERT REPORT 'zcrchangereport_3'(001) FROM INCTABL.
    but during run time it is using the previously created dynamic internal table structure and then creating currently required internal table.
    how to overcome this problem/
    Thanks.

    Hello,
    Instead of creating report, create subroutine pool. Like
    INCTABL-LINE = 'report ztest.'. APPEND INCTABL.
    INCTABL-LINE = 'form main'. APPEND INCTABL.
    INCTABL-LINE = 'data: begin of dyntab occurs 10,'. APPEND INCTABL.
    INCTABL-LINE = 'zpltnamec like zvendplt-zpltnamec.'. APPEND INCTABL.
    INCTABL-LINE = 'data: end of dyntab.'. APPEND INCTABL.
      CATCH SYSTEM-EXCEPTIONS GENERATE_SUBPOOL_DIR_FULL = 9.
        GENERATE SUBROUTINE POOL inctabl NAME l_name
                MESSAGE L_MESSAGE LINE L_LINE WORD L_WORD.
      ENDCATCH.
      IF L_MESSAGE IS INITIAL.
        PERFORM (L_FORM) IN PROGRAM (L_NAME).
      ELSE.
        WRITE : L_MESSAGE, L_LINE.
      ENDIF.
    You can get the message in L_message variable, if any error occurs.
    Regards,
    Naimesh

  • Excel File to Internal Table

    Hi,
    I need to export the content of a excel file to an internal table.
    I looked for it and I found some samples. But they opened the excel file.
    My excel file comes from upload and I have it in a xstring variable.
    The functions for excel expect for a file name, but I have the xstring only.
    Are there functions (to export the content to an internal table) that expect a xstring as a parameter?
    Thanks a lot.
    Best Regards,
    Jorge Luiz

    hi,
    I am uploading excel file. Ensure that columns in your excel are exactly present in the internal table structure that you use.
    I am using a TabDelimeted file as input for the  below mention case .
    Declare context node FILE
    with Attributes:
    Filename type String
    MimeType type String
    FILE type xstring.
    Place 'Fileupload UI element' on you view , bind DATA property to Attribute u2018FILEu2019 created in the context node.
    Create a Button lets call UPLOAD. on its click action put the following code.
    method upload_file .
      data: s_cont type string,
            x_cont type xstring,
            convt type ref to cl_abap_conv_in_ce,
            item_file type xstringval.
      data: input_string type string,
            fields  type string_table,
            fields2  type string_table,
            tbl_fields  type string_table,
            s_table type string_table,
            ls_table like line of s_table,
            ls like line of fields,
            lv_num_cols type i.
      data: lt_data type table of ZMYREC, "here
            ls_data like line of lt_data,
            lv_data type string.
      field-symbols: <wa_table> like line of s_table.
      wd_this->m_elem_file->get_attribute(
        exporting
          name =  `FILE`
        importing
          value = item_file ).
      convt = cl_abap_conv_in_ce=>create( input = item_file ).
      convt->read( importing data = s_cont ).
      "Column headers
      split s_cont at cl_abap_char_utilities=>cr_lf into table s_table.
      read table s_table into ls_table index 1.
      "Delete column header
      delete s_table index 1.
      split ls_table at cl_abap_char_utilities=>horizontal_tab into table fields.
      lv_num_cols = lines( fields ).
      refresh fields.
      loop at s_table assigning <wa_table>.
        split <wa_table> at cl_abap_char_utilities=>horizontal_tab into :
         ls_data-recordid
         ls_data-bstkd                                                                   
         ls_data-kunnr                                                                   
         ls_data-matnr                                                                   
         ls_data-candno                                                                  
         ls_data-fname                                                                   
         ls_data-inits                                                                   
         ls_data-lname                                                                   
         ls_data-gesch.                                                                   
         append ls_data to lt_data.
         clear ls_data.
      endloop.
    wd_this->m_node_data->bind_table(
       exporting
          new_items            = lt_data
          set_initial_elements = abap_true ).
    endmethod.
    I hope it helps.
    Thanx.

Maybe you are looking for

  • Since I downlaoded the latest update, I can no longer use Yahoo Messenger within firefox

    I was prompted to download the latest security update today, which I did. Since rebooting, although my yahoo messenger contacts appear on the web page, I am unable to open a dialog box to send IM's

  • HPUX-IA64 version for BOE XI 3.1 Sp2

    Hello: Can I get confirmation on whether HPUX-IA64 Specifically: B.11.31.0903   if it's supported for BOE XI 3.1 SP2 and SAP IK 3.1 SP2? I would like to use this version for our OS going forward and want to confirm. ============ HPUX11i-VSE-OE       

  • IB Error: Unable to read symbols from "UIKit" (not yet mapped into memory)

    I created a simple view program for iPhone, using IB to add a button and a label, once the button is clicked, the label text is changed. I am able to compile it fine, and ran it. The program/view showed up. But when I clicked on the button, the conso

  • Playlist sort order not carried to iTouch

    After upgrade to IOS 5, playlist (podcasts) sort order in iTunes on MBP is not maintained when syncing w/ iTouch.  No options on iTouch to sort. Thoughts or bug? Related...one podcast would not purge from iTouch via sync, so had to restore iTouch.  D

  • Aif recording not found

    I saved a live instrument on a garageband track. but when i wanted to listen to it again a window opend and said that the aif recording could not be found. is there anyway I can retrive the recording? I had saved it!