SAP ABAP 删除内部表
DELETE
语句用于从内部表中删除一条或多条记录。通过指定表键或条件或查找重复条目来删除内部表的记录。如果内部表具有非唯一键并且包含重复条目,则删除表中的第一个条目。
以下是使用 DELETE
语句从内部表中删除记录或行的语法:
DELETE TABLE <internal_table> FROM <work_area_itab>.
在上述语法中,<work_area_itab>
表达式是一个工作区,它应该与 <internal_table> 内部表的类型兼容。删除操作基于可以从工作区组件中获取的默认键执行。
您还可以使用以下语法在 DELETE table
语句中显式指定表键:
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 系统自动将其转换为兼容格式。
实例
REPORT ZDELETE_DEMO.
DATA: BEGIN OF Line1,
ColP TYPE I,
ColQ TYPE I,
END OF Line1.
DATA mytable LIKE HASHED TABLE OF Line1
WITH UNIQUE KEY ColP.
DO 8 TIMES.
Line1-ColP = SY-INDEX.
Line1-ColQ = SY-INDEX + 4.
INSERT Line1 INTO TABLE mytable.
ENDDO.
Line1-ColP = 1.
DELETE TABLE mytable: FROM Line1,
WITH TABLE KEY ColP = 3.
LOOP AT mytable INTO Line1.
WRITE: / Line1-ColP, Line1-ColQ.
ENDLOOP.
结果如下:
2 6
4 8
5 9
6 10
7 11
8 12
在本例中,mytable
有两个字段,ColP
和 ColQ
。最初,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。删除后,mytable
的 ColP
字段包含值 2、4、5、6、7 和 8,如输出所示。ColQ
字段包含值 6、8、9、10、11 和 12。