当前位置: 首页 > news >正文

SAP ABAP LOOP GROUP BY 分组循环的使用方法

1.3.19  关键字GROUP BY用法

LOOP GROUP BY 分组循环的使用方法

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

2.简而言之:就是第一个loop循环是把内表进行分组,第二loop循环是把组里的数据循环读出来进行修改判断等操作。

3.可以替代AT END OF /AT NEW OF

4. 具体实例

TYPESBEGIN 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'       age 34  sex =  'MAN'   )
name 'Alice'     role 'FI Consultant'   age 42  sex =  'WOMAN'  )
name 'Barry'    role 'ABAP'       age 54   sex =  'WOMAN'  )
name 'Mary'     role 'FI Consultant'   age 37  sex =  'WOMAN' )
name 'Arthur'   role 'ABAP'       age 34  sex =  'MAN'  )
name 'Mandy'   role 'SD Consultant'     age 64  sex =  'MAN'  ) ).

DATAgv_tot_age TYPE i,
      gv_avg_age TYPE decfloat34.
"通过角色进行分组"
LOOP AT gt_employee INTO DATA(ls_employeeGROUP BY role  ls_employee-role
                                           
size  GROUP SIZE  "分组组数"
                                           index GROUP INDEX "分组的组序号"
  ASCENDING    ASSIGNING FIELD-SYMBOL(<group>).

  CLEARgv_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.

   执行效果:

  

具体实例2

按照楼栋编码+产品类型+经营属性汇总

    READ TABLE lt_zspl0016_1 TRANSPORTING NO FIELDS WITH KEY posid ls_itab_ld-posid BINARY SEARCH.
    IF sy-subrc IS INITIAL.
      LOOP AT lt_zspl0016_1 INTO DATA(ls_zspl0016_1FROM sy-tabix WHERE posid ls_itab_ld-posid
GROUP BY posid ls_zspl0016_1-posid
           cp_num 
ls_zspl0016_1-cp_num
           jysx_id 
ls_zspl0016_1-jysx_id ).

实例3:

" 权限组织和员工子组数据整合
  CLEAR: lt_auth_aa.
  LOOP AT lt_auth_a INTO ls_auth_s GROUP BY ( otype = ls_auth_s-otype
                                              objid = ls_auth_s-objid
                                              index = GROUP INDEX
                                               size = GROUP SIZE
                                             ) INTO DATA(lt_grp_auth_z).
    CLEAR: ls_auth_aa,lt_auth_s_zz.
    ls_auth_aa-otype = lt_grp_auth_z-otype.
    ls_auth_aa-objid = lt_grp_auth_z-objid.

    LOOP AT GROUP lt_grp_auth_z INTO DATA(ls_grp_auth_z).
      DELETE ls_grp_auth_z-auth_s WHERE rtype IS INITIAL.
      IF ls_grp_auth_z-auth_s IS INITIAL.
        CLEAR lt_auth_s_zz.
        EXIT.
      ENDIF.
      LOOP AT ls_grp_auth_z-auth_s INTO DATA(ls_auth_ss).
        COLLECT ls_auth_ss INTO lt_auth_s_zz.
      ENDLOOP.
    ENDLOOP.
    ls_auth_aa-auth_s = lt_auth_s_zz.
    APPEND ls_auth_aa TO lt_auth_aa.
  ENDLOOP.

http://www.xdnf.cn/news/913987.html

相关文章:

  • 独家首发!低照度环境下YOLOv8的增强方案——从理论到TensorRT部署
  • 概念理解篇:线程同步之【互斥】
  • PyQt6 GUI应用程序开发实操指南
  • 布林波动率策略
  • 算法学习之——LRU最近最少使用
  • 告别数据泥沼,拥抱智能中枢:King’s四位一体重塑科研生产力
  • 负载均衡器 LB》》
  • ABB输入/输出系统- S800输入/输出AI830A
  • 场景题-3
  • 【Linux】sed 命令详解及使用样例:流式文本编辑器
  • 【网页端数字人开发】基于模型SAiD实现嘴型同步
  • 三模冗余设计
  • 书籍推荐 --- 《筚路维艰:中国经济社会主义路径的五次选择》
  • 瑞它鲁肽 Retatrutide
  • Delphi 实现远程连接 Access 数据库的指南
  • 为什么HDI叠孔比错孔设计难生产
  • 调试时两个can盒子互连实现在一台电脑上自发自收的接线
  • Pytorch安装后 如何快速查看经典的网络模型.py文件(例如Alexnet,VGG)(已解决)
  • WiFi通信应用开发【保姆级】+配置ESP8266芯片的WiFi station和soft-AP + station工作模式!!!
  • 算力时代的四大引擎:CPU、GPU、NPU、DPU 深度解析
  • Vue3 + threeJs 定义六种banner轮播图切换动画效果:百叶窗、手风琴、拼图、渐变、菱形波次、圆形扩展
  • 如何利用 Redis 实现跨多个无状态服务实例的会话共享?
  • 讲解:Java I/O 流体系,并举例每个类的使用
  • 【YOLOs-CPP-图像分类部署】05-OpenVino加速
  • URL 带有 /../ 导致可以访问其他目录--路径穿越问题
  • SON.stringify()和JSON.parse()之间的转换
  • 优化电脑的磁盘和驱动器提高电脑性能和延长硬盘寿命?
  • Unity3D仿星露谷物语开发60之定制角色其他部位
  • Jpackage
  • 信号电压高,传输稳定性变强,但是传输速率下降?