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:自定义事务代码,填写短文本即事务代码的描述,选择启动对象为报表事务。
填写程序名,点击保存。