相关文章推荐
狂野的马克杯  ·  ABAP CDS view 里 UNION ...·  3 月前    · 
有胆有识的砖头  ·  【ABAP系列】SAP ...·  3 月前    · 
稳重的猴子  ·  中国石油辽河油田曙采厂:靶向施策 ...·  1 年前    · 
有腹肌的油条  ·  刘洪建与以晴集团董事长周以晴一行座谈_昆明要 ...·  1 年前    · 
发呆的煎鸡蛋  ·  使用 Databricks 资产捆绑包开发 ...·  1 年前    · 
失眠的荒野  ·  教育部 财政部 ...·  1 年前    · 
无邪的八宝粥  ·  转会风向标:国安鲁能压哨签约 ...·  1 年前    · 
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.
 
推荐文章
狂野的马克杯  ·  ABAP CDS view 里 UNION 操作的用法-云社区-华为云
3 月前
有胆有识的砖头  ·  【ABAP系列】SAP ABAP中使用for all entries in小结 - SAPmatinal
3 月前
稳重的猴子  ·  中国石油辽河油田曙采厂:靶向施策 深挖油藏潜力|稠油|火驱|中石油|油气当量|知名企业_网易订阅
1 年前
有腹肌的油条  ·  刘洪建与以晴集团董事长周以晴一行座谈_昆明要闻_昆明市人民政府门户网站
1 年前
发呆的煎鸡蛋  ·  使用 Databricks 资产捆绑包开发 Python wheel 文件 - Azure Databricks | Microsoft Learn
1 年前
失眠的荒野  ·  教育部 财政部 国家发展改革委关于印发《“双一流”建设成效评价办法(试行)》的通知 - 中华人民共和国教育部政府门户网站
1 年前
无邪的八宝粥  ·  转会风向标:国安鲁能压哨签约 恒大7将需要离队_外援
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号