‎2008 Mar 06 5:57 AM
Hi
I have created a report and it gets displayed in ALV. My requirement was to put the whole code in a function module, including the ALV functionality...I have put the same..the problem is that I am not able to see the TOP-OF-PAGE..
I am putting a sample code of what exactly I did in the function module..let me know what needs to be done..
FUNCTION ZAZTEST.
*"----
""Local Interface:
*" IMPORTING
*" REFERENCE(GV_REPID) TYPE SY-REPID
*" TABLES
*" S_KUNNR STRUCTURE JITO_KUNNR_RANGE
*"----
perform sub_get_customers tables s_kunnr
changing gt_kna1.
perform sub_prepare_fieldcatalog using :
'KUNNR' 'Customer No' '10' 'GT_KNA1' space space changing gt_fieldcat,
'NAME1' 'Name' '35' 'GT_KNA1' space space changing gt_fieldcat,
'LAND1' 'Country' '4' 'GT_KNA1' space space changing gt_fieldcat,
'ORT01' 'City' '35' 'GT_KNA1' space space changing gt_fieldcat.
perform sub_build_alv_events changing gt_events.
perform sub_comment_build tables s_kunnr changing gt_list_top_of_page.
PERFORM sub_display using gv_repid gt_fieldcat gt_events gt_kna1.
ENDFUNCTION.
form sub_get_customers tables p_kunnr structure JITO_KUNNR_RANGE
changing p_it_kna1 type tt_kna1.
select kunnr name1 land1 ort01
from kna1
into table p_it_kna1
where kunnr in p_kunnr.
if sy-subrc eq 0.
sort p_it_kna1 by kunnr.
endif.
endform.
*&----
------
Prepare Field Catalog
*----
------
-->lv_F fieldname
-->lv_D column Description
-->lv_L Output length
-->lv_T Tablename
--lv_A Reference table name
--lv_B Reference Field Name
*----
------
FORM sub_prepare_fieldcatalog using value(lv_f)
value(lv_d)
value(lv_t)
value(lv_l)
value(lv_a)
value(lv_b)
changing pt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gs_fieldcat TYPE slis_fieldcat_alv.
gs_fieldcat-fieldname = lv_f.
gs_fieldcat-seltext_m = lv_d.
gs_fieldcat-tabname = lv_t.
gs_fieldcat-outputlen = lv_l.
gs_fieldcat-ref_tabname = lv_a.
gs_fieldcat-ref_fieldname = lv_b.
APPEND gs_fieldcat TO Pt_fieldcat.
CLEAR gs_fieldcat.
ENDFORM. "sub_prepare_fieldcatalog
*&----
*------
*& Form sub_build_alv_events
*&----
FORM sub_build_alv_events CHANGING PT_EVENTS TYPE slis_t_event.
DATA: ls_index TYPE sy-tabix,
GS_EVENTS TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = Pt_events[]
EXCEPTIONS
list_type_wrong = 0
OTHERS = 0.
READ TABLE Pt_events
INTO gs_events
WITH KEY name = slis_ev_top_of_page
.
IF sy-subrc = 0.
ls_index = sy-tabix.
gs_events-form = c_ev_top_of_page.
MODIFY Pt_events FROM gs_events INDEX ls_index.
ENDIF.
CLEAR gs_events.
ENDFORM. " sub_build_alv_events
*&----
*------
*& Form sub_comment_build
*&----
*------
text: print select options in the output
*&----
FORM sub_comment_build tables p_kunnr structure JITO_KUNNR_RANGE
changing gt_top_of_page type slis_t_listheader.
DATA: ls_line TYPE slis_listheader,
lv_Low(10) type c,
lv_high(10) type c.
lv_low = p_kunnr-low.
lv_high = p_kunnr-high.
CLEAR: ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Customer Details'.
APPEND ls_line TO gt_top_of_page.
IF NOT lv_low IS INITIAL AND NOT lv_high IS INITIAL.
CLEAR: ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Customer No'. "TEXT DESCRIPTION
CONCATENATE lv_low 'to' lv_high INTO ls_line-info
SEPARATED BY space.
APPEND ls_line TO gt_top_of_page.
elseif lv_low is initial and lv_high is initial.
CLEAR: ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Customer No'.
ls_line-info = 'ALL Values'.
APPEND ls_line TO gt_top_of_page.
ELSEIF lv_high IS INITIAL.
CLEAR: ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Customer No'.
ls_line-info = lv_low.
APPEND ls_line TO gt_top_of_page.
ENDIF.
endform.
*
form SUB_EVENT_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM. "sub_comment_build
**&----
*-----
**& Form sub_display
**&----
*-----
ALV Grid Display
**----
Form sub_display using pv_repid type sy-repid
pt_fieldcat TYPE slis_t_fieldcat_alv
pt_events type slis_t_event
pt_kna1 type TT_kna1.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = pv_repid
it_fieldcat = Pt_fieldcat
it_events = Pt_events[]
TABLES
t_outtab = Pt_kna1
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.
ENDFORM. "sub_display
‎2008 Mar 06 7:06 AM
Hello shakir,
You can refer to the code below:
TYPE-POOLS : slis.
* internal table declaration
Data:i_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv,
top_header TYPE slis_t_listheader. "Table to store The Values of Top-Of-Page Parameter for ALV
* work area declaration
Data: wa_top_header TYPE slis_listheader,
wa_fieldcat TYPE slis_fieldcat_alv.
* CONSTANTS
CONSTANTS: c_h TYPE slis_listheader VALUE 'H',
c_s TYPE slis_listheader VALUE 'S'.
********* calling a subroutine to display the fields ********************
PERFORM zalv_display.
********* function module to display the report in Grid format ***********
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_top_of_page = 'TOP_OF_PAGE'
it_fieldcat = i_fieldcat
TABLES
t_outtab = i_final
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.
*&---------------------------------------------------------------------*
*& Form zalv_display
*&---------------------------------------------------------------------*
* Subroutine To display the fields in grid format
*----------------------------------------------------------------------*
FORM zalv_display .
PERFORM zalv_grid_disp USING '1' 'CHARG' 'I_FINAL' 'Shotton coil id'.
PERFORM zalv_grid_disp USING '2' 'MATNR' 'I_FINAL' 'Material number'.
PERFORM zalv_grid_disp USING '3' 'BESTQ' 'I_FINAL' 'Stock Status'.
PERFORM zalv_grid_disp USING '4' 'AUFNR' 'I_FINAL' 'PROCESS ORDER NUMBER'.
PERFORM zalv_grid_disp USING '5' 'KDAUF' 'I_FINAL' 'SALES ORDER NUM'.
PERFORM zalv_grid_disp USING '6' 'GESME' 'I_FINAL' 'Coil Weight'.
PERFORM zalv_grid_disp USING '7' 'WDATU' 'I_FINAL' 'Date of coil receipt'.
PERFORM zalv_grid_disp USING '8' 'LGTYP' 'I_FINAL' 'Storage Type'.
PERFORM zalv_grid_disp USING '9' 'LGPLA' 'I_FINAL' 'Storage Bin'.
PERFORM zalv_grid_disp USING '10' 'COIL_STAT' 'I_FINAL' 'COIL STATUS'.
PERFORM zalv_grid_disp USING '11' 'MAKTX' 'I_FINAL' 'MATERIAL DESP'.
ENDFORM. " zalv_display
*&---------------------------------------------------------------------*
*& Form zalv_grid_disp
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0691 column position
* -->P_0692 field name
* -->P_0693 table name
* -->P_0694 field text
*----------------------------------------------------------------------*
FORM zalv_grid_disp USING value(col_pos) TYPE n
value(field_name) TYPE c
value(tab_name) TYPE c
value(sel_text) TYPE c.
wa_fieldcat-col_pos = col_pos.
wa_fieldcat-fieldname = field_name.
wa_fieldcat-tabname = tab_name.
wa_fieldcat-seltext_l = sel_text.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " zalv_grid_disp
*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
* module to display Header Information
*----------------------------------------------------------------------*
FORM top_of_page.
************************ HEADER ********************************
wa_top_header-typ = c_h.
CONCATENATE 'CONCESSION'
'COIL'
'REPORT'
INTO wa_top_header-info
SEPARATED BY space.
APPEND wa_top_header TO top_header.
CLEAR wa_top_header.
wa_top_header-typ = c_s.
wa_top_header-key = 'Date:'.
WRITE sy-datum TO wa_top_header-info.
APPEND wa_top_header TO top_header.
CLEAR wa_top_header.
wa_top_header-typ = c_s.
wa_top_header-key = 'User Name:'.
WRITE sy-uname TO wa_top_header-info.
APPEND wa_top_header TO top_header.
CLEAR wa_top_header.
* wa_top_header-typ = c_s.
* wa_top_header-key = 'No.Of Records :'.
* WRITE sy-dbcnt TO wa_top_header-info.
* APPEND wa_top_header TO top_header.
* CLEAR wa_top_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = top_header.
ENDFORM. "top_of_page