SAP ABAP 创建 ALV 报表详细教程含示例

1.事务代码输入 SE38
输入程序名,点击创建。PS:命名要以 Z 开头。

在这里插入图片描述

2.填写标题,类型选择 “1 可执行程序”。点击保存。

在这里插入图片描述

3.在弹出的界面中,包填写对应的开发包(按照自己或公司的开发包来),也可以选择 temp 本地创建。
ps:本地创建不能传输到测试机和开发机,如果是正经的需求开发注意不要选择该项。

在这里插入图片描述

4.点击下方第一个按钮保存后会弹出请求号创建的小框。点击新建请求号,这将把该程序的创建修改包入请求号,该请求号是将代码从开发机传递到测试机好生产机的凭证。(请求号可以在 SE01 进行查看传输)。
如果该程序是和其他相关程序是一个项目或任务,可以填写已有的请求号,包入同一个请求号内。

在这里插入图片描述

填写简短描述,点击保存。

在这里插入图片描述

点击保存后会自动生成一个新请求号,点击下方小绿√ 确认保存。

在这里插入图片描述

5.确认后会弹出源码编辑窗口。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.在代码里定义变量,按钮。写查询语句将想要的数据插入内表输出。
例:将一个记录学生信息的数据库表内容展示到报表。
6.1 代码 se11 创建数据库表,输入名称点击创建。
在这里插入图片描述
在这里插入图片描述

输入字段名和数据类型,点击保存激活。

在这里插入图片描述

在这里插入图片描述

6.2.事务代码 se16n 查看刚才新建的数据库表,创建填充一些测试学生信息数据。

在这里插入图片描述
在这里插入图片描述
6.3 基础报表源码如下:

*&---------------------------------------------------------------------*
*& Report ZMMRTEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZMMRTEST.

*----------------------------------------------------------------------*
* Type-pools/定义类型池
*----------------------------------------------------------------------*
TYPE-POOLS: slis.

*----------------------------------------------------------------------*
* Tables/声明数据库表
*----------------------------------------------------------------------*
TABLES:ZMMTEST.

*----------------------------------------------------------------------*
* Type/自定义类型
*----------------------------------------------------------------------*
TYPES:BEGIN OF ty_alv,
        id   type zmmtest-id,
        name type zmmtest-name,
        age  type zmmtest-age,
        sex  type zmmtest-sex,
        hobby type zmmtest-hobby,
  END OF ty_alv.

DATA:gt_alv      TYPE STANDARD TABLE OF ty_alv,
     gs_alv      TYPE ty_alv.


*-------------------------------------*
* Define the Macros/定义
*----------------------------------------------------------------------*
DEFINE set_fieldcat.
  CLEAR gs_fcat_lvc .
  gs_fcat_lvc-fieldname = &1."内表的字段
  gs_fcat_lvc-outputlen = &2."输出长度
  gs_fcat_lvc-scrtext_l = &3."在ALV里面显示的名字
  gs_fcat_lvc-just      = &4."水平对齐方式,L左对齐,R右对齐。
  gs_fcat_lvc-no_zero   = &5."去除前导零
  APPEND gs_fcat_lvc TO gt_fcat_lvc .
END-OF-DEFINITION.
*----------------------------------------------------------------------*
* 声明ALV对象
*----------------------------------------------------------------------*
DATA:gs_layout_lvc TYPE lvc_s_layo,
     gt_fcat_lvc   TYPE lvc_t_fcat,
     gs_fcat_lvc   TYPE lvc_s_fcat.
*----------------------------------------------------------------------*
* Internal table and work area/定义内表和工作区
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* Selection  screen/定义屏幕
*----------------------------------------------------------------------*
SELECTION-SCREEN FUNCTION KEY: 1 .
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE TEXT-t01.
    SELECT-OPTIONS: s_id FOR zmmtest-id,
                    s_name FOR zmmtest-name,
                    s_age FOR zmmtest-age,
                    s_sex FOR zmmtest-sex,
                    s_hobby FOR zmmtest-hobby.
SELECTION-SCREEN END OF BLOCK block1.
*----------------------------------------------------------------------*
* Initialization/初始事件
*----------------------------------------------------------------------*
INITIALIZATION.

*----------------------------------------------------------------------*
* At selection-screen/屏幕事件
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.

*----------------------------------------------------------------------*
* AT SELECTION-SCREEN OUTPUT
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
*----------------------------------------------------------------------*
* Start-of-selection/开始选择事件
*----------------------------------------------------------------------*
START-OF-SELECTION.
*取数据
  PERFORM frm_get_data.
*ALV展示
  PERFORM frm_display_alv.
*----------------------------------------------------------------------*
* End-of-selection/结束选择事件
*----------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_get_data .
  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE gt_alv
    from zmmtest
    where id in s_id
       AND name in s_name
       AND age  in s_age
       AND sex  in s_sex
       AND hobby in s_hobby.

endform.

*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_display_alv .
  set_fieldcat:'ID'  '' '学号' '' '',
               'NAME' '' '学生姓名' '' '',
               'AGE' '' '年龄' '' '',
               'SEX' '' '性别' '' '',
               'HOBBY' '' '兴趣爱好' '' ''.
  CLEAR:gs_layout_lvc.
  gs_layout_lvc-zebra     = 'X'.
  gs_layout_lvc-cwidth_opt   = 'X'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
      is_layout_lvc      = gs_layout_lvc
      it_fieldcat_lvc    = gt_fcat_lvc
      i_save             = 'A'
    TABLES
      t_outtab           = gt_alv
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.

运行效果如下图:

在这里插入图片描述
在这里插入图片描述

6.4 PS:
选项的标题是在文本元素里修改。
在这里插入图片描述
如果报表状态栏无法使用,事务代码 se80 找到对应程序或者点击显示对象列表建立 GUI 状态。

在这里插入图片描述
SE41 选择标准菜单复制到自己的报表程序。SAPLKKBL,STANDARD_FULLSCREEN
在这里插入图片描述

将这个报表程序生成事务代码以供用户使用:
1.点击层次,右键创建事务:
在这里插入图片描述
2:自定义事务代码,填写短文本即事务代码的描述,选择启动对象为报表事务。
在这里插入图片描述
填写程序名,点击保存。
在这里插入图片描述

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值