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
选择循环每次填充一个字段,使用MOVE语句将数据从一个表的字段移动到另一个表的字段。 在上面的示例中,使用MOVE语句将ZCUSTOMERS1表的内容移动到内部表中的相应字段。 你可以只用一行代码来完成这个动作。 您可以使用MOVECORRESPONDING语句。
以下是MOVE-CORRESPONDING语句的语法 -
MOVE-CORRESPONDING <table_name> TO <internal_tab>.
它告诉系统将数据从CUSTOMERS的字段移动到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语句以前完成。