使用DELETE ADJACENT DUPLICATE FORM特别注意以下事項

前一段时间调试一个程序的,半天没发现问题在哪里,经过测试才发现

delete adjacent duplicates from itab 和 delete adjacent duplicates from itab comparing all fields还是有区别的:

前者相邻两行数据,如果除金额字段以外的其他字段都相同,则去重复删除其中一行;

后者相邻两行数据,如果所有对应的字段都相同(包含金额字段),则去重复删除其中一行。

DELETE ADJACENT DUPLICATES FROM <table>的功能是删除邻近相同的行,如果是为了把内表itab里部相同的行去掉,则应该对内表先按某个字段排序。但是有时候对某一个字段排序并不能把相同的两行排序到一起。

SORT itab BY comp1, comp2,..., compi [ASCENDING|DESCENDING]

通常我们会按一个字段进行排序,但是这有有可能相同的行排序不到一块去,比如今天我下行对itab_sf01表按BUKRS进行排序,结果如图

图1 排序及删除语句

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

图2 itab_sf01表内容

由图2可以发现,由于排序时只按BUKRS字段,所以第1行和第3行、第2行和第4行内容相同,但没有相邻,所以执行DLETE ADJACENT DUPLICATES FROM itab_sf01 也没有达到预期目的。

解决方案:把SORT语句改成 SORT itab_sf01 BY bukrs belnr gjahr augdt.即可。

DELETE ADJACENT DUPLICATES FROM 语句,我们知道他的基本功能是:删除相邻行的重复数据。
但是他最终保留哪一行数据呢?

下面看看一个Demo:

DATA : BEGIN OF itab OCCURS 0,vbeln   TYPE lips-vbeln,version TYPE c LENGTH 2,END OF itab.itab-vbeln = '0084000010'.
itab-version = '1'.
APPEND itab.
itab-vbeln = '0084000010'.
itab-version = '2'.
APPEND itab.
itab-vbeln = '0084000010'.
itab-version = '3'.
APPEND itab.itab-vbeln = '0084000011'.
itab-version = '2'.
APPEND itab.
itab-vbeln = '0084000011'.
itab-version = '3'.
APPEND itab.
itab-vbeln = '0084000009'.
itab-version = '2'.
APPEND itab.
itab-vbeln = '0084000009'.
itab-version = '1'.
APPEND itab.WRITE:/ '原始数据:'.
LOOP AT itab.WRITE: / itab-vbeln,itab-version.
ENDLOOP.SORT itab BY vbeln ASCENDING version DESCENDING.
WRITE:/ '排序数据:'.
LOOP AT itab.WRITE: / itab-vbeln,itab-version.
ENDLOOP.DELETE ADJACENT DUPLICATES FROM itab COMPARING vbeln.
WRITE:/ '排序数据:'.
LOOP AT itab.WRITE: / itab-vbeln,itab-version.
ENDLOOP.

可见DELETE ADJACENT DUPLICATES FROM只保留相邻重复行的第一行数据,大家也可以测试测试其他场景验证。

实战中用法举例:

主数据下发:一种主数据下发,可能有多个版本号,我们只保留版本号最大的一条数据,作为最新数据。用这种方法最简单啦

SAP DELETE ADJACENT DUPLICATES FROM语句的深入研究及应用相关推荐

  1. DELETE ADJACENT DUPLICATES FROM语句的深入研究及应用

    DELETE ADJACENT DUPLICATES FROM 语句,我们知道他的基本功能是:删除相邻行的重复数据. 但是他最终保留哪一行数据呢? 下面看看一个Demo: DATA : BEGIN O ...

  2. delete adjacent duplicates from用法(以某个关键字删除相邻重复行的数据)

    文章目录 一.知识点; 二.例子; 三. 总结; 一.知识点; DELETE ADJACENT DUPLICATES FROM. 二.例子; SORT gt_resb BY matnr. DELETE ...

  3. SORT,DELETE ADJACEN DUPLICATES FROM保留有效数据

    SORT,DELETE ADJACEN DUPLICATES FROM保留有效数据 要求:结构zstructure还有两个字段,分别为结构名称NAME.是否处理字段FLAG(0,代表处理:1,代表没有 ...

  4. sql truncate_如何在SQL Delete和SQL Truncate语句后使用数据库备份恢复数据

    sql truncate This article explores the recovery of data removed by SQL Delete and SQL Truncate state ...

  5. LeetCode 1047. Remove All Adjacent Duplicates In String

    1047. Remove All Adjacent Duplicates In String(删除字符串中的所有相邻重复项) 链接:https://leetcode-cn.com/problems/r ...

  6. leetcode 1047. Remove All Adjacent Duplicates In String | 1047. 删除字符串中的所有相邻重复项(Java)

    题目 https://leetcode.com/problems/remove-all-adjacent-duplicates-in-string/ 题解 简单题,不写思路了,一看就明白. class ...

  7. SAP HANA里执行SQL语句的两种方式

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  8. [SAP ABAP开发技术总结]动态语句、动态程序

    在ABAP中写动态的程序,灵活的程序,一定要知道的 1.13.         动态语句 1.13.1.     内表动态访问 1.13.2.     动态类型 1.13.3.     动态SQL 1 ...

  9. ABAP中 delete 语句的使用

    内容来自: https://blog.csdn.net/Qunending/article/details/106779981 DELETE itab[] 用于 loop 当中,删除当前loop行, ...

  10. [SAP ABAP开发技术总结]ABAP调优——Open SQL优化

    11.1.     数据库编程方面优化 1.   不要使用 SELECT * ...,选择需要的字段, SELECT * 既浪费CPU,又浪费网络带宽资源,还需占用大量的ABAP内存 2.   不要使 ...

最新文章

  1. 【网络编程】非阻塞connect详解
  2. 2019~2020年终总结
  3. hdu1.3.4 排序
  4. Java内存分析1 - 从两个程序说起
  5. jmr连接mysql_MYSQL 优化之延迟关联
  6. C#调用百度地图API入门解决BMap未定义问题
  7. 【转载】现代浏览器的工作原理
  8. 【Pyhton】随机漫步散点图
  9. automake生成静态库文件_基于CocoaPods的组件化原理及私有库实践
  10. 获取Resources文件下图片的精灵格式
  11. 【原创】中文分词系统 ICTCLAS2015 的JAVA封装和多线程执行(附代码)
  12. Atitit。sql2016标准化的规划方案 v3 q2a
  13. 10HTML5期末大作业:影视在线网站设计——电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  14. 原码一位乘的数值运算
  15. SQLMap常用命令介绍
  16. Tomcat中使用cookie
  17. 正确编译差分包签名(MTK系统)
  18. 火车票能不能选座_电话订火车票可以自己选座位吗
  19. 一道关于SVM的机器学习作业题
  20. FuJacKing-我的豆瓣解封了

热门文章

  1. 干货!详解服务器端和移动端性能测试指标
  2. csv文件的格式---Comma Separate Values
  3. 飞马D200S无人机与机载激光雷达在大比例尺DEM建设中的应用
  4. 优秀站长工具推荐之百度统计热力图用户体验要素
  5. 第一讲 OC简介及基本语法
  6. python实现超级玛丽小游戏(动图演示+源码分享)
  7. QQ群文件下载速度慢怎么办
  8. javascript与Jscript区别
  9. 17个好用免费的ftp软件工具推荐,支持中文
  10. python三国演义人物出场统计txt文本_python实例:三国演义TXT文本词频分析