cancel
Showing results for 
Search instead for 
Did you mean: 

top of page

Former Member
0 Kudos

Hi all,

how to trigger top-of-page event in alv report?

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Ram,

Try this link.

[;

Answers (4)

Answers (4)

Former Member
0 Kudos

hi,

pls refer this program for TOP-OF-PAGE event.....

BALVHD01

or pls copy paste in se38 and debug the program where is TOP-OF-PAGE is trigger

&----


*& Report Z50818_ALV_EVENTS

*&

&----


REPORT z50818_alv_events.

*tables: customer table

======================================================================

  • TABLES

======================================================================

TABLES: kna1.

TYPE-POOLS: slis.

======================================================================

  • SELECTION-SCREEN.

======================================================================

SELECT-OPTIONS : s_kunnr FOR kna1-kunnr.

PARAMETERS: p_vari TYPE slis_vari.

======================================================================

  • DATA

======================================================================

DATA: BEGIN OF it_alv_data OCCURS 0,

kunnr LIKE kna1-kunnr,

land1 LIKE kna1-land1,

name1 LIKE kna1-name1,

name2 LIKE kna1-name2,

ort01 LIKE kna1-ort01,

pstlz LIKE kna1-pstlz,

regio LIKE kna1-regio,

sortl LIKE kna1-sortl,

END OF it_alv_data,

wa_alv_data LIKE LINE OF it_alv_data,

lv_kunnr LIKE kna1-kunnr,

it_fieldcat TYPE slis_t_fieldcat_alv,

wa_fieldcat LIKE LINE OF it_fieldcat,

usercommand TYPE slis_formname VALUE 'USER_COMMAND'.

DATA: it_events TYPE slis_t_event,

wa_events LIKE LINE OF it_events.

RANGES: r_kunnr FOR kna1-kunnr,

r_kunnr1 FOR kna1-kunnr.

DATA: BEGIN OF it_alv_data1 OCCURS 0,

kunnr LIKE kna1-kunnr,

ort01 LIKE kna1-ort01,

END OF it_alv_data1,

wa_alv_data1 LIKE LINE OF it_alv_data1,

it_fieldcat1 TYPE slis_t_fieldcat_alv,

wa_fieldcat1 LIKE LINE OF it_fieldcat1.

DATA: it_sort TYPE slis_t_sortinfo_alv,

wa_sort LIKE LINE OF it_sort.

data: IS_VARIANT LIKE DISVARIANT,

ES_VARIANT LIKE DISVARIANT ,

ES_VARIANT1 LIKE DISVARIANT .

======================================================================

  • AT SELECTION-SCREEN

======================================================================

AT SELECTION-SCREEN ON value-request for p_vari.

perform f4_variant.

======================================================================

  • Initialization

======================================================================

INITIALIZATION.

perform initialize_variant.

*s_kunnr-sign = 'I'.

*s_kunnr-option = 'BT'.

*s_kunnr-low = 150.

*s_kunnr-high = 200.

*APPEND S_KUNNR.

*

*s_kunnr-sign = 'E'.

*s_kunnr-option = 'BT'.

*s_kunnr-low = 160.

*s_kunnr-high = 170.

*APPEND S_KUNNR.

*

*s_kunnr-sign = 'I'.

*s_kunnr-option = 'BT'.

*s_kunnr-low = 300.

*s_kunnr-high = 350.

*APPEND S_KUNNR.

r_kunnr-sign = 'I'.

r_kunnr-option = 'BT'.

r_kunnr-low = 150.

r_kunnr-high = 200.

APPEND r_kunnr.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_RANGE_I'

EXPORTING

input = lv_kunnr

IMPORTING

output = lv_kunnr

TABLES

range_int = r_kunnr1

range_ext = r_kunnr.

START-OF-SELECTION.

  • PERFORM display.

*

SELECT

kunnr

land1

name1

name2

ort01

pstlz

regio

sortl UP TO 20 ROWS

INTO TABLE it_alv_data

FROM kna1

WHERE kunnr IN r_kunnr1.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-repid

i_internal_tabname = 'IT_ALV_DATA'

  • I_STRUCTURE_NAME = 'WA_ALV_DATA'

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = sy-repid

  • I_BYPASSING_BUFFER = 'X'

  • I_BUFFER_ACTIVE = ' '

CHANGING

ct_fieldcat = it_fieldcat

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

PERFORM modify_fieldcat.

wa_events-name = slis_ev_user_command.

wa_events-form = 'USER_COMMAND'.

APPEND wa_events TO it_events .

CLEAR wa_events.

*

  • wa_events-name = slis_ev_pf_status_set.

  • wa_events-form = 'PF_STATUS_SET'.

  • APPEND wa_events TO it_events .

  • CLEAR wa_events.

wa_events-name = slis_ev_top_of_page.

wa_events-form = 'FAREEDA'.

APPEND wa_events TO it_events .

CLEAR wa_events.

wa_sort-spos = 1.

wa_sort-fieldname = 'ORT01'.

wa_sort-tabname = 'IT_ALV_DATA'.

wa_sort-down = 'X'.

APPEND wa_sort TO it_sort.

CLEAR wa_sort.

wa_sort-spos = 2.

wa_sort-fieldname = 'KUNNR'.

wa_sort-tabname = 'IT_ALV_DATA'.

wa_sort-up = 'X'.

APPEND wa_sort TO it_sort.

CLEAR wa_sort.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = I_BYPASSING_BUFFER

  • I_BUFFER_ACTIVE = ' '

i_callback_program = sy-repid

  • i_callback_pf_status_set = 'SET_STATUS'

  • I_CALLBACK_USER_COMMAND = ' '

  • I_STRUCTURE_NAME = 'WA_ALV_DATA'

  • IS_LAYOUT = IS_LAYOUT

it_fieldcat = it_fieldcat

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

it_sort = it_sort

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_DEFAULT = 'X'

i_save = 'A'

IS_VARIANT = eS_VARIANT

it_events = it_events[]

  • IT_EVENT_EXIT = IT_EVENT_EXIT

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = SY-REPID

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

t_outtab = it_alv_data[]

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 modify_fieldcat

&----


  • text

----


FORM modify_fieldcat .

LOOP AT it_fieldcat INTO wa_fieldcat.

CASE wa_fieldcat-fieldname.

WHEN 'KUNNR'.

wa_fieldcat-seltext_s = 'Column1'.

wa_fieldcat-seltext_m = 'Column1'.

wa_fieldcat-seltext_l = 'Column1'.

wa_fieldcat-reptext_ddic = 'Column1'.

ENDCASE.

MODIFY it_fieldcat FROM wa_fieldcat.

ENDLOOP.

ENDFORM. " modify_fieldcat

&----


*& Form user_command

&----


  • text

----


  • -->RF_UCOMM text

  • -->RS_SELFIELD text

----


FORM user_command USING rf_ucomm TYPE sy-ucomm

rs_selfield TYPE slis_selfield.

DATA: w_message(40).

DATA: lv_kunnr1 TYPE kna1-kunnr.

.

CASE rf_ucomm.

WHEN '&IC1'.

CASE rs_selfield-fieldname.

WHEN 'KUNNR'.

CLEAR w_message.

CONCATENATE 'The Customer' rs_selfield-value 'is selected'

INTO w_message SEPARATED BY space.

MESSAGE w_message TYPE 'I'.

CLEAR lv_kunnr.

lv_kunnr = rs_selfield-value.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = lv_kunnr1

IMPORTING

output = lv_kunnr1.

CLEAR wa_alv_data.

REFRESH it_alv_data1.

READ TABLE it_alv_data INTO wa_alv_data

WITH KEY kunnr = lv_kunnr1.

IF sy-subrc = 0.

wa_alv_data1-kunnr = wa_alv_data-kunnr.

wa_alv_data1-ort01 = wa_alv_data-ort01.

APPEND wa_alv_data1 TO it_alv_data1.

CLEAR wa_alv_data1.

ENDIF.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-repid

i_internal_tabname = 'IT_ALV_DATA1'

  • I_STRUCTURE_NAME = 'WA_ALV_DATA'

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = sy-repid

  • I_BYPASSING_BUFFER = 'X'

  • I_BUFFER_ACTIVE = ' '

CHANGING

ct_fieldcat = it_fieldcat1

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = I_BYPASSING_BUFFER

  • I_BUFFER_ACTIVE = ' '

i_callback_program = sy-repid

  • i_callback_pf_status_set = 'SET_STATUS'

  • I_CALLBACK_USER_COMMAND = ' '

  • I_STRUCTURE_NAME = 'WA_ALV_DATA'

  • IS_LAYOUT = IS_LAYOUT

it_fieldcat = it_fieldcat1

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

it_sort = it_sort

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_DEFAULT = 'X'

I_SAVE = 'A'

IS_VARIANT = ES_VARIANT

  • it_events = it_events[]

  • IT_EVENT_EXIT = IT_EVENT_EXIT

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = SY-REPID

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

t_outtab = it_alv_data1

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.

WHEN 'ORT01'.

CLEAR w_message.

CONCATENATE 'The City' rs_selfield-value 'is selected'

INTO w_message SEPARATED BY space.

MESSAGE w_message TYPE 'I'.

WHEN 'LAND1'.

CLEAR w_message.

CONCATENATE 'The Country' rs_selfield-value 'is selected'

INTO w_message SEPARATED BY space.

MESSAGE w_message TYPE 'I'.

WHEN OTHERS.

MESSAGE 'USER COMMAND EXECUTES SUCCESSFULLY' TYPE 'I'.

ENDCASE.

  • MESSAGE 'USER COMMAND EXECUTES SUCCESSFULLY' TYPE 'I'.

ENDCASE.

ENDFORM. "user_command

&----


*& Form PF_STATUS_SET

&----


  • text

----


  • -->EXTAB text

----


FORM pf_status_set USING extab TYPE slis_t_extab.

  • SET PF-STATUS 'STANDARD' EXCLUDING extab.

ENDFORM. "PF_STATUS_SET

&----


*& Form FAREEDA

&----


  • text

----


FORM fareeda.

DATA: it_list_commentary TYPE slis_t_listheader,

wa_list_commentary LIKE LINE OF it_list_commentary.

wa_list_commentary-typ = 'H'.

wa_list_commentary-info = 'THIS IS HEADING'.

APPEND wa_list_commentary TO it_list_commentary.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_list_commentary

i_logo = 'ENJOYSAP_LOGO'

  • I_END_OF_LIST_GRID = I_END_OF_LIST_GRID

  • I_ALV_FORM = I_ALV_FORM

.

ENDFORM. "FAREEDA

form f4_variant.

is_variant-REPORT = sy-repid.

  • is_variant-USERNAME = sy-uname.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = is_variant

  • I_TABNAME_HEADER = I_TABNAME_HEADER

  • I_TABNAME_ITEM = I_TABNAME_ITEM

  • IT_DEFAULT_FIELDCAT = IT_DEFAULT_FIELDCAT

I_SAVE = 'A'

  • I_DISPLAY_VIA_GRID = ' '

IMPORTING

  • E_EXIT = E_EXIT

ES_VARIANT = ES_VARIANT

EXCEPTIONS

NOT_FOUND = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

p_vari = es_variant-variant.

endform.

form initialize_variant.

es_variant1-report = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

I_SAVE = 'A'

CHANGING

cs_variant = ES_VARIANT1

EXCEPTIONS

WRONG_INPUT = 1

NOT_FOUND = 2

PROGRAM_ERROR = 3

OTHERS = 4

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

p_vari = es_variant1-variant.

endform.

pls reward points if useful. dont forget.....

Former Member
0 Kudos

Hi,

Firstly,

Declare an eventcat for it,

DATA: I_EVENTCAT TYPE SLIS_T_EVENT.

then,

PERFORM Z_EVENTCAT USING I_EVENTCAT.

form eventcat

  • -->P_I_EVENTCAT text

----


FORM Z_EVENTCAT USING P_I_EVENTCAT TYPE SLIS_T_EVENT.

DATA: I_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = P_I_EVENTCAT

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

READ TABLE P_I_EVENTCAT WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO

I_EVENT.

IF SY-SUBRC = 0.

MOVE 'TOP_OF_PAGE' TO I_EVENT-FORM.

APPEND I_EVENT TO P_I_EVENTCAT.

ENDIF.

READ TABLE P_I_EVENTCAT WITH KEY NAME = SLIS_EV_PF_STATUS_SET INTO I_EVENT.

IF SY-SUBRC = 0.

MOVE 'SET_PF_STATUS' TO I_EVENT-FORM.

APPEND I_EVENT TO P_I_EVENTCAT.

ENDIF.

CLEAR I_EVENT.

READ TABLE P_I_EVENTCAT INTO I_EVENT WITH KEY NAME = SLIS_EV_USER_COMMAND .

IF SY-SUBRC = 0.

MOVE 'USER_COMMAND' TO I_EVENT-FORM.

APPEND I_EVENT TO P_I_EVENTCAT.

ENDIF.

FORM Z_DISPLAY .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = V_PROGNAME

I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

I_GRID_TITLE = V_GRIDTITLE

I_SAVE = 'A'

IS_LAYOUT = I_LAYOUT

IT_FIELDCAT = I_FIELDCAT[]

IT_SORT = I_SORTINFO

IT_EVENTS = I_EVENTCAT

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

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

ENDFORM. " Z_DISPLAY

FORM Z_GRIDTITLE .

V_GRIDTITLE = 'ALV FOR SALES ORDER DISPLAY'.

ENDFORM. " Z_GRIDTITLE

*TOP OF PAGE.

FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = I_LISTHEADER.

ENDFORM. "TOP_OF_PAGE

*MENU SETTINGS.

FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'ALV_MENU'.

ENDFORM. "SET_PF_STATUS

Regards,

Pritha

Regards points if helpful.

Former Member
0 Kudos

Hi Ram,

we have to pass top-of-page event to i_event internal table and write special Form for that top-of-page by using REUSE_ALV_COMMENTARY_WRITE Function module,,,

Regards,

Kumar.

Former Member
0 Kudos

when ever a new page starts in the output the top of page will trigger

Check this.

http://www.sap-img.com/abap/sample-alv-heading-in-alv.htm

Reward points if useful.