2007 Jun 20 6:40 AM
HOw to add header in ALV reports?
2007 Jun 20 6:46 AM
Add the title in the Layout of the ALV. Layout shuold be of type lvc_s_layo.
layout-grid_title = 'Title'.
Regards,
Nithya
2007 Jun 20 6:48 AM
hi,
u need to pass the values to the alv grid / list function module for header.
SLIS_T_LISTHEADER - is the structure used for header .
pass the internal table in REUSE_ALV_COMMENTARY_WRITE FM
and then pass the event table to alv grid / list FM
reward points if helpful
2007 Jun 20 6:50 AM
Hi
Check this program
*&----
*& THIS PROGRAM IS TO DISPLAY AN ALV REPORT ACCORDING TO THE
*& SALES ORDER NUMBER PROVIDED *
*& *
&----
REPORT z6smahajan_s_salesorder NO STANDARD PAGE HEADING MESSAGE-ID z6suruchi.
***********************************************************************
*& TYPE-POOL
***********************************************************************
TYPE-POOLS: slis.
&----
*& TABLES *
&----
TABLES: vbak, "SALES ORDER HEADER
vbap, "DETAILS
vbpa, "Sales Document: Partner
tpart. "Business Partner Functions: Texts
&----
*& DECLARATION OF INTERNAL TABLES *
&----
*This internal table would be used for the display of all the sales data.
DATA: BEGIN OF it_sales OCCURS 0,
vbeln LIKE vbak-vbeln, "Sales Document
posnr LIKE vbap-posnr, "Item number of the SD document
kunnr LIKE vbak-kunnr, "SOLD TO PARTY
erdat LIKE vbak-erdat, "Date on which the record was created
matnr LIKE vbap-matnr, "MATERIAL number
arktx LIKE vbap-arktx, "Short Text for Sales Order Item
vtext LIKE tpart-vtext, "DESCRIPTION
sp LIKE vbpa-kunnr, "Sold to party
bp LIKE vbpa-kunnr, "Bill to party
py LIKE vbpa-kunnr, "payee
sh LIKE vbpa-kunnr, "Ship to party
END OF it_sales.
*This internal table will contain the data related to partner functions.
DATA: BEGIN OF it_partner OCCURS 0,
vbeln LIKE vbak-vbeln, "Sales Document
parvw LIKE vbpa-parvw, "Partner function
kunnr LIKE vbpa-kunnr,
END OF it_partner.
This table would contain all distinct partner functions.
DATA : BEGIN OF i_vbpa OCCURS 0,
parvw LIKE vbpa-parvw,
END OF i_vbpa.
&----
*& DECLARATION OF VARIABLES *
&----
DATA : v_count TYPE i.
DATA: <b>i_header TYPE slis_t_listheader,</b>
**----THIS WILL BE USED TO DISPLAY THE HEADER
fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
**----Table for catalog of the fields to be displayed
i_layout TYPE slis_layout_alv,
**----LAYOUT To pass the overall structure of the ALV report
v_repid LIKE sy-repid,
**----To pass name of the report in function module for ALV
i_event TYPE slis_t_event,
**----TO DEFINE THE EVENT CATALOG-Internal table to capture various events in ALV
t_event TYPE slis_alv_event.
**----THIS IS A STRUCTURE TO HANDLE DIFFERENT EVENTS
&----
*& SELECTION SCREEN *
&----
SELECTION-SCREEN BEGIN OF BLOCK blk1.
**----For sales order number
SELECT-OPTIONS : s_vbeln FOR vbak-vbeln OBLIGATORY.
**----For date of creation
SELECT-OPTIONS : s_erdat FOR vbak-erdat.
SELECTION-SCREEN END OF BLOCK blk1.
&----
*& AT SELECTION-SCREEN *
*& VALIDATION FOR THE INPUT IN THE SELECTION SCREEN
&----
AT SELECTION-SCREEN.
**---- Validate Sales Order number entered
PERFORM validate_sales_order.
&----
*& START-OF-SELECTION *
&----
START-OF-SELECTION.
**---- Select Data based on the selection criteria.
PERFORM select_data.
**---- Build Event Catalog
PERFORM zf_eventcat USING i_event.
**---- Build Fieldcat
PERFORM zf_fieldcat USING fieldcatalog[]. "FOR DEFINING FIELDCATALOG FOR FIRST SCREEN
**---- Create Layout
PERFORM zf_layout.
**---- Display ALV Grid Report
PERFORM display_alv.
*----
TOP_OF_PAGE
*----
<b>FORM top_of_page.</b>
REFRESH i_header.
**----To display the header in the ALV report.
<b>PERFORM zf_header USING i_header.</b>
**----To print the headings and other comments for the list.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_header
i_logo = 'ENJOYSAP_LOGO'.
ENDFORM. "TOP_OF_PAGE
&----
*& Form zf_header
*& To display the header in the ALV report.
&----
<b>FORM zf_header USING p_i_header TYPE slis_t_listheader.
DATA: t_header TYPE slis_listheader.
DATA: v_text(10).
WRITE sy-datum TO v_text.
CLEAR t_header.
t_header-typ = 'S'.
t_header-key = 'Date'.
t_header-info = v_text.
APPEND t_header TO p_i_header.
ENDFORM. " zf_header</b>.
&----
*& Form SELECT_DATA
**---- Select Data based on the selection criteria.
&----
FORM select_data .
CLEAR it_sales.
SELECT vbak~vbeln
vbak~kunnr
vbak~erdat
vbap~posnr
vbap~matnr
vbap~arktx
INTO CORRESPONDING FIELDS OF TABLE it_sales
FROM vbak INNER JOIN vbap
ON vbakvbeln = vbapvbeln
WHERE vbakvbeln IN s_vbeln AND vbakerdat IN s_erdat.
**----If no data exists, stop execution
IF sy-subrc <> 0.
MESSAGE e057.
ENDIF.
SELECT vbeln
parvw
kunnr
FROM vbpa
INTO CORRESPONDING FIELDS OF TABLE it_partner
FOR ALL ENTRIES IN it_sales
WHERE vbeln = it_sales-vbeln.
**----If no data exists, stop execution
IF sy-subrc <> 0.
MESSAGE i002(sy) WITH 'NO DATA TO PROCESS'.
LEAVE LIST-PROCESSING.
ENDIF.
LOOP AT it_partner.
MOVE it_partner-parvw TO i_vbpa-parvw.
COLLECT i_vbpa.
CLEAR i_vbpa.
ENDLOOP.
SORT i_vbpa.
**----To move the partner function data to the table it_sales which would be finally passed to ALV
LOOP AT it_sales.
LOOP AT i_vbpa.
READ TABLE it_partner WITH KEY vbeln = it_sales-vbeln
parvw = i_vbpa-parvw.
IF sy-subrc = 0.
if partner function is Sold to party
IF i_vbpa-parvw = 'AG'.
it_sales-sp = it_partner-kunnr.
ENDIF.
If partner function is Bill to party
IF i_vbpa-parvw = 'RE'.
it_sales-bp = it_partner-kunnr.
ENDIF.
If partner function is ship to party
IF i_vbpa-parvw = 'WE'.
it_sales-sh = it_partner-kunnr.
ENDIF.
if partner function is Payee
IF i_vbpa-parvw = 'RG'.
it_sales-py = it_partner-kunnr.
ENDIF.
ENDIF.
ENDLOOP.
To modify the internal table after copying the partner function values
MODIFY it_sales.
To clear the work areas of the three internal tables
CLEAR : it_sales,
it_partner,
i_vbpa.
ENDLOOP.
ENDFORM. " SELECT_DATA
&----
*& Form zf_eventcat
To Build Event Catalog
&----
FORM zf_eventcat USING p_i_event TYPE slis_t_event.
DATA: l_event TYPE slis_alv_event.
**----Returns table of possible events for a list type
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_i_event
EXCEPTIONS
list_type_wrong = 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.
CLEAR t_event.
READ TABLE p_i_event WITH KEY name = slis_ev_top_of_page INTO t_event.
IF sy-subrc = 0.
MOVE 'TOP_OF_PAGE' TO t_event-form.
MODIFY p_i_event FROM t_event INDEX sy-tabix TRANSPORTING form.
ENDIF.
ENDFORM. " zf_eventcat
&----
*& Form zf_fieldcat
&----
*
----
FORM zf_fieldcat USING p_fieldcatalog TYPE slis_t_fieldcat_alv.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'VBELN'. " FIELD FOR WHICH CATALOG ID FILLED.
fieldcatalog-seltext_m = 'SALES NO'. " MEDIUM TEXT FOR HEADER.
fieldcatalog-col_pos = 1. " POSITION OF THE COLUMN.
fieldcatalog-outputlen = 20. " SET THE OUTPUT LENGTH.
fieldcatalog-emphasize = 'X'. " COLOR OF THIS COLUMN.
fieldcatalog-key = 'X'. " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
fieldcatalog-hotspot = 'X'. " MARK THIS FIELD AS HOTSOPT TO CAUSE THE F2 EVENTS TO TRIGGER.
APPEND fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ERDAT'. " FIELD FOR WHICH CATALOG ID FILLED.
fieldcatalog-seltext_m = 'CRTD ON'. " MEDIUM TEXT FOR HEADER.
fieldcatalog-col_pos = 2. " POSITION OF THE COLUMN.
fieldcatalog-outputlen = 20. " SET THE OUTPUT LENGTH.
fieldcatalog-emphasize = 'X'. " COLOR OF THIS COLUMN.
fieldcatalog-key = 'X'. " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
fieldcatalog-hotspot = 'X'. " MARK THIS FIELD AS HOTSOPT TO CAUSE THE F2 EVENTS TO TRIGGER.
APPEND fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'MAT NO'.
fieldcatalog-col_pos = 3.
fieldcatalog-outputlen = 20.
fieldcatalog-key = 'X'.
APPEND fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'POSNR'.
fieldcatalog-seltext_m = 'ITEM NO'.
fieldcatalog-col_pos = 4.
fieldcatalog-outputlen = 20.
fieldcatalog-key = 'X'.
APPEND fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ARKTX'.
fieldcatalog-seltext_m = 'DESC'.
fieldcatalog-col_pos = 5.
fieldcatalog-outputlen = 25.
APPEND fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'SP'.
fieldcatalog-seltext_m = 'SP'.
fieldcatalog-col_pos = 6.
fieldcatalog-outputlen = 25.
APPEND fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'BP'.
fieldcatalog-seltext_m = 'BP'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 25.
APPEND fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PY'.
fieldcatalog-seltext_m = 'PY'.
fieldcatalog-col_pos = 8.
fieldcatalog-outputlen = 25.
APPEND fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'SH'.
fieldcatalog-seltext_m = 'SH'.
fieldcatalog-col_pos = 9.
fieldcatalog-outputlen = 25.
APPEND fieldcatalog.
ENDFORM. " zf_fieldcat
&----
*& Form zf_layout
*& Create Layout
----
FORM zf_layout .
i_layout-zebra = 'X'.
ENDFORM. " zf_layout
&----
*& Form DISPLAY_ALV
Display ALV Grid Report
----
FORM display_alv .
v_repid = sy-repid.
To display the data in internal table it_sales in grid format.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
is_layout = i_layout
it_fieldcat = fieldcatalog[]
it_events = i_event[]
TABLES
t_outtab = it_sales
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. " DISPLAY_ALV
&----
*& Form validate_sales_order
&----
**---- Validate Sales Order number entered
----
FORM validate_sales_order .
**---- Variable to hold the Sales Order Value.
DATA : w_vbeln LIKE vbak-vbeln.
CLEAR w_vbeln.
SELECT SINGLE vbeln
FROM vbak
INTO w_vbeln
WHERE vbeln IN s_vbeln.
**---- If not found, stop execution
IF sy-subrc NE 0.
SET CURSOR FIELD 'S_VBELN-LOW'.
MESSAGE e002(sy) WITH 'No Sales Order Found'.
ENDIF.
ENDFORM. " validate_sales_order
Message was edited by:
Suruchi Mahajan
2007 Jun 20 6:58 AM
Hi
Check the code.
Reward if usefull.
*Program to Test ALV Display With Header & Footer.
&----
*& Report ZSSK02 *
&----
REPORT ZSSK02 .
*Table declaration.
TABLES:ZEMP_MST,ZDEPT_MST,ZDESG_MST,ZSL_TXN.
*Varriable declaration.
TYPE-POOLS SLIS.
DATA : POS TYPE I.
DATA REPID LIKE SY-REPID.
DATA : F1 TYPE SLIS_T_FIELDCAT_ALV,
F2 TYPE SLIS_FIELDCAT_ALV,
L_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA L_POS TYPE I VALUE 1. "position of the column
DATA GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
*DATA GT_SORT TYPE SLIS_T_SORTINFO_ALV.
data: GT_EVENTS TYPE SLIS_T_EVENT,
FS_EVENTCAT LIKE LINE OF GT_EVENTs.
*Internal table declaration.
*DATA BEGIN OF IT_SORT OCCURS 5.
INCLUDE TYPE SLIS_SORTINFO_ALV.
*DATA END OF IT_SORT.
DATA:BEGIN OF ITAB OCCURS 0,
ZEMPNO LIKE ZEMP_MST-ZEMPNO,
ZEMPNAME LIKE ZEMP_MST-ZEMPNAME,
ZDEPTCD LIKE ZEMP_MST-ZDEPTCD,
ZDEPTNAME LIKE ZDEPT_MST-ZDEPTNAME,
ZDESGCD LIKE ZEMP_MST-ZDESGCD,
ZDESGNAME LIKE ZDESG_MST-ZDESGNAME,
END OF ITAB.
REFRESH ITAB.CLEAR ITAB.
START-OF-SELECTION.
SELECT AZEMPNO AZEMPNAME AZDEPTCD BZDEPTNAME AZDESGCD CZDESGNAME
FROM ZEMP_MST AS A
INNER JOIN ZDEPT_MST AS B
ON AZDEPTCD EQ BZDEPTCD
INNER JOIN ZDESG_MST AS C
ON AZDESGCD EQ CZDESGCD
INTO CORRESPONDING FIELDS OF TABLE ITAB.
IF SY-SUBRC <> 0.
MESSAGE E899(M3) WITH 'No records'.
ENDIF.
perform f_build_eventcat.
PERFORM LAYOUT.
END-OF-SELECTION.
&----
*& Form LAYOUT
&----
FORM LAYOUT .
PERFORM FCAT USING 'ZEMPNO' 'ITAB' '' 'Emp.No.' 'ZEMPNO' 'ZEMP_MST' ''.
PERFORM FCAT USING 'ZEMPNAME' 'ITAB' '' 'Emp. Name' 'ZEMPNAME' 'ZEMP_MST' ''.
PERFORM FCAT USING 'ZDEPTCD' 'ITAB' '' 'Dept.Code' 'ZDEPTCD' 'ZEMP_MST' ''.
PERFORM FCAT USING 'ZDEPTNAME' 'ITAB' '' 'Dept.Name' 'ZDEPTNAME' 'ZDEPT_MST' ''.
PERFORM FCAT USING 'ZDESGCD' 'ITAB' '' 'Desg.Code' 'ZDESGCD' 'ZEMP_MST' ''.
PERFORM FCAT USING 'ZDESGNAME' 'ITAB' '' 'Desg.Name' 'ZDESGNAME' 'ZDESG_MST' ''.
PERFORM LSORT USING 'ZEMPNO' 'IDATA' ''.
PERFORM LSORT USING 'ZEMPNAME' 'IDATA' ''.
MOVE IT_SORT[] TO GT_SORT[].
REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REPID
IT_FIELDCAT = F1
IT_SORT = GT_SORT
I_SAVE = 'X'
IT_EVENTS = GT_EVENTS[]
TABLES
T_OUTTAB = ITAB.
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. " LAYOUT
&----
*& Form FCAT
&----
FORM FCAT USING P_FIELD P_TABLE P_SUM P_TEXT P_RFIELD P_RTABLE P_DISP.
ADD 1 TO POS.
F2-COL_POS = POS.
F2-FIELDNAME = P_FIELD.
F2-TABNAME = P_TABLE.
F2-SELTEXT_L = P_TEXT.
F2-REF_FIELDNAME = P_RFIELD.
F2-REF_TABNAME = P_RTABLE.
F2-DO_SUM = P_SUM.
F2-NO_OUT = P_DISP.
APPEND F2 TO F1.
CLEAR F2.
ENDFORM. " FCAT
&----
*& Form LSORT
&----
*FORM LSORT USING P_FIELD P_TABLE P_UP.
ADD 1 TO L_POS.
IT_SORT-SPOS = L_POS.
IT_SORT-FIELDNAME = P_FIELD.
IT_SORT-TABNAME = P_TABLE.
IT_SORT-UP = P_UP.
APPEND IT_SORT.
*ENDFORM. " LSORT
*----
FORM F_BUILD_EVENTCAT .
CLEAR: GT_EVENTS. REFRESH: GT_EVENTS.
CLEAR: FS_EVENTCAT.
FS_EVENTCAT-NAME = 'TOP_OF_PAGE'.
FS_EVENTCAT-FORM = 'F_REPORT_HEADER_ALV'.
APPEND FS_EVENTCAT TO GT_EVENTS.
CLEAR: FS_EVENTCAT.
FS_EVENTCAT-NAME = 'END_OF_LIST'.
FS_EVENTCAT-FORM = 'F_WRITE_SUMMARY'.
APPEND FS_EVENTCAT TO GT_EVENTS.
ENDFORM. " F_BUILD_EVENTCAT
FORM F_REPORT_HEADER_ALV.
CALL FUNCTION 'Z_YHEAD_PRINT'
EXPORTING
TITLE1 = 'XYZ Limited'
TITLE2 = 'Employee Master'
TITLE3 = 'Created on '
COLOR = 'X'
.
ENDFORM.
&----
*& Form F_WRITE_SUMMARY
&----
Write summary before exit
----
FORM F_WRITE_SUMMARY .
write:/ 'Welcome to XYZ Limited'.
write:/ 'This is a test program to display Report in ALV Format'.
ENDFORM.
Regards
shibino
2007 Jun 20 9:46 AM
Hi,
Just add :
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
...
i_callback_top_of_page = 'TOP_OF_PAGE'
...
and define your header :
FORM top_of_page.
*ALV Header declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader.
CLEAR wa_header.
wa_header-typ = 'H'.
wa_header-info = 'Header ALV'.
APPEND wa_header TO t_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
ENDFORM. "top-of-page
Regards.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |