Skip to Content
author's profile photo Former Member
Former Member

End of Page event not triggering in ALV report

Hello,

I am developing an ALV report using REUSE_ALV_LIST_DISPLAY. Whatever I write in top_of_page, it will be displayed in the header portion of the output.

But I want to display some footer text at the end of the page. The problem I am facing is, the WRITE statements within end_of_page are not displayed when the report is run.

I have populated the i_events as follows :

FORM f_events CHANGING p_i_events TYPE slis_t_event.

CONSTANTS : l_c_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',

l_c_end_of_page TYPE slis_formname VALUE 'END_OF_PAGE'.

DATA : l_wa_event TYPE slis_alv_event.

  • Returns table of possible events

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = p_i_events.

  • To append internal table holding event names with event 'TOP OF PAGE'

READ TABLE p_i_events INTO l_wa_event

WITH KEY name = slis_ev_top_of_page.

IF sy-subrc = 0.

MOVE l_c_top_of_page TO l_wa_event-form.

APPEND l_wa_event TO p_i_events.

ENDIF.

  • To append internal table holding event names with event 'END OF PAGE'

READ TABLE p_i_events INTO l_wa_event

WITH KEY name = slis_ev_end_of_page.

IF sy-subrc = 0.

MOVE l_c_end_of_page TO l_wa_event-form.

APPEND l_wa_event TO p_i_events.

ENDIF.

ENDFORM. "f_events

Regds

Rajesh

Add a comment
10|10000 characters needed characters exceeded

Related questions

6 Answers

  • Posted on Nov 18, 2005 at 11:09 AM

    Check u reserved the Space for END-OF-PAGE.

    and check the form name correctly given or not.

    *----


    • END_of_page

    *----


    FORM l_c_end_of_page.

    wrtie:/ 'End of page'.

    ENDFORM. "end_of_page

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Nov 18, 2005 at 11:12 AM

    Hi

    You should not write WRITE statement in the END-OF-PAGE event.

    You have to call FM REUSE_ALV_COMMENTARY_WRITE.

    Check the demo program BALVHD01.

    Thanks,

    Ramakrishna

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Nov 18, 2005 at 11:13 AM

    Hi,

    Look at this link...........

    http://www.sapdevelopment.co.uk/reporting/alv/alvgrid.htm

    I hope it will help you.

    Thanks.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Nov 18, 2005 at 11:22 AM

    HI Rajesh,

    Along with the field 'NAME' in the events table, there is another filed 'FORM'. And what ever footer you trigger should be written in the form. Below is what you gotta do to your code(Changes are in bold):

    FORM f_events CHANGING p_i_events TYPE slis_t_event.

    CONSTANTS : l_c_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',

    l_c_end_of_page TYPE slis_formname VALUE 'END_OF_PAGE'.

    DATA : l_wa_event TYPE slis_alv_event.

    • Returns table of possible events

    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

    EXPORTING

    i_list_type = 0

    IMPORTING

    et_events = p_i_events.

    • To append internal table holding event names with event 'TOP OF PAGE'

    READ TABLE p_i_events INTO l_wa_event

    WITH KEY name = slis_ev_top_of_page.

    IF sy-subrc = 0.

    MOVE l_c_top_of_page TO l_wa_event-form.

    <b>MODIFY p_i_events from l_wa_event INDEX SY_INDEX.</b>

    ENDIF.

    • To append internal table holding event names with event 'END OF PAGE'

    READ TABLE p_i_events INTO l_wa_event

    WITH KEY name = slis_ev_end_of_page.

    IF sy-subrc = 0.

    MOVE l_c_end_of_page TO l_wa_event-form.

    <b>MODIFY p_i_events from l_wa_event INDEX SY_INDEX.</b>

    ENDIF.

    ENDFORM. "f_events

    The problem is you are trying to append data to the events table, but at execution the ALV will fetch the first record with 'NAME' and 'FORM' and to that record 'FORM' is blank.

    Cheers,

    Naveen

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Nov 18, 2005 at 11:22 AM

    Hi

    The EVENT END_OF_PAGE is triggered during the print

    Max

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Nov 18, 2005 at 11:31 AM

    Hi have a look at the following code, and change ur code for end of page accordingly. this will resolve ur problem.

    • This is a basic ALV with the followings:-

    • - Page Heading

    • - Page No

    • - Sub-Total

    • - Grand Total

    REPORT ZALV.

    TYPE-POOLS: SLIS.

    DATA: G_REPID LIKE SY-REPID,

    GS_PRINT TYPE SLIS_PRINT_ALV,

    GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

    GT_EVENTS TYPE SLIS_T_EVENT,

    GT_SORT TYPE SLIS_T_SORTINFO_ALV,

    GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

    GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

    FIELDCAT_LN LIKE LINE OF GT_FIELDCAT,

    COL_POS TYPE I.

    DATA: BEGIN OF ITAB,

    FIELD1(5) TYPE C,

    FIELD2(5) TYPE C,

    FIELD3(5) TYPE P DECIMALS 2,

    END OF ITAB.

    DATA: BEGIN OF ITAB1 OCCURS 0.

    INCLUDE STRUCTURE ITAB.

    DATA: END OF ITAB1.

    DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.

    INCLUDE STRUCTURE ITAB.

    DATA: END OF ITAB_FIELDCAT.

    • Print Parameters

    PARAMETERS:

    P_PRINT AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE

    P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO

    P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE

    P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE

    P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO

    P_RESERV TYPE I. "NO OF FOOTER LINE

    INITIALIZATION.

    G_REPID = SY-REPID.

    PERFORM PRINT_BUILD USING GS_PRINT. "Print PARAMETERS

    START-OF-SELECTION.

    • TEST DATA

    MOVE 'TEST1' TO ITAB1-FIELD1.

    MOVE 'TEST1' TO ITAB1-FIELD2.

    MOVE '10.00' TO ITAB1-FIELD3.

    APPEND ITAB1.

    MOVE 'TEST2' TO ITAB1-FIELD1.

    MOVE 'TEST2' TO ITAB1-FIELD2.

    MOVE '20.00' TO ITAB1-FIELD3.

    APPEND ITAB1.

    DO 50 TIMES.

    APPEND ITAB1.

    ENDDO.

    END-OF-SELECTION.

    PERFORM BUILD.

    PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS.

    PERFORM COMMENT_BUILD CHANGING GT_LIST_TOP_OF_PAGE.

    PERFORM CALL_ALV.

    FORM BUILD.

    • DATA FIELD CATALOG

    • Explain Field Description to ALV

    DATA: FIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.

    CLEAR FIELDCAT_IN.

    FIELDCAT_LN-FIELDNAME = 'FIELD1'.

    FIELDCAT_LN-TABNAME = 'ITAB1'.

    *FIELDCAT_LN-NO_OUT = 'X'. "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT

    FIELDCAT_LN-KEY = ' '. "SUBTOTAL KEY

    FIELDCAT_LN-NO_OUT = ' '.

    FIELDCAT_LN-SELTEXT_L = 'HEAD1'.

    APPEND FIELDCAT_LN TO GT_FIELDCAT.

    CLEAR FIELDCAT_IN.

    FIELDCAT_LN-FIELDNAME = 'FIELD2'.

    FIELDCAT_LN-TABNAME = 'ITAB1'.

    FIELDCAT_LN-NO_OUT = 'X'.

    FIELDCAT_LN-SELTEXT_L = 'HEAD2'.

    APPEND FIELDCAT_LN TO GT_FIELDCAT.

    CLEAR FIELDCAT_IN.

    FIELDCAT_LN-FIELDNAME = 'FIELD3'.

    FIELDCAT_LN-TABNAME = 'ITAB1'.

    FIELDCAT_LN-REF_FIELDNAME = 'MENGE'. "<- REF FIELD IN THE DICTIONNARY

    FIELDCAT_LN-REF_TABNAME = 'MSEG'. "<- REF TABLE IN THE DICTIONNARY

    FIELDCAT_LN-NO_OUT = ' '.

    FIELDCAT_LN-DO_SUM = 'X'. "SUM UPON DISPLAY

    APPEND FIELDCAT_LN TO GT_FIELDCAT.

    • DATA SORTING AND SUBTOTAL

    DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.

    CLEAR GS_SORT.

    GS_SORT-FIELDNAME = 'FIELD1'.

    GS_SORT-SPOS = 1.

    GS_SORT-UP = 'X'.

    GS_SORT-SUBTOT = 'X'.

    APPEND GS_SORT TO GT_SORT.

    CLEAR GS_SORT.

    GS_SORT-FIELDNAME = 'FIELD2'.

    GS_SORT-SPOS = 2.

    GS_SORT-UP = 'X'.

    *GS_SORT-SUBTOT = 'X'.

    APPEND GS_SORT TO GT_SORT.

    ENDFORM.

    FORM CALL_ALV.

    • ABAP List Viewer

    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

    EXPORTING

    • I_INTERFACE_CHECK = ' '

    • I_BYPASSING_BUFFER =

    • I_BUFFER_ACTIVE = ' '

    I_CALLBACK_PROGRAM = G_REPID

    • I_CALLBACK_PF_STATUS_SET = ' '

    • I_CALLBACK_USER_COMMAND = ' '

    I_STRUCTURE_NAME = 'ITAB1'

    IS_LAYOUT = GS_LAYOUT

    IT_FIELDCAT = GT_FIELDCAT[]

    • IT_EXCLUDING =

    • IT_SPECIAL_GROUPS =

    IT_SORT = GT_SORT[]

    • IT_FILTER =

    • IS_SEL_HIDE =

    • I_DEFAULT = 'X'

    • I_SAVE = ' '

    • IS_VARIANT =

    IT_EVENTS = GT_EVENTS[]

    • IT_EVENT_EXIT =

    IS_PRINT = GS_PRINT

    • IS_REPREP_ID =

    • I_SCREEN_START_COLUMN = 0

    • I_SCREEN_START_LINE = 0

    • I_SCREEN_END_COLUMN = 0

    • I_SCREEN_END_LINE = 0

    • IMPORTING

    • E_EXIT_CAUSED_BY_CALLER =

    • ES_EXIT_CAUSED_BY_USER =

    TABLES

    T_OUTTAB = ITAB1

    EXCEPTIONS

    PROGRAM_ERROR = 1

    OTHERS = 2.

    ENDFORM.

    • HEADER FORM

    FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.

    CONSTANTS:

    GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.

    *GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.

    DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

    EXPORTING

    I_LIST_TYPE = 0

    IMPORTING

    ET_EVENTS = LT_EVENTS.

    READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

    INTO LS_EVENT.

    IF SY-SUBRC = 0.

    MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.

    APPEND LS_EVENT TO LT_EVENTS.

    ENDIF.

    • define END_OF_PAGE event

    • READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE

    • INTO LS_EVENT.

    • IF SY-SUBRC = 0.

    • MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.

    • APPEND LS_EVENT TO LT_EVENTS.

    • ENDIF.

    ENDFORM.

    FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.

    DATA: GS_LINE TYPE SLIS_LISTHEADER.

    CLEAR GS_LINE.

    GS_LINE-TYP = 'H'.

    GS_LINE-INFO = 'HEADER 1'.

    APPEND GS_LINE TO GT_TOP_OF_PAGE.

    CLEAR GS_LINE.

    GS_LINE-TYP = 'S'.

    GS_LINE-KEY = 'STATUS 1'.

    GS_LINE-INFO = 'INFO 1'.

    APPEND GS_LINE TO GT_TOP_OF_PAGE.

    GS_LINE-KEY = 'STATUS 2'.

    GS_LINE-INFO = 'INFO 2'.

    APPEND GS_LINE TO GT_TOP_OF_PAGE.

    • CLEAR GS_LINE.

    • GS_LINE-TYP = 'A'.

    • GS_LINE-INFO = 'ACTION'.

    • APPEND GS_LINE TO GT_TOP_OF_PAGE.

    ENDFORM.

    FORM TOP_OF_PAGE.

    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

    IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.

    WRITE: SY-DATUM, 'Page No', SY-PAGNO LEFT-JUSTIFIED.

    ENDFORM.

    FORM END_OF_PAGE.

    WRITE at (sy-linsz) sy-pagno CENTERED.

    ENDFORM.

    • PRINT SETTINGS

    FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV.

    LS_PRINT-PRINT = P_PRINT. "PRINT IMMEDIATE

    LS_PRINT-NO_PRINT_SELINFOS = P_NOSINF. "NO SELECTION INFO

    LS_PRINT-NO_COVERPAGE = P_NOCOVE. "NO COVER PAGE

    LS_PRINT-NO_NEW_PAGE = P_NONEWP.

    LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO

    LS_PRINT-RESERVE_LINES = P_RESERV.

    ENDFORM.

    *END OF ZALV PROGRAM

    Satish

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.