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 |
📦 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 1 — Purchase Requisition · ME51N
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!)
What: The legal commitment to the vendor.
✅ Flow A — Convert PR → PO (recommended)
- Run ME21N — don't type anything yet
- ⭐ Most reliable method (worked in our IDES): 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.)
- 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% — ⚠️V0did NOT exist in our IDES; 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
What: Vendor delivers; you post the ore into inventory. The first accounting entry hits here.
- 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
What: Vendor invoice verified against PO + GR (qty/price). Posting creates the vendor liability.
- 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)
What: Pay the vendor and clear the AP liability.
- 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
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 |
| MIGO | ML not productive for valuation area PSPK | Material Ledger not activated | OMX2/OMX3 + CKMSTART — Step 1O |
| MIGO | Maintain tolerance limits for key VP | OMC0 missing | OMC0 → VP for PSPK — details |
| MIGO | Posting period not open | OB52 | OB52 → open period for variant PSPK |
| MIRO | Balance not zero | Qty/price mismatch | Check GR qty vs invoice qty, PO price vs invoice price |
| 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.