SAP ABAP - 內部表複製



當我們從帶有標題行的內部表中讀取記錄時,該記錄將從表本身移動到標題行。然後,我們的程式將使用標題行。建立新記錄時也是如此。您使用的是標題行,新記錄就是從標題行傳送到表體本身的。

要複製記錄,我們可以使用 SELECT 語句選擇表中的所有記錄,然後使用 MOVE 語句將記錄從原始表移動到新內部表中名稱對應的欄位。

以下是 MOVE 語句的語法:

MOVE <table_field> TO <internal_tab_field>.

示例

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

Select * FROM ZCUSTOMERS1. 
MOVE ZCUSTOMERS1-name TO itab01-name. 
MOVE ZCUSTOMERS1-dob TO itab01-dob. 
ENDSELECT.
 
Write: / itab01-name, itab01-dob.

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

MARGARET  		02.11.1994 

select 迴圈一次移動一個欄位,使用 MOVE 語句將資料從一個表的欄位移動到另一個表。在上面的示例中,MOVE 語句用於將 ZCUSTOMERS1 表的內容移動到內部表中相應的欄位。您可以只用一行程式碼完成此操作。您可以使用 MOVECORRESPONDING 語句。

以下是 MOVE-CORRESPONDING 語句的語法:

MOVE-CORRESPONDING <table_name> TO <internal_tab>. 

它告訴系統將 ZCUSTOMERS1 的欄位資料移動到 itab01 中相應的欄位。

示例

REPORT  ZCUSTOMERLIST. 
TABLES: ZCUSTOMERS1. 
DATA: Begin of itab01 occurs 0,
      customer LIKE ZCUSTOMERS1-customer,
      name LIKE ZCUSTOMERS1-name,
      title LIKE ZCUSTOMERS1-title,
      dob LIKE ZCUSTOMERS1-dob, 
END OF itab01. 

SELECT * from ZCUSTOMERS1. 
MOVE-Corresponding ZCUSTOMERS1 TO itab01. 
APPEND itab01. 
ENDSELECT. 
LOOP AT itab01. 
Write: / itab01-name, itab01-dob. 
ENDLOOP. 

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

MARK           21.05.1981 
JAMES          14.08.1977 
AURIELE        19.06.1990 
STEPHEN        22.07.1985 
MARGARET       02.11.1994 

這是因為兩者都有匹配的欄位名稱。使用此語句時,您需要確保兩個欄位的資料型別和長度匹配。這裡之前已經使用 LIKE 語句完成了。

廣告
© . All rights reserved.