SAP 顾问群里隔三差五就有人问:MKOL 表是干嘛的?为什么物料库存在 MARD 里看不到,反而在 MKOL 里能找到一条数据?这几个字段又是啥意思?其实理解 MKOL 之前,得先理解一个业务场景:供应商把货放进你的仓库,但货权还在供应商手里,你用了再付款。这种库存就是典型的供应商寄售库存,MKOL 就是记录这种库存的台账。这篇内容我按实际项目里整理的口径,把 MKOL 的字段一个一个拆开讲,也会顺便说说和 MARD、移动类型、报表取数之间的那些容易踩坑的关系,适合刚接手 MM 库存模块的顾问、做寄售结算的财务同事,以及要写库存报表的 ABAP 开发。
1. 先理解 MKOL 在寄售库存里的定位
1.1 供应商寄售业务如何运转
寄售库存最简单的说法就是:货在你们仓库,但不是你们的资产。供应商备货到你的库位,你自己管理数量,等真正领用消耗那一刻,才触发采购结算、才生成应付账款。这么做的好处是你的资金占用低,用多少算多少,供应商也多了一个稳定出货渠道。
从 SAP 库存管理的角度看,这类库存不能和普通自有库存混在一起记。因为如果直接记到 MARD 的非限制库存里,系统会认为这批货已经是企业资产,盘点、 FI 过账、MRP 计算都会按自有库存处理,逻辑就错了。所以 SAP 把寄售库存做成一种特殊库存,用单独的表来记录数量,MKOL 就是其中专门记录“供应商寄售库存”的表。
MKOL 里不是所有特殊库存都放,它主要对应的是供应商寄售这种场景。你去看表里的 SOBKZ 字段,正常情况下都是 K。只要理解了这个大前提,后面看字段就不会乱。
1.2 MKOL 与普通库存表的区别
很多新手最容易犯迷糊的就是:MB52 或者 MB5L 里看到的库存数量,和直接查 MARD 的数量对不上。原因很简单,不同的库存类别对应不同的表:
- 自有普通库存记录在 MARD,这是大家最熟悉的一张库存表。
- 供应商寄售库存记录在 MKOL,明细维度同样是物料、工厂、存储地点。
- 如果启用了批次管理,MCHB 会记录批次的普通库存,而寄售批次库存也往往会体现在 MKOL 的批次维度上。
- 如果是客户寄售、分包库存、销售订单库存等,又有各自对应的特殊库存表和标识。
所以一张 MKOL 背后其实代表了一整套“所有权和管理权分离”的业务设计。表结构不复杂,但字段的业务含义不能光从字面去猜,要始终带着“这是供应商的货,放在我们仓库”的视角去理解。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. MKOL 表核心字段逐个拆解
2.1 主键与维度字段:决定“哪里的库存”
MANDT 是客户端,这个不用多说,任何项目里查询都要先考虑客户端条件。
MATNR 是物料号,对应物料主数据。看 MKOL 之前,建议先确认物料是否启用了批次管理、是否做了分割评估,因为这两个主数据属性直接影响 MKOL 里数据怎么分布。
WERKS 是工厂。库存管理的评估范围通常落在工厂级,寄售库存虽然是供应商的,但库存地点、 MRP 范围还是挂在工厂下面的。所以在做跨工厂的库存报表时,MKOL 要按工厂过滤。
LGORT 是存储地点。寄售库存一般会落到具体库位。如果启用了 WM 仓库管理,库存明细还会进一步到 Storage Bin,但不要指望在 MKOL 里看到货位级信息,MKOL 只到存储地点这一层。实际盘点时如果发现 MKOL 的数量和 WM 库存对不上,往往是因为 WM 层有未过账的差异。
CHARG 是批次。物料启用了批次管理,MKOL 里就会按批次拆分。这里有个常见误区:很多报表用 MKOL 的“物料+工厂+存储地点”去求和,忽略了批次维度的存在,导致同一行物理上有多个批次数据时被重复或漏算。
SOBKZ 是特殊库存标识。在 MKOL 表里正常都是 K,表示供应商寄售。SE16N 查 MKOL 时,我习惯把 SOBKZ 的条件也带上,防止某些项目因为后台配置或者历史数据原因出现异想不到的特殊库存值。
最后一个容易被忽略但实际很关键的问题:MKOL 这张表没有供应商号字段。寄售库存明明是属于某个供应商的,为什么表里找不到 VENDOR?开始做
