ABAP基本类型的区别
黄佳图书P85
在SAP系统中,每个byte可以显示一个character(字符)或两个十进制/十六进制数字。
字符型常量和字符串常量的区别在ABAP中定义变量时,如果指定长度,其单位是byte,而不是字符数;在SAP Dictionary 中定义data type时,如果指定长度,其单位为字符数,而不是byte。这是一个非常重要的区别,因为在SAP系统中,每个byte可以显示一个character(字符)或两个十进制/十六进制数字。
ABAP的基本数据类型大致可以分为三类:
a.所有属性已由ABAP指定,开发人员无法更改的基本类型,包括D,F,I,T四种;
b.部分属性(如长度,小数点位置)由开发人员指定的基本类型,包括C,N,P,X四种;
c.部分属性不固定(如长度),在程序中可以变化的基本类型,包括STRING,XSTRING 两种。
按照另一种方法,可将ABAP的基本类型分为两类:
a.串,包括字符串和数字串,具体到类型,包括C,N,P,X,STRING,XSTRING,D,T。字符串的每一位为alphanumeric characters,输字串的每一位为numeric characters,这两种串的每一位都占一个byte;
b.数字,具体到类型,包括I,F。数字类型的每一位为digit,两个digit占一个byte。
在程序中使用基本类型时,最难准确理解的是I,F,C,N,P,X这几种基本类型。
TYPE I 的数值范围是-2**31 to 2**31-1,即-2147483648 to 2147483647;
TYPE F的数值范围是1x10**-307 to 1x10**308;
而在使用DATA定义变量时可以设定length的类型P、C、N、X这几个类型,长度都是由length语句指定的。
例如P类型(为Packed number),长度范围为1~16,如果不指定长度,则默认为8。假设length指定的长度为16,则此变量的长度为32=16*2个数字(此32包括正负符号1位,即数字部分只能有31位。但不包括小数点,小数点是不计入此长度的),而此变量的output length为33=2*16+1。例如定义一个长度为4的P类型变量:
data: a type p DECIMALS 2 length 4.
a = '-12345.25'.(不包括小数点的数字部分为7=2*4-1位)
a = '12345.25'. (不包括小数点的数字部分为7=2*4-1位)
a = 12345. (不包括小数点的数字部分为7=2*4-1位,由于小数部分保留2位,故整数部分最多只能为5位)
例如类型C(为alphanumeric characters),长度范围为1~65535,如果不指定长度,则默认为1。例如length指定的长度为20,则此变量的长度为20byte(20byte可显示20个characters包括alphanumeric characters和numeric characters),其output length为20。例如类型N(为numeric characters),长度范围为1~65535,如果不指定长度,则默认为1。例如length指定的长度为20,则此变量的长度为20byte(20byte可显示20个characters 包括alphanumeric characters和numeric characters),其output length为20。
例如类型X(为Hexadecimal field),长度范围为1~65535,如果不指定长度,则默认为1。例如length指定的长度为20,则此变量的长度为20byte(20byte可显示40个十六进制数字),
其output length为40=20*2。
总结: 赋给某个变量的值的长度(某些类型的保留长度位数要考虑进去)只要不超过其output length即可

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。