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。 12,因为ColP值每次都增加4。
DELETE语句用于从mytable中删除colP键字段的值为1或3的行。删除后,mytable的ColP字段包含值2,4,5,6,7和8,如图所示 在输出。 ColQ字段包含值6,8,9,10,11和12。
关于赛锐信息
作为SAP的资深合作伙伴,赛锐信息是一家专业提供SAP行业化管理软件解决方案的顾问公司,致力于为企业提供SAP ERP系统咨询服务、IT规划、业务流程优化、信息系统实施、行业信息系统方案开发,运营外包及售后维护等全面的服务方案。已服务1000+家不同行业、规模的大中小型企业客户。在电子高科技、汽车零部件、印刷包装、医疗器械、快消品、专业服务等行业信息化管理领域具有领导性地位。