ALV报表——点击事件(二)
目录
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.
运行效果:

ALV报表——点击事件(二)的更多相关文章
- juery下拉刷新,div加载更多元素并添加点击事件(二)
buffer.append("<div class='col-xs-3 "+companyId+"' style='padding-left: 10px; padd ...
- Unity UGUI按钮添加点击事件
1. 可视化创建及事件绑定 # 1 : 通过 Hierarchy 面板创建 UI > Button. 2 : 创建一个脚本 TestClick.cs, 定义了一个 Click 的 public ...
- 事件处理之二:点击事件监听器的五种写法 分类: H1_ANDROID 2013-09-11 10:32 4262人阅读 评论(1) 收藏
首选方法二! 方法一:写一个内部类,在类中实现点击事件 1.在父类中调用点击事件 bt_dail.setOnClickListener(new MyButtonListener()); 2.创建内部类 ...
- (二)AS给button添加点击事件
三种方法给Button添加点击事件 (一)通过button的id,添加继承View.OnClickListener的监听实现 <Button android:id="@+id/btn_ ...
- 帆软报表(finereport)点击事件对话框打开
点击事件对话框打开iframe var iframe = $("<iframe id='001' name='001' width='100%' height='100%' scrol ...
- HTML 事件(二) 事件的注册与注销
本篇主要介绍HTML元素事件的注册.注销的方式. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流.事件委托 4. ...
- Android开发-之监听button点击事件
一.实现button点击事件的方法 实现button点击事件的监听方法有很多种,这里总结了常用的四种方法: 1.匿名内部类 2.外部类(独立类) 3.实现OnClickListener接口 4.添加X ...
- Android 防止多次点击事件
恐怕大家都会遇到这样的问题,一个点击事件多次触发,导致,同样的内容提交了多次,或者说弹出多个页面... 下面是简单的方案,大家可以试一试 原理很简单,当我们第一次点击的时候,把按钮变成不可点击状态. ...
- UIButton无法响应点击事件
一.问题描述 因为项目需要,需要UITableView上添加固定的筛选表头,一直固定,不能随UITableView滚动.所以直接将表头与UITableView分离,将它添加到控制器的UIView上,即 ...
随机推荐
- Python-matplotlib画图(莫烦笔记)
https://www.zhihu.com/collection/260736383 https://blog.csdn.net/gaotihong/article/details/80983937 ...
- for(auto i : v)遍历容器元素
c++11的新特性,v是一个可遍历的容器或流,比如vector类型,i就用来在遍历过程中获得容器里的每一个元素. for(auto i:v) for(auto &i:v) 代码1:#inclu ...
- java泛型--问号?和T或E或K或V的区别
所谓泛型,就是在定义类.接口.方法.参数或成员变量的时候,指定它们操作对象的类型为通用类型. 使用 尖括号 <> 操作符 (The diamond operator )表示泛型, 尖括号内 ...
- 如何在 Linux 中更改 swappiness
交换空间是 RAM 内存已满时使用的硬盘的一部分.交换空间可以是专用交换分区或交换文件.当 Linux 系统耗尽物理内存时,非活动页面将从 RAM 移动到交换空间.Swappiness 是一个 Lin ...
- 从0开始学爬虫12之使用requests库基本认证
从0开始学爬虫12之使用requests库基本认证 此处我们使用github的token进行简单测试验证 # coding=utf-8 import requests BASE_URL = " ...
- Mac或者linux系统自动加载python tab补全功能
因为mac OS属于类unix系统,所以基本和linux系统使用相差不大,只是用户登陆时自动执行环境变量文件的区别 mac系统: ShanedeMBP:login_api shane$ vi ~/.b ...
- Unity3d基于Socket通讯例子(转)
按语:按照下文,服务端利用网络测试工具,把下面客户端代码放到U3D中摄像机上,运行结果正确. http://www.manew.com/thread-102109-1-1.html 在一个网站上看到有 ...
- OpenGL程序无法启动此应用程序,因为计算机中丢失glut32.dll(转))
今天打开一个OpenGL源码,各种修改之后想要运行看一下效果,结果在我的开发环境下出现缺少相应的dll库: Windows7 64位+VS2010 提示:程序无法启动此应用程序,因为计算机中丢失glu ...
- LODOP判断没成功发送任务-重打一下
一般情况下打印执行了PRINT()或PRINTA(),就会加入打印机队列,如果打印机脱机,就会在队列里排队,当打印机连上并取消脱机的时候,正在排队的任务就会打出,所以一般建议用是否加入队列来判断打印成 ...
- 【JS新手教程】JS获取当前星期几的几种方法
该文通过获取星期几的几种方法,介绍JS里的数组,判断,和字符串截取,可以当作新手教程看,小白也看的懂.获取星期几,可通过Date()对象的getDay()获取,获取的是一个数字,对应的是0,1,2,3 ...