04、基于ALV报表实现数据穿透(新手入门)

01、什么是ALV数据穿透

  ALV数据穿透是在ALV报表的基础上,通过点击报表中的任意一行,将那一行的数据"穿透"到对应的详情界面,类似于HTML的超链接跳转,点击之后,将数据跳转到另一个页面进行展示。ALV数据穿透具体的应用场景,常常应用于采购订单等业务的穿透(即跳转)
  优点:ALV数据穿透,相比于Java Web开发相当简单,仅仅只需要配置跳转界面,无需关心数据如何传递到详情界面。

02、ALV数据穿透方法介绍

(1)数据穿透代码

FORM frm_user_command USING r_ucomm LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield.
  CASE r_ucomm.
    WHEN '&IC1'. "鼠标双击
        READ TABLE it_item INTO DATA(s_it_item) INDEX rs_selfield-TABINDEX. "行数据
        SET PARAMETER ID 'MAT' FIELD it_item-matnr.
        CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
  ENDCASE.
ENDFORM.

(2)代码拆分讲解

代码解释
frm_user_command类似于回调函数,当点击ALV时,会自动触发FORM
r_ucomm事件名称
rs_selfield行数据
set parameter id设置跳转屏幕的参数
call transaction通过T-CODE,调用屏幕
skip first screen跳过第一个屏幕

03、简单实现ALV数据穿透

实现效果:点击ALV报表某一行中任意字段的数据,跳转穿透到详情界面

(1)ALV报表(上节已经介绍过了,所以笔者偷个懒直接复制粘贴

TYPE-POOLS: slis.
TABLES: mara.
** Layout  变量定义
DATA: gs_layout   TYPE lvc_s_layo,
      gt_fcat_lvc   TYPE lvc_t_fcat,
      gs_fcat_lvc   TYPE lvc_s_fcat.

*直接定义内表
DATA: BEGIN OF item OCCURS 0,
        matnr  LIKE mara-matnr, "物料编号
        mtart  LIKE mara-mtart, "物料类型
        matkl  LIKE mara-matkl, "物料组
      END OF item.

* 筛选界面 单选p,多选s
SELECTION-SCREEN BEGIN OF BLOCK blc WITH FRAME TITLE text-001.
  PARAMETERS:  p_matnr  LIKE mara-matnr."物料编号
  SELECT-OPTIONS  s_mtart  FOR mara-mtart ."物料类型
  SELECT-OPTIONS  s_matkl  FOR mara-matkl ."物料组
SELECTION-SCREEN END OF BLOCK blc.

* 初始化变量
INITIALIZATION.
  DATA: it_item LIKE TABLE OF item WITH HEADER LINE.

START-OF-SELECTION.
    PERFORM get_data.
    PERFORM frm_set_fieldcat.
    PERFORM frm_alv_display.

FORM get_data.
  clear: it_item.
  SELECT *
      INTO CORRESPONDING FIELDS OF TABLE it_item
      FROM mara. " 我用了模糊查询 WHERE mara~matnr LIKE '%R18%' 
ENDFORM.

FORM frm_set_fieldcat.
  DEFINE set_fieldcat.
    CLEAR gs_fcat_lvc .
    gs_fcat_lvc-fieldname = &1."内表的字段
    gs_fcat_lvc-outputlen = &2."输出长度
    gs_fcat_lvc-scrtext_l = gs_fcat_lvc-scrtext_s = gs_fcat_lvc-scrtext_m = &3."在ALV里面显示的名字
    gs_fcat_lvc-just      = &4."水平对齐方式,L左对齐,R右对齐。
    gs_fcat_lvc-lzero      = &5. "输出前导0
    gs_fcat_lvc-no_zero    = &6.
    gs_fcat_lvc-emphasize  = &7.
    APPEND gs_fcat_lvc TO gt_fcat_lvc.
  END-OF-DEFINITION.
  set_fieldcat:
    'matnr'   ''      '物料编号'        ''  ''  '' '',
    'mtart'   ''      '物料类型'        ''  ''  '' ''  ,
    'matkl'   ''      '物料组'        ''  ''  '' ''  .
ENDFORM.

FORM frm_alv_display.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'FRM_SET_STATUS'
      i_callback_user_command  = 'FRM_USER_COMMAND'
      is_layout_lvc            = gs_layout
      it_fieldcat_lvc          = gt_fcat_lvc
    TABLES
      t_outtab                 = it_item
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
ENDFORM.

(2)ALV报表数据穿透

  将上面的代码粘贴到ALV报表代码最下面即可

FORM frm_user_command USING r_ucomm LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield.
  CASE r_ucomm.
    WHEN '&IC1'. "鼠标双击
        READ TABLE it_item INTO DATA(s_it_item) INDEX rs_selfield-TABINDEX. "行数据
        SET PARAMETER ID 'MAT' FIELD it_item-matnr.
        CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
  ENDCASE.
ENDFORM.

(3)ALV数据穿透的执行过程

在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值