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. 本科入行可能吗?做到这3点,斩获BAT offer不是梦

    大家好,前两天有一个小伙伴加我微信咨询.他说他不想读研,想要直接本科毕业就参与工作.但是又担心自己由于没有学历优势,无法在校招当中获得机会,于是便来向我请教,能不能指点迷津提供一些具体的实操性措施.与 ...

  2. 【入门必看】不理解「对象」?很可能有致命bug:简单的Python例子告诉你

    简介:越来越多的人要在学习工作中用到『编程』这个工具了,其中很大一部分人用的是Python.大部分人只是做做简单的科研计算.绘图.办公自动化或者爬虫,但-- 这就不需要理解「指针与面向对象」了吗? 在 ...

  3. Python朗读excel中的英文单词

    安装win32com的时候出现了诸多问题,直接贴代码: 1 ''' 2 #利用python朗读excel里面的单词 3 ''' 4 5 #开始导入所需库 6 import xlrd 7 from bs ...

  4. Python制作折线图

    利用python的第三方包Pygal制作简单的折线图. 申明:本文仅供学习交流使用.源码大部分来自<python编程从入门到实践>:如有侵权,请联系我删除. 1 #!usr/bin/env ...

  5. [实用指南]如何使您的旧代码库(遗留代码)符合MISRA C 2012编码规范?

    重用旧代码是现实,但是在安全关键型软件项目中重用旧代码并实现MISRA C 2012的完全合规性是艰巨的任务. 最初的MISRA原则是为了在开发代码时应用而创建的,即使文档本身也有警告: " ...

  6. 【进程/作业管理】篇章一:Linux进程及其管理(系统监控类工具)----glances、dstat

    glances   dstat   glances命令详解 相对于htop工具的使用,这里介绍一下glances工具的使用,我个人是比较喜欢这款工具的,主要就是由于glances这款工具可以将系统状态 ...

  7. 程序员你是如何使用镜像中心Harbor的?

    背景 harbor即docker的私服:管理公司内部输出的镜像制品: 是VMware公司中国团队为企业用户设计的镜像注册服务器,用途:存储和分发docker镜像: 在官方的docker registr ...

  8. Oracle创建表空间创建用户授权

    注意:SYS用户下执行.sys登录必须为sysdba身份.查看数据文件存放位置. select * from dba_data_files; 1.创建表空间 CREATE TABLESPACE tp_ ...

  9. [leetcode]罗马数字和阿拉伯数字相互转换

    罗马转阿拉伯 public int romanToInt(String s) { /* 从左到右依次根据哈希表进行加法 如果是"CM"900这种情况就要执行+M和-C处理 */ i ...

  10. Android驱动学习-app调用内核驱动过程(驱动框架回顾)

    考研已经过去了,android驱动的学习也断了半年多了,现在重新捡起来学习,回顾一下Android驱动的大体框架. Android系统的核心是java,其有一个David虚拟机.Android-app ...