MARC table — Plant Data for Material
MARC holds the plant-specific data for a material: MRP type and controller, procurement type, planned delivery time, goods receipt processing time, purchasing group, lot size parameters, and plant-level status. One row exists per material per plant. It is the table that determines whether a material can be planned, procured, or produced at a given plant, independent of its global MARA record.
MARC is the plant segment of the material master, sitting one level below the client-wide MARA record. This page covers the fields that drive MRP and procurement behaviour, the joins consultants actually write against it, and the recurring mistake of assuming material behaviour is uniform across plants when MARC says otherwise.
Published 15 Sept 2026· 1,195 words
What it stores
One row in MARC represents the attributes of a single material at a single plant. Where MARA holds the material's global, client-independent attributes (base unit, material type, industry sector), MARC holds everything that can legitimately differ from plant to plant: how the material is planned, who plans it, how it is procured, how long it takes to arrive, what lot size rules apply, and whether it is currently blocked for use at that plant. A material only exists usefully at a plant once its MARC record has been created, which is why 'extending a material to a plant' in practice means creating this row. Production, MRP, and purchasing all read MARC before they read MARA for anything operational.
Key fields
- MATNR - material number, part of the key
- WERKS - plant, part of the key
- PSTAT - maintenance status, shows which views have been maintained for this material at this plant
- LVORM - deletion flag at plant level, distinct from the global deletion flag on MARA
- DISMM - MRP type, controls whether and how the material is planned
- DISPO - MRP controller responsible for this material at this plant
- DISLS - lot-sizing procedure used by MRP
- MINBE - reorder point
- BSTMI, BSTMA, BSTFE - minimum, maximum, and fixed lot size
- PLIFZ - planned delivery time in days, used in external procurement scheduling
- WEBAZ - goods receipt processing time in days
- EKGRP - purchasing group responsible at this plant
- BESKZ - procurement type, in-house production versus external procurement
- SOBSL - special procurement key, subcontracting, stock transfer, consignment
- MMSTA - plant-specific material status, can block procurement or usage
- MMSTD - date from which the plant-specific status is effective
How it joins the data model
- MARC-MATNR = MARA-MATNR, joins plant data back to the global material record
- MARC-WERKS = T001W-WERKS, joins to the plant master for plant name, address, and valuation area assignment
- MARC-EKGRP = T024-EKGRP, resolves the purchasing group description
- MARC-MATNR and MARC-WERKS = MARD-MATNR and MARD-WERKS, drops down one level to storage location stock
- MARC-MATNR and MARC-WERKS = MBEW-MATNR and MBEW-BWKEY, joins to valuation via the plant's valuation area, since price and standard cost do not live in MARC itself
- EKPO-MATNR and EKPO-WERKS = MARC-MATNR and MARC-WERKS, used to check whether a purchase order line's plant default delivery times match the master data
How to read it safely
Always filter by client via MANDT in a raw SQL trace, though in ABAP the open SQL layer handles this automatically. The real key discipline is MATNR plus WERKS: never select from MARC by material number alone in a multi-plant landscape, the same material can have wildly different DISMM, BESKZ, or MMSTA values at different plants and pulling one row at random gives a wrong answer that looks plausible. If the investigation is plant-scoped, lead with WERKS to cut the result set before adding MATNR. MARC is far smaller than MSEG or EKBE, but in a landscape with hundreds of plants and hundreds of thousands of materials it is still large enough that an unrestricted select is a bad idea in production.
How to prove it in the data
Symptom: MRP is not generating planned orders for a material at a specific plant even though stock is below the reorder point. Select MARC for that MATNR and WERKS and check three fields together: DISMM must not be blank or set to a type that excludes the planning run, LVORM must not be set, and MMSTA must not carry a status that blocks planning. If DISMM is populated correctly but the material still does not plan, the problem is elsewhere, typically in the MRP run parameters or in a status set higher up on MARA.
ECC vs S/4HANA
MARC remains the underlying persistence table for plant-level material data in S/4HANA. There is no compatibility view replacing MARC itself in the way some financial tables were replaced, because it continues to be populated directly by material master maintenance transactions. Consumption in Fiori apps and CDS-based reporting typically goes through composite material views that pull MARC alongside MARA, MARD, and MBEW, but the table's structure and key have not materially changed for standard use.
Common pitfalls
- Assuming a material behaves identically everywhere because it exists in MARA. Procurement type, MRP type, and status are all plant-specific in MARC and routinely differ across plants for the same material number.
- Treating PSTAT as an error flag. It only records which views have been maintained, not whether the data in those views is correct or complete; a view can show as maintained and still contain a blank field that blocks a process.
- Missing MMSTA as a plant-level block. A material can be perfectly usable at one plant and blocked for procurement or goods movement at another because a plant-specific status was set, independent of anything on MARA.
- Looking for price or standard cost in MARC. Valuation data lives in MBEW, keyed by valuation area, not directly by plant; confusing the two tables wastes time on the wrong lookup.
- Reading BESKZ in isolation. Special procurement scenarios, subcontracting, stock transfer, consignment, are controlled by SOBSL and only make sense read together with BESKZ.
- Forgetting DISPO can be blank. A material with no MRP controller assigned will not be picked up correctly by planning workbenches even when DISMM looks fine.
- Assuming extending a material to a new plant automatically creates storage location data. MARC extension does not create the corresponding MARD record; that is a separate step and a common cause of goods movement failures right after a plant extension.
- Setting LVORM at plant level and assuming it mirrors the global deletion flag on MARA. The two are independent, a material can be marked for deletion at one plant while fully active everywhere else.
Whose problem this is
Material master governance, usually sitting inside the MM team, owns the plant extension process and the core planning fields like DISMM and DISPO. Purchasing group and delivery time fields are often maintained or requested by the procurement team, and MRP controller assignment by demand or production planning. A discrepancy at one plant is rarely a technical defect, it is almost always a master data maintenance gap and should be routed to whichever functional team owns that specific field before anyone touches configuration.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/marcERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.