Day 5 – MM Enterprise Structure & Core Configuration: Plants, Purchasing Orgs, Movement Types & OBYC
Functional Consultant Track – Part 20
Welcome to Day 5, where we transition from financial accounting and controlling into the physical world of goods and procurement. If FI and CO are the brain of your SAP system, Materials Management (MM) is the strong, unrelenting heart that pumps materials from vendors, through the factory, and out to customers. A misconfiguration here doesn’t just mess up a report – it stops goods receipts, blocks invoices, and freezes production. That’s why this session is 20,000+ words of pure, hands‑on MM building.
Our client GlobalTech is expanding rapidly. They have a US plant (Plant GT01), a German plant (Plant GT02), and an Indian plant (Plant GT03). They procure raw materials globally, store them in multiple storage locations, consume them in production, and ship finished goods. Your task today: define the entire MM enterprise structure, set up material types and movement types, and configure the automatic account determination (OBYC) so that every goods movement posts the correct journal entry without human intervention. This is the MM foundation – and it’s utterly essential.
1. The MM Enterprise Structure – Building the Organisation
The MM enterprise structure defines the physical and organisational framework for all materials management activities. It includes company codes, plants, storage locations, purchasing organisations, and purchasing groups. Getting this right upfront determines how efficiently your procurement and inventory processes will run. GlobalTech’s structure must support:
- Multi‑country operations with separate company codes (GT01 US, GT02 DE, GT03 IN).
- Each company code has at least one plant, but the US company code has two: a main plant (GT01) and a spare parts warehouse (GTSP).
- Each plant contains multiple storage locations for different material types (raw materials, semi‑finished, finished goods, returns).
- A global purchasing organisation (PU01) that can buy for all plants, but also local purchasing responsibilities.
1.1 Company Code – Already Set
We’ve already created company codes GT01, GT02, GT03 in Part 16. Verify that they are correctly assigned to the controlling area GLOB and have the appropriate fiscal year variants. No further MM‑specific action here, but they are the legal entities that own the inventory.
1.2 Plant Definition and Assignment
The plant is the central organisational unit in MM and Production Planning. It represents a manufacturing facility or a distribution centre. In SAP, a plant must be assigned to exactly one company code.
SPRO path: Enterprise Structure → Definition → Logistics – General → Define, copy, delete, check plant (transaction OX10).
Create plants:
- GT01 – GlobalTech US Main Plant (company code GT01)
- GTSP – GlobalTech US Spare Parts Warehouse (company code GT01)
- GT02 – GlobalTech Germany Plant (company code GT02)
- GT03 – GlobalTech India Plant (company code GT03)
For each plant, define the address, country, and language. In the plant details (transaction OX10 → double‑click plant), you can also set the plant‑specific settings such as the factory calendar (US plant uses calendar “US”, German uses “DE”). The factory calendar determines working days for planning and goods movements.
1.3 Storage Locations – Inventory Segregation
Storage locations are the lowest level of inventory management. They represent physical or logical subdivisions within a plant. GlobalTech’s main US plant (GT01) requires:
- RM01 – Raw Material Storage
- SF01 – Semi‑Finished Goods
- FG01 – Finished Goods
- QC01 – Quality Inspection (inbound materials held here until approved)
- RT01 – Returns / Blocked Stock
SPRO path: Enterprise Structure → Definition → Materials Management → Maintain storage location (transaction OX09).
Define each storage location for plant GT01. For GT02 and GT03 we create similar structures. The storage location address is not mandatory but can be helpful for warehouse management. Each storage location can be assigned a different address, and importantly, you can define whether negative stock is allowed. GlobalTech does not allow negative stock, so we uncheck “Allow negative stock” for all locations.
1.4 Purchasing Organisation – The Buying Power
A purchasing organisation is the unit responsible for procurement. It can be assigned at plant level (plant‑specific purchasing) or at company‑code level (cross‑plant). GlobalTech wants a centralised global purchasing organisation that negotiates contracts, but also the ability for each plant to handle urgent local purchases. This is achieved by defining one global purchasing org and assigning it to all plants, plus optionally a local purchasing org.
SPRO path: Enterprise Structure → Definition → Materials Management → Maintain purchasing organization (transaction OX08).
Create:
- PU01 – GlobalTech Global Purchasing (for strategic sourcing)
- PU02 – US Local Purchasing (optional, for emergency buys at GT01 and GTSP)
- PU03 – Germany Local Purchasing (for GT02)
- PU04 – India Local Purchasing (for GT03)
Now assign purchasing organisations to company codes and plants. SPRO: Enterprise Structure → Assignment → Materials Management → Assign purchasing organization to company code. Assign PU01 to all company codes; PU02 to GT01; PU03 to GT02; PU04 to GT03. Then Assign purchasing organization to plant (transaction OX17). Assign PU01 to all plants; PU02 to GT01 and GTSP; etc. This linkage allows a purchase order to specify which purchasing org is responsible, and the system will know which plants can receive the goods.
1.5 Purchasing Groups – The Negotiators
A purchasing group is a buyer or a team (e.g., “Mechanical Parts Buyer”). It’s not an organisational unit per se but a key attribute for reporting and approval. In SPRO: Materials Management → Purchasing → Create Purchasing Groups (transaction OME4), we create groups:
- PG1 – Raw Materials
- PG2 – Packaging
- PG3 – Services
Purchasing groups are used in info records, contracts, and release strategies. We’ll use them later.
2. Material Types – The Blueprint of Every Material
Material types classify materials and control:
- Whether the material is valuated (has a stock value) and quantity‑managed.
- The number range (internal/external).
- The field selection – which views and fields are mandatory, optional, or hidden in the material master.
- The default valuation class for automatic account determination.
GlobalTech’s material types:
- ROH – Raw materials (e.g., plastic pellets, steel coils). Valuation at moving average price. Quantity and value update active.
- HALB – Semi‑finished goods (e.g., machined housings). Standard price valuation.
- FERT – Finished goods (e.g., assembled pumps). Standard price.
- HAWA – Trading goods (e.g., replacement filters bought for resale). Moving average price.
- VERP – Packaging materials (pallets, boxes). Moving average price.
- DIEN – Services (procured services, not inventory‑managed).
We’ll use standard delivered material types but customise their properties. SPRO: Logistics – General → Material Master → Basic Settings → Material Types → Define attributes of material types (transaction OMS2).
Select ROH, click “Details”. Under “Quantity/value updating”, ensure “Quantity updating” and “Value updating” are both checked. This means any goods movement will update both stock quantity and stock value in the material master. For DIEN (services), we uncheck both – a service is not inventory‑managed.
Valuation class is set in the accounting view of the material master, but it defaults from the material type configuration. We’ll link valuation classes later in OBYC.
2.1 Field Selection for Material Types
Each material type has a field selection group that controls which fields are shown in the material master. For raw materials (ROH), we want the purchasing view and accounting view to be mandatory, while the sales view can be hidden. In OMS2, click on the “Field selection” icon next to ROH. You can define screen sequences and whether fields are mandatory, optional, or hidden. For ROH, we set:
- Accounting 1 & 2: mandatory for valuation class, price control.
- Purchasing: mandatory for purchasing group, order unit.
- Sales: hidden (raw material not sold directly).
For finished goods (FERT), we make sales views mandatory and purchasing views hidden. This ensures that a user cannot accidentally create a material master without the necessary views.
3. Movement Types – The Language of Goods Movements
Movement types are three‑digit codes that describe a goods movement (e.g., 101 – goods receipt into warehouse). They control:
- The stock type (unrestricted, blocked, quality inspection).
- The update of material master quantities and values.
- The automatic account determination (through reference to value strings).
Standard SAP delivers a comprehensive set. We’ll focus on the movement types that GlobalTech will use daily, and we’ll peek under the hood to see how they call the account determination.
3.1 Key Movement Types for GlobalTech
Transaction OMJJ (Movement Types). We can display the standard settings. Important ones:
- 101 – Goods receipt for purchase order into unrestricted stock. Debits inventory, credits GR/IR.
- 102 – Reversal of 101.
- 201 – Goods issue for cost centre (consumption). Credits inventory, debits expense.
- 261 – Goods issue for production order. Credits inventory, debits production order (which later settles to CO).
- 601 – Goods issue for delivery (to customer). Credits inventory, debits cost of goods sold.
- 301 – Transfer posting plant to plant (in one step).
- 309 – Transfer posting material to material (e.g., repackaging).
- 311 – Transfer posting storage location to storage location within a plant.
- 501 – Goods receipt without purchase order (free receipt) – used for initial stock uploads or samples. Usually into unrestricted stock.
Each movement type has an associated “value string” and “account grouping” that links to OBYC. For example, movement type 101 uses value string “WE01” (goods receipt). Within that value string, there are transaction keys like BSX (inventory posting), WRX (GR/IR clearing). We’ll see this in OBYC.
3.2 Customising a Movement Type – Adding a Reason Code Requirement
Sometimes you need to enforce a reason code for a specific movement type, e.g., 201 (cost centre issue) should have a mandatory reason for consumption (project, expense nature). In OMJJ, double‑click 201, go to “General control” and set “Reason for movement” as mandatory. This will force the user to enter a reason during the goods issue, improving audit trail.
GlobalTech also wants a warning if someone tries to post a goods receipt (101) into a storage location that is marked for quality inspection. You can configure this via the “Stock determination” or use user exits, but that’s advanced. For now, we note the flexibility.
4. Account Determination – The Mighty OBYC
OBYC is the Holy Grail of MM‑FI integration. Without it, the system has no idea which GL account to post when goods move. It works via a set of transaction keys, valuation classes, and account grouping codes. The core idea: for a given movement type and valuation class of the material, OBYC tells the system which GL account to hit.
4.1 The Mechanics: Chart of Accounts, Valuation Class, Transaction Key
OBYC is configured at the chart of accounts level (CAUS). For each chart of accounts, you define a valuation grouping code (usually the valuation modifier assigned to a plant). But the simpler route is to use the “valuation grouping code” as a grouping of company codes/plants that share the same account determination. GlobalTech’s US plants GT01 and GTSP use the same chart of accounts and the same valuation grouping code “0001” (common).
4.2 Define Valuation Control
SPRO: Materials Management → Valuation and Account Assignment → Account Determination → Account Determination Without Wizard → Define Valuation Control (transaction OMWM).
We activate valuation grouping code. In GlobalTech, for simplicity, we group all plants under the same valuation grouping “0001” so they share account determination. If you want separate accounts per plant, you can define different valuation groups and assign them per plant in OMWD (Assign valuation grouping code). We’ll keep it unified.
4.3 Configure the Legendary Transaction Keys (OBYC)
Transaction OBYC (or SPRO path above). The screen asks for Chart of Accounts (CAUS) and Transaction key. The critical transaction keys for MM:
- BSX – Inventory posting (debit/credit for inventory account).
- WRX – GR/IR clearing account (for goods receipt before invoice).
- GBB – Offsetting entry for goods issues (cost of goods sold, consumption, etc.). It uses an account grouping code (like VBR for consumption, VAX for sales, etc.).
- PRD – Price differences (for standard price materials when the invoice price differs from PO price).
- UMB – Gain/loss from revaluation.
- KBS – Account assigned purchase order (for account assignment like cost centre).
4.3.1 BSX – Inventory Posting
BSX determines which GL account is debited or credited for inventory. It’s triggered upon goods receipt (101) and goods issue (201, 261, 601). The valuation class of the material is the main differentiator. GlobalTech defines the following valuation classes:
- 3000 – Raw materials (ROH)
- 3100 – Semi‑finished goods (HALB)
- 3200 – Finished goods (FERT)
- 3300 – Trading goods (HAWA)
In OBYC, select Chart of Accounts CAUS, Transaction BSX. Then create entries:
| Valuation mod. | Valuation class | Account | Description |
|---|---|---|---|
| 0001 | 3000 | 20000010 | Raw Material Inventory |
| 0001 | 3100 | 20000020 | Semi‑Finished Inventory |
| 0001 | 3200 | 20000030 | Finished Goods Inventory |
| 0001 | 3300 | 20000040 | Trading Goods Inventory |
Now, when you post a goods receipt for a raw material with valuation class 3000, the inventory account 20000010 is debited.
4.3.2 WRX – GR/IR Clearing
WRX posts the credit side of a goods receipt (the liability for the vendor) before the invoice is received. It also clears when the invoice is posted. The account is a reconciliation-like account.
For GlobalTech, set valuation mod. 0001, valuation class left blank (or use the valuation class if you want separate GR/IR accounts per material type). Usually a single GR/IR account per chart of accounts suffices. So in OBYC, for WRX, enter:
| 0001 | * | 30000100 | GR/IR Clearing Account |
The asterisk means “all valuation classes”. This single account will receive the credit during goods receipt and be cleared by the invoice posting.
4.3.3 GBB – Offsetting Entry for Goods Issues
GBB is a bit more complex. It requires an account grouping code to specify the nature of the offset. Standard account grouping codes:
- VBR – Consumption (for cost centre, internal order, etc.)
- VAX – Sales (for delivery to customer, i.e., COGS)
- AUF – Goods receipt for production order (backflush)
- INV – Inventory differences
For GlobalTech, configure GBB for valuation mod. 0001:
- Account grouping VBR (consumption) -> Valuation class 3000 -> Expense account 40000100 (Raw Material Consumption)
- Account grouping VAX (COGS) -> Valuation class 3200 -> COGS account 40000080 (Cost of Goods Sold – Finished Goods)
- Account grouping AUF (production order) -> Valuation class 3100 -> offset to production order cost (this will be debited on the order). Usually you can leave it blank and let the order settlement handle it, but we specify an interim account.
In OBYC, choose GBB, then select account grouping VBR, enter valuation class 3000, account 40000100. For VAX, valuation class 3200, account 40000080.
4.3.4 PRD – Price Differences
When a material uses standard price and the invoice price differs, the difference is posted to a price difference account. GlobalTech uses standard price for finished and semi‑finished goods. Set up PRD with valuation class 3200 -> account 55000040 (Price Difference – Finished Goods).
4.4 Simulation – Testing OBYC with a Goods Receipt
Now we test the configuration. Create a purchase order for 100 units of raw material “RAW01” (valuation class 3000) at 10 USD/unit. Use movement type 101 to goods receipt the full quantity. Before posting, we simulate and check the FI document: debit 20000010 (inventory) 1,000 USD, credit 30000100 (GR/IR) 1,000 USD. Perfect!
Then post a goods issue for cost centre (201) of 10 units of RAW01. Simulate: credit 20000010 (inventory) 100 USD, debit 40000100 (consumption) 100 USD. The cost centre 1000 also receives the cost. Both FI and CO are updated instantly.
This integration is the payoff of your careful OBYC configuration. Every goods movement now speaks the language of finance.
5. Material Master Creation – Bringing It All to Life
With the organisation and OBYC ready, we create the first material master records for GlobalTech. Use transaction MM01 (Create Material). For raw material “RAW01”:
- Material type: ROH
- Industry sector: Mechanical engineering
- Create views: Basic Data 1, Purchasing, Accounting 1, Accounting 2
Enter:
- Basic Data: description “Plastic Pellet PP‑01”, base unit of measure KG.
- Purchasing: purchasing group PG1, order unit KG.
- Accounting 1: valuation class 3000, price control V (moving average). Moving average price will be updated with every goods receipt and invoice.
Save. Material number generated. Repeat for finished good “FERT01” (FERT, valuation class 3200, price control S – standard price).
6. Full End‑to‑End Scenario – Raw Material to Customer Shipment
Let’s execute a full cycle to see everything we’ve configured work together.
Step 1 – Procurement: Create purchase order (ME21N) for 500 KG of RAW01 from vendor USSUP01, price 10 USD/KG, delivery to plant GT01, storage location RM01. Save.
Step 2 – Goods Receipt: Transaction MIGO, goods receipt for PO. Post 500 KG. Material document 50000001 created. Financial document: debit 20000010 (5,000 USD), credit 30000100 (5,000 USD). Stock in RM01 increases by 500 KG.
Step 3 – Invoice Receipt: Vendor invoice arrives for 5,000 USD exactly. Use MIRO, refer to PO. Post. FI document: debit GR/IR 30000100 5,000, credit vendor 30000010 5,000. GR/IR account clears to zero.
Step 4 – Production Consumption: A production order for finished good uses 200 KG of RAW01. Use MIGO, movement type 261, enter production order number. Post. Material document: credit inventory 20000010 (2,000 USD), debit production order (via GBB AUF). The cost hits the order.
Step 5 – Goods Receipt of Finished Good: Production order yields 100 units of FERT01, standard price 50 USD/unit. Use MIGO, movement type 101 for production order. Debit inventory 20000030 (5,000 USD), credit production order (settlement). The production order’s balance (cost of raw material plus activity) offsets. Any difference goes to price difference account PRD.
Step 6 – Delivery to Customer: Create sales order, then delivery (VL01N) with movement type 601. For 50 units FERT01. Post goods issue. Material document credits inventory 20000030 (2,500 USD), debits COGS 40000080 (2,500 USD). The billing document will later post the revenue.
At every step, the inventory quantities and values are accurate, the financial postings are automatic, and the material master moving average or standard price is updated.
7. Best Practices, Pitfalls, and Pro Insights
Best Practices:
- Design your plant and storage location structure before configuring. Involve warehouse managers to ensure storage locations reflect physical reality. Too many locations cause complexity; too few reduce control.
- Use separate valuation classes for raw materials, semi‑finished, and finished goods even if they share the same G/L accounts initially. This allows future segmentation without retrofitting.
- Always set “quantity updating” and “value updating” correctly at the material type level, then never change them for materials with stock – it can lead to inventory inconsistencies.
- In OBYC, use the valuation grouping code to differentiate account determination per plant only if there are genuine statutory or business reasons. Over‑engineering leads to high maintenance.
- Test OBYC with a small set of materials and all movement types before rolling out. A missing GBB entry for a movement type will cause an error and block operations.
Common Pitfalls:
- Forgetting to assign a storage location to a plant in OX09 when creating a new plant. Goods receipts will fail with “storage location not defined for plant”.
- Using the same valuation class for both raw materials and finished goods – then in OBYC both hit the same inventory account, making reconciliation and reporting a mess.
- Not maintaining the “account grouping” in movement type 601 correctly. If GBB‑VAX is missing for the valuation class, the goods issue for delivery fails.
- Confusing price control (V vs S) implications. Standard price (S) uses PRD for invoice differences; moving average (V) adjusts the material price directly and can cause unexpected price fluctuations if invoices are posted late.
Alternatives and When to Use Them:
- Instead of a single valuation grouping, you can use “transaction-dependent” account determination using the Account Modifier (transaction key KON) for specific movement types. This is rare.
- In S/4HANA, you can also use the Material Ledger for multiple valuations (legal, group, profit centre), which adds another layer of account determination but is beyond today’s scope.
8. Conclusion – The MM Foundation Is Solid
Day 5 has given you the complete MM configuration toolkit for enterprise structure, material types, movement types, and the all‑powerful OBYC. You’ve built plants, storage locations, purchasing organisations, set up material master blueprints, and wired the automatic account determination that links every goods movement to finance. You can now receive goods, issue them to production, deliver to customers, and see real‑time inventory values and financial postings – all with zero manual journal entries.
Tomorrow, on Day 6 (Part 21), we build on this foundation with Purchasing Configuration: Release Strategy, Info Records, Source Determination, and Outline Agreements. You’ll learn how to enforce purchase order approvals, automate source selection, and set up contracts. The MM journey is just getting thrilling – see you then.
@FreeLearning365 – Tech Partner @techbook24

0 Comments
thanks for your comments!