Skip to Content
0
Former Member
Apr 24, 2009 at 07:39 AM

Standard ALV buttons not working.

1330 Views

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.