MSLB table — Vendor Stock for Subcontracting Table MSLB
MSLB holds the quantity and value of company-owned material physically located at a subcontractor's site (special stock type O), one row per material, plant, and vendor combination. It is a stock balance table, not a document table, so it shows the current position at that vendor, not the history of goods issues and receipts that produced it.
MSLB is the classic MM stock table for materials provided to a subcontractor under a subcontracting purchase order. This page covers what a row actually represents, how to join it to master data and movement history, and the reconciliation traps consultants hit when the vendor's physical count does not match LBKUM.
Published 15 Sept 2026· 1,075 words
What it stores
One row in MSLB represents the current stock of a specific material, owned by a specific plant, sitting physically at a specific subcontractor vendor, valuated under special stock type O (subcontracting). It is populated and updated as components are issued to the subcontractor (movement type 541), consumed in the subcontracted process, or returned/adjusted. The table does not describe a transaction or a point in time; it is a running balance, similar in nature to MARD for storage-location stock or MCHB for batch stock, except the storage location is replaced by a vendor. When the balance for a material/plant/vendor combination falls to zero, the row is typically cleared rather than kept as a zero-quantity historical record.
Key fields
- MANDT - client
- MATNR - material number of the component or semi-finished item held at the subcontractor
- WERKS - the plant that owns and manages this subcontracting stock
- LIFNR - the subcontractor vendor physically holding the stock
- LBKUM - valuated stock quantity currently at the vendor (unrestricted-use subcontracting stock)
- SALK3 - value of that stock quantity in company code currency
How it joins the data model
- MSLB-MATNR = MARA-MATNR to pull material description, base unit, and material type
- MSLB-WERKS = MARC-WERKS to pull plant-level subcontracting and MRP settings for that material
- MSLB-LIFNR = LFA1-LIFNR to resolve the vendor name and address for the subcontractor
- MSLB has no purchase order field itself, so tying a balance back to a specific subcontract order requires joining through MSEG or MATDOC on MATNR, WERKS and LIFNR for the relevant movement types
- movement history that built or reduced the balance is found in MSEG joined to MKPF (or MATDOC on newer systems) filtered to movement types such as 541, 542, 543 and 544
How to read it safely
MANDT must always be part of the selection. The table is small relative to MARD or MSEG because it only carries rows for material/plant/vendor combinations that currently have subcontracting stock outstanding, so a query restricted by WERKS and LIFNR is fast and selective, and adding MATNR narrows it to a single row. Do not scan the table unfiltered looking for 'all subcontracting stock' across a large vendor base; restrict by plant first, since that is usually the known starting point of an incident. Remember there is no date or document number on the row, so it cannot answer 'when' or 'which order', only 'how much, right now'.
How to prove it in the data
Symptom: subcontractor reports a component shortage or a physical count mismatch at their site. Selection: read MSLB with WERKS equal to the owning plant, LIFNR equal to the subcontractor, MATNR equal to the disputed component, and note LBKUM. Then read MSEG (or MATDOC) for the same MATNR, WERKS and LIFNR restricted to movement types 541 and 542 (issued to vendor) against 543 and 544 (returned or consumed) over the relevant period, and confirm the net of those movements reconciles to the current LBKUM.
ECC vs S/4HANA
On S/4HANA, MSLB along with the other classic aggregate stock tables (MARD, MCHB, MKOL, MSKA and similar) is generally exposed through a compatibility view rather than read as a directly maintained physical table, with the underlying stock quantities derived from the consolidated material document data model. Reports and standard transactions that select from MSLB continue to return correct current balances. Custom code doing native SQL reads or relying on database-level locking behaviour against MSLB specifically should be reviewed, since the storage and update mechanics behind the view differ from the ECC-era table.
Common pitfalls
- Treating MSLB as if it carries the purchase order number: it does not, so 'which subcontract order is this stock tied to' can only be answered by joining through MSEG/MATDOC using material, plant and vendor as the correlation key, not a direct field.
- Confusing MSLB (subcontracting stock, special stock type O) with MKOL (vendor consignment stock) or MSKA (sales order stock) - the tables look structurally similar and it is easy to query the wrong one and draw a conclusion about the wrong business scenario.
- Reading a missing row as 'no stock ever existed there' when it may simply mean the balance already returned to zero and the row was cleared, losing the history a document-level query would still show.
- Assuming LBKUM equals what the subcontractor physically has on their shelf: it reflects what SAP's movement postings say was issued and not yet consumed or returned, which drifts from physical reality whenever the vendor's own goods receipt confirmation is late or missed.
- Summing LBKUM across plants for the same vendor and material to get 'total stock at that vendor location': each plant's stock is a separate row even if it sits at the same physical dock, so the sum can overstate or understate what a warehouse walk-through would find.
- Chasing a value mismatch in SALK3 as a data error when it is actually a valuation timing effect - price changes on the material master do not retroactively restate stock already sitting with the vendor under the earlier price.
- Assuming a manual adjustment posting into this stock category corrects the real-world discrepancy: it only corrects what SAP believes is there, and the underlying physical count issue at the vendor still needs resolution outside the system.
Whose problem this is
A discrepancy surfaced through MSLB is first a subcontracting/inventory management question for the MM consultant running the procure-to-pay process, working jointly with plant operations that owns the physical relationship with the vendor. Master data mismatches on the material or vendor route to the MM master data team, and value-side questions on SALK3 route to inventory accounting or controlling.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/mslbERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.