alv tree 添加工具栏按钮

来源:互联网 发布:去广告的软件 编辑:程序博客网 时间:2024/05/17 06:53

在全局数据中加入:

       g_toolbar    TYPE REF TO cl_gui_toolbar,    "alv tree 工具栏

 

在类定义中加入:

PUBLIC SECTION.

      METHODS on_function_selected                         "添加工具栏按钮
      FOR EVENT function_selected OF cl_gui_toolbar
      IMPORTING fcode.

 

在类现实中加入:

  METHOD on_function_selected.
    DATA : it_selected_nodes TYPE lvc_t_nkey,
               l_selected_node TYPE lvc_nkey,
               l_rc TYPE c.
    CASE fcode.
      WHEN 'DELETE'.
        CALL METHOD g_alv_tree->get_selected_nodes     "获取用户选择数据节点
          CHANGING
            ct_selected_nodes = it_selected_nodes.
        CALL METHOD cl_gui_cfw=>flush.
        READ TABLE it_selected_nodes INTO l_selected_node INDEX 1.
        IF sy-subrc EQ 0.
          CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
            EXPORTING
              textline1      = 'Do you really want to delete'(902)
              textline2      = 'this node and all its subnodes?'(903)
              titel          = 'Confirmation'(904)
              cancel_display = ' '
            IMPORTING
              answer         = l_rc.
          IF l_rc EQ 'J'.
            CALL METHOD g_alv_tree->delete_subtree       "删除数据节点
              EXPORTING
                i_node_key = l_selected_node.
            CALL method g_alv_tree->frontend_update.
          ENDIF.
        ENDIF.
    ENDCASE.
  ENDMETHOD.

 

在类注册中添加: 

      SET HANDLER l_event_receiver->on_function_selected FOR g_toolbar.

 

在BUILD_TREE中添加:

    PERFORM change_toolbar.      

    FORM change_toolbar .
    CALL METHOD g_alv_tree->get_toolbar_object
      IMPORTING
      er_toolbar = g_toolbar.
    CHECK NOT g_toolbar IS INITIAL.
    CALL METHOD g_toolbar->add_button
      EXPORTING
      fcode     = ''
      icon      = ''
      butn_type = cntb_btype_sep.
    CALL METHOD g_toolbar->add_button
      EXPORTING
      fcode     = 'DELETE'
      icon      = '@11@'
      butn_type = cntb_btype_button
      text      = ''
      quickinfo = text-901.
    ENDFORM.                    " change_toolbar