深入解析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的类型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即可。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值