zoukankan      html  css  js  c++  java
  • 如何方便的计算 GLT0 等表中的数据

    在 ABAP 的 GLT0、FAGLFLEXT 等余额表中,用诸如 TSL01、TSL02 …… TSL16 等字段记录了 16 个期间的发生额,在对某个期间取当年累计的时候,如果用其它语言,一般需要创建一个 CASE … WHEN … ENDCASE 结构,按输入的期间值来累加,代码量比较大。不过在 ABAP 中就不必那么麻烦了,SAP 提供了一个方便的语法来完成这类计算。代码如下:
    1 m* r$ R. P! D$ o* d% y& @PARAMETERS: prpmax LIKE GLT0-RPMAX.
    % d; r4 f  T0 l; S: ~/ G9 jDATA: GLT0VARY LIKE GLT0-TSL01.-
    SUMME = SUMME + GLT0-TSLVT.
    ! y1 o: e1 [* VDO prpmax TIMES VARYING GLT0VARY FROM GLT0-TSL01 NEXT GLT0-TSL02.
    5 I' x$ _& M, L& ]8 n& SSUMME = SUMME + GLT0VARY.
    ENDDO.
    其中的关键在于 DO … VARYING … FROM … NEXT 这个语法结构。其中的 prpmax 代表循环次数,也就是输入的区间,GLT0VARY 代表存储获得值的临时变量,FROM 后的 GLT0-TSL01 是循环的开始位置,GLT0-TSL02 是循环的第二个位置,从这两个字段的位置,就能获得每次取值的内存偏移。这样,DO 循环的过程就是,首先取 GLT0-TSL01 的值,放到 GLT0VARY 中,然后执行 SUMME 的累加;再根据 prpmax 的值循环指定次数,每次都按 GLT0-TSL01 的长度取相应的内存片段,放到 GLT0VARY 中,执行累加。因此,在这样的循环里,需要累加的字段必须连续且长度相同。

  • 相关阅读:
    应用wordpress
    php引入fckeditor编辑工具
    php_bu
    AJAX回调函数
    AJAX 输入框后写提示
    收集几个不错的最新win10系统64位和32位系统Ghost版下载
    曝光最新WIN10系统32位,64位系统ghost版
    微软本月将推Win10 望打破Win8所带来差评影响
    最新官方WIN10系统32位,64位系统ghost版下载
    记一次苦逼的SQL查询优化
  • 原文地址:https://www.cnblogs.com/huangjianisgood/p/2726761.html
Copyright © 2011-2022 走看看