业务说明:通过创建自定义透明表,然后通过ALV程序代码进行调取显示。
ALV报表实现概要
SE11数据元素:ZCUST_* 客户主数据自定义字段数据元素
SE11数据库表(透明表):ZMMBNT001 客户主数据自定义后台表
SE16N维护字段值:ZCUST_* 客户主数据自定义字段维护具体值
SE38程序:ZMM_BOTECK_ALV1 BOTECK自定义ALV报表1
SE38编程:ZMM_BOTECK_ALV1 BOTECK自定义ALV报表1
SE93事务码: ZMMBNT001 自定义ALV报表事务码创建
#1 SE11创建数据元素
输入事务码SE11进入,
1处,输入数据类型
2处,点击 创建 按钮
3处,选择 数据元素
4处,点击 勾选 按钮
5处,点击 数据类型
6处,输入 数据类型 和 长度
7处,点击 字段标签
8处,输入字段长度和字段标签描述
9处,点击 激活 按钮
备注:按照相同的步骤,创建其他数据元素。
#2 SE11创建数据库表(透明表)
输入事务码SE11进入,
1处,输入 数据库表代码
2处,点击 创建 按钮,进入弹窗
3处,输入 数据库表名称 客户主数据自定义后台表
4处,选择 参数 C
5处,选择 参数 X
6处,选择 字段 页签
7处,输入透明表字段
8处,点击 激活 按钮
9处,输入 开发包
10处,点击 保存 按钮
11处,点击 确定 按钮
12处,选择数据类 APPL0
13处,点击 保存 按钮,按2次回车键
14处,勾选 日志更改
15处,点击 确认 按钮
16处,点击 激活 按钮
17处,选择 行
18处,点击 勾选确认 按钮
#3 SE16N维护数据库表(透明表)
输入事务码SE16N进入,
1 处,输入 数据库表
2处,勾选 维护条目
3处,点击 执行 按钮,进入下一个界面
4处,点击 新增行
5处,输入每个字段对应的内容
6处,点击 保存 按钮 将填入的数据进行数据库存表
#4 SE38创建ALV程序
输入事务码SE38进入,
1处,选择 源代码
2处,输入 ALV程序名
3处,点击 创建 按钮,进入弹窗
4处,输入 ALV报表名称
5处,选择 1 可执行程序
6处,点击 保存 按钮,进入弹窗界面
7处,输入 开发包,如果没有创建,详见:1 SE21开发包创建_se21 建立包-CSDN博客
8处,点击 保存 按钮,进入下一个界面
8处,如果需要创建一个新的请求号,需要点击8处,创建一个新的请求号
9处,点击 确认 按钮,进入SE38编程界面
10处,点击 保存 按钮
#5 SE38 ALV报表 程序代码
输入事务码SE38进入,输入程序名称:ZMM_BOTECK_ALV1
注意:针对于选择屏幕上面的字段中文名称维护,需要通过SE38文本元素进行维护,具体操作如下:
1处,点击 转到
2处,点击 文本元素
3处,选择 文本符号 (选择屏幕ALV标题)
4处,维护 选择屏幕ALV标题
5处,点击 选择文本
6处,输入 选择屏幕ALV字段中文名称,如果不想用数据元素上的字段描述,数据字段参考可以不用勾选
7处,点击 保存 按钮
8处,显示 更改后未激活 状态
9处,点击 激活 按钮,返回上主界面
10处,选择 行
11处,点击 确认 按钮
12处,点击 返回 按钮,返回主界面
13处,显示 主程序 状态
14处,点击 激活 按钮,激活主程序
*&---------------------------------------------------------------------*
*& Report ZMM_BOTECK_ALV1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZMM_BOTECK_ALV1.
* Type-pools 定义类型池
TYPE-POOLS: slis.
* Table 数据库表声明
TABLES: zmmbnt001.
* Type 自定义类型
TYPES:BEGIN OF ty_alv,
customer TYPE zmmbnt001-customer,
name TYPE zmmbnt001-name,
address TYPE zmmbnt001-address,
bankname TYPE zmmbnt001-bankname,
city TYPE zmmbnt001-city,
district TYPE zmmbnt001-district,
email TYPE zmmbnt001-email,
mobile TYPE zmmbnt001-mobile,
END OF ty_alv.
DATA: gt_alv TYPE STANDARD TABLE OF ty_alv.
DATA: gs_glv TYPE ty_alv.
* 定义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.
* 定义选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE TEXT-t01.
SELECT-OPTIONS: s_cust FOR zmmbnt001-customer,
s_name FOR zmmbnt001-name,
s_add FOR zmmbnt001-address,
s_bank FOR zmmbnt001-bankname,
s_city FOR zmmbnt001-city,
s_dist FOR zmmbnt001-district,
s_email FOR zmmbnt001-email,
s_mobile FOR zmmbnt001-mobile.
SELECTION-SCREEN END OF BLOCK block1.
* 事件初始化
INITIALIZATION.
* 屏幕事件
AT SELECTION-SCREEN.
AT SELECTION-SCREEN OUTPUT.
* 开始选择事件
START-OF-SELECTION.
* 读取数据
PERFORM frm_get_data.
* ALV报表展示
PERFORM frm_display_alv.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_data . "通过SQL语句SELECT从数据库表zmmbnt001抓取数据
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_alv
FROM zmmbnt001
WHERE customer IN s_cust
AND name IN s_name
AND address IN s_add
AND bankname IN s_bank
AND city IN s_city
AND district IN s_dist
AND email IN s_email
AND mobile IN s_mobile.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_display_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_alv . "ALV报表展示
set_fieldcat:'customer' '' '客户编号' '' '',
'name' '' '客户名称' '' '',
'address' '' '客户地址' '' '',
'bankname' '' '客户银行' '' '',
'city' '' '客户城市' '' '',
'district' '' '客户地区' '' '',
'email' '' '客户邮箱' '' '',
'mobile' '' '客户手机' '' ''.
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 SE38 ALV报表 程序执行
1处,点击 程序执行 按钮,进入选择屏幕界面
2处,在选择屏幕字段中输入 需要查询的客户代码 66000001
3处,点击 执行 按钮,进入下一个界面
4处,显示ALV报表客户主数据内容
#6 SE93 创建ALV报表事务码
输入事务码SE93进入,
1处,输入 事务码 ZMMBNT001 (为了方便记忆就直接用数据库表代码作为事务码代码,实际项目中根据项目要求的标准定义)
2处,点击 创建 按钮,进入弹窗
3处,显示 事务码
4处,输入 事务码名称
5处,选择 程序对象
6处,点击 确认 按钮,进入下一个界面
7处,输入程序代码
8处,点击 保存 按钮
9处,输入 开发包
10处,点击 保存 按钮
11处,点击 确认 按钮
#7 ZMMBNT001 前台事务码输入
输入事务码ZMMBNT001进入,
ALV报表开发完毕!
Done.
Created on 8th September, 2024