Skip to Content
0
Former Member
Apr 06, 2009 at 08:24 AM

Column Heading are not displayed in ALV Report using CL_SALV_DISPLAY?

2730 Views

Hi,

I am using CL_SALV_DISPLAY class to display data. I Created an Internal Table Dynamically based fieldcatalog which was prepared based data at run time. When i displayed data using CL_SALC_DISPALY data is display in output but column headings are not displayed.

can anyone suggest me how to display heading in ALV using CL_SALV_DISPLAY class, My code is

----


  • CLASS lcl_report DEFINITION

----


CLASS lcl_report DEFINITION.

PUBLIC SECTION.

METHODS:

display IMPORTING l_table TYPE string

l_fcat TYPE string.

ENDCLASS. "lcl_report DEFINITION

----


  • CLASS lcl_report IMPLEMENTATION

----


CLASS lcl_report IMPLEMENTATION.

METHOD display.

DATA: gr_table TYPE REF TO cl_salv_table.

DATA: gr_columns TYPE REF TO cl_salv_columns_table,

gr_column TYPE REF TO cl_salv_column_table,

ls_fcat TYPE slis_fieldcat_alv.

DATA: gr_display TYPE REF TO cl_salv_display_settings.

DATA: l_o_functions TYPE REF TO cl_salv_functions_list,

l_field TYPE string.

FIELD-SYMBOLS : <fs_table> TYPE STANDARD TABLE,

<ft_fcat> TYPE STANDARD TABLE.

  • Get the ALV object refering to the output table

ASSIGN (l_table) TO <fs_table>.

ASSIGN (l_fcat) TO <ft_fcat>.

TRY.

cl_salv_table=>factory(

IMPORTING

r_salv_table = gr_table

CHANGING

t_table = <fs_table> ).

CATCH cx_salv_msg. "#EC NO_HANDLER

ENDTRY.

  • Add basic default functionality in the ALV report

  • Functions

l_o_functions = gr_table->get_functions( ).

l_o_functions->set_all( abap_true ).

gr_columns = gr_table->get_columns( ).

gr_columns->set_headers_visible( abap_true ).

  • Display the list

gr_table->display( ).

ENDMETHOD. "extract

ENDCLASS. "lcl_report IMPLEMENTATION

&----


*& start-of-selection declaration

&----


START-OF-SELECTION.

PERFORM :

  • get store codes

get_storecodes USING p_stfile

CHANGING it_t001w,

  • fetching mard data

read_mard_data,

  • preparing fieldcatalog for Final Data

create_filedcat USING it_t001w

it_site

CHANGING it_fieldcat,

  • preparing structure & internal table for Final Data

create_final_table_structure USING it_fieldcat,

  • prepare output data

prepare_final_data.

&----


*& end-of-selection declaration

&----


END-OF-SELECTION.

PERFORM :

  • display data

display_data USING l_table

l_fcat.

&----


*& Form get_storecodes

&----


FORM get_storecodes USING p_p_stfile

CHANGING p_it_t001w LIKE it_t001w[].

DATA :

  • internal table for RAW

lt_raw TYPE truxs_t_text_data,

rs_site LIKE LINE OF rt_site,

l_index LIKE sy-tabix.

FIELD-SYMBOLS :

  • field symbol for it_t001w

<fs_t001w> LIKE LINE OF p_it_t001w.

  • calling function module to get Stores Data from File

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

EXPORTING

i_line_header = 'X'

i_tab_raw_data = lt_raw

i_filename = p_p_stfile

TABLES

i_tab_converted_data = p_it_t001w[]

EXCEPTIONS

conversion_failed = 1

OTHERS = 2.

IF sy-subrc <> 0.

EXIT.

ENDIF.

SORT p_it_t001w BY werks.

CLEAR rs_site.

rs_site-sign = 'I'.

rs_site-option = 'EQ'.

rs_site-low = p_dccode.

APPEND rs_site TO rt_site.

IF it_t001w[] IS NOT INITIAL.

LOOP AT p_it_t001w ASSIGNING <fs_t001w>.

l_index = sy-tabix.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = <fs_t001w>-werks

IMPORTING

output = <fs_t001w>-werks.

MODIFY p_it_t001w FROM <fs_t001w> INDEX l_index.

IF <fs_t001w>-werks GE s_site-low AND <fs_t001w>-werks LE s_site-high.

  • append site to ranges

CLEAR rs_site.

rs_site-sign = 'I'.

rs_site-option = 'EQ'.

rs_site-low = <fs_t001w>-werks.

APPEND rs_site TO rt_site.

CONTINUE.

ENDIF.

ENDLOOP.

SORT p_it_t001w BY werks.

SORT rt_site.

ENDIF.

ENDFORM. " get_storecodes

&----


*& Form create_final_table_structure

&----


FORM create_filedcat USING p_it_t001w LIKE it_t001w[]

p_it_site LIKE it_site[]

CHANGING p_it_fieldcat LIKE it_fieldcat[].

FIELD-SYMBOLS :

  • field symbol for p_it_t001w

<fs_t001w> LIKE LINE OF p_it_t001w,

  • field symbol for p_it_site

<fs_site> LIKE LINE OF p_it_site.

DATA :

  • fieldname

l_fieldname TYPE slis_fieldname,

  • workarea for site ranges

rs_site LIKE LINE OF rt_site.

CLEAR : l_fieldname, rs_site.

l_fieldname = p_dccode.

PERFORM

  • prepare fieldcatalog

build_fieldcatalog USING : 'MTART' 'CHAR' '5' ,

'MTBEZ' 'CHAR' '25' ,

'MATKL' 'CHAR' '6' ,

'WGBEZ' 'CHAR' '20' ,

'MATNR' 'CHAR' '18' ,

'MAKTX' 'CHAR' '30' ,

l_fieldname 'CHAR' '17' .

  • create header for excel

PERFORM create_excel_header USING : 'Division',

'Divsion Description',

'MC Code',

'MC Description',

'Article',

'Article Description',

l_fieldname.

  • loop for creating fieldcatalog

LOOP AT it_site ASSIGNING <fs_site>.

READ TABLE it_t001w ASSIGNING <fs_t001w> WITH KEY werks = <fs_site>-werks

BINARY SEARCH.

IF sy-subrc = 0 AND <fs_t001w> IS ASSIGNED AND

<fs_site> IS ASSIGNED AND <fs_site>-stock GT 0.

CLEAR : l_fieldname, rs_site.

l_fieldname = <fs_site>-werks.

  • prepare fieldcatalog

PERFORM build_fieldcatalog USING : l_fieldname 'CHAR' '17'.

  • create header for excel

PERFORM create_excel_header USING l_fieldname .

CONTINUE.

ENDIF.

ENDLOOP.

l_fcat = 'it_fieldcat[]'.

ENDFORM. " create_final_table_structure

&----


*& Form build_fieldcatalog

&----


FORM build_fieldcatalog USING p_fieldname TYPE slis_fieldname

p_datatype TYPE datatype_d

p_length TYPE intlen.

DATA : ls_fieldcat LIKE LINE OF it_fieldcat.

CLEAR : ls_fieldcat.

ls_fieldcat-fieldname = p_fieldname.

ls_fieldcat-datatype = p_datatype.

ls_fieldcat-intlen = p_length.

APPEND ls_fieldcat TO it_fieldcat.

ENDFORM. " build_fieldcatalog

&----


*& Form create_final_table_structure

&----


FORM create_final_table_structure USING p_it_fieldcat.

  • Create dynamic internal table and assign to FS

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fieldcat

IMPORTING

ep_table = t_table.

ASSIGN t_table->* TO <ft_final>.

ENDFORM. " create_final_table_structure

&----


*& Form create_excel_header

&----


FORM create_excel_header USING p_p_fieldname.

DATA : ls_header LIKE LINE OF it_header.

CLEAR ls_header.

ls_header-col_name = p_p_fieldname.

APPEND ls_header TO it_header.

ENDFORM. " create_excel_header

&----


*& Form prepare_final_data

&----


FORM prepare_final_data .

DATA : l_matnr LIKE g_matnr,

l_werks LIKE g_werks,

l_index LIKE sy-tabix.

FIELD-SYMBOLS : <fs_mard> LIKE LINE OF it_mard.

  • Getting No. of Lines in IT_MARD internal table

DESCRIBE TABLE it_mard LINES g_lines.

LOOP AT it_mard ASSIGNING <fs_mard>.

l_index = sy-tabix.

IF l_matnr IS INITIAL.

l_matnr = <fs_mard>-matnr.

CLEAR : l_werks.

l_werks = <fs_mard>-werks.

UNASSIGN : <fs_value>, <fs_final>.

  • Create dynamic work area and assign to FS

CREATE DATA t_line LIKE LINE OF <ft_final>.

ASSIGN t_line->* TO <fs_final>.

ASSIGN COMPONENT 'MATNR' OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_mard>-matnr.

ASSIGN COMPONENT l_werks OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_value> + <fs_mard>-labst.

  • getting Article Type,MC & its Descriptions

PERFORM get_other_data USING l_matnr

l_werks.

ELSEIF l_matnr <> <fs_mard>-matnr.

APPEND <fs_final> TO <ft_final>.

CLEAR l_matnr.

l_matnr = <fs_mard>-matnr.

CLEAR : l_werks.

l_werks = <fs_mard>-werks.

UNASSIGN : <fs_value>, <fs_final>.

  • Create dynamic work area and assign to FS

CREATE DATA t_line LIKE LINE OF <ft_final>.

ASSIGN t_line->* TO <fs_final>.

ASSIGN COMPONENT 'MATNR' OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_mard>-matnr.

ASSIGN COMPONENT l_werks OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_value> + <fs_mard>-labst.

  • getting Article Type,MC & its Descriptions

PERFORM get_other_data USING l_matnr

l_werks.

ELSE.

CLEAR : l_werks.

l_werks = <fs_mard>-werks.

ASSIGN COMPONENT l_werks OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_value> + <fs_mard>-labst.

ENDIF.

IF l_index = g_lines.

APPEND <fs_final> TO <ft_final>.

ENDIF.

ENDLOOP.

l_table = '<ft_final>[]'.

ENDFORM. " prepare_final_data

&----


*& Form get_other_data

&----


FORM get_other_data USING p_l_matnr

p_l_werks.

FIELD-SYMBOLS : <fs_mara> LIKE LINE OF it_mara,

<fs_t023t> LIKE LINE OF it_t023t,

<fs_t134t> LIKE LINE OF it_t134t,

<fs_makt> LIKE LINE OF it_makt.

READ TABLE it_mara ASSIGNING <fs_mara> WITH KEY matnr = p_l_matnr. " BINARY SEARCH.

IF sy-subrc = 0 AND <fs_mara> IS ASSIGNED.

ASSIGN COMPONENT 'MTART' OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_mara>-mtart.

ASSIGN COMPONENT 'MATKL' OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_mara>-matkl.

READ TABLE it_makt ASSIGNING <fs_makt> WITH KEY matnr = <fs_mara>-matnr BINARY SEARCH.

IF sy-subrc = 0 AND <fs_makt> IS ASSIGNED.

ASSIGN COMPONENT 'MAKTX' OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_makt>-maktx.

ENDIF.

READ TABLE it_t023t ASSIGNING <fs_t023t> WITH KEY matkl = <fs_mara>-matkl BINARY SEARCH.

IF sy-subrc = 0 AND <fs_t023t> IS ASSIGNED.

ASSIGN COMPONENT 'WGBEZ' OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_t023t>-wgbez.

ENDIF.

READ TABLE it_t134t ASSIGNING <fs_t134t> WITH KEY mtart = <fs_mara>-mtart BINARY SEARCH.

IF sy-subrc = 0 AND <fs_t134t> IS ASSIGNED.

ASSIGN COMPONENT 'MTBEZ' OF STRUCTURE <fs_final> TO <fs_value>.

<fs_value> = <fs_t134t>-mtbez.

ENDIF.

ENDIF.

ENDFORM. " get_other_data

&----


*& Form display_data

&----


  • text

----


FORM display_data USING p_l_table

p_l_fcat.

DATA:

  • Variable for Object Creation

o_report TYPE REF TO lcl_report.

CREATE OBJECT o_report.

o_report->display( EXPORTING l_table = p_l_table

l_fcat = p_l_fcat ).

ENDFORM. " display_data