Dynamic table name - error

After run (or test) of procedure
create or replace procedure tmp_select_dymanic
( AInTable IN VARCHAR2,
ACount OUT NUMBER
) as
begin
EXECUTE IMMEDIATE 'BEGIN SELECT count(*) INTO :Count FROM :InTable END;'
USING ACount, AInTable;
end tmp_select_dymanic;
error message: invalid table name.
I know the table exists and contains data. I can make SELECT in SQL (not dynamic).
What a reason for error? May be privileges in database? But i make SELECT on my own table?
How can i set dynamic table name in other way?
My Oracle Version 10g.

What you are asking can be done by REF_CURSOR;
look this example and try your self the rest:
CREATE OR REPLACE PROCEDURE insert_to_table_dinamic (
   table1   IN   VARCHAR2,
   table2   IN   VARCHAR2
AS
   rc         sys_refcursor;
   v_sql      VARCHAR2 (2000);
   v_deptno   NUMBER;
BEGIN
   v_sql :=
         'SELECT DEPTNO FROM '
      || table1
      || ' WHERE ROWNUM = 1 AND DEPTNO IS NOT NULL';
   OPEN rc FOR v_sql;
   LOOP
      FETCH rc
       INTO v_deptno;
      EXIT WHEN rc%NOTFOUND;
      v_sql :=
            'UPDATE '
         || table2
         || ' SET DEPTNO = '
         || v_deptno
         || ' WHERE DEPTNO IS NULL';
      EXECUTE IMMEDIATE v_sql;
   END LOOP;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line (SQLCODE || SQLERRM);
END insert_to_table_dinamic;when i give DEPT , EMP as my 2 parameters above code will set the deptno in EMP table where deptno is null;
--Just a test proc.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

Similar Messages

  • How to set dynamic table name in sql query?

    I want set dynamic table name by parameter in sql query,just like:
    select * from :tbname
    but run report is error,BI P report table name is invalidation.
    What can i do? Thanks!

    Hi,
    that's only possible inside a data template with a lexical parameter.
    Regards
    Rainer

  • Problem with Dynamic Table Name

    Hello all,
    I am having trouble using a dynamic table name. I have the following code.....
    declare l_cur sys_refcursor;
    l_ID int;
    l_tableName varchar(30);
    BEGIN
    open l_cur for
    select hkc.ColumnID, mapping from &HKAPPDB_Schema_Name..doctablemapping ddm
    inner join &HKDB_Schema_Name..HKColumns hkc on hkc.doctablemappingid = ddm.id
    where ddm.id > 0;
    LOOP
         FETCH l_cur into l_ID, l_tableName;
         EXIT WHEN l_cur%notfound;
         -- update missing VerbID in DocumentDocMapping table
         UPDATE &HKAPPDB_Schema_Name..IndexedDocument
         SET VerbID = (SELECT t.VerbID
                             FROM (SELECT DocRef, VerbID, DateUpdated
                                  FROM &HKAPPDB_Schema_Name..l_tableName dd        - this is where the dynamic table name is used
                                  WHERE dd.VerbID is not NULL))
         WHERE HKColumnID = l_ID AND VerbID is NULL;
    END loop;
    end;
    /When I try to execute this i get an error
    ORA-00942: table or view does not exist
    What am I doing wrong?
    Regards,
    Toby

    redeye wrote:
    I only started about 6 weeks ago, with no tutorials and learning it on the fly; Same here.. only my introduction was to a 12 node Oracle OPS cluster all those years ago.. and required a whole new mind set after using SQL-Server extensively. But it was fun. Still is. :-)
    but thats what you get when a company throws you in at the deep end with a ridiculous time constraint to migrate a whole MSSQL DB.Migrating SQL-Server to Oracle is not a simple thing. A lot of best practices in SQL-Server are absolutely worse practices in Oracle - they are that different. Simple example is lock escalation - an issue in SQL-Server. In Oracle, the concept of a lock being escalated into a page lock simply does not exist.
    In terms of getting the migration done as quickly and painlessly as possible I try to reuse all the logic as it appears in the MSSQL code - in this case it was using dynamic table names. I do not doubt that i am probably shooting myself in the foot in the long run.....As long as you do not splatter too much blood on us here.. not a problem :D
    Seriously though - just keep in mind that what works in SQL-Server may not work as well (or even at all) in Oracle. So do not hesitate to refactor (from design to code to SQL) mercilessly when you think it is warranted.

  • Invalid table name error ....

    Hi,
    I have written a function which takes table name dynamically and if column emp_id is null for more than 0 records then 1 is returned else 0 .
    My problem is when i compile iam getting invalid table name error .
    Below is my function :
    create or replace
    FUNCTION f_table ( tab_name in varchar2 ) return number is
    l_count number;
    begin
    select count(*) into l_count from tab_name where emp_id is null;
    if l_count >0 then
    return 1;
    else
    return 0;
    end if;
    end;
    Please help ...
    Thanks in advance ..

    Looks fine to me, you could use sign() for the last part:
    CREATE OR REPLACE FUNCTION f_table (tab_name IN VARCHAR2)
    RETURN NUMBER
    IS
      l_count NUMBER;
      v_sql VARCHAR2 (2000);
    BEGIN
      v_sql := 'SELECT COUNT (*) FROM ' || tab_name || ' WHERE emp_id IS NULL';
      EXECUTE IMMEDIATE v_sql
      INTO l_count;
      RETURN sign(l_count);
    END;And if you have large tables, you could consider not counting it all, and do something like this:
    CREATE OR REPLACE FUNCTION f_table (tab_name IN VARCHAR2)
    RETURN NUMBER
    IS
      l_count NUMBER;
      v_sql VARCHAR2 (2000);
    BEGIN
      v_sql := 'SELECT COUNT (*) FROM ' || tab_name || ' WHERE emp_id IS NULL AND rownum = 1';
      EXECUTE IMMEDIATE v_sql
      INTO l_count;
      RETURN l_count;
    END;Regards
    Peter

  • Dynamic Table name in Inner Join in  4.6c

    data: tab1(10) type c value 'MARA',
            tab2(10) type c value 'MAKT'.
    data: dbtab1(10) type c,
             dbtab2(10) type c .
    dbtab1 = tab1. 
    dbtab2 = tab2. 
    DATA: BEGIN OF itab occurs 0,
               matnr TYPE mara-matnr,
               maktx type makt-maktx,
    END OF itab.
    DATA: column_syntax TYPE string,
                dbtab_syntax TYPE string.
    PARAMETERS: p_matnr TYPE mara-matnr.
    dbtab_syntax = '( (dbtab1) AS t1 '
    &' INNER JOIN (dbtab2) AS t4 ON t1MATNR = t4MATNR )'.
    SELECT  matnr maktx
    FROM (dbtab_syntax)
    INTO TABLE itab  WHERE t4~matnr   = p_matnr.
    Got the following error:
    "A table name, specified in an SQL command, is unknown"
    It seems not able to read dynamic table name in dbtab_syntax.
    thanks
    anya
    Moderation Message: Duplicate Post.
    Edited by: kishan P on Nov 29, 2010 11:17 AM

    Hi,
    Check this link.
    [http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb39c4358411d1829f0000e829fbfe/frameset.htm]
    [Re: accessing dynamic internal table's fields??;
    hope it'll help u.
    Regards,
    Sneha.
    Edited by: sneha kumari on Jun 18, 2009 1:57 PM

  • Passing dynamic table name in ADO. net destination

    I am new to SSIS and I have a requirement where i need to pass dynamic table name in ADO .net destination .
    My package contains an "Execute Sql task" in the control flow which computes the destination table name to be provided at run time and stores it in a variable expression
    "@[User::Table_name]"(which has a scope of full package). 
    Now, the problem I'm facing right now is that , I am unable to use this variable expression in the ADO .Net Destination .
    I need to pass this variable expression as the table name in ado .net destination.
    But, whenever I use this variable in place as the table name I keep on getting this error and my package fails:- 
    [ADO NET Destination [403]] Error: The Table or View name is not expected. \n\t If you are quoting the table name, please use the prefix " and the suffix " of your selected data provider for quotation. \n\t If you are using multipart name,
    please use at most three parts for the table name. 
    Although ,I am able to run my package when i am providing the existing(static) table name.So there is nothing wrong with the  package.
    Tried a lot of things still not working..Please help...

    I am having the result stored in the variable expression . I just need a way to be able to use it as the Destination table in ADO .net Destination.
    I am not sure if this will work for you, but I am able to store the table name in variable and use it dynamically (via data flow task expression property ) as shown.
    Thanks, hsbal
    Hi Adeep,
    Based on my further research, just as hsbal said, we can set a variable as ADO.NET Destination table via Expressions property in Data Flow Task.
    If there are any other questions, please feel free to ask.
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • Dynamic table name from Arguments in cfquery /

    I'm trying to use dynamic table names in a cfc but seem to
    have hit upon a wall as my calling methods from flash keep hitting
    my _error methods - Code attached to show what I'm trying to
    achieve; if anyone can give me some pointers it would be a great
    help. I've seen numerous by using the Form with the arguments but
    this is coming into a gateway used by a flash component and doesn't
    work no matter how much I fiddle the code.
    Thanks in advance

    There was a time when I needed a dynamic query such as this.
    BUT, it is very dangerous, which is why I took a few steps to make
    it more secure.
    1. Always use cfqueryparam and strict datatyping
    2. Use listFindNoCase for known table names in the database
    e.g
    <cfset variables.tableNames =
    "items,products,categories,blog" />
    <cfif
    listContainsNoCase(variables.tableNames,lCase(trim(arguments.tableName)),",")>
    query here
    <cfelse>
    Error: Unknown table requested
    </cfif>
    Mikey

  • Select * from {tablename}  : invalid table name error

    Hi,
    I want to get data from a table and the table should be passed at runtime from selecting a table from the drop down list.In case of insertion of values I am getting no errors.But when I pass the table name as an argument I am getting invalid table name error.I think there is any syntax errors.I appreciate any help.
    Regards,
    Sivaram

    you cannot use parameter for table name in PreparedStatement.
    you can either generate the sql dynamically, such as String sql="select * from "+tablename, or you can check whether the database vendor has special api for this.

  • (Urgent) Dynamic Table Name

    Hi Fellows,
    Can I use dynamic table name in a loop? I have a problem that I want to use variable table in a cursor for example
    procedure check_rows as
    cursor c1 is
    select view_name
    from user_views;
    v_count number;
    v_view_name varchar2(35);
    begin
    for i in c1 loop
    select count(*)
    into v_count
    from i.view_name;
    if v_count = 0 THEN
    dbms_output.put_line ('The View '&#0124; &#0124;i.view_name&#0124; &#0124;' has no rows');
    end if;
    end loop;
    end;
    but i receive a message
    i.view_name must a name of a table to which the user has access.
    Can anybody solve my problem.
    Thanks in advance
    Mustafa

    Here is some codes I wrote with DBMS_SQL. I hope it will help you to start.
    PROCEDURE Get_record(p_select IN OUT select_rec, where_str IN OUT varchar2) IS
    my_keyblk varchar2(6);
    veh_id integer;
    ser_date date;
    succ_flag number;
    blk_route varchar2(4);
    blk_run integer;
    my_date_type integer;
    cur_blk_route INTEGER;
    rows_processed INTEGER;
    ignore integer;
    select_str varchar2(3000);
    First_date date;
    Last_date date;
    BEGIN
    begin
    select start_date, end_date into first_date, Last_date from change_date
    where current_next_code = 'CURRENT';
    exception when others then
    null;
    end;
    select_str := 'select keyblock, keycoach, proflag, pullout_date
    from logblock
    where (pullout_date between first_date and Last_date)
    and proflag = 0';
    cur_blk_route := dbms_sql.open_cursor;
    dbms_sql.parse(cur_blk_route, select_str, dbms_sql.v7);
    dbms_sql.define_column(cur_blk_route, 1, blk_route, 6);
    dbms_sql.define_column(cur_blk_route, 2, blk_run);
    dbms_sql.define_column(cur_blk_route, 3, veh_id);
    dbms_sql.define_column(cur_blk_route, 4, ser_date);
    ignore := dbms_sql.execute(cur_blk_route);
    LOOP
    if (dbms_sql.fetch_rows(cur_blk_route) > 0) then
    dbms_sql.column_value(cur_blk_route, 1, blk_route);
    dbms_sql.column_value(cur_blk_route, 2, blk_run);
    dbms_sql.column_value(cur_blk_route, 3, veh_id);
    dbms_sql.column_value(cur_blk_route, 4, ser_date);
    else
    dbms_output.put_line('ERROR ');
    end if;
    END LOOP;
    dbms_sql.close_cursor(cur_blk_route);
    END Get_record;
    end apc_block_assign;
    null

  • Data model with a dynamic table name

    Hi,
    I have report requirement, where in the table name in the data model query is unknown.So I use lexical parameter like " select * from &P_TABLE_NAME". This dynamic table is created and data populated in the before report trigger and table name is assigned to P_TABLE_NAME. The parameter P_TABLE_NAME has to be assigned an initial value otherwise the report errors with 'invalid table name' error. So I give a dummy table say 'DUMMY' as the initial value which has the same structure (with no data ) as the table that is being created in the before report trigger.
    The problem is that the data model query is being parsed ( and maybe executed ) even before the 'before report' trigger is run. As a result, the report o/p is empty, since the query used the DUMMY table for execution. But after the report completes, I can see the dynamic table being created with data.
    Question: Why is the before report trigger getting executed after the datamodel query is parsed and executed.
    Regards,
    Suresh

    Hi....
    yes, these are the settings I have:
    server folder: /Applications/MAMP/htdocs/dwphpelclasico
    web url:  http://localhost/dwphpelclasico/
    They should be correct. But I still get the message:
    Warning:  require_once(Connections/elclasico.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/dwphpelclasico/list.php on line 1
    Could it be something with list.php?
    This is a new file I created to display my tableand  where I am inserted the record set.
    thanks

  • Dynamic table name in an inner join - select statement

    Hi,
    Please can you let me know if is possible to use a Dynamic table name in an inner join?
    Something like the statement below? (It works in a simple select statement but not in an inner join)
    SELECT  *
         INTO CORRESPONDING FIELDS OF <t_itab>
          FROM <Dynamic table name> INNER JOIN pa0050 ON
          ( <Dynamic table name>pernr =  pa0050pernr )
           WHERE <Dynamic table name>~pernr = it_pernr-l_pernr
           AND pa0050~bdegr = f_bdegr.
    Any help would be apprecited very much.
    Thanks & Regards.

    Hi,
    Check this link.
    [http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb39c4358411d1829f0000e829fbfe/frameset.htm]
    [Re: accessing dynamic internal table's fields??;
    hope it'll help u.
    Regards,
    Sneha.
    Edited by: sneha kumari on Jun 18, 2009 1:57 PM

  • Dynamic table name in native SQL

    Hi,
    How can i use dynamic table name in native SQL?
    My req is to select data from a external database table , but the table name will be only poulated during runtime.
    How can i acheive this?
    Regards,
    Arun.

    It should work OK - see demo below.
    Jonathan
    report zsdn_jc_adbc_test.
    start-of-selection.
      perform demo_lookup.
    form demo_lookup.
      data:
        l_error_msg          type string,
        ls_t001              type t001, "Company
        ls_t003              type t003. "Doc types
      perform dynamic_lookup
        using
          'T001'
        changing
          ls_t001
          l_error_msg.
      write: / l_error_msg.
      perform dynamic_lookup
        using
          'T003'
        changing
          ls_t003
          l_error_msg.
      write: / l_error_msg.
    endform.
    form dynamic_lookup
      using
        i_tabname            type tabname
      changing
        os_data              type any
        o_error_msg          type string.
    * Use ADBC to select data
      data:
        l_mandt_ref          type ref to data,
        l_result_ref         type ref to data,
        l_mandt              type symandt,
        l_tabname            type tabname,
        l_sql_statement      type string,
        lo_cx_root           type ref to cx_root,
        lo_cx_sql            type ref to cx_sql_exception,
        lo_connection        type ref to cl_sql_connection,
        lo_statement         type ref to cl_sql_statement,
        lo_result_set        type ref to cl_sql_result_set.
      clear: os_data, o_error_msg.
      get reference of l_mandt into l_mandt_ref.
      get reference of os_data into l_result_ref.
      l_mandt   = '222'.   "i.e. select from client 222
      l_tabname = i_tabname.
      try.
          lo_connection = cl_sql_connection=>get_connection( ).
          lo_statement  = lo_connection->create_statement( ).
    * Set criteria for select:
          lo_statement->set_param( l_mandt_ref ).
          concatenate
            'select * from' l_tabname
            'where mandt = ?'
            into l_sql_statement separated by space.
    * Execute
          call method lo_statement->execute_query
            exporting
              statement   = l_sql_statement
              hold_cursor = space
            receiving
              result_set  = lo_result_set.
    * Get the data from the resultset.
          lo_result_set->set_param_struct( l_result_ref ).
          while lo_result_set->next( ) > 0.
            write: / os_data.
          endwhile.
    * Tidy up:
          lo_result_set->close( ).
          lo_connection->close( ).
        catch cx_sql_exception into lo_cx_sql.
          o_error_msg = lo_cx_sql->get_text( ).
        catch cx_root into lo_cx_root.
          o_error_msg = lo_cx_root->get_text( ).
      endtry.
    endform.

  • Dynamic table name in native sql query

    Can i pass a dynamic table name in this query ---
                EXEC SQL PERFORMING APPEND_MTO.
                  SELECT          
                               LTOG_QUANTITY_TYPE,
                               FCONO,
                              WBSELEMENT,
                             PROJECT
                  INTO   :IMTO
                  FROM  RWORKS.MTO_ISO_V2
                  WHERE LTOD_DATE > TO_DATE(:MAXD,'YYYYMMDDHH24MISS')
                ENDEXEC.
    How can i pass this table name RWORKS.MTO_ISO_V2  dynamically in the query
    Edited by: Madhukar Shetty on Nov 26, 2009 2:40 PM

    Can i pass a dynamic table name in this query ---
                EXEC SQL PERFORMING APPEND_MTO.
                  SELECT          
                               LTOG_QUANTITY_TYPE,
                               FCONO,
                              WBSELEMENT,
                             PROJECT
                  INTO   :IMTO
                  FROM  RWORKS.MTO_ISO_V2
                  WHERE LTOD_DATE > TO_DATE(:MAXD,'YYYYMMDDHH24MISS')
                ENDEXEC.
    How can i pass this table name RWORKS.MTO_ISO_V2  dynamically in the query
    Edited by: Madhukar Shetty on Nov 26, 2009 2:40 PM

  • Dynamic table runtime error

    Hi everyone.
    We are working on upgrading from 4.6c to ECC 6.0 and I've run into a programming problem.
    I have a class that I use to convert any internal table based on a dictionary structure to a comma-separated text file.  For the most part, I use the dynamic table techniques that are easy to find here and in other code forums.
    In 6.0 I can not get it to work.  The value assignment of the input table to the field-symbol for the dynamic table causes a "OBJECTS_TABLES_NOT_COMPATIBLE" runtime error.  So far what I can find on this error specific to dynamic tables is related to BW and/or PI.  And I can't seem to find any alternative ways of dealing with dynamic tables.  In debug I can see that decimal number fields in the dynamic table have a different length than what's in the dictionary.
    Any help or ideas would be greately appreciated.
    Here is part of the method that converts the itab to an dynamic internal table, then creates a csv record for each record (I've hilighted the line that causes the dump) :
    Get the structure of the table.
      ref_table_des ?=
          cl_abap_typedescr=>describe_by_name( i_structure ).
      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.
    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>.
    put data into the dynamic table
    <dyn_table> = it_data[].    "<<==the runtime error happens on this line
      loop at <dyn_table> into <dyn_wa>.
        clear: l_fdata, l_data.
        do.
          l_index = sy-index.
          assign component l_index
             of structure <dyn_wa> to <dyn_field>.
          if sy-subrc <> 0.
            exit.
          endif.
          read table ifc into xfc index l_index.
          if xfc-inttype = 'D'.
    *etc...
    Thank you,
    - George

    Hi,
    For Dynamic internal table.u check SM30 Transaction.ther is one simple way to find the code in debugging.
    if not possible i will send code which is relatd to dynamic table .
    *&      Form  get_table_structure
    *       Get structure of an SAP table
    form get_table_structure.
      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.
    endform.                    "get_table_structure
    *&      Form  create_itab_dynamically
    *   Create internal table dynamically
    form create_itab_dynamically.
    * 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>.
    endform.                    "create_itab_dynamically
    Edited by: subrahmanyam24 on Nov 18, 2010 5:12 AM
    Edited by: subrahmanyam24 on Nov 18, 2010 5:15 AM

  • Dynamic table name, how to query?

    Hi!
    There is a table name that is decided dynamically. the name is:
    someNameYYY where YYY denotes the client number.
    I get the client number by sy-mandt and concatenate it with someNameYYY to lc_table_name but then comes the problem:
    I cannot do
    SELECT *
    FROM  lc_table_name
    because I get compiler error "lc_table_name" is not defined in ABAP dictionary.
    How do I query a table with the name decided dynamically?
    regards
    Baran

    You can have do something like this :
    REPORT ZTABLE_DOWNLOAD .
    tables :
    dd02l,    "SAP Tables
    dd03l,    "Table fields
    dd04t.    "R/3 DD: Data element texts
    constants : c_activation_status(1)  value 'A',
               c_tabclass(6) type c    value 'INTTAB',
               c_language(2) type c    value 'EN'.
    type-pools : slis.
    selection-screen begin of block b1 with frame title text-003.
    *parameters :p_mandt like t001-mandt obligatory default '560'.
    parameters :p_table like dd03l-tabname obligatory.
    selection-screen end of block b1.
    data:
    table_desc(70) type c,
    table_field like dd03l-fieldname,
    total_rows type i,
    t_rows(20) type c.
    field-symbols:
    <fs_line> type any,
    <fs_field> type any.
    at selection-screen.
    *Check for the existence of the table
    select single * from dd02l where tabname  = p_table
                                and   as4local = c_activation_status.
    if sy-subrc ne 0.
    *Table is not active in dictionary
       message e999(zs) with 'Table is not active in dictionary'.
    elseif dd02l-tabclass = c_tabclass.
    *It is a structure not a table
       message e999(zs) with 'This is a structure not a table'.
    endif.
    start-of-selection.
    perform table_data_display.
    end-of-selection.
    form table_data_display.
    data:
    l_long_type type i,
    lx_struct   type ref to data,
    lt_table    type ref to data,
    lcl_sdescr  type ref to cl_abap_structdescr,
    lx_lvc_cat  type lvc_s_fcat,
    lt_lvc_cat  type lvc_t_fcat,         "Field catalog
    lx_fieldcat type slis_fieldcat_alv,
    lt_fieldcat type slis_t_fieldcat_alv,
    lx_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_table>    type table,
    <fs>          type any,
    <components>  type abap_compdescr.
    *Dynamic creation of a structure
    create data lx_struct type (p_table).
    assign lx_struct->* to <fs>.
    *Get the field structure
    lcl_sdescr ?= cl_abap_typedescr=>describe_by_data( <fs> ).
    loop at lcl_sdescr->components assigning <components>.
    *Do not display field "MANDT"
       IF sy-tabix = 1 AND <components>-name = 'MANDT'.
         CONTINUE. "next loop
       ENDIF.
    *Build fieldcatalog
       lx_lvc_cat-fieldname = <components>-name.
       lx_lvc_cat-ref_table = p_table.
       append lx_lvc_cat to lt_lvc_cat.
       lx_fieldcat-fieldname   = <components>-name.
       lx_fieldcat-ref_tabname = p_table.
       append lx_fieldcat to lt_fieldcat.
    endloop.
    *Create an internal table
    call method cl_alv_table_create=>create_dynamic_table
    exporting it_fieldcatalog = lt_lvc_cat
    importing ep_table        = lt_table.
    assign lt_table->* to <lt_table>.
    *Read the data
        select * from (p_table)
       into corresponding fields of table <lt_table>
       order by primary key.
      loop at <lt_table> assigning <fs_line>.
      assign component 'MANDT' of
             structure <fs_line> to <fs_field>.
          <fs_field> = p_mandt.
      endloop.
    if <lt_table>[] is initial.
    *No table enties are existing
       message e003(zdynamictable) with p_table.
       exit.
    else.
       describe table <lt_table>[] lines total_rows.
       t_rows = total_rows.
       shift t_rows left deleting leading space.
    endif.
    *Specify the layout
    lx_layout-zebra = 'X'.
    lx_layout-colwidth_optimize = 'X'.
    *Display the ALV List
    select single ddtext into table_desc from dd02t
    where tabname eq p_table and ddlanguage eq c_language.
    check not table_desc is initial.
    concatenate  'Entries from table:'
    p_table '(' table_desc ')' '-:' t_rows 'Entries Found' into
    table_desc
    separated by space.
    *Start - Download the data to excel sheet by validating the file path.
    data:
    *lv_filename type string,
    lv_fname_validate like rlgrap-filename.
    *CONCATENATE 'C:\ZTABLE_DWN\' P_TABLE '.Xls' INTO LV_FILENAME.
    *CONCATENATE '
    Pc-p31061\Harman\Tasks\ZTABLE_DWN\' P_TABLE '.xls' INTO
    CONCATENATE 'C:\ZTABLE_DWN\' P_TABLE '.xls' INTO
    LV_FNAME_VALIDATE.
    call function 'WS_FILE_DELETE'
    exporting
       file          = lv_fname_validate
    IMPORTING
      RETURN        =
    CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
      BIN_FILESIZE                  = ' '
      CODEPAGE                      = ' '
      FILENAME                      =  LV_FNAME_VALIDATE
      FILETYPE                      = 'DAT'
    IMPORTING
      FILELENGTH                    =
    TABLES
       DATA_TAB                      = <lt_table>.
    *call function 'GUI_DOWNLOAD'
    exporting
      BIN_FILESIZE                  =
       filename                      = lv_fname_validate
      filetype                      = 'ASC'
      write_field_separator           =  'X'
    IMPORTING
      FILELENGTH                    =
    tables
       data_tab                      = <lt_table>.
    End of Download.
    call function 'REUSE_ALV_GRID_DISPLAY'
      exporting
        i_background_id                   = 'ALV_BACKGROUND'
        i_grid_title                      = table_desc
        is_layout                         = lx_layout
        it_fieldcat                       = lt_fieldcat
       tables
         t_outtab                          = <lt_table>
      exceptions
        program_error                     = 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.
    clear table_desc.
    endform.                    " table_data_display

Maybe you are looking for

  • How can I use an iPhone 4S with a device which is made for an iphone5?

    I own an iPhone 4S and an iPod, I just purchased an alarm clock which has a sync adapter made for the new iphone 5 which has a different size sync. Is their anything I can buy that will allow the two devices to work together or do I need to return th

  • How do i remove an offer for a free subscription to a magazine?

    How do I remove an offer for a "free" subscription to a magazine that was offered on my ipad? There is no "option" except to subscribe. It wont go away.

  • Opening Linked Excel OLE Objects in Forms 6i

    Hi, I have a linked Excel OLE object which is populating properly into an OLE container. However, I cannot open the file to save a local copy, as I would a non-linked Excel OLE object. If I right-click on the linked OLE object choose copy, I can past

  • Java access to the Windows Address Book

    Does anyone know of a way to access the Windows Address Book from within Java? I would assume that it's not built in, since it wouldn't be a very mobile feature, but I'm not after mobility here. --Ioeth                                                

  • Netra t1 105 keeps going into init 0 everynight without reason

    I have Solaris 9 installed on a netra t1 105 which goes into half every night. I have turned off the power management and the logs in /var/adm/messages does not show anything unusual. <div class="pre"><pre>Oct 19 14:16:25 dev-sol9 pseudo: [ID 129642