深入解析ABAP基本数据类型(elementary ABAP types)

 深入解析ABAP基本数据类型(ABAP elementary types)

 

    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的类型PCNX这几个类型,长度都是由length语句指定的。

例如P类型(Packed number),长度范围为1~16,如果不指定长度,则默认为8。假设length指定的长度为16,则此变量的长度为32=16*2个数字(32包括正负符号1位,即数字部分只能有31位。但不包括小数点,小数点是不计入此长度的),而此变量的output length33=2*16+1。例如定义一个长度为4P类型变量:

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,则此变量的长度为20byte20byte可显示20characters包括alphanumeric charactersnumeric characters),其output length20

例如类型N(numeric characters),长度范围为1~65535,如果不指定长度,则默认为1。例如length指定的长度为20,则此变量的长度为20byte20byte可显示20characters包括alphanumeric charactersnumeric characters),其output length20

例如类型X(Hexadecimal field),长度范围为1~65535,如果不指定长度,则默认为1。例如length指定的长度为20,则此变量的长度为20byte20byte可显示40个十六进制数字),其output length40=20*2

总结:赋给某个变量的值的长度(某些类型的保留长度位数要考虑进去)只要不超过其output length即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值