这是一个非常经典且重要的SAP MM(物料管理)与FIM(财务会计)集成问题。下面我将为您详细分析SAP采购验收(通常指收货)所涉及的库存表、会计凭证生成逻辑以及表间关联。
核心摘要
库存现有量:主要存储在
MARD(库存数量) 和MBEW(库存价值) 表中。物料数量与金额:
数量:实时存储在
MARD表。金额:实时存储在
MBEW表。
会计凭证生成:基于物料类型配置的自动记账规则,在收货时系统自动生成“原材料/库存商品”科目借方和“GR/IR”科目贷方的会计凭证。
表间关联:通过关键字段如
MATNR(物料号)、WERKS(工厂)、LGORT(库存地点) 等,并经由MKPF/MSEG(物料凭证) 和BKPF/BSEG(会计凭证) 进行关联。
详细分析
1. 库存现有量存放在哪个表?
库存现有量是一个综合概念,分为数量和价值,它们存储在不同的表中。
| 表名 | 表描述 | 关键字段 | 存储的信息 |
|---|---|---|---|
MARD | 物料仓储位置数据 | MATNR(物料号)WERKS(工厂)LGORT(库存地点) | 库存数量: - LABST(非限制使用库存)- UMLMC(在途库存)- INSME(质检库存)- SPEME(冻结库存) |
MBEW | 物料评估(价值)数据 | MATNR(物料号)BWKEY(评估范围,通常=工厂) | 库存价值: - STPRS(标准价格)- VERPR(移动平均价)- LBKUM(当前库存数量 - 按评估范围)- SALK3(总库存价值)- VPRSV(价格控制指示符 - S标准价 / V移动平均价) |
关键点:
MARD是按库存地点级别存储数量的,所以查询具体地点的库存必须使用此表。MBEW是按评估范围级别存储价值和数量的,它不区分库存地点。LBKUM是整个工厂的数量总计。我们通常说的“库存现有量”是
MARD-LABST(非限制使用库存)。
2. 物料数量以及金额在哪个表?
如上所述:
数量:主要在
MARD表。金额:主要在
MBEW表。
但是,MARD表只有数量,没有金额。要计算某个物料的库存金额,通常的逻辑是:
对于标准价(S)物料:
库存金额 = MARD-LABST * MBEW-STPRS对于移动平均价(V)物料:
库存金额 = MBEW-SALK3(这个值本身就是以移动平均价计算的总价值)
3. 采购收货如何产生会计凭证?
这是SAP MM-FI集成的核心体现。其过程完全是自动的,由系统后台配置驱动。
a. 核心配置 - 自动记账(T-CODE: OBYC)
在后台配置(SPRO)中,路径为:物料管理 -> 评估和科目分配 -> 科目确定 -> 无向导的科目确定 -> 配置自动记帐。这里定义了不同交易码(Transaction Key)对应的总账科目。
与采购收货最相关的交易码是:
GBB:库存过帐 offsetWRX:GR/IR 清算
b. 收货时的过账逻辑
假设公司采购一个原材料(物料类型为ROH),采用标准价格体系。
用户操作:用户在MIGO中参照采购订单执行收货,输入数量(比如10个)。
系统动作 - 物料账:
系统根据采购订单中的价格(或物料主数据中的标准价)计算收货价值。
系统产生物料凭证,记录数量的移动。表
MSEG和MKPF被更新。同时,
MARD-LABST增加10,MBEW-LBKUM和MBEW-SALK3也相应更新。
系统动作 - 总账账:
系统根据
OBYC中的配置,自动生成会计凭证:借方科目:查找
GBB->BSX(库存物料收货)。这通常对应“原材料”或“库存商品”科目。贷方科目:查找
WRX。这对应“GR/IR”( Goods Receipt / Invoice Receipt,收货/收票清算)科目,这是一个清项管理的科目。
生成的会计凭证示例:
| 科目 | 科目描述 | 借方金额 | 贷方金额 |
|---|---|---|---|
| 14010101 | 原材料 - 主要材料 | 1,000.00 | |
| 22010101 | GR/IR 科目 | 1,000.00 |
会计分录:借:原材料 1,000.00贷:GR/IR 1,000.00
c. 后续发票校验(MIRO)
当收到供应商发票时:
如果发票金额也是1,000,则MIRO过账:
借:GR/IR 1,000.00贷:应付账款 1,000.00
这样,
GR/IR科目就被清平了。如果发票价格与收货时的暂估价格有差异,系统会根据物料的价格控制方式(S或V)进行处理,可能产生价格差异(计入
OBYC中的PRD科目)。
4. 如何和库存的表关联?
整个采购收货的业务流,通过一系列关键字段将库存表、物料凭证、会计凭证串联起来。
关联链条:MARD/MBEW<-MSEG<-BSEG
假设我们要追溯一笔收货业务的所有数据:
起点:库存表 (
MARD/MBEW)你在
MARD中看到物料 M-100 在工厂 1000、库存地点 0001 有 100个库存。你想知道这100个是什么时候、通过哪张单子收进来的。
关联到物料凭证 (
MSEG/MKPF)通过
MARD-MATNR,MARD-WERKS,MARD-LGORT去查询MSEG表。MSEG表的关键字段:MATNR(物料号)WERKS(工厂)LGORT(库存地点)BWART(移动类型) -101代表采购订单收货MBLNR(物料凭证编号)ZEILE(物料凭证行项目)DMBTR(以本位币计的金额)SHKZG(借贷标识) - 'H' 贷, 'S' 借BELNR(会计凭证编号)<- 这是关联到财务凭证的关键!
你可以找到一条
BWART = 101的记录,其数量为100,这就是库存增加的来源单据行。
关联到会计凭证 (
BSEG/BKPF)从
MSEG-BELNR(会计凭证编号) 和MSEG-GJAHR(会计年度) 可以直接关联到BSEG和BKPF。BSEG表的关键字段:BELNR(会计凭证编号)GJAHR(会计年度)BUZEI(行项目号)BSCHL(记账码)HKONT(总账科目) - 这里可以看到具体的“原材料”和“GR/IR”科目DMBTR(本位币金额)SHKZG(借贷标识)
通过此关联,你就能看到收货时生成的财务会计分录详情。
总结关联路径:MARD/MBEW(库存现状)<--(通过MATNR,WERKS,LGORT)--<MSEG(库存移动历史)<--(通过BELNR,GJAHR)--<BSEG(财务过账明细)<--(通过BELNR,GJAHR)--<BKPF(财务凭证抬头)
实际查询示例
如果你想查询某物料最近一次的收货情况,可以执行类似下面的SQL逻辑(概念性SQL):
sql
-- 1. 查看当前库存 SELECT matnr, werks, lgort, labst FROM mard WHERE matnr = 'M-100' AND werks = '1000'; -- 2. 找到对应的物料凭证 SELECT mblnr, mjahr, zeile, bwart, menge, belnr, gjahr FROM mseg WHERE matnr = 'M-100' AND werks = '1000' AND lgort = '0001' AND bwart = '101' -- 采购收货 ORDER BY cpudt DESC; -- 按过账日期倒序 -- 3. 使用上一步找到的 belnr 和 gjahr 查询会计凭证 SELECT belnr, gjahr, buzei, bschl, hkont, dmbtr, shkzg FROM bseg WHERE belnr = '会计凭证号来自MSEG' AND gjahr = '会计年度来自MSEG';
通过以上分析,您应该对SAP采购验收所涉及的库存、财务表以及它们之间的集成逻辑有了一个全面而深入的理解。