It's April Fools' Day. If I believe you, I'm a noodle.
今天是愚人节,如果我相信你,我就是个傻瓜。
1
程序效果
2
源码分享
BEGIN OF ls_data ,
year ( 4 ) TYPE c ,
month ( 2 ) TYPE c ,
day ( 2 ) TYPE c ,
END OF ls_data ,lt_data LIKE TABLE OF ls_data ,
lt_repeat LIKE TABLE OF ls_data .
APPEND VALUE # ( year = '2024' month = '03' day = '01' ) TOlt_data .
APPEND VALUE # ( year = '2023' month = '02' day = '08' ) TOlt_data .
APPEND VALUE # ( year = '2024' month = '03' day = '09' ) TOlt_data .
APPEND VALUE # ( year = '2022' month = '08' day = '03' ) TOlt_data .
APPEND VALUE # ( year = '2022' month = '08' day = '02' ) TOlt_data .
APPEND VALUE # ( year = '2023' month = '09' day = '02' ) TOlt_data .
APPEND VALUE # ( year = '2022' month = '02' day = '01' ) TOlt_data .
DATA ( lt_sort ) = lt_data .SORT lt_sort BY year month .
LOOP AT lt_data ASSIGNING FIELD \- SYMBOL ( <f> )GROUP BY ( year = <f> \- year month = <f> \- month
size = GROUP SIZE )
REFERENCE INTO DATA ( grp_ref ).
"每组条目数 > 1, 表明重复
IF grp_ref -> size > 1 .
APPEND CORRESPONDING # ( grp_ref -> * ) TO lt_repeat .
ENDIF .
ENDLOOP .DATA ( out ) = cl_demo_output => new ( ).
data = lt_data name = '数据源' ),
data = lt_sort name = '数据源-排序后' ),
data = lt_repeat name = '按年月分组重复') ->display ( ).
3
AI解释
仅供参考
** **
这段代码演示了如何使用 ABAP 中的 GROUP BY 关键字来对数据进行分组,并通过 GROUP SIZE
来判断数据中是否存在重复项。现在让我来解释一下它的工作原理:
** 数据准备: ** 在代码开始部分,我们定义了一个数据结构 ls_data 用来存储年、月、日信息,并创建了两个表 lt_data 和
lt_repeat,分别用于存储原始数据和重复数据。
** 数据填充: ** 在 lt_data 中填充了一些示例数据,每个数据项都包括了年、月、日信息。
** 排序: ** 我们将 lt_data 按照年和月进行排序,以便用户后续用于结果对比更加直观。
** 分组处理重复数据: ** 接下来是关键的部分。通过使用 LOOP AT ... GROUP BY ...
,我们可以将数据按照指定的字段进行分组,这里我们选择了年和月作为分组依据。其中,GROUP SIZE 是一个特殊的关键字,它用于获取每个分组中的条目数量。
在我们的例子中,我们通过判断每个分组的条目数量是否大于 1,来确定是否存在重复数据。 如果某个分组中的条目数量大于
1,就意味着这个分组中存在重复数据,我们就将这些重复数据添加到 lt_repeat 表中。
** 输出结果: **
最后,我们将原始数据、排序后的数据以及重复数据分别输出到屏幕上,以便用户查看。
通过这种方式,我们可以方便地对数据进行分组并检测重复项,这对于数据质量控制和异常检测是非常有用的 。
以上是今日分享,希望对你有所帮助~~~
欢迎点赞、留言、分享
往期推荐
[ ABAP 新语法-GROUP BY
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495701&idx=1&sn=8b5959e457fdbd665598bf30b6e441a5&chksm=cf0a24fbf87daded579245ffa24099fcbe71400810fe25a02b632aca320bf095372eb2505d1e&scene=21#wechat_redirect)
[ ABAP 新语法-LET
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495544&idx=1&sn=11a10fc7f45113282e9b0e600c49e9e8&chksm=cf0a3b96f87db280c12b7c18df0823a4207c9d52b56b9d773135e12d6173c9636ce091a79cf4&scene=21#wechat_redirect)
[ ABAP 新语法-REDUCE
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495646&idx=1&sn=370e6863e1c40e7adfd42df62b799993&chksm=cf0a3b30f87db226babd5181e59cc61d9aebb6e759093c1c408fb22f24e5680fca2027db1b59&scene=21#wechat_redirect)
[ ABAP 新语法-FILTER
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495693&idx=1&sn=505aee012a4e71e200af681d14994f44&chksm=cf0a24e3f87dadf5039dd84f5f62184326d7b59cb803140bf4ce4067bfbb0bc9dd6018d4efb2&scene=21#wechat_redirect)
点个 在看 你最好看