前言
ABAP中提供了丰富多样的内置基本数据类型,以支持不同的数据表示和处理需求。以下是对一些主要ABAP内置基本数据类型的介绍。
ABAP内置基本数据类型:
数据类型介绍:
C:字符型,固定长度的字符类型,用于存储单个字符或短文本串。定义时需要指定长度(1到65535个字节),默认初始值为空格。
N:数字文本,用于存储格式化的数字字符串,如带有前导零或固定位数的数字。定义时需要指定长度,且正负号和小数点各占一位。
T:时间类型,格式为24hour的HHMMSS;
D:日期类型,日期格式必须为YYYYMMDD;
I:整型,占用4个字节(32位),能表示的数值范围为 -2,147,483,648 到 +2,147,483,647。
F:浮点数,通常用于需要较高精度或较大数值范围的数学计算,小数位最大可以到17位。
P:定点数类型,用于精确的金额和数量计算。定义时需要指定总长度(字节数)和小数位数,最后一个字节用于表示正负号,其余字节存储数值。
X:十六进制,用于存储非文本的二进制数据,如图像、文件内容等。类似于字符串,但每个字符代表两位十六进制数。
String:长度可变的字符类型,能够存储任意长度的文本。在内部,字符串通过引用动态数据对象的内存地址进行操作。由于其动态特性,不适用于所有字符串操作语句,如 SHIFT。可以直接与 C、D、T、I 和 N 类型进行转换。
XString:长度可变的十六进制字符类型, 0-9, A-F组成字符串。直接打印输出时,输出的还是赋值时字面意义上的值。
数据字典中预定义类型与ABAP中的中数据类型对应关系:
字符与字节-Bytes的小知识:
非 Unicode 系统
在非 Unicode 的 ABAP 系统中,通常采用 ASCII 或类似的单字节编码系统。在这样的系统中,英文字符以及大多数标点符号占用一个字节的空间。然而,对于包含非英文字符的情况,如中文、日文或韩文等,系统可能会采用双字节或更复杂的编码方案(如 DBCS - 双字节字符集)来存储这些字符。因此,在非 Unicode 的环境下,一个字符所占的字节大小是不固定的,可以从 1 个字节到多个字节不等,具体取决于该字符是否属于 ASCII 范畴以及所用的具体编码方式。
Unicode 系统
转向 Unicode 系统,SAP 为了适应全球化的需求,采用了 Unicode 标准进行字符的编码。Unicode 能够用统一的方式表示世界上大多数的文字系统。在 ABAP Unicode 系统中,通常采用 UTF-16 编码。在 UTF-16 编码中,大部分字符(包括所有的基本多文种平面字符)使用 2 个字节进行编码。但对于辅助平面的字符(包括一些较少用的字符、古文字符以及部分表情符号等),需要 4 个字节来存储。因此,在 Unicode 的 ABAP 系统中,一个字符所需的存储空间通常为 2 个字节,但也可能扩展到 4 个字节。