MDKP table — MRP List Header Table
MDKP holds the header record of an MRP list or stock/requirements list result for one material in one plant (and MRP area, if used). It is a transient cache produced by the MRP run or by a live MD04 evaluation, not a permanent log. Quantities and dates of individual requirement elements live in the companion table MDTB, joined by material and plant.
This page covers MDKP, the header table behind the MRP list and stock/requirements list shown in transactions like MD04. It focuses on what the table actually proves versus what consultants wrongly assume it proves, since it is a regenerated snapshot rather than an audit trail.
Published 16 Sept 2026· 941 words
What it stores
MDKP stores the header of an MRP list result for a material within a plant, optionally scoped to an MRP area and a planning scenario. One row represents one planning evaluation result header, the outcome of an MRP run or of opening the stock/requirements list for a given material and plant at a point in time, holding the identifying keys and control indicators needed to link to the detailed line items stored separately in MDTB. It does not carry requirement quantities, dates, or order references itself, those belong to MDTB. The record functions as a pointer or session header for the current planning view rather than as durable master data, and it is overwritten each time the material is re-evaluated or re-planned, so it should never be read as a history of past MRP runs.
Key fields
- MANDT - client
- MATNR - material number the MRP list result belongs to
- WERKS - plant for which the MRP evaluation was run or displayed
- BERID - MRP area, populated only when MRP area management is active for the material, otherwise blank or default
- PLSCN - planning scenario, populated for simulative or what-if MRP evaluations, blank for the live result
How it joins the data model
- MDKP-MATNR = MDTB-MATNR (header to its detailed list lines)
- MDKP-WERKS = MDTB-WERKS
- MDKP-MATNR = MARA-MATNR (basic material master check)
- MDKP-MATNR = MARC-MATNR and MDKP-WERKS = MARC-WERKS (plant-specific MRP settings behind the list, e.g. MRP type, lot size)
- MDKP-BERID joins to the MRP area master when MRP areas are in use
How to read it safely
MDKP is client-dependent like every table here, but the effective filter always has to be material plus plant, and MRP area if that is in use; scanning the table without those restrictions returns whatever happens to be cached at that moment and means nothing as a report. Because the table is regenerated on every MRP run or every fresh MD04 call, there is no reliable time dimension to select on, so date-range queries against it are not meaningful. Treat it strictly as a lookup keyed to one material and plant combination, read together with MDTB, never as a standalone analytical source.
How to prove it in the data
To check whether a stated MD04 result reflects an actual cached evaluation for material X in plant Y, select MDKP where MATNR = X and WERKS = Y, including BERID if the material is MRP-area managed. If no row exists, no MRP list has been cached for that combination and the next MD04 call will trigger a fresh live calculation rather than display a stored result, which explains discrepancies between what two users see at slightly different times.
ECC vs S/4HANA
MDKP continues to exist in S/4HANA in the same technical shape and is still populated by the classical MRP list mechanism underneath transactions like MD04, MD05, and MD06. There is no widely published CDS-based replacement specifically for MDKP, but newer S/4HANA planning and MRP monitoring Fiori apps generally read current planning data through their own services rather than through this table directly. It is best treated as legacy plumbing that still works, not as the primary interface into current planning results in an S/4HANA context.
Common pitfalls
- Treating MDKP as an audit trail of MRP runs - it is overwritten by every new run or live display, so it cannot answer what the planning situation looked like a week or a month ago.
- Querying MDKP for quantities or requirement dates - none of that data lives here, it is all in MDTB against the header key.
- Assuming a row's existence proves a completed MRP run - a row can be created purely by opening MD04 for display, which does not mean net requirements were recalculated.
- Mixing simulative and live results by ignoring PLSCN - a populated PLSCN value belongs to a simulative version and should not be blended with live planning rows in the same analysis.
- Assuming BERID is always populated - for materials not managed by MRP area, BERID stays blank or default, so filtering by a real MRP area code on such a material returns nothing even though the material clearly has MRP data.
- Drawing plant-wide conclusions from a handful of MDKP rows - the table only reflects whichever materials happen to have been evaluated or displayed recently, not the full planning population of the plant.
Whose problem this is
Questions about MDKP content belong to PP or PP-MRP functional consultants, since the table is populated purely as a side effect of the MRP run and of MRP list display transactions. Missing or stale rows are investigated through MRP run configuration and scope of planning, not through direct table maintenance. Basis involvement is limited to locking or table growth concerns, not data content.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/mdkpERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.