SAP ABAP OOALV添加自定义按钮

在SAP报表开发中,为满足不同公司的风格需求,常常需要去掉ALV报表的默认工具栏并添加自定义按钮。这通常通过创建事件处理类来实现,包括添加按钮的方法和响应用户命令的方法。首先创建一个类,如`lcl_event_receiver`,包含`handle_toolbar`和`handle_user_command`两个方法,分别用于添加按钮和处理按钮事件。接着在`set_toolbar`方法中定义按钮,并在`set_handler`中设置事件处理对象。最后,通过`set_toolbar_interactive`设置交互式工具栏。

SAP在做报表开发中,不同公司对报表的风格往往各异,为此经常在使用OO方法做ALV报表中需要去掉自带的工具栏而自行添加一些工具按钮,下面将简单介绍一下添加按钮及如何响应的实现方法:
步骤一:创建一个事件处理类
   CLASS lcl_event_receiver DEFINITION.
* public attributes and method
  PUBLIC SECTION.
    METHODS:
     handle_toolbar     FOR EVENT toolbar OF cl_gui_alv_grid
       IMPORTING
         e_object,
     handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
       IMPORTING
         e_ucomm,
ENDCLASS.                    "lcl_event_receiver DEFINITION
注意这个事件处理类中添加了两个方法,第一个方法负责往工具栏上添加按钮,第二个方法用来响应工具栏上按钮的动作
步骤二:类的实现
   CLASS lcl_event_receiver IMPLEMENTATION.

* method toolbar handler
  METHOD handle_toolbar.
   PERFORM set_toolbar CHANGING e_object.
  ENDMETHOD.                    "handle_toolbar
 
    METHOD handle_user_command.
*   Handle own functions defined in the toolbar
    CASE e_ucomm.
      WHEN 'ADD'.
       PERFORM xyz. “这里你想干嘛就可以干嘛
    ENDCASE.

  ENDMETHOD.                    "handle_user_command
 
   ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
步骤三:在FORM-----set_toolbar 中添加button
   FORM set_toolbar 
CHANGING prf_object TYPE REF TO cl_alv_event_toolbar_set.

  CLEAR prf_object->mt_toolbar.

  CLEAR  gs_toolbar.
  MOVE   'ADD'            TO   gs_toolbar-function.
  MOVE                    TO      gs_toolbar-quickinfo.
  MOVE                    TO   gs_toolbar-text.
  MOVE   ' '              TO   gs_toolbar-disabled.
  INSERT gs_toolbar       INTO prf_object->mt_toolbar INDEX 1.

ENDFORM.                    " set_toolbar1
 
步骤四:创建事件处理对象--这一步一般在  grf_grid->set_table_for_first_display 之后
   SET HANDLER grf_event_receiver->handle_user_command FOR grf_grid.
  SET HANDLER grf_event_receiver->handle_toolbar  FOR grf_grid.
  CALL METHOD grf_grid->set_toolbar_interactive.
 
 
注意:STB_BUTTON结构包含的字段
FUNCTION         UI_FUNC    CHAR 70 0 Function Code
ICON             ICONNAME   CHAR 30 0 Name of an Icon
QUICKINFO        ICONQUICK  CHAR 30 0 Quickinfo for an icon
BUTN_TYPE        TB_BTYPE   INT4 10 0 Toolbar button type
DISABLED         CHAR            1  0 Disabled
TEXT             TEXT40     CHAR 40 0 Text, 40 Characters Long
CHECKED          CHAR             1 0 Printed
TB_BTYPE 的可选择值 ,主要用来决定按钮的类型  
0 Button (normal)
1 Menu and default button
2 Menu
3 Separator
4 Radio button
5 Checkbox
6 Menu entry

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值