ABAP语法规则
- ABAP程序是由若干个单独的语句组成的
- 每一个语句都用句点(英文)结束
- 语句的第一个单词一般为关键字
- 语句中单词之间至少要用一个空格隔开
- 语句可以缩进
- 一句语句可以由多行组成
- 在一行中可以由多个语句
ABAP 数据声明
变量定义基本格式
DATA < f > [(< length >)] < type> [< value>] [< decimals>].
< f >指定变量名
< length>指定变量长度
< type>指定变量的类型,还可以使用type来指定
< decimals> 指定变量小数的位数
-
数据类型
不占用内存空间。
描述了数据对象的属性。
是数据对象的属性并与数据对象联系紧密。
用户可以自定义 -
数据对象
是程序在运行时使用的物理单元。
占用内存空间。
每个数据对象都有分配给它的特定数据类型。
ABAP/4根据数据对象的数据类型处理数据对象。 -
预定义基础数据类型
简单的变量定义示范
DATA :
W_CHAR TYPE C, "1位长度的字符变量
W_MULCHAR(20) TYPE C, "20位长度的字符变量
W_INTERGER TYPE I VALUE 10, "整型变量,并赋上了初值10
W_FLOAT TYPE F VALUE 1,2E-10, "浮点数
W_DATE TYPE D VALUE '20030312', "日期
W_TIME TYPE T VALUE '123212', "时间
W_NUMBER TYPE N, "1位数字变量
W_MULNUM(10) TYPE N, "10位数字变量
W_QUAN TYPE P, "缺省有3位小数的变量
W_CURR TYPE P DECIMALS 2. "固定2位小数的变量
DATA :
W_CHAR_REF LIKE W_CHAR, "和上面定义的W_CHAR一样
W_MATNR LIKE MARA-MATNR. "和标准表MARA中字段MATNR一样
预定义结构化类型
通常情况下,ABAP/4程序中的结构化数据类型是用户定义的。
在 ABAP/4 中,没有可用的预定义结构化数据类型,但下列例外:
例如: TABLES: sbooks.
生成了一个与表结构相同﹐命名相同的结构
常量定义
常量是包含值的数据对象,如果在程序中频繁使用某常量,可以利用常量语句,将其声明为具有固定值的变量:
语法:CONSTANTS < c>[< length>] < type> < value> [< decimals>].
要将字段串定义为常量,请写:
CONSTANTS: BEGIN OF < fstring>,
< component declaration>,
…
END OF < fstring>.
对于常量语句必须使用 参数,利用 参数指定的初始值,在程序的执行期间不能更改,否则,系统将报错误消息。
ABAP/4中的结构定义
结构声明同样有两种方法:
DATA / TYPES:
BEGIN OF <结构名>, <项目1>, <项目2>, …… <项目n>,
END OF <结构名>.
DATA : <结构名> TYPE|LIKE <结构|表>.
定义示例
1.直接声明
DATA:
BEGIN OF TYP_STUDENT,
NAME(40) TYPE C,
BIRTH_DATE TYPE D,
BIRTH_TIME TYPE T,
HEIGHT TYPE P,
WEIGHT TYPE I,
END OF TYP_STUDENT.
2.使用like
DATA :
TYP_STUDENT_REF LIKE TYP_STUDENT,
TYP_MARA LIKE MARA.
3.特殊的用法中,在自己的结构中包含别的结构
DATA:
BEGIN OF TYP_STUDENT2.
INCLUDE STRUCTURE TYP_STUDENT.
DATA:CLASS(2)
TYPE N,
DIRECTOR(40) TYPE C,
END OF TYP_STUDENT2.
内表
-
概念
内表是一种临时的数据表,它并不建立在Database Server上,而是建立在本地内存空间中,所以它不占用系统资源,而且存取速度快。正因为这些特性,使得内表在ABAP编程中显得相当的重要。 -
特征
内部表是ABAP/4中最核心的处理对象
内部表是用来处理(增加、查询、修改、删除)一系列具有相同结构的数据的
内部表涵盖了在其它编程语言中数组的功能
内部表仅在ABAP/4程序运行时在内存空间里存在
内部表是自动化的对象,它自动完成相关的内存管理 -
分类
内表可以分为有序表和无序表(hashtable),有序表又分为标准表和排序表。这三种表在使用中各有区别,一般我们未特别指明的情况下都是用的标准表。
标准表是以Index来进行排列的,我们可以使用Index和Key来访问它。排序表是以Key来进行排列的,同样的,我们也可以使用Index和Key来进行访问。
无序表是(hashtable)不按照任何规则进行排列的,对它的访问只能按照Key来进行。
-
内表的声明
内部表