相关文章推荐
开朗的路灯  ·  spring ...·  3 月前    · 
痛苦的热水瓶  ·  kubectl.kubernetes.io/ ...·  1 年前    · 
神勇威武的豆浆  ·  java - Hitting space ...·  1 年前    · 


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 .

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

ABAP 之数据去重的详细用法_字段

使用语法

sort gt_Data  by uom  doccode zrowid matcode matname memo .

DELETE ADJACENT DUPLICATES FROM gt_Data COMPARING uom .

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

ABAP 之数据去重的详细用法_前端_02

新增一个对比字段

DELETE ADJACENT DUPLICATES FROM gt_Data COMPARING uom doccode.

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

ABAP 之数据去重的详细用法_数据_03

技术总结

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

百里鸡汤

with great power comes great responsibility

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

ABAP 之数据去重的详细用法_前端_04

java 怎么判断线程池完全空闲 java线程池空闲时间

线程池优点:降低资源消耗(不用频繁创建/销毁线程)提高响应速度(否则:线程创建时间–>运行时间–>销毁时间),只会花费运行时间,与数据库连接池道理一样提高线程可管理性,统一分配调控监管 线程池的创建:ExecutorService pool = new ThreadPoolExecutor(2,4,3,TimeUnit.SECONDS, new ArrayBlockingList(10

java map 分布图 java mapping

1、@RequestMapping注解的功能         从注解名称上我们可以看到,@RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。         SpringMVC