‎2008 Jul 18 2:51 PM
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
‎2008 Jul 18 2:58 PM
*&---------------------------------------------------------------------*
*& 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.
‎2008 Jul 18 2:58 PM
*&---------------------------------------------------------------------*
*& 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.
‎2008 Jul 18 3:12 PM
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
‎2008 Jul 18 2:58 PM
hi check the programs..
DB_GET_TABLE_FIELDS
or DDIF_FIELDINFO_GET
‎2008 Jul 18 3:13 PM
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.