一、需求说明
展示一个总的ALV,其次再点击这一列ALV,展示下一个ALV明细
二、代码实例:
*&---------------------------------------------------------------------*
*& Report Z_ZHANGM_055
*&
*&---------------------------------------------------------------------*
*&ALV单击事件-展示下一个ALV
*&
*&---------------------------------------------------------------------*
REPORT z_zhangm_055.
INCLUDE zcaalv.
TABLES:zvinkc,mara.
DATA: itab LIKE zvinkc OCCURS 0 WITH HEADER LINE.
DATA:item LIKE LINE OF itab.
START-OF-SELECTION.
* itab-zdate = '00001'.
* itab-zvinr = '02131'.
* itab-matnr = 'A1233124'.
* APPEND itab.
SELECT * INTO CORRESPONDING FIELDS OF TABLE itab FROM zvinkc UP TO 2 ROWS.
END-OF-SELECTION.
PERFORM frm_alv_print.
*&---------------------------------------------------------------------*
*& Form frm_alv_print
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_alv_print .
*--------(复杂功能测试所需定义的变量)---------*
DATA: I_EVENTS TYPE SLIS_T_EVENT,
I_LAYOUT TYPE SLIS_LAYOUT_ALV,
I_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT,
I_LIST_COMMENTS TYPE SLIS_T_LISTHEADER,
I_EXCLUDING TYPE SLIS_T_EXTAB.
DATA: I_FIELDCAT_ALV TYPE SLIS_T_FIELDCAT_ALV ,
I_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA: W_VARIANT LIKE DISVARIANT, "显示变式结构
WX_VARIANT LIKE DISVARIANT,
W_VARIANT_SAVE(1) TYPE C,
W_EXIT(1) TYPE C,
W_USER_SPECIFIC(1) TYPE C,
W_CALLBACK_UCOMM TYPE SLIS_FORMNAME, "字符型
W_PRINT TYPE SLIS_PRINT_ALV, "类型组
W_LAYOUT TYPE SLIS_LAYOUT_ALV, "类型组
W_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME, "字符型
W_FIELDCAT_ALV LIKE LINE OF I_FIELDCAT_ALV,
W_EXCLUDING LIKE LINE OF I_EXCLUDING,
W_EVENTS LIKE LINE OF I_EVENTS,
W_EVENT_EXIT LIKE LINE OF I_EVENT_EXIT,
W_LIST_COMMENTS LIKE LINE OF I_LIST_COMMENTS.
DATA:lt_mara TYPE TABLE OF mara WITH HEADER LINE,
fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
layout TYPE slis_layout_alv,
w_repid LIKE sy-repid.
w_repid = sy-repid.
* 定义热键显示字段,使双击事件有效
fieldcat-ref_tabname = 'ITAB'.
fieldcat-fieldname = 'MATNR'. "单击物料这一列
fieldcat-hotspot = 'X'.
APPEND fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid "定义回执程序
is_layout = layout
i_structure_name = 'ZVINKC' "ZVINKC为一张透明表或结构
i_callback_user_command = 'ALV_USER_COMMAND' "定义执行事件
it_fieldcat = fieldcat[]
TABLES
t_outtab = itab.
ENDFORM. "frm_alv_print
FORM alv_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
* 获取当前ALV所在行数据
* READ TABLE ITAB INDEX rs_selfield-tabindex.
* SET PARAMETER ID: 'MAT' FIELD lt_mara-matnr.
* CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
"zheli
PERFORM frm_fill_layout USING ''.
PERFORM frm_init_field USING:'T1' 'ZDATE' '批次',
" 'T1' 'MATNR' '物料号',
'T1' 'ZVINR' 'VIN码'.
PERFORM frm_print_alv TABLES itab[]
USING '' ''.
ENDCASE.
ENDFORM.
三、结果展示:

透明表:ZVINKC
四、补充说明:
ALV函数:REUSE_ALV_GRID_DISPLAY 参数说明
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_interface_check = '' "接口一致性检查
i_callback_program = sy-repid "当前程序名
is_layout = layout "输出样式
it_fieldcat = fieldcat[] " 字段定义描述表
i_callback_pf_status_set = 'PF_STATUS_SET' "触发事件调用子程序
i_callback_user_command = 'USER_COMMAND' " 鼠标事件操作子程序
it_events = i_events[] " 出口程序触发事件
i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE' " ALV输出表头设置
i_grid_settings = wl_lvc_s_glay "打印表头设置
it_sort = sortable[] " 排序设置
TABLES
t_outtab = ig_out
EXCEPTIONS
program_error = 1
OTHERS = 2.
加油!!!
版权声明:本文为weixin_43734184原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。