ABAP:ALV单击事件:展示下一个ALV

一、需求说明
展示一个总的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版权协议,转载请附上原文出处链接和本声明。