相关文章推荐
光明磊落的烤面包  ·  会了这两个Flask练手项目,毕设、接私活不 ...·  3 年前    · 
大气的凳子  ·  谷歌浏览器执行ajax时不通过,由于MIME ...·  3 年前    · 
活泼的瀑布  ·  libreoffice命令行方式将word、 ...·  3 年前    · 
听话的硬盘  ·  File对象、dataURL、Blob对象互 ...·  3 年前    · 
谦虚好学的冲锋衣  ·  Use managed ...·  3 年前    · 
Code  ›  SAP ABAP——内表(九)【删除内表数据】开发者社区
delete gs abap
https://cloud.tencent.com/developer/article/2221999
热心的钥匙扣
2 年前
THUNDER王

SAP ABAP——内表(九)【删除内表数据】

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
THUNDER王
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > THUNDER王——CSDN内容同步 > SAP ABAP——内表(九)【删除内表数据】

SAP ABAP——内表(九)【删除内表数据】

作者头像
THUNDER王
发布 于 2023-02-23 13:04:39
432 0
发布 于 2023-02-23 13:04:39
举报

💬个人网站: 【芒果个人日志】​​​​​​ 💬原文地址: SAP ABAP——内表(九)【删除内表数据】 - 芒果个人日志 (wyz-math.cn)

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。

💅文章概要: 本文主要介绍一下SAP ABAP中内表的增删查改语句中的删除内表数据的相关语句,包括利用关键字删除数据,利用索引删除数据,利用WHERE语句删除数据,删除重复语句行

🤟每日一言:书山有路勤为径,学海无涯苦作舟。

目录

利用关键字删除数据

- 案例代码演示(使用工作区)

- 效果演示(使用工作区)

- 案例代码演示(使用TABLE KEY)

- 效果演示(使用TABLE KEY)

利用索引删除数据

- 案例代码演示

- 效果演示

利用WHERE语句删除数据

- 案例代码演示

- 效果演示

利用ADJACENT DUPLICATE语句删除重复数据

- 案例代码演示

- 效果演示

利用关键字删除数据

DELETE TABLE itab.
DELETE TABLE itab FROM wa.
DELETE TABLE itab WITH TABLE KEY k1 = f1 k2 = f2 ... kn = fn. 

- 案例代码演示(使用工作区)

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID,
      GS_SFLIGHT TYPE SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200716'.
GS_SFLIGHT-PRICE = 1500.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200717'.
GS_SFLIGHT-PRICE = 1600.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'BC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200718'.
GS_SFLIGHT-PRICE = 1700.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
WRITE:'内表数据删除前:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
GS_SFLIGHT-CARRID = 'BC'.
DELETE TABLE GT_SFLIGHT FROM GS_SFLIGHT.   
ULINE.
WRITE:'内表数据删除后:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.

- 效果演示(使用工作区)

利用关键字删除数据(使用工作区)


- 案例代码演示(使用TABLE KEY)

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID FLDATE,
      GS_SFLIGHT TYPE SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200716'.
GS_SFLIGHT-PRICE = 1500.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200717'.
GS_SFLIGHT-PRICE = 1600.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'BC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200718'.
GS_SFLIGHT-PRICE = 1700.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
WRITE:'内表数据删除前:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
DELETE TABLE GT_SFLIGHT WITH TABLE KEY CARRID = 'AC' FLDATE = '20200716'.
ULINE.
WRITE:'内表数据删除后:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.

- 效果演示(使用TABLE KEY)

利用关键字删除数据(TABLE KEY)


利用索引删除数据

DELETE itab INDEX n.
DELETE itab FROM n1 TO n2.
DELETE itab FROM n1. "删除n1后面的数据(包括n1) 
DELETE itab TO n2.   "删除n2前面的数据(包括n2)

- 案例代码演示

PS:依次接触下面案例中的DELETE语句的注释代码,观察它们不同的效果

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID FLDATE,
      GS_SFLIGHT TYPE SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200716'.
GS_SFLIGHT-PRICE = 1500.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200717'.
GS_SFLIGHT-PRICE = 1600.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'BC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200718'.
GS_SFLIGHT-PRICE = 1700.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
WRITE:'内表数据删除前:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
DELETE  GT_SFLIGHT INDEX 3.
*DELETE GT_SFLIGHT FROM 2 TO 3.
*DELETE GT_SFLIGHT FROM 2.
*DELETE GT_SFLIGHT TO 2.
ULINE.
WRITE:'内表数据删除后:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP. 

- 效果演示

使用索引删除数据(INDEX3)

使用索引删除数据(FROM 2 TO 3)


利用WHERE语句删除数据

DELETE itab WHERE condition.

- 案例代码演示

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID FLDATE,
      GS_SFLIGHT TYPE SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200716'.
GS_SFLIGHT-PRICE = 1500.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200717'.
GS_SFLIGHT-PRICE = 1600.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'BC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200718'.
GS_SFLIGHT-PRICE = 1700.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
WRITE:'内表数据删除前:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
DELETE GT_SFLIGHT WHERE CARRID = 'AC'.
ULINE.
WRITE:'内表数据删除后:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.

- 效果演示

使用WHERE语句删除数据


利用ADJACENT DUPLICATE语句删除重复数据

DELETE ADJACENT DUPLICATE FROM itab [COMPARING f1 f2...|ALL FIELDS].

PS: 1) 若不指定字段,则系统自动以内表的关键字为基准删除重复数据;若内表没有设置关键字,则自动定义以CHAR类型的字段为关键字 2) 使用ADJACENT DUPLICATE语句之前需要对内表进行排序才能达到预期效果

- 案例代码演示

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID,
      GS_SFLIGHT TYPE SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200716'.
GS_SFLIGHT-PRICE = 1500.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200717'.
GS_SFLIGHT-PRICE = 1700.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'BC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200718'.
GS_SFLIGHT-PRICE = 1700.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
WRITE:'内表数据删除前:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM GT_SFLIGHT.
 
推荐文章
光明磊落的烤面包  ·  会了这两个Flask练手项目,毕设、接私活不用愁 - 知乎
3 年前
大气的凳子  ·  谷歌浏览器执行ajax时不通过,由于MIME类型错误,Chrome拒绝执行AJAX脚本_沐焕的博客-CSDN博客
3 年前
活泼的瀑布  ·  libreoffice命令行方式将word、excel、ppt转成pdf_51CTO博客_libreoffice word转pdf
3 年前
听话的硬盘  ·  File对象、dataURL、Blob对象互转 - 掘金
3 年前
谦虚好学的冲锋衣  ·  Use managed identities on a virtual machine to acquire access token - Microsoft Entra | Microsoft Learn
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号