ALV报表——点击事件(二)
2024-10-20 13:30:26
目录
PS:请自行忽略gif的水印
一、复选框
ALV的复选框有两种方式实现,一种是使用Layout属性,另一种是使用Fieldcat属性
1、Layout实现方式(最简单的实现方式,这种方式能直接使用ALV报表自带的全选和反全选按钮,多选的话需要按住Ctrl再进行鼠标点选)
代码:
************************************************************************
* Program Name : ZMMR999
* Descriptions :
* Updates Tables :
* Input Parameters :
* Output Parameters :
* Return Codes :
* Special Logic :
* Includes :
************************************************************************
* Modification Log
************************************************************************
* Date Ver. Programmer Descriptions
* -------- ---- ------------ -------------------------------------------
* 20171223 1.0 xxx Create
*
************************************************************************
REPORT ZMMR999.
* Tables Definitions
************************************************************************
*TABLES:.
TABLES: marc,ekpo.
************************************************************************
* Data Definitions
************************************************************************
DATA: BEGIN OF gt_data OCCURS ,
checkbox TYPE c , "复选框
ebeln LIKE ekpo-ebeln, "PO
ebelp LIKE ekpo-ebelp, "PO项次
END OF gt_data. TYPE-POOLS: slis.
DATA: gs_layout TYPE slis_layout_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv. ************************************************************************
* Includes Module
************************************************************************ ************************************************************************
* Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-b01.
PARAMETERS: p_werks LIKE marc-werks OBLIGATORY DEFAULT ''. SELECT-OPTIONS: s_ebeln FOR ekpo-ebeln,
s_ebelp FOR ekpo-ebelp.
SELECTION-SCREEN END OF BLOCK b1. ************************************************************************
* Initialization
************************************************************************
INITIALIZATION. ************************************************************************
* At Selection Screen
************************************************************************
AT SELECTION-SCREEN. ************************************************************************
* At Selection Screen Output
************************************************************************
AT SELECTION-SCREEN OUTPUT. ************************************************************************
* Report Format
************************************************************************
TOP-OF-PAGE. END-OF-PAGE.
************************************************************************
* Main Process
************************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM display_data.
END-OF-SELECTION. FORM get_data.
DATA: l_index LIKE sy-tabix. SELECT ebeln ebelp INTO CORRESPONDING FIELDS OF TABLE gt_data
FROM ekpo
WHERE bukrs = p_werks
AND ebeln IN s_ebeln
AND ebelp IN s_ebelp. ENDFORM. *&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM display_data.
DATA: l_repid TYPE sy-repid,
l_inclname TYPE trdir-name,
l_index LIKE sy-tabix. CLEAR: gt_fieldcat[],wa_fieldcat. l_repid = l_inclname = sy-cprog. "栏位最适宽度
gs_layout-colwidth_optimize = 'X'.
"复选框
gs_layout-box_fieldname = 'CHECKBOX'. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid
I_INTERNAL_TABNAME = 'GT_DATA'
I_INCLNAME = l_inclname
CHANGING
CT_FIELDCAT = gt_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE =
PROGRAM_ERROR =
OTHERS = . LOOP AT gt_fieldcat INTO wa_fieldcat.
l_index = sy-tabix. CASE wa_fieldcat-fieldname.
WHEN 'CHECKBOX'.
"技术字段,设置’X’后,该字段不会显示,也不能输出,如同MANDT字段一样的效果,不然会多出空列
wa_fieldcat-tech = 'X'.
ENDCASE. MODIFY gt_fieldcat FROM wa_fieldcat INDEX l_index.
ENDLOOP. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IS_LAYOUT = gs_layout
IT_FIELDCAT = gt_fieldcat[]
I_SAVE = 'A'
TABLES
T_OUTTAB = gt_data
EXCEPTIONS
PROGRAM_ERROR =
OTHERS = .
ENDFORM.
运行效果:
2、Fieldcat实现方式(设置edit属性的时,会多出Layout方式的选择框效果,此复选框在此处无任何作用,未设置edit属性时,复选框在Fiori页面上又显示灰色,感觉不友好;不过Fieldcat实现方式不可使用ALV报表自带的全选和反全选按钮,需要自定义全选和反全选的点击按钮事件)
代码:
************************************************************************
* Program Name : ZMMR999
* Descriptions :
* Updates Tables :
* Input Parameters :
* Output Parameters :
* Return Codes :
* Special Logic :
* Includes :
************************************************************************
* Modification Log
************************************************************************
* Date Ver. Programmer Descriptions
* -------- ---- ------------ -------------------------------------------
* 20171223 1.0 xxx Create
*
************************************************************************
REPORT ZMMR999.
* Tables Definitions
************************************************************************
*TABLES:.
TABLES: marc,ekpo.
************************************************************************
* Data Definitions
************************************************************************
DATA: BEGIN OF gt_data OCCURS ,
checkbox TYPE c , "复选框
ebeln LIKE ekpo-ebeln, "PO
ebelp LIKE ekpo-ebelp, "PO项次
END OF gt_data. TYPE-POOLS: slis.
DATA: gs_layout TYPE slis_layout_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv. "ALV自定義按鈕
CONSTANTS alv_pf_status TYPE slis_formname VALUE 'ALV_PF_STATUS'.
*ALV自定義按鈕事件
CONSTANTS alv_user_command TYPE slis_formname
VALUE 'ALV_USER_COMMAND'.
************************************************************************
* Includes Module
************************************************************************ ************************************************************************
* Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-b01.
PARAMETERS: p_werks LIKE marc-werks OBLIGATORY DEFAULT ''. SELECT-OPTIONS: s_ebeln FOR ekpo-ebeln,
s_ebelp FOR ekpo-ebelp.
SELECTION-SCREEN END OF BLOCK b1. ************************************************************************
* Initialization
************************************************************************
INITIALIZATION. ************************************************************************
* At Selection Screen
************************************************************************
AT SELECTION-SCREEN. ************************************************************************
* At Selection Screen Output
************************************************************************
AT SELECTION-SCREEN OUTPUT. ************************************************************************
* Report Format
************************************************************************
TOP-OF-PAGE. END-OF-PAGE.
************************************************************************
* Main Process
************************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM display_data.
END-OF-SELECTION. FORM get_data.
DATA: l_index LIKE sy-tabix. SELECT ebeln ebelp INTO CORRESPONDING FIELDS OF TABLE gt_data
FROM ekpo
WHERE bukrs = p_werks
AND ebeln IN s_ebeln
AND ebelp IN s_ebelp. ENDFORM. *&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM display_data.
DATA: l_repid TYPE sy-repid,
l_inclname TYPE trdir-name,
l_index LIKE sy-tabix. CLEAR: gt_fieldcat[],wa_fieldcat. l_repid = l_inclname = sy-cprog. "栏位最适宽度
gs_layout-colwidth_optimize = 'X'.
"复选框
"gs_layout-box_fieldname = 'CHECKBOX'. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid
I_INTERNAL_TABNAME = 'GT_DATA'
I_INCLNAME = l_inclname
CHANGING
CT_FIELDCAT = gt_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE =
PROGRAM_ERROR =
OTHERS = . LOOP AT gt_fieldcat INTO wa_fieldcat.
l_index = sy-tabix. CASE wa_fieldcat-fieldname.
WHEN 'CHECKBOX'.
"技术字段,设置’X’后,该字段不会显示,也不能输出,如同MANDT字段一样的效果
"wa_fieldcat-tech = 'X'. wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
wa_fieldcat-seltext_l = '复选框'.
wa_fieldcat-fix_column = 'X'.
wa_fieldcat-checkbox = 'X'.
wa_fieldcat-hotspot = 'X'.
ENDCASE. MODIFY gt_fieldcat FROM wa_fieldcat INDEX l_index.
ENDLOOP. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IS_LAYOUT = gs_layout
IT_FIELDCAT = gt_fieldcat[]
I_CALLBACK_PF_STATUS_SET = 'ALV_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
I_SAVE = 'A'
TABLES
T_OUTTAB = gt_data
EXCEPTIONS
PROGRAM_ERROR =
OTHERS = .
ENDFORM. FORM alv_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS_POST' .
ENDFORM. " ALV_PF_STATUS FORM alv_user_command USING in_ucomm LIKE sy-ucomm
in_selfield TYPE slis_selfield. DATA: ref TYPE REF TO cl_gui_alv_grid,
wa_data LIKE gt_data. DATA: l_index LIKE sy-index. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref.
CALL METHOD ref->check_changed_data. CASE in_ucomm.
WHEN '&ZALL'. "全选
LOOP AT gt_data.
l_index = sy-tabix.
gt_data-checkbox = 'X'.
MODIFY gt_data INDEX l_index.
ENDLOOP.
CALL METHOD ref->refresh_table_display. "刷新ALV data
WHEN '&ZSAL'. "反选
LOOP AT gt_data.
l_index = sy-tabix.
gt_data-checkbox = space.
MODIFY gt_data INDEX l_index.
ENDLOOP.
CALL METHOD ref->refresh_table_display. "刷新ALV data
WHEN '&IC1'. "单选,如果未设置 wa_fieldcat-hotspot,则为行双击
READ TABLE gt_data INTO wa_data INDEX in_selfield-tabindex.
LOOP AT gt_data.
l_index = sy-tabix.
IF l_index = in_selfield-tabindex.
IF in_selfield-fieldname = 'CHECKBOX'
AND wa_data-checkbox = space.
gt_data-checkbox = 'X'.
ELSEIF in_selfield-fieldname = 'CHECKBOX'
AND wa_data-checkbox = 'X'.
gt_data-checkbox = space.
ENDIF.
MODIFY gt_data INDEX l_index.
EXIT.
ENDIF.
ENDLOOP.
CALL METHOD ref->refresh_table_display.
" cl_demo_output=>write( in_selfield-tabindex ).
"cl_demo_output=>display( ).
WHEN '&DATA'.
cl_demo_output=>write( gt_data[] ).
cl_demo_output=>display( ).
ENDCASE.
ENDFORM.
自定义按钮:
运行效果:
3、拓展(单选某张PO的项次则改PO所有的项次全选)
代码:
************************************************************************
* Program Name : ZMMR999
* Descriptions :
* Updates Tables :
* Input Parameters :
* Output Parameters :
* Return Codes :
* Special Logic :
* Includes :
************************************************************************
* Modification Log
************************************************************************
* Date Ver. Programmer Descriptions
* -------- ---- ------------ -------------------------------------------
* 20171223 1.0 xxx Create
*
************************************************************************
REPORT ZMMR999.
* Tables Definitions
************************************************************************
*TABLES:.
TABLES: marc,ekpo.
************************************************************************
* Data Definitions
************************************************************************
DATA: BEGIN OF gt_data OCCURS ,
checkbox TYPE c , "复选框
ebeln LIKE ekpo-ebeln, "PO
ebelp LIKE ekpo-ebelp, "PO项次
END OF gt_data. TYPE-POOLS: slis.
DATA: gs_layout TYPE slis_layout_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv. "ALV自定義按鈕
CONSTANTS alv_pf_status TYPE slis_formname VALUE 'ALV_PF_STATUS'.
*ALV自定義按鈕事件
CONSTANTS alv_user_command TYPE slis_formname
VALUE 'ALV_USER_COMMAND'.
************************************************************************
* Includes Module
************************************************************************ ************************************************************************
* Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-b01.
PARAMETERS: p_werks LIKE marc-werks OBLIGATORY DEFAULT ''. SELECT-OPTIONS: s_ebeln FOR ekpo-ebeln,
s_ebelp FOR ekpo-ebelp.
SELECTION-SCREEN END OF BLOCK b1. ************************************************************************
* Initialization
************************************************************************
INITIALIZATION. ************************************************************************
* At Selection Screen
************************************************************************
AT SELECTION-SCREEN. ************************************************************************
* At Selection Screen Output
************************************************************************
AT SELECTION-SCREEN OUTPUT. ************************************************************************
* Report Format
************************************************************************
TOP-OF-PAGE. END-OF-PAGE.
************************************************************************
* Main Process
************************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM display_data.
END-OF-SELECTION. FORM get_data.
DATA: l_index LIKE sy-tabix. SELECT ebeln ebelp INTO CORRESPONDING FIELDS OF TABLE gt_data
FROM ekpo
WHERE bukrs = p_werks
AND ebeln IN s_ebeln
AND ebelp IN s_ebelp. SORT gt_data BY ebeln ebelp.
ENDFORM. *&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM display_data.
DATA: l_repid TYPE sy-repid,
l_inclname TYPE trdir-name,
l_index LIKE sy-tabix. CLEAR: gt_fieldcat[],wa_fieldcat. l_repid = l_inclname = sy-cprog. "栏位最适宽度
gs_layout-colwidth_optimize = 'X'.
"复选框
"gs_layout-box_fieldname = 'CHECKBOX'. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid
I_INTERNAL_TABNAME = 'GT_DATA'
I_INCLNAME = l_inclname
CHANGING
CT_FIELDCAT = gt_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE =
PROGRAM_ERROR =
OTHERS = . LOOP AT gt_fieldcat INTO wa_fieldcat.
l_index = sy-tabix. CASE wa_fieldcat-fieldname.
WHEN 'CHECKBOX'.
"技术字段,设置’X’后,该字段不会显示,也不能输出,如同MANDT字段一样的效果
"wa_fieldcat-tech = 'X'. wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
wa_fieldcat-seltext_l = '复选框'.
wa_fieldcat-fix_column = 'X'.
wa_fieldcat-checkbox = 'X'.
wa_fieldcat-hotspot = 'X'.
ENDCASE. MODIFY gt_fieldcat FROM wa_fieldcat INDEX l_index.
ENDLOOP. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IS_LAYOUT = gs_layout
IT_FIELDCAT = gt_fieldcat[]
I_CALLBACK_PF_STATUS_SET = 'ALV_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
I_SAVE = 'A'
TABLES
T_OUTTAB = gt_data
EXCEPTIONS
PROGRAM_ERROR =
OTHERS = .
ENDFORM. FORM alv_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS_POST' .
ENDFORM. " ALV_PF_STATUS FORM alv_user_command USING in_ucomm LIKE sy-ucomm
in_selfield TYPE slis_selfield. DATA: ref TYPE REF TO cl_gui_alv_grid,
wa_data LIKE gt_data. DATA: l_index LIKE sy-index. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref.
CALL METHOD ref->check_changed_data. CASE in_ucomm.
WHEN '&ZALL'. "全选
LOOP AT gt_data.
l_index = sy-tabix.
gt_data-checkbox = 'X'.
MODIFY gt_data INDEX l_index.
ENDLOOP.
CALL METHOD ref->refresh_table_display. "刷新ALV data
WHEN '&ZSAL'. "反选
LOOP AT gt_data.
l_index = sy-tabix.
gt_data-checkbox = space.
MODIFY gt_data INDEX l_index.
ENDLOOP.
CALL METHOD ref->refresh_table_display. "刷新ALV data
WHEN '&IC1'. "单选,如果未设置 wa_fieldcat-hotspot,则为行双击
READ TABLE gt_data INTO wa_data INDEX in_selfield-tabindex.
IF in_selfield-fieldname = 'CHECKBOX'
AND wa_data-checkbox = space.
LOOP AT gt_data ASSIGNING FIELD-SYMBOL(<fs_temp>)
WHERE ebeln = wa_data-ebeln.
<fs_temp>-checkbox = 'X'.
ENDLOOP.
ELSEIF in_selfield-fieldname = 'CHECKBOX'
AND wa_data-checkbox = 'X'.
LOOP AT gt_data ASSIGNING FIELD-SYMBOL(<fs_temp2>)
WHERE ebeln = wa_data-ebeln.
<fs_temp2>-checkbox = space.
ENDLOOP.
ENDIF.
CALL METHOD ref->refresh_table_display.
" cl_demo_output=>write( in_selfield-tabindex ).
"cl_demo_output=>display( ).
WHEN '&DATA'.
cl_demo_output=>write( gt_data[] ).
cl_demo_output=>display( ).
ENDCASE.
ENDFORM.
运行效果:
二、点击事件
1、行双击:
代码:
************************************************************************
* Program Name : ZMMR999
* Descriptions :
* Updates Tables :
* Input Parameters :
* Output Parameters :
* Return Codes :
* Special Logic :
* Includes :
************************************************************************
* Modification Log
************************************************************************
* Date Ver. Programmer Descriptions
* -------- ---- ------------ -------------------------------------------
* 20171223 1.0 xxx Create
*
************************************************************************
REPORT ZMMR999.
* Tables Definitions
************************************************************************
*TABLES:.
TABLES: marc,ekpo.
************************************************************************
* Data Definitions
************************************************************************
DATA: BEGIN OF gt_data OCCURS ,
* checkbox TYPE c , "复选框
ebeln LIKE ekpo-ebeln, "PO
ebelp LIKE ekpo-ebelp, "PO项次
END OF gt_data. TYPE-POOLS: slis.
DATA: gs_layout TYPE slis_layout_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv. *ALV自定義按鈕事件
CONSTANTS alv_user_command TYPE slis_formname
VALUE 'ALV_USER_COMMAND'. ************************************************************************
* Includes Module
************************************************************************ ************************************************************************
* Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-b01.
PARAMETERS: p_werks LIKE marc-werks OBLIGATORY DEFAULT ''. SELECT-OPTIONS: s_ebeln FOR ekpo-ebeln,
s_ebelp FOR ekpo-ebelp.
SELECTION-SCREEN END OF BLOCK b1. ************************************************************************
* Initialization
************************************************************************
INITIALIZATION. ************************************************************************
* At Selection Screen
************************************************************************
AT SELECTION-SCREEN. ************************************************************************
* At Selection Screen Output
************************************************************************
AT SELECTION-SCREEN OUTPUT. ************************************************************************
* Report Format
************************************************************************
TOP-OF-PAGE. END-OF-PAGE.
************************************************************************
* Main Process
************************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM display_data.
END-OF-SELECTION. FORM get_data.
DATA: l_index LIKE sy-tabix. SELECT ebeln ebelp INTO CORRESPONDING FIELDS OF TABLE gt_data
FROM ekpo
WHERE bukrs = p_werks
AND ebeln IN s_ebeln
AND ebelp IN s_ebelp. SORT gt_data BY ebeln ebelp.
ENDFORM. *&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM display_data.
DATA: l_repid TYPE sy-repid,
l_inclname TYPE trdir-name,
l_index LIKE sy-tabix. CLEAR: gt_fieldcat[],wa_fieldcat. l_repid = l_inclname = sy-cprog. "栏位最适宽度
gs_layout-colwidth_optimize = 'X'.
"复选框
* gs_layout-box_fieldname = 'CHECKBOX'. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid
I_INTERNAL_TABNAME = 'GT_DATA'
I_INCLNAME = l_inclname
CHANGING
CT_FIELDCAT = gt_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE =
PROGRAM_ERROR =
OTHERS = . LOOP AT gt_fieldcat INTO wa_fieldcat.
l_index = sy-tabix. CASE wa_fieldcat-fieldname.
* WHEN 'CHECKBOX'.
* "技术字段,设置’X’后,该字段不会显示,也不能输出,如同MANDT字段一样的效果,不然会多出空列
* wa_fieldcat-tech = 'X'.
ENDCASE. MODIFY gt_fieldcat FROM wa_fieldcat INDEX l_index.
ENDLOOP. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IS_LAYOUT = gs_layout
IT_FIELDCAT = gt_fieldcat[]
I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
I_SAVE = 'A'
TABLES
T_OUTTAB = gt_data
EXCEPTIONS
PROGRAM_ERROR =
OTHERS = .
ENDFORM. FORM alv_user_command USING in_ucomm LIKE sy-ucomm
in_selfield TYPE slis_selfield.
DATA: wa_data LIKE gt_data.
CASE in_ucomm.
WHEN '&IC1'. "行双击
READ TABLE gt_data INTO wa_data INDEX in_selfield-tabindex.
cl_demo_output=>write( wa_data ).
cl_demo_output=>display( ).
ENDCASE.
ENDFORM.
运行效果:
2、单元格双击事件(双击PO进入ME23N显示PO,双击物料进入MM03显示物料)
代码:
************************************************************************
* Program Name : ZMMR999
* Descriptions :
* Updates Tables :
* Input Parameters :
* Output Parameters :
* Return Codes :
* Special Logic :
* Includes :
************************************************************************
* Modification Log
************************************************************************
* Date Ver. Programmer Descriptions
* -------- ---- ------------ -------------------------------------------
* 20171223 1.0 xxx Create
*
************************************************************************
REPORT ZMMR999.
* Tables Definitions
************************************************************************
*TABLES:.
TABLES: marc,ekpo.
************************************************************************
* Data Definitions
************************************************************************
DATA: BEGIN OF gt_data OCCURS ,
* checkbox TYPE c , "复选框
ebeln LIKE ekpo-ebeln, "PO
ebelp LIKE ekpo-ebelp, "PO项次
END OF gt_data. TYPE-POOLS: slis.
DATA: gs_layout TYPE slis_layout_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv. *ALV自定義按鈕事件
CONSTANTS alv_user_command TYPE slis_formname
VALUE 'ALV_USER_COMMAND'. ************************************************************************
* Includes Module
************************************************************************ ************************************************************************
* Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-b01.
PARAMETERS: p_werks LIKE marc-werks OBLIGATORY DEFAULT ''. SELECT-OPTIONS: s_ebeln FOR ekpo-ebeln,
s_ebelp FOR ekpo-ebelp.
SELECTION-SCREEN END OF BLOCK b1. ************************************************************************
* Initialization
************************************************************************
INITIALIZATION. ************************************************************************
* At Selection Screen
************************************************************************
AT SELECTION-SCREEN. ************************************************************************
* At Selection Screen Output
************************************************************************
AT SELECTION-SCREEN OUTPUT. ************************************************************************
* Report Format
************************************************************************
TOP-OF-PAGE. END-OF-PAGE.
************************************************************************
* Main Process
************************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM display_data.
END-OF-SELECTION. FORM get_data.
DATA: l_index LIKE sy-tabix. SELECT ebeln ebelp INTO CORRESPONDING FIELDS OF TABLE gt_data
FROM ekpo
WHERE bukrs = p_werks
AND ebeln IN s_ebeln
AND ebelp IN s_ebelp. SORT gt_data BY ebeln ebelp.
ENDFORM. *&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM display_data.
DATA: l_repid TYPE sy-repid,
l_inclname TYPE trdir-name,
l_index LIKE sy-tabix. CLEAR: gt_fieldcat[],wa_fieldcat. l_repid = l_inclname = sy-cprog. "栏位最适宽度
gs_layout-colwidth_optimize = 'X'.
"复选框
* gs_layout-box_fieldname = 'CHECKBOX'. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid
I_INTERNAL_TABNAME = 'GT_DATA'
I_INCLNAME = l_inclname
CHANGING
CT_FIELDCAT = gt_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE =
PROGRAM_ERROR =
OTHERS = . LOOP AT gt_fieldcat INTO wa_fieldcat.
l_index = sy-tabix. CASE wa_fieldcat-fieldname.
* WHEN 'CHECKBOX'.
* "技术字段,设置’X’后,该字段不会显示,也不能输出,如同MANDT字段一样的效果,不然会多出空列
* wa_fieldcat-tech = 'X'.
ENDCASE. MODIFY gt_fieldcat FROM wa_fieldcat INDEX l_index.
ENDLOOP. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IS_LAYOUT = gs_layout
IT_FIELDCAT = gt_fieldcat[]
I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
I_SAVE = 'A'
TABLES
T_OUTTAB = gt_data
EXCEPTIONS
PROGRAM_ERROR =
OTHERS = .
ENDFORM. FORM alv_user_command USING in_ucomm LIKE sy-ucomm
in_selfield TYPE slis_selfield.
DATA: wa_data LIKE gt_data.
CASE in_ucomm.
WHEN '&IC1'. "行双击
CASE in_selfield-fieldname. "双击的栏位名
WHEN 'EBELN'.
"PARAMETER ID通过F1->technical information->Parameter id可以获得
SET PARAMETER ID: 'BES' FIELD in_selfield-value.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM.
运行效果:
最新文章
- Quartz.net Trigger触发器下 Cron表达式的格式
- C# 将PDF文件转换为word格式
- ABAP语言常用的系统字段及函数
- c#开发Mongo笔记第五篇
- [openwrt 项目开发笔记]: 传送门
- [转]How to insert a row between two rows in an existing excel with HSSF (Apache POI)
- 应中DOS中断显示字符串(摘自《汇编语言》王爽)
- 一个自定义的窗体样式MessageBox控件
- 【转】使用Boost Graph library(一)
- ScrollView 在嵌套 ViewPager 时出现的问题
- jQuery(2)——选择器
- vue.js开发环境搭建以及创建一个vue实例
- 8.23.4 IO-输入输出16个流
- 递归调用里的性能问题(js)
- Android Weekly Notes Issue #283
- LeetCode 456. 132 Pattern
- 2015-11-03 ado.net3
- Mybatis 缓存失效的几种情况
- idea中切换svn地址不起作用
- AngularJS 中{{}}与ng-bind指令
热门文章
- SPM(Software Project Management)课程感想
- Python中单引号和双引号的作用
- 如何监控tomcat性能:[1]工具一
- tb刷单怎么不被降权
- Unity设计模式+Java设计模式,讲解+案例+PPT,一次性学会设计模式,拥抱高薪!
- vue入门|ElementUI使用指南
- 负载均衡服务TCP端口健康检查成功,为什么在后端业务日志中出现网络连接异常信息?
- Spring Boot TImer Schedule Quartz
- Linux openkvm disk expansion
- layui 鼠标悬停单元格显示全部