从会计凭证中取日余额-日报

FUNCTION zfi_hkont_get_day_glt0_i.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(BUKRS) LIKE  GLT0-BUKRS DEFAULT 'S001'
*"     VALUE(DATUM) LIKE  SY-DATUM DEFAULT SY-DATUM
*"     VALUE(HKONT_RANGE) TYPE  ZHKON_HKONT_RANGE_TAB
*"  EXPORTING
*"     VALUE(RET_CODE) LIKE  SY-SUBRC
*"     VALUE(RESULT_TAB) TYPE  ZHKON_GLT0_I_FIELDS_TAB
*"----------------------------------------------------------------------
  DATA:   V_hkont LIKE bsis-hkont,  "科目
          V_waers LIKE bsis-waers,  "币别
          V_xnegp like bsis-xnegp,  "反记帐
          V_shkzg like bsis-xnegp,  "借贷方
          V_dmbtr LIKE bsis-dmbtr.    "本月借方
  DATA:  BEGIN OF glto_curr_month,   "当月数据结果
           racct LIKE glt0-racct,  "科目
           rtcur LIKE glt0-rtcur,  "币别
           hsl_s LIKE glt0-hslvt, "本月借方
           hsl_h LIKE glt0-hslvt, "本月贷方
         END OF glto_curr_month.
  DATA:
    it_curr_month LIKE glto_curr_month OCCURS 0 WITH HEADER LINE,
    tmp_curr_tab TYPE  zhkon_glt0_i_fields_tab WITH HEADER LINE,
    tmp_hkont_tab TYPE  zhkon_glt0_i_fields_tab WITH HEADER LINE.


  ret_code = 1.

  DATA:
     vs_gjahr LIKE bkpf-gjahr,  "会计年度
     vs_monat LIKE bkpf-monat,  "会计期间
     vd_budat_beg LIKE bkpf-budat.

  vs_gjahr = datum+0(4).
  vs_monat = datum+4(2).


* 从月度中取数据
CALL FUNCTION 'ZFI_HKONT_GET_MONAT_GLT0_I'
  EXPORTING
   BUKRS              = bukrs
    YEAR               = vs_gjahr
    MONAT              = vs_monat
*   YEAR_BEFORE        = 0
*   MONAT_BEFORE       = 0
    hkont_range        = hkont_range[]
   IMPORTING
     ret_code           = ret_code
     result_tab         = tmp_hkont_tab[].

* 修改当月发生数置 零。
  LOOP AT tmp_hkont_tab WHERE ryear = vs_gjahr
     AND  monat = vs_monat .
    tmp_hkont_tab-hsl_s_lj = tmp_hkont_tab-hsl_s_lj
         - tmp_hkont_tab-hsl_s.
    tmp_hkont_tab-hsl_h_lj = tmp_hkont_tab-hsl_h_lj
         - tmp_hkont_tab-hsl_h.
    tmp_hkont_tab-hsl_s = 0.
    tmp_hkont_tab-hsl_h = 0.
    tmp_hkont_tab-hsl_ye = tmp_hkont_tab-hsl_qc.
    MODIFY tmp_hkont_tab.
  ENDLOOP.


* vs_gjahr = DATUM+0(4).
* vs_monat = DATUM+4(2).
  CONCATENATE datum+0(6) '01' INTO  vd_budat_beg.

*  SELECT b~hkont A~waers b~xnegp b~shkzg sum( b~dmbtr )
*   INTO (V_hkont,v_waers,v_xnegp,v_shkzg, V_dmbtr )
*    FROM bkpf AS A INNER JOIN bsis  AS b
*     ON  A~bukrs = B~bukrs
*      AND A~belnr = B~belnr
*      AND A~gjahr = B~gjahr
*    WHERE A~gjahr = vs_gjahr
*      AND A~monat = vs_monat
*      AND A~bukrs = bukrs
*      AND A~budat >= vd_budat_beg
*      AND A~budat <= datum
*      AND b~hkont IN  hkont_range   "科目范围
*    group by b~hkont A~waers b~xnegp b~shkzg.
*
    SELECT hkont waers xnegp shkzg sum( dmbtr )
   INTO (V_hkont,v_waers,v_xnegp,v_shkzg, V_dmbtr )
    FROM bsis
    WHERE gjahr = vs_gjahr
      AND monat = vs_monat
      AND bukrs = bukrs
      AND budat >= vd_budat_beg
      AND budat <= datum
      AND hkont IN  hkont_range   "科目范围
    group by hkont waers xnegp shkzg.

      it_curr_month-racct = V_hkont.
      it_curr_month-rtcur = 'RMB'.  "处理本位币

      IF V_xnegp = 'X' .
        IF V_shkzg = 'S' .
          it_curr_month-hsl_h = - V_dmbtr.
        ELSE.
          it_curr_month-hsl_s = - V_dmbtr.
        ENDIF.
      ELSE.
        IF V_shkzg = 'S' .
          it_curr_month-hsl_s = V_dmbtr.
        ELSE.
          it_curr_month-hsl_h = V_dmbtr.
        ENDIF.
      ENDIF.
      APPEND it_curr_month.
      CLEAR it_curr_month.
  ENDSELECT.

*  SELECT b~hkont A~waers b~xnegp b~shkzg sum( b~dmbtr )
*   INTO (V_hkont,v_waers,v_xnegp,v_shkzg, V_dmbtr )
*    FROM bkpf AS A INNER JOIN bsas  AS b
*     ON  A~bukrs = B~bukrs
*      AND A~belnr = B~belnr
*      AND A~gjahr = B~gjahr
*    WHERE A~gjahr = vs_gjahr
*      AND A~monat = vs_monat
*      AND A~bukrs = bukrs
*      AND A~budat >= vd_budat_beg
*      AND A~budat <= datum
*      AND b~hkont IN  hkont_range   "科目范围
*    group by b~hkont A~waers b~xnegp b~shkzg.
   SELECT hkont waers xnegp shkzg sum( dmbtr )
   INTO (V_hkont,v_waers,v_xnegp,v_shkzg, V_dmbtr )
    FROM bsas
    WHERE gjahr = vs_gjahr
      AND monat = vs_monat
      AND bukrs = bukrs
      AND budat >= vd_budat_beg
      AND budat <= datum
      AND hkont IN  hkont_range   "科目范围
    group by hkont waers xnegp shkzg.

      it_curr_month-racct = V_hkont.
      it_curr_month-rtcur = 'RMB'.  "处理本位币
      IF V_xnegp = 'X' .
        IF V_shkzg = 'S' .
          it_curr_month-hsl_h = - V_dmbtr.
        ELSE.
          it_curr_month-hsl_s = - V_dmbtr.
        ENDIF.
      ELSE.
        IF V_shkzg = 'S' .
          it_curr_month-hsl_s = V_dmbtr.
        ELSE.
          it_curr_month-hsl_h = V_dmbtr.
        ENDIF.
      ENDIF.
      APPEND it_curr_month.
      CLEAR it_curr_month.
  ENDSELECT.

* 将明细数据加入汇总数。
  CLEAR : tmp_curr_tab, tmp_curr_tab[].
  SORT it_curr_month  BY racct rtcur.
  LOOP AT it_curr_month .
    AT END OF rtcur .
      SUM.
*      clear tmp_HKONT_TAB.
      tmp_curr_tab-ryear = datum+0(4).
      tmp_curr_tab-monat = datum+4(2).
      tmp_curr_tab-racct = it_curr_month-racct.
      tmp_curr_tab-rtcur = it_curr_month-rtcur.
      tmp_curr_tab-hsl_s = it_curr_month-hsl_s.
      tmp_curr_tab-hsl_h = it_curr_month-hsl_h.
      tmp_curr_tab-hsl_s_lj = it_curr_month-hsl_s.
      tmp_curr_tab-hsl_h_lj = it_curr_month-hsl_h.
      tmp_curr_tab-hsl_ye = it_curr_month-hsl_s - it_curr_month-hsl_h.
      APPEND tmp_curr_tab.
      CLEAR tmp_curr_tab.
    ENDAT.
  ENDLOOP.
*  clear: result_tab,result_tab[].
  result_tab[] = tmp_hkont_tab[].

  CALL FUNCTION 'ZFI_HKONT_UNION_GLT0_I'
       EXPORTING
            hkont_tab  = tmp_curr_tab[]
       IMPORTING
            ret_code   = ret_code
       CHANGING
            result_tab = result_tab[].


ENDFUNCTION.


++++==============================
将两个会计科目接口信息集进行汇总

++++==============================


FUNCTION ZFI_HKONT_UNION_GLT0_I.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(HKONT_TAB) TYPE  ZHKON_GLT0_I_FIELDS_TAB
*"  EXPORTING
*"     VALUE(RET_CODE) LIKE  SY-SUBRC
*"  CHANGING
*"     REFERENCE(RESULT_TAB) TYPE  ZHKON_GLT0_I_FIELDS_TAB
*"----------------------------------------------------------------------

  DATA:
    tmp_RESULT_TAB TYPE ZHKON_GLT0_I_FIELDS_TAB with header line,
    tmp_RESULT_LINE TYPE ZHKON_GLT0_I_FIELDS_LINE.


  RET_CODE = 1.


  APPEND LINES OF RESULT_TAB  TO tmp_RESULT_TAB.
  APPEND LINES OF HKONT_TAB  TO tmp_RESULT_TAB.
  sort tmp_RESULT_TAB by  ryear monat racct rtcur.
  clear : RESULT_TAB,RESULT_TAB[].
  loop at tmp_RESULT_TAB.
    at end of rtcur.
       sum.
       MOVE-CORRESPONDING tmp_RESULT_TAB TO tmp_RESULT_LINE.
       APPEND tmp_RESULT_LINE to RESULT_TAB .
    endat.
  endloop.
  RET_CODE = 0.

ENDFUNCTION.


++++==============================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值