程式路徑:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Demonstration of Elementary Data Objects
代碼:
Code
PROGRAM demo_elementary_data_objects.
* demonstrates elementary data objects
DATA text1(20) TYPE c.
DATA text2 TYPE string.
DATA number TYPE i.
text1 = 'The number'.
number = 100.
text2 = 'is an integer.'.
WRITE: text1, number, text2.
解析:
1、這個程式是用 PROGRAM 開頭的,這與我們上個程式提到的不同,但是運行方式是相同的。這裡涉及到一個程式屬性與程式聲明語句不一致的情況,運行時環境是按照程式屬性中的設定來判斷程式是可以直接執行還是必須通過事務碼執行。程式屬性的查看方法是:切換到 ABAP 編輯器後,點菜單的“轉到-屬性”,如果是可執行程式,則能夠直接運行,如果是模組池,則必須通過事務碼啟動。
2、三個 DATA 語句分別定義了三個變數,這個程式示範的是基礎資料型別 (Elementary Data Type)的資料對象定義,在 ABAP 裡,基礎資料型別 (Elementary Data Type)是指 c、d、t、n、i、p、f、x、string、xstring 等語言預置的資料類型,用 TYPE 附加關鍵字來為變數指定類型。
3、接下來的三個指派陳述式則分別給三個變數賦值,最後一個 WRITE 語句輸出結果,如:
這裡藍色反顯的文字是我標記的,為了說明變數的輸出長度,正常輸出沒有。
4、回頭看代碼,我們定義的 text1 是長度為 20 個字元的 c,也就是 20 個字元,它的輸出長度也固定為 20,而我們賦值時只賦了 10 個字元,並且字元類型是做對齊的,因此後面還剩餘了 10 個字元的空格;接下來的 number 是 i,也就是整型,它的輸出長度固定為 11,因為整形數的範圍是 -2147483648 到 +2147483647,正好 11 位,需要注意的是,SAP 中的負號是在數字後面的,這是德國習慣,弄得我們很不爽;最後是 string 類型的 text2,它的長度在運行時動態確定,實際有多長就輸出多長。對於 WRITE 語句來說,如果不指定位置,連續兩個變數輸出中間會加一個空格,在數字 100 和字串 is an interger 之間有兩個空格,前一個是 number 變數的符號位,正數不顯示,負數顯示,後一個空格是兩個變數的間隔。
====================================================
程式路徑:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Elementary TYPES Statement
代碼:
Code
REPORT demo_types_statement.
TYPES mytext(10) TYPE c.
TYPES myamount TYPE p DECIMALS 2.
DATA text TYPE mytext.
DATA amount TYPE myamount.
text = ' 4 / 3 = '.
amount = 4 / 3 .
WRITE: text, amount.
解析:
1、跟前一個程式對比,這裡主要多了用 TYPES 語句定義資料類型的代碼。在程式中,為了使用方便和保證一致性,使用者可以定義自己的資料類型,然後在用 DATA 定義變數時參考自訂類型,避免修改代碼時因遺漏而產生賦值方面的錯誤。
2、這裡定義類型 p 的時候有一個 DECIMALS 附加關鍵字,它指定了數位小數位元。p 類型是 SAP 中比較特殊的一種資料類型,它用一個位元組存放兩位元字,最後一個位元組中存放一個數字和加號或減號,最多可以使用 14 位小數。
其它沒什麼特別的,跟第一個程式類似。
====================================================
程式路徑:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Demonstration of Structures
代碼:略
解析:
1、這個程式介紹了如何定義結構、結構的嵌套和結構的使用。結構就是把多個意義上屬於同一類的單個變數組織在一起,共同管理的資料結構。對於結構中嵌套結構的方式,可以用多個-來連結,指示最終的資料欄位。其它用法跟普通資料對象都一樣。
====================================================
程式路徑:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Demonstration of Internal Tables
代碼:略
解析:
1、這個程式介紹了如何定義和使用內表。內表可以認為是任意多個相同的結構組合在一起的資料對象,從邏輯意義上來說,跟資料庫表相似,都是儲存大量結構相同的資料的;差別在於資料庫表是持久的,儲存在磁碟上,而內表是臨時的,生存期僅限於所在程式的運行時,程式結束,內表也就被釋放了。
2、從例子中可以看到 SAP 對使用內表的建議,首先定義一個結構做為內表的工作區,再參考結構建立內表,這樣內表的行結構就與這個結構相同,以後修改代碼時,如果需要增加或刪除欄位,只需要改結構定義即可,從最大限度上保證一致性。
3、向內表裡添加行的最簡單辦法是使用 APPEND,它把資料添加到內表的最後。
從這裡例子裡,只要學習內表的最簡單的使用方法,以後經常會用到內表,到時候再詳細解釋。
====================================================
程式路徑:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Demonstration of DESCRIBE FIELD
代碼:略
解析:
1、DESCRIBE FIELD 語句用來獲得資料對象(變數)的長度、類型等技術資訊。一般來說,這種語句可以用在子程式或者函數模組中,獲得未限制類型的輸入輸出參數的資料類型,進而進行相應的處理。或者用於欄位符號的類型確定。
平時需要使用這個文法的情形不多,只要大致瞭解,在讀標準程式的時候能夠理解其作用即可。