SAP从“单据→过账逻辑→金额来源→可以干预的点”完整拆开,让你一次看明白。整个过程可以分成4层:
单据层:发货单(Delivery)是怎么来的
销售订单行项目类别(Item Category)里有一个字段“交货相关”(Schedule line allowed)=X,才会生成交货单。
交货单的行项目类别(Delivery Item Category)里有一个字段“确定采购/库存数据”(Determine MRP/Inventory relevance)=空,代表要走“自有库存”发货,而不是第三方采购或外包。
→ 只有满足这两个前提,系统才会在VL01N/VL02N过账发货时去“扣库存”并产生会计凭证。
2 库存移动类型层:移动类型决定了科目
发货过账时,系统真正执行的是一条MM-IM物料凭证,移动类型默认601(对外销售发货)。
601在OMJJ/OMCJ里配了两组科目字段:
TE Key(Transaction Event)= GBB + VBR
Account Modification = VBR
GBB+VBR就是“销售发货消耗科目”的开关。
系统拿到这两个关键字以后,就去OBYC表里找“GBB/VBR/评估类”这一条记录,读取到的科目就是库存商品科目的贷方;
同时系统还会去OBYC里找“BSX/评估类”,读到的是库存商品科目的借方(发货时库存减少,所以是贷)。
→ 因此:
Dr 主营业务成本 ← 由GBB/VBR决定
Cr 库存商品 ← 由BSX决定
这就是你看到的那笔标准分录的来源。
3 金额层:成本到底拿什么价
SAP只认“物料主数据-会计1视图”里的价格控制:
V=移动平均价(MAP)
S=标准价
发货时系统读取当时有效的MAP或标准价,乘以发货数量,得到“销售成本”。
如果启用了分割评估、批次、物料分类账(ML),则按评估类型/批次/实际成本组件取值。
注意:如果物料价格控制=V,但你上次采购发票还没录,MAP=0,那么发货成本就是0——这是最常见的“成本不对”原因。
如果启用了物料分类账(CKMLCP),月末运行实际成本后,系统会再补一笔“差异分摊”凭证,把销售成本调整到实际成本(COGS调整)。
4 可干预点:想改科目或改金额怎么办
A. 改科目
只想换一下“主营业务成本”科目:
在OBYC里把GBB/VBR/评估类对应的那条记录改成你要的科目即可。想按产品线拆成多个成本科目:
新建不同的评估类(如7920、7921…);
把不同产品线的物料主数据-会计2视图里的评估类改成对应值;
在OBYC里给每个评估类配不同的GBB/VBR科目。
不想用601,想自己定义移动类型:
复制601→Z01,然后在OMJJ里把Z01的TE key改成GBB+VBR,再配科目即可。
B. 改金额
发货当时:只能改库存价(MR21),或者先录入采购发票把MAP刷新正确,再做发货。
月末:运行物料分类账(CKMLCP),系统会自动生成COGS调整凭证,把销售成本补到实际成本。
极端情况:用MR22手工重估库存,再重新发货。
5 快速自查清单
看物料凭证:MB03,检查移动类型是不是601。
看会计凭证:FB03,双击行项目,看科目对应的“交易码”(TE key)是不是GBB+VBR。
看OBYC:GBB/VBR/评估类 → 主营业务成本科目;BSX/评估类 → 库存商品科目。
看物料主数据:会计1视图-价格控制、价格;会计2视图-评估类。
看MAP有没有0:MB5L或CKM3。
把这5步跑完,99%的“成本分录不对”都能定位到根因。
一句话总结
发货过账时,SAP用移动类型601→TE key(GBB+VBR)+评估类去OBYC找科目,用物料主数据里的MAP/标准价乘数量得出金额;
只要OBYC配错、MAP不对、评估类混用,就会出现“科目不对”或“金额不对”。
把OMJJ→OBYC→物料主数据→物料分类账这条线理顺,就能完全掌控销售成本分录。