ALV拦截标准工具栏的点击事件(方法三)

之前介绍过两种拦截标准工具栏点击事件的办法,现在又发现了第三种,比前两种简单。
见效果图

在这里插入图片描述

说明: 通过alv事件before_user_command 可以拦截到所有的按钮事件,右键菜单事件。并可以通过set_user_command方法设置不同的事件或设置为空来屏蔽该事件的执行。

废话不多说,上代码
REPORT test.
CLASS lcl_event DEFINITION .
  PUBLIC SECTION.

    CLASS-METHODS:
      toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive,
      before_user_command FOR EVENT before_user_command OF cl_gui_alv_grid IMPORTING e_ucomm sender.
ENDCLASS.

CLASS lcl_event IMPLEMENTATION.
  METHOD before_user_command.

    CASE e_ucomm.
      WHEN '&SORT_ASC'.
        MESSAGE '我是倒排序哦!' TYPE 'I'.
        sender->set_user_command( '&SORT_DSC'  ).
      WHEN '&XXL'.
        MESSAGE '可以先对数据处理后再导出到excel' TYPE 'I'.

      WHEN '&SORT_DSC'.
        MESSAGE '我是正排序哦!' TYPE 'I'.
        sender->set_user_command( '&SORT_ASC'  ).
      WHEN 'SORT'.
        MESSAGE '调用标准的顺序排序' TYPE 'I'.
        sender->set_user_command( '&SORT_ASC'  ).
    ENDCASE.

  ENDMETHOD.
  METHOD toolbar.
    DATA ls_toolbar TYPE stb_button.
    ls_toolbar-function = 'SORT'.
    ls_toolbar-text = 'SORT'.
    APPEND ls_toolbar TO e_object->mt_toolbar .
  ENDMETHOD.
ENDCLASS.

DATA o_con TYPE REF TO cl_gui_docking_container.
DATA gt_makt TYPE TABLE OF makt.

DATA ls_row_no TYPE lvc_s_roid.
DATA ls_col_info TYPE  lvc_s_col.
DATA gt_fcat TYPE lvc_t_fcat.
DATA gs_fcat TYPE lvc_s_fcat.

DATA o_alv TYPE REF TO cl_gui_alv_grid.

DEFINE __fcat.
  gs_fcat-fieldname = &1.
  gs_fcat-reptext = &2.
  gs_fcat-ref_table = 'MAKT'.
  gs_fcat-ref_field = &1.
  APPEND gs_fcat TO gt_fcat.
end-of-definition.

PARAMETER p_p1 TYPE c.

AT SELECTION-SCREEN OUTPUT.
  SELECT * INTO TABLE gt_makt FROM makt.
  IF o_con IS INITIAL.
    CREATE OBJECT :
    o_con EXPORTING side = cl_gui_docking_container=>dock_at_bottom ratio = 90,
    o_alv EXPORTING i_parent = o_con .

    __fcat:
    'MATNR' '物料号',
    'MAKTX' '物料描述'.

    SET HANDLER lcl_event=>before_user_command lcl_event=>toolbar FOR o_alv .

    o_alv->set_table_for_first_display( CHANGING it_outtab = gt_makt it_fieldcatalog = gt_fcat ).

  ENDIF.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sap虫子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值