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. 22期老男孩Ptython全栈架构师视频教程

    老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...

  2. MySQL数据库 数据的更新

    有表A,B,有name,sal,deptNo1,数据更新update update A set sal=500 where name='zhangsan';(一次可更改多个值,用逗号隔开)2,数据的删 ...

  3. js上 初识JavaScript

    1.JavaScript简介 **JavaScript ** 是什么?(重点) Js是一种专门为网页交互设计的客户端(浏览器端)的脚本语言: Js与html和css有相似之处,都在浏览器端解析: Js ...

  4. DirectX12的初始化

    DirectX12的初始化主要分为以下若干步骤: 创建device和gifactory 创建与GPU通信同步相关的objects,command和fence 创建swap chain 为render ...

  5. 阿里云服务器Centos7上使用Nginx部署https协议的网站

    1,申请域名证书成功后,下载压缩包,一定要选择Nginx的证书类型,解压后得到一个key文件一个pem文件,将这两个文件上传到服务器的root目录 2,打开nginx配置文件 vim /etc/ngi ...

  6. python SQLAlchemy反射生成models

    1.安装SQLAcodegen pip install sqlacodegen 2.使用sqlacodegen生成案列 sqlacodegen mysql://root:123456@127.0.0. ...

  7. java中使用IO流将以文件中的内容去取到指定的文件中

    public class Demo12 { public static void main(String[] args) throws IOException { File file=new File ...

  8. Pytest测试框架(一):pytest安装及用例执行

    PyTest是基于Python的开源测试框架,语法简单易用,有大量的插件,功能非常多.自动检测测试用例,支持参数化,跳过特定用例,失败重试等功能. 安装 pip install -U pytest  ...

  9. 回顾maven项目的spring boot相关知识点

    2021新年快乐! 在参加完研究生考试后,感觉像是放下了一个大负担,但并不能就此以为什么都结束了.反而,当我今天去看了一下之前老师带领我们班级做的一个maven项目,感觉像是第一次看到这个,十分陌生. ...

  10. ElasticSearch教程——自定义分词器(转学习使用)

    一.分词器 Elasticsearch中,内置了很多分词器(analyzers),例如standard(标准分词器).english(英文分词)和chinese(中文分词),默认是standard. ...