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