这是一个非常经典且深入的SAP MM(物料管理)与 FI(财务会计)集成问题。我们来详细拆解和分析整个流程。
总体概览
SAP的采购收货业务是一个核心的集成点,它涉及物料管理(MM)、财务会计(FI)和成本会计(CO)。整个过程不是简单地将数据写入一个表,而是通过一系列相互关联的表和凭证来完成的。
1. 采购收货时,库存放在哪个表?
采购收货主要影响以下两个核心库存表:
| 表名 | 表描述 | 关键字段 | 作用 |
|---|---|---|---|
| MARD | 物料仓储位置数据 | MATNR(物料号),WERKS(工厂),LGORT(库存地点),LABST(非限制使用库存) | 存储物料的数量信息。收货时,LABST字段会增加。这是一个汇总表,按物料、工厂、库存地点汇总库存数量。 |
| MBEW | 物料评估(估价)数据 | MATNR(物料号),BWKEY(评估范围,通常是工厂),VERPR(移动平均价),STPRS(标准价格),LBKUM(当前库存数量),SALK3(库存金额) | 存储物料的金额(价值)信息。收货时,LBKUM(库存数量)和SALK3(库存金额)会增加。这是库存价值的核心表。 |
重要说明:
MARD更侧重于仓储和物流视角的库存数量。
MBEW是财务会计视角的库存价值。SAP系统在计算库存金额时,主要依赖于MBEW表。
2. 物料数量以及金额在哪个表?
如上所述:
数量:主要在MARD表的
LABST字段,以及MBEW表的LBKUM字段。两者应该保持一致。金额:在MBEW表的
SALK3字段。其计算逻辑通常是:SALK3=LBKUM(库存数量) ×物料价格
这里的物料价格取决于物料的价格控制类型(在MBEW的VPRSV字段中定义):
S(标准价格): 使用
STPRS(标准价格)。这是最常用的方式,价格相对稳定。V(移动平均价): 使用
VERPR(移动平均价)。每次收货后,这个价格都会根据收货价值和现有库存价值重新计算。
3. 它是如何产生会计凭证的?
这是SAP自动集成的核心魅力所在。当你执行MIGO进行收货时,系统会自动产生两类凭证:
a) 物料凭证
表:
MKPF(物料凭证抬头),MSEG(物料凭证行项目)作用: 记录物流层面的移动。例如,物料X从“在途”状态变为“在库”状态。
关键字段:
MKPF-MBLNR(物料凭证编号)MKPF-BUDAT(过账日期)MSEG-MATNR(物料号)MSEG-MENGE(数量)MSEG-DMBTR(金额,本币)MSEG-SHKZG(借贷标识,H=贷,S=借)
b) 会计凭证
表:
BKPF(会计凭证抬头),BSEG(会计凭证行项目)作用: 记录财务层面的价值流变化。遵循复式记账法。
过账逻辑(基于标准配置):
借: 库存科目(例如:原材料库存)
来源:物料主数据中设定的评估类,链接到自动记账配置(OBYC中的GBB)
贷:GR/IR(货物收货/发票收据)暂估科目
来源:自动记账配置(OBYC中的WRX)
示例:
采购订单1000001234,收货10个物料A,单价10元,总计100元。
系统自动生成的分录为:
借: 原材料库存 100元
贷: GR/IR 暂估科目 100元
为什么是GR/IR?因为此时你收到了货物,但尚未收到供应商的发票。GR/IR是一个临时性科目,用于在收货和收票之间进行过渡。
后续: 当你收到发票并执行MIRO时,系统会清算GR/IR科目:
借: GR/IR 暂估科目 100元
贷: 应付账款 100元
4. 如何和库存的表关联?
这是最关键的部分,所有上述的表通过一个核心字段关联在一起:物料凭证编号(Material Document Number)。
当你执行MIGO收货后,系统会生成一个唯一的物料凭证号(如:5000000001)和一个唯一的会计凭证号(如:1000000001)。整个数据流的关联关系如下图所示:
sql
-- 核心关联查询示例:通过一次收货的物料凭证号,追溯所有相关信息 SELECT -- 物料凭证信息 (物流) mkpf.mblnr AS "物料凭证", mkpf.budat AS "过账日期", mseg.matnr AS "物料号", mseg.menge AS "数量", mseg.dmbtr AS "金额", mseg.bwart AS "移动类型", -- 例如 101 代表标准采购收货 -- 库存数量信息 mard.labst AS "当前库存", -- 库存价值信息 mbew.lbkum AS "库存数量(MBEW)", mbew.salk3 AS "库存金额", mbew.verpr AS "移动平均价", -- 会计凭证信息 (财务) bkpf.belnr AS "会计凭证", bkpf.gjahr AS "会计年度", bseg.hkont AS "会计科目", bseg.shkzg AS "借贷标识", bseg.dmbtr AS "会计凭证金额" FROM mkpf -- 连接物料凭证行项目 INNER JOIN mseg ON mseg.mblnr = mkpf.mblnr AND mseg.mjahr = mkpf.mjahr -- 连接库存数量表 (注意:这里是通过物料主键连接,不是直接通过凭证) LEFT JOIN mard ON mard.matnr = mseg.matnr AND mard.werks = mseg.werks AND mard.lgort = mseg.lgort -- 连接库存价值表 LEFT JOIN mbew ON mbew.matnr = mseg.matnr AND mbew.bwkey = mseg.werks -- 连接会计凭证:关键链接!通过物料凭证的“参考凭证”字段 INNER JOIN bkpf ON bkpf.awkey = mkpf.mblnr AND bkpf.gjahr = mkpf.mjahr -- awkey 存储了物料凭证号 -- 连接会计凭证行项目 INNER JOIN bseg ON bseg.bukrs = bkpf.bukrs AND bseg.belnr = bkpf.belnr AND bseg.gjahr = bkpf.gjahr WHERE mkpf.mblnr = '5000000001'; -- 你的物料凭证号
关联路径总结:
MSEG ←→ MKPF: 通过
MBLNR(物料凭证号)和MJAHR(会计年度)直接关联。MSEG ←→ MARD/MBEW: 通过
MATNR(物料号)、WERKS(工厂)、LGORT(库存地点)等物料主键关联。MSEG记录了当时收货的瞬间状态,而MARD/MBEW反映了当前的最新库存。MKPF ←→ BKPF: 这是物流凭证与财务凭证的桥梁。关键链接在于
BKPF-AWKEY(参考密钥)字段。这个字段存储了物料凭证编号MKPF-MBLNR。BKPF ←→ BSEG: 通过
BUKRS(公司代码)、BELNR(会计凭证编号)、GJAHR(会计年度)关联。
详细流程分析
用户操作: 用户在MIGO中输入采购订单号,执行收货。
系统逻辑:
根据采购订单确定物料、数量、价格。
更新库存表MARD(数量增加)和MBEW(数量和金额增加,如果是移动平均价还会更新
VERPR)。生成物料凭证(MKPF/MSEG),记录“什么物料,在什么时间,移动了多少”。
根据自动记账配置(OBYC),确定借贷科目。
生成会计凭证(BKPF/BSEG),记录“多少价值,从哪个科目来,到哪个科目去”。
将物料凭证号写入会计凭证抬头(BKPF-AWKEY),建立关联。
通过这样的设计,SAP确保了物流(物)和财务(钱)的实时同步和高度透明,任何一笔库存的变动都可以追溯到其对应的财务影响,完全符合会计准则的要求。