关于内表数据汇总的一些算法
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
关于内表数据汇总的一些算法相关推荐
- 汇总内表数据:at end of方法和collect方法
ABAP开发中经常会遇到需要汇总内表中数据的情况,下面介绍两种方法:at end of和collect. 1.at end of方法 在使用loop循环读取已排序的内表时,可以访问两个自动生成的 ...
- 【04】SAP ABAP性能优化 - 如何选用内表类型(STANDARD, SORTED, HASHED)?
ABAP提供了三种类型的内表, 即:标准表(Standard Table), 排序表(Sorted Table), 哈希表(Hashed Table).在未声明内表类型时,系统会将类型默认为标准表. ...
- ABAP~ 内表操作
内表是每个ABAP开发人员都必须懂的,数据从R3取出来后,就是放在内表里处理的,其实就是Java中的集合框架,只是没有那么多不同数据结构的内表,目前只有标准.排序.Hash三种,这还是新的语法,老的只 ...
- SAP abap内表分类与增删改查操作
SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...
- 把本地txt文件导入到内表中
相关文章:http://www.cnblogs.com/caizjian/p/3271757.html 参照从本地excel导入到内表的例子 导入本地txt文件到内表用的函数是:但是注意因为 参数f ...
- 数据结构源码笔记(C语言):哈希表的相关运算算法
//实现哈希表的相关运算算法 #include<stdio.h> #include<malloc.h> #include<string.h>#define MaxS ...
- Spring Cloud Alibaba - 07 Ribbon 应用篇及内置的负载均衡算法
文章目录 Ribbon整合三部曲 artisan-cloud-ribbon-order step1 搞依赖 step2 搞注解 (在RestTemplate上加入@LoadBalanced注解) St ...
- 比较有意思的比较内表的小函数
包 :CT 函数组:CTVB 函数模块:CTVB_COMPARE_TABLES CALL FUNCTION 'CTVB_COMPARE_TABLES' EXPORTING table_ol ...
- [SAP ABAP开发技术总结]CLEAR、REFRESH、FREE内表清理区别
1.8. CLEAR.REFRESH.FREE 内表:如果使用有表头行的内表,CLEAR 仅清除表格工作区域.要重置整个内表而不清除表格工作区域,使用REFRESH语句或 CLEAR 语句CLEAR ...
最新文章
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(1):Mybatis和Hibernate概念理解...
- JavaScript导出Excel通用代码。
- centos7搭建nexus
- 【转】 ASP.NET 3.5中使用新的ListView控件
- 32时间片轮转_系统时间
- 在字符串String类型常忘记使用equals()进行值比较的问题
- python 字典处理_Python 6 个字典操作你必须知道
- JAVA工具类-StrUtils
- Hadoop IO操作之SequenceFile 和 MapFile
- python 给字符串加颜色
- 【车牌识别】基于matlab GUI字符匹配车牌识别(18省份)【含Matlab源码 1617期】
- 操作系统课设 Nachos 实验四、五:Nachos 的文件系统、扩展 Nachos 的文件系统
- 音视频 即时通讯Linux源码
- 在无任何报错的情况下 pagehelper.startpage分页无效问题
- 教育行业是永恒不过时的常青藤行业!
- Mybatis异常:Invalid bound statement (not found): com.xxx.mapper.xxxMapper.selectByExample
- 7654劫持火狐解决办法
- typora导出word指定样式_Word长文档排版以写论文为例
- Node——微信支付 V3接口
- windows下的docker学习