原文链接:https://blog.csdn.net/lmf496891416/article/details/111317377

1.格式:

  LOOP AT 内表  INTO DATA(工作区)  GROUP BY ( 字段  = 工作区-字段
size = GROUP SIZE "分组组数--
index = GROUP INDEX ) "分组的组序号
ASCENDING ASSIGNING FIELD-SYMBOL(<组>). LOOP AT GROUP <组> ASSIGNING FIELD-SYMBOL(<指针>).
"对指针进行操作,和普通的loop循环相似
ENDLOOP. ENDLOOP.

2.简而言之:就是第一个loop循环是把内表进行分组,第二loop循环是把组里的数据循环读出来进行修改判断等操作。
3.可以替代AT END OF /AT NEW OF。
4.具体实例-复制就能用

TYPES: BEGIN OF ty_employee,
name TYPE char30,
role TYPE char30,
age TYPE i,
sex TYPE char10,
END OF ty_employee,
ty_employee_t TYPE STANDARD TABLE OF ty_employee WITH KEY name.
"对内表进行赋值"
DATA(gt_employee) = VALUE ty_employee_t(
( name = 'John' role = 'ABAP guru' age = 34 sex = 'MAN' )
( name = 'Alice' role = 'FI Consultant' age = 42 sex = 'WOMAN' )
( name = 'Barry' role = 'ABAP guru' age = 54 sex = 'WOMAN' )
( name = 'Mary' role = 'FI Consultant' age = 37 sex = 'WOMAN' )
( name = 'Arthur' role = 'ABAP guru' age = 34 sex = 'MAN' )
( name = 'Mandy' role = 'SD Consultant' age = 64 sex = 'MAN' ) ). DATA: gv_tot_age TYPE i,
gv_avg_age TYPE decfloat34.
"通过角色进行分组"
LOOP AT gt_employee INTO DATA(ls_employee) GROUP BY ( role = ls_employee-role
size = GROUP SIZE "分组组数"
index = GROUP INDEX ) "分组的组序号"
ASCENDING ASSIGNING FIELD-SYMBOL(<group>). CLEAR: gv_tot_age.
WRITE: / | 组序号: { <group>-index } 角色: { <group>-role WIDTH = 15 }|
& | 这个组有几条数据: { <group>-size } |.
"loop循环组,将组里的数据读出来"
LOOP AT GROUP <group> ASSIGNING FIELD-SYMBOL(<ls_member>).
gv_tot_age = gv_tot_age + <ls_member>-age.
WRITE: /13 <ls_member>-name .
ENDLOOP. gv_avg_age = gv_tot_age / <group>-size.
WRITE: / |组平均年龄: { gv_avg_age }|.
SKIP.
ENDLOOP.

实例最终结果图:

最新文章

  1. NAT技术
  2. Jenkins环境拓扑及部署流程
  3. LabVIEW串口通信
  4. ANSI C中关于FILE流的一些
  5. 未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=n
  6. Linux下运行jar包
  7. Windows下的cmd命令行中设置环境编码
  8. ChatForFun 公众号使用说明
  9. Android 怎样把光标放在EditText中文本的末尾处?
  10. 【笨嘴拙舌WINDOWS】窗体样式
  11. Qt获得网页源码
  12. E212: 不能以写入模式打开 linux
  13. 前端开发之JavaScript篇
  14. SDP(2):ScalikeJDBC-Connection Pool Configuration
  15. linux:如何指定进程运行的CPU
  16. JavaScript里面的arguments到底是个啥?
  17. c# System.Console
  18. async与await线程分配研究
  19. python 使用多线程进行并发编程/互斥锁的使用
  20. introsort(内省排序)

热门文章

  1. VUE环境运行搭建
  2. IntelliJ IDEA运行项目的时候提示 Command line is too long 错误
  3. element-ui的collapse中嵌套table表格 的 高度跳跃 问题
  4. x-sheet 开发系列教程:初始化配置
  5. FTP传大文件又慢又麻烦,有没有更好的替代传输方案?
  6. Python-网络编程和多进程多线程开发
  7. having对聚合函数的结果集进行过滤
  8. java后台接收参数为枚举,postman的json如何传入
  9. CocosCreator 性能优化:DrawCall
  10. Kubernetes--Pod对象的生命周期