1 CLASS lcl_event_receiver DEFINITION DEFERRED.
2
3 DATA: itab TYPE TABLE OF spfli,
4 wa TYPE spfli.
5 DATA: name TYPE scrfname VALUE 'ALV',
6 container TYPE REF TO cl_gui_custom_container,
7 alv_grid TYPE REF TO cl_gui_alv_grid.
8 DATA: event_receiver TYPE REF TO lcl_event_receiver.
9 DATA: save_ok TYPE sy-ucomm,
10 ok_code TYPE sy-ucomm.
11
12 SELECT * FROM spfli INTO TABLE itab.
13
14 CALL SCREEN 100.
15
16 *&---------------------------------------------------------------------*
17 *& Class LCL_EVENT_RECEIVER
18 *&---------------------------------------------------------------------*
19 * Toolbar and user command event handle
20 *----------------------------------------------------------------------*
21 CLASS lcl_event_receiver DEFINITION.
22 PUBLIC SECTION.
23 METHODS:
24 handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
25 IMPORTING e_object e_interactive,
26 handle_ucomm FOR EVENT user_command OF cl_gui_alv_grid
27 IMPORTING e_ucomm.
28 ENDCLASS. "LCL_EVENT_RECEIVER
29
30 *&---------------------------------------------------------------------*
31 *& Class (Implementation) lcl_event_receiver
32 *&---------------------------------------------------------------------*
33 * Toolbar and user command event handle
34 *----------------------------------------------------------------------*
35 CLASS lcl_event_receiver IMPLEMENTATION.
36 METHOD handle_toolbar.
37 DATA: utoolbar TYPE stb_button.
38 utoolbar-function = 'SHOW'.
39 utoolbar-icon = icon_ppe_vnode.
40 utoolbar-text = 'Show data info'.
41 utoolbar-quickinfo = 'Detail data info'.
42 APPEND utoolbar TO e_object->mt_toolbar.
43 ENDMETHOD. "handle_toolbar
44 METHOD handle_ucomm.
45 DATA rowid_t TYPE lvc_t_row.
46 DATA temp TYPE lvc_s_row.
47 CASE e_ucomm.
48 WHEN 'SHOW'.
49 CALL METHOD alv_grid->get_selected_rows
50 IMPORTING
51 et_index_rows = rowid_t .
52 IF sy-subrc = 0.
53 PERFORM get_selected_row_info
54 TABLES
55 rowid_t.
56 ENDIF.
57 ENDCASE.
58 ENDMETHOD. "handle_ucomm
59 ENDCLASS. "lcl_event_receiver
60
61 *&---------------------------------------------------------------------*
62 *& Form get_selected_row_info
63 *&---------------------------------------------------------------------*
64 * Get_selected_row_info
65 *----------------------------------------------------------------------*
66 * -->ROWINFO text
67 *----------------------------------------------------------------------*
68 FORM get_selected_row_info TABLES rowinfo TYPE lvc_t_row.
69 DATA rowid_s TYPE lvc_s_row.
70 DATA: str TYPE string,
71 step VALUE '-' .
72 LOOP AT rowinfo INTO rowid_s.
73 READ TABLE itab INTO wa INDEX rowid_s-index.
74 CONCATENATE wa-carrid wa-connid wa-cityfrom wa-cityto INTO str SEPARATED BY step.
75 MESSAGE i001(zmess) WITH str.
76 ENDLOOP.
77 ENDFORM. "get_selected_row_info
78
79 MODULE status_0100 OUTPUT.
80 IF container IS INITIAL.
81 CREATE OBJECT container
82 EXPORTING
83 container_name = name.
84 CREATE OBJECT alv_grid
85 EXPORTING
86 i_parent = container.
87 CALL METHOD alv_grid->set_table_for_first_display
88 EXPORTING
89 i_structure_name = 'SPFLI'
90 CHANGING
91 it_outtab = itab.
92 * Create and set event
93 CREATE OBJECT event_receiver.
94 SET HANDLER event_receiver->handle_toolbar FOR alv_grid.
95 SET HANDLER event_receiver->handle_ucomm FOR alv_grid.
96 * Set interaction
97 CALL METHOD alv_grid->set_toolbar_interactive.
98 ENDIF.
99 ENDMODULE. " STATUS_0100 OUTPUT
100
101 MODULE user_command_0100 INPUT.
102 save_ok = ok_code.
103 CLEAR ok_code.
104 CASE save_ok.
105 WHEN 'EXIT'.
106 LEAVE PROGRAM.
107 ENDCASE.
108 ENDMODULE. " USER_COMMAND_0100 INPUT

增加自定义按钮的结构如下:

FUNCTION                     功能代码
BUTN_TYPE                 按钮类型
                                              可用的按钮类型:
                                                 0 Button(normal)
                                                 1 Menu and default button
                                                 2 Menu
                                                 3 分割符
                                                 4 Radio button
                                                 5 Checkbox
                                                 6 Menu entry
ICON                          按钮图标(可选)
TEXT                         按钮文本(可选)
QUICKINFO               按钮的悬停文本(可选)
DISABLED                 灰化

【转】自定义ALV控件的工具条按钮的更多相关文章

  1. 自定义ALV控件的工具条按钮

    *&---------------------------------------------------------------------* *& Report YTEST028 ...

  2. winfrom控件——基本工具

    窗体事件:属性—事件—load(双击添加) 窗体加载完之后的事件: 删除事件:先将属性事件里挂号的事件名删掉(行为里的load)再删后台代码里的事件. 控件:工具箱里(搜索—双击或点击拖动到窗体界面) ...

  3. 安卓自定义组合控件--toolbar

    最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...

  4. asp.net webform 自定义分页控件

    做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...

  5. C# DataGridView自定义分页控件

    好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...

  6. 自定义组合控件,适配器原理-Day31

    自定义组合控件,适配器原理-Day31 mobile2.1 主页定义 手机上锁功能 1.弹出设置密码框. 手机下载进度 自定定义控件 控件的属性其实就是控件类一个属性设置属性调用类的set方法方法, ...

  7. ExtJs5_继承自定义一个控件

    Extjs的开发都可以遵循OOP的原则,其对类的封装也很完善了.自定义一个控件最简单的办法就是继承一个已有的控件.根据上一节的需要,我做了一个Button的子类.首先根据目录结构,在app目录下建立一 ...

  8. 6、手把手教你Extjs5(六)继承自定义一个控件

    Extjs的开发都可以遵循OOP的原则,其对类的封装也很完善了.自定义一个控件最简单的办法就是继承一个已有的控件.根据上一节的需要,我做了一个Button的子类.首先根据目录结构,在app目录下建立一 ...

  9. VS2010中如何实现自定义MFC控件

    本文简要讲解在VS2010中怎样实现自定义MFC控件的知识,以下是分步骤说明. 一.自定义一个空白控件  1.先创建一个MFC工程 NEW Project-->MFC-->MFC Appl ...

随机推荐

  1. Vagrant批量安装CentOS7

    环境准备 下载virtualbox https://download.virtualbox.org/virtualbox/6.1.10/VirtualBox-6.1.10-138449-Win.exe ...

  2. IIS应用程序池配置详解及优化

    参数说明 1.常规 属性名称 属性详解 NET CLR 版本 配置应用程序池,以加载特定版本的 .NET CLR.选定的 CLR版本应与应用程序所使用的相应版本的 .NET Framework 对应. ...

  3. Jupyter Notebook在多个虚拟环境配置与使用

    1 问题描述 使用Anaconda配置了包括Pytorch.Tensorflow等多个虚拟环境后,依然无法使用Jupyter Notebook选择不同的虚拟环境运行代码,问题如下图所示. 2 解决方法 ...

  4. 点击劫持(Iframe clickJack)练习

    实验内容: 寻找一个合适的网站放入到iframe标签中.实验中测试了包括知网首页及登录界面.淘宝首页及登录界面,百度首页,微信下载界面.发现淘宝登录界面无法放入,会直接跳转到淘宝真实的登录界面,其他的 ...

  5. 从零到一快速搭建个人博客网站(域名自动跳转www,二级域名使用)(二)

    前言 本篇文章是对上篇文章从零到一快速搭建个人博客网站(域名备案 + https免费证书)(一)的完善,比如域名自动跳转www.二级域名使用等. 域名自动跳转www 这里对上篇域名访问进行优化,首先支 ...

  6. 【原创】Linux PCI驱动框架分析(一)

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  7. winform关闭登录窗体打开主窗体的方法

    实际使用 Program.cs代码 //声明一个线程 private static System.Threading.Mutex mutex; /// <summary> /// 应用程序 ...

  8. git使用下

    Git 内部工作原理 Git 本质上是一个内容寻址文件系统,最初是一套面向版本控制系统的工具集,而不是一个完整的用户友好的版本控制系统.因此它还包含了一些用于完成底层工作的命令,这些命令被称为&quo ...

  9. 微信网页授权多次回调code请求

    最近在做微信网页授权的时候遇到一个问题如果直接从后台把微信授权的url参数什么的拼装好,然后直接redirect 这个url 会导致时不时的多次请求回调的url .网上说是因为网络原因,如果10s没有 ...

  10. 腾讯云联合多家生态伙伴,重磅开源 SuperEdge 边缘容器项目

    在2020年12月19-20日腾讯 Techo Park 开发者大会上,腾讯云联合英特尔.VMware 威睿.虎牙.寒武纪.美团.首都在线,共同发布 SuperEdge 边缘容器开源项目. Super ...