Function实现ALV Table 三:功能设计
2008-09-19 12:41
417 查看
ALV默认提供了一些标准的功能选择供我们来操作ALV列表,但是这些功能有可能某些是我们不需要用的,想把它隐藏掉,或者某些功能无法做到,就得自定义功能按钮。
一、去掉不必要的功能按钮
REUSE_ALV_GRID_DISPLAY提供了一个参数it_exculding来去掉你不想要的ALV功能。
FORM set_func_exculding TABLES pt_extab TYPE
slis_t_extab.
DATA lwa_extab
LIKE LINE OF pt_extab.
lwa_extab-fcode =
'%SL'.
APPEND lwa_extab
TO pt_extab.
ENDFORM.
"set_status_exculding
二、自定义功能按钮
REUSE_ALV_GRID_DISPLAY有一个参数i_callback_pf_status_set用来设置ALV列表指定的GUI Status。还有一个参数i_callback_user_command用来设置用户自定义的功能动作。
1.
首先要自己创建一个GUI Status,并设置好自定义按钮
2.
设置ALV使用自己创建的GUI
Status。
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS
'SLVC_FULLSCREEN' EXCLUDING rt_extab.
ENDFORM.
"set_pf_status
3. 设置用户点击自定义的功能按钮之后的动作。
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA l_message
TYPE string.
CASE r_ucomm.
WHEN
'FUNCTION'.
MESSAGE
i000(ytest) WITH 'You Click Button ''My Func'''.
WHEN
'&IC1'.
l_message =
rs_selfield-tabindex.
CONCATENATE
'Double Click,'
'Row:'
l_message
'Value:'
rs_selfield-value
'Fieldname:'
rs_selfield-fieldname
INTO
l_message
SEPARATED BY space.
MESSAGE
i000(ytest) WITH l_message.
ENDCASE.
ENDFORM.
"user_command
下面是效果图
源代码
TYPE-POOLS slis.
PERFORM f_main.
*&---------------------------------------------------------------------*
*& Form
f_main
*&---------------------------------------------------------------------*
* ALV display
*----------------------------------------------------------------------*
FORM f_main.
DATA: lt_spfli TYPE TABLE OF spfli,
lt_fieldcat TYPE slis_t_fieldcat_alv,
lt_extab TYPE slis_t_extab.
PERFORM get_data TABLES lt_spfli.
PERFORM set_catalog CHANGING lt_fieldcat.
PERFORM set_func_exculding TABLES lt_extab.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = lt_fieldcat
it_excluding = lt_extab
i_callback_pf_status_set =
'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = lt_spfli.
ENDFORM. "f_main
*&---------------------------------------------------------------------*
*& Form
set_func_exculding
*&---------------------------------------------------------------------*
* set function exculding
*----------------------------------------------------------------------*
* -->PT_EXTAB the function code which will be exculded
*----------------------------------------------------------------------*
FORM set_func_exculding TABLES
pt_extab TYPE slis_t_extab.
DATA lwa_extab LIKE LINE OF pt_extab.
lwa_extab-fcode = '%SL'.
APPEND lwa_extab TO pt_extab.
ENDFORM. "set_status_exculding
*&---------------------------------------------------------------------*
*& Form
set_pf_status
*&---------------------------------------------------------------------*
* set GUI stauts
*----------------------------------------------------------------------*
* -->RT_EXTAB the function code which will be exculded
*----------------------------------------------------------------------*
FORM set_pf_status USING
rt_extab TYPE slis_t_extab.
SET PF-STATUS 'SLVC_FULLSCREEN' EXCLUDING
rt_extab.
ENDFORM. "set_pf_status
*&---------------------------------------------------------------------*
*& Form
user_command
*&---------------------------------------------------------------------*
* user command
*----------------------------------------------------------------------*
* -->R_UCOMM function code
* -->RS_SELFIELD select field structure
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm
TYPE sy-ucomm
rs_selfield TYPE
slis_selfield.
DATA l_message TYPE string.
CASE r_ucomm.
WHEN 'FUNCTION'.
MESSAGE i000(ytest) WITH 'You Click
Button ''My Func'''.
WHEN '&IC1'.
l_message = rs_selfield-tabindex.
CONCATENATE 'Double Click,'
'Row:'
l_message
'Value:'
rs_selfield-value
'Fieldname:'
rs_selfield-fieldname
INTO l_message
SEPARATED BY space.
MESSAGE i000(ytest) WITH l_message.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form
get_data
*&---------------------------------------------------------------------*
* Get the data for output
*----------------------------------------------------------------------*
* -->PT_SPFLI data internal table
*----------------------------------------------------------------------*
FORM get_data TABLES pt_spfli.
SELECT * FROM spfli INTO TABLE pt_spfli.
ENDFORM. "get_data
*&---------------------------------------------------------------------*
*& Form
set_catalog
*&---------------------------------------------------------------------*
* set fieldcatalog for alv output
*----------------------------------------------------------------------*
FORM set_catalog CHANGING
pt_fieldcat TYPE slis_t_fieldcat_alv.
DATA lwa_fieldcat TYPE slis_fieldcat_alv.
"macro
DEFINE add_field.
clear lwa_fieldcat.
lwa_fieldcat-col_pos = &1.
lwa_fieldcat-fieldname = &2.
lwa_fieldcat-seltext_l = &3.
append lwa_fieldcat to pt_fieldcat.
END-OF-DEFINITION.
"add field catalog
add_field 1
'MANDT' 'Client'.
add_field 2
'CARRID' 'Airline Code'.
add_field 3
'CONNID' 'Fight Number'.
add_field 4
'COUNTRYFR' 'Country From'.
add_field 5
'CITYFROM' 'City From'.
add_field 6
'AIRPFROM' 'Airpart From'.
add_field 7
'COUNTRYTO' 'Country To'.
add_field 8
'CITYTO' 'City To'.
add_field 9
'AIRPTO' 'Airpart To'.
add_field 10 'FLTIME' 'Fly Time'.
add_field 11 'DEPTIME' 'Dept Time'.
add_field 12 'ARRTIME' 'Arrive Time'.
add_field 13 'DISTANCE' 'Distance'.
add_field 14 'DISTID' 'Mass unit of distance'.
add_field 15 'FLTYPE' 'Flight type'.
add_field 16 'PERIOD' 'Arrival n day(s) later'.
ENDFORM. "set_catalog
一、去掉不必要的功能按钮
REUSE_ALV_GRID_DISPLAY提供了一个参数it_exculding来去掉你不想要的ALV功能。
FORM set_func_exculding TABLES pt_extab TYPE
slis_t_extab.
DATA lwa_extab
LIKE LINE OF pt_extab.
lwa_extab-fcode =
'%SL'.
APPEND lwa_extab
TO pt_extab.
ENDFORM.
"set_status_exculding
二、自定义功能按钮
REUSE_ALV_GRID_DISPLAY有一个参数i_callback_pf_status_set用来设置ALV列表指定的GUI Status。还有一个参数i_callback_user_command用来设置用户自定义的功能动作。
1.
首先要自己创建一个GUI Status,并设置好自定义按钮
2.
设置ALV使用自己创建的GUI
Status。
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS
'SLVC_FULLSCREEN' EXCLUDING rt_extab.
ENDFORM.
"set_pf_status
3. 设置用户点击自定义的功能按钮之后的动作。
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA l_message
TYPE string.
CASE r_ucomm.
WHEN
'FUNCTION'.
MESSAGE
i000(ytest) WITH 'You Click Button ''My Func'''.
WHEN
'&IC1'.
l_message =
rs_selfield-tabindex.
CONCATENATE
'Double Click,'
'Row:'
l_message
'Value:'
rs_selfield-value
'Fieldname:'
rs_selfield-fieldname
INTO
l_message
SEPARATED BY space.
MESSAGE
i000(ytest) WITH l_message.
ENDCASE.
ENDFORM.
"user_command
下面是效果图
源代码
TYPE-POOLS slis.
PERFORM f_main.
*&---------------------------------------------------------------------*
*& Form
f_main
*&---------------------------------------------------------------------*
* ALV display
*----------------------------------------------------------------------*
FORM f_main.
DATA: lt_spfli TYPE TABLE OF spfli,
lt_fieldcat TYPE slis_t_fieldcat_alv,
lt_extab TYPE slis_t_extab.
PERFORM get_data TABLES lt_spfli.
PERFORM set_catalog CHANGING lt_fieldcat.
PERFORM set_func_exculding TABLES lt_extab.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = lt_fieldcat
it_excluding = lt_extab
i_callback_pf_status_set =
'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = lt_spfli.
ENDFORM. "f_main
*&---------------------------------------------------------------------*
*& Form
set_func_exculding
*&---------------------------------------------------------------------*
* set function exculding
*----------------------------------------------------------------------*
* -->PT_EXTAB the function code which will be exculded
*----------------------------------------------------------------------*
FORM set_func_exculding TABLES
pt_extab TYPE slis_t_extab.
DATA lwa_extab LIKE LINE OF pt_extab.
lwa_extab-fcode = '%SL'.
APPEND lwa_extab TO pt_extab.
ENDFORM. "set_status_exculding
*&---------------------------------------------------------------------*
*& Form
set_pf_status
*&---------------------------------------------------------------------*
* set GUI stauts
*----------------------------------------------------------------------*
* -->RT_EXTAB the function code which will be exculded
*----------------------------------------------------------------------*
FORM set_pf_status USING
rt_extab TYPE slis_t_extab.
SET PF-STATUS 'SLVC_FULLSCREEN' EXCLUDING
rt_extab.
ENDFORM. "set_pf_status
*&---------------------------------------------------------------------*
*& Form
user_command
*&---------------------------------------------------------------------*
* user command
*----------------------------------------------------------------------*
* -->R_UCOMM function code
* -->RS_SELFIELD select field structure
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm
TYPE sy-ucomm
rs_selfield TYPE
slis_selfield.
DATA l_message TYPE string.
CASE r_ucomm.
WHEN 'FUNCTION'.
MESSAGE i000(ytest) WITH 'You Click
Button ''My Func'''.
WHEN '&IC1'.
l_message = rs_selfield-tabindex.
CONCATENATE 'Double Click,'
'Row:'
l_message
'Value:'
rs_selfield-value
'Fieldname:'
rs_selfield-fieldname
INTO l_message
SEPARATED BY space.
MESSAGE i000(ytest) WITH l_message.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form
get_data
*&---------------------------------------------------------------------*
* Get the data for output
*----------------------------------------------------------------------*
* -->PT_SPFLI data internal table
*----------------------------------------------------------------------*
FORM get_data TABLES pt_spfli.
SELECT * FROM spfli INTO TABLE pt_spfli.
ENDFORM. "get_data
*&---------------------------------------------------------------------*
*& Form
set_catalog
*&---------------------------------------------------------------------*
* set fieldcatalog for alv output
*----------------------------------------------------------------------*
FORM set_catalog CHANGING
pt_fieldcat TYPE slis_t_fieldcat_alv.
DATA lwa_fieldcat TYPE slis_fieldcat_alv.
"macro
DEFINE add_field.
clear lwa_fieldcat.
lwa_fieldcat-col_pos = &1.
lwa_fieldcat-fieldname = &2.
lwa_fieldcat-seltext_l = &3.
append lwa_fieldcat to pt_fieldcat.
END-OF-DEFINITION.
"add field catalog
add_field 1
'MANDT' 'Client'.
add_field 2
'CARRID' 'Airline Code'.
add_field 3
'CONNID' 'Fight Number'.
add_field 4
'COUNTRYFR' 'Country From'.
add_field 5
'CITYFROM' 'City From'.
add_field 6
'AIRPFROM' 'Airpart From'.
add_field 7
'COUNTRYTO' 'Country To'.
add_field 8
'CITYTO' 'City To'.
add_field 9
'AIRPTO' 'Airpart To'.
add_field 10 'FLTIME' 'Fly Time'.
add_field 11 'DEPTIME' 'Dept Time'.
add_field 12 'ARRTIME' 'Arrive Time'.
add_field 13 'DISTANCE' 'Distance'.
add_field 14 'DISTID' 'Mass unit of distance'.
add_field 15 'FLTYPE' 'Flight type'.
add_field 16 'PERIOD' 'Arrival n day(s) later'.
ENDFORM. "set_catalog
相关文章推荐
- Function实现ALV Table 三:功能设计 (图解)
- OO实现ALV TABLE 三:ALV的功能设计
- OO实现ALV TABLE 三:ALV的功能设计
- Function实现ALV Table 九:编辑功能
- 设计与实现模块管理系统基本功能定义自己(18--设计模块附件[1])
- 模块管理常规功能自定义系统的设计与实现(05--权限和菜单)
- 学生社团管理系统 任务:通过此系统可以实现如下功能(包含但不限于以下功能,可自行设计): 1、社团信息包括:社团编号、社团名称、成立时间…… 2、学生信息包括:学号、姓名、性别、年级、专业…… 3
- 企业网站权限设计实现:功能界面
- 有效的使用和设计COM智能指针——条款3:按照功能和实现原理选择合适的智能指针
- 通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)
- 实验题7.1: 编写一个程序algo7-1.cpp,实现二叉树的各种基本运算,并在此基础上设计一个程序Main.cpp完成如下功能(b为如下图所示的一棵二叉树)
- 网站统计功能的设计与实现
- (十五)WebGIS中平移功能的设计和实现
- 4程序员小飞原计划三天完成某个任务,现在是第三天的下午,他马上就可以做完。但是在实现功能的过程中,他越来越意识到自己原来设计中的弱点,他应该采取另一个办法,才能避免后面集成阶段的额外工作。但是他如果现在就改弦更张,那势必要影响自己原来估计的准确性,并且会花费额外的时间,这样他的老板、同事也许会因此看不起他。如果他按部就班地按既定设计完成,还要花更多时间在后续集成上,但那就不是他个人的问题了,怎么办
- 左神的书——《程序员代码面试指南》之设计一个有getmin功能的栈 c++实现
- Android设计模式之动态代理,实现方法拦截功能
- 俄罗斯方块(二) 功能设计与实现
- Angular简易分页设计(一):基本功能实现
- 通用权限系统框架功能实现设计
- 电子商务网站的设计与实现(二):一期功能清单