🗺️ The MM Learning Path — 5 Segments, Plain Language
Everything from an empty system to your first vendor payment, organized into 5 digestible segments. Each segment answers: what is this, why does it exist, and which transaction breaks without it. Use this page as your MAP — click through to the detailed Setup Guide for click-by-click steps.
▶ Try it live: Flashcards — drill the org-structure facts with a spaced-repetition trainer.
🏠 The whole journey in one analogy: building and running a house
🧒 The golden rule a new person must understand: Segments 1–4 are done ONCE (setup). Segment 5 is done EVERY DAY (operations). When a Segment-5 transaction fails, the cause is ALWAYS a missing piece in Segments 1–4 — and the error message names it. This page maps every connection.
🧒 Plain words: Before anything can happen, SAP needs to know WHO the company is and WHERE things happen. These are the rooms of the house. They are created once and almost never change — changing them after go-live is like moving a wall.
| Element | T-code | What it is (plain) | Our example | Which transaction breaks without it |
| Company Code | OX02 | The legal company — owns the balance sheet, files taxes | PSPK (Pakistan), PSAE (UAE) | EVERYTHING — no CC, no SAP |
| Plant | OX10 + OX18 | The factory/warehouse + "whose books it posts to" | PK01 Karachi Factory → PSPK | PR/PO need a plant on every line; MIGO posts stock INTO a plant |
| Storage Location | OX09 | The room inside the factory where stock sits | RAWM (raw materials) in PK01 | MIGO asks "which shelf?" — GR needs an SLoc |
| Purchasing Org | OX08 + OX01 + OX17 | The buying department: who negotiates and signs POs | PKLO buys for all PK plants | PO header REQUIRES a Purch Org; vendor prices are stored per Purch Org |
| Standard Purch Org | OMKI | Each plant's DEFAULT buying department (for automatic processes) | PK01 → PKLO | STO, pipeline, consignment, MRP-created PRs can't pick a Purch Org without it |
| Purchasing Group | OME4 | The individual buyer/team inside the Purch Org | RMT = Raw Materials Trading team | PR/PO require it — it's the "who is responsible" stamp + reporting filter |
📖 Detail steps: Setup Guide Steps 1, 3, 4, 5, 8–12 · Interactive learning: Org Structure page
🧒 Plain words: The rooms exist, but no electricity flows yet. This segment wires the company code so ACCOUNTING can work: which months are open, how documents get numbered, which accounts exist, what variance is tolerated. Owner: FI module — but MM consultants MUST know it, because every MM document eventually becomes an FI document.
| Setting | T-code | Why it exists (plain) | Which transaction breaks without it | Error we actually hit |
| Posting periods open | OBBP+OB52 | "Which months is the cash register open?" Prevents posting into closed/old months | Every posting (F-02, MIGO, MIRO) checks the date | — |
| Global parameters | OBY6 | Wires the CC to its Chart of Accounts (INT), fiscal year (V3), periods, field rules | Every FI document validates against these | — |
| FI document number ranges | FBN1 | "Ticket rolls" — every document type numbers its documents from its own roll | MIGO (roll 45 in our IDES!), MIRO (roll 36!), F-53 (check OBA7!) | NR751, F5150 |
| Universal Journal ledger | FINSC_LEDGER | Registers the CC in S/4HANA's single accounting table (ACDOCA) + declares IFRS/local GAAP | The very first FI posting | S/4-only step — guide 1H |
| Document splitting classification | SPRO | Tags G/L accounts by category so documents can balance per segment | FI postings with splitting active | S/4-only step — guide 1I |
| G/L accounts EXTENDED to CC | FS00 | Chart = song catalog; each CC adds songs to ITS playlist. Account exists ≠ account usable in YOUR CC | MIGO needs 300000+191100 · MIRO needs 154000 (input tax) · payments need bank G/Ls | M7055, F5506 |
| FI tolerance groups | OBA4 | Per-user posting limits ("a clerk may post up to X") | Manual FI postings | — |
| Payment terms | OBB8 | "When is an invoice due + early-payment discount" (0003 = 14d 2% / 30d net) | Vendor master, MIRO due-date, F-53 discount calc | guide 18F |
📖 Detail steps: Setup Guide Step 1 (1A–1J) + Step 18F
🧒 Plain words: THE defining magic of SAP: when a warehouse worker clicks "Post" on a goods receipt, accounting entries appear automatically — nobody types debit/credit. This segment is the wiring that makes that magic work. This is THE segment that makes you an MM consultant rather than an end user. It's also where ALL our first-GR errors lived.
| Setting | T-code | Why it exists (plain) | Which transaction breaks without it | Error we actually hit |
| MM period initialized | OMSY | MM has its OWN month-clock per CC (separate from FI's OB52!). Must be started once | MM01 ("CC not fully maintained"), every MIGO | ✅ hit at MM01 |
| Qty/Value updating | OMS2 | "Does this material TYPE carry value in this plant?" If not, SAP demands a cost center on every purchase | PR/PO for stock material | ME062 |
| Valuation grouping | OMWM/OMWD | Groups plants under one code (0001) so ONE set of account rules serves many plants | OBYC lookup at every goods movement | — |
| Account determination ⭐ | OBYC | THE translator: "GR of raw material (class 3000) → Dr 300000, Cr 191100." Keys: BSX (stock), WRX (GR/IR), GBB (issues), PRD (price diff) | EVERY automatic posting from MIGO/MIRO | wrong/missing rule = wrong account or error |
| PO price tolerance (PE) | SPRO path (NOT OMR6!) | "How far may PO price differ from material price before blocking?" | ME21N save | M8215 PE |
| Material Ledger productive | OMX3→OMX1→CKMSTART | Opens the plant's "value diary" — S/4HANA refuses ALL stock movements until it's productive | FIRST MIGO ever in each plant | FML_CUST097 |
| LIV twin tables | OMRG + OMR2 | Two one-row-per-CC rulebooks: T169P = invoice checking rules, T169V = default tax code | MIGO (T169P) and MIRO (T169V) | M7001, M8100 |
| GR tolerances (VP/B1/B2) | OMC0 | "How much may a receipt swing the average price / exceed PO qty?" | MIGO post | M8215 VP |
| Invoice tolerances (PP/BD/DQ) | OMR6 | The 3-way match referee: invoice vs PO price, invoice vs GR qty, small rounding | MIRO post | pre-configured in 1N ✅ |
📖 Detail steps: Setup Guide 1K, 1N, 1O, 1P + Steps 6-7 — including the 🏆 9-Gate Gauntlet table (every error in order with its 2-minute fix)
🧒 Plain words: The house works — now bring in WHAT you trade and WHO you trade with. Master data is created continuously during operations (new materials, new vendors), but the FIRST set must exist before the first transaction. Rule of thumb: master data answers WHO/WHAT, configuration answers HOW.
| Master data | T-code | What it holds (plain) | Our example | Used by which transaction |
| Material Master | MM01 | WHAT you buy/stock — in views: Basic (name/unit), Plant (MRP), Purchasing (buyer data), Accounting (valuation class + price — the FI link!) | RM-IRON-01, class 3000, MAP 250,000 PKR | PR, PO, MIGO, MIRO all read it; Accounting view feeds OBYC |
| Business Partner (vendor) | BP | WHO you buy from — 3 layers: General (address/NTN), Finance role (recon acct + payment terms per CC), Purchasing role (currency + terms per POrg) | MUGHAL21 — Mughal Steel, recon 160000, terms 0003, PKR | PO header; MIRO posts the liability onto its recon account; F-53 pays it |
| Info Record | ME11 | "Vendor X sells material Y at price P" — the price memory | MUGHAL21 + RM-IRON-01 + PKLO = 250,000/TO | PO price auto-fills from here |
| Source List | ME01 | The APPROVED-vendors list per material+plant; "Fixed" flag = auto-picked | RM-IRON-01 @ PK01 → MUGHAL21 fixed | PR source determination; MRP auto-assignment — see Scenario 14 deep-dive |
📖 Details: Material Master Reference · Setup Step 18 (BP config) · Scenario 1 (creation walkthroughs)
🧒 Plain words: Everything before this was setup, done once. THIS is the daily work — the Procure-to-Pay cycle. Each step consumes the segments below it. Notice WHERE money actually moves: not at PR, not at PO — the first real accounting entry is the Goods Receipt.
| Step | T-code | What happens (plain) | Money effect | Documents created |
| 1. Purchase Requisition | ME51N | Internal wish: "we need 50 tons of iron ore" — no vendor commitment yet | NONE | PR (EBAN) |
| 2. Purchase Order | ME21N | Legal promise to Mughal Steel: "we will buy 50 TO @ 250,000" — adopt the PR, don't retype! | NONE (commitment only) | PO (EKKO/EKPO) |
| 3. Goods Receipt | MIGO 101 | Truck arrives, stock counted into RAWM | 💰 FIRST posting: Dr 300000 Inventory / Cr 191100 GR-IR (12.5M PKR) | Material doc + FI doc |
| 4. Invoice Receipt | MIRO | Mughal's invoice arrives — SAP runs the 3-way match (PO=GR=Invoice?) | 💰 Dr 191100 GR-IR / Cr Vendor (160000). GR/IR nets to ZERO = proof all matched | Invoice doc + FI doc |
| 5. Payment | F-53 | Pay Mughal Steel — within 14 days = 2% discount (terms 0003!) | 💰 Dr Vendor / Cr Bank (−2% discount if early) | Payment doc, clears the open item |
📖 Practice: 26 P2P Scenarios · PO field-by-field reference · Interactive walkthrough · P2P Database Explorer (live)
🔍 The Reverse Lookup — what does each transaction actually CHECK?
This is the table that makes errors boring. When a transaction fails, find it here — the "checks" column tells you which segment piece is missing. Every error code below is one we genuinely hit and fixed.
🛒 ME51N (Purchase Requisition) checks:
| Check | Config behind it | Segment | Error if missing |
| Plant + SLoc valid | OX10/OX09/OX18 | 1 | field validation |
| Material exists with plant view | MM01 views | 4 | "Material not maintained for plant" |
| Material type carries value here | OMS2 + Accounting view | 3+4 | ME062 acct assignment mandatory |
| Vendor valid for the Purch Org (if Source of Supply filled) | BP Purchasing role (LFM1) | 4 | "vendor not maintained for POrg" |
📄 ME21N (Purchase Order) checks:
| Check | Config behind it | Segment | Error if missing |
| Purch Org assigned to plant + CC | OX17 + OX01 | 1 | "Plant not assigned to POrg" |
| Vendor extended to Purch Org | BP Purchasing role | 4 | "vendor not maintained" |
| Price within tolerance of material price | Tolerance key PE (SPRO PO path) | 3 | M8215 PE |
| Price found | Info Record (or manual) | 4 | "Net price is 0" |
| Tax code valid | FTXP per country procedure (TAXPKN!) | 2 | "tax code missing" — use I0 |
| Approved vendor (if source list required) | ME01 + MM02 flag | 4 | "Source not allowed" 06401 |
📦 MIGO 101 (Goods Receipt) checks — the famous gauntlet:
| Check | Config behind it | Segment | Error if missing |
| MM + FI periods open | OMSY + OB52 | 3+2 | "period not open" |
| Material Ledger productive for the plant | OMX3→OMX1→CKMSTART | 3 | FML_CUST097 |
| LIV parameter row for CC | OMRG (T169P) | 3 | M7001 |
| Price-swing tolerance exists | OMC0 key VP | 3 | M8215 VP |
| OBYC rule resolves accounts | OBYC BSX/WRX for VGC+class | 3 | "account determination not possible" |
| Those G/Ls EXIST in the CC | FS00 extension (300000, 191100) | 2 | M7055 |
| FI doc gets a number | FBN1 interval (45 in our IDES — check OBA7!) | 2 | NR751 |
🧾 MIRO (Invoice Receipt) checks:
| Check | Config behind it | Segment | Error if missing |
| Default-values row for CC | OMR2 (T169V) + default tax code | 3 | M8100 |
| 3-way match within tolerance | OMR6 keys PP (price) / DQ (qty) / BD (rounding) | 3 | invoice blocked for payment |
| Tax account exists in CC | FS00: 154000 Input Tax (via OB40 key VST) | 2 | F5506 |
| FI doc gets a number | FBN1 interval (36 in our IDES!) | 2 | F5150 |
| Vendor's recon account valid | BP Finance role (160000) | 4+2 | posting error |
💸 F-53 (Payment) checks:
| Check | Config behind it | Segment | Error if missing |
| Open vendor item exists | posted MIRO invoice | 5 | "no open items found" |
| Bank/cash G/L exists in CC | FS00 (113100 / 100000) | 2 | account error |
| Payment doc number range | FBN1 — check OBA7 for KZ/ZP mapping FIRST | 2 | F5150/NR751 |
| Cash discount calculation | Payment terms (0003) from MIRO | 2+4 | wrong/no discount |
| Vendor-side clearing tolerances | OBA3 (T043G — blank group = default for all vendors). Sibling of OBA4: OBA4=USER tolerances, OBA3=VENDOR tolerances | 2 | F5100 "entry PSPK missing in T043G" |
🎯 How a new person should use this page: (1) Read the 5 segments top to bottom once — 20 minutes, you'll understand the SHAPE of SAP MM. (2) When you start clicking in the system, keep the Reverse Lookup open — every error becomes a 2-minute lookup instead of a panic. (3) For click-by-click detail, follow the 📖 links into the Setup Guide and Scenarios.
Built from a real journey: every error code on this page was genuinely hit and fixed in a live S/4HANA IDES (company code PSPK, June 2026). 🇵🇰