Purchase Price Variance:

In Real Time scenarios, it’s not always the case that the PO Price is in sync with the Standard Product Cost and/or the Vendor invoice amount. That results in Purchase Price Variance. Purchase Price Variance is generally the difference arising out of a GR and/or IR, as compared to the PO price. Let’s take an example to make it clearer.

Example: A PO has been raised for, for 1200 USD .Let’s say it has one material in the line item,
whose standard product cost is 1000 USD.

Now let’s see, what happens during a GR. Point to note is that, GR generally happens at a standard price and the GR IR clearing always happens at
the PO price. During GR the accounting entries will be as below.

Inventory Dr 1000 (source is OBYC BSX)

GR IR clearing Cr 1200(source is OBYC WRX)

PPV Dr 200(Source is OBYC PRD)

What this means practically is, a goods whose price is 1000 USD in the books of the company, has been purchased at a higher price that is
1200 USD. And hence it amounts to loss of 200 USD, which is booked to the PPV account. If the purchase price would have been less that the standard price of the product, a gain would have been recorded in the books.

Significance and Usage of PPV

As now, we are clear with the PPV, let’s now discuss about its significance. As PPV, is an indicator of the deviation of Purchase Price from the Standard Price of the product, the regular occurrence of PPV, for a particular goods, indicates, that the goods has not been costed properly. Hencethe company may decide to re-cost it.

3rd Party and Intercompany PPV

PPV can be generated from a 3rd Party transaction or from an intercompany transaction. It is preferable, if the PPV hits separate accounts for these two scenarios. It helps in keeping track of the intercompany ppv easily.

Although with standard SAP, we don’t have a configuration catering to this need, we can use custom development or substitution to cater to this need.

Ways of Splitting the PPV in to 3rd Party and Intercompany PPV

This can be achieved in multiple ways. Listed below are 3 such ways to achieve this.

  1. through Enhancement

Here during the posting of the PPV the entry will hit the intercompany PPV, if it’s a intercompany transaction.

   2. through Line Item Substitution

Here during the posting of the PPV the entry will hit the intercompany PPV, if it’s a intercompany transaction.

   3. through a stand-alone program

Here, initially, the PPV, will be posted to the same account. Later in Month End, it will be split between the intercompany PPV and the 3rd Party PPV.

Technical Details

1. Through Enhancement:

In this case, a logic would be written in the enhancement point of the FM MR_ACCOUNT_ASSIGNMENT, so that during the posting of MIGO/MIRO,
the PPV account will be tweaked for the desired criteria. It will need some config steps as well to achieve the needful. Below are the steps to do it.

  1. In OBYC, Copy the PRD lines for the required valuation modifier and valuation classes. And assign a General Modifier ZIC.
  2. Assign the required GL account in OBYC, for the PRD transaction and the account modifier ZIC.
  3. Use the enhancement point of the FM MR_ACCOUNT_ASSIGNMENT, as shown below, to write the logic for replacing the PPV account.


  1. Check if it’s an intercompany PO. Same can be
    checked by various criteria as, PO Document type, the IC vendor.
  2. And check if, the transaction type (VORGANGSSCHLUESSEL) is “PRD”.
  3. If so, change the KONTO_MODIFto ZIC (defined in step a).
  4. Then for the Intercompany POS, the PPV picked will
    be the one assigned against transaction PRD and account modifier ZIC.

2. Through Line Item Substitution

Here a substitution step can be created at the line item
level. Prerequisites can be the PO Document type as an intercompany type, and
the vendor as the IC vendor. Then the GL account can be substituted by the
following two ways.

  1. By a constant value
  2. By writing a logic in one of the exits, to pick
    the value from OBYC, “PRD” and “ZIC” combination. Please note that a
    prerequisite of this step will be to create an account modifier “ZIC” in OBYC
    and assigning a GL account against it.

3. Through stand-alone program:

As we have seen above the entry during GR, with PPV, is as

Inventory Dr 1000 (source is OBYC BSX)

GR IR clearing Cr 1200(source is OBYC WRX)

PPV Dr 200(Source is OBYC PRD)

Say, this account “PPV”, is meant for 3rd Party PPV and, we have created another GL account, “PPV1”, for intercompany PPV. We can store this account (PPV1) in TVARVC table, for convenience, or can maintain this in OBYC, as mentioned in point b in the previous section,

A logic can be written, such that, the program, when run, will pick out the line items for the PPV account, for the period in which it is run. Based on the Vendor/PO Document Type, it will identify the posting as an intercompany PPV. Where ever it finds so, it will make a posting as below.

PPV1 Dr 200 (Intercompany)

PPV Cr 200 (3rd Party)

The above posting, is achievable by the BAPI “BAPI_ACC_DOCUMENT_POST”

Such a custom program can be scheduled as a batch job, during the Month End, so that by Month End, there will be a clear segregation
of intercompany and 3rd party PPV.

These are the various means in which, the 3rd Party PPV and the intercompany ppv can be segregated.Your suggestions and comments on this are most welcome.

To report this post you need to login first.


You must be Logged on to comment or reply to a post.

  1. Siva Venkata Ramaiah Naganaboyina

    Hi Radha,

    I have same requirement. tried 2nd method Substitution user exit but it’s not working. After tried 1st method it’s not working. both the methods unable to replace the G/L acc level.

    Please suggest..



Leave a Reply