How-toSAP ECC / S/4HANAMaterials Management / Finance (Material Ledger, MM-FI)

SAP Purchase Price Variance (PPV) Report: T-Codes, Accounts and Analysis

Question
sap ppv report tcode

Also searched as

  • purchase price variance sap
  • sap ppv account prd
  • sap price difference account standard price
  • how to report ppv in sap

Short answer

SAP has no single PPV transaction. Purchase price variance is the difference between the PO or invoice price and the standard price of a material, posted to the price difference account assigned to transaction key PRD. You report it by analyzing postings on that account (for example FBL3N), the PO history in EKBE, and material price analysis in CKM3.

Applies to: SAP ECC 6.0 and S/4HANA. Behaviour depends on price control: standard price (S) creates variances, moving average price (V) generally does not.

How to build a PPV report in SAP

  1. 1Check the material price control in the accounting view of the material master (MM03). PPV arises mainly with price control S (standard price).
  2. 2Find the price difference account: transaction OBYC, key PRD, by valuation class and chart of accounts.
  3. 3Open the line items of that G/L account (FBL3N or the equivalent line-item report) for the period. Each line shows the variance and the document that caused it.
  4. 4Drill to the source document: goods receipt (MIGO, movement type 101) or invoice (MIRO). Use the PO history (ME23N, or table EKBE) to compare PO price, receipt value and invoice value.
  5. 5For analysis by material, run CKM3 (material price analysis) to see price differences with the material ledger, if active.
  6. 6Compare the actual price against standard in a list of POs: pull EKPO net price per unit against the standard price from MBEW.
  7. 7Feed the result to the cost accountant for standard cost revaluation (for example through the cost estimate and price change process) if variances are persistent.

Where PPV is posted

With standard price control, a goods receipt posts inventory at the standard price. If the PO price differs, the difference goes to the price difference account (PRD). The goods receipt/invoice receipt clearing account (GR/IR) is cleared at the invoice, and any remaining difference between the PO price and the invoiced price is also posted as a price difference.

With moving average price, receipts change the average price, so there is no PPV in the same sense; instead the price drifts. The choice between S and V is the main policy decision that determines whether you can report PPV at all.

Useful tables and checks

EKBE holds the PO history: goods receipts and invoice receipts per PO item, including amounts. MBEW holds the valuation data, including standard price (STPRS) and moving average price (VERPR). Joining the two in a query lets you compute price gap per receipt, which is how many companies build a PPV dashboard.

Always reconcile to the G/L: the sum of PRD postings for the period should match the variance you compute, otherwise there are other causes, such as price changes (MR21) or exchange differences.

MM03        Material master, accounting view (price control)
OBYC        Automatic account determination, key PRD
FBL3N       G/L account line items (PRD account)
ME23N       PO display and PO history
MIGO / MIRO Goods receipt / invoice receipt
CKM3        Material price analysis (material ledger)
MR21        Price change
Tables: EKBE, EKPO, MBEW, BSEG / ACDOCA

Making PPV useful instead of just reporting it

A PPV report is only valuable if someone acts on it. Sort by variance value, not percentage, and group by vendor and material group to find where negotiated prices disagree with standards. A consistent variance on one item means the standard is stale; random variances point to buying behaviour or currency.

Review standards at least when major vendor prices change, and separate genuine price increases from errors such as wrong price units or unit-of-measure conversions on the PO.

Try it here, free

SAP Purchase Price Variance and Moving Average Price Calculator

Open full tool

See the price difference posted at goods receipt for a standard price material and the new moving average price for a MAP material.

Common pitfalls

  • !Looking for a standard PPV tcode: it does not exist as a single report in most systems.
  • !Expecting PPV with moving average price materials.
  • !Mixing foreign currency effects with price variance in the same account analysis.
  • !Ignoring price unit errors, where a PO priced per 1000 is read as per 1.
  • !Using percentage variance to rank problems when low-value items dominate.

How an ERP-grounded AI assistant handles this

PPV analysis is a join across PO history, valuation and G/L, which is slow by hand and easy to ask in plain language: 'which vendors drove the largest purchase price variance last quarter?'. A grounded assistant runs that query, shows it, and explains the top drivers. Netray's private layer reads SAP with the user's roles and can stay on-prem for sensitive cost data.

Frequently asked questions

What is the T-code for purchase price variance in SAP?

There is no single PPV tcode. Variances are posted to the price difference account for transaction key PRD (configured in OBYC), so you report them via G/L line items (FBL3N), PO history (ME23N or table EKBE) and material price analysis (CKM3).

When does PPV arise in SAP?

Mainly when a material has standard price control and the PO or invoice price differs from the standard price. The difference is posted to the price difference account at goods receipt or invoice receipt.

Why do I see no PPV for some materials?

Those materials probably use moving average price control. Receipts update the moving average instead of creating a variance. Check the price control indicator in the accounting view of the material master.

How do I fix recurring PPV?

If variances repeat on the same material, the standard cost is stale. Update the standard through the costing and price change process, and review PO prices and units. Fixing the standard removes the variance at source.

Related

How-to

SAP MIRO: invoice blocked for price variance, and how to release it in MRBR

MIRO blocks an invoice for payment when its price or quantity differs from the PO or goods receipt by more than the tolerance limits defined in OMR6. The invoice posts, but it carries a payment block reason (R for price) until someone releases it in MRBR or corrects the underlying data. Release only after confirming which side is wrong.

How-to

SAP open purchase orders report: ME2N, ME2M, ME2L and the underlying tables

Use ME2N for a flexible open PO list, ME2M by material and ME2L by vendor, with the selection parameter Still to be delivered. The open quantity is the scheduled quantity in EKET minus goods received in EKBE, excluding deleted and delivery-completed items. For custom reports, read EKKO, EKPO, EKET and EKBE.

How-to

SAP MM Order Creation: ME21N Step by Step and the Procure-to-Pay Process

To create a purchase order in SAP MM, open ME21N, enter the vendor and organizational data in the header, add items with material, quantity, plant and price, then save. The PO sits inside the procure-to-pay flow: purchase requisition (ME51N), PO (ME21N), goods receipt (MIGO), invoice verification (MIRO) and payment (F110).

How-to

Production standard cost in SAP Business One: how it works and where it stops

In SAP Business One, standard costing is a valuation method set on the item. Production receipts of a standard-cost item are valued at its standard price, components are issued at their cost, and the difference is posted as a variance when the production order is closed. There is no full multi-level cost rollup in the base product, and process manufacturing is limited.

Error fix

SAP M7 021: Deficit of SL Stock Quantity

M7 021 fires during a goods issue, delivery, or confirmation when SAP checks the unrestricted-use (SL) stock for the exact plant, storage location and batch combination and finds less than what you are trying to post out. Fix the entry (batch, storage location, quantity) first; only enable negative stock or downgrade the message to a warning if the business genuinely needs to post ahead of a receipt.

Error fix

SAP IDoc Status 51: Application Document Not Posted

Status 51 tells you the IDoc reached the application layer and failed to post, but the status text itself is not the error - the real cause sits in the status record's long text or the linked application log. Fix the underlying data or configuration, then reprocess the IDoc through BD87 rather than editing the status.

AI for ERP

AI for SAP S/4HANA, Running On-Prem or in Your Private Cloud

Run AI on SAP S/4HANA without sending ERP data to a public API. On-prem and private-cloud architecture, CDS views, OData, and honest deployment trade-offs.

Stuck on SAP ECC / S/4HANA?

Talk to engineers who work inside SAP ECC / S/4HANA every week, and who build private AI that answers these questions from your own ERP data.

Keep exploring

Free tools

ERP fixes and how-tos

AI on your ERP