Practice end-to-end Procure-to-Pay through 24 progressive scenarios — from basic stock procurement to subcontracting, STO, batch management, release strategies, and custom configurations. Every scenario uses our Pakistani PakSteel org structure (PSPK/PSAE) so you build deep, transferable MM skills.
🎯 Why 26 scenarios (and not just one P2P walkthrough)?
Real businesses don't do one type of procurement. A typical Pakistani manufacturer like PakSteel will, in the same week, buy raw materials (stock), pay consultants (services), import machinery (asset + foreign currency), reject defective bearings (return), transfer stock between Karachi and Lahore plants (STO), and send fabric to a subcontractor for stitching. Each is a different MM scenario with different config.
This page walks you through 24 scenarios that cover 95% of what an MM functional consultant actually configures on real projects. You'll learn them in progression — basic foundations first, then complexity layers on top.
🧭 How to use this page
Start at Scenario 1 — it teaches the core P2P pattern (PR → PO → GR → IV → Payment). Every other scenario is a variation of this.
Do Tier 1 first (Scenarios 1-3) — basic flows you can run with just the CC + plant we set up
Then Tier 2-3 (Scenarios 4-8) — adds CO settings, multi-plant flows
Then Tiers 4-7 — special procurement (subcon/consign), process controls (release/source), master data features (batch/QM), customization
Tier 8 is Pakistani-specific — import procurement, withholding tax (skip if you'll work in other geographies)
Each scenario tells you exactly what config it needs. Don't pre-configure everything — configure as you learn each scenario.
🔗 MM doesn't live alone — Cross-Module Integration
As an MM consultant, your job is to understand how MM connects to OTHER SAP modules. Every MM transaction touches at least FI; many touch SD, CO, PP, QM, PM, or PS. Each scenario below is tagged with the modules it integrates — so when discussing with clients, you can immediately say which areas to involve.
🏷️ Module tags used throughout scenarios
Tag
Module
What it means for MM
MM
Materials Management
Always present — the core module
FI
Financial Accounting
G/L postings, AP, AR — every MM doc creates FI doc
CO
Controlling
Cost center / order / project assignments on PO lines
SD
Sales & Distribution
Outbound deliveries, billing — needed for STO cross-CC, third-party
PP
Production Planning
BOMs, production orders, work centers, MRP-driven PRs
QM
Quality Management
GR to inspection stock, usage decisions, quality certs
PM
Plant Maintenance
Maintenance order spare part procurement, refurbishment
PS
Project System
WBS-assigned POs (account assignment P)
AM
Asset Management (FI-AA)
Asset procurement (account assignment A)
WM
Warehouse Management
Storage bin, putaway, picking (advanced)
📚 How prerequisite setup works in this guide
Most scenarios only need MM + FI setup (covered in Setup Guide Steps 1-15). Some scenarios need additional setup in other modules:
Scenarios 25-26 (NEW — MM+PM, MM+PS) need PM/PS module references → covered in scenario itself
Setup just-in-time: Don't pre-configure SD/PP/QM/etc. at the start. Wait until you reach a scenario that needs it, then go to the relevant Setup Guide step (16 or 17), do that piece, come back to the scenario. This way you learn modules ONLY when MM actually touches them — efficient and contextual.
📋 The 26 scenarios at a glance
Click any row to jump to the scenario. Estimated time = full hands-on in IDES from config to verification.
🔗 Modules legend — colored tags show every module touched in each scenario. Helps you know what to activate/setup:
MM Materials Management
FI Financial Accounting
CO Controlling
SD Sales & Distribution
PP Production Planning
QM Quality Management
PM Plant Maintenance
PS Project System
AM Asset Management
WM Warehouse Management
Tier 9 (Sc 25-26): Cross-module integration → MM ↔ PM, MM ↔ PS · adds PMPS
🎯 Module activation cheat sheet — when to ask Basis to activate
Use this when joining a real project — tells you which modules MUST be active for each scenario family:
Module
Always Active?
Needed For Scenarios
Pakistani Industries
MM Materials Management
✅ ALWAYS (core)
ALL (1-26)
All
FI Financial Accounting
✅ ALWAYS (core)
1, 2, 4-12, 15, 17, 18, 23, 24, 25, 26
All
CO Controlling
✅ Usually active
3, 4, 5, 6, 11, 25, 26
All (cost centers/orders)
SD Sales & Distribution
⚠️ Depends
8 (Inter-CC STO), 12 (Drop-Ship)
Manufacturing, Trading, Distribution
PP Production Planning
⚠️ Depends
9 (Subcontracting)
Steel, Textile, FMCG, Pharma manufacturing
QM Quality Management
⚠️ Optional
18 (QM in P2P)
Pharma, Food, Steel (ISO clients)
PM Plant Maintenance
⚠️ Depends
25 (Spare parts)
Manufacturing, Utilities, Cement, Power
PS Project System
⚠️ Depends
26 (WBS procurement)
Construction, EPC, IT projects, Engineering
AM Asset Management (FI-AA)
⚠️ Usually active
6 (Asset Procurement)
All capex-heavy industries
WM Warehouse Management
⚠️ Optional
16 (Batch in WM bins)
Pharma, FMCG distributors, 3PL
💡 How to read this in real consulting: When client says "we need MM only" — check if scenarios 8, 9, 18, 25, 26 are needed. If yes, you also need SD/PP/QM/PM/PS active. Many "MM-only" projects discover they need SD or PP halfway through. This table prevents that surprise.
✅ Prerequisites — config you need before scenario 1
If you completed the Setup Guide Steps 1-15, you're ready for Scenarios 1-3. For Scenarios 4+, you'll add config as you go (each scenario tells you what's needed).
Required for...
Config needed
Setup Guide step
Status check (SE16N)
Any scenario
Company Code PSPK fully configured (OBY6, OB52, FBN1, OBA4)
Step 1 (1A-1H)
T001 row populated
Any scenario
Plant PK01 + assignment to PSPK
Steps 3 + 4
T001W row, BUKRS = PSPK
Any scenario
Valuation Area = Plant (OX14)
Step 5
T001K row per plant
Any scenario
Storage Locations (GNRL at minimum)
Step 7
T001L rows
Any scenario
Purchasing Org PKLO + assignment to PSPK + plant
Steps 8-10
T024E row, T024W row
Any scenario
Purchasing Group RMT (or similar)
Step 13
T024 row
Any scenario
OBYC G/L account assignments for valuation class
Step 15
T030 row for GBB/BSX/WRX
Sc 4+ (account-assigned)
CO Area + Cost Centers + OBY6 linking CC to CO Area
See "CO Setup" below
TKA01, CSKS rows
Sc 6 (asset)
Asset Accounting (FI-AA) config — asset classes, depreciation areas
Outside MM scope (CO/FI consultant)
ANKA rows
Sc 13 (release)
Characteristics + Class + Release Strategy
Scenario 13 itself
—
Sc 16 (batch)
Batch level set system-wide (OMCD)
Scenario 16 itself
T133 row
💡 Smoke test before starting: Run ME21N and try to create a PO header. Vendor field, plant, purch org, purch group — if all dropdowns populate, you're ready for Scenario 1.
📦 Master Data Baseline — what we'll create & reuse
Instead of creating new materials/vendors for each scenario, we build a reusable baseline in Scenario 1 that subsequent scenarios extend. This mirrors real projects where you cut over master data once and POs reuse it.
Materials (9 cover 90% of MM scenarios)
Code
Type
Description
Pak Context
Used in Sc#
RM-IRON-01
ROH (raw material)
Iron ore lump, Grade A
From Mughal Steel
1, 9, 16, 17
RM-COAL-01
ROH
Coking coal
From Indonesian supplier
1, 23
SP-BEARING-01
ERSA (spare part)
Bearing 6205-ZZ
For maintenance use
2, 5
HALB-BILLET-01
HALB (semi-finished)
Steel billet 100mm
WIP inventory
3, 9
FERT-REBAR-01
FERT (finished good)
TMT Rebar 12mm
For sale
3, 7, 8
HAWA-CEMENT-01
HAWA (trading good)
Cement bags 50kg
Resale only
10 (consignment)
OFFC-PAPER-01
NLAG (non-stock)
Office paper A4
Direct to office
5
UTIL-GAS-01
UNBW (non-valuated)
Natural gas (SSGC)
Continuous flow
11 (pipeline)
SVC-CONSULT-01
DIEN (service)
Consulting hours
Audit / SAP support
4
Vendors (Pakistani context — Business Partners)
Code
Name
Type
NTN / Tax
Used in Sc#
VEN-MUGHAL
Mughal Steel Industries Ltd
Local PK
NTN: 0742510-3
1, 2, 16
VEN-AISHA
Aisha Steel Mills
Local PK
NTN: 1145-7782
1, 14
VEN-LCK-CON
Lucky Consulting (Pvt) Ltd
Local PK (services)
NTN: 2233-4455
4
VEN-PCABLE
Pakistan Cables Ltd
Local PK
NTN: 0123-9876
9 (subcontractor)
VEN-SSGC
Sui Southern Gas Co.
Local PK (utility)
NTN: 0001-1111
11 (pipeline)
VEN-IMPCH
Shanghai Steel Trade Co.
Foreign (CNY)
—
23 (import)
VEN-CONSIG
DG Cement (consignment)
Local PK
NTN: 4567-8901
10 (consignment)
VEN-3RD
Karachi Drop-Ship Logistics
Local PK
NTN: 7890-1234
12 (third-party)
⏱️ Time-saver: Create all 9 materials + 8 vendors UP-FRONT in one session (~2 hours). Then every scenario just runs transactions on existing data. Without this baseline, you'll waste time creating master data per scenario.
⚙️ Controlling (CO) — needed from Scenario 4 onwards
Scenarios 1-3 don't need CO. From Scenario 4 (service, consumable, asset) the PO posts to a cost object (cost center / internal order / asset / WBS) — which requires a Controlling Area + cost centers set up first.
🏗️ CO configuration now lives in the Setup Guide — it's one-time foundation work, not a P2P scenario. Full click-by-click steps, real field values, and the live gotchas (the "configured CO after postings" trap → FINS_ACDOC_CUST116 + the mass-data project) are documented in Setup Guide → Step 19: Controlling Area & Cost Centers ⭐. Do that step ONCE, then come back here for Scenarios 4+.
🎯 Why an MM consultant must know CO basics (even if FI/CO configures it)
You won't usually configure the controlling area — but you touch it daily: every service PO, consumption posting, and asset purchase routes a cost object through your MM transactions. You must know what to type (the cost center / order on the PO line) and why. The iron rule you'll learn in Step 19: the controlling area must exist BEFORE any postings — configure it after, and S/4HANA forces a journal-entry mass-update project to repair consistency.
💡 Account Assignment Categories in MM (memorize these)
Every PO line either goes to stock (blank) or to a cost object. Account Assignment Category in ME21N controls where:
The three scenarios every MM consultant must master. Scenario 1 is the master P2P pattern — every other scenario is a variation. Build a strong base here.
PakSteel Karachi Factory (PK01) needs to procure 50 tons of iron ore lump (Grade A) from local supplier Mughal Steel Industries. The material goes to the raw material warehouse (storage location RAWM). Standard 30-day payment terms. Total order value: ~PKR 12,500,000 (₨2.5 lac/ton × 50 tons).
🎯 What you'll learn in this scenario
This is the master pattern all other scenarios extend. You'll see exactly:
How the 5-step P2P cycle moves through SAP tables (EBAN → EKKO/EKPO → MSEG → BKPF/BSEG)
Why valuation class + OBYC drive every accounting entry
When/where automatic G/L determination kicks in (no manual posting needed)
How GR/IR clearing works (the famous "GR/IR" account)
How to verify each step actually worked at the database level
📋 Prerequisites
Item
Status check
CC PSPK fully configured (Setup Guide Step 1)
SE16N → T001 → BUKRS=PSPK row populated
Plant PK01 + assignment to PSPK
T001W → PK01 with BUKRS=PSPK
Storage Location RAWM at PK01
T001L → WERKS=PK01, LGORT=RAWM
Purchasing Org PKLO + PSPK + PK01 assignments
T024E, T024W rows
Purchasing Group RMT
T024 → EKGRP=RMT
OBYC entries for valuation class 3000 (raw materials)
T030 → BSX, WRX, GBB rows for VKO=0001, BKLAS=3000
⚙️ New config needed for this scenario
None beyond Setup Guide Steps 1-15. This is pure transactional — no new IMG config. If your CC + Plant + Org Units work, this scenario runs.
📦 Master Data Setup
1.1. Create Material — MM01 · Iron Ore Lump (RM-IRON-01)
What: Material master = the central record SAP uses across all modules. ~50 fields organized into "views" — only fill the views relevant to MM + FI.
Action:
Run MM01
Material: RM-IRON-01 · Industry Sector: M (Mechanical Engineering) · Material Type: ROH (Raw Material)
S/4HANA note: Vendors are no longer created via XK01/MK01 alone — they're created via BP (Business Partner) which writes to LFA1/LFB1/LFM1 + BUT000 in the background.
Action:
Run BP
Create → Organization → BP Role: FLVN00 (Supplier in FI) — gives the General + FI views
Header:
BP Category: Organization
Grouping: BPG1 (default external numbering) — or system assigns
Name: Mughal Steel Industries Ltd
Search Term: MUGHAL
Address tab: Street, Karachi, Postal Code 74900, Country PK, Region SD, Phone +92-21-XXX
Identification tab: Tax Number Cat: PK0 (NTN), Number: 0742510-3
Save header → BP # auto-assigned (ours: 21) — and when the popup asks for the external supplier number, type your alphanumeric vendor code (ours: MUGHAL21)
💡 If popup asks for "External Supplier Number": Your IDES vendor account group may use external alphabetic numbering (range A→ZZZZZZZZZZ). Numeric values like 21 get rejected. Use vendor name pattern:MUGHAL21, AISHA22, ANGLO23, GLENCO24, etc. This is actually better practice — meaningful vendor codes are readable in reports (ME2L/ME2N) and used by many real Pakistani companies (Engro, Lucky, ICI). To get pure numeric same-as-BP behavior, see Setup Guide Step 18 (XKN1 + OBAS + V_TBD001 Same Number flag).
Switch role to FLVN01 (Supplier — extended with FI Co.Code) → enter Company Code PSPK
Recon Account: 160000 (Trade Payables Domestic) · Payment Terms: 0003 (14d 2% / 30d net — standard SAP) · Save
💡 Payment Terms options in your IDES (standard SAP, pre-shipped):0001 Immediate · 0002 14d 3%/30d 2%/45d net · 0003 14d 2%/30d net ⭐ · 0005 10d 2%/30d net · 0009 Net 30 days · 0008 End of month/14 days. For custom Pakistani terms (PK30, LC30, ADV100) → create via OBB8 — see Setup Guide Step 18F.
Switch role to FLVN02 (Supplier — Purchasing Org) → enter Purch Org PKLO
Order Currency: PKR · Terms of Payment: 0003 · Save
Verify: SE16N → LFA1 (general) + LFB1 (CC=PSPK) + LFM1 (EKORG=PKLO) — all 3 tables should have rows for vendor MUGHAL21.
1.3. Create Info Record — ME11 · Link Material ↔ Vendor with price
What: Info Record = the agreement saying "Vendor X sells Material Y to Plant Z at price P." When you create a PR/PO, SAP auto-suggests the price from here. Optional but standard.
Action:
Run ME11
Vendor: MUGHAL21 · Material: RM-IRON-01 · Purch Org: PKLO · Plant: PK01 · Info Cat: Standard
Enter → General Data tab: Sort Term, Reminders, etc. (skip)
Purch Org Data 1: Net Price = 250000 · Currency = PKR · Validity From-To (e.g., today to 31.12.9999)
Save → Info Record # assigned (e.g., 5300000123)
Verify: SE16N → EINA (general info) + EINE (purch org details) — both populated.
🔄 Transaction Flow — The 5 Steps
Step 1. Purchase Requisition — ME51N
What: PR = internal request "I need this material." Originates from MRP, production, maintenance, or manual entry. Free of charge — no commitment to vendor yet.
Action:
Run ME51N
Doc Type: NB (Standard PR) · Header text optional
Line 1:
Material: RM-IRON-01
Quantity: 50 · UOM: TO
Delivery Date: today + 14 days
Plant: PK01 · Storage Location: RAWM
Purchasing Group: RMT (auto from material)
Item Detail → Source of Supply tab: vendor MUGHAL21, Info Record auto-suggests price (250000/TO)
Step 2. Purchase Order — ME21N · 2 Flows (with PR vs without PR)
What: PO = legal commitment to vendor. Sent to vendor as printed/emailed document. Two ways to create it:
🎯 KEY POINT — If you already have a PR with Plant + Purch Org + Vendor + Material filled, DON'T re-enter them in PO! Use "Adopt PR" flow → all PR fields auto-copy to PO. You only verify + add PO-specific fields (Tax Code, exact Delivery Date).
✅ Flow A — Convert PR to PO (RECOMMENDED — auto-fills everything)
Use when: You completed Step 1 (PR created). All fields like Material, Plant, Purch Org, Vendor, Quantity, Net Price will auto-copy from PR. You DON'T re-enter them.
Run ME21N
Don't enter ANY fields yet — just click "Document Overview On" button (top-left, looks like 🗂️)
💡 Document Overview panel opens on the LEFT side of screen
In the Document Overview dropdown (left panel) → select "Purchase Requisitions"
Selection screen popup:
Purchasing Group: RMT (or your PR's group)
OR enter PR # directly: 10000123
Click Execute (F8)
Your PR appears in left panel with all line items
Drag the PR line item (or use "Adopt" button) → drop on right side (PO area)
💡 Alternatives if drag-drop fails: (1) Expand PR with ▶ → right-click the ITEM line (not the PR header!) → "Adopt". (2) ⭐ MOST RELIABLE (this is what worked in our IDES): skip Document Overview entirely — in the PO item table, scroll RIGHT to the "Purchase Requisition" column → type the PR number there → Enter → all fields auto-copy. If the column is hidden: right-click any column header → Configure → show it.
✨ SAP auto-copies from PR to PO:
Field
Auto-copied from PR?
Source
Material
✅ YES
PR item
Plant
✅ YES
PR item
Storage Location
✅ YES
PR item
Quantity
✅ YES
PR item
Unit of Measure
✅ YES
PR item
Vendor
✅ YES (if Fixed Vendor in PR)
PR Source of Supply
Purch Org
✅ YES (if entered in PR Source of Supply)
PR Source of Supply
Purch Group
✅ YES
PR item
Net Price
✅ YES (from Info Record)
ME11 Info Record
Material Group
✅ YES
Material Master
Account Assignment Cat
✅ YES (if entered in PR)
PR item
Delivery Date
✅ YES (or recalculated)
PR + delivery time
Currency
✅ YES
Vendor LFM1
Doc Type
Defaults to NB
Personal Settings
You only need to VERIFY + add PO-specific fields:
Tax Code: I0 (Input tax 0% — ⚠️ verified in our IDES; V0 did NOT exist! Press F4 to see YOUR system's codes. "I" prefix = Input tax for purchases, "O/A" = Output tax for sales) — usually blank in PR
Header → Org Data tab: confirm Company Code PSPK (auto from Purch Org)
Header → Delivery/Invoice tab: Payment Terms (auto from vendor), Incoterms (auto from vendor)
Item → Confirmations tab: tick "Acknowledgment Reqd" if you want vendor to confirm acceptance
Click Check (yellow tick icon) → review messages → no errors → Save (Ctrl+S)
PO # assigned (e.g., 4500000123)
PR status now shows "PO created" — closed against this PO
✅ Result of Flow A: No duplicate data entry. PR-PO link maintained (EKPV table). Reporting via ME5A shows PR-to-PO conversion rate. Audit trail intact.
⚠️ Flow B — Create PO Direct (NO PR) — use only when no PR exists
Use when: Skip PR step (sometimes done for urgent buys, low-value purchases, or recurring buys with established vendor). All fields must be entered manually.
Run ME21N
Doc Type: NB (Standard PO)
Vendor: MUGHAL21 (Mughal Steel)
Header → Org Data tab (enter manually since no PR to inherit):
Purch Org: PKLO
Purch Group: RMT
Company Code: PSPK (auto from Purch Org)
Item Overview — enter manually:
Material: RM-IRON-01
Quantity: 50 TO
Net Price: 250000 (auto-fills if Info Record exists)
Plant: PK01
Storage Location: RAWM
Delivery Date: planned date
Item Detail → Invoice tab: Tax Code I0 (Input 0% — F4 to check your system; V0 may not exist)
Check → Save → PO # assigned
⚠️ Caveat of Flow B: No requisitioner approval trail. No PR-PO link. Bypasses release strategy in some configs. Avoid unless specifically needed.
🆚 Quick Comparison — Flow A vs Flow B
Aspect
Flow A (from PR) ⭐
Flow B (direct PO)
Data re-entry
Minimal — just verify + add tax/payment terms
All fields manual
Time to create
~1 minute
~5-10 minutes
PR-PO link in EKPV
✅ Yes — full audit
❌ No
Requisitioner approval flow
✅ Yes (PR was approved)
⚠️ Depends on release strategy
Risk of typos
Low
High (manual)
Real-world frequency
~80% of POs
~20% (urgent, recurring)
When to use
Standard flow — always prefer this
Emergency, low-value, scheduled buys
Tables updated (after Save): EKKO (PO header) + EKPO (PO items) + EKET (delivery schedule) + EKPV (PR-to-PO link — Flow A only) + EKBE (PO history).
⚠️ No accounting entry yet — PO is a commitment, not a posting. Some companies enable "PO commitment" reporting which makes a memo entry, but no real G/L hit. Real FI hit comes at MIGO (Step 3).
🔧 Pro tip — Set Personal Settings for ME21N too
Just like ME51N (Step 1), set defaults in ME21N → Personal Setting button → Default Values:
Document Type: NB
Purchasing Org: PKLO
Purchasing Group: RMT
Plant: PK01
Storage Location: RAWM
Acct Assignment Cat: blank (or K if usually consumable)
This makes Flow B faster too (defaults pre-fill).
Step 3. Goods Receipt — MIGO with movement 101
What: Vendor delivers the iron ore. You confirm receipt and post it to inventory. FIRST accounting entry hits here.
⚠️ FIRST GR in a brand-new company code? Expect a chain of one-time config errors (ML not productive → T169P → VP tolerance → G/L not in CC → number range NR751). This is NORMAL — each is a 2-minute fix. Full plain-language walkthrough: Setup Guide → Step 1O (Material Ledger) + 1P (the 4 Gates) + the 9-Gate Gauntlet table. Fix all of them up front and MIGO posts first try.
Action:
Run MIGO
Transaction: Goods Receipt · Reference: Purchase Order · PO #: 4500000123
Movement Type: 101 (GR for PO into warehouse) — auto-filled
Header: Delivery Note # from vendor (any text e.g., "DN-MS-789"), Bill of Lading # optional, Posting Date = today
Verify: Run MMBE (Stock Overview) for RM-IRON-01 → 50 TO unrestricted stock at PK01/RAWM.
Step 4. Invoice Receipt — MIRO
What: Vendor sends invoice; you verify it matches the PO + GR (3-way match: PO qty/price ↔ GR qty ↔ Invoice qty/price). Post → vendor liability created.
System pulls in the GR line → confirm Qty (50 TO), Net Price (250,000)
Balance shows 0.00 (gold light 🟢) → Post
Invoice doc # assigned (e.g., 5105600123)
Accounting entry:
Posting Key
G/L Account
Description
Amount
86 (GR/IR Dr)
191100
GR/IR Clearing (clears the credit from GR)
Dr 12,500,000
31 (Vendor Cr)
160000
Trade Payables (via vendor recon account)
Cr 12,500,000
The famous GR/IR clearing: After GR + IV, GR/IR account net = 0. If different, it means qty or price mismatch. GR/IR is a transit account — should always clear.
Tables updated: RBKP (invoice header) + RSEG (invoice items) + BKPF/BSEG (FI doc with vendor open item).
Step 5. Vendor Payment — F-53 (manual) or F110 (automatic)
What: Pay the vendor → clear the AP liability. Manual via F-53 (one-off), automatic via F110 (payment run for batch payments — real projects use this).
Action (F-53 manual):
Run F-53
Document Date / Posting Date: today · Company Code: PSPK · Currency: PKR
Bank Data: G/L account = 113100 (bank main account) · Business Area blank · Amount = 12,500,000
Open Item Selection: Vendor = MUGHAL21
Click Process Open Items → SAP lists vendor's open invoices
Select invoice 5105600123 → Amount Entered must equal Assigned → Post
What: After the cycle completes, prove every link in the chain and that the vendor account is CLEAR. This is what auditors, FI teams, and clients ask you to do daily.
Method 1 — The PO History hub (⭐ start here)
ME23N (auto-opens your last PO) → click item → tab "Purchase Order History"
Every follow-on doc is listed: WE (GR material doc) + RE-L (invoice) with qty/value
Click any doc number to drill in · GR doc → Doc Info → FI Documents → accounting doc · Invoice → Follow-On Documents → its FI doc
PR link: item detail field Purchase Requisition (EKPO-BANFN) — or from the PR side: ME53N → Status tab shows the PO it became
Method 2 — FBL1N: prove vendor account is clear
FBL1N · Vendor MUGHAL21 · CC PSPK · radio "Cleared items" → Execute
Invoice (RE) + Payment (KZ) both show green ✓ and carry the SAME Clearing Document number (AUGBL) — SAP's proof they're matched and closed
Switch to radio "Open items" → list is EMPTY = vendor fully paid, account clear
Method 3 — Relationship Browser (the wow trick)
FB03 → any FI doc of the chain → menu Environment → Document Environment → Relationship Browser
SAP draws the whole document family tree — MM + FI + invoice docs, all clickable
🎓 Where the links live (interview gold)
Link
Table.Field
PO item → PR
EKPO-BANFN
PO → all follow-on docs (GR, IR…)
EKBE — the PO history table, one row per event
MM doc → FI doc
BKPF-AWKEY (FI doc stores the MM doc # as reference key)
Vendor open vs cleared items
BSIK (open) / BSAK (cleared)
The clearing "marriage certificate"
AUGBL (clearing doc) + AUGDT (date) stamped on BOTH items
💰 Complete Accounting Trail (T-account view)
G/L Account
GR (101)
IV (MIRO)
Payment (F-53)
Net
300000 Raw Mat 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 PKR · Bank ↓ 12.5M PKR · GR/IR clears to 0 (success indicator) · Vendor clears to 0 (paid).
🚨 Common Errors & Fixes
Step
Error
Root cause
Fix
MM01
"Valuation class 3000 not allowed for material type ROH"
OMSK config missing
OMSK → ROH → allow 3000-3999 range
ME21N
"Net price is 0.00"
No info record or price 0
Create info record (ME11) or enter price manually in PO line
ME21N
"Account assignment mandatory for material XX"
Material type not stockable (NLAG/UNBW)
For stock material, ensure type ROH/HALB/FERT; for non-stock, enter Acct Asgn K
MIGO
"Account determination for entry INT BSX VKL 3000 not possible"
OBYC missing
OBYC → BSX → add row for VKL 3000, G/L 300000
MIGO
"Posting period MM YYYY is not open"
OB52
Open period in OB52 for variant PSPK
MIGO
"Document number not in range 49"
FBN1 range 49 missing
FBN1 → CC PSPK → create range 49
MIRO
"Balance not zero"
Qty/price mismatch with PO
Check qty (GR vs invoice) and price (vendor invoice vs PO)
MIRO
"Tax code V1 does not exist"
FTXP missing
FTXP → create tax code V1 (PK Sales Tax 17%)
F-53
"No open items found"
Wrong vendor or invoice already paid
FBL1N → vendor → check open status
✅ Verification — How to confirm Scenario 1 worked
#
T-code
Check
1
ME53N
PR 10000123 status = Completed (converted to PO)
2
ME23N
PO 4500000123 status = Delivered + Invoiced
3
MB51
Mvt 101 entry for RM-IRON-01 at PK01/RAWM
4
MMBE
RM-IRON-01 → 50 TO unrestricted at PK01/RAWM (or less if consumed)
5
MIR4
Invoice 5105600123 status = 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 30-sec answers from this scenario
Q: Walk me through the standard P2P cycle
PR (internal request, ME51N) → PO (commitment to vendor, 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 or F110 — vendor Dr, bank Cr). GR/IR clears across GR + IV; if non-zero, qty or price mismatch.
Q: What's the difference between V and S price control?
V = Moving Average — material valuation updates with every GR at actual price. Used for raw materials where vendor price varies. S = Standard Price — fixed price set in master; any variance posts to a separate variance account. Used for finished goods (FERT) for stable costing.
Q: How does GR auto-determine the G/L account 300000?
Material's Valuation Class (3000 in Accounting view) + Movement Type (101) + Transaction Key (BSX for inventory) + Chart of Accounts (INT) → OBYC table lookup → G/L 300000. Pure config, no user input needed.
2
Return to Vendor — Quality Reject
FOUNDATION★☆☆☆☆⏱️ ~1 hourMIGO (122 or 161) → MIRO (credit memo)
🇵🇰 Business Story
Of the 50 tons iron ore received from Mughal Steel in Scenario 1, 5 tons fail quality inspection — moisture content above spec. PakSteel raises a return to vendor. Mughal Steel issues a credit note for PKR 1,250,000. Two methods exist: Return Delivery (mvt 122) when invoice not yet received, OR Return PO with mvt 161 when invoice received and credit memo needed.
🎯 What you'll learn
Two return methods and when to use each (122 vs 161)
How return movements reverse the original FI entries
Vendor credit memo (Doc type KG) vs invoice (KR) — same MIRO, different sign
How to track returns reporting (MB51 with movement filter)
📋 Prerequisites
Scenario 1 completed (PO, GR, IV all done). Material RM-IRON-01 has stock.
🔄 Method A — Return Delivery (mvt 122) — when invoice not yet received
2A.1. Return delivery via MIGO mvt 122
When to use: GR done but MIRO not yet posted. You return the goods BEFORE invoice arrives. Vendor either reships or you reduce the future invoice.
Action:
Run MIGO
Transaction: Return Delivery · Reference: Material Document · Material Doc # from original GR (5000000123)
Movement Type auto-sets to 122
Reason for Movement: 0001 (Quality reject) — mandatory
Quantity: 5 TO (of original 50)
Storage Location: RAWM
Post → Material doc # assigned
Accounting entry (reverses GR for 5 TO):
Inventory (300000)
Cr 1,250,000
GR/IR (191100)
Dr 1,250,000
Net effect — depends on whether the invoice was already posted:
Timing
What happens to the 122's GR/IR debit
Money document needed?
Return BEFORE invoice (normal case for 122)
Nets against the original GR credit still sitting on GR/IR (12.5M Cr − 1.25M Dr = 11.25M Cr) → the later invoice for 45 TO clears it to zero. GR-Based IV proposes 45 automatically
❌ None — vendor just invoices 45
Return AFTER invoice
Original GR credit already consumed by the full invoice → the 1,250,000 debit dangles open, waiting for the vendor's credit memo (= the Pakistani "debit note") to clear it
✅ MIRO → Credit Memo 1,250,000 (see Method B step 2B.3)
💡 The 122 always posts identically (Inventory Cr / GR-IR Dr). What differs is whether the original GR credit is still there to absorb it. Also: the return reopens 5 TO as "on-order stock" — SAP expects a replacement delivery. If none is coming: ME22N → item → Delivery tab → "Delivery Completed" ✓ (or reduce PO qty to 45).
🔄 Method B — Return PO + mvt 161 — when invoice already received
2B.1. Create Return PO — ME21N with Returns flag
When to use: MIRO already posted; vendor needs to issue credit memo. Return PO formally documents the reverse transaction.
Action:
Run ME21N — a Return PO is a NORMAL PO + one tick. Same header as always (Standard PO, Purch Org, Group — Personal Settings fill them)
Vendor: MUGHAL21
Item: Material RM-IRON-01, Qty 5 TO, Plant PK01 · Net Price stays the ORIGINAL purchase price (it drives the credit memo value!) · Tax Code I0
⭐ The one new thing: tick the "Returns Item" checkbox — the small R column in the item grid (scroll right; also visible in Item Detail)
Save → Return PO #
2B.2. Goods Issue against return PO — MIGO mvt 161
Action:
Run /nMIGO (fresh screen)
Transaction: Goods Receipt · Reference: Purchase Order
⚠️ Top-right header movement field: keep/type 101 — NEVER type 161 there! Manually forcing 161 throws M7 873 "Movement type 161 is not allowed". The rule: 101 is what you TYPE, 161 is what the Returns flag MAKES
PO #: your Return PO → Enter → the ITEM line's Mvt column shows 161 by itself (derived from the R tick)
Header → Delivery Note: e.g. RET-MS-002 (your return challan # — mandatory in many systems, error M7 018)
Item → Where tab → Storage Location RAWM — a return ISSUES stock, SAP must know from which shelf (M7 018 "Enter Location" if empty)
Quantity 5 TO (Quantity tab if adjusting) · Item OK ✓ · Check → Post
🚨 If M7 873 persists with a correct setup: (1) ME23N → confirm the R tick was really saved on the PO item; (2) OMJJ → movement 161 → Allowed Transactions → must include MIGO (compare against 122's list, which works — note: MIGO_GR may not exist as a tcode in your S/4 release). Full diagnosis in the Troubleshooting encyclopedia.
Same accounting effect as mvt 122 (inventory Cr 1,250,000 / GR-IR Dr 1,250,000) — different in that it's tied to a return PO, which gives the credit memo something formal to reference.
Now that iron ore is in stock at PK01, PakSteel needs to:
Issue 30 TO to Production (consumption) — via mvt 261 to a production order, or mvt 201 to cost center if no PP order
Transfer 10 TO from RAWM to WIPS within same plant — internal storage location move (mvt 311)
Convert 5 TO of HALB-BILLET-01 from one material to another (mvt 309) — change item
🎯 What you'll learn
Movement types 201, 261, 311, 309 and what each does to inventory + FI
Consumption to cost center (CO touch — needs CO setup)
Storage location transfer (no FI, just inventory move)
Material-to-material transfer (rare but useful for grade reclassification)
OBYC role in determining offset G/L for consumption
🔄 Movement Type Cheat Sheet
Mvt
What
FI effect
OBYC key
201
GI to cost center (consumption)
Consumption Dr / Inventory Cr
GBB · VBR
202
Reverse 201 (return from cost ctr)
Inventory Dr / Consumption Cr
GBB · VBR
261
GI to production order
Consumption Dr / Inventory Cr
GBB · VBR
262
Reverse 261
Inventory Dr / Consumption Cr
GBB · VBR
311
Transfer SLoc → SLoc (same plant)
No FI (same valuation area)
—
301/303
Transfer Plant → Plant (one-step / two-step)
FI if cross-CC; none if same CC
GBB · UMB
309
Material → Material (reclassification)
Old Inventory Cr / New Inventory Dr
BSX (both)
561
Opening stock entry (initial upload)
Inventory Dr / Off-balance Cr
GBB · BSA
501
Receipt without PO (gift, sample)
Inventory Dr / Other revenue Cr
GBB · ZOB
3.1. Goods Issue to Cost Center — mvt 201 (needs CO setup)
What: Issue 5 TO of iron ore to Karachi Production cost center for testing/sampling. Goes to expense (consumption), hits the cost center.
Action:
Run MIGO (or MB1A)
Transaction: Goods Issue · Movement Type: 201
Plant PK01, Storage Location RAWM
Material: RM-IRON-01 · Quantity: 5 TO
Account Assignment tab → Cost Center: PKKHI-PROD
Post → Material doc # assigned
Accounting (auto via OBYC GBB-VBR):
Consumption Raw Mat (400000)
Dr 1,250,000
Cost Center: PKKHI-PROD
Inventory (300000)
Cr 1,250,000
—
CO posting: Cost Center PKKHI-PROD shows debit of 1,250,000 in S_ALR_87013611 cost center actual/plan report.
3.2. Goods Issue to Production Order — mvt 261 (requires PP order)
What: Issue 25 TO of iron ore to a production order making steel billets. Component consumption tied to PP order.
Prerequisite: A production order exists (CO01 or auto-created via MRP). For practice, skip this if PP not set up.
Action:
Run MIGO (or MB1A)
Transaction: Goods Issue · Movement Type: 261
Account Assignment: Order = production order # (e.g., 1000000023)
Material RM-IRON-01, Qty 25, Plant PK01, SLoc RAWM → Post
3.3. Storage Location Transfer — mvt 311 (no FI)
What: Move 10 TO of iron ore from RAWM (raw material warehouse) to WIPS (work-in-progress location) — both in plant PK01.
Action:
Run MIGO (or MB1B)
Transaction: Transfer Posting · Movement Type: 311
Source: Material RM-IRON-01, Plant PK01, SLoc RAWM
Destination: same Plant PK01, SLoc WIPS
Quantity: 10 TO · Post
FI effect: NONE. Same valuation area (plant-level), just changing physical location. Only MARD updated (stock per SLoc).
3.4. Material Reclassification — mvt 309 (one material → another)
When used: You discover 5 TO of HALB-BILLET-01 is actually different specification — convert to a new material code without physically moving stock. Useful for grade reclassification, batch error correction.
Action:
Run MIGO
Transaction: Transfer Posting · Movement Type: 309
Source Material: HALB-BILLET-01, Qty 5 TO, Plant PK01, SLoc WIPS
Destination Material: HALB-BILLET-02 (must exist!) — same plant + SLoc
Post
FI effect: Old material inventory Cr + new material inventory Dr (BSX both sides). If price differs → variance posts to gain/loss G/L.
✅ Verify Scenario 3
MB51 → filter by RM-IRON-01 → see 201, 261, 311 entries in chronological order
MMBE → stock per SLoc — RAWM lower, WIPS higher
S_ALR_87013611 → Cost Center PKKHI-PROD shows consumption debit
PakSteel hires Lucky Consulting (Pvt) Ltd for SAP implementation support — 120 consulting hours @ PKR 5,000/hour = PKR 600,000. Service is delivered weekly; PakSteel approves time sheets via Service Entry Sheet (SES). Cost hits the IT Department cost center (PKADM-IT).
🎯 What's different from stock procurement
No material master needed — use Service Master (AC03) or short text
Item Category D (Service) in PO — different flow from blank (standard stock)
No MIGO — use ML81N Service Entry Sheet instead
Cost goes directly to a cost center (no inventory) → CO must be set up
Account Assignment K mandatory
Two-step acceptance: SES creation + approval (release)
PakSteel Finance Department orders 100 reams of A4 paper from local stationery supplier — PKR 800/ream = PKR 80,000. Material doesn't go to stock (NLAG = non-stock). GR posts directly to expense, tied to Finance cost center (PKADM-FIN).
🎯 NLAG vs ROH — the key difference
NLAG (Non-stock material) = no inventory tracking. No MBEW, no MARD. Each PO posts directly to expense at GR.
ROH = stocked, valued. Inventory account hit at GR; consumption posted later via separate GI.
Use NLAG for low-value items consumed immediately: office supplies, cleaning materials, small parts.
Account Assignment K (cost center) is mandatory on every NLAG PO.
📦 Master Data
5.1. Create NLAG Material — MM01
Action:
MM01 · Material OFFC-PAPER-01 · Industry M · Material Type NLAG
Views needed: Basic Data 1, Purchasing — no Accounting view (NLAG isn't valued)
Description: A4 Office Paper 80gsm 500 sheets · Base Unit: EA
Purch Group: OFC (or RMT)
Save
🔄 Transaction Flow
5.2. Direct PO with Account Assignment K — ME21N
ME21N · Vendor: any local stationer (e.g., create new BP)
Line 1:
Account Assignment Category: K (Cost Center)
Item Category: blank
Material: OFFC-PAPER-01
Quantity: 100 EA · Net Price: 800 PKR
Plant: PK01
Item Detail → Account Assignment tab:
Cost Center: PKADM-FIN
G/L Account: 410000 (Office Supplies Expense) — auto-determined from material group or AAC
Save
5.3. GR with mvt 101 — posts directly to expense (NO inventory)
Key difference: Because material is NLAG + Acct K, GR doesn't hit inventory — it hits the expense G/L directly.
Accounting:
Office Supplies Expense (410000)
Dr 80,000
Cost Center: PKADM-FIN
GR/IR (191100)
Cr 80,000
—
No MMBE entry (no inventory). MB51 still shows the movement record.
5.4. MIRO — same as standard
Reference PO → balance 0 → Post. GR/IR Dr, Vendor Cr.
🚨 Common Errors
"Material OFFC-PAPER-01 is non-stock — Account Assignment required"
Add Acct K + cost center on PO line
"GBB VBR for VKL not found"
OBYC → GBB → VBR row missing for cost center consumption — add G/L 410000
This scenario needs FI-AA (Asset Accounting) module activated — typically FI consultant work, not MM:
Asset Classes defined (e.g., 2000 Plant & Machinery)
Depreciation areas configured (01 Book, 15 Tax for Pakistan)
Account determination for Asset Class (AO90)
🪂 Alternative: If FI-AA not set up, skip this scenario or substitute with Scenario 5 (Consumable Direct) — similar MM mechanics but goes to expense instead of asset
🇵🇰 Business Story
PakSteel Karachi Factory purchases a CNC milling machine from Pak Machine Tools Ltd for PKR 4,500,000. Asset is capitalized in FI-AA module, depreciated over 10 years. May start as Asset Under Construction (AuC) during installation, then transferred to active asset after commissioning.
🎯 What's different — Asset accounting touches FI-AA
Account Assignment A (Asset) on PO line
Requires FI-AA setup (asset class, depreciation key) — usually done by FI consultant, MM uses what's there
GR posts to AuC (Asset Under Construction) if asset not yet commissioned
After install, transfer AuC → final asset via AIAB / AIBU
Depreciation runs monthly via AFAB
📋 Prerequisites (FI-AA)
Asset Class exists (e.g., 2000 Plant & Machinery)
Depreciation Areas configured (01 Book, 15 Tax for Pakistan)
Account Determination for Asset Class (links to G/L 140000 Plant & Machinery)
Above is FI consultant territory; just ask "is asset class 2000 ready?" before starting
📦 Master Data
6.1. Create Asset Master — AS01
AS01 · Asset Class: 2000 · Company Code: PSPK
Description: CNC Milling Machine - Karachi Line 1
Cost Center: PKKHI-PROD · Plant: PK01
Time-dependent tab: Useful Life 10 years
Depreciation Areas tab: Depreciation Key LINK (straight-line) for area 01
Save → Asset # assigned (e.g., 200000123)
🔄 Transaction Flow
6.2. PO with Account Assignment A — ME21N
ME21N · Vendor: Pak Machine Tools BP
Line: Acct Asgn A · Material blank (use short text) · Short Text: CNC Milling Machine VMC-850
Quantity: 1 EA · Net Price: 4,500,000 PKR · Plant PK01
Account Assignment tab: Asset = 200000123 · G/L 140000 auto
Save
6.3. GR — capitalizes the asset
Accounting:
Plant & Machinery (140000)
Dr 4,500,000
Asset: 200000123
GR/IR (191100)
Cr 4,500,000
—
Asset value now 4.5M in FI-AA. Depreciation kicks in from capitalization date.
Create AuC asset first (Class 4000) → procure → GR hits AuC
Once commissioned: AIAB distribute AuC costs → AIBU settle to final asset
6.5. MIRO + Payment — standard flow
Same as Scenario 1 from MIRO onwards.
🚨 Common Errors
"Asset class 2000 has not been created"
FI-AA setup needed — talk to FI consultant
"Account determination not possible (account assignment A)"
AO90 config missing — FI-AA
"Asset capitalization date not set"
AS02 → fill Capitalized On date
✅ Verify Scenario 6
AW01N Asset Explorer → asset 200000123 → values updated
AS03 → asset master with values
S_ALR_87011990 Asset balance sheet → P&M increased by 4.5M
Run AFAB (depreciation run) for current period → depreciation expense posted
🟡 Tier 3: Multi-Plant Movements
Stock Transport Orders (STO) move material between plants. Intra-company STO is simple (same CC). Inter-company STO involves SD billing and cross-CC payment — the most complex flow in this tier.
7
Intra-Company STO — Karachi → Lahore
INTERMEDIATE★★☆☆☆⏱️ ~1.5 hoursME21N (UB) → MIGO (351 or 641/101)
🇵🇰 Business Story
PakSteel Karachi (PK01) has surplus 20 TO of finished rebars (FERT-REBAR-01). Lahore plant (PK02) has demand. Both plants belong to the SAME company code PSPK. Move stock from Karachi to Lahore using STO. Two flavors: one-step (mvt 647) instant transfer, or two-step (mvt 641 → 101) with stock in transit.
🎯 What's different — STO vs simple transfer (311)
STO uses a PO document (Doc Type UB) — for tracking, approval, delivery
Cross-plant (PK01 → PK02), not just SLoc-to-SLoc
No invoice when intra-company (same CC, no AR/AP)
Delivery via SD optional (more enterprise; simple cases use direct mvt 351 without SD)
FI impact depends on whether plants share valuation area (usually plant-level → potential price-difference posting)
📋 Prerequisites
Both plants PK01 + PK02 assigned to same CC PSPK
Material FERT-REBAR-01 extended to BOTH plants (MM01 with plant view for each)
STO Doc Type UB active (delivered standard)
For SD-integrated route: shipping points + sales area assignments (skip for simple route)
🔄 Transaction Flow — Simple route (mvt 351 without delivery)
7.1. Create STO — ME21N with Doc Type UB
ME21N · Doc Type: UB (Stock Transport Order)
Supplying Plant: PK01 (header → Customer/Vendor tab if needed)
Line:
Material FERT-REBAR-01 · Qty 20 TO
Receiving Plant: PK02 (in the Plant field on line)
Item Category: blank (standard)
Storage Location at receiving: FNGD
Save → STO # (e.g., 4500000200)
7.2. Goods Movement — Method 1: One-step (647)
Stock leaves PK01 and arrives at PK02 instantly. No in-transit stock.
MIGO · Goods Issue · Reference: Purchase Order · STO #
Movement Type: 647 (auto)
Confirm qty + SLocs (RAWM out at PK01, FNGD in at PK02)
Post
FI: NONE if plant valuation prices are equal (same material code, same plant-level price). If price differs → variance to gain/loss G/L.
7.3. Goods Movement — Method 2: Two-step (641 → 101)
Stock leaves PK01 → in-transit → arrives at PK02 later (realistic for trucks taking 2 days).
Step A (issue from supplying plant): MIGO → Goods Issue → STO → mvt 641 → post (creates in-transit stock at PK02)
Step B (receipt at receiving plant): MIGO → Goods Receipt → STO → mvt 101 → post (clears in-transit, lands at FNGD)
Track in-transit:MMBE for FERT-REBAR-01 → "Stock in Transit" column shows qty between steps A and B.
✅ Verify Scenario 7
MMBE → FERT-REBAR-01 → 20 TO moved from PK01 to PK02
MB51 → mvt 351/641/647 entries
ME23N → STO 4500000200 → all items delivered
ME2O stock provided to vendor / stock transit overview
This scenario needs SD module configuration (Sales Org, Distribution Channel, Division, Shipping Point, OBYA inter-co clearing). If not yet done in your IDES:
👥 Or: Ask your SD consultant to do the setup for you
🇵🇰 Business Story
PakSteel Pakistan (PSPK, plant PK03 Karachi DC) sells 500 TO of TMT rebars to PakSteel UAE (PSAE, plant AE01 Dubai). Even though same parent company, PSAE is a separate legal entity (UAE LLC, AED currency). This requires actual SD billing + AP/AR clearing. Total: PKR 75,000,000 ≈ AED 1,000,000 at 75:1 rate.
🎯 What makes inter-company STO the most complex flow
Two CCs involved (PSPK + PSAE) → real AR (sender) + AP (receiver)
Currency conversion (PKR ↔ AED)
SD module used — outbound delivery + intercompany billing
Vendor master in receiving CC = supplying CC's "customer" linkage
Customer master in supplying CC = receiving CC's "vendor" linkage
Line: Material FERT-REBAR-01 · Qty 500 TO · Plant AE01 (receiving) · SLoc EXPT
Save
8.2. Supplying plant creates outbound delivery — VL10B or VL10G
SD takes over — PSPK's shipping point creates outbound delivery referencing the STO.
VL10B · selection: by Vendor → enter STO #
Select line → click Background
Delivery # generated (e.g., 80000123)
8.3. Post Goods Issue from delivery — VL02N
VL02N · delivery # · click Post Goods Issue (PGI)
Movement type 643 or 645 posted
Accounting at supplying CC PSPK:
Cost of Goods Sold (500000)
Dr
—
Inventory FERT (302000)
Cr
—
8.4. Intercompany Billing — VF01
VF01 · reference delivery 80000123
Billing type: IV (Intercompany Billing)
Save → Billing doc #
Accounting at supplying CC PSPK:
Customer (PSAE recv) (130000)
Dr 75,000,000
—
Intercompany Revenue (510000)
Cr 75,000,000
—
8.5. Receiving plant: GR — MIGO
PSAE receives the goods at AE01.
Accounting at receiving CC PSAE: (converted to AED)
Inventory FERT (300000)
Dr 1,000,000 AED
GR/IR (191100)
Cr 1,000,000 AED
8.6. Receiving plant: Invoice — MIRO
PSAE invoices itself against PSPK's billing doc (cross-CC AP/AR).
GR/IR (191100) at PSAE
Dr 1,000,000 AED
Vendor (PSPK supplier) (160000)
Cr 1,000,000 AED
Final settlement: Periodic inter-company netting via F.13 or treasury — AR in PSPK matched against AP in PSAE.
💡 Key insight
Inter-company STO = MM ↔ SD ↔ FI integration. As MM consultant you set up the receiving side; SD consultant handles delivery + billing; FI consultant handles cross-CC clearing. Real projects spend 2-4 weeks on this flow.
🟠 Tier 4: Special Procurement Types
Non-standard procurement flows that don't follow the basic PR→PO→GR→IV pattern: subcontracting (BOM-driven), consignment (vendor stock at our site), pipeline (continuous flow), and third-party (drop-ship).
This scenario uses BOM (PP master data) but does NOT need full PP module setup:
✅ You need: Just CS01 (Create BOM) — covered in this scenario step 9.1. No work centers or routings needed.
📖 Reference:Setup Guide Step 17B covers BOM creation in detail if you want to read more
⏩ Why subcon doesn't need full PP: The "production" is done by the SUBCONTRACTOR (external vendor), not your plant. So no PP order, no work center, just BOM mapping for components.
🇵🇰 Business Story
PakSteel doesn't have galvanizing capacity. They send steel billets to Pakistan Cables Ltd (subcontractor) who galvanizes them and returns finished galvanized rebars. PakSteel pays the subcontractor a service fee (PKR 500/TO). Components (billets) remain PakSteel's ownership while at vendor site.
🎯 What makes subcontracting unique
Item Category L (Subcontracting) on PO
BOM-driven — system knows what components to send based on the BOM (CS01)
Special Stock O — "stock provided to vendor" (your stock, at vendor's location)
Three movements: 541 send components, 543 consume at receipt, 101 receive finished product
Vendor PO line shows BOTH the finished product AND its components
Subcontractor's bill = service charge only (not material value)
📦 Master Data Setup
9.1. Create BOM — CS01 for the finished product
Create a single-level BOM showing what components produce 1 TO of galvanized rebar.
DG Cement places 2000 bags of cement at PakSteel's Karachi DC on consignment. Cement remains DG Cement's property; PakSteel only pays when they actually consume/withdraw from consignment stock. Pakistani textile and construction industries use this heavily for raw materials.
🎯 Consignment essentials
Special Stock K — "vendor consignment stock" at our location
Item Category K on PO (or special info record category)
No invoice at GR — only when consumed (mvt 411-K) or settled via MRKO
Liability only created at consumption — improves cash flow
Stock visible in MMBE under "Vendor Consignment" column
Sui Southern Gas Co. (SSGC) supplies natural gas to PakSteel Karachi via pipeline — no PO, no GR. PakSteel records consumption monthly based on meter reading. Settlement via MRKO. Same model: electricity (K-Electric), water (KWSB).
🎯 Pipeline essentials
Special Stock P — "pipeline" — no physical stock tracked
Material type often UNBW (non-valuated) with Procurement Type "Pipeline"
No PO needed — info record alone defines vendor + price
Direct consumption via mvt 201 with Special Stock P
MRKO settles consumption into invoice
📦 Master Data
11.1. Pipeline-enabled Material + Pipeline Info Record
MM01 · Material UTIL-GAS-01 · Type UNBW (or ROH with Procurement Indicator P)
Purchasing view: Set Procurement Type indicator if needed
ME11 · Vendor VEN-SSGC · Material UTIL-GAS-01 · Info Category: Pipeline
Price: PKR 50/m³
Save
🔄 Transaction Flow (no PO!)
11.2. Record consumption — MB1A mvt 201 Special Stock P
MB1A · Mvt 201 · Special Stock P
Material UTIL-GAS-01 · Qty 50,000 m³ (this month's reading) · Cost Center PKKHI-PROD
Vendor: VEN-SSGC · Post
Posting: Consumption Dr / Pipeline Liability Cr.
11.3. Monthly Settlement — MRKO
Same as consignment — MRKO converts pipeline liability to vendor invoice for payment.
12
Third-Party Drop-Ship — Vendor Ships Direct to Customer
This scenario needs SD module configuration (Sales Org, item category TAS, basic customer master):
📖 If SD not yet set up: complete Setup Guide Step 16 (sub-steps 16A-16I) — focus on Sales Org + Customer Master parts
👥 Or: Ask your SD consultant to provide a customer master + sales area for testing
🪂 Alternative: Skip for now and revisit when SD setup is complete
🇵🇰 Business Story
PakSteel sells 200 TO of rebar to a builder customer, but doesn't have stock. Instead, they arrange for vendor Aisha Steel Mills to ship directly to the builder's site. PakSteel never touches the goods — they just earn the margin between vendor cost and customer price.
🎯 Third-party essentials
Trigger: SD Sales Order with Item Category TAS (Third Party)
PR auto-created from SO
PO has Account Assignment X (sales order) — stock never enters our books
Vendor ships directly to customer; PakSteel just verifies invoice + bills customer
MIGO is STATISTICAL (no real stock movement)
Goods Receipt indicator on PO may be unchecked (skip GR entirely)
🔄 Transaction Flow
12.1. Sales Order — VA01 with item category TAS
VA01 · Order Type OR · Sales Org / Distribution Channel / Division of PSPK
Customer: builder BP · Material FERT-REBAR-01 · Qty 200 TO
Item Category: TAS (Third-party — Order)
Save → SO #
Behind the scenes: SAP creates a PR (NB-style) for the third-party PO
12.2. Convert PR to PO — ME21N (or auto if release strategy disabled)
ME21N · pull in the auto-created PR
Account Assignment: X (Sales Order) — Item Cat S (Third-party)
Vendor: VEN-AISHA · Save
12.3. Statistical GR (optional) — MIGO
If GR indicator on PO is on: post statistical GR just to mark "vendor confirmed shipment to customer." No stock impact.
12.4. Vendor invoice — MIRO
Standard MIRO. Posts to a "Third-party COGS" G/L → Vendor Cr.
12.5. Customer Billing — VF01
Bill the customer based on the SO. Customer Dr / Revenue Cr. Margin = Revenue − Third-party COGS.
🟣 Tier 5: Process Controls
The "rules" layer real businesses add on top of P2P: approval workflows (release strategies), automatic source selection (source list + quota), and long-term outline agreements (contracts + scheduling agreements).
📦 Sub-Scenario 14A — Activate Source List Requirement
14A. Make Source List MANDATORY for material — MM02
Why: When "Source List" flag is ON in Purchasing view, SAP rejects POs/PRs to vendors NOT in the source list. This enforces approved-vendor policy.
Action:
MM02 → Material RM-IRON-01
Select view: Purchasing → Plant PK01
Find checkbox "Source list" (MARC-KORDB) → ✓ tick it
Save → Local Object
💡 Alternative: Set as default for ALL materials via OMS2 or OMSK (Material Type config — "Source List Required" flag at material type level).
Verify:SE16N → table MARC → MATNR RM-IRON-01 → field KORDB should = X.
📦 Sub-Scenario 14B — Single Fixed Source (Strategic Sole-Sourcing)
14B. Mughal Steel as SOLE approved vendor for RM-IRON-01 — ME01
Business case: Premium-grade iron ore has only ONE approved vendor (Mughal Steel) — quality contract signed. No alternatives allowed.
Action:
ME01
Material: RM-IRON-01 · Plant: PK01 → Enter
Fill row in table:
Field
Value
Meaning
Valid From
Today
Start of approval
Valid To
31.12.9999
Open-ended
Vendor
MUGHAL21
Approved supplier
POrg
PKLO
Pakistan local purch org
Fix ✓
✓ (CHECK)
⭐ Marks as FIXED source — auto-picked in PR/PO
MRP
1
Relevant for MRP auto-PR creation
Block
blank
Not blocked
Save → ✅ "Source list maintained successfully"
Effect: When you create PR with "Source Determination" ✓, SAP auto-picks MUGHAL21 — no manual entry needed.
📦 Sub-Scenario 14C — Multiple Approved Sources (No Fixed)
14C. Mughal + Aisha both approved, buyer chooses — ME01
Business case: For commodity-grade iron ore, multiple vendors are approved. Buyer picks based on current price/availability. No vendor is "preferred" — risk mitigation.
Action:
ME01 · Material RM-IRON-01 · Plant PK01
Add 2 rows:
Vendor
POrg
Fix
MRP
Valid From-To
MUGHAL21
PKLO
☐ (NOT fixed)
1
Today → 31.12.9999
AISHA22
PKLO
☐ (NOT fixed)
1
Today → 31.12.9999
Save
Effect in PR: When you tick Source Determination → SAP shows popup "Multiple sources found — choose" → buyer picks Mughal OR Aisha manually. POs to ANY other vendor will be REJECTED.
Use case in PakSteel: Commodity-grade materials where price flexibility matters more than supplier loyalty.
Business case: PakSteel signed 6-month contracts. Mughal's contract ends 30-Jun. Aisha's contract starts 1-Jul. SAP should automatically switch vendor based on requirement date.
Action:
ME01 · Material RM-IRON-01 · Plant PK01
Fill table:
Valid From
Valid To
Vendor
POrg
Fix
MRP
01.01.2026
30.06.2026
MUGHAL21
PKLO
✓
1
01.07.2026
31.12.2026
AISHA22
PKLO
✓
1
Save → both periods saved with different Fixed vendors
Effect:
PR created with delivery date 15-Jun-2026 → auto-picks MUGHAL21
PR created with delivery date 15-Aug-2026 → auto-picks AISHA22
No manual intervention — SAP reads the date and picks right vendor
Real Pakistani use: Pre-monsoon vs post-monsoon vendor contracts, fiscal-year-based vendor rotation, seasonal pricing.
📦 Sub-Scenario 14E — Block a Source Temporarily
14E. Mughal blocked for QC issue — buy only from Aisha — ME01
Business case: Last shipment from Mughal Steel failed quality inspection (sulfur content too high). Block Mughal as source for 30 days while they investigate. Aisha continues as alternate.
Action:
ME01 · Material RM-IRON-01 · Plant PK01
Find row for MUGHAL21
Find column "Blk" (Block) → click ✓ to tick
Save
Vendor
Fix
MRP
Blk
Status
MUGHAL21
☐
0
✓ Blocked
Can't be picked
AISHA22
✓
1
☐
Active — auto-picked
Effect: PRs auto-pick AISHA22. POs to MUGHAL21 will be rejected with error 06401 — Source not allowed.
Unblock after QC clears: Untick Blk → Save. Mughal active again.
💡 Pro tip: Block is INSTANT. Time-dependent block? Use Valid To = block date (better audit trail than Blk flag).
📦 Sub-Scenario 14F — Quota Arrangement (% Split)
14F. 60% Mughal + 40% Aisha by volume — MEQ1
Business case: Long-term contract says 60% of iron ore volume goes to Mughal, 40% to Aisha (vendor relationship management). SAP auto-allocates this split.
Step 1 — Activate Quota Usage on material:
MM02 → RM-IRON-01 → Purchasing view → Plant PK01
Find field "Quota arr. usage" (MARC-USEQU) → enter value:
Value
Meaning
1
Quota applies to PRs
2
Quota applies to POs
3
Quota applies to scheduling agreements
4
Quota applies to ALL (PR + PO + sched agr) ⭐ recommended
Save
Step 2 — Maintain Quota Arrangement (MEQ1):
MEQ1 · Material RM-IRON-01 · Plant PK01
Validity Start: Today · Validity End: 31.12.9999
Fill quota items table:
P (Proc Type)
S (Special Stock)
Vendor
Quota Allocated
Quota Base Qty
Maximum Quantity
F (External Proc)
blank
MUGHAL21
60
0 (auto)
0 (unlimited)
F
blank
AISHA22
40
0
0
Save
Step 3 — Test:
ME51N → PR for 100 TO iron ore
SAP creates ITEM 10 for 60 TO from Mughal · ITEM 20 for 40 TO from Aisha (auto-split)
OR if "Quota Base Qty" is set per item, splits by base unit
Monitor quota:MEQ3 shows used/remaining quota per vendor. Useful for reporting.
Re-balance quota: If Mughal is at 80% used and Aisha at 20%, SAP biases future PRs to Aisha until rebalanced.
📦 Sub-Scenario 14G — Manual PR with Source Determination
Add item: Material RM-IRON-01 · Qty 50 TO · Plant PK01 · SL RAWM · Delivery Date
Press Enter → SAP runs source determination logic
Possible outcomes:
Source List state
Behavior
Only 1 fixed source
✅ Auto-fills Fixed Vendor + Purch Org + Info Record
Multiple sources (no Fixed)
Popup: "Choose vendor" — buyer selects
Quota active
Splits items per quota %
No source list entry
Error: "No source of supply found"
Save → ✅ PR created with auto-source
💡 To make Source Determination tick the default, set in Personal Setting button at top of ME51N → Default Settings tab.
📦 Sub-Scenario 14H — MRP-Driven Auto-PR with Source List
14H. MD03 single-material MRP run creates PR with auto-vendor — MD03
Business case: Production needs 200 TO of iron ore for next month. Stock is 50 TO. MRP runs nightly → detects shortage → creates PR automatically. Source List determines which vendor.
Pre-req: Source List entry MUST have MRP column = 1 (not just Fix flag).
Action:
Pre-req: Material RM-IRON-01 has MRP type set (MM02 → MRP 1 view → MRP Type PD for stochastic, VB for reorder point, etc.)
Run MD03 · Material RM-IRON-01 · Plant PK01 · Processing Key NETCH · Create PR 1 (Always create PR)
Press Enter → MRP runs in foreground
Result: PR auto-created for shortfall qty
Check PR via MD04 · Material RM-IRON-01 · Plant PK01
You'll see new PR with Fixed Vendor pre-filled from Source List
Important — MRP rules:
MRP only considers source list rows with MRP indicator = 1
If MULTIPLE rows have MRP=1 → MRP picks first by sort, OR splits per Quota
If NO rows have MRP=1 → MRP creates PR WITHOUT vendor (buyer must add manually later)
Fix flag is IGNORED by MRP — only MRP indicator matters!
📦 Sub-Scenario 14I — Source List + Outline Agreement Reference
14I. Source List points to existing Contract — ME31K + ME01
Business case: Mughal Steel and PakSteel signed a 12-month value contract MK-0001 for ₨50 crore worth of iron ore. All POs to Mughal should reference this contract (consume from agreement value).
Action:
First create contract: ME31K · Doc Type MK · Vendor MUGHAL21 · Purch Org PKLO · Item: RM-IRON-01, target qty 200 TO, net price 250000 PKR
For Quota: SE16N → Table EQUK (header) + EQUP (items)
⚠️ Common Errors + Fixes
Source List troubleshooting reference
Error
Cause
Fix
06401 — Source not allowed
PO vendor not in source list, but Source List flag is ON
Add vendor to ME01 OR untick "Source List" flag in MM02
06405 — Source list entry has been blocked
Trying to use blocked vendor
Untick Block in ME01 OR use different vendor
06424 — No source of supply found
No valid source list entry for date
Check ME01 Valid From/To covers PR delivery date
06010 — Vendor not extended to Purch Org
Source list has vendor but BP/LFM1 not maintained for that POrg
BP → add Vendor (Purchasing) role for that Purch Org
Quota not splitting
Quota Usage in MM02 is blank or wrong value
MM02 → Quota Arr Usage = 4 for all docs
MRP not picking from source list
MRP indicator on source list row not set to 1
ME01 → MRP column = 1 for the desired vendor
🎓 Interview-Ready Q&A
Q: Difference between Info Record and Source List?
A: Info Record (ME11) stores PRICE + conditions for a material-vendor-purchorg combination. Source List (ME01) stores APPROVED VENDORS list for a material-plant combination. Info Record answers "at what price?" — Source List answers "from whom can I buy?". You can have many Info Records (one per vendor) but only one Source List per material+plant.
Q: Difference between Fix flag and MRP indicator in Source List?
A:Fix flag = "This vendor is the preferred source for manual PR/PO creation." Only ONE vendor can be Fixed per period. MRP indicator = "Use this vendor when MRP auto-creates PRs." Multiple vendors can have MRP=1 (then MRP uses quota or picks first). Critically: Fix flag is IGNORED by MRP. Only MRP indicator matters for automation.
Q: How does SAP decide source priority?
A: Priority chain: (1) Quota Arrangement — if active, allocates by %. (2) Source List with Fix flag — single auto-pick vendor. (3) Outline Agreement referenced in source list — uses contract terms. (4) Info Record — if no source list, single info record can default the vendor. (5) Manual — buyer enters vendor. This chain is configured via SPRO → MM → Purchasing → Source Determination.
Q: How would you implement "approve only ISO-certified vendors" policy?
A: Three-layer approach: (1) Source List per material — only add ISO-certified vendors via ME01. (2) Activate "Source List Required" flag on materials in MM02 → blocks POs to non-listed vendors. (3) For audit: build Z-report joining EORD + LFA1 + custom ISO certificate fields. SAP standard alone enforces the source list rule. Additional governance via release strategy + workflow approval.
Q: Can you block a vendor for ALL materials at once?
A: Yes — three ways: (1) Block at vendor master level (BP → Status Blocked for purchasing or specific Purch Org) — affects ALL materials immediately. (2) Mass update Source List via ME0M (Mass Maintain Source Lists) — set Blk ✓ for all material rows of that vendor. (3) Time-bound: change Valid To = today in all source list entries via SE16N table update or LSMW. Method 1 (vendor block) is most common; method 2 lets you keep vendor active for some materials but block for others.
Q: What is ME0M and when to use it?
A: ME0M = Mass Maintenance of Source Lists. Lets you create/change source list entries for MULTIPLE materials at once. Use cases: (1) Onboarding new vendor across 50 materials. (2) Blocking a vendor across all materials they supply. (3) Extending validity dates after contract renewal. (4) Bulk-loading source lists during data migration. Saves hours vs material-by-material ME01.
Q: Can MRP create PR if Source List has no Fixed vendor?
A: Yes — MRP doesn't use Fix flag. MRP uses MRP indicator (= 1). If only one source list row has MRP=1, MRP picks that vendor. If multiple have MRP=1 AND Quota Arrangement active, MRP splits per quota. If multiple have MRP=1 but NO quota → MRP picks first valid row (alphabetical/numerical sort). If NO rows have MRP=1 → MRP creates PR without vendor (buyer must add manually after).
Q: How do you audit "who approved Mughal Steel as a vendor for iron ore?"
A: Source List has change history in table EORDH (Source List Change History). Query: SE16N → EORDH → Material RM-IRON-01 + Vendor MUGHAL21 → see all changes with user ID + timestamp. Combine with FK02 (vendor master) change docs for full audit trail. For real compliance, integrate with workflow approval (e.g., Vendor Onboarding Workflow) so additions to source list require manager approval before save.
🇵🇰 Pakistani Business Scenarios
💡 Real-world Pakistani applications
Steel mills: Mughal + Aisha + International Steels — quota by capacity (20/30/50%)
Cement industry: Lucky Cement (sole for export), DG Khan (local) — time-dependent split by month
Textile: NTC Mills (cotton), Gul Ahmed (yarn) — separated by material, both fixed
PakSteel signs a 1-year contract with Mughal Steel for 1000 TO at PKR 250,000/TO. Throughout the year, they release smaller POs (release orders) against the contract — 100 TO this month, 80 TO next, etc. Contract guarantees price + capacity. Alternative: Scheduling Agreement with delivery schedule built-in (less paperwork per shipment).
Iron ore quality varies by batch — different sulfur/phosphorus content per shipment. PakSteel must track each batch (called "Heat Number" in steel industry) for traceability. If a customer rebar fails QC, they trace it back to which iron ore batch was used. Same applies in pharma (shelf life), food (production date), chemicals (purity).
🎯 Batch Management essentials
Activate batch mgmt on material (MM02 Purchasing view → "Batch Management" ✓)
Choose Batch Level in OMCD: Plant / Material / Client-wide
Batch can have characteristics (purity %, expiry date, manufacture date) via classification
FEFO (First Expired First Out) or FIFO picking via batch determination
Every stock movement asks for batch number — mandatory once activated
⚙️ Config
16.1. Set Batch Level — OMCD
OMCD · Select Batch Level: Material (batch unique per material across all plants — most common)
Activate Batch Status Mgmt (optional)
Save (this is system-wide and can't easily change later — careful!)
Plant Storage Data view: optionally configure auto batch numbering, batch determination
Save
16.3. Optional — Batch Class & Characteristics (CT04/CL02 class type 023)
Create characteristics like SULFUR_PCT, PHOSPHORUS_PCT, HEAT_NUMBER. Group into class type 023 (Batch). Assign class to material's classification view. Now batch master holds these values.
🔄 Transaction Flow
16.4. Create Batch Master — MSC1N
MSC1N · Material RM-IRON-01 · Batch: HEAT-2025-001 · Plant PK01
Description, Manufacture Date, Vendor, Country of Origin
PakSteel buys steel scrap from local sources (PKR 80,000/TO) and imported (PKR 120,000/TO). SAME material code, but DIFFERENT valuation per origin. Need separate inventory value tracking. Split valuation lets one material code hold multiple valuations.
🎯 Split Valuation concepts
Valuation Category (e.g., H for Origin) — what dimension you split on
Valuation Types (e.g., LOCAL, IMPORT, USED, NEW) — the specific buckets within category
Material master extended with all valuation types
Every PO + GR + GI must specify valuation type
MBEW table has multiple rows — one per valuation type
⚙️ Config
17.1. Activate Split Valuation Category — OMWC
OMWC · Activate Split Valuation globally
Define Valuation Category H (Origin) — usually delivered standard
Define Valuation Types under H: LOCAL, IMPORT
Assign Cat H to Valuation Areas (plants PK01/PK02/PK03)
Save
17.2. Extend Material with Valuation Types — MM01
MM01 · Material SCRAP-STEEL-01 · Material Type ROH
Accounting view → Valuation Category: H
Now create per valuation type:
Valuation Type: LOCAL · Moving Price: 80,000 PKR/TO
This scenario needs QM module activated (inspection setup, sampling, certificates). If your IDES doesn't have QM:
QM activation is typically done by QM consultant — basic activation in SPRO → QM → Basic Settings → Activate QM in MM
Material master must have QM view with Inspection Type 01 (GR Inspection) active
🪂 Alternative: Skip this scenario if QM not available; works without QM via standard GR mvt 101 to unrestricted stock
🇵🇰 Business Story
PakSteel inspects incoming iron ore for sulfur content. GR doesn't directly post to unrestricted stock — instead it lands in quality inspection stock. QC team tests, then makes a usage decision: Accept (mvt 321 → unrestricted) or Reject (mvt 122 → return to vendor).
🎯 QM essentials
Activate QM view in material (MM02 → QM view → Inspection Setup: Type 01 GR Inspection)
GR with QM auto-creates Inspection Lot + stock moves to "Quality Inspection" status
Inspection Type: 01 (Goods Receipt for Purchase Order)
Active ✓ · 100% inspection · Save
🔄 Test
18.2. GR creates Inspection Lot — MIGO
MIGO · GR · mvt 101 · post
Material shows in "Quality Inspection" stock (not Unrestricted)
Inspection Lot # auto-created
18.3. Record Results — QE51N
Enter measurement values (sulfur %, density, etc.) against the inspection lot.
18.4. Usage Decision — QA11
QA11 · Inspection Lot #
Usage Decision: Accept → Qty to Unrestricted = 50 TO · save → mvt 321
OR: Reject → Qty to Blocked/Return = 50 TO → mvt 122 auto-posted
✅ Verify
MMBE → see "Quality Inspection" + "Unrestricted" + "Blocked" columns change as you decide
QA32 → list of open inspection lots
🔴 Tier 7: Customization — What Makes You a CONSULTANT
The end-user runs transactions. The CONSULTANT configures the system. This tier is what real clients pay you for: custom material types for industry-specific items, custom document types for different process flows, custom pricing procedures, and output determination.
19
Custom Material Type — Halal-Certified Materials
EXPERT★★★★★⏱️ ~2 hoursOMS2 → OMSK → SNRO → MM01
🇵🇰 Business Story
PakSteel food-grade subsidiary needs to track Halal-certified materials separately from non-halal — for regulatory + religious compliance. Standard ROH/HALB/FERT don't capture this. Solution: create ZHAL (Halal-certified) material type that auto-blocks non-halal valuation classes, has its own number range, and unique field selection.
🎯 What "Custom Material Type" controls
Field selection — which fields are mandatory/optional/hidden for this material type
Valuation classes allowed — which OBYC G/L accounts get hit
Number range — separate numbering pool (e.g., HAL-xxxxxxx vs MAT-xxxxxxx)
Stock-keeping — is it stockable? Valuated?
Quantity / Value updating per plant or globally
Authorization group — who can create
⚙️ Config Steps
19.1. Copy standard ROH to ZHAL — OMS2
OMS2 · select ROH · Copy As → new type ZHAL
Description: Halal-Certified Raw Material
External Purchase Orders: + (allowed)
Internal Purchase Orders: +
Field selection group: 41 (or copy from ROH)
Authorization group: Z_HALAL
Number range group: ZH (define separately in next step)
Save
19.2. Assign Valuation Classes — OMSK
OMSK · Material Type ZHAL · allowed Valuation Classes
Add: 3050 (Halal Raw Materials) — a new valuation class
Save
Also configure OBYC for VKL 3050 if not already done
19.3. Define Number Range — SNRO Object MATERIALNR
Pricing procedure determination involves 4 related T-codes (all under SPRO → MM → Purchasing → Conditions → Define Price Determination Process → Define Schema Group / Schema Determination):
T-code
What it does
OMFN
Define Schema Group for Vendor
OMFM
Define Schema Group for Purchasing Organization
OMFP
Assign Schema Group to Purchasing Organization
OMFO
Schema Determination — combine Vendor Schema Group + Purch Org Schema Group → Pricing Procedure
Action:
Run OMFO
New Entries → combine Schema Group of Purch Org (PKLO's schema grp) + Schema Group of Vendor (PSPK Imports' schema grp) → Procedure Z_PSPK
Save
⚠️ Note: M/03 is for Access Sequences (sequences SAP follows to find a price), NOT for procedure determination. The earlier reference to M/03 here was incorrect; OMFO is the verified T-code for schema determination.
🔄 Test
21.4. Create PO + see new condition
ME21N → import vendor → line item conditions tab now shows Z_CUST as a row. Enter % → recalc updates total.
Print a hardcopy for vendor (signed + stamped, Pakistani business norm)
Email PDF to vendor's procurement contact
Send fax (some legacy vendors still use this)
For internal: post to a shared printer at procurement desk
Output Determination = SAP's framework for routing PO docs to printers/email/fax/EDI.
🎯 Output Determination essentials
Output Types (NACE): NEU (New PO print), MAHN (reminder), etc. Each = an output trigger
Access Sequence: where SAP looks for output condition records
Condition Records (MN04): per Purch Org + Vendor + Doc Type → "use medium 1 (printer)" or "5 (email)"
Procedure: ordered list of output types applicable to doc
Smart Form / Adobe Form: the actual PDF layout (developed in SE71 / SFP)
⚙️ Config Steps
22.1. Output Type Setup — NACE Application EF (Purchasing)
NACE · Application EF · Output Types
Default type NEU exists — review settings (Medium 1 = Print, 5 = Email/EDI)
Optional: copy to Z_NEU for custom logic
22.2. Maintain Condition Records — MN04
MN04 · Output Type NEU
Key combination: Doc Type + Purch Org + Vendor
Add row: NB · PKLO · MUGHAL21 → Medium 5 (Email) · Vendor's email · Time 3 (immediate)
Save
22.3. Process Output — ME9F
ME9F runs to dispatch pending output. Real systems run this as background job hourly.
🇵🇰 Tier 8: Pakistani Context — Local Fiscal Compliance
Two scenarios specific to Pakistan that you'll always encounter on PK projects: import procurement with Letter of Credit + customs, and Withholding Tax (WHT) on vendor payments per FBR rules.
Pakistani tax law (FBR Income Tax Ordinance Section 153) requires PakSteel to deduct income tax at source when paying vendors:
Goods: 4.5% for filers, 9% for non-filers
Services: 8% for filers, 16% for non-filers
Construction contracts: 7.5%/15%
When paying Mughal Steel PKR 1,000,000 (goods, filer), PakSteel pays only PKR 955,000 and remits PKR 45,000 to FBR on vendor's behalf. SAP must auto-calculate and post both legs.
🎯 Withholding Tax in SAP — two flavors
Classic WHT: Calculated at payment time only (F-53/F110). Older method.
Extended WHT (recommended): Calculated at invoice posting AND optionally at payment. Modern flexibility — what Pakistani implementations use.
SAP S/4 fully supports both; Extended is the default.
⚙️ Config Steps
24.1. Activate Extended WHT — FBKP / SPRO
SPRO → FI → FA Global Settings → Withholding Tax → Extended WHT
Define WHT Country: PK
Activate Extended WHT for CC PSPK
24.2. Define WHT Types & Codes
Define WHT Type: P1 (Pakistan Goods - Filer) · Country PK · Calc at Invoice
Define WHT Code: under P1 → Code 153G · Rate 4.5%
Repeat for:
P2 / 153G-NF · 9% (Goods non-filer)
P3 / 153S · 8% (Services filer)
P4 / 153S-NF · 16% (Services non-filer)
Save
24.3. Assign WHT to Company Code
Assign WHT Types P1-P4 to CC PSPK with validity period.
24.4. Assign WHT G/L Accounts
WHT Payable to FBR Liability G/L: 160500 (or your CoA equivalent). Cleared monthly when remitting to FBR via challan.
24.5. Assign WHT to Vendor Master — FK02 or BP
BP / FK02 · Vendor MUGHAL21 (Mughal Steel — filer) · CC PSPK
MIRO · vendor MUGHAL21 · amount PKR 1,000,000 (Goods)
Withholding Tax tab shows: Base 1,000,000 · WHT 45,000 (4.5%)
Post
Accounting:
Inventory / GR/IR Dr
1,000,000
Vendor Cr
955,000
WHT Payable to FBR (160500) Cr
45,000
24.7. Pay Vendor — only Net 955,000 — F-53
F-53 selects vendor open item 955,000 (already net of WHT). Bank Cr 955,000.
24.8. Monthly WHT Remittance to FBR — manual JV
Manual FI posting (F-02): WHT Payable Dr / Bank Cr → clears WHT liability after challan deposit at NBP.
🔗 Tier 9: MM Cross-Module Integration
Scenarios where MM intentionally hands off to OTHER SAP modules — Plant Maintenance (PM) for spare parts, Project System (PS) for capex projects. These show MM's role as a central enabler across the SAP suite.
25
MM ↔ PM Integration — Spare Parts for Maintenance Orders
The Karachi Factory (PK01) has a critical CNC machine failure. Maintenance team creates a Maintenance Order (IW31) requesting a new bearing. The order generates a PR with account assignment F (Internal Order) — meaning the cost goes to the maintenance work order, not directly to a cost center. After repair, the maintenance order is settled to the affected production line cost center.
⚙️ Prerequisite Setup
This scenario needs PM module activated. If PM isn't set up in your IDES, you can:
Skip this scenario (PM is typically PM consultant work, not MM)
OR work with 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
🎯 What this teaches
Account assignment F (Internal Order / PM Order) on PO line
PakSteel is building a new galvanizing plant extension at Karachi — a 6-month, PKR 50,000,000 capex project. PS module tracks the project via WBS (Work Breakdown Structure) elements. Each procurement (steel beams, electrical equipment, concrete) is tagged to a specific WBS element. At project completion, all costs settle to a fixed asset (Asset Under Construction → Final Asset).
Result: When GR happens, cost goes to WBS GALV-001-CONST, not a cost center.
26.3. GR + MIRO — Standard, but cost tags to WBS
Same as regular P2P, just the cost accumulates on the WBS element.
Project Construction Expense (4500xx)
Dr 8,000,000
WBS: GALV-001-CONST
GR/IR (191100)
Cr 8,000,000
—
26.4. Settle WBS → Asset Under Construction (AuC) — CJ88
Periodically (monthly during project), PS/CO consultant settles WBS cost to AuC.
At project completion, AuC settles to final operational asset via AIBU.
💡 MM consultant's role in PS integration
You don't configure PS, but you DO:
Configure your PO doc types to ALLOW account assignment P
Create custom PO doc type for capex projects (ZCAP) — see Scenario 20
Ensure release strategy triggers Director/Board approval for PS-tagged POs
Coordinate with PS team on planned vs actual procurement timelines
Handle change orders to project-specific contracts
📚 Reference Tables
Quick-lookup tables you'll come back to throughout your MM career. Bookmark this section.
🎯 Movement Types — what each does
Mvt
What
Stock Effect
FI Effect
101
GR for PO (warehouse)
Unrestricted ↑
Inv Dr / GR/IR Cr
102
Reverse 101
Unrestricted ↓
Reverse 101
103
GR to Blocked Stock
Blocked ↑
Inv Dr (blocked) / GR/IR Cr
105
Release Blocked to Unrestricted
Block ↓, Unrestricted ↑
None
122
Return delivery to vendor
Unrestricted ↓
Reverse of 101
123
Reverse return (102 + 122)
Unrestricted ↑
Reverse 122
161
Return PO Goods Issue
Unrestricted ↓
Like 122 + PO link
201
GI to Cost Center
Unrestricted ↓
Consumption Dr / Inv Cr
202
Reverse 201
Unrestricted ↑
Reverse 201
261
GI to Production Order
Unrestricted ↓
WIP Dr / Inv Cr
262
Reverse 261
Unrestricted ↑
Reverse
301
Plant-to-Plant transfer 1-step
From ↓, To ↑
FI if cross-CC
303 / 305
Plant-to-Plant 2-step (issue / receipt)
Transit
FI if cross-CC
309
Material-to-Material reclass
One ↓, Other ↑
BSX both
311
SLoc-to-SLoc transfer (same plant)
SLoc shift
None
321
Quality Stock → Unrestricted
Q ↓, U ↑
None
322
Reverse 321
U ↓, Q ↑
None
350
Block stock from unrestricted
U ↓, Block ↑
None
351
GI for STO (one-step at issue)
From ↓, To Transit
None if same val area
501
Receipt w/o PO (free goods)
U ↑
Inv Dr / Other Income Cr
541
Components to subcontractor
U ↓, Provided ↑
None
543
Subcontractor consumes components
Provided ↓
Consumption Dr / Provided Cr
561
Opening balance entry
U ↑
Inv Dr / Opening Cr
641 / 645 / 647
STO movements (issue, intercompany, one-step)
Plant-to-plant
Varies by config
701 / 702
Physical inventory variance
Surplus / Shortage
Inv Dr/Cr / Gain-Loss
📄 Document Types — Standard PO & PR Types
Doc Type
Used For
Doc Category
NB
Standard PO (most common)
F (Purchase Order)
UB
Stock Transport Order (intra-company)
F
FO
Framework Order / Service-heavy POs
F
RV
Outline Agreement Release
F
MK
Quantity Contract (Outline Agreement)
K
WK
Value Contract
K
LP
Scheduling Agreement (with release docs)
L
LPA
Scheduling Agreement (without release docs)
L
NB (PR)
Standard Purchase Requisition
B
RV (PR)
Subcontracting PR (auto from production)
B
KR / KG
FI Vendor Invoice / Credit Memo (auto from MIRO)
—
WE
FI doc for Goods Receipt (auto from MIGO)
—
WA
FI doc for Goods Issue (auto from MIGO)
—
🔑 OBYC Transaction Keys — what each does
Key
What it determines
Mvt that triggers it
BSX
Inventory Posting (Material's stock G/L)
101 (GR), 309 (reclass), most posting movements
WRX
GR/IR Clearing (for PO-based GR)
101, 102
FRE
Freight Clearing (for delivery costs)
101 with freight conditions
GBB
Offsetting entry for stock posting (consumption, scrap, etc.)
201, 261, 561, 309, etc. — needs sub-key
GBB → VBR
Consumption (most common GBB)
201, 261
GBB → BSA
Initial stock entry
561
GBB → ZOB
Receipt without PO
501
GBB → AUF
GI for Order
261 (some configs)
GBB → INV
Inventory differences (physical count)
701, 702
GBB → UMB
Stock transfer (revaluation)
309, plant-to-plant if val diff
PRD
Price Differences (when V vs S, or invoice vs PO)
MIRO with variance
UMB
Revaluation / Gain-loss
Plant-to-plant transfer if val diff
KDM
Exchange Rate Difference (foreign curr POs)
MIRO when rates differ
🚨 Top 15 Errors and Fixes
Error
Cause
Fix
"Account determination for entry INT BSX VKL 3000 not possible"
OBYC missing
OBYC → BSX → add VKL 3000 → G/L 300000
"Posting period MM YYYY is not open"
OB52
OB52 → open current period for variant
"Document number not in range"
FBN1 missing
FBN1 → CC → create range
"No field status variant assigned"
OBY6
OBY6 → CC → fill FSV
"G/L account XXXX not created in CC"
FS00 → not extended
FS00 → extend to your CC
"Cost center XX does not exist"
KS01 missing or validity
KS03 → check; KS01 to create
"Tax code V1 does not exist in CC"
FTXP missing
FTXP → create tax code with %
"Source list missing"
Material has SL Required flag but no SL entries
ME01 → maintain SL OR remove flag via MM02
"Net price 0.00"
No info record / contract
ME11 → create info record OR enter manually
"Material doesn't exist in plant XX"
Plant view not extended
MM01 / MM50 → extend material to plant
"Balance not zero" (MIRO)
Qty or price mismatch
Verify qty vs GR + price vs PO
"Item category L not allowed for doc type NB"
OMG0 link
OMG0 → allow L for NB
"Valuation class XXXX not allowed for material type"
OMSK
OMSK → add allowed VKL
"Movement type XXX not allowed"
OMJJ assignment
OMJJ → enable mvt for material type
"PO not yet released"
Release strategy active
ME29N → release; or check approver
🎓 Key Tables Cheat Sheet
Table
What it stores
MARA
Material Master — general (client-level)
MARC
Material per Plant
MBEW
Material Valuation (per plant + valuation type)
MARD
Material Stock per SLoc
MCHA
Batch master
MCHB
Batch stock
LFA1 / LFB1 / LFM1
Vendor General / CC / Purch Org (deprecated by BP but still populated)
BUT000
BP General data
EBAN
PR header + items
EKKO / EKPO
PO header / items
EKET
PO delivery schedule
EKBE
PO history (GR + IV transactions)
EINA / EINE
Info record general / org-specific
MKPF / MSEG
Material doc header / items
BKPF / BSEG
FI doc header / items
RBKP / RSEG
Invoice header / items
T001 / T001W / T001L / T001K
CC / Plant / SLoc / Valuation Area
T024 / T024E / T024W
Purch Group / Purch Org / Plant assignment
T030
OBYC entries (account determination)
T156
Movement types
NRIV
Number range intervals
TKA01 / CSKS
CO Area / Cost Centers
🎉 You've completed the P2P journey — what's next?
Finishing all 24 scenarios = you've touched 95% of what an MM functional consultant does on real projects. Here's where to go from here:
🎯 Interview prep
Practice 30-60 second answers for each scenario. Use the "Interview-ready" boxes in Scenario 1 as a template. Common interview topics: P2P walk-through, release strategy, subcontracting, OBYC, batch mgmt, account assignment categories.
📚 Deepen specific topics
Check our Advanced Topics page for dedicated deep-dives on Batch Management, Release Strategies, and Subcontracting beyond what's in this scenarios guide.
🛠️ Real project simulation
Use Interactive Workflow to walk through a complete P2P state-tracked end-to-end. State persists in localStorage so you can pause and resume.
🔧 Configure your IDES
Reference back to Setup Guide as you build each scenario's config in IDES. Build muscle memory for the IMG paths.