Hi Experts,
I am using object oriented approach to define buttons on ALV toolbar. I have used the CLASS lcl_event_receiver and implemented the method handle_toolbar and handle_user_command. I have no problem with user defined buttons (Customized code) are working fine but i also added some standard ALV buttons( Sort Up, Sort Down, Filter , Local file etc ) but they are not working as i expected.
Code :
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
*--To add new functional buttons to the ALV toolbar
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive, "#EC NEEDED
*--To control menu buttons
handle_menu_button
FOR EVENT menu_button OF cl_gui_alv_grid
IMPORTING e_object e_ucomm,
*--To implement user commands
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm ,
*--Hotspot click control
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
ENDCLASS. "lcl_event_receiver DEFINITION
* CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
* Handle toolbar
METHOD handle_toolbar.
PERFORM handle_toolbar USING e_object e_interactive .
ENDMETHOD. "handle_toolbar
*----------------------------------------------------------------------*
* Handle user command
METHOD handle_user_command.
PERFORM select_rows.
PERFORM handle_user_command USING e_ucomm .
ENDMETHOD. "handle_user_command
*----------------------------------------------------------------------*
*--Handle Hotspot Click
METHOD handle_hotspot_click .
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no .
ENDMETHOD . "handle_hotspot_click
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
FORM handle_toolbar USING e_object TYPE REF TO cl_alv_event_toolbar_set
e_interactive type char1.
DATA: gs_toolbar TYPE stb_button.
*Select all
CLEAR gs_toolbar.
gs_toolbar-function = '&ALL'.
gs_toolbar-icon = icon_select_all.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Select all'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Deselect all
CLEAR gs_toolbar.
gs_toolbar-function = '&SAL'.
gs_toolbar-icon = icon_deselect_all.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Deselect all'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Sort in ascending order
CLEAR gs_toolbar.
gs_toolbar-function = '&OUP'.
gs_toolbar-icon = icon_sort_up.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Sort in ascending order'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Sort in descending order
CLEAR gs_toolbar.
gs_toolbar-function = '&ODN'.
gs_toolbar-icon = icon_sort_down.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Sort in descending order'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Set filter
CLEAR gs_toolbar.
gs_toolbar-function = '&ILT'.
gs_toolbar-icon = icon_filter.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Set filter'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Total
CLEAR gs_toolbar.
gs_toolbar-function = '&UMC'.
gs_toolbar-icon = icon_sum.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Total'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Spreadsheet...
CLEAR gs_toolbar.
gs_toolbar-function = '&XXL'.
gs_toolbar-icon = icon_xxl.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Spreadsheet...'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Word processing...
CLEAR gs_toolbar.
gs_toolbar-function = '&AQW'.
gs_toolbar-icon = icon_word_processing.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Word processing...'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Local file...
CLEAR gs_toolbar.
gs_toolbar-function = '%PC'.
gs_toolbar-icon = icon_export.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Local file...'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Mail recipient
CLEAR gs_toolbar.
gs_toolbar-function = '%SL'.
gs_toolbar-icon = icon_mail.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Mail recipient'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Change layout...
CLEAR gs_toolbar.
gs_toolbar-function = '&OL0'.
gs_toolbar-icon = icon_alv_variants.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Change layout...'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Select layout...
CLEAR gs_toolbar.
gs_toolbar-function = '&OAD'.
gs_toolbar-icon = icon_alv_variant_choose.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Select layout...'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Save layout...
CLEAR gs_toolbar.
gs_toolbar-function = '&AVE'.
gs_toolbar-icon = icon_alv_variant_save.
gs_toolbar-butn_type = 0.
gs_toolbar-quickinfo = 'Save layout...'.
APPEND gs_toolbar TO e_object->mt_toolbar.
*Append seperator
CLEAR gs_toolbar.
gs_toolbar-butn_type = 3.
APPEND gs_toolbar TO e_object->mt_toolbar.
ENDFORM. " handle_toolbar
************************************************************************ *Set handler for toolbar functions ************************************************************************ create object handler_object. SET HANDLER handler_object->handle_toolbar FOR gr_alvgrid. SET HANDLER handler_object->handle_user_command FOR gr_alvgrid. SET HANDLER handler_object->handle_hotspot_click FOR gr_alvgrid.
If anybody worked on this please help me.