Scenario 21 — Pricing Procedure (Custom Conditions: Discount, Freight, Tax)
📊 Business Case
A PO price is rarely just a single "gross price". It is a build-up: gross price, minus vendor discounts, plus freight, plus customs duty, plus tax. The pricing procedure is the ordered recipe of condition types that adds and subtracts these elements in the right sequence so the PO's net/effective price — and therefore your inventory valuation — is correct. Here PakSteel models that real build-up and adds a custom Z_CUST customs-duty condition.
🕐 When to use it
Whenever the real landed cost of a purchase involves more than a flat price — discounts, freight, duty, surcharges, tax — and you need the PO to compute the correct net/effective price automatically.
❓ Why it matters
The pricing procedure determines the PO net price, which flows into inventory valuation and the GR/IR postings. A wrong procedure means mis-valued stock and wrong margins — get it right and costing is accurate by default.
👤 Who triggers it
An MM consultant builds the condition types (M/06) and procedure (M/08); buyers see the conditions auto-populate on the PO conditions tab in ME21N.
🔁 The key distinction
This is mostly config, but its output is a number that does post: the net price drives GR/IR. Delivery costs (freight/duty) can post to inventory or a clearing account depending on the condition type's account key.
💰 Financial Impact — The Easy-Money Example
The pricing procedure's job is to make the effective price correct. Get it wrong and every goods receipt mis-values inventory. PakSteel's real build-up per tonne: a 250,000 gross price becomes a 303,647 effective price once discount, freight, duty and tax are layered in.
| Gross Price (PB00) | + 250,000 |
| Vendor Discount 3% (RA00) | − 7,500 |
| Freight 2% (FRA1) | + 4,850 |
| Customs Duty 5% (custom Z_CUST) | + 12,367 (planned) |
| 17% Sales Tax (MWST) | + 43,930 |
| Effective Price/TO | 303,647 |
Where the posting is involved: the pricing condition flows straight into the GR/IR postings. The net price debits inventory; planned delivery costs (FRA1, Z_CUST) post to inventory or a freight/duty clearing account per their condition-type account key — so a mis-built procedure literally mis-states your balance sheet and COGS.
🇵🇰 The Business Story
PakSteel's PO price is rarely just "Gross Price". Real example:
| Gross Price (PB00) | + 250,000 |
| Vendor Discount 3% (RA00) | − 7,500 |
| Freight 2% (FRA1) | + 4,850 |
| Customs Duty 5% (custom Z_CUST) | + 12,367 (planned) |
| 17% Sales Tax (MWST) | + 43,930 |
| Effective Price/TO | 303,647 |
Pricing Procedure orchestrates all these condition types.
🎯 What you'll learn
- Condition Types (M/06): each rule — PB00 gross, RA00 discount %, MWST tax, FRA1 freight
- Access Sequence (M/07): WHERE SAP looks for price (info record, contract, manual)
- Pricing Procedure (M/08): ORDERED list of condition types — what gets added/subtracted in what sequence
- Schema Determination (OMFO): which procedure is used for which purch org schema group + vendor schema group
🔧 Step-by-Step
⚙️ Config Steps (focus: add custom condition Z_CUST for customs duty)
21.1 — Create Condition Type Z_CUST · M/06
- M/06 · Copy FRA1 → Z_CUST
- Description: Customs Duty %
- Condition Class: A (Discount/Surcharge) · Calculation Type: A (%) · Plus/Minus: A (positive)
- Access Seq: (assign one if records via info record), or "Manual entry only"
- Save
21.2 — Add Z_CUST to Pricing Procedure · M/08
- M/08 · Open standard procedure RM0000 (or copy to Z_PSPK) · Details
- Add step (e.g., Step 35, Counter 10): Condition Type Z_CUST · From-To referencing subtotal where customs applies
- Save
21.3 — Procedure Determination · OMFO (Schema Determination) + supporting T-codes
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.
✅ Verification
| # | T-code | Check |
|---|---|---|
| 1 | M/06 | Z_CUST exists with condition class A, calc type A (%), plus/minus A |
| 2 | M/08 | Procedure (RM0000 / Z_PSPK) lists Z_CUST at the expected step with correct From-To |
| 3 | OMFO | Purch-org + vendor schema-group combination resolves to procedure Z_PSPK |
| 4 | ME21N | Import-vendor PO conditions tab shows Z_CUST; entering % recalculates the effective price |
🎓 Interview-Ready Answers
Q: Explain the components of MM pricing (condition technique).
Four building blocks: Condition types (PB00 gross, RA00 discount, FRA1 freight, MWST tax — each a pricing rule); Access sequence (the search strategy telling SAP where to find a condition record — info record, contract, manual); Pricing procedure / calculation schema (the ordered list of condition types with steps, From-To references and account keys); and schema determination (which procedure applies for a given purch-org + vendor schema group).
Q: How is the pricing procedure determined for a PO?
By schema determination in OMFO: SAP combines the schema group of the purchasing organization (assigned via OMFM/OMFP) with the schema group of the vendor (on the vendor/BP purchasing data, defined in OMFN) to select the calculation schema (e.g. Z_PSPK). That schema's condition types then populate the PO.
Q: How do you add a custom condition like customs duty, and does it affect inventory value?
Create the condition type in M/06 (copy FRA1 → Z_CUST, class A, % calc type), then insert it into the pricing procedure in M/08 at the right step with the proper From-To. Whether it capitalizes into inventory depends on its account key / accrual key — delivery costs like freight and duty are typically planned delivery costs that post to inventory (or a clearing account) at GR, so yes, they raise the landed/material value.
Q: Why does getting the pricing procedure wrong matter financially?
The procedure produces the PO net/effective price, which is the basis for inventory valuation and the GR/IR postings. If a condition is missing, in the wrong sequence, or has the wrong account key, stock is mis-valued — understated or overstated — which distorts the balance sheet, COGS and margins on every receipt. It is config with direct financial consequences.