开心消消乐41关怎么过02关怎么过 三星过法分享

OO ALV中经常会用的行单击,行双击,application tool bar上添加按钮以及按钮的相应事件,如下:
1,单击:handle_hotspot_click 事件
2,双击:handle_double_click
3,工具栏上添加自定按钮: handle_toolbar,其中,butn_type = 3. 是分隔符详细参照下面代码
4, 自定义按钮相应事件:handle_command
这些事件需要用SET HANDLER先注册,然后再在类中实现,添加自己的逻辑。
下面是个完整代码以及相关屏幕的创建过程:
1) 创建0100屏幕
屏幕PAI,PBO中流逻辑代码
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE INIT_CON.
PROCESS AFTER INPUT.
MODULE USER_EXIT_0100 AT EXIT-COMMAND.
PROCESS BEFORE OUTPUT.&&MODULE STATUS_0100.&&MODULE INIT_CON. PROCESS AFTER INPUT. MODULE USER_EXIT_0100 AT EXIT-COMMAND.
在0100屏幕上画自定义控件,命名为CUS01
在屏幕点击下面红框内的按钮创建控件CUS01.
3,程序中的Status
4,程序代码
REPORT ZTEST_OO_ALV_EVENT.
DATA: gs_data TYPE spfli.
DATA: gt_data LIKE TABLE OF gs_data.
DATA: g_con01
TYPE REF TO cl_gui_custom_container.
DATA: g_grid01 TYPE REF TO cl_gui_alv_grid.
DATA: gs_fieldcat TYPE lvc_s_fcat.
DATA: gt_fieldcat TYPE lvc_t_fcat.
CONSTANTS: g_cus01 TYPE scrfname VALUE 'CUS01'.
*----------------------------------------------------------------------*
CLASS cl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
CLASS cl_event_receiver DEFINITION.
PUBLIC SECTION.
" 声明单击事件的方法
METHODS handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id.
" 声明双击事件方法
METHODS handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
" 声明Toolbar事件方法
METHODS handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive.
" 声明USER-COMMAND 事件方法
METHODS handle_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
"cl_event_receiver DEFINITION
*----------------------------------------------------------------------*
CLASS cl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
CLASS cl_event_receiver IMPLEMENTATION.
" 单击事件方法的实现
METHOD handle_hotspot_click.
CONDENSE e_row_id
CONDENSE e_column_id
MESSAGE i001(00) WITH '单击事件-&行号:' e_row_id
'、列名:' e_column_id.
ENDMETHOD.
"handle_HOTSPOT_CLICK
" 双击事件方法的实现
METHOD handle_double_click.
CONDENSE e_row
CONDENSE e_column
MESSAGE i001(00) WITH '双击事件-&行号:' e_row
'、列名:' e_column.
ENDMETHOD.
"handle_double_click
" 实现Toolbar事件方法
METHOD handle_toolbar.
DATA: ls_toolbar TYPE stb_button.
CLEAR: ls_toolbar.
ls_toolbar-butn_type = 3. " 分隔符
APPEND ls_toolbar TO e_object-&mt_toolbar.
CLEAR: ls_toolbar.
ls_toolbar-function = 'DISP'.
ls_toolbar-icon = icon_display.
" 图标名称
ls_toolbar-quickinfo = '显示'.
" 图标的提示信息
ls_toolbar-butn_type = 0.
" 0表示正常按钮
ls_toolbar-disabled = ''.
" X表示灰色,不可用
ls_toolbar-text = '按钮1'.
" 按钮上显示的文本
APPEND ls_toolbar TO e_object-&mt_toolbar.
ENDMETHOD.
"handle_toolbar
" 实现USER-COMMAND 事件方法
METHOD handle_command.
CASE e_ucomm.
WHEN 'DISP'.
MESSAGE i001(00) WITH 'Toolbar事件 + USER-COMMAND事件 '.
ENDMETHOD.
"HANDLE_COMMAND
"cl_event_receiver IMPLEMENTATION
DATA: event_receiver TYPE REF TO cl_event_receiver.
START-OF-SELECTION.
PERFORM get_data.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
FORM get_data.
INTO CORRESPONDING FIELDS OF TABLE gt_data
UP TO 30 ROWS
FROM spfli.
*&---------------------------------------------------------------------*
SET_FIELDCAT
*&---------------------------------------------------------------------*
ALV显示字段文本
*----------------------------------------------------------------------*
FORM set_fieldcat.
CLEAR: gt_fieldcat[].
DEFINE macro_fieldcat.
clear gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-coltext
gs_fieldcat-hotspot
append gs_fieldcat to gt_fieldcat.
END-OF-DEFINITION.
macro_fieldcat 'CARRID'
'航线代码'
macro_fieldcat 'CONNID'
'航班连接Id' ''.
macro_fieldcat 'COUNTRYFR'
'起飞国家'
macro_fieldcat 'CITYFROM'
'起飞城市'
macro_fieldcat 'AIRPFROM'
'起飞机场'
macro_fieldcat 'COUNTRYTO'
'目标国家'
macro_fieldcat 'CITYTO'
'目标城市'
macro_fieldcat 'AIRPTO'
'目标机场'
macro_fieldcat 'FLTIME'
'航班时间'
macro_fieldcat 'DEPTIME'
'启程时间'
macro_fieldcat 'ARRTIME'
'到达时间'
macro_fieldcat 'DISTANCE'
"SET_FIELDCAT
*&---------------------------------------------------------------------*
SET_LAYOUT
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
--&P_LAYOUT
*----------------------------------------------------------------------*
FORM set_layout CHANGING p_layout TYPE lvc_s_layo.
p_layout-cwidth_opt = 'X'.
" 自动调节字段长度
p_layout-sel_mode
" 选择模式,可选择多行
p_layout-zebra
" 颜色交替显示
"SET_LAYOUT
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
MODULE init_con OUTPUT.
DATA: ls_layout TYPE lvc_s_layo.
IF g_con01 IS INITIAL.
PERFORM set_fieldcat.
PERFORM set_layout CHANGING ls_layout.
" 创建SAP容器实例
CREATE OBJECT g_con01
container_name
= g_cus01 " 自定义控件名称
EXCEPTIONS
cntl_error
cntl_system_error
create_error
lifetime_error
lifetime_dynpro_dynpro_link = 5
IF sy-subrc && 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
" 创建GRID实例
CREATE OBJECT g_grid01
EXCEPTIONS
error_cntl_create = 1
error_cntl_init
error_cntl_link
error_dp_create
IF sy-subrc && 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
CREATE OBJECT event_receiver.
" 注册事件handler方法
SET HANDLER event_receiver-&handle_hotspot_click
FOR g_grid01.
SET HANDLER event_receiver-&handle_double_click
FOR g_grid01.
SET HANDLER event_receiver-&handle_toolbar FOR g_grid01.
SET HANDLER event_receiver-&handle_command FOR g_grid01.
" 调用ALV 显示方法
CALL METHOD g_grid01-&set_table_for_first_display
i_structure_name
= 'SPFLI' " 参照表结构字段显示
= ls_layout " 布局
it_fieldcatalog
= gt_fieldcat " 显示字段
= gt_data[]
EXCEPTIONS
invalid_parameter_combination = 1
program_error
too_many_lines
IF sy-subrc && 0.
Implement suitable error handling here
ENDMODULE.
" INIT_CON
*&---------------------------------------------------------------------*
STATUS_0100
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'S0001'.
ENDMODULE.
" STATUS_0100
*&---------------------------------------------------------------------*
USER_EXIT_0100
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
MODULE user_exit_0100 INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.
" USER_EXIT_0100
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
REPORT ZTEST_OO_ALV_EVENT.&DATA: gs_data TYPE spfli.&DATA: gt_data LIKE TABLE OF gs_data.&DATA: g_con01&&TYPE REF TO cl_gui_custom_container.&DATA: g_grid01 TYPE REF TO cl_gui_alv_grid.&DATA: gs_fieldcat TYPE lvc_s_fcat.DATA: gt_fieldcat TYPE lvc_t_fcat.&CONSTANTS: g_cus01 TYPE scrfname VALUE 'CUS01'.&*----------------------------------------------------------------------**&&&&&& CLASS cl_event_receiver DEFINITION*----------------------------------------------------------------------***----------------------------------------------------------------------*CLASS cl_event_receiver DEFINITION.&&PUBLIC SECTION.&&&&" 声明单击事件的方法&&&&METHODS handle_hotspot_click&&&&&&FOR EVENT hotspot_click OF cl_gui_alv_grid&&&&&&IMPORTING e_row_id e_column_id.&&&&" 声明双击事件方法&&&&METHODS handle_double_click&&&&&&FOR EVENT double_click OF cl_gui_alv_grid&&&&&&IMPORTING e_row e_column.&&&&" 声明Toolbar事件方法&&&&METHODS handle_toolbar&&&&&&FOR EVENT toolbar OF cl_gui_alv_grid&&&&&&IMPORTING e_object e_interactive.&&&&" 声明USER-COMMAND 事件方法&&&&METHODS handle_command&&&&&&FOR EVENT user_command OF cl_gui_alv_grid&&&&&&IMPORTING e_ucomm.ENDCLASS.&&&&&&&&&&&&&&&&&&&&"cl_event_receiver DEFINITION&*----------------------------------------------------------------------**&&&&&& CLASS cl_event_receiver IMPLEMENTATION*----------------------------------------------------------------------***----------------------------------------------------------------------*CLASS cl_event_receiver IMPLEMENTATION.&&" 单击事件方法的实现&&METHOD handle_hotspot_click.&&&&CONDENSE e_row_id&&&& NO-GAPS.&&&&CONDENSE e_column_id&&NO-GAPS.&&&&MESSAGE i001(00) WITH '单击事件-&行号:' e_row_id&&'、列名:' e_column_id.&&ENDMETHOD.&&&&&&&&&&&&&&&&&&&&"handle_HOTSPOT_CLICK&&" 双击事件方法的实现&&METHOD handle_double_click.&&&&CONDENSE e_row&&&& NO-GAPS.&&&&CONDENSE e_column&&NO-GAPS.&&&&MESSAGE i001(00) WITH '双击事件-&行号:' e_row&&'、列名:' e_column.&&ENDMETHOD.&&&&&&&&&&&&&&&&&&&&"handle_double_click&&" 实现Toolbar事件方法&&METHOD handle_toolbar.&&&&DATA: ls_toolbar TYPE stb_button.&&&&CLEAR: ls_toolbar.&&&&ls_toolbar-butn_type = 3. " 分隔符&&&&APPEND ls_toolbar TO e_object-&mt_toolbar.&&&&CLEAR: ls_toolbar.&&&&ls_toolbar-function = 'DISP'.&&&&" 功能码&&&&ls_toolbar-icon = icon_display.&&" 图标名称&&&&ls_toolbar-quickinfo = '显示'.&& " 图标的提示信息&&&&ls_toolbar-butn_type = 0.&&&&&&&&" 0表示正常按钮&&&&ls_toolbar-disabled = ''.&&&&&&&&" X表示灰色,不可用&&&&ls_toolbar-text = '按钮1'.&&&&&& " 按钮上显示的文本&&&&APPEND ls_toolbar TO e_object-&mt_toolbar.&&ENDMETHOD.&&&&&&&&&&&&&&&&&&&&"handle_toolbar&&" 实现USER-COMMAND 事件方法&&METHOD handle_command.&&&&CASE e_ucomm.&&&&&&WHEN 'DISP'.&&&&&&&&MESSAGE i001(00) WITH 'Toolbar事件 + USER-COMMAND事件 '.&&&&ENDCASE.&&ENDMETHOD.&&&&&&&&&&&&&&&&&&&&"HANDLE_COMMAND&ENDCLASS.&&&&&&&&&&&&&&&&&&&&"cl_event_receiver IMPLEMENTATIONDATA: event_receiver TYPE REF TO cl_event_receiver.&START-OF-SELECTION.&&PERFORM get_data.&&&CALL SCREEN 100.&*&---------------------------------------------------------------------**&&&&&&&Form&&GET_DATA*&---------------------------------------------------------------------**&&&&&& text&&获取数据*----------------------------------------------------------------------*FORM get_data.&&SELECT *&&&&INTO CORRESPONDING FIELDS OF TABLE gt_data&&&&UP TO 30 ROWS&&&&FROM spfli.&ENDFORM.&&&&&&&&&&&&&&&&&&&&"GET_DATA&*&---------------------------------------------------------------------**&&&&&&&Form&&SET_FIELDCAT*&---------------------------------------------------------------------**&&&&&& text&&ALV显示字段文本*----------------------------------------------------------------------*FORM set_fieldcat.&&CLEAR: gt_fieldcat[].&&DEFINE macro_fieldcat.&&&&clear gs_fieldcat.&&&&gs_fieldcat-fieldname = &1.&&&&gs_fieldcat-coltext&& = &2.&&&&gs_fieldcat-hotspot&& = &3.&&&&append gs_fieldcat to gt_fieldcat.&&END-OF-DEFINITION.&&&macro_fieldcat 'CARRID'&&&& '航线代码'&& 'X'.&&macro_fieldcat 'CONNID'&&&& '航班连接Id' ''.&&macro_fieldcat 'COUNTRYFR'&&'起飞国家'&& ''.&&macro_fieldcat 'CITYFROM'&& '起飞城市'&& ''.&&macro_fieldcat 'AIRPFROM'&& '起飞机场'&& ''.&&macro_fieldcat 'COUNTRYTO'&&'目标国家'&& ''.&&macro_fieldcat 'CITYTO'&&&& '目标城市'&& ''.&&macro_fieldcat 'AIRPTO'&&&& '目标机场'&& ''.&&macro_fieldcat 'FLTIME'&&&& '航班时间'&& ''.&&macro_fieldcat 'DEPTIME'&&&&'启程时间'&& ''.&&macro_fieldcat 'ARRTIME'&&&&'到达时间'&& ''.&&macro_fieldcat 'DISTANCE'&& '距离'&&&&&& ''.&ENDFORM.&&&&&&&&&&&&&&&&&&&&"SET_FIELDCAT&*&---------------------------------------------------------------------**&&&&&&&Form&&SET_LAYOUT*&---------------------------------------------------------------------**&&&&&& text&&布局*----------------------------------------------------------------------**&&&&&&--&P_LAYOUT&& text*----------------------------------------------------------------------*FORM set_layout CHANGING p_layout TYPE lvc_s_layo.&&p_layout-cwidth_opt = 'X'.&& " 自动调节字段长度&&p_layout-sel_mode&& = 'D'.&& " 选择模式,可选择多行&&p_layout-zebra&&&&&&= 'X'.&& " 颜色交替显示ENDFORM.&&&&&&&&&&&&&&&&&&&&&&"SET_LAYOUT&*&---------------------------------------------------------------------**&&&&&&&Module&&INIT_CON&&OUTPUT*&---------------------------------------------------------------------**&&&&&& text&&创建ALV*----------------------------------------------------------------------*MODULE init_con OUTPUT.&&&DATA: ls_layout TYPE lvc_s_layo.&&&IF g_con01 IS INITIAL.&&&&PERFORM set_fieldcat.&&&&PERFORM set_layout CHANGING ls_layout.&&&&&" 创建SAP容器实例&&&&CREATE OBJECT g_con01&&&&&&EXPORTING&&&&&&&&container_name&&&&&&&&&&&&&&= g_cus01 " 自定义控件名称&&&&&&EXCEPTIONS&&&&&&&&cntl_error&&&&&&&&&&&&&&&&&&= 1&&&&&&&&cntl_system_error&&&&&&&&&& = 2&&&&&&&&create_error&&&&&&&&&&&&&&&&= 3&&&&&&&&lifetime_error&&&&&&&&&&&&&&= 4&&&&&&&&lifetime_dynpro_dynpro_link = 5&&&&&&&&OTHERS&&&&&&&&&&&&&&&&&&&&&&= 6.&&&&IF sy-subrc && 0.&&&&&&MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&&&&&&&&&&&&&&&& WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&&&&ENDIF.&&&&" 创建GRID实例&&&&CREATE OBJECT g_grid01&&&&&&EXPORTING&&&&&&&&i_parent&&&&&&&&&&= g_con01&&&&&&EXCEPTIONS&&&&&&&&error_cntl_create = 1&&&&&&&&error_cntl_init&& = 2&&&&&&&&error_cntl_link&& = 3&&&&&&&&error_dp_create&& = 4&&&&&&&&OTHERS&&&&&&&&&&&&= 5.&&&&IF sy-subrc && 0.&&&&&&MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&&&&&&&&&&&&&&&& WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&&&&ENDIF.&&&&&CREATE OBJECT event_receiver.&&&&" 注册事件handler方法&&&&SET HANDLER event_receiver-&handle_hotspot_click&&FOR g_grid01.&&&&SET HANDLER event_receiver-&handle_double_click&& FOR g_grid01.&&&&SET HANDLER event_receiver-&handle_toolbar FOR g_grid01.&&&&SET HANDLER event_receiver-&handle_command FOR g_grid01.&&&&&" 调用ALV 显示方法&&&&CALL METHOD g_grid01-&set_table_for_first_display&&&&&&EXPORTING*&&&&&& i_structure_name&&&&&&&&&&&&&&= 'SPFLI' " 参照表结构字段显示&&&&&&&&is_layout&&&&&&&&&&&&&&&&&&&& = ls_layout " 布局&&&&&&CHANGING&&&&&&&&it_fieldcatalog&&&&&&&&&&&&&& = gt_fieldcat " 显示字段&&&&&&&&it_outtab&&&&&&&&&&&&&&&&&&&& = gt_data[]&&&&&&EXCEPTIONS&&&&&&&&invalid_parameter_combination = 1&&&&&&&&program_error&&&&&&&&&&&&&&&& = 2&&&&&&&&too_many_lines&&&&&&&&&&&&&&&&= 3&&&&&&&&OTHERS&&&&&&&&&&&&&&&&&&&&&&&&= 4.&&&&IF sy-subrc && 0.*&&&& Implement suitable error handling here&&&&ENDIF.&&&ENDIF.&ENDMODULE.&&&&&&&&&&&&&&&& " INIT_CON&&OUTPUT&*&---------------------------------------------------------------------**&&&&&&&Module&&STATUS_0100&&OUTPUT*&---------------------------------------------------------------------**&&&&&& text&&工具条*----------------------------------------------------------------------*MODULE status_0100 OUTPUT.&&SET PF-STATUS 'S0001'.&ENDMODULE.&&&&&&&&&&&&&&&& " STATUS_0100&&OUTPUT*&---------------------------------------------------------------------**&&&&&&&Module&&USER_EXIT_0100&&INPUT*&---------------------------------------------------------------------**&&&&&& text&&取消事件*----------------------------------------------------------------------*MODULE user_exit_0100 INPUT.&&LEAVE TO SCREEN 0.ENDMODULE.&&&&&&&&&&&&&&&& " USER_EXIT_0100&&INPUT
5,运行效果
最后编辑于:作者:石头
该用户很懒,还没有介绍自己。
三月 29, 2017
三月 21, 2017
三月 21, 2017
三月 21, 2017
插入或编辑链接
输入目标URL
在新标签页中打开链接
或链接到站点中的内容
未指定搜索条件。自动显示近期条目。
搜索或使用上下方向键来选择一项。&>&&>&&>&&>&ABAP开发ALV中自定义按钮实现
ABAP开发ALV中自定义按钮实现
上传大小:1.48MB
ALV是ABAP报表开发中经常用到的表单工具,用户经常需要将ALV中的数据进行打印或Excel导出,这样就需要对ALV的工具条进行扩展,添加自定义按钮,本文详细介绍了,如何在AVL中实现自定义按钮的方法,有具体的实例步骤和截图,操作简单。
综合评分:4.4(21位用户评分)
所需积分:3
下载次数:71
审核通过送C币
创建者:zang
创建者:nigelyq
创建者:nigelyq
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
ABAP开发ALV中自定义按钮实现
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:ALV中自定义按钮_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
ALV中自定义按钮
上传于|0|0|文档简介
&&ALV是ABAP报表开发中经常用到的表单工具,用户经常需要将ALV中的数据进行打印或Excel导出,这样就需要对ALV的工具条进行扩展,添加自定义按钮,本文详细介绍了,如何在AVL中实现自定义按钮的方法,有具体的实例步骤,操作简单。
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 开心消消乐74关怎么过 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信