MARC — Plant-Level Material Master Data¶
One row per material/plant combination; extends MARA with MRP settings, safety stock, and plant-specific status.
Purpose¶
MARC is created when a material is "extended" to a plant in MM01/MM02. It holds all planning-relevant attributes: MRP type and controller, reorder point, safety stock, production storage location, and the plant-specific material status that can block procurement or production. Every MARC row has a parent row in MARA.
Key fields¶
| Field | Type | Description |
|---|---|---|
| MANDT | CLNT(3) | Client |
| MATNR | CHAR(18) | Material number |
| WERKS | CHAR(4) | Plant |
| DISKZ | CHAR(2) | MRP type (e.g. PD=MRP VB=reorder-point ND=no planning) |
| DISPO | CHAR(3) | MRP controller / planner group |
| MINBE | QUAN | Reorder point quantity |
| EISBE | QUAN | Safety stock quantity |
| LGPRO | CHAR(4) | Production storage location |
| MMSTA | CHAR(2) | Plant-specific material status (blank = active) |
Common queries¶
All materials extended to a given plant
SELECT matnr, diskz, dispo, mmsta
INTO TABLE @DATA(lt_plant_mats)
FROM marc
WHERE mandt = @sy-mandt
AND werks = @lv_werks.
Materials with a safety stock greater than zero
SELECT matnr, werks, eisbe, minbe
INTO TABLE @DATA(lt_safety_stock)
FROM marc
WHERE mandt = @sy-mandt
AND werks = @lv_werks
AND eisbe > 0
ORDER BY eisbe DESCENDING.
All materials managed by a specific MRP controller
SELECT matnr, werks, diskz, minbe, eisbe
INTO TABLE @DATA(lt_by_dispo)
FROM marc
WHERE mandt = @sy-mandt
AND dispo = @lv_dispo.
Joins¶
| Join target | Key fields | Purpose |
|---|---|---|
| MARA | MATNR |
General material attributes (type, group, UoM) |
| MARD | MATNR + WERKS + LGORT |
Unrestricted, quality, and blocked stock per storage location |
| T001W | WERKS |
Plant name and address |
" Materials with description, plant name, and safety stock
SELECT c~matnr, c~werks, c~eisbe,
a~matkl, a~meins,
t~maktx,
p~name1 AS plant_name
INTO TABLE @DATA(lt_overview)
FROM marc AS c
INNER JOIN mara AS a ON a~mandt = c~mandt
AND a~matnr = c~matnr
INNER JOIN makt AS t ON t~mandt = c~mandt
AND t~matnr = c~matnr
AND t~spras = @sy-langu
INNER JOIN t001w AS p ON p~mandt = c~mandt
AND p~werks = c~werks
WHERE c~mandt = @sy-mandt
AND c~werks = @lv_werks
AND c~eisbe > 0.
Pitfalls¶
A material in MARA may have no MARC rows
If a material has never been extended to any plant it exists only in MARA. An INNER JOIN from MARA to MARC will silently exclude those materials. Use a LEFT OUTER JOIN when you need to report on all materials regardless of plant extension.
Always specify WERKS
Without a plant filter, MARC returns rows for every plant the material has been extended to. This is rarely what you want and can produce unexpected duplicates downstream.
MMSTA can block business transactions
A non-blank MMSTA value may restrict procurement, sales, or production for that material at that plant. Check this field before drawing conclusions from MRP data.
See also¶
mara.md— General material master (parent table)vbak-vbap.md— Sales orders (VBAP carries WERKS per line item)