SAP ABAP – 删除内部表

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 由八行填充,其中 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。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁