ABAP 新语法 GROUPSIZE

作者:ABAP猿 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, AI Agent, Data Engineering, WM, 仓库管理, 开发, 数据工程, 智能体
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图

It's April Fools' Day. If I believe you, I'm a noodle.

今天是愚人节,如果我相信你,我就是个傻瓜。

ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图

1

程序效果

ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图

2

源码分享

ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图

DATA

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' ) TO

lt_data .

APPEND VALUE # ( year = '2023' month = '02' day = '08' ) TO

lt_data .

APPEND VALUE # ( year = '2024' month = '03' day = '09' ) TO

lt_data .

APPEND VALUE # ( year = '2022' month = '08' day = '03' ) TO

lt_data .

APPEND VALUE # ( year = '2022' month = '08' day = '02' ) TO

lt_data .

APPEND VALUE # ( year = '2023' month = '09' day = '02' ) TO

lt_data .

APPEND VALUE # ( year = '2022' month = '02' day = '01' ) TO

lt_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 ( ).

out -> write (

data = lt_data name = '数据源' ), data = lt_sort name = '数据源-排序后' ), data = lt_repeat name = '按年月分组重复'

) ->display ( ).

3

AI解释

ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图

仅供参考

ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图

** **

这段代码演示了如何使用 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 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图

以上是今日分享,希望对你有所帮助~~~

欢迎点赞、留言、分享

ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图

往期推荐

[ 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)

ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图
ABAP 新语法 GROUPSIZ - 封面图

点个 在看 你最好看

ABAP猿

关于作者:ABAP猿

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP新语法GROUPSIZE.md」整理生成,仅用于内部技术分享与学习交流。