SAP-FI-现金流量表

    1. 程序实现

  1. 建立配置表ZFIT_0003维护现金流量表行号

建立配置表ZFIT_0004维护行号对应的原因码

(2)	子程序FRM_PREPARE_DATA取得上述两个配置表的数据

  SELECT *
  INTO TABLE ZT03
  FROM ZFIT_0003.
  IF ZT03[] IS INITIAL.
    MESSAGE S001(00) WITH '行项配置表没有维护' DISPLAY LIKE 'E'.
    STOP.
  ENDIF.
  SELECT *
  INTO TABLE ZT04
  FROM ZFIT_0004.
  IF ZT04[] IS INITIAL.
    MESSAGE S001(00) WITH '原因码配置表没有维护' DISPLAY LIKE 'E'.
    STOP.
  ENDIF.

  LOOP AT ZT04.
    R_RSTGR-SIGN = 'I'.
    R_RSTGR-OPTION = ZT04-OPTIO.
    IF ZT04-OPTIO = 'EQ'.
      R_RSTGR-LOW = ZT04-RSTGR.
    ELSE.
      CONCATENATE ZT04-RSTGR '*' INTO R_RSTGR-LOW.
      R_RSTGR-OPTION = 'CP'.
    ENDIF.
    COLLECT R_RSTGR.
  ENDLOOP.
取得上年同期的会计凭证数据,
科目限制为'001001%'  '001002%'  '001012%' 三个范围
原因码限制为配置表中取出的原因码
  SELECT GJAHR BELNR BUKRS
  INTO TABLE LT_BKPF1
  FROM BKPF
  WHERE BUKRS IN S_BUKRS
    AND GJAHR = L_YEAR
    AND MONAT <= P_MONAT.
  IF LT_BKPF1[] IS NOT INITIAL.
    SELECT BUKRS BELNR GJAHR BUZEI SHKZG RSTGR DMBTR
    INTO CORRESPONDING FIELDS OF TABLE GT_BSEG1
    FROM BSEG
    FOR ALL ENTRIES IN LT_BKPF1
    WHERE GJAHR = LT_BKPF1-GJAHR
      AND BELNR = LT_BKPF1-BELNR
      AND BUKRS = LT_BKPF1-BUKRS
      AND ( HKONT LIKE '001001%' OR HKONT LIKE '001002%' OR HKONT LIKE '001012%' )
      AND RSTGR IN R_RSTGR.
  ENDIF.
取得本年累积(不含本期)的凭证数据
  SELECT GJAHR BELNR BUKRS
  INTO TABLE LT_BKPF2
  FROM BKPF
  WHERE BUKRS IN S_BUKRS
    AND GJAHR = P_GJAHR
    AND MONAT < P_MONAT.
  IF LT_BKPF2[] IS NOT INITIAL.
    SELECT BUKRS BELNR GJAHR BUZEI SHKZG DMBTR RSTGR
    INTO CORRESPONDING FIELDS OF TABLE GT_BSEG2
    FROM BSEG
    FOR ALL ENTRIES IN LT_BKPF2
    WHERE GJAHR = LT_BKPF2-GJAHR
      AND BELNR = LT_BKPF2-BELNR
      AND BUKRS = LT_BKPF2-BUKRS
      AND ( HKONT LIKE '001001%' OR HKONT LIKE '001002%' OR HKONT LIKE '001012%' )
      AND RSTGR IN R_RSTGR.
  ENDIF.
取得本期的凭证数据
  SELECT GJAHR BELNR BUKRS
  INTO TABLE LT_BKPF3
  FROM BKPF
  WHERE BUKRS IN S_BUKRS
    AND GJAHR = P_GJAHR
    AND MONAT = P_MONAT.
  IF LT_BKPF3[] IS NOT INITIAL.
    SELECT BUKRS BELNR GJAHR BUZEI SHKZG DMBTR RSTGR
    INTO CORRESPONDING FIELDS OF TABLE GT_BSEG3
    FROM BSEG
    FOR ALL ENTRIES IN LT_BKPF3
    WHERE GJAHR = LT_BKPF3-GJAHR
      AND BELNR = LT_BKPF3-BELNR
      AND BUKRS = LT_BKPF3-BUKRS
      AND ( HKONT LIKE '001001%' OR HKONT LIKE '001002%' OR HKONT LIKE '001012%' )
      AND RSTGR IN R_RSTGR.
  ENDIF.
取得上一年和本年总账表中的余额
**上年总账余额
  SELECT *
  INTO TABLE GT_FAGL1
  FROM FAGLFLEXT
  WHERE RYEAR = L_YEAR
    AND RLDNR = '0L'
    AND RBUKRS IN S_BUKRS
    AND ( RACCT LIKE '1001%' OR RACCT LIKE '1002%' OR RACCT LIKE '1012%' ).
**本年总账余额
  SELECT *
  INTO TABLE GT_FAGL2
  FROM FAGLFLEXT
  WHERE RYEAR = P_GJAHR
    AND RLDNR = '0L'
    AND RBUKRS IN S_BUKRS
    AND ( RACCT LIKE '1001%' OR RACCT LIKE '1002%' OR RACCT LIKE '1012%' ).

按照上年同期/本年累计/本期发生3个周期, 以原因码对应的行号归集到内表ITAB中
配置表中的CP表示该原因码是通配查询
**上年同期
  LOOP AT GT_BSEG1 INTO WA.
    LOOP AT ZT04.
      IF ZT04-OPTIO = 'EQ' AND ZT04-RSTGR = WA-RSTGR.
        ITAB-LINEN = ZT04-LINEN.
        IF WA-SHKZG = 'H'.
          ITAB-DMBT1 = 0 - WA-DMBTR.
        ELSE.
          ITAB-DMBT1 = WA-DMBTR.
        ENDIF.
        COLLECT ITAB.
        CLEAR ITAB.
      ENDIF.
      IF ZT04-OPTIO = 'CP'.
        L_LEN = STRLEN( ZT04-RSTGR ).
        IF ZT04-RSTGR = WA-RSTGR(L_LEN).
          ITAB-LINEN = ZT04-LINEN.
          IF WA-SHKZG = 'H'.
            ITAB-DMBT1 = 0 - WA-DMBTR.
          ELSE.
            ITAB-DMBT1 = WA-DMBTR.
          ENDIF.
          COLLECT ITAB.
          CLEAR ITAB.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDLOOP.
现金流量表中的39行为总账余额,  作为特殊处理
取值科目排除以下三个科目范围:RACCT(6) NE '101205' AND RACCT(6) NE '101206' AND RACCT(6) NE '101207'

 

  • 18
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小啊曼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值