ABAP 之数据去重的详细用法

举报
百里丶落云 发表于 2023/08/10 11:40:36 2023/08/10
【摘要】 序HELLO ,这里是百里,一个学习中的ABAPER,ABAP语言是一门神奇的语言,他sql分成两种,一种操作数据库,一种操作内表.没错在别的语言中你绝对没听过一种叫做内表的东西.你可以理解为自定义一个变量,然后你可以操作对应的变量内表数据.或者可以理解为excel 中的对应的SHEET .扯远了,我们今天说的是内表的去重方式 . 什么是数据去重举个例子,就像excel两行中有出现相同的数...

HELLO ,这里是百里,一个学习中的ABAPER,ABAP语言是一门神奇的语言,他sql分成两种,一种操作数据库,一种操作内表.没错在别的语言中你绝对没听过一种叫做内表的东西.你可以理解为自定义一个变量,然后你可以操作对应的变量内表数据.或者可以理解为excel 中的对应的SHEET .扯远了,我们今天说的是内表的去重方式 .

什么是数据去重

举个例子,就像excel两行中有出现相同的数据.我们需要只取一条那么就是去重. 传统sql 是distinct 或者group by 两种方式,但是这种是不删除实体数据的, 我们此时所说的ABAP 去中是进行delete 的方式.我们会删了对应的内表数据 .

语法介绍

在去重之前,我们首先需要进行数据存放进内表,然后把内表数据进行排序, 注意排序内容,尽量与需要去重的数据一致.

SORT ITAB(内表名) BY 重复字段名.
DELETE ADJACENT DUPLICATES FROM itab(内表名) COMPARING针对的字段.

该语法用于删除对应的内容数据内容, 删除的条件是 comparing 针对的字段, 删除的结果是不论你有多少条数据,最终只是留下比较的数据唯一一条.

全部删除与针对删除

delete adjacent duplicates from 内表名 .

delete adjacent duplicates from 内表名 comparing 字段1 字段2 .

如果不写comparing 及后面的字段,则是所有字段均进行比较可以理解distinct .

增加了字段则是说只针对对应数据进行数据去重.

实际案例

数据准备

TABLES : ZWDEMOTABLE1 .  
" 数据准备  
  
  
  
TYPES:BEGIN OF ty_Data  ,  
  uom TYPE char20 ,  
    doccode TYPE char20 ,  
   zrowid TYPE char20 ,  
  matcode TYPE char20 ,  
  matname TYPE char20 ,  
  
  memo TYPE char20 ,  
  
  
     light TYPE iconname, "指示灯  
        msg   TYPE string,"消息  
  
  END OF ty_Data .  
  
data :gs_DAta TYPE ty_Data .  
data :gt_Data TYPE TABLE of ty_Data .

获取数据内容

select *  from  ZWDEMOTABLE1 into CORRESPONDING FIELDS OF TABLE gt_Data .

如图我们有一列是具有相同数据的列数据,其中双为多次内容.
image.png

使用语法

sort gt_Data  by uom  doccode zrowid matcode matname memo .  
  
DELETE ADJACENT DUPLICATES FROM gt_Data COMPARING uom .

我们按照uom 数据进行排序以后,去重,我们只是参照uom进行去重,我们按照前面说的内容最终我们只会保留不重复对比的内容,即除了其中有3个双数据,我们只会保留一个双.
我们只会保留双的唯一一行数据.

image.png

新增一个对比字段

DELETE ADJACENT DUPLICATES FROM gt_Data COMPARING uom doccode.

此时我们比对的就是uom ,及doccode 对应的字段内容,很容易看出 有5条数据 .

image.png

技术总结

今天讲述的内容是又是一个工作中经常用到的知识点,内表去重,熟练使用内表去重可以增加alv查询的效率,等等环境都会使用到.

百里鸡汤

with great power comes great responsibility

这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.

78310a55b319ebc4bd8aa6d78f26cffc1f171689.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。