Sie sind auf Seite 1von 4

How to activate next page, last page buttons

in ALV reports
Standard ALV calls status STANDARD_FULLSCREEN (program SAPLKKBL) in which next/previous/first/last
page is deactivated by default. The same program consist another status APPEND which has these buttons
activated. Hence we need to overwrite the PF-STATUS call from STANDARD_FULLSCREEN to APPEND.
1. Copy the APPEND status of program SAPLKKBL to your custom program using t-code SE41. [In this
case I have used the same name for status for my program]

2. Function codes for the page scrolling already exist. Activate your status.

Changes in the custom program

Generated by Jive on 2014-07-11+02:00


1

How to activate next page, last page buttons in ALV reports

3. Create subroutine SET_PF_STATUS to set the new PF-STATUS. Note, that this is called dynamically
through FM REUSE_ALV_GRID_DISPLAY
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'APPEND'.
ENDFORM.

"Set_pf_status

4. Create subroutine USER_COMMAND which will contain the action upon clicking next/previous/first/last page
buttons.
Note, function codes for First Page is P--, Last Page is P++, Next Page is P+ and Previous Page
is P-
FORM user_command USING r_ucomm

LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

REFRESH lt_data.
CASE r_ucomm.
WHEN 'P--'.

"First Page

LOOP AT gt_data INTO lw_data


WHERE page = 1.
APPEND lw_data TO lt_data.
ENDLOOP.
g_page = 1.
WHEN 'P++'.

"Last Page

LOOP AT gt_data INTO lw_data


WHERE page = g_lastpage.
APPEND lw_data TO lt_data.
CLEAR lw_data.
ENDLOOP.
g_page = g_lastpage.
WHEN 'P+'.

"Next page

IF g_page EQ g_lastpage.
EXIT.
ELSE.
g_page = g_page + 1.
ENDIF.
LOOP AT gt_data INTO lw_data

Generated by Jive on 2014-07-11+02:00


2

How to activate next page, last page buttons in ALV reports

WHERE page = g_page.


APPEND lw_data TO lt_data.
CLEAR lw_data.
ENDLOOP.
WHEN 'P-'.

"Previous Page

IF g_page EQ 1.
EXIT.
ELSE.
g_page = g_page - 1.
ENDIF.
LOOP AT gt_data INTO lw_data
WHERE page = g_page.
APPEND lw_data TO lt_data.
CLEAR lw_data.
ENDLOOP.
ENDCASE.

ENDFORM. "User_command
5. In REUSE_ALV_GRID_DISPLAY, call the subroutine for new PF-STATUS and USER_COMMAND
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
is_layout

= sy-repid
= lw_layout

i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
6. In SET_PF_STATUS, add code to get to selection screen when clicking Back/Exit/Cancel button
FORM set_pf_status USING gt_extab TYPE slis_t_extab .
SET PF-STATUS 'APPEND'.
IF sy-ucomm EQ '&F03'
OR sy-ucomm EQ '&F12'
OR sy-ucomm EQ '&F15'.
SUBMIT ztrading_boe WITH SELECTION-TABLE gt_seltab VIA SELECTION-SCREEN.

Generated by Jive on 2014-07-11+02:00


3

How to activate next page, last page buttons in ALV reports

ENDIF.
ENDFORM. "Set_pf_status
7. Populate selection screen values in GT_SELTAB in START-OF-SELECTION. This will retain the selection
screen values when clicking Back/Exit/Cancel button
START-OF-SELECTION.
* Get selection screen data
PERFORM get_selections_values.
FORM get_selections_values.

CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'


EXPORTING
curr_report

= sy-repid

TABLES
selection_table = gt_seltab
EXCEPTIONS
not_found

=1

no_report

= 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.

" GET_SELECTIONS_VALUES

Generated by Jive on 2014-07-11+02:00


4

Das könnte Ihnen auch gefallen