声明:本文仅代表原作者观点,仅用于SAP软件的应用与学习,不代表SAP公司。注:文中所示截图来源SAP软件,相应著作权归SAP所有。
01
目录
2 基本语法
2.1 数据类型
2.1.1 系统预定义的数据类型
2.1.1.1 文本型c
2.1.1.2 日期和时间类型D和T
2.1.1.3 I整数类型和N字符串整形
2.1.1.4 P和F浮点数类型
2.1.2 自定义数据类型
2.2 数据对象定义
2.3.1 普通对象的定义(参考前面基本类型应用)
2.3.2 常量
2.3.3 系统常用的一些变量
2.3.4 可以直接定义结构对象,可以like对象定义
2.3.5 结构对象作为另外一个对象的一部分
2.3.6 结构对象的include
2.3 程序基本结构及功能
2.3.1 NO STANDARD PAGE HEADING表示不展示抬头
2.3.2 MESSAGE-ID
2.3.3 非alv的列行设置,一般没人用了
2.3.4 后续结构说明
2.3.4.1 include引用
2.3.4.2 描述引用的表
2.3.4.3 描述定义的类型以及数据对象
2.3.4.4 屏幕输入报表筛选条件等
2.3.4.5 程序开始时的调用,一般很少用了
2.3.4.6 程序变量初始化的默认值
2.3.4.7 选择屏幕时触发
2.3.4.8 开始选择前触发,例如打印时抓取数据
2.3.4.9 一些命令按钮的调用
2.3.4.10 双击或者F2单元格时调用
2.3.4.11 每页打印开始或结束调用
2.3.4.12 FORM读取数据到内表
2.3.4.13 输出打印
2.4 数据处理及基本语法
02
正文
2 基本语法
更全面的基本类型如下:
se38建一个hello world类似的程序ZLGZ01
文本类型,原则上要指定字符的长度,否则默认当长度为1处理。
输出结果如下:
1.日期的基本赋值
输出结果:
2.如何赋值当前日期和当前时间呢?
3.日期的基本加减
结果如下:
I可以表示负数,如果数字填充0或者以字符串展示,就应该用N,而且N必须用长度约束,默认会补0
p和f都能表示小数,f可以取值范围很大,但是容易丢失数据,P是准确的不丢失精度数据。一般都用P,很少用F的。
1.基本的类型自定义
2.根据自定义类型再定义
3.利用自定义的基本类型,定义一个结构
4.结构类型的继承,这样就包了一层了
可以用types,也可以用like
各基本类型的默认值
字符型C:必需指定长度,否则默认是1位 日期型D:默认是YYYYMMDD格式 浮点型F:没什么特殊,默认以科学计数法 整形I:默认按照用户设置的格式输出整形 字符整形N:必需指定长度,否则会截串只显示右边的1个字符,而且是从右向左截串 P类型:必需指定小数位,否则会进位成整形 T类型:时间格式,没什么说的
整形和P的都是从右边往左算的。
SYST表中定义了所有的系统变量,采用SY-字段名定义,例如经常用的日期
正规的方式是通过MOVE-CORRESPONDING赋值,如果两个结构完全一样,也可以直接等号赋值。
最大的弊端,就是对象字段不是一个层级的了
所有对象都是平级的,相当于追加字段。如果用结构直接继承的话,字段就不是平级的了。
1.不加该段话前
2.添加该段话
3.可以修改抬头描述,通过转到-属性
如果定义MESSAGE-ID,默认调用的时候就可以省略改ID,默认调用该ID。也就是后面的MESSAGE e001(ZMLGZ01) WITH ‘123123’.中,括号及里面内容可以省略。
1.se91创建消息
2.程序代码添加MESSAGE-ID
调用效果:
4.也可以调整为error调用
&---------------------------------------------------------------------
*& include :用到的别的程序的源代码或者子程序等
*& INCLUDE .
&---------------------------------------------------------------------
&---------------------------------------------------------------------
*& TABLES :描述引用的表
*& TABLES .
*&---------
&---------------------------------------------------------------------
*& TYPES和DATA :定义的类型和数据对象
*& TYPES .
*& DATA .
*&---------
&---------------------------------------------------------------------
*& selection-screen /option/parameter:屏幕输入报表赛选条件
*& TABLES .
*selection-screen begin of block test
select-options:
selection-screen end of block test
*&---------
&---------------------------------------------------------------------
*& LOAD-OF_PROGRAM:程序开始执行时候调用
*& LOAD-OF_PROGRAM:
这个事件在SUBMIT, CALL TRANSACTION,PERFORM等执行的时候系统会自动调用这个时间
所以无需声明即可。
*&---------
&---------------------------------------------------------------------
*& INITIALIZATION.:程序变量进行初始化,启动程序开始执行
*&---------
&---------------------------------------------------------------------
*& AT SELECTION-SCREEN:选择屏幕运行时触发,主要是对查询条件或权限进行校验
*&AT SELECTION-SCREEN.
*& 1. ON pesl:在parameter变化是触发的事件
*& 2. ON END OF sel:SELECT-OPTION触发的事件
*& 3. ON VALUE-REQUEST FOR psel_low_high:选择的帮助(F4)
*& 4. ON HELP-REQUEST FOR psel_low_high:选择的帮助(F1)
*& 5. ON RADIOBUTTION GROUP radi:单选按钮事件
*& 6. ON BALOCK block:框架的触发事件
*& 7. OUTPUT:响应屏幕上的事件,修改选择屏幕的唯一方法
*&---------
&---------------------------------------------------------------------
*& start-OF-SELECTION:抓取数据,打印
*&---------
start-OF-SELECTION.
set pf-satus __. "制定报表执行时所用的 GUI-STAUTS名称
PERFORM data_retireve.
PERFORM output_data.
&---------------------------------------------------------------------
*& AT USER-COMMAND.:执行在GUI-STATUS中自定的命令,就是菜单栏的一些按钮
*&---------
&---------------------------------------------------------------------
*& AT LINE-SELECTION:由在报表中按下F2或者双击键时启动.
*&---------
&---------------------------------------------------------------------
*& TOP-OF-PAGE:每页开始打印时执行,用于定义报表表头
*& END-OF-PAGE:报表打印完最后一页后启动
*&---------
&---------------------------------------------------------------------
*& END-OF-SELECTION:报表打印完后最后一页,如可用来打印出USER输入的条件
*&---------
&---------------------------------------------------------------------
*& include FORM
*& 从表读数据到内表.
*&---------
FORM data_retireve.
SELECT * FROM __
INTO __
WHERE ___.
IF SY-SUBRC = 0.
ENDIF.
APPEND INITIAL LINE TO _____. "增加 Internal Table 元素
ENDSELECT.
ENDFORM.
&---------------------------------------------------------------------
*& Print Data:依次输出Internal Table的数据
*& 从表读数据到内表.
*&---------
FORM output_data.
WRITE:/ ____.
ENDFORM.
wirte经典语法