【转】自定义ALV控件的工具条按钮
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控件的工具条按钮的更多相关文章
- 自定义ALV控件的工具条按钮
*&---------------------------------------------------------------------* *& Report YTEST028 ...
- winfrom控件——基本工具
窗体事件:属性—事件—load(双击添加) 窗体加载完之后的事件: 删除事件:先将属性事件里挂号的事件名删掉(行为里的load)再删后台代码里的事件. 控件:工具箱里(搜索—双击或点击拖动到窗体界面) ...
- 安卓自定义组合控件--toolbar
最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...
- asp.net webform 自定义分页控件
做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...
- C# DataGridView自定义分页控件
好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...
- 自定义组合控件,适配器原理-Day31
自定义组合控件,适配器原理-Day31 mobile2.1 主页定义 手机上锁功能 1.弹出设置密码框. 手机下载进度 自定定义控件 控件的属性其实就是控件类一个属性设置属性调用类的set方法方法, ...
- ExtJs5_继承自定义一个控件
Extjs的开发都可以遵循OOP的原则,其对类的封装也很完善了.自定义一个控件最简单的办法就是继承一个已有的控件.根据上一节的需要,我做了一个Button的子类.首先根据目录结构,在app目录下建立一 ...
- 6、手把手教你Extjs5(六)继承自定义一个控件
Extjs的开发都可以遵循OOP的原则,其对类的封装也很完善了.自定义一个控件最简单的办法就是继承一个已有的控件.根据上一节的需要,我做了一个Button的子类.首先根据目录结构,在app目录下建立一 ...
- VS2010中如何实现自定义MFC控件
本文简要讲解在VS2010中怎样实现自定义MFC控件的知识,以下是分步骤说明. 一.自定义一个空白控件 1.先创建一个MFC工程 NEW Project-->MFC-->MFC Appl ...
随机推荐
- matplotlib的学习5-legend图例
import matplotlib.pyplot as plt import numpy as np ''' legend 图例就是为了帮我们展示出每个数据对应的图像名称. 更好的让读者认识到你的数据 ...
- Numpy的学习6-深浅赋值(copy&deep copy)
# = 的赋值方式会带有关联性 import numpy as np a = np.arange(4) # array([0, 1, 2, 3]) b = a c = a d = b # 改变a的第一 ...
- 查询id为键的数组
public static function getKeyValuePairs() { $sql = 'SELECT id, name FROM ' . self::tableName() . ' O ...
- Django + FastDFS (分布式远程服务器存储文件)
之前随笔过一篇Docker来搭建分布式文件系统FastDfs就跳过了 https://www.cnblogs.com/xcsg/p/10901461.html FastDFS的Python (dja ...
- java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,
1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...
- 《改善python程序的91个建议》读书笔记
推荐 <改善Pthon程序的91个建议>是从基本原则.惯用方法.语法.库.设计模式.内部机制.开发工具和性能优化8个方面深入探讨编写高质量python代码的技巧.禁忌和最佳实践. 读书就如 ...
- Code Review 最佳实践
ref: Code review Best Practices 文章将了以下内容: 3w:why.what.when 进行 code review code review 之前的准备 执行 code ...
- 利用Comparable接口实现对对象数组的排序
Arrays 类中的sort方法承诺可以对对象数组进行排序,但是需要对象所属的类实现Comparable接口 任何实现Comparable接口的对象都需要实现该方法 并且在Java SE 5.0之前该 ...
- JavaDailyReports10_06
今日收获: 一.所有引用类型变量的初始化一定要使用new 关键字定义声明,空指针异常的错误原因可能是变量没有初始化导致的. 每一个类体的数据成员一定要在实例化的同时赋值,用一个实例化的类实现问题中最小 ...
- 定期删除文件夹中的文件——C#
下面是自定义的一个函数,参数分别为:文件夹名称.文件后缀.保存天数 逻辑是获取当前系统的时间,和文件创建时间去作差,如果结果大于保存天数,就删除它 /// <summary> /// 定期 ...