🏭 SAP Plant — The Complete Guide

The single most-referenced entity in SAP MM. Master this and 60% of MM clicks into place. Configuration T-codes, database tables, linkages, customization options, and the PSEC Pakistani example.

📋 Snapshot

What it isAn operational location — factory, warehouse, distribution center, service site
ID format4-character alphanumeric (e.g. 1100, MUM1)
Mandatory?YES — without a plant, no MM activity possible
T-code to defineOX10
T-code to assign to CCOX18 (mandatory)
Database tablesT001W (master), T001K (valuation area if plant-level)
Owner moduleLogistics — General (shared by all logistics modules)

1. Purpose — why Plant exists

SAP separates the legal identity (Company Code — who files taxes) from the operational identity (Plant — where activity physically happens). This separation is what allows real businesses to be modeled:

The big-picture role
Plant is the meeting point of every Logistics module — MM, SD, PP, QM, PM, WM all reference the Plant. Procurement happens FOR a plant. Production runs AT a plant. Sales ships FROM a plant. Quality inspects AT a plant. That's why Plant is the most-referenced MM entity.

2. Where Plant is mandatory

The Plant field is required on every screen below:

Transaction / ScreenWhy mandatory
Material Master plant view (MM01)Plant-specific MRP, Purchasing, Storage settings
Purchase Requisition item (ME51N)Where the material is needed
Purchase Order item (ME21N)Where to deliver; derives Company Code for FI
Goods Receipt (MIGO 101)Where stock physically lands
Goods Issue (MIGO 261)Which plant's stock is consumed
Transfer Posting (MIGO 311/313/315)Source and destination plants
MRP run (MD01/MD02)MRP always runs per plant
Physical Inventory (MI01)Counts are per plant/SL
Info Record (ME11 with plant)Plant-specific pricing/conditions
Source List (ME01)Source determination is plant-scoped

3. Where Plant is optional / avoidable

WhereWhy optional
Info Record "without plant"Cross-plant info records allowed when pricing is global across all plants
Contract header (ME31K)Header contracts can be plant-independent; releases specify plant
PR header (only item level mandatory)Header is grouping; item carries the plant
Service POs (item category D)Plant still entered but represents service location, not stock location

4. Linkages with other entities

Cardinality

RelationshipCardinalityRule
Plant : Company Codemany : 1A plant belongs to exactly ONE Company Code
Plant : Storage Location1 : manyA plant has many SLs; each SL belongs to one plant
Plant : Purchasing Orgmany : manyA plant can be served by multiple Purch Orgs; a Purch Org can buy for many plants
Plant : Factory Calendarmany : 1Each plant has exactly one factory calendar
Plant : Valuation Area1 : 1 (if plant-level valuation)Each plant is its own valuation area

Mandatory assignments

Optional assignments

5. Design choices that matter

Should a Distribution Center be a plant or a Storage Location?

OptionImpact
DC as its own plantStandard pattern. Enables STOs from factory → DC, separate valuation, separate MRP, independent reporting.
DC as an SL of the factorySimpler config but you can't run MRP just for the DC, can't value DC stock separately, can't STO between them.

Rule of thumb: Real DCs are almost always separate plants.

How many plants per physical site?

OptionWhen to choose
ONE plant for the whole siteSingle site doesn't need separate valuation, MRP, or legal split
MULTIPLE plants on same physical siteSeparate valuation needed; bonded warehouse vs regular; different MRP or tax treatment

Rule of thumb: Separate plant if you need separate stock value or separate MRP. Just a different physical area? Use Storage Locations instead.

6. "Is this possible?" — client Q&A

Can one Plant belong to multiple Company Codes?

NO. Plant-to-CC is strictly 1:1 from the plant side. If you need MM activity for two legal entities at one physical site, create two plants and assign each to its own CC.

Can a Plant operate without being assigned to any Purchasing Org?

Technically yes, but you cannot create a PO for that plant — no Purch Org permitted to buy for it. Only useful for non-procurement plants (e.g. produces-and-ships-internal-only).

Can two plants share the same Storage Location ID?

Yes — but they're independent records. SL 0001 in Plant 1100 has no relationship to SL 0001 in Plant 1200. Same code, different SL records.

Can I change a Plant's Company Code assignment after go-live?

Practically NO. Once transactional data exists, changing CC requires a complex migration project. Plan plant-CC assignments very carefully at design phase.

Can a Plant be in a different country than its Company Code?

Yes technically — Plant has its own country field. But tax/customs/legal reporting becomes complex. Usually plant country = CC country unless deliberate cross-border setup.

Can I delete a Plant?

Practically no once it's referenced by any material extension or document. Standard approach: block the plant (mark for deletion) — stops new use but historical data preserved.

Can I create a PO without a Plant?

No. Plant is a mandatory item-level field. Even service POs require a plant (representing the service location).

Can the same plant produce AND distribute?

Yes — many real plants do both. You'd extend it for MM (procurement), PP (production), and SD (sales) — each module adds its own configuration without splitting the plant.

7. Common errors and fixes

ErrorCauseFix
Plant XXXX not assigned to Purchasing Org YYYY Missing OX01 assignment Run OX01, assign Purch Org → Plant
Material XXX not maintained in plant YYY Material master not extended to plant Run MM01 with reference, extend plant view
No factory calendar defined for plant Plant config missing calendar link OX10 → maintain factory calendar from SCAL
Posting period closed in Company Code FI period closed when MM transaction tries to post FI to open via MMRV / OB52; MM period via MMPV

8. What can't change after go-live

Design rule
Decide plants and their Company Code carefully at design phase. Changing later = expensive project.

9. Customization options — what consultants actually configure

Standard plant configuration

  1. Define PlantOX10 — Set 4-char ID, name, factory calendar, country
  2. Assign to Company CodeOX18 — Mandatory link to FI
  3. Define Storage LocationsOX09 — Add 3-5 SLs per plant
  4. Assign Purchasing OrgsOX01 — Which Purch Orgs can buy for this plant
  5. Set Standard Purch Org (optional) — OMKL — Default for source determination

Advanced plant customizations

CustomizationT-codeWhat it does
Plant assignment to Sales Org/Dist ChannelOVXMIf plant ships sales orders
Shipping Point per PlantOVXCFor outbound shipping
Valuation Grouping CodeOMWM + OMWDGroup plants with similar OBYC needs
Maintenance Planning PlantOX09 (PM)If PM module is in use
Warehouse Number assignmentOX09 (WM)If WM/EWM is active
Plant parameters for MRPOPPQDefault MRP settings per plant
Customer/Vendor for Plant (STO)OMGNRequired for inter-company STO
For STO scenarios
To enable Stock Transport Orders between plants, you must create the supplying plant as a Vendor and the receiving plant as a Customer (for inter-company STO with billing). T-code OMGN sets this up.

10. PSEC real-world example

Pakistan Steel & Engineering Co. (PSEC) plants:

Plant 1100 — Karachi factory          (CC 1000 PSEC PK Ltd, PKR)
  Factory calendar: PK (Pakistan working days)
  Storage Locations: RM01, FG01, QA01
  MRP: full deterministic planning
  Purchasing Orgs assigned: PSEC-PK, PSEC-GLOB

Plant 1200 — Lahore factory           (CC 1000)
  Same calendar/SLs/MRP as Karachi
  Purchasing Orgs assigned: PSEC-PK, PSEC-GLOB

Plant 1300 — Faisalabad factory       (CC 1000)
  Same calendar/SLs
  Specializes in finished goods only
  Purchasing Orgs assigned: PSEC-PK, PSEC-GLOB

Plant 2100 — Dubai DC                 (CC 2000 PSEC Trading UAE, AED)
  Factory calendar: AE (UAE working days)
  Storage Locations: DC01, EXP1 (export staging)
  No production — distribution only
  Purchasing Orgs assigned: PSEC-AE, PSEC-GLOB

Notice: Each plant has its own factory calendar, own SLs, own price (plant-level valuation), but they all link to Company Codes for FI consolidation.

11. Deep T-code list — Plant-related

T-codeWhat it does
OX10Define plant (create/edit/delete)
OX18Assign plant → Company Code
OX09Define storage locations per plant
OX01Assign plant → Purchasing Org
OMKLStandard Purch Org per plant (for source determination)
OMWMActivate/configure Valuation Grouping Code
OMWDAssign plants to Valuation Grouping Code
OPPQPlant MRP parameters
OMGNInter-company Customer/Vendor for STO
SE16N → T001WView all plants directly in DB

12. Interview Q&A on Plant

What is a Plant in SAP MM?

An operational location where activity physically happens — factory, warehouse, distribution center. The single most-referenced MM entity. Stock is held at plant level (with value), MRP runs per plant, material masters have plant-specific views. Each plant is assigned to exactly one Company Code.

Difference between Plant and Storage Location?

Plant is the operational location and valuation level — stock value lives here. Storage Location subdivides a plant for tracking quantity only. Moving stock between SLs of the same plant is quantity-only — no FI document.

Can a plant exist without being assigned to a CC?

No. OX18 assignment is mandatory. Without it, the plant cannot be used in any FI-linked transaction (which is essentially every MM transaction).

What's a Maintenance Planning Plant?

A plant designated to perform maintenance work. Can be the same as the operating plant or a separate dedicated maintenance plant. Configured if PM module is in use.

Plant = where things happen. Stock lives here (with value), MRP runs here, materials have plant views here. One plant → one CC. Many SLs under a plant. Many Purch Orgs can buy for it.

What's next