SAP ABAP - 建立內部表



DATA 語句用於宣告內部表。程式必須知道表在哪裡開始和結束。因此,使用 BEGIN OF 語句,然後宣告表名。之後,使用 OCCURS 附加項,後跟一個數字,這裡是 0。OCCURS 告訴 SAP 正在建立內部表,而 0 表示它最初不包含任何記錄。它會在填充資料時擴充套件。

以下是語法:

DATA: BEGIN OF <internal_tab> Occurs 0,

讓我們在新的一行上建立欄位。例如,建立宣告為 LIKE ZCUSTOMERS1-name 的 'name'。建立另一個名為 'dob' 的欄位,LIKE ZCUSTOMERS1-dob。最初在內部表中為欄位命名與在其他地方建立的其他欄位使用相同的名稱非常有用。最後,使用“END OF <internal_tab>.”宣告內部表的結束,如下面的程式碼所示:

DATA: BEGIN OF itab01 Occurs 0,
   name LIKE ZCUSTOMERS1-name,
   dob LIKE ZCUSTOMERS1-dob, 
END OF itab01.

這裡 'itab01' 在 SAP 中建立臨時表時通常用作簡寫。OCCURS 子句用於透過宣告表的欄位來定義內部表的正文。當使用 OCCURS 子句時,可以指定一個數字常量 'n' 來根據需要確定額外的預設記憶體。OCCUR 0 子句使用的預設記憶體大小為 8 KB。現在建立了內部表的結構,可以編寫程式碼來用記錄填充它。

可以使用或不使用標題行建立內部表。要建立帶有標題行的內部表,請在內部表的定義中,在 OCCURS 子句之前使用 BEGIN OF 子句,或在 OCCURS 子句之後使用 WITH HEADER LINE 子句。要建立沒有標題行的內部表,請在不使用 BEGIN OF 子句的情況下使用 OCCURS 子句。

您還可以使用 TYPES 語句建立內部表作為區域性資料型別(僅在當前程式上下文中使用的資料型別)。此語句使用 TYPE 或 LIKE 子句來引用現有表。

建立內部表作為區域性資料型別的語法為:

TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF 
   <line_type_itab> WITH <key> INITIAL SIZE <size_number>.

這裡 <internal_tab_type> 指定內部表 <internal_tab> 的表型別,<line_type_itab> 指定內部錶行的型別。在 TYPES 語句中,可以使用 TYPE 子句將內部表的行型別指定為資料型別,並使用 LIKE 子句將行型別指定為資料物件。指定內部表的鍵是可選的,如果使用者沒有指定鍵,SAP 系統將定義具有任意鍵的表型別。

INITIAL SIZE <size_number> 透過為其分配初始記憶體量來建立內部表物件。在前面的語法中,INITIAL SIZE 子句為 size_number 錶行保留記憶體空間。每當宣告內部表物件時,表的尺寸不屬於表的型別。

注意 - 當第一次填充內部表時,消耗的記憶體要少得多。

示例

步驟 1 - 透過執行 SE38 事務程式碼開啟 ABAP 編輯器。出現 ABAP 編輯器的初始螢幕。

步驟 2 - 在初始螢幕中,輸入程式名稱,選擇“原始碼”單選按鈕,然後單擊“建立”按鈕以建立新程式。

步驟 3 - 在“ABAP:程式屬性”對話方塊中,在“標題”欄位中輸入程式的簡短描述,從“屬性”組框中的“型別”下拉選單中選擇“可執行程式”選項。單擊“儲存”按鈕。

步驟 4 - 在 ABAP 編輯器中編寫以下程式碼。

REPORT ZINTERNAL_DEMO. 
TYPES: BEGIN OF CustomerLine, 
Cust_ID TYPE C, 
Cust_Name(20) TYPE C, 
END OF CustomerLine. 
 
TYPES mytable TYPE SORTED TABLE OF CustomerLine  
WITH UNIQUE KEY Cust_ID. 
WRITE:/'The mytable is an Internal Table'. 

步驟 5 - 像往常一樣儲存、啟用並執行程式。

在這個例子中,mytable 是一個內部表,並且在 Cust_ID 欄位上定義了一個唯一鍵。

以上程式碼產生以下輸出:

The mytable is an Internal Table.
廣告