Scenario 1 — Stock Procurement (The Basic P2P Cycle)
📊 Business Case — When & Why You Use This
Stock procurement is how a company buys physical material and puts it into its own warehouse as inventory — to be consumed in production or sold later. It is the single most common purchasing process in any manufacturing or trading business, and the master pattern every other scenario in this hub extends.
🕐 When to use it
You are buying a stockable material (raw material, packaging, trading goods) that should sit in inventory before it's used. Material type ROH/HALB/FERT, valuated, with a material master.
❓ Why it matters
It links MM ↔ FI automatically: every goods movement posts the right G/L accounts with no manual journal entry. Master this and you understand 80% of SAP procurement.
👤 Who triggers it
MRP, production planning, or a storekeeper raises the need → buyer converts to a PO → warehouse receives → AP pays. Four departments, one connected chain.
🔁 How often
The everyday case — the majority of all purchase orders in a make-or-trade business. If you only learn one scenario, learn this one cold.
💰 Financial Impact — The Easy-Money Example
Forget the jargon for a second. Here is what this scenario does to the company's money, in plain terms, using our example: PakSteel buys 50 tons of iron ore from Mughal Steel for ₨12,500,000 on credit.
Net effect on the balance sheet: the company swapped ₨12.5M of cash for ₨12.5M of iron ore inventory. Nothing hit the Profit & Loss yet — buying stock is not an expense. The expense (cost of goods) only appears later, when the iron is issued to production or sold (that's Scenario 3).
0003 = "2% discount if paid within 14 days, otherwise net in 30 days." So you have a choice:
- Pay early (within 14 days): you pay only ₨12,250,000 — SAP automatically posts the ₨250,000 you saved to a "Cash Discount Received" income account (G/L 276000). Free ₨250,000.
- Pay late (day 30): you pay the full ₨12,500,000.
0003 field on the vendor master is not just decoration.
🇵🇰 The Business Story (our running example)
MUGHAL21). The ore goes into the raw-material warehouse (storage location RAWM). Price ₨250,000/ton → order value ₨12,500,000. Payment terms 0003, input tax I0 (0%). Company code PSPK (PKR), purchasing org PKLO, purchasing group RMT.
🎯 What you'll learn
- How the 5-step P2P cycle flows through SAP tables (EBAN → EKKO/EKPO → MSEG → BKPF/BSEG)
- Why valuation class + OBYC drive every accounting entry — with zero manual posting
- How GR/IR clearing works (the famous transit account that must net to zero)
- How to verify each step at the database level and trace the whole document chain
📋 Prerequisites
Before this scenario runs, the org structure and MM-FI integration must exist. If you built them via the Setup Guide, you're ready.
| Item | Quick status check |
|---|---|
| CC PSPK fully configured | SE16N → T001 → row for BUKRS=PSPK |
| Plant PK01 assigned to PSPK | T001W → PK01 with BUKRS=PSPK |
| Storage Location RAWM at PK01 | T001L → WERKS=PK01, LGORT=RAWM |
| Purch Org PKLO + assignments | T024E, T024W rows |
| Purch Group RMT | T024 → EKGRP=RMT |
| OBYC entries for valuation class 3000 | T030 → BSX, WRX, GBB rows for VKO=0001, BKLAS=3000 |
- Org structure + MM-FI integration are built — Setup Guide.
- The one-time posting-period, tolerance and number-range gates are open (this scenario posts a goods receipt) — Stock-Readiness Checklist.
- OBYC account determination is set for the material's valuation class — Stock Readiness — OBYC.
- The vendor (Business Partner) exists — BP Guide.
- The material exists (ROH, valuated) — Material Guide.
📦 Master Data Setup
- Material
RM-IRON-01(ROH, raw iron) — create steps · the why behind every field - Vendor
MUGHAL21(Business Partner) — create steps · the BP guide (vendor & customer)
Both moved to their own pages so any scenario can link to them. Then maintain the price link below.
Link them — Create Info Record · ME11 · Material ↔ Vendor + price
What: The agreement "Vendor X sells Material Y to Plant Z at price P." PR/PO then auto-suggests the price. Optional but standard.
- Run ME11 → Vendor
MUGHAL21· MaterialRM-IRON-01· Purch OrgPKLO· PlantPK01· Standard - Purch Org Data 1: Net Price
250000· Currency PKR · Validity to 31.12.9999 → Save
Verify: SE16N → EINA + EINE populated.
🔄 Transaction Flow — The 5 Steps
| Step | T-code | What it does | Why this step exists |
|---|---|---|---|
| 1 | ME51N | Create a wish-list asking purchasing to buy 50 tons | a need must be written down first |
| 2 | ME21N | Turn the wish into a binding order to Mughal Steel | a promise needs a document |
| 3 | MIGO | Post the ore into stock; first money entry | stock and money must move together |
| 4 | MIRO | Record the vendor's bill; a real debt appears | a bill must match order and receipt |
| 5 | F-53 | Pay the vendor and clear the debt | a purchase isn't finished until the vendor is paid |
| 6 | ME23N · FBL1N · FB03 | Display only — walk the finished document chain | proof the whole chain closed cleanly |
Step 1 — Purchase Requisition · ME51N
⚡ This step will: create a wish-list paper asking purchasing to buy the 50 tons — no promise to any vendor yet. 📄 paper: purchase requisition · 📦 stock: no change · 💰 money: no posting
What: Internal request "I need this material." No vendor commitment yet, no FI posting.
- Run ME51N → Doc Type
NB - Line 1: Material
RM-IRON-01· Qty50 TO· Delivery date today+14 · PlantPK01· Sto LocRAWM· Purch GrpRMT - Item Detail → Source of Supply: vendor
MUGHAL21(info record suggests 250000/TO) → Save → PR # e.g. 10000123
Tables: EBAN (+ EBKN if account-assigned).
Step 2 — Purchase Order · ME21N · adopt the PR (don't re-type!)
⚡ This step will: turn the wish into a binding promise to Mughal Steel — plant PK01 starts showing the 50 TO as On-Order (a promise, not stock). 📄 paper: purchase order · 📦 stock: no change · 💰 money: no posting
What: The legal commitment to the vendor.
The ME21N screen has 3 zones — ① the Header (top: doc type, vendor, dates, with header tabs like Org Data), ② the Item overview grid (one ROW per line you buy), ③ the Item detail tabs below (for the selected line). Adopting a PR fills zones ① and ② for you — you only verify them and add the Invoice-tab tax code.
✅ Flow A — Convert PR → PO (recommended)
- Run ME21N — don't type anything yet
- ⭐ Most reliable method: in the PO item table scroll right to the "Purchase Requisition" column → type the PR number → Enter → all fields auto-copy. (Alternative: Document Overview On → Purchase Requisitions → drag the item across — plain cause & fix if drag-and-drop does nothing.)
- SAP auto-copies: Material, Plant, Storage Loc, Qty, UOM, Vendor, Purch Org, Purch Group, Net Price, Material Group, Delivery Date, Currency.
- You only add/verify: Tax Code
I0(Input 0% —V0may not exist on your system; press F4 to see your codes, "I" prefix = input tax for purchases) · Header → Org Data CCPSPK· Delivery/Invoice tab payment terms (auto from vendor) - Check → Save → PO # e.g.
4500000123. PR now shows "PO created."
⚠️ Flow B — Direct PO (no PR)
Only for urgent/low-value/recurring buys. Enter everything manually: Doc Type NB · Vendor MUGHAL21 · Org Data (PKLO/RMT/PSPK) · Item (RM-IRON-01, 50 TO, 250000, PK01, RAWM) · Invoice tab Tax I0 → Check → Save. No PR-PO audit link.
Tables: EKKO + EKPO + EKET + EKPV (Flow A link) + EKBE. No accounting entry yet — a PO is a commitment, not a posting.
Step 3 — Goods Receipt · MIGO · movement 101 · first FI entry
⚡ This step will: bring the ore IN: the shelf at RAWM fills AND the first money document posts. 📄 paper: material + accounting document · 📦 stock: ↑ 50 TO at PK01/RAWM · 💰 money: Dr Inventory / Cr GR/IR
What: Vendor delivers; you post the ore into inventory. The first accounting entry hits here.
MIGO has 3 zones — ① the top bar (two dropdowns, Action + Reference, plus the movement type), ② the header tabs (General/Vendor: dates, delivery note), ③ the item area — the overview grid plus the item-detail tabs (Material · Quantity · Where · Account Assignment) with ☑ Item OK at the bottom.
⚠️ First goods receipt in a brand-new company code can raise one-time config errors — each has its plain cause & fix in the Error Registry: Material Ledger not productive · LIV tables T169P/T169V · VP tolerance · G/L not in company code · FI document number range.
- Run MIGO → Goods Receipt · Purchase Order · PO
4500000123 - Movement Type 101 (auto) · Header: Delivery Note (any text) · Posting Date today
- Item: confirm Qty 50 TO, Sto Loc RAWM, tick Item OK → Check → Post
- Material Doc # + FI Doc # generated
| Posting Key | G/L | Description | Amount (PKR) |
|---|---|---|---|
| 89 Inventory Dr | 300000 | Raw Material Inventory (BSX, VKL 3000) | Dr 12,500,000 |
| 96 GR/IR Cr | 191100 | GR/IR Clearing (WRX) | Cr 12,500,000 |
Tables: MSEG + MKPF + BKPF/BSEG + MBEW. Verify: MMBE → 50 TO unrestricted at PK01/RAWM.
Step 4 — Invoice Receipt · MIRO · 3-way match
⚡ This step will: record the vendor's bill: the GR/IR IOU clears and a real debt to Mughal Steel appears. 📄 paper: invoice document · 📦 stock: no change · 💰 money: Dr GR/IR / Cr Vendor
What: Vendor invoice verified against PO + GR (qty/price). Posting creates the vendor liability.
The MIRO screen has 3 zones — ① the Header tabs (Basic Data · Payment · Details · Tax) where the invoice date, reference and Amount go, ② the PO-reference / allocation area that pulls the ordered lines in, ③ the item list; the Balance indicator sits top-right and must read 0.00 · green before you Post.
- Run MIRO → Invoice · Invoice Date · Posting Date today · Reference (vendor inv #)
- Amount
12,500,000· PO Reference4500000123→ Enter - System pulls the GR line (50 TO @ 250,000) · Balance must be 0.00 🟢 → Post → Invoice doc #
| Posting Key | G/L | Description | Amount (PKR) |
|---|---|---|---|
| 86 GR/IR Dr | 191100 | GR/IR Clearing (clears the GR credit) | Dr 12,500,000 |
| 31 Vendor Cr | 160000 | Trade Payables (via recon account) | Cr 12,500,000 |
The GR/IR test: after GR + IV the account nets to 0. Non-zero = qty/price mismatch. Tables: RBKP + RSEG + BKPF/BSEG.
Step 5 — Vendor Payment · F-53 (manual) or F110 (run)
⚡ This step will: pay the debt: the vendor's account clears and the bank shrinks (₨250,000 less if you pay within 14 days). 📄 paper: payment document · 📦 stock: no change · 💰 money: Dr Vendor / Cr Bank (+ Cr Cash Discount if paid early)
What: Pay the vendor and clear the AP liability.
The F-53 screen has 3 blocks — ① the document header (dates + company code), ② the Bank data block (which cash G/L + how much leaves), ③ the Open item selection block (the vendor) → then Process Open Items opens the Open-items screen where you pick the exact invoice so it clears.
- Run F-53 → Doc/Posting Date today · CC
PSPK· Currency PKR - Bank Data: G/L
113100· Amount12,500,000(or12,250,000if taking the 2% early-payment discount) - Open Item Selection: Vendor
MUGHAL21→ Process Open Items → select the invoice → Amount Entered = Assigned → Post
| Posting Key | G/L | Description | Amount (PKR) |
|---|---|---|---|
| 25 Vendor Dr | 160000 | Trade Payables (clears the credit) | Dr 12,500,000 |
| 50 Bank Cr | 113100 | Bank Main Account | Cr 12,250,000 |
| 50 Discount Cr | 276000 | Cash Discount Received (only if paid ≤14 days) | Cr 250,000 |
If you pay after 14 days, drop the discount row and Bank = full 12,500,000. Tables: BKPF/BSEG + BSAK (cleared items).
Step 6 — Trace the whole document flow · ME23N · FBL1N · FB03
⚡ This step will: create nothing — it is display only: you walk the finished document chain and prove the vendor is fully paid. 📄 paper: — · 📦 stock: no change · 💰 money: no posting
What: Prove every link in the chain and that the vendor is fully cleared — a daily consultant skill.
- PO History hub: ME23N → item → tab Purchase Order History → see WE (GR) + RE-L (invoice); click any to drill to its FI doc.
- Prove vendor is clear: FBL1N → MUGHAL21 → "Cleared items": invoice (RE) + payment (KZ) share the same Clearing Document (AUGBL). "Open items" → empty = fully paid.
- Relationship Browser: FB03 → any FI doc → Environment → Relationship Browser → the whole document family tree.
💰 Complete Accounting Trail (T-account view)
| G/L Account | GR (101) | IV (MIRO) | Payment (F-53) | Net |
|---|---|---|---|---|
| 300000 Raw Material Inventory | Dr 12,500,000 | — | — | Dr 12,500,000 |
| 191100 GR/IR Clearing | Cr 12,500,000 | Dr 12,500,000 | — | 0 ✓ |
| 160000 Trade Payables | — | Cr 12,500,000 | Dr 12,500,000 | 0 ✓ |
| 113100 Bank | — | — | Cr 12,500,000 | Cr 12,500,000 |
Net: Inventory ↑ ₨12.5M · Bank ↓ ₨12.5M · GR/IR clears to 0 (success indicator) · Vendor clears to 0 (paid). (Taking the 2% discount shifts ₨250,000 from Bank to G/L 276000 income.)
🚨 Common Errors & Fixes
Hit an error not listed here? Search the full Troubleshooting Command Center.
| Step | Error | Root cause | Fix |
|---|---|---|---|
| MM01 | Valuation class 3000 not allowed for ROH | OMSK config | OMSK → ROH → allow 3000–3999 |
| ME21N | Net price is 0.00 | No info record | ME11, or enter price in PO line |
| MIGO | Account determination INT BSX VKL 3000 not possible | OBYC missing | OBYC → BSX → add VKL 3000 → G/L 300000 · registry |
| MIGO | ML not productive for valuation area PSPK | Material Ledger not activated | OMX2/OMX3 + CKMSTART — Step 1O · registry |
| MIGO | Maintain tolerance limits for key VP | OMC0 missing | OMC0 → VP for PSPK · registry |
| MIGO | Posting period not open | OB52 | OB52 → open period for variant PSPK · registry |
| MIRO | Balance not zero | Qty/price mismatch | Check GR qty vs invoice qty, PO price vs invoice price · registry |
| F-53 | No open items found | Wrong vendor / already paid | FBL1N → check open status |
✅ Verification — Confirm Scenario 1 Worked
| # | T-code | Check |
|---|---|---|
| 1 | ME53N | PR status = Completed (converted to PO) |
| 2 | ME23N | PO status = Delivered + Invoiced |
| 3 | MB51 | Mvt 101 entry for RM-IRON-01 at PK01/RAWM |
| 4 | MMBE | 50 TO unrestricted at PK01/RAWM |
| 5 | MIR4 | Invoice posted, balance 0 |
| 6 | FBL1N | Vendor MUGHAL21 → no open items (cleared) |
| 7 | FAGLB03 | G/L 191100 GR/IR → net 0 for this PO |
| 8 | FBL3N | G/L 300000 → debit of 12,500,000 visible |
🎓 Interview-Ready Answers
Q: Walk me through the standard P2P cycle.
PR (internal request, ME51N) → PO (commitment, ME21N, no FI hit) → GR (101, MIGO — Inventory Dr, GR/IR Cr) → IV (MIRO — GR/IR Dr, Vendor Cr; 3-way match) → Payment (F-53/F110 — Vendor Dr, Bank Cr). GR/IR clears across GR + IV; non-zero means a qty or price mismatch.
Q: Difference between V and S price control?
V = Moving Average — valuation updates with every GR at actual price; used for raw materials with varying prices. S = Standard Price — fixed in the master, variance posts to a separate account; used for finished goods for stable costing.
Q: How does GR auto-determine G/L 300000 with no manual entry?
Material's Valuation Class (3000) + Movement Type (101) + Transaction Key (BSX) + Chart of Accounts (INT) → OBYC table lookup → G/L 300000. Pure config.
Q: Why is buying stock not an expense?
It's an asset swap — cash (or a payable) becomes inventory, both on the balance sheet. The P&L expense (consumption / COGS) only posts later when the material is issued to production or sold.