P类型用于声明小数位固定的压缩数,其数据对象占据内存字节数和数值范围取决于定义时指定的整个数据大小和小数点后位数.在使用P类型数据时,应确定选择了程序属性中的选项Fixed point arithmetic(即定点算法,一般默认情况该选项是选定的);否则系统将P类型数字作为整型对待. P类型数据在运行时系统处理效率略慢于I或F型数据.
F类型数据包括三部分:符号,尾数和指数.指数决定小数点的位置,其数值范围从1*10-307到1*10308,精确范围约15位十进制数. F类型数据和P类型数据用法类似,数值范围比P类型数据大,但由于系统将F类型数据转换为二进制数据,因此可能出现舍入误差. F类型数据不能用于屏幕元素的声明,但有时操作某些数据库相关类型时需要使用该型数据.
数据对象&类型命名规则
1. 数据类型或对象名最多不超过30字节;
2. 名称刻意由任意字母,数字以及下划线”_”组成,但必须由一个字母字符开始;
3. 不能使用内置类型名称和系统数据对象名称作为程序内部数据对象名;
4. 应避免使用ABAP语句关键字和选项作为数据对象名.
一.自定义基本类型数据
在程序中根据内置类型自定义基本数据类型的语法格式为:
TYPES type(len) TYPE type [DECIMALS dec].
在程序中根据内置类型声明基本类型数据对象的语法格式为:
DATA data(len) TYPE type [DECIMALS dec] [VALUE val].
其中TYPE选项后面指定内置类型,对于P, C, N, X类型,必须同时指定变量长度,否则取系统默认值. DECIMALS附加项止适用于指定P类型的小数位.
参照自定义类型生成新数据语法格式如下:
TYPES| DATA … TYPE 1_type…
参照程序中已经声明的数据对象生成新数据语法格式如下:
TYPES| DATA … LIKE dobj…
二,引用类型和对象
TYPES| DATA … TYPE REF TO data.
这里的data可能是数据对象,也可能是ABAP类对象和接口,根据这个区别,分别称为数据引用和对象引用.引用类型数据对象属于纵深类型.对引用对象进行赋值时,并不是对数据进行拷贝,而是在引用类型中赋指向被引用类型的指针.如果在程序中已经构造了引用类型或者对象,则可以使用TYPE或者LIKE关键字创建同类对象,而不必再次构造.类似,也可参照数据字典类型进行构造.
三.结构类型和结构体
TYPES| DATA: BEGIN OF structure.
k1[TYPE type | LIKE dobj] … ,
k2[TYPE type | LIKE dobj] … ,
…
kn[TYPE type | LIKE dobj] … ,
END OF structure.
如果在同一程序中已经定义了结构体类型或者对象,或者数据字典中定义了结构,则也可以使用TYPES和DATA语句的一般形式直接参照该结构生成新的结构体.
TYPES| DATA structure TYPE str_type | LIKE str_dobj …
特地指出的是还可以参照数据字典中定义的数据库表结构声明结构体.
TYPES| DATA structure TYPE dbtab.
这样定义的结构体往往可以在程序中用做数据库与程序之间的接口工作区.
结构体定义之后,其组件可以通过取组件运算符”-”进行访问.
结构体定义和声明时,语句内部可以通过INCLUDE子句嵌套其他结构.
TYPES| DATA: BEGIN OF struc1.
…
k2 [TYPE type | LIKE dobj]…,
INCLUDE TYPE| STRUCTURE struc2 AS name
[RENAMEING WITH SUFFIX suffix],
…
END OF struc1.
四,表类型和内表
TYPES| DATA table TYPE|LIKE tabkind OF linetype [WITH key]
[INITIAL SIZE n].
一个内表定义时需指定表的种类,行类型和表关键字等性质,这些性质将决定系统对内表的处理方式.