本文主要对SAP ABAP中预定义数据类型进行一个详细地介绍,在此前文章中我们已经对预定义数据类型有了一个最基本的了解,本文在此基础上会进行更加详细深入细致地讲解,主要包括预定义数据类型的分类
预定义数据类型
预定义的数据类型包括两种,一种是在系统中已经预定义好的基本数据类型,在T-CODE:SE38 ABAP编辑器中定义数据对象时可以直接使用的,其中大致有如下最常用的8种:
| 数据类型 | 默认长度 | 有效长度 | 默认值 | 解释说明 |
| I | 4 | 4 | 0 | 整型 |
| F | 8 | 8 | 0 | 浮点型 |
| P | 8 | 1~16 | 0 | 压缩数类型(将两个十进制数字压缩到一个字节) |
| C | 1 | 1~65535 | '...' | 文本型 |
| D | 8 | 8 | '00000000' | 日期型(YYYYMMDD) |
| N | 1 | 1~65535 | '0...0' | 数字字符串类型(0~9之间的字符组成的数字字符串) |
| T | 6 | 6 | '000000' | 时间类型(格式:HHMMSS) |
| x | 1 | 1~65535 | X'0......0' | 十六进制字段 |
| STRING | 0 | ANY | SPACE | 字符串类型 |
此外在T-CODE:SE11中定义数据元素时还有31种ABAP字典数据类型,它们是用于专门维护数据元素所使用的,列举如下:
| 数据类型 | 简短描述 |
| ACCP | 过账期间YYYYMM |
| CHAR | 字符串 |
| CLNT | 集团 |
| CUKY | 货币字段的货币码 |
| CURR | 采用BCD格式的货币字段 |
| DF16_DEC | 以BCD格式保存的十进制浮点数 |
| DF16_RAW | 以二进制数字形式保存的十进制浮点数 |
| DF16_SCL | 具有比例的十进制浮点数(已弃用) |
| DF34_DEC | 以BCD格式保存的十进制浮点数 |
| DF34_RAW | 以二进制数字形式保存的十进制浮点数 |
| DF34_SCL | 具有比例的十进制浮点数(已弃用) |
| DATS | 使用格式YYYYMMDD的日期 |
| DEC | 采用BCD格式的压缩数字 |
| FLTP | 浮点数 |
| INT1 | 1字节整数,0到255 |
| INT2 | 2字节整数,-32768到32767 |
| INT4 | 4字节整数,-2147483648到2147483467 |
| INT8 | 8字节整数 |
| LANG | 语言代码 |
| LCHR | 长字节串 |
| LRAW | 长字节字符串 |
| NUMC | 数字文本 |
| PREC | 过时数据类型 |
| QUAN | 采用BCD格式的数量字段 |
| RAW | 字节序列 |
| RAWSTRING | 字节字符串(BLOB) |
| SSTRING | 字符串 |
| STRING | 字符串(CLOB) |
| TIMS | 格式为HHMMSS的时间 |
| UNIT | 数量字段的单元码 |
| VARC | 过时数据类型 |
预定义数据类型分类
数字型
(一) 整数型I
(1)值的范围是-2^31(-2147483648)~2^31(-2147483647)
DATA: gv_i type i VALUE -2147483649."默认值超出整型范围系统会报错
(2)只支持整数类型
(3)非整数类型的数据会进行四舍五入的计算
DATA: gv_i TYPE i VALUE '2.5'. WRITE:gv_i.
(二) 小数型P
(1)允许有小数位
DATA: gv_p TYPE p VALUE '2.5' DECIMALS 2. WRITE:gv_p.
(2)若不使用DECIMALS关键字指定小数位则与类型I效果一致
DATA: gv_p TYPE p VALUE '2.5' . WRITE:gv_p.
(3)可用长度为1~16,小数位最大长度为14位
DATA: gv_p TYPE p VALUE '2.5' DECIMALS 15."小数位超过14位系统会报错 WRITE:gv_p.
(三) 浮点型F
(1)F类型的显示值的方式为科学计数法
DATA: gv_f TYPE f VALUE '25000'. WRITE:gv_f.
上述图片中的值在数学中则是:2.5000000000000000×10^(+4)
说明:使用下面表格解释上述显示值各部分的含义
| 尾数 | 精度值 | 指数符号 | 正负符号 | 指数大小 | |
| 2.5 | 后面的0 | E | + | 04 | |
(2)值的范围是10^-307~10^308
(3)F类型转换成二进制时会发生进位误差
(4)F类型不能显示高精度数据
DATA: gv_p TYPE f VALUE '2.5635635'."从结果可以看出f类型在输出高精度数据时会无限趋近但不能等于该值 WRITE:gv_p.







