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 语句完成了。

广告