ABAP程序的Type-1类型的程序,一般称为报表程序(Report Program),也叫可执行程序(Executable Program)。 从数据库里读取所需的数据后,将数据转换格式后,以报表的形式输出。
创建程序事务码SE38或使用SE80ABAP编辑器
程序结构
标题代码部分
REPORT *** .
部分可选后缀作用
MESSAGE-ID *** "程序调用消息的来源SE93创建
NO STANDARD PAGE HEADING 去title;
LINE-SIZE控制每行长度;
LINE-COUNT 每多少行空一行
消息使用方法
MESSAGE s001."数字为消息号
MESSAGE s001 WITH '1' '2' .在SE91消息维护器创建每条消息内容 输出单引号内的内容在se91中要添加&1 &2。
消息类型为E、A时,程序提示错误消息,程序将自动结束,不再运行消息后续程序
MESSAGE s001 DISPLAY LIKE 'E'. "显示黄色报警但不结束程序
选择界面
单值输入
*选择画面 单值输入
SELECTION-SCREEN BEGIN OF BLOCK sc1 WITH FRAME TITLE TEXT-001."设置显示区块
*选择画面
PARAMETERS:
p_1 TYPE c LENGTH 1 DEFAULT 'A', "默认值
p_2 TYPE c LENGTH 10.
p_3 TYPE c OBLIGATORY. "必输
*搜索帮助
PARAMETERS:
p_4 TYPE zyt36_sch_6039-schid, "表名字-字段名字,前提条件,给表中的字段添加了对应的搜索帮助
p_4_1 TYPE zde_yt36_schid_qb MATCHCODE OBJECT zhp_schid_6039, "用数据元素定义,指定搜索帮助
p_4_2 TYPE mara-matnr,
p_4_3 TYPE zyt36_sTU_6039-gender.
SELECTION-SCREEN END OF BLOCK sc1.
SELECTION-SCREEN BEGIN OF BLOCK sc2 WITH FRAME TITLE TEXT-002.
PARAMETERS:
p_5 TYPE c AS CHECKBOX, "创建一个checkbox复选框
p_6 TYPE c RADIOBUTTON GROUP r1, "R1同一组,default跟谁,谁默认勾选
p_7 TYPE c RADIOBUTTON GROUP r1 DEFAULT 'X',
p_8 TYPE c RADIOBUTTON GROUP r2 DEFAULT 'X',
p_9 TYPE c RADIOBUTTON GROUP r2.
"转到文本元素更改选项的名称
SELECTION-SCREEN END OF BLOCK sc2.
点击转到->文本元素->选择文本 可以给自定义的变量添加描述并以描述文字显示。
多值输入
SELECTION-SCREEN BEGIN OF BLOCK sc3 WITH FRAME TITLE TEXT-003.
*输入值范围
TABLES:
zyt36_sch_6039.
SELECT-OPTIONS:
s_1 FOR zyt36_sch_6039-schid,"表名-字段名加后缀obligatory 必输
s_2 FOR zyt36_sch_6039-schid NO INTERVALS,"不显示high
s_3 FOR zyt36_sch_6039-schid NO-EXTENSION."不显示复选框
SELECTION-SCREEN END OF BLOCK sc3.
事件
*初始化:给屏幕的变量赋值
INITIALIZATION.
*给parameter赋值
p_2 = '学生1'."字段初始值
p_5 = 'X'." 给checkbox赋值
*给selection option赋值->内表
s_1-sign = 'I'.
s_1-option = 'EQ'.
s_1-low = '0001'.
s_1-high = '0000'.
APPEND s_1.
屏幕检查
*做屏幕检查,当选择屏幕输入值有变化触发
AT SELECTION-SCREEN.
IF p_4_3 <> 'F' AND p_4_3 <> 'M' AND p_4_3 IS NOT INITIAL.
MESSAGE e003 WITH '性别'.
ENDIF.
读取数据事件
START-OF-SELECTION.
DATA: lt_stu TYPE TABLE OF zyt36_stu_6039.
IF p_4_3 IS INITIAL.
SELECT * FROM zyt36_stu_6039 INTO TABLE lt_stu.
ELSE.
SELECT * FROM zyt36_stu_6039 INTO TABLE lt_stu WHERE gender = p_4_3.
ENDIF.
输出数据
END-OF-SELECTION.
MESSAGE i005.
cl_demo_output=>display( lt_stu )