MKOL table — MKOL Special Stock at Vendor Table
MKOL holds the valuated stock quantity and value of a material that a plant owns but which is physically located at a vendor, almost always components issued to a subcontractor. It is keyed by material, plant, vendor and special stock indicator, and is updated by movement types tied to subcontracting purchase orders, not by normal storage location postings.
This page covers what a row in MKOL represents, the fields worth trusting, the joins used to trace a balance back to movements and master data, and the specific misreadings that cause investigators to write bad inventory adjustments. It focuses on the recurring confusion between MKOL and its sibling table MSLB, since that mix-up drives most wrong conclusions in subcontracting stock disputes.
Published 15 Sept 2026· 1,030 words
What it stores
One row of MKOL represents the valuated quantity of a material that a plant has physically located at a vendor's site, broken down by material, plant, vendor and stock category (unrestricted, quality inspection, blocked, returns blocked). It exists to track components issued to a subcontractor for further processing, special stock indicator O, and any other stock a plant owns but does not physically hold in one of its own storage locations. Quantities in MKOL move with goods movements against subcontracting purchase orders: components sent out to the vendor, components consumed when the finished or semi-finished product is received, and components returned unused. The table never describes the finished good the subcontractor is producing, only the raw components MM still owns while they sit outside the plant.
Key fields
The fields below are the ones actually used in reconciliation work; anything not listed here should be looked up in the ABAP dictionary rather than assumed.
- MANDT - client
- MATNR - material number of the component physically located at the vendor
- WERKS - plant that owns the stock, not the vendor's own plant
- LIFNR - vendor at whose site the stock physically sits
- SOBKZ - special stock indicator, identifies the category, subcontracting stock is O
- LBKUM - total valuated unrestricted stock quantity in base unit of measure
- SALK3 - value of the total valuated stock
- MEINS - base unit of measure
- INSME - quantity currently in quality inspection stock
- SPEME - quantity currently in blocked stock
- RETME - quantity currently in blocked returns stock
How it joins the data model
MKOL is a leaf table in the material master hierarchy; it does not carry its own header, everything is resolved through material and vendor master data plus the movement history that built the balance.
- MKOL-MATNR = MARA-MATNR
- MKOL-MATNR = MARC-MATNR and MKOL-WERKS = MARC-WERKS
- MKOL-LIFNR = LFA1-LIFNR
- MKOL-MATNR = MSEG-MATNR and MKOL-WERKS = MSEG-WERKS and MKOL-LIFNR = MSEG-LIFNR
- MKOL and MSLB share the same structure but opposite stock categories, O versus M, never treat a MKOL balance and an MSLB balance for the same material as the same pool
How to read it safely
Always restrict on MANDT implicitly and then on WERKS plus MATNR before pulling anything; the table is small compared to MARD but scanning it by vendor alone across all materials returns noise. LBKUM by itself is only the unrestricted-use portion of the balance; a real stock-at-vendor figure is LBKUM plus INSME plus SPEME plus RETME. There is no storage location field because vendor stock is not tracked at that granularity, so any query trying to break the balance down by storage location will fail silently or return nothing rather than an error.
How to prove it in the data
Symptom: a subcontracting invoice or a physical count at the vendor suggests more components were consumed than were ever sent. Select MKOL on WERKS, LIFNR and MATNR for the component in question and read LBKUM plus the qualifier fields for the current balance, then select MSEG on the same three keys filtered to the relevant movement types to see the issue, consumption and return history that produced that balance, and compare the running total against LBKUM.
ECC vs S/4HANA
MKOL still exists as a physical table in S/4HANA and continues to be updated the same way, through goods movements tied to subcontracting purchase orders. It has not been absorbed into the universal journal or the unified material document table the way some valuation tables were; stock overview and subcontracting monitor apps in S/4 read it, or content derived from it, alongside MARD and MSLB for the special stock picture. No specific compatibility view name is asserted here without confirmation.
Common pitfalls
- Treating MKOL as stock held by a customer under consignment - that is a different special stock category tracked elsewhere; MKOL is only stock physically at a vendor.
- Confusing MKOL with MSLB - MKOL is the plant's own stock sitting at the vendor, indicator O; MSLB is the vendor's stock sitting at the plant, indicator M; the ownership direction is reversed between the two tables even though the structure looks identical.
- Reading LBKUM alone as the full balance and ignoring INSME, SPEME and RETME, which understates or misrepresents what is actually at the vendor.
- Seeing a non-zero balance after a subcontracting purchase order is technically closed and immediately raising a stock discrepancy - it usually means components were issued but never fully consumed or returned, and that has to be traced through the PO history before any adjustment is booked.
- Assuming the absence of a storage location field is a data gap rather than the intended design; vendor stock is not meant to carry a storage location.
- Blaming the table for a negative or implausible balance instead of checking whether the underlying movement was posted against the wrong vendor or the wrong subcontracting PO item in MSEG, which is the far more common root cause.
Whose problem this is
First point of contact is the MM consultant who owns the subcontracting process and the movement type configuration behind it. If the dispute turns into a real quantity correction at the vendor, it moves to whoever owns physical inventory counts and posts the correcting movement, not to a basis or data team.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/mkolERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.