🗺️ 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.
🧭 Where this page fits: this is the config map — how SAP MM fits together and how to debug it. Brand new? Start with Accounting 101 + SAP Basics. Want the full course? Curriculum (18 phases). Ready to practise? Scenarios · Interactive Tools. Click-by-click config lives in the Setup Guide.

🏠 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.
1

Org Structure — "Build the rooms"

🧒 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.
ElementT-codeWhat it is (plain)Our exampleWhich transaction breaks without it
Company CodeOX02The legal company — owns the balance sheet, files taxesPSPK (Pakistan), PSAE (UAE)EVERYTHING — no CC, no SAP
PlantOX10 + OX18The factory/warehouse + "whose books it posts to"PK01 Karachi Factory → PSPKPR/PO need a plant on every line; MIGO posts stock INTO a plant
Storage LocationOX09The room inside the factory where stock sitsRAWM (raw materials) in PK01MIGO asks "which shelf?" — GR needs an SLoc
Purchasing OrgOX08 + OX01 + OX17The buying department: who negotiates and signs POsPKLO buys for all PK plantsPO header REQUIRES a Purch Org; vendor prices are stored per Purch Org
Standard Purch OrgOMKIEach plant's DEFAULT buying department (for automatic processes)PK01 → PKLOSTO, pipeline, consignment, MRP-created PRs can't pick a Purch Org without it
Purchasing GroupOME4The individual buyer/team inside the Purch OrgRMT = Raw Materials Trading teamPR/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

2

Company Settings — "Electrical wiring" (the money system)

🧒 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.
SettingT-codeWhy it exists (plain)Which transaction breaks without itError we actually hit
Posting periods openOBBP+OB52"Which months is the cash register open?" Prevents posting into closed/old monthsEvery posting (F-02, MIGO, MIRO) checks the date
Global parametersOBY6Wires the CC to its Chart of Accounts (INT), fiscal year (V3), periods, field rulesEvery FI document validates against these
FI document number rangesFBN1"Ticket rolls" — every document type numbers its documents from its own rollMIGO (roll 45 in our IDES!), MIRO (roll 36!), F-53 (check OBA7!)NR751, F5150
Universal Journal ledgerFINSC_LEDGERRegisters the CC in S/4HANA's single accounting table (ACDOCA) + declares IFRS/local GAAPThe very first FI postingS/4-only step — guide 1H
Document splitting classificationSPROTags G/L accounts by category so documents can balance per segmentFI postings with splitting activeS/4-only step — guide 1I
G/L accounts EXTENDED to CCFS00Chart = song catalog; each CC adds songs to ITS playlist. Account exists ≠ account usable in YOUR CCMIGO needs 300000+191100 · MIRO needs 154000 (input tax) · payments need bank G/LsM7055, F5506
FI tolerance groupsOBA4Per-user posting limits ("a clerk may post up to X")Manual FI postings
Payment termsOBB8"When is an invoice due + early-payment discount" (0003 = 14d 2% / 30d net)Vendor master, MIRO due-date, F-53 discount calcguide 18F

📖 Detail steps: Setup Guide Step 1 (1A–1J) + Step 18F

3

MM↔FI Integration — "Smart switches" (movements become money)

🧒 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.
SettingT-codeWhy it exists (plain)Which transaction breaks without itError we actually hit
MM period initializedOMSYMM has its OWN month-clock per CC (separate from FI's OB52!). Must be started onceMM01 ("CC not fully maintained"), every MIGO✅ hit at MM01
Qty/Value updatingOMS2"Does this material TYPE carry value in this plant?" If not, SAP demands a cost center on every purchasePR/PO for stock materialME062
Valuation groupingOMWM/OMWDGroups plants under one code (0001) so ONE set of account rules serves many plantsOBYC lookup at every goods movement
Account determinationOBYCTHE 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/MIROwrong/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 saveM8215 PE
Material Ledger productiveOMX3OMX1CKMSTARTOpens the plant's "value diary" — S/4HANA refuses ALL stock movements until it's productiveFIRST MIGO ever in each plantFML_CUST097
LIV twin tablesOMRG + OMR2Two one-row-per-CC rulebooks: T169P = invoice checking rules, T169V = default tax codeMIGO (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 postM8215 VP
Invoice tolerances (PP/BD/DQ)OMR6The 3-way match referee: invoice vs PO price, invoice vs GR qty, small roundingMIRO postpre-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)

4

Master Data — "Furniture & people"

🧒 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 dataT-codeWhat it holds (plain)Our exampleUsed by which transaction
Material MasterMM01WHAT 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 PKRPR, PO, MIGO, MIRO all read it; Accounting view feeds OBYC
Business Partner (vendor)BPWHO 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, PKRPO header; MIRO posts the liability onto its recon account; F-53 pays it
Info RecordME11"Vendor X sells material Y at price P" — the price memoryMUGHAL21 + RM-IRON-01 + PKLO = 250,000/TOPO price auto-fills from here
Source ListME01The APPROVED-vendors list per material+plant; "Fixed" flag = auto-pickedRM-IRON-01 @ PK01 → MUGHAL21 fixedPR source determination; MRP auto-assignment — see Scenario 14 deep-dive

📖 Details: Material Master Reference · Setup Step 18 (BP config) · Scenario 1 (creation walkthroughs)

5

Transactions — "Living in the house" (the P2P cycle)

🧒 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.
StepT-codeWhat happens (plain)Money effectDocuments created
1. Purchase RequisitionME51NInternal wish: "we need 50 tons of iron ore" — no vendor commitment yetNONEPR (EBAN)
2. Purchase OrderME21NLegal 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 ReceiptMIGO 101Truck arrives, stock counted into RAWM💰 FIRST posting: Dr 300000 Inventory / Cr 191100 GR-IR (12.5M PKR)Material doc + FI doc
4. Invoice ReceiptMIROMughal'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 matchedInvoice doc + FI doc
5. PaymentF-53Pay 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:

CheckConfig behind itSegmentError if missing
Plant + SLoc validOX10/OX09/OX181field validation
Material exists with plant viewMM01 views4"Material not maintained for plant"
Material type carries value hereOMS2 + Accounting view3+4ME062 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:

CheckConfig behind itSegmentError if missing
Purch Org assigned to plant + CCOX17 + OX011"Plant not assigned to POrg"
Vendor extended to Purch OrgBP Purchasing role4"vendor not maintained"
Price within tolerance of material priceTolerance key PE (SPRO PO path)3M8215 PE
Price foundInfo Record (or manual)4"Net price is 0"
Tax code validFTXP per country procedure (TAXPKN!)2"tax code missing" — use I0
Approved vendor (if source list required)ME01 + MM02 flag4"Source not allowed" 06401

📦 MIGO 101 (Goods Receipt) checks — the famous gauntlet:

CheckConfig behind itSegmentError if missing
MM + FI periods openOMSY + OB523+2"period not open"
Material Ledger productive for the plantOMX3→OMX1→CKMSTART3FML_CUST097
LIV parameter row for CCOMRG (T169P)3M7001
Price-swing tolerance existsOMC0 key VP3M8215 VP
OBYC rule resolves accountsOBYC BSX/WRX for VGC+class3"account determination not possible"
Those G/Ls EXIST in the CCFS00 extension (300000, 191100)2M7055
FI doc gets a numberFBN1 interval (45 in our IDES — check OBA7!)2NR751

🧾 MIRO (Invoice Receipt) checks:

CheckConfig behind itSegmentError if missing
Default-values row for CCOMR2 (T169V) + default tax code3M8100
3-way match within toleranceOMR6 keys PP (price) / DQ (qty) / BD (rounding)3invoice blocked for payment
Tax account exists in CCFS00: 154000 Input Tax (via OB40 key VST)2F5506
FI doc gets a numberFBN1 interval (36 in our IDES!)2F5150
Vendor's recon account validBP Finance role (160000)4+2posting error

💸 F-53 (Payment) checks:

CheckConfig behind itSegmentError if missing
Open vendor item existsposted MIRO invoice5"no open items found"
Bank/cash G/L exists in CCFS00 (113100 / 100000)2account error
Payment doc number rangeFBN1 — check OBA7 for KZ/ZP mapping FIRST2F5150/NR751
Cash discount calculationPayment terms (0003) from MIRO2+4wrong/no discount
Vendor-side clearing tolerancesOBA3 (T043G — blank group = default for all vendors). Sibling of OBA4: OBA4=USER tolerances, OBA3=VENDOR tolerances2F5100 "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). 🇵🇰