sapdev logo background
sapdev logo sapdev logo
Comments

ALVtree toolbar processing




Define class to handle user defined ALVtree toolbar buttons. Insert at end of DATA declaration section but before any ABAP processing.


*--------------------------------------------------------------*
*   INCLUDE ZTEST_TOOLBAR_EVENT_RECEIVER                       *
*--------------------------------------------------------------*
data mr_toolbar type ref to cl_gui_toolbar.  "Add to top include

CLASS lcl_toolbar_event_receiver DEFINITION.

  PUBLIC SECTION.
    METHODS: on_function_selected
               FOR EVENT function_selected OF cl_gui_toolbar
                 IMPORTING fcode,

             on_toolbar_dropdown
               FOR EVENT dropdown_clicked OF cl_gui_toolbar
                 IMPORTING fcode
                           posx
                           posy.
ENDCLASS.


*-------------------------------------------------------------*
*       CLASS lcl_toolbar_event_receiver IMPLEMENTATION
*-------------------------------------------------------------*
*       ........                                              *
*-------------------------------------------------------------*
CLASS lcl_toolbar_event_receiver IMPLEMENTATION.

  METHOD on_function_selected.
    DATA: ls_sflight TYPE sflight.
    DATA: lt_list_commentary TYPE slis_t_listheader,
          l_logo             TYPE sdydo_value.

*   Processing for user defined tollbar button goes here
    CASE fcode.
      WHEN 'NEXT'.
      WHEN 'DELETE'.
        DATA: lt_selected_node TYPE lvc_t_nkey.
        DATA: e_selected_node     TYPE lvc_nkey,
              e_fieldname         TYPE lvc_fname.
        DATA: lt_outtab_line(100)  TYPE c,
              lt_node_text         TYPE lvc_value.

        CALL METHOD gd_tree->get_selected_nodes
                CHANGING
                   ct_selected_nodes = lt_selected_node.

      WHEN 'INSERT_LC'.
*     Code for function code INSERT_LC goes here
      WHEN 'INSERT_FC'.
*     Code for function code INSERT_FC goes here
      WHEN 'INSERT_FS'.
*     Code for function code INSERT_FS goes here
      WHEN 'INSERT_LS'.
*     Code for function code INSERT_LS goes here
      WHEN 'INSERT_NS'.
*     Code for function code INSERT_NS goes here
    ENDCASE.

*   update frontend
    CALL METHOD gd_tree->frontend_update.
  ENDMETHOD.

  METHOD on_toolbar_dropdown.
* create contextmenu
    DATA: l_menu TYPE REF TO cl_ctmenu,
          l_fc_handled TYPE as4flag.

    CREATE OBJECT l_menu.
    CLEAR l_fc_handled.

*   Setup Insert button so options are displayed as drop doan menu
    CASE fcode.
      WHEN 'INSERT_LC'.
        l_fc_handled = 'X'.
*       insert as last child
        CALL METHOD l_menu->add_function
                EXPORTING fcode   = 'INSERT_LC'
                text    = 'Insert New Line as Last Child'.  "#EC NOTEXT
*       insert as first child
        CALL METHOD l_menu->add_function
                EXPORTING fcode   = 'INSERT_FC'
                text    = 'Insert New Line as First Child'. "#EC NOTEXT
*       insert as next sibling
        CALL METHOD l_menu->add_function
                EXPORTING fcode   = 'INSERT_NS'
                text    = 'Insert New Line as Next Sibling'."#EC NOTEXT
*       insert as last sibling
        CALL METHOD l_menu->add_function
                EXPORTING fcode   = 'INSERT_LS'
                text    = 'Insert New Line as Last Sibling'."#EC NOTEXT
*       insert as first sibling
        CALL METHOD l_menu->add_function
                EXPORTING fcode   = 'INSERT_FS'
              text    = 'Insert New Line as First Sibling'. "#EC NOTEXT
    ENDCASE.

* show dropdownbox
    IF l_fc_handled = 'X'.
      CALL METHOD mr_toolbar->track_context_menu
        EXPORTING
            context_menu = l_menu
            posx         = posx
            posy         = posy.
    ENDIF.

  ENDMETHOD.
ENDCLASS.



comments powered by Disqus