Skip to Content
0
Former Member
Jul 21, 2008 at 01:21 PM

Internal Table output in customer format ; write statement

915 Views

Hello All,

I need help in printing the O/P.

Currently the program is displaying ALV.

However I need the O/P to be displayed like.

FIELDANAME1;FIELDNAME2;FIELDNAME3;....FNZ.

VALUE1;VALUE2;VALUE3....VZ.

-


;---- ; -- ; -- ; -- ;....... ----;.

Code is below - Dynamically it will show the table contents

according to the tabel name.

&----


*& Report YREN_FIELDSDISPLAY

*&

&----


*&

*&

&----


REPORT YREN_FIELDSDISPLAY.

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 EQ 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 EQ 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 EQ 0.

MESSAGE i001(00) WITH 'No data found'.

LEAVE LIST-PROCESSING.

ENDIF.

END-OF-SELECTION.

CALL METHOD lcl_dynamic=>display.

Thanks,

Varun.