Scenario 25 — MM ↔ PM Integration (Spare Parts for Maintenance Orders)
📊 Business Case
This scenario is where MM hands off to Plant Maintenance (PM). When equipment breaks down, the maintenance team raises a maintenance order that needs a spare part. The order generates a purchase requisition with account assignment F (Internal/PM order) — so the cost of the spare flows to the maintenance work order, not directly to a cost center or into inventory. After the repair, the order's accumulated cost is settled to the cost center of the affected line. It shows MM's role as a central enabler feeding other SAP modules.
🕐 When to use it
Whenever a maintenance/repair job needs a part bought specifically for that job — the spare is consumed against the maintenance order rather than stocked.
❓ Why it matters
It teaches account assignment F and how a PR is triggered from PM (not manually). Cost accumulates on the maintenance order so the true cost of each repair is visible before settlement.
👤 Who triggers it
The maintenance planner creates the order (IW31); the MM buyer converts the PR to a PO and handles GR/IV; PM/CO settles the order at month-end (KO88).
🔁 The key distinction
Cost goes to the order, not inventory. With account assignment F there is no stock posting — the spare is expensed straight to the maintenance order and shows in the order cost report.
💰 Financial Impact — The Easy-Money Example
A CNC machine needs a new bearing (SP-BEARING-01, PKR 5,000). Because the PO carries account assignment F against maintenance order 8000001234, the money never touches inventory — it lands on the order and later settles to the production cost center:
The big idea: account assignment F means the spare is never an inventory asset — it is expensed directly to the maintenance order at GR. The order is a temporary cost collector; KO88 settlement then pushes the accumulated cost onto the responsible cost center, so management sees the full cost of the repair.
🇵🇰 The Business Story
🎯 What you'll learn
- Account assignment
F(Internal Order / PM Order) on the PO line - PR triggered FROM the PM module (not manually) — MRP-like external integration
- Cost accumulation on the maintenance order, then settled at month-end
- Material Master ERSA type for spare parts
- How the MM consultant supports the PM consultant in real projects
⚙️ Prerequisite Setup
- Skip this scenario (PM is typically PM consultant work, not MM)
- OR work with a PM consultant to enable basic PM (work order types, notification types)
- OR substitute with cost center accounting (Scenario 5 — Consumable Direct) — same MM mechanics, simpler account assignment
SP-BEARING-01 (ERSA, spare part) — create steps. First time? the why behind every field.
- The Plant Maintenance (PM) module active, with a maintenance order to charge the spare to (see the Prerequisite Setup note above).
- The spare-part material
SP-BEARING-01(ERSA) created (see create steps). - A controlling area and a cost center for the KO88 settlement — e.g. PKKHI-PROD (see Setup Step 19).
🔧 Step-by-Step — Transaction Flow
| Step | T-code | What it does | Why this step exists |
|---|---|---|---|
| 25.1 | IW31 | Create the maintenance order; on save it raises its own PR | the repair needs a cost collector |
| 25.2 | ME21N | Convert the PR to a PO with account assignment F | the cost must be routed to the order, not stock |
| 25.3 | MIGO | Receive the bearing — expensed straight to the order, never stocked | arrival is the moment the repair cost posts |
| 25.4 | KO88 | Settle the order's cost to cost center PKKHI-PROD | the owning department must carry the repair cost |
25.1 — PM Maintenance Order · IW31
⚡ This step will: create the repair job's cost collector — the maintenance order — and on save the order raises its own purchase requisition for the bearing (nobody types a PR). 📄 paper: maintenance order + auto purchase requisition · 📦 stock: no change · 💰 money: no posting
PM consultant / maintenance planner creates a maintenance order. IW31 opens on an initial screen (Order Type, Priority, the technical object — Functional Location or Equipment — and Planning plant); pressing Enter opens the order itself as a tabbed screen — HeaderData (the main header), Operations (the labour steps) and Components (the spare parts that trigger the buy), plus Costs, Partner and more.
| Where on screen · Field | Fill | What the field asks (plain words) | Why we choose this — and the impact if wrong |
|---|---|---|---|
| Initial screen · Order Type | PM01 | What KIND of maintenance job is this? The order type is the job template — like picking "repair" vs "inspection" from a menu. | PM01 is the standard corrective-maintenance order, carrying the right rules and number range for a repair. Impact: the wrong type applies different rules/numbering and may not allow the spare-parts procurement you need |
| Initial screen · Equipment (technical object) | CNC-PK01-MIL01 | WHICH machine is being fixed? | Naming the equipment builds that machine's full repair history under it. Impact: a wrong object records this repair against the wrong machine, corrupting its history and costs |
| Initial screen · Planning plant | PK01 | WHERE is the work done — which plant owns the machine and the job? | PK01 (Karachi) owns the CNC machine. Impact: the wrong plant misroutes the work and later the cost settlement |
| Operations tab · work steps | Repair sequence | WHAT work steps are needed? The list of tasks the technician performs — the labour side of the job. | Defining operations lets labour and time be planned and costed. Impact: missing operations and the job has no work plan, so labour cannot be booked |
| Components tab · Spare part | SP-BEARING-01 | What PART does the job need? The material side of the order. | Listing the bearing here is exactly what triggers the buy. Impact: omit it and no requisition is raised — the part never gets ordered for the repair |
| Components tab · Quantity | 1 EA | How many of the part are needed (EA = each)? | One bearing is required for this repair. Impact: a wrong quantity over- or under-orders the spare and mis-states the order cost |
| Toolbar · Save | → Order # e.g. 8000001234 | Commits the order and gives it its number. | The order now exists as the cost collector — every cost of this repair gathers under this number. Impact: without a saved order there is no number for the PO (25.2) to charge against |
| After Save · auto-creates PR | if part not in stock + external procurement | How does buying start — who types the request? Nobody: the order raises a purchase requisition (a formal request to buy) by itself. | An out-of-stock, externally-procured component makes the order post its own "shopping slip" to purchasing — no manual step. Impact: if the part were stock or made in-house, no PR is raised and the buyer has nothing to convert |
MM consultant's role: Ensure spare part material master is created (MM01 ERSA) with Purchasing view + valuation class.
25.2 — Convert PR to PO · ME21N with account assignment F
⚡ This step will: turn the auto-PR into a binding promise to the vendor — and because the line carries account assignment F, the bearing's cost is pre-routed to order 8000001234, never to stock. 📄 paper: purchase order · 📦 stock: no change · 💰 money: no posting
Same ME21N 3 zones as before — Header (top: supplier), Item overview grid (the line + its AcctAssCat column A), Item detail tabs (the Account Assignment tab holds the order and G/L). The PR from 25.1 is pulled in from the left-hand document overview.
| Where on screen · Field | Fill | What the field asks (plain words) | Why we choose this — and the impact if wrong |
|---|---|---|---|
| Document overview (left pane) · adopt the PR | pull in the auto-created PR | What are you turning into a real order? You convert the shopping slip (PR) from 25.1 into an actual PO to the vendor. | Adopting the PR carries its account assignment and order link straight onto the PO. Impact: ignore the PR and re-key by hand and you risk losing the F assignment and the order number |
| Item grid · AcctAssCat column (A) | F (order) | WHERE should this cost land? Like writing on the receipt whose budget it belongs to. F = charge it to an order (the PM maintenance order); blank = goods go into stock; a cost centre = a department's running cost. | The spare is bought for one repair, so it must be expensed to that order, not stored. Impact: leave it blank and the bearing posts into inventory as stock — the repair's true cost is hidden and the order shows nothing |
| Item detail → Account Assignment tab · Order | PM order 8000001234 | WHICH order collects this cost? | Ties the PO line to the exact maintenance order from 25.1, so the bearing's cost gathers there and nowhere else. Impact: a wrong order number charges another job, distorting both orders' costs |
| Item detail → Account Assignment tab · G/L Account | auto 410100 Maintenance Material Expense | Which expense bucket in the books? Usually auto-filled from the account assignment, so you rarely type it. | It is an expense account, not an inventory one, because F means the part is used up on the job, not stored. Impact: forcing an inventory G/L here contradicts the F logic and the posting is rejected or mis-states the books |
| Toolbar · Save | — | Commits the PO. | The PO is ready and at goods receipt its cost flows straight to the order. Impact: unsaved, there is no PO for the GR (25.3) to receive against |
Posting at GR: Material Cost Dr / GR-IR Cr — cost tagged to PM order, not cost center directly.
25.3 — Goods Receipt · MIGO mvt 101
⚡ This step will: receive the bearing — but with F it never becomes stock: the first money document posts, expensing the part straight onto the maintenance order. 📄 paper: material + accounting document · 📦 stock: no change (consumed by the order, never stocked) · 💰 money: Dr Maintenance Expense 410100 / Cr GR/IR — tagged to order 8000001234
Do: MIGO → set the top bar to Goods Receipt + Purchase Order → type the PM-order PO → Enter → tick Item OK → Post.
| Where on screen · Field / Action | Fill | What it asks (plain words) | Why — and the impact if wrong |
|---|---|---|---|
| Top bar (header line) · Action + Reference | Goods Receipt + Purchase Order → the PO no. | What are you doing, against which paper? Receiving the bearing, against its PO. | The PO carries account assignment F and order 8000001234 with it. Impact: no PO reference and the cost has no order to land on. |
| Top bar (top-right) · Movement Type | 101 (auto) | Which kind of movement is this? | 101 = goods receipt for a PO — proposed automatically. Leave it. |
| Item detail → Where tab · Storage Location | field is ABSENT / greyed — correct! | Where should the bearing be put in stock? | Account assignment F means it is NOT stocked — it is consumed by the order — so SAP does not even ask for a location. Impact: if this field DID appear and demand a value, the line had lost its F assignment and would wrongly post to stock. |
| Item detail → Account Assignment tab | shows 410100 + order 8000001234, read-only | Where will the cost land? | Decided on the PO (25.2); MIGO only executes it. Check it reads right before posting. |
| Item overview grid · ☑ Item OK → toolbar · Post | tick the line → Post → note the material doc | Confirm the line, then make it real. | Forget the tick and Post fails "no items selected" — the #1 MIGO beginner error. |
What changes at this exact moment (the posting for this scenario):
| Maintenance Expense (410100) | Dr 5,000 | PM Order: 8000001234 |
| GR/IR (191100) | Cr 5,000 | — |
The difference from a stock GR: a normal 101 debits inventory; here the same 101 debits Maintenance Expense and tags it to order 8000001234 — there is no stock line at all. The bearing is expensed to the repair job the instant it arrives. The order now shows PKR 5,000 in its cost report, waiting for settlement (25.4).
25.4 — Settle PM Order to Cost Center · KO88 (end of month)
⚡ This step will: empty the temporary pocket — the 5,000 collected on the order moves to cost center PKKHI-PROD, and the order's balance returns to zero. 📄 paper: settlement (CO) document · 📦 stock: no change · 💰 money: Dr cost center PKKHI-PROD / Cr order 8000001234 (a CO posting, no vendor or bank involved)
PM/CO consultant runs KO88 to settle the maintenance order's accumulated cost to the receiver (cost center PKKHI-PROD). KO88 is a selection-screen transaction: on the initial screen you name the Order and the settlement/posting period, pick a Processing type, run a Test first, then Execute. The settlement rule itself is not typed here — it lives on the order (set in IW32/KO02) and KO88 simply reads it.
| Where on screen · Field | Fill | What the field asks (plain words) | Why we choose this — and the impact if wrong |
|---|---|---|---|
| Selection screen · Order | 8000001234 | Which order are you emptying? "Settle" = move the cost the order collected onto its permanent home. | The maintenance order was only a temporary box holding the repair cost; you settle that exact order. Impact: settle the wrong order and this repair's cost stays stuck while another empties wrongly |
| Selection screen · Settlement period | the month being closed | For WHICH month is the cost being moved? | Settlement runs per period so costs land in the correct month's accounts. Impact: the wrong period posts the cost into the wrong month, distorting period reporting |
| On the order (IW32/KO02) · Settlement rule | 100% to cost center PKKHI-PROD | WHERE does the collected cost go, and what share? The rule names the receiver and the split. | 100% to the production line's cost centre puts the whole repair cost on the department that owns the machine. Impact: a wrong receiver or split sends the repair cost to the wrong department's budget |
| Toolbar · Execute | — | Runs the settlement. | Cost moves from the order to the cost centre and the order balance returns to zero — its job as a collector is done. Impact: not executed, the cost sits on the order forever and the cost centre never sees the repair |
What changes at this exact moment:
| Cost Center PKKHI-PROD | Dr 5,000 | the production line that owns the machine now carries the repair cost |
| Maintenance Order 8000001234 | Cr 5,000 | the temporary collector is emptied — its balance returns to 0 |
The lesson: the order was only a temporary pocket. GR filled it with 5,000; KO88 pours that 5,000 onto the responsible cost center and leaves the order at zero. Until KO88 runs, the cost is "trapped" on the order and the cost center shows nothing.
These steps follow the cost (GR expense 410100 → KO88 settlement to the cost center), so no outgoing payment appears here. But the spare was bought from a supplier, so a payable still arises — just on a thread this page does not draw. After the GR (25.3), the vendor sends its bill and AP verifies it in MIRO (Dr GR/IR 191100 · Cr Vendor), turning the GR/IR credit into a real payable. That payable is then cleared by an ordinary outgoing payment — F-53 against Bank G/L 113100, debit the vendor and credit the bank, exactly as in Scenario 1, Step 5. Account assignment F only changed where the cost landed (the maintenance order, not stock); paying the vendor is completely ordinary.
- Create spare part material masters (ERSA type, ITAS prevention via Source List, alternative vendors)
- Maintain reorder points and safety stocks for critical spares
- Set up procurement type "F" (external) on spare materials
- Handle GR/IV for spare parts purchased via PM orders
- Coordinate with the PM team on consignment/safety stock arrangements
✅ Verification
| # | T-code | Check |
|---|---|---|
| 1 | IW33 | Maintenance order 8000001234 shows the spare component and the linked PR/PO |
| 2 | ME23N | PO line has Account Assignment Category F with order 8000001234 and G/L 410100 |
| 3 | MB03 / FB03 | GR document: Maintenance Expense 410100 Dr / GR-IR Cr — no inventory (300xxx) line |
| 4 | S_ALR_87013611 | After KO88, cost center PKKHI-PROD shows the settled 5,000 (order balance returns to zero) |
🎓 Interview-Ready Answers
Q: What does account assignment category F mean, and why use it for a spare part?
F = order (internal/PM/maintenance order). It tells SAP the procured item is consumed against that order rather than received into stock. At GR there is no inventory posting — the cost is expensed (e.g. to 410100 Maintenance Material Expense) and tagged to the order. Use it when a part is bought for a specific repair job so the order carries its true cost.
Q: How does a purchase requisition get created from Plant Maintenance?
When the maintenance order (IW31) has a non-stock component (or a stock item that's unavailable) with external procurement, releasing/saving the order auto-generates a PR carrying account assignment F and the order number. MM doesn't type it manually — it flows in like an MRP-driven requisition, and the buyer converts it to a PO.
Q: If the cost hits the order at GR, how does it reach the cost center?
The maintenance order is a temporary cost collector. At month-end, KO88 settles it according to its settlement rule — typically 100% to the responsible cost center (e.g. PKKHI-PROD). The cost moves from the order to the cost center and the order balance returns to zero.
Q: What is the MM consultant actually responsible for in this PM scenario?
Not PM config. MM owns the spare-part material masters (ERSA type with purchasing view and valuation class), source lists / alternative vendors, reorder points and safety stock for critical spares, the external procurement setting, and the GR/invoice verification for parts bought via PM orders. MM enables the buy; PM and CO own the maintenance cost.