SAP ABAP 删除内部表

DELETE 语句用于从内部表中删除一条或多条记录。通过指定表键或条件或查找重复条目来删除内部表的记录。如果内部表具有非唯一键并且包含重复条目,则删除表中的第一个条目。

以下是使用 DELETE 语句从内部表中删除记录或行的语法:

  1. DELETE TABLE <internal_table> FROM <work_area_itab>.

在上述语法中,<work_area_itab> 表达式是一个工作区,它应该与 <internal_table> 内部表的类型兼容。删除操作基于可以从工作区组件中获取的默认键执行。

您还可以使用以下语法在 DELETE table 语句中显式指定表键:

  1. DELETE TABLE <internal_table> WITH TABLE KEY <K1> = <F1>………… <Kn> = <Fn>.

在此语法中,<F1>, <F2>….<Fn> 是内部表的字段,并且 <K1>, <K2>….<Kn> 是表的关键字段。DELETE 语句用于根据表达式 <K1> = <F1>, <K2> = <F2>…<Kn> = <Fn>。删除 <internal_table> 表的记录或行。

注意:如果 <F1>, <F2>….<Fn> 字段的数据类型 与 <K1>, <K2>…<Kn> 字段的不兼容,那么 SAP 系统自动将其转换为兼容格式。

实例

  1. REPORT ZDELETE_DEMO.
  2. DATA: BEGIN OF Line1,
  3. ColP TYPE I,
  4. ColQ TYPE I,
  5. END OF Line1.
  6. DATA mytable LIKE HASHED TABLE OF Line1
  7. WITH UNIQUE KEY ColP.
  8. DO 8 TIMES.
  9. Line1-ColP = SY-INDEX.
  10. Line1-ColQ = SY-INDEX + 4.
  11. INSERT Line1 INTO TABLE mytable.
  12. ENDDO.
  13. Line1-ColP = 1.
  14. DELETE TABLE mytable: FROM Line1,
  15. WITH TABLE KEY ColP = 3.
  16. LOOP AT mytable INTO Line1.
  17. WRITE: / Line1-ColP, Line1-ColQ.
  18. ENDLOOP.

结果如下:

  1. 2 6
  2. 4 8
  3. 5 9
  4. 6 10
  5. 7 11
  6. 8 12

在本例中,mytable 有两个字段,ColPColQ。最初,mytable 由 8 行填充,其中 ColP 包含值 1、2、3、4、5、6、7 和 8。ColQ 包含值 5、6、7、8、9、10、11 和 12,因为 ColP 值每次递增 4。

DELETE 语句用于删除 mytable 中的行,其中 ColP 键字段的值为 1 或 3。删除后,mytableColP 字段包含值 2、4、5、6、7 和 8,如输出所示。ColQ 字段包含值 6、8、9、10、11 和 12。

分类导航