SAP ABAP 复制内部表

当我们从具有标题行的内部表中读取记录时,该记录将从表本身移动到标题行。然后是我们的程序使用的标题行。这同样适用于创建新记录。它是您使用的标题行,并从中将新记录发送到表体本身。

为了复制记录,我们可以使用 SELECT 语句从表中选择所有记录,然后使用 MOVE 语句将记录从原始表移动到新的内部表中,并移动到名称对应的字段中。

下面是 MOVE 语句的语法:

  1. MOVE <table_field> TO <internal_tab_field>.

实例

  1. REPORT ZCUSLIST1.
  2. TABLES: ZCUSTOMERS1.
  3. DATA: BEGIN OF itab01 Occurs 0,
  4. name LIKE ZCUSTOMERS1-name,
  5. dob LIKE ZCUSTOMERS1-dob,
  6. END OF itab01.
  7. Select * FROM ZCUSTOMERS1.
  8. MOVE ZCUSTOMERS1-name TO itab01-name.
  9. MOVE ZCUSTOMERS1-dob TO itab01-dob.
  10. ENDSELECT.
  11. Write: / itab01-name, itab01-dob.

结果如下:

  1. MARGARET 02.11.1994

select 循环一次填充一个字段,使用 MOVE 语句将数据从一个表的字段移动到另一个表的字段。在上面的示例中,MOVE 语句用于将 ZCUSTOMERS1 表的内容移动到内部表中的相应字段。您也可以只用一行代码即可完成此操作,那就是使用 MOVECORRESPONDING 语句。

下面是 MOVE-CORRESPONDING 语句的语法:

  1. MOVE-CORRESPONDING <table_name> TO <internal_tab>.

它告诉系统将数据从 ZCUSTOMERS1 的字段移动到 itab01 中相应的字段。


实例

  1. REPORT ZCUSTOMERLIST.
  2. TABLES: ZCUSTOMERS1.
  3. DATA: Begin of itab01 occurs 0,
  4. customer LIKE ZCUSTOMERS1-customer,
  5. name LIKE ZCUSTOMERS1-name,
  6. title LIKE ZCUSTOMERS1-title,
  7. dob LIKE ZCUSTOMERS1-dob,
  8. END OF itab01.
  9. SELECT * from ZCUSTOMERS1.
  10. MOVE-Corresponding ZCUSTOMERS1 TO itab01.
  11. APPEND itab01.
  12. ENDSELECT.
  13. LOOP AT itab01.
  14. Write: / itab01-name, itab01-dob.
  15. ENDLOOP.

结果如下:

  1. MARK 21.05.1981
  2. JAMES 14.08.1977
  3. AURIELE 19.06.1990
  4. STEPHEN 22.07.1985
  5. MARGARET 02.11.1994

这是因为两者都有匹配的字段名。使用此语句时,需要确保两个字段都具有匹配的数据类型和长度。这里已经用前面的 LIKE 语句完成了。

分类导航