Scenario 21 — Pricing Procedure (Custom Conditions: Discount, Freight, Tax)

TIER 7 · CUSTOMIZATION ★★★★★ ⏱️ ~3 hours M/06 (cond types) → M/08 (proc) → OMFO (schema determination)
← Previous
Scenario 20: Custom Document Type
Next →
Scenario 22: Output Determination
⚠️ Not yet live-tested
This page is built from researched standard-SAP content and has not yet been executed end-to-end in our IDES. The T-codes, fields, and accounts follow SAP standard but may need small adjustments on your S/4HANA 2023 system — we'll confirm and correct them when you run this scenario live. Hit a snag? See the Troubleshooting Center.

📊 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/TO303,647
🏷️ Gross only (wrong)
Stock at 250,000
If only PB00 is captured, inventory is valued at 250,000/TO — understated by every cost the procedure was supposed to add.
⚙️ Full procedure
Net price 259,717
Discount, freight and duty net to 259,717 in the stock value (tax is normally deductible, not capitalized). The PO carries the correct cost.
📊 GR posting
Inventory ↑ at true cost
At goods receipt, inventory (BSX) is debited at the procedure's net price; freight/duty post via their account keys (FR1/FR3) — landed cost captured correctly.

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.

💡 Lesson: the pricing procedure is where "what we pay" becomes "what inventory is worth." Configure the condition sequence and account keys correctly once, and every PO computes the right landed cost — wrong config silently mis-values stock and distorts margins on every receipt.

🇵🇰 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/TO303,647

Pricing Procedure orchestrates all these condition types.

🎯 What you'll learn

🔧 Step-by-Step

⚙️ Config Steps (focus: add custom condition Z_CUST for customs duty)

21.1 — Create Condition Type Z_CUST · M/06
  1. M/06 · Copy FRA1 → Z_CUST
  2. Description: Customs Duty %
  3. Condition Class: A (Discount/Surcharge) · Calculation Type: A (%) · Plus/Minus: A (positive)
  4. Access Seq: (assign one if records via info record), or "Manual entry only"
  5. Save
21.2 — Add Z_CUST to Pricing Procedure · M/08
  1. M/08 · Open standard procedure RM0000 (or copy to Z_PSPK) · Details
  2. Add step (e.g., Step 35, Counter 10): Condition Type Z_CUST · From-To referencing subtotal where customs applies
  3. 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-codeWhat it does
OMFNDefine Schema Group for Vendor
OMFMDefine Schema Group for Purchasing Organization
OMFPAssign Schema Group to Purchasing Organization
OMFOSchema Determination — combine Vendor Schema Group + Purch Org Schema Group → Pricing Procedure

Action:

  1. Run OMFO
  2. New Entries → combine Schema Group of Purch Org (PKLO's schema grp) + Schema Group of Vendor (PSPK Imports' schema grp) → Procedure Z_PSPK
  3. 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-codeCheck
1M/06Z_CUST exists with condition class A, calc type A (%), plus/minus A
2M/08Procedure (RM0000 / Z_PSPK) lists Z_CUST at the expected step with correct From-To
3OMFOPurch-org + vendor schema-group combination resolves to procedure Z_PSPK
4ME21NImport-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.

← Previous
Scenario 20: Custom Document Type
Next →
Scenario 22: Output Determination