SAP內表與工作區的區別:
內表和工作區也都是存放數據的,區別是內表像DB里面的數據表一樣,有字段有行數,可以有很多行數據。
但是工作區就只有一條數據,我們叫它表頭數據,很多情況下是出現在循環當中,用來對比輸出的。
內表可以包含兩行和兩行以上的紀錄,工作區只能有一行記錄。
工作區:程序對於內表行的操作不能直接進行,必須通過一種接口來傳輸,這個接口就是工作區。比如某程序需要從關系數據庫中提取數據到內表各行中,必須先將數據讀入工作區,然后再把工作區中的數據賦給內表的行。工作區必須具有和內表行一致或者可相互轉換的數據結構。因此在定義內表對象的同時,需要定義一個與該內表行結構相同的工作區對象供程序使用,將數據寫入內表時,必須首先給工作區賦值,然后在工作區添加或者插入內表。
表頭行:ABAP為程序員提供可一種簡單的方法:在創建內表對象的同時可以隱式的定義一個同名工作區,這個同名的工作區就叫表頭行或標題行(Header Line)也稱內表工作區。
DATA itab......WITH HEADER LINE......
創建了帶表頭的內表之后,可以認為程序中存在兩個數據對象,一個是內表,另一個是與內表行類型相同的結構體。但對於帶表頭行的內表,則可以忽略這一指定,系統隱式使用表頭行作為工作區,不等於沒有用到工作區。不帶表頭行的內表沒有隱式工作區,所以要訪問沒有表頭行的內表,必須在相應的ABAP語句中顯式指定工作區。這在給內表操作帶來方便的同時也明顯增加了混淆,對於既可以操作內表、又可以操作工作區的語句來說,有時不能單獨從語法上判斷操作對象,需要進行邏輯分析。如果一個語句中,該名稱同時可能代表內表或者同名表工作區,則需要在內表名稱之后加“[ ]”指明當前操作的是內表對象。
因此不提倡總使用帶有表頭行的內表,而應該總是聲明結構相同的其他數據對象作為顯示工作區進行內表行操作。
結構:使用 types 類型定義的
如 TYPES: BEGIN OF MAN,
NAME(2) TYPE C,
WIGHT(2) TYPE C,
HIGTH TYPE P DECIMALS 2,
END OF MAN.
工作區
如果用 DATA 則表示工作區.
DATA: BEGIN OF MAN,
NAME(2) TYPE C,
WIGHT(2) TYPE C,
HIGTH TYPE P DECIMALS 2,
END OF MAN.
DATA: MAN2 TYPE MAN.
DATA: MAN2 LIKE MAN.
內表
使用data定義的.
如 MAN1 LIKE TABLE OF MAN.
結構只是做作為數據類型的參照.不進行數據操作.
工作區只能擁有一條數據
內表作為有類似表結構類型的變量.
數據的展示通過把數據庫的結果記錄插入到內表,由內表循環到工作區進行展示
以上為個人新學習見解,如有誤之處敬請指出.
下面為摘抄
1.內表和工作區都是變量,而構造是一種類型,是變量定義的時候參照用的。
2.構造是一種數據的描述,不是真實存在的變量,但是它定義了參照它定義的數據的樣子。
3.內表是一種二維的數據變量(多條),工作區是一維的(單條),工作區可以被看作內表中的一條(一行)數據。