如何方便的计算 GLT0 等表中的数据
2008-10-29 16:14
357 查看
在 ABAP 的 GLT0、FAGLFLEXT 等余额表中,用诸如 TSL01、TSL02 …… TSL16 等字段记录了 16 个期间的发生额,在对某个期间取当年累计的时候,如果用其它语言,一般需要创建一个 CASE ... WHEN ... ENDCASE 结构,按输入的期间值来累加,代码量比较大。不过在 ABAP 中就不必那么麻烦了,SAP 提供了一个方便的语法来完成这类计算。代码如下:
其中的关键在于 DO ... VARYING ... FROM ... NEXT 这个语法结构。其中的 prpmax 代表循环次数,也就是输入的区间,GLT0VARY 代表存储获得值的临时变量,FROM 后的 GLT0-TSL01 是循环的开始位置,GLT0-TSL02 是循环的第二个位置,从这两个字段的位置,就能获得每次取值的内存偏移。这样,DO 循环的过程就是,首先取 GLT0-TSL01 的值,放到 GLT0VARY 中,然后执行 SUMME 的累加;再根据 prpmax 的值循环指定次数,每次都按 GLT0-TSL01 的长度取相应的内存片段,放到 GLT0VARY 中,执行累加。因此,在这样的循环里,需要累加的字段必须连续且长度相同。下图表示了它的内存使用情况:
来源:
/article/4902386.html
Code PARAMETERS: prpmax LIKE GLT0-RPMAX. DATA: GLT0VARY LIKE GLT0-TSL01. SUMME = SUMME + GLT0-TSLVT. DO prpmax TIMES VARYING GLT0VARY FROM GLT0-TSL01 NEXT GLT0-TSL02. SUMME = SUMME + GLT0VARY. ENDDO.
其中的关键在于 DO ... VARYING ... FROM ... NEXT 这个语法结构。其中的 prpmax 代表循环次数,也就是输入的区间,GLT0VARY 代表存储获得值的临时变量,FROM 后的 GLT0-TSL01 是循环的开始位置,GLT0-TSL02 是循环的第二个位置,从这两个字段的位置,就能获得每次取值的内存偏移。这样,DO 循环的过程就是,首先取 GLT0-TSL01 的值,放到 GLT0VARY 中,然后执行 SUMME 的累加;再根据 prpmax 的值循环指定次数,每次都按 GLT0-TSL01 的长度取相应的内存片段,放到 GLT0VARY 中,执行累加。因此,在这样的循环里,需要累加的字段必须连续且长度相同。下图表示了它的内存使用情况:
来源:
/article/4902386.html
相关文章推荐
- 如何方便的计算 GLT0 等表中的数据
- 如何方便的计算 GLT0 等表中的数据
- 云计算需要学什么课程?新手小白如何学习云计算大数据
- 高可用的大数据计算平台如何持续发布和演进
- 大数据计算:如何仅用1.5KB内存为十亿对象计数 .
- 大数据计算:如何仅用1.5KB内存为十亿对象计数
- 大数据计算:如何仅用1.5KB内存为十亿对象计数
- 大数据计算:如何仅用1.5KB内存为十亿对象计数
- 大数据计算:如何仅用1.5KB内存为十亿对象计数
- abap--如何根据动态公式计算数据(增补),谢谢网友补充
- 数据密集、计算密集、IO密集,hadoop如何应对?
- 如何计算HBase Compaction处理的数据量?
- Excel2007及以上版本如何计算相关系数和回归等数据分析
- 集算器如何处理类文本数据计算
- 大数据计算:如何仅用1.5KB内存为十亿对象计数
- 大数据计算:如何仅用1.5KB内存为十亿对象计数
- 在MySQL中,如何计算一组数据的中位数?
- 如何在C++中方便的将float、int等类型数据转换成string类型,并利用ROS中的std_msg/String发布出去
- abap--如何根据动态公式计算数据(增补),谢谢网友补充
- 11月21日云栖精选夜读:如何扛住1.8亿/秒的双11数据洪峰?阿里流计算技术全揭秘