自定义ALV控件的工具条按钮
*&---------------------------------------------------------------------*
*& Report YTEST028
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------* REPORT ytest028.
*定义使用图标,按钮使用
INCLUDE <icon>. *定义事件类型
CLASS lcl_event_receiver DEFINITION DEFERRED. *功能码返回值
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm. *定义事件
DATA event_receiver TYPE REF TO lcl_event_receiver. *定义内表,变量需要传递,不加header line
DATA: wa_spfli TYPE TABLE OF spfli ,"WITH HEADER LINE.
a_spfli LIKE spfli. *内表赋值
SELECT * INTO TABLE wa_spfli FROM spfli. *定义窗口定制控制,定义ALV对象
DATA: wa_container TYPE scrfname VALUE 'ALVDATA',
alv_grid TYPE REF TO cl_gui_alv_grid,
wa_custom_container TYPE REF TO cl_gui_custom_container. *直接调用窗口
CALL SCREEN . *定义是件的属性和方法
CLASS lcl_event_receiver DEFINITION.
*公共事件
PUBLIC SECTION.
METHODS:
*按钮处理方法
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
*用户交互是件处理
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "lcl_event_receiver DEFINITION *实现方法
CLASS lcl_event_receiver IMPLEMENTATION .
*处理按钮事件
METHOD handle_toolbar.
DATA:ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE TO ls_toolbar-butn_type.
*取工具条接口
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
*加入功能码
MOVE ' SHOW_DETA' TO ls_toolbar-function.
*图标,可以用SHOWICON系统程序查阅需使用的图标
MOVE icon_ppe_vnode TO ls_toolbar-icon.
*按钮文本和提示
MOVE '航班明细显示' TO ls_toolbar-quickinfo.
MOVE '航班明细显示'() TO ls_toolbar-text.
MOVE '' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar *处理功能码事件
METHOD handle_user_command.
DATA:lt_rows TYPE lvc_t_row.
CASE e_ucomm.
*定义的按钮事件
WHEN 'SHOW_DETA'.
*取得所有选择
CALL METHOD alv_grid->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc EQ .
*提示成功
MESSAGE '已选择行' TYPE 'S'.
*调用子程序显示选择行内容
PERFORM messdeta TABLES lt_rows.
ENDIF.
ENDCASE.
ENDMETHOD. "handle_user_command ENDCLASS. "clc_event_receiver IMPLEMENTATION *&---------------------------------------------------------------------*
*& Module STATUS_0300 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*用户交互
MODULE status_0300 OUTPUT.
SET PF-STATUS 'STATUS1'.
* SET TITLEBAR 'xxx'. *如果窗口还没有创建ALV对象则它
IF wa_custom_container IS INITIAL.
CREATE OBJECT wa_custom_container
EXPORTING
container_name = wa_container.
CREATE OBJECT alv_grid
EXPORTING
i_parent = wa_custom_container.
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = wa_spfli. *创建事件
CREATE OBJECT event_receiver.
*将用户交互事件分配ALV
SET HANDLER event_receiver->handle_user_command FOR alv_grid.
*将按钮相关事件分配ALV
SET HANDLER event_receiver->handle_toolbar FOR alv_grid.
*调用处理工具条处理方法,使自定义工具条生效
CALL METHOD alv_grid->set_toolbar_interactive. ENDIF. ENDMODULE. " STATUS_0300 OUTPUT *显示选择行内容模块
FORM messdeta TABLES p_et_index_rows STRUCTURE lvc_s_row.
*定义选择行
DATA:ls_selected_line LIKE lvc_s_row,
lf_row_index TYPE lvc_index.
*定义合并字段及分隔字段
DATA:s1() TYPE c,
s2() TYPE c.
s2 = '-'. *读取所有选择行
LOOP AT p_et_index_rows INTO ls_selected_line.
lf_row_index = ls_selected_line-index.
*从内表中按序号读取内容
READ TABLE wa_spfli INDEX lf_row_index INTO a_spfli.
*合并
s1 = '选择行内容'.
CONCATENATE s1 a_spfli-connid a_spfli-carrid a_spfli-cityfrom INTO s1 SEPARATED BY s2. *弹出窗口提示
MESSAGE i005(ymes) WITH s1. ENDLOOP.
ENDFORM. "messdeta
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " EXIT INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0300 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0300 INPUT. ENDMODULE. " USER_COMMAND_0300 INPUT
效果:

自定义ALV控件的工具条按钮的更多相关文章
- 【转】自定义ALV控件的工具条按钮
1 CLASS lcl_event_receiver DEFINITION DEFERRED. 2 3 DATA: itab TYPE TABLE OF spfli, 4 wa TYPE spfli. ...
- winfrom控件——基本工具
窗体事件:属性—事件—load(双击添加) 窗体加载完之后的事件: 删除事件:先将属性事件里挂号的事件名删掉(行为里的load)再删后台代码里的事件. 控件:工具箱里(搜索—双击或点击拖动到窗体界面) ...
- 安卓自定义组合控件--toolbar
最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...
- ExtJs5_继承自定义一个控件
Extjs的开发都可以遵循OOP的原则,其对类的封装也很完善了.自定义一个控件最简单的办法就是继承一个已有的控件.根据上一节的需要,我做了一个Button的子类.首先根据目录结构,在app目录下建立一 ...
- 6、手把手教你Extjs5(六)继承自定义一个控件
Extjs的开发都可以遵循OOP的原则,其对类的封装也很完善了.自定义一个控件最简单的办法就是继承一个已有的控件.根据上一节的需要,我做了一个Button的子类.首先根据目录结构,在app目录下建立一 ...
- Android中自定义组合控件
Android中自定义控件的情况非常多,一般自定义控件可以分为两种:继承控件及组合控件.前者是通过继承View或其子类,重写方法实现自定义的显示及事件处理方式:后者是通过组合已有的控件,来实现结构的简 ...
- 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件
好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...
- Android自定义控件之自定义组合控件
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
- asp.net webform 自定义分页控件
做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...
随机推荐
- mysql 创建临时节点
use ZooKeeper; use AnyEvent; use AE; use Data::Dumper; use IO::Socket; my $zk = ZooKeeper->new(ho ...
- 一年四个P(Project)
盼望着,盼望着,提高班众多革命同胞的假期终于来了.伴随着校园之中越来越多的同学身影,暑假学习时的那份静谧一散而去,恍然间在提高班学习的第二个年头也已经过去了(~_~),而自己的大学生涯也就像秋后的蚂蚱 ...
- SimpleDateFormat使用具体解释
public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的详细类. 它同意格式化 ...
- ICE之C/S通信原理
/* 在ICE文档中只需要声明module名称,接口名称,方法名称 */ #ifndef SIMPLE_ICE #define SIMPLE_ICE module Demo{ //module名称 i ...
- 演练5-1:Contoso大学校园管理1
**演练目的:掌握复杂模型的应用程序开发. Contoso大学校园管理系统功能包括学生.课程.教师的管理. 一.创建MVC Web应用程序 显示效果如下图,操作步骤略. 二.创建数据模型 1.创建学生 ...
- HTTP1.1协议中文版-RFC2616
转自:http://www.cnpaf.net/Class/HTTP/200811/23277.html 说明 本文档规定了互联网社区的标准组协议,并需要讨论和建议以便更加完善.请参考 “互联网官方协 ...
- date、datetime、string的相互转换
import datetime import time string转datetime str = '2012-11-19' date_time = datetime.datetime.strptim ...
- GDSOI2015 task4 ACU
题目大意 只要你有耐心看完题目,你就可以得到以下模型: 给出一个有向图,有若干询问,每次询问对于某条边\((v,u)\),求删掉这条边后,\(v\)到\(u\)的最短路. 算法1 暴力出奇迹,期望得分 ...
- 基于二叉树和数组实现限制长度的最优Huffman编码
具体介绍详见上篇博客:基于二叉树和双向链表实现限制长度的最优Huffman编码 基于数组和基于链表的实现方式在效率上有明显区别: 编码256个符号,符号权重为1...256,限制长度为16,循环编码1 ...
- [置顶] Hibernate从入门到精通(七)多对一单向关联映射
上次的博文Hibernate从入门到精通(六)一对一双向关联映射中我们介绍了一下一对一双向关联映射,本次博文我们讲解一下多对一关联映射 多对一单向关联映射 多对一关联映射与一对一关联映射类似,只是在多 ...