存货对账:业务系统上期期末不等于本期期初的排查思路总结

  • 1 对账原理分析

  • 1.1 存货对账是以存货业务数据和凭证数据做汇总来对账,大部分根据存货类别按科目对账

  • 1.2 总账方面是按照科目取对应凭证做汇总

  • 1.3 业务系统则以 成本费用项目 的数据做汇总;这是因为成本相关的业务单据,对应的预置凭证模板,金额字段取值主要为【总成本(费用明细)】字段


  • 2 存货对账业务系统上期期末不等于本期期初,首先看上期是否已经对平

  • 2.1 如果上期总账和业务系统已经不平,那么就按照存货对账的一般流程去检查,参照帖子如下

    • 2.1.1 存货对账异常排查方法:https://vip.kingdee.com/school/717

    • 2.1.2 存货对账差异检查步骤:https://vip.kingdee.com/article/12014


  • 3 如果上期已经对平,出现存货对账业务系统上期期末不等于本期期初的现象,则需检查业务数据是否有问题,以下是本文重点讲述的内容

  • 3.1 首先对比对账界面取数与存货收发汇总表的取数是否一致(此处注意要保证筛选条件一致,特别注意存货对账方案中的过滤条件出现的两个参数【不统计核算组织内调拨单据】以及【不统计库存调整单据】的勾选与否也要保持一致)(如图1)

    3.1 对账方案参数勾选.png




  • 3.2 如果对账界面取数与存货收发汇总表的取数不一致

    • 3.2.1 如果差异没有明显规律,有可能是存货的数据汇总和明细不等,因为对账的数据是取得费用项目的数据,此时则可以考虑走数据修复处理,参考脚本如附1

    • 3.2.2 如果对账界面的业务系统取数恰好翻倍,而存货收发汇总表数据正常(如图2),问题规律为出现问题的核算组织下有多个下级组织,下级组织数恰为翻倍的倍数;属历史版本的程序问题,19年8月份补丁已做修复,打最新补丁即可

    image.png


  • 3.3 如果对账界面取数与存货收发汇总表的取数一致

    • 3.3.1 如果本期总账与业务系统差异较大,常见于调拨单据跨期,而调拨单据不生成凭证,此时需要启用存货系统【启用分步式调出未调入】功能(见图3、4)才有可能对账平衡;

    启用路径.png

    启用效果.png


        对于【启用分步式调出未调入】功能,如果启用仍对账不平,补充说明以下两点

      • 3.3.1.1 优先检查版本,如果是19年3月份补丁及以前的,建议先升级,然后再走流程3.3.1.2

      • 3.3.1.2 如果是3月份补丁以后的,可以 重新启用【分步式调出未调入】功能(这里指的重新启用,注意两点:1 所有已启用过的组织都要重新启用 2 重新启用指的是反启用,再启用)


    • 3.3.2 如果本期总账与业务系统差异较小,则需要考虑【异价调拨】的情形(系统中所有的调拨业务,包括直接调拨单、分布式调入调出单,都为平价调拨,即调入成本应等于调出成本),异价调拨常见于手工维护的成本不一致,此时则需要找出具体差异物料,分析该类业务的调入与调出成本的不一致情形:

      • 3.3.2.1 可通过用EXCEL导出存货收发存汇总数据,VLOOKUP对比具体的物料差异;

      • 3.3.2.2 找出具体物料后,再通过【核算单据查询】限定物料,用EXCEL导出并按 数量及金额 排序,分析调拨业务的调入与调出成本作对比

      • 3.3.2.3 当查询出具体差异后,可通过反结账删除凭证重算或本期手工新增成本调整单调整处理



  • 附1:修复费用表为空的记录,备份后可直接执行

SELECT * INTO T_HS_INIVBALANCEEXP_BAK190922 FROM T_HS_INIVBALANCEEXP

SELECT * INTO T_HS_INIVBALANCEEXP_H_BAK190922 FROM T_HS_INIVBALANCEEXP_H


--1 修复EXP表为空的记录

DECLARE @detailid INT; 

SELECT  @detailid = ISNULL(MAX(FDETAILID), 0)

FROM    V_HS_INIVBALANCEEXP

WHERE   FDETAILID < 100000; 

BEGIN 

    INSERT  INTO T_HS_INIVBALANCEEXP

            ( FENTRYID

            , FDETAILID

            , FEXPENSESITEMID

            , FEXPENSESAMOUNT

            , FACCTGID

            , FDIMENSIONID

            , FENDINITKEY

            )

    SELECT  a.FENTRYID

          , @detailid + ROW_NUMBER() OVER ( ORDER BY a.FENTRYID ) FDETAILID

          , 20045

          , a.FAMOUNT

          , a.FID

          , a.FDIMENSIONID

          , a.FENDINITKEY

    FROM    T_HS_INIVBALANCE a

    LEFT JOIN T_HS_INIVBALANCEEXP b ON a.FENTRYID = b.FENTRYID

    WHERE   b.FENTRYID IS NULL; 

END; 


--2 修复EXP历史表为空的记录

DECLARE @detailid_h INT; 

SELECT  @detailid_h = ISNULL(MAX(FDETAILID), 0)

FROM    V_HS_INIVBALANCEEXP

WHERE   FDETAILID < 100000; 

BEGIN 

    INSERT  INTO T_HS_INIVBALANCEEXP_H

            ( FENTRYID

            , FDETAILID

            , FEXPENSESITEMID

            , FEXPENSESAMOUNT

            , FACCTGID

            , FDIMENSIONID

            , FENDINITKEY

            )

    SELECT  a.FENTRYID

          , @detailid_h + ROW_NUMBER() OVER ( ORDER BY a.FENTRYID ) FDETAILID

          , 20045

          , a.FAMOUNT

          , a.FID

          , a.FDIMENSIONID

          , a.FENDINITKEY

    FROM    T_HS_INIVBALANCE_H a

    LEFT JOIN T_HS_INIVBALANCEEXP_H b ON a.FENTRYID = b.FENTRYID

    WHERE   b.FENTRYID IS NULL; 

END; 

所属分类
推荐知识