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 语句在这里完成了此操作。