SAP 详细解析MIRO校验过程

一、介绍
发票校验是物料管理(MM)系统的一部分。它提供物料管理部分和财务会计, 成本控制和资产管理部分的连接。
物料管理模块的发票校验为以下目的服务:
它完成物料采购的全过程 - 物料采购从采购申请开始,接下来是采购和收货, 并以收到发票而结束。
它允许处理不基于物料采购的发票(例如,服务费, 其它花费,过程费用, 等等)。
它允许处理贷项凭证, 既可以是发票的取消, 也可以是打折扣. 
发票校验不是对支付进行处理, 也不是对发票进行分析. 这些需要处理的信息被传递到其它部门. 
发票校验的任务包括:
输入接受到的发票和贷项凭证. 
检查发票的内容, 价格和计算的准确性.
执行一个发票的帐目记帐
更新SAP系统内的一些数据, 例如, 未结算项目和物料价格.
检查那些因为与采购订单出入太大而被冻结的发票.
SAP系统的高度集成允许这些任务能够平稳和高效地进行.
发票校验过程:
每个发票包含不同的信息项。记帐一个发票,你必须将这些信息送入计算机。如果一个发票反映一个现存的事务,一些信息已经保存在系统中。系统建议 这些信息为省缺的数据,你只需要对它进行比较,并且在需要时进行任何可能的修改。
如果发票以一个采购订单为依据,你只需要输入该采购订单号。系统选择 正确的事务并且从采购订单中提取数据,包括供应商,物料,订购的数量, 供货条款,付款条款。当然,如果有变化时,你可以修改这些省缺数据。你可以显示采购订单的历史,例如,有多少货物已经到货,以及有多少已经开出了发票。
如果在采购订单或收货和发票中有变化,系统将在屏幕上发出一个警告。 如果变化在预先设定的允许范围内,系统将允许该发票被记帐,但将自动地 冻结它被支付。发票必须在一个分开的步骤中被批准。如果变化不在允许的范围内,系统将不允许该发票被记帐。
发票被输入时,系统将找到相应的帐户科目。系统将自动生成销售税,现金折扣清算和价格差异,这些记帐的记录被显示出来。如果存在余额,用户要进行修正,因为只有余额为零时发票才能被记帐。
只要发票被记帐,一些数据在系统内被更新,如订购的物料的平均价格和采购 订单的历史。
发票记帐完成了发票校验。发票中需要被支付的数据现在包含在系统中。 会计部门可以读入这些数据并在财务会计部门的协助下做出合适的支付。
发票校验种类:
做为一个规则,一张发票表示一个事务,事务的发货方要求被付款。发票校验根据所涉及发票的种类而不同:
基于采购订单的发票
基于采购订单的发票校验,一个订单的所有项目可以被一起处理,而不管一个项目在若干次部分收货中是否被收到。所有的收货被汇总并被做 为一个项目进行记帐。 
基于收货的发票
在基于收货的发票校验方式中,发票不是关联于采购定单,而是关联于分别的交货活动。这就是说,发票的参考凭证不是采购定单 PO,而是交货通知或者收料单凭证。无论你是否使用这个方式安排你与供应商的结算。这个方法可能是有利的,例如,当你知道定单将分许多批交货完成时。
在基于收货的发票校验中,你应该注意以下问题:
一个货物接收活动必须在发票已经输入系统之前。
发票输入的方式可能是参考一个交货通知或一个货物接收凭证。
前提条件
有关的 PO 项目必须有基于收货的发票校验标志。
操作
转向采购定单项目详细屏幕。
选择字段  GR-IV。
保存采购定单。
你可以在任何时候显示货物接受和发票的关系。你将在采购定单项目的历史中找到这些信息。 
没有订单的发票
如果没有采购订单做参考,可以直接将事务记入一个物料帐户,一个总帐帐户,或一个资产帐户

二、后台配置:
1.容差配置:T-CODE:OMR6   容差是基于公司代码的配置,因为发票是根据公司代码开具.配置上/下限"检查限制",或设置%.一般企业要配置四种容差,BD(自动形成小的差异),DQ(超出金额: 数量偏差),PP(价格变化),VP(移动平均价格差异).
2.配置供商容差:PATH:物料管理->后期发票校验->收到的账单->配置指定供应商容差,在发票校验中,供应商特定的参数的设置。在一个公司代码中,只可以将一个容差组分配到一个供应商。在供商主数据(XK02)中有一个容差组
3.  配置发票校验条件:PATH:物料管理->后期发票校验->信息确认->维护条件->修改-发票校验
4.  配置凭证类型:    PATH:物料管理->后期发票校验->收到的账单->号码分配->维护科目凭证的编号范围->凭证类型
5.  配置默认税代码: PATH:物料管理->后期发票校验->收到的账单->维护税代码的缺省值 (根据公司代码设置)
开票前准备:
         1.做采购订单时在项目明细"发票"页上"基于收货的IV"字段设置为"X". 这个很重要,我在做发票校验时就发现这个错误,经查询就是这个没勾.

三、发票校验操作TCode:
1.有差异的发票校验
    差异分为数量差异,价格差异,计划差异,采购订单价格数量差异,质量检查
数量差异:发票数量大于已交货数量和已开发票数量的差异
价格差异:发票金额/发票数量<>净订单价格
计划差异:PO Delivery Schedule 的收货日期与实际收货日期的差异.  猜的
采购订单价格数量差异:收货数量/价格与采购订单的数量价格之间的差异.
质量管理:如果商品激活了质量管理,则在过账时过到检查库存.
   基于收货的发票校验:
   T-Code:MIRO  后勤  ->零售->采购->后勤发票校验->凭证输入->输入发票
   输入公司代码,然后选择凭证类型(贷项凭证/发票),结算总金额为负则为贷项凭证,为正则发票,当发票即含有进也含有退时在输入采购订单号右边的Button,单击进入后,把退货选成贷向,进货选成借向,否则无法做发票校验,SAP系统外创建发票时,比如调BAPI "BAPI_INCOMINGINVOICE_CREATE" ,这时可不指定退和进的凭证方向,SAP会自动记入.
   有差异的发票如果想过账,按公司规定,可以计入差异科目或者设置容差范围,计差异科目选择发票"总账科目"页,输入差异科目,注意借贷方,差异的借贷方与正常发票里的借贷相反,比如说贷向凭证,差异科目记入借方.
    一般刚做完的发票付款要设置为冻结,付款方式也要设置(账扣),基线日期(财务启始处理付款日期).
   T-Code:MIR4 后勤->零售->采购->后勤发票校验 ->进一步处理->显示发票凭证
2.无差异的发票校验
      过程是一样,只是数量和金额无差异.
3. 预置发票
       T-Code:MIR7 后勤->零售->采购->后勤发票校验->凭证输入->输入发票->预制发票
      SAP可以做预置发票,相当于发票请求单,请求单是可以进行多次修改的,保存后不自动过账.做完预置发票后执行MIRO,选择预置发票.
4.后台发票校验
       T-Code:MIRA 后勤->零售->采购->后勤发票校验->凭证输入->输入后台校验的发票
       后台发票校验是在后台进行发票的检查,如果在容差范围之内,将在后台直接过账.
5.后台检查发票的正确性
       T-Code:WC23  

******************************************************

1)关于计算交货单的可能的输入到发票校验(MIRO)可以参见RM08RL82
计算的说明:
1)读取适合条件的EKKO
SELECT  * FROM  "EKKO"
WHERE
  "MANDT" = '800' AND "BSTYP" IN ('L' , 'F') AND "EBELN" = ''4500000005' AND "BUKRS" = '1002'
  AND "LIFRE" = '0011000843' AND "FRGRL" = ''  AND "LOEKZ" = ' '  AND ( "MEMORY" =' '  OR "MEMORY" IS NULL )
2)根据读取出的EKKO读取EKPO和EKBE
SELECT  * FROM  EKPO WHERE "MANDT" = '800' AND "EBELN" = '4500000005' AND "REPOS" = 'X' AND "LOEKZ" = ' '
SELECT * FROM EKBE WHERE "MANDT" = '800' AND "EBELN" = '4500000005' AND ( "VGABE" = '1' OR "VGABE" = '2' )
3)循环读取EKKO的内表,来计算EKBE的交货和发货的的数量和金额,来生成需要开票的金额。


2)MIRO的操作保存时用到的函数
CALL FUNCTION 'CKMV_AC_DOCUMENT_POST'
CALL FUNCTION 'POST_DOCUMENT' IN UPDATE TASK
CALL FUNCTION 'G_FI_POSTING' IN UPDATE TASK
CALL FUNCTION 'G_LC_POSTING' IN UPDATE TASK
CALL FUNCTION 'AC_DOCUMENT_MM_UPDATE' IN UPDATE TASK
call function 'MCE_STATISTICS_UPD_V2' in update task
CALL FUNCTION 'ME_UPDATE_INVOICE' IN UPDATE TASK
CALL FUNCTION 'MRM_INVOICE_DOCUMENT_POST' IN UPDATE TASK

CALL FUNCTION 'SD_SCD_IV_SELCRITERIA_SAVE_DB' IN UPDATE TASK

CALL FUNCTION 'SWE_EVENT_CREATE_FOR_UPD_TASK' IN UPDATE TASK

3)MIRO的操作保存时用到的数据表
新增 CKMI1
新增 BKPF

新增 EKBE
INSERT VALUES( '800' , '4500000005' , 00030 , 00 , '2' , 2007 , '5105614013' , 0006 , 'Q' , ' ' , 20071022 , 1 , 1 , 36 , 36 , 'RMB'
注意此处的2表示采购发票的处理,1表示采购订单收货的处理,这会在计算交货单的可能的输入到发票校验用到。
新增RBKP
INSERT VALUES( '800' , '5105614013' , 2007 , 'RE' , 20071022 , 20071022 , 'SDSUPPORT01' , 'MIRO' , 20080222 , 191406 , 'RD' , ' ' , '
新增RESG
INSERT VALUES( '800' , '5105614013' , 2007 , 000006 , '4500000005' , 00030 , 00 , '00049251' , '1101' , ' ' , '1002' , '1101' , 36
新增 BSIK

新增 BSIS

新增带有用于IDES功能范围的实际行项目表 GLFUNCA

新增在AWKEY 上查找FI-SL基础凭证的索引 GLIDXA

新增SAP 合并: 日记帐分录标 (实际) ECMCA

更新供应商主数据 (业务额) LFC1 
UPDATE SET "UM10S" = "UM10S" + 0 , "UM10H" = "UM10H" + 29062.8 , "UM10U" = "UM10U" + -29062.8 WHERE "MANDT" = '800' AND "LIFNR" = '0011000843' AND "BUKR = '1002' AND "GJAHR" = 2008
UPDATE SET "UMSAV" = "UMSAV" + -29062.8 WHERE "MANDT" = '800' AND "LIFNR" = '0011000843' AND "BUKRS" = '1002' AND "GJAHR" = 2008
更新有IDES功能范围的总计表_ GLFUNCT

更新 SAP 合并: 总计表 ECMCT

更新总帐科目主记录业务额 GLT0

你可能感兴趣的:(MM模块,数据库,大数据,java,人工智能,开发语言)