1.把某个字段相同行的数值型数据字段汇总

如:

初始数据

FLD1

FLD2

FLD3

a

a

1

a

b

2

b

a

3

处理后数据

FLD1

FLD2

FLD3

a

a

3

b

a

3

其中:fld1,fld2为字符型,fld3为数值型。

要求:

现在我们的要求是:把fld1相同的行的FLD3汇总到最前面那行(如果要汇总到最后那行,可以为itab一个字段设fld4赋值1,2,3,。。然后sort itab by fld1 descending fld4 discending.再做下面的运算),

并把多余的行删除。

实际情况:(这是相当于FLD1是父结点,FLD2是子结点,FLD3为数值)现在的要求就是求父结点的值(为所有子结点的值之和)

假设数据已经存在内表ITAB(带表头)。

最简单&效率应该也是最快的(个人认为,有更好方法的童鞋欢迎交流)

 1 REPORT  ydemo_rick_a.
 2 DATA:BEGIN OF itab OCCURS 0,
 3     fld1,
 4     fld2,
 5     fld3 TYPE i,
 6   END OF itab.
 7 DATA wtab LIKE itab.
 8 DATA outtab LIKE TABLE OF  itab WITH HEADER LINE.
 9 itab-fld1 = 'a'.
10 itab-fld2 = 'a'.
11 itab-fld3 = 1.
12 APPEND itab.
13
14 itab-fld1 = 'a'.
15 itab-fld2 = 'b'.
16 itab-fld3 = 2.
17 APPEND itab.
18
19 itab-fld1 = 'b'.
20 itab-fld2 = 'a'.
21 itab-fld3 = 3.
22 APPEND itab.
23
24 LOOP AT itab.
25   WRITE: itab-fld1,itab-fld2,itab-fld3, / .
26 ENDLOOP.
27
28 ULINE.
29
30 LOOP AT itab.
31   ON CHANGE OF itab-fld1.
32     wtab = itab.
33   ELSE.
34 **MOTHOD 1
35     wtab-fld3 = itab-fld3.
36     DELETE itab.
37     COLLECT wtab INTO itab.
38 **MOTHOD 2
39 *    ADD itab-fld3 TO wtab-fld3.
40 *    DELETE itab.
41 *    MODIFY TABLE itab FROM wtab  TRANSPORTING fld3.
42 ***用MODIFY的效率应该更好(可以用transporting限制)不过数据量不大的话就看个人喜好了。
43   ENDON.
44 ENDLOOP.
45 ****下面为一种笨方法
46 *LOOP AT itab.
47 *  ON CHANGE OF itab-fld1.
48 *    APPEND itab TO outtab.
49 *    outtab = itab.            "记下汇总行
50 *  ELSE.
51 *    outtab-fld3 = itab-fld3.
52 *    COLLECT  outtab.
53 *  ENDON.
54 *ENDLOOP.
55
56 LOOP AT itab.
57   WRITE: itab-fld1,itab-fld2,itab-fld3, / .
58 ENDLOOP.

View Code

用MODIFY的效率应该更好(可以用transporting限制),不过数据量不大的话就看个人喜好了。

转载于:https://www.cnblogs.com/ruingy/p/3521031.html

关于内表数据汇总的一些算法相关推荐

  1. 汇总内表数据:at end of方法和collect方法

    ABAP开发中经常会遇到需要汇总内表中数据的情况,下面介绍两种方法:at end of和collect. 1.at end of方法    在使用loop循环读取已排序的内表时,可以访问两个自动生成的 ...

  2. 【04】SAP ABAP性能优化 - 如何选用内表类型(STANDARD, SORTED, HASHED)?

    ABAP提供了三种类型的内表, 即:标准表(Standard Table), 排序表(Sorted Table), 哈希表(Hashed Table).在未声明内表类型时,系统会将类型默认为标准表. ...

  3. ABAP~ 内表操作

    内表是每个ABAP开发人员都必须懂的,数据从R3取出来后,就是放在内表里处理的,其实就是Java中的集合框架,只是没有那么多不同数据结构的内表,目前只有标准.排序.Hash三种,这还是新的语法,老的只 ...

  4. SAP abap内表分类与增删改查操作

    SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...

  5. 把本地txt文件导入到内表中

    相关文章:http://www.cnblogs.com/caizjian/p/3271757.html 参照从本地excel导入到内表的例子  导入本地txt文件到内表用的函数是:但是注意因为 参数f ...

  6. 数据结构源码笔记(C语言):哈希表的相关运算算法

    //实现哈希表的相关运算算法 #include<stdio.h> #include<malloc.h> #include<string.h>#define MaxS ...

  7. Spring Cloud Alibaba - 07 Ribbon 应用篇及内置的负载均衡算法

    文章目录 Ribbon整合三部曲 artisan-cloud-ribbon-order step1 搞依赖 step2 搞注解 (在RestTemplate上加入@LoadBalanced注解) St ...

  8. 比较有意思的比较内表的小函数

    包       :CT 函数组:CTVB 函数模块:CTVB_COMPARE_TABLES CALL FUNCTION 'CTVB_COMPARE_TABLES' EXPORTING table_ol ...

  9. [SAP ABAP开发技术总结]CLEAR、REFRESH、FREE内表清理区别

    1.8.  CLEAR.REFRESH.FREE 内表:如果使用有表头行的内表,CLEAR 仅清除表格工作区域.要重置整个内表而不清除表格工作区域,使用REFRESH语句或 CLEAR 语句CLEAR ...

最新文章

  1. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(1):Mybatis和Hibernate概念理解...
  2. JavaScript导出Excel通用代码。
  3. centos7搭建nexus
  4. 【转】 ASP.NET 3.5中使用新的ListView控件
  5. 32时间片轮转_系统时间
  6. 在字符串String类型常忘记使用equals()进行值比较的问题
  7. python 字典处理_Python 6 个字典操作你必须知道
  8. JAVA工具类-StrUtils
  9. Hadoop IO操作之SequenceFile 和 MapFile
  10. python 给字符串加颜色
  11. 【车牌识别】基于matlab GUI字符匹配车牌识别(18省份)【含Matlab源码 1617期】
  12. 操作系统课设 Nachos 实验四、五:Nachos 的文件系统、扩展 Nachos 的文件系统
  13. 音视频 即时通讯Linux源码
  14. 在无任何报错的情况下 pagehelper.startpage分页无效问题
  15. 教育行业是永恒不过时的常青藤行业!
  16. Mybatis异常:Invalid bound statement (not found): com.xxx.mapper.xxxMapper.selectByExample
  17. 7654劫持火狐解决办法
  18. typora导出word指定样式_Word长文档排版以写论文为例
  19. Node——微信支付 V3接口
  20. windows下的docker学习

热门文章

  1. 一周要闻:为什么从百度离职,程序员五件事.......
  2. 蓝桥杯 第十届 JAVAB组 E迷宫
  3. 求两个数的最大公约数的3种办法
  4. PHP与C sharp互解加密算法
  5. Struts2笔记——struts常用标签
  6. EasyUI 添加tab页(iframe方式)
  7. Confluence 6 在升级过程中查看合并日志
  8. 肌肉减少症导致的老人跌倒
  9. pom添加依赖后不报错但是代码依然缺少依赖
  10. colab长时间处于正在连接