首页 > 其他分享 >FICO 三大报表运算维护表计算规则(表里维护行次的)

FICO 三大报表运算维护表计算规则(表里维护行次的)

时间:2024-01-22 15:33:06浏览次数:20  
标签:行次 sum sign lv lt num TABLE 维护 FICO

1+2+3

"内表整理科目 报表项目 汇总后计算公式 1+2+3


DATA:
    lv_str   TYPE string,
    lv_str1  TYPE string,
    lt_num   TYPE TABLE OF string,
    lt_sign  TYPE TABLE OF string,
    lv_index TYPE CHAR4,
    lv_i     TYPE i,
    lv_sum   TYPE p DECIMALS 3.

  LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_out>) .

    IF <fs_out>-zformula IS NOT INITIAL.

      lv_str = <fs_out>-zformula.
      lv_str1 = <fs_out>-zformula.

      REPLACE ALL OCCURRENCES OF  '+'  IN lv_str WITH '*'.
      REPLACE ALL OCCURRENCES OF  '-'  IN lv_str WITH '*'.
      SPLIT lv_str AT '*' INTO TABLE lt_num.  "将数字放进内表 lt_num
      "替换数字
      LOOP AT lt_num INTO DATA(ls_num).

        REPLACE  ls_num WITH '*' INTO lv_str1.

      ENDLOOP.

      SPLIT lv_str1 AT '*' INTO TABLE lt_sign.  "将符号放进内表 lt_sign
      DELETE  lt_sign WHERE TABLE_LINE = ''.

      CLEAR: lv_sum , lv_i.

      LOOP AT lt_num INTO ls_num.

        lv_index = ls_num.
        READ TABLE gt_out INTO gs_out WITH KEY zrow = lv_index.
        IF sy-subrc = 0.

          IF lv_i = 0.   
            lv_sum = gs_out-zamount.
            lv_i = 1.
            CONTINUE.
          ENDIF.
          READ TABLE lt_sign INTO DATA(ls_sign) INDEX lv_i.
          IF sy-subrc = 0 .
            IF ls_sign = '+'.
              lv_sum = lv_sum + gs_out-zamount.
            ELSE.
              lv_sum = lv_sum - gs_out-zamount.
            ENDIF.
            lv_i = lv_i + 1.
          ENDIF.
        ENDIF.
      ENDLOOP.

      <fs_out>-zamount = lv_sum.
    ENDIF.
  ENDLOOP.

1+2+3+

 DATA:
    lv_str   TYPE string,
    lv_str1  TYPE string,
    lt_num   TYPE TABLE OF string,
    lt_sign  TYPE TABLE OF string,
    lv_index TYPE CHAR4,
    lv_i     TYPE i,
    lv_sum   TYPE p DECIMALS 3.

  LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_out>) .

    IF <fs_out>-zformula IS NOT INITIAL.

      lv_str = <fs_out>-zformula.
      lv_str1 = <fs_out>-zformula.

      REPLACE ALL OCCURRENCES OF  '+'  IN lv_str WITH '*'.
      REPLACE ALL OCCURRENCES OF  '-'  IN lv_str WITH '*'.
      SPLIT lv_str AT '*' INTO TABLE lt_num.  "将数字放进内表 lt_num
      "替换数字
      LOOP AT lt_num INTO DATA(ls_num).

        REPLACE  ls_num WITH '*' INTO lv_str1.

      ENDLOOP.

      SPLIT lv_str1 AT '*' INTO TABLE lt_sign.  "将符号放进内表 lt_sign
      DELETE  lt_sign WHERE TABLE_LINE = ''.

      CLEAR: lv_sum , lv_i.


      LV_I = 1.  "计算1+2+3+  如果计算1+2+3 删除
      LOOP AT lt_num INTO ls_num.

        lv_index = ls_num.
        READ TABLE gt_out INTO gs_out WITH KEY zrow = lv_index.
        IF sy-subrc = 0.

*          IF lv_i = 0.   "计算1+2+3
*            lv_sum = gs_out-zamount.
*            lv_i = 1.
*            CONTINUE.
*          ENDIF.
          READ TABLE lt_sign INTO DATA(ls_sign) INDEX lv_i.
          IF sy-subrc = 0 .
            IF ls_sign = '+'.
              lv_sum = lv_sum + gs_out-zamount.
            ELSE.
              lv_sum = lv_sum - gs_out-zamount.
            ENDIF.
            lv_i = lv_i + 1.
          ENDIF.
        ENDIF.
      ENDLOOP.

      <fs_out>-zamount = lv_sum.
    ENDIF.
  ENDLOOP.

 

标签:行次,sum,sign,lv,lt,num,TABLE,维护,FICO
From: https://www.cnblogs.com/Anyohh233/p/17980162

相关文章

  • 【LeetCode1747. 应该被禁止的 Leetflex 账户】[MySQL 用户变量/Pandas]面向过程编程;
    目录题目地址MySQL代码等效pandas代码题目地址https://leetcode.cn/problems/leetflex-banned-accounts/description/MySQL代码witht1as(selectaccount_id,ip_address,loginastick,"login"asmytypefromLogInfounionallselectaccount_id,ip......
  • 3、ceph集群的管理和维护
    一、通过sock文件单机管理(很少用)root@node1:~#ceph--admin-socket/var/run/ceph/ceph-osd.0.asokstatusroot@node1:~#ceph--admin-socket/var/run/ceph/ceph-osd.0.asok--helproot@node1:~#ceph--admin-daemon/var/run/ceph/ceph-mon.node1.asokconfigshowroo......
  • 笔记重修计划一:斜率优化 dp & cdq 分治维护凸包(施工中)
    施工中,但是目前暂停施工。前言刷cdq分治的时候做到了这题,发现自己不是很懂这个东西,跑回去看自己几个月前写的斜率优化dp笔记,当时认为自己弄得很明白了,但现在看来简直就是皮毛,遂弄明白后写下此文,希望自己之后有更多启发时能继续充实这篇文章。若有不妥之处望指出。如果单调......
  • 系统设计-维护篇
    给系统加上眼睛:服务端监控要怎么做?你在搭建监控系统时,所面临的第一个问题就是选择什么样的监控指标,也就是监控什么。延迟、通信量、错误和饱和度。延迟指的是请求的响应时间。比如接口的响应时间、访问数据库和缓存的响应时间。通信量可以理解为吞吐量,也就是单位时间内请求量......
  • 11.Node节点维护
    题目:Node节点维护配置环境kubectlconfiguse-contextek8s将名为ek8s-node-0的node节点设置为不可用,并重新调度该node上所有运行的pods。官方参考地址:KubectlReferenceDocs帮助命令:kubectldrain--help解答:1.切换答题环境kubectlconfiguse-contextek8s2.设置......
  • 线段树维护扫描线
    你需要实现一种数据结构支持以下操作:区间加减1保证加减区间一一对应,且先加后减,序列中永远不出现负数。查询完整序列中0的个数#include<cstdio>#include<algorithm>constintmaxn=1e5+10;longlongx[maxn*2];structsegmentTree{ structnode { i......
  • 用于PostgreSQL索引维护的有用查询
    PostgreSQL拥有丰富的索引功能,并且有很多文章解释索引的语法、用法和价值。在本文中,我将编写基本且有用的查询来查看数据库索引的状态。人们开发数据库一段时间后,当需要对软件架构进行更改时,他们忘记了以前的索引清理。这种方法会造成混乱,有时还会因为索引太多而降低数据库速度。......
  • 【LeetCode1747. 应该被禁止的 Leetflex 账户】MySQL用户变量编程;尝试维护一个multise
    题目地址https://leetcode.cn/problems/leetflex-banned-accounts/description/代码witht1as(selectaccount_id,ip_address,loginastick,"login"asmytypefromLogInfounionallselectaccount_id,ip_address,logoutastick......
  • 程序维护手册
    ......
  • 程序维护手册
    ......