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

Dynamic Internal Table

Former Member
0 Likes
597

Hello All,

I am developing a report in which i need to write an include program or a subroutine will also be fine .

the requirement of that include and it shud be an independent program as well..

1. I need to give the table name in the input.

2. An o/p shud be dispalyed or doownlaoded with

header line containing field names.

3. values.

4. header liens and values of the table that we are getting displayed shud be seperated by a ;( semicolon ).

can anyone help me in this..?

Thanks,

Varun

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
575


*&---------------------------------------------------------------------*
*& Report  ZDYNAMIC_ALV
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zdynamic_alv.

FIELD-SYMBOLS:
<f_tab1> TYPE STANDARD TABLE.

PARAMETERS:
p_tname TYPE tabname16 OBLIGATORY, " DEFAULT 'MARA' ,
p_rows(5) TYPE c DEFAULT '200'.
*----------------------------------------------------------------------*
*       CLASS lcl_dynamic DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_dynamic DEFINITION CREATE PRIVATE.
  PUBLIC SECTION.
    CLASS-METHODS:
    check_selection
     EXCEPTIONS invalid_table,
    main
     EXCEPTIONS no_data_found,
    display.

  PRIVATE SECTION.

    TYPE-POOLS: abap.

    CLASS-DATA: tab TYPE REF TO cl_abap_structdescr,
          wa_tab TYPE REF TO cl_abap_structdescr,
          comp_tab   TYPE cl_abap_structdescr=>component_table,
          i_tab TYPE REF TO cl_abap_tabledescr,
          i_table TYPE REF TO data.
ENDCLASS.                    "lcl_dynamic DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_dynamic IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_dynamic IMPLEMENTATION.
  METHOD check_selection.

    SELECT COUNT( * )
      FROM dd02l
      WHERE tabname  = p_tname
      AND   as4local = 'A'
      AND   tabclass = 'TRANSP'.
    IF sy-subrc <> 0.
      RAISE invalid_table.
    ENDIF.

  ENDMETHOD.                    "check_selection
  METHOD main.
    tab ?= cl_abap_typedescr=>describe_by_name( p_tname ).
    comp_tab = tab->get_components( ).
    wa_tab  = cl_abap_structdescr=>create( comp_tab ).
    i_tab   = cl_abap_tabledescr=>create( wa_tab ).
    CREATE DATA i_table TYPE HANDLE i_tab.
    ASSIGN i_table->* TO <f_tab1>.
    IF p_rows IS INITIAL.
      p_rows = '50000'.
    ENDIF.

*Get data
    SELECT * FROM (p_tname)
    INTO TABLE <f_tab1>
    UP TO p_rows ROWS.

    IF sy-subrc <> 0.
      RAISE no_data_found.
    ENDIF.
  ENDMETHOD.                    "main
  METHOD display.
    SET TITLEBAR sy-title
    OF PROGRAM sy-cprog
    WITH 'Display table:' p_tname.

    DATA:
    l_gr_alv TYPE REF TO cl_salv_table,
    l_gr_functions TYPE REF TO cl_salv_functions.

    TRY.
        CALL METHOD cl_salv_table=>factory
          IMPORTING
            r_salv_table = l_gr_alv
          CHANGING
            t_table      = <f_tab1>.
      CATCH cx_salv_msg .   "#EC NO_HANDLER
    ENDTRY.
    l_gr_functions = l_gr_alv->get_functions( ).
    l_gr_functions->set_all( abap_true ).
    l_gr_alv->display( ).
  ENDMETHOD.                    "display
ENDCLASS.                    "lcl_dynamic IMPLEMENTATION

AT SELECTION-SCREEN.
  CALL METHOD lcl_dynamic=>check_selection
    EXCEPTIONS
      invalid_table = 1.
  IF sy-subrc <> 0.
    MESSAGE e001(00) WITH
    p_tname ' is not a Transparant Table'.
  ENDIF.

START-OF-SELECTION.

  CALL METHOD lcl_dynamic=>main
    EXCEPTIONS
      no_data_found = 1.
  IF sy-subrc <> 0.
    MESSAGE i001(00) WITH 'No data found'.
    LEAVE LIST-PROCESSING.
  ENDIF.


END-OF-SELECTION.

  CALL METHOD lcl_dynamic=>display.


4 REPLIES 4
Read only

Former Member
0 Likes
576


*&---------------------------------------------------------------------*
*& Report  ZDYNAMIC_ALV
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zdynamic_alv.

FIELD-SYMBOLS:
<f_tab1> TYPE STANDARD TABLE.

PARAMETERS:
p_tname TYPE tabname16 OBLIGATORY, " DEFAULT 'MARA' ,
p_rows(5) TYPE c DEFAULT '200'.
*----------------------------------------------------------------------*
*       CLASS lcl_dynamic DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_dynamic DEFINITION CREATE PRIVATE.
  PUBLIC SECTION.
    CLASS-METHODS:
    check_selection
     EXCEPTIONS invalid_table,
    main
     EXCEPTIONS no_data_found,
    display.

  PRIVATE SECTION.

    TYPE-POOLS: abap.

    CLASS-DATA: tab TYPE REF TO cl_abap_structdescr,
          wa_tab TYPE REF TO cl_abap_structdescr,
          comp_tab   TYPE cl_abap_structdescr=>component_table,
          i_tab TYPE REF TO cl_abap_tabledescr,
          i_table TYPE REF TO data.
ENDCLASS.                    "lcl_dynamic DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_dynamic IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_dynamic IMPLEMENTATION.
  METHOD check_selection.

    SELECT COUNT( * )
      FROM dd02l
      WHERE tabname  = p_tname
      AND   as4local = 'A'
      AND   tabclass = 'TRANSP'.
    IF sy-subrc <> 0.
      RAISE invalid_table.
    ENDIF.

  ENDMETHOD.                    "check_selection
  METHOD main.
    tab ?= cl_abap_typedescr=>describe_by_name( p_tname ).
    comp_tab = tab->get_components( ).
    wa_tab  = cl_abap_structdescr=>create( comp_tab ).
    i_tab   = cl_abap_tabledescr=>create( wa_tab ).
    CREATE DATA i_table TYPE HANDLE i_tab.
    ASSIGN i_table->* TO <f_tab1>.
    IF p_rows IS INITIAL.
      p_rows = '50000'.
    ENDIF.

*Get data
    SELECT * FROM (p_tname)
    INTO TABLE <f_tab1>
    UP TO p_rows ROWS.

    IF sy-subrc <> 0.
      RAISE no_data_found.
    ENDIF.
  ENDMETHOD.                    "main
  METHOD display.
    SET TITLEBAR sy-title
    OF PROGRAM sy-cprog
    WITH 'Display table:' p_tname.

    DATA:
    l_gr_alv TYPE REF TO cl_salv_table,
    l_gr_functions TYPE REF TO cl_salv_functions.

    TRY.
        CALL METHOD cl_salv_table=>factory
          IMPORTING
            r_salv_table = l_gr_alv
          CHANGING
            t_table      = <f_tab1>.
      CATCH cx_salv_msg .   "#EC NO_HANDLER
    ENDTRY.
    l_gr_functions = l_gr_alv->get_functions( ).
    l_gr_functions->set_all( abap_true ).
    l_gr_alv->display( ).
  ENDMETHOD.                    "display
ENDCLASS.                    "lcl_dynamic IMPLEMENTATION

AT SELECTION-SCREEN.
  CALL METHOD lcl_dynamic=>check_selection
    EXCEPTIONS
      invalid_table = 1.
  IF sy-subrc <> 0.
    MESSAGE e001(00) WITH
    p_tname ' is not a Transparant Table'.
  ENDIF.

START-OF-SELECTION.

  CALL METHOD lcl_dynamic=>main
    EXCEPTIONS
      no_data_found = 1.
  IF sy-subrc <> 0.
    MESSAGE i001(00) WITH 'No data found'.
    LEAVE LIST-PROCESSING.
  ENDIF.


END-OF-SELECTION.

  CALL METHOD lcl_dynamic=>display.


Read only

0 Likes
575

Hello Boss,

This code is working partially..

but it is not retreiving all the rows..if i remove that 200 from

second paramter..

could u please help me..?

Thanks,

Varun

Read only

Former Member
0 Likes
575

hi check the programs..

DB_GET_TABLE_FIELDS

or DDIF_FIELDINFO_GET

Read only

0 Likes
575

Hello ,

I am not able to see the programs..in my server..

i m using the above code in BW system.

Please paste teh code or please suggest any othe rmethods.

Thanks,

Varun.