SAP ABAP – 复制内部表
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 语句完成此操作。