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. HTTPS和HTTP的那些事

    随着信息安全变得越来越重要,在浏览器.搜索引擎.CA机构.大型互联网企业的共同促进下,互联网迎来了"HTTPS加密时代".HTTPS在HTTP上建立了SSL加密层,是HTTP协议的 ...

  2. selenium IDE使用-1

    selenium 硒 Mercury汞,外国人喜欢取这化学的名字 一.selenium概述 1.selenium是开源免费的,针对web应用程序功能自动化测试的工作. 2.做功能自动化的原因:回归测试 ...

  3. 一次数独生成及解题算法的剖析(Java实现)

    数独生成及解题算法剖析(Java实现) 关键词 数独9x9 数独生成算法 数独解题算法 序言 最近业务在巩固Java基础,编写了一个基于JavaFX的数独小游戏(随后放链接).写到核心部分发现平时玩的 ...

  4. Linux系列之makefile的简单入门

    什么是makefile呢? 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译, ...

  5. Gradle 是干什么吃的?

    Gradle维基解释:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML.当前其支 ...

  6. python scipy 求解简单线性方程组和fmin求函数最小值

    ###这是一个利用内置函数求最小值#####def func(x): return x ** 2 - 2 *x x = 1 func(x) opt.fmin(func ,x)## 用scipy求解线性 ...

  7. PHP比较数组、对象是否为空

    PHP简单对比对象.数组是不是为空: 1 <?php 2 /*简单的比较对象和数组是不是为空*/ 3 4 #定义空类EmptyClass 5 class EmptyClass{} 6 7 $em ...

  8. Core3.0中Swagger使用JWT

    前言 学习ASP.NETCore,原链接 https://www.cnblogs.com/laozhang-is-phi/p/9511869.html 原教程是Core2.2,后期也升级到了Core3 ...

  9. python初学者-输入一个数判断奇偶性

    num = int(input("请输入一个整数:")) if num%2 == 0: print("这个数是偶数",num) else: print(&quo ...

  10. 基于Redis的消息队列使用:spring boot2.0整合redis

    一 . 引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...