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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章