Skip to Content

MR21 with ML part2 (changing the STANDARD COST, without damaging the ACTUAL)

Hi.This is the 2nd post abut MR21 and Material Ledger.

This time, im going to try break some “rules” and “best practices” of the standard SAP.

CAUTION: Some of the steps in the sequence must not be run in PRD system or doit by your own risk. Im not related with SAP so dont accept my words as a Rule. First test and evaluate if this help you. This is an example for educational porpouses

0. Current month is 2013/08 MMPV was done!

1. Create a new product. ZPP_MR21_01.

2. Post GR in the previous month or 07/2013, and charge PriceDifference account, So we can do ML Close of July later.


Because MMPV was done, receipt of 07 is show as initial inventory of 08 (more complex, more fun)


3. Calculate and release a new Standard Cost for August.  Because status ” quantities and values entered” you cant release a new standard cost… But we break the rules


System change price difference UMB  500mxn. This must be cleared when we close ML in month 07.


4. OK, its time to do MR21, but because status “price change compleated” system dont allow mr21


5.there are some ways to face this problem, im not going to explain this in the blog, again , we break the rules . Please CHECK CAREFULLY, this is not a  LTPC late price change with MR21!!

6 Just set a new standard of 350, you can see the MR21 now allow a new value.


7, system create another document with price difference UMB, now the standar is 350. Again, UMB must be cleared… the total sun mow is 1000 in UMB.



8. Close the Previos Period 07


You can see the end stock of 07 is the beguining stock of 08


The ML Close in this period clear the 500 (release of new standard) + 500 (mr21)  of UMB. U = 1000


PRY is the difference between the Actual cost of the begin stock and the new standard cost (500 – 350)*10 = 1500. This 1500 must roll up in the period end closing of august.

PRY is the difference from the new standard and the actual price, and is created in the ML Close of the previous month, so it must roll up to the end stock or to the next level.  PRY is the value that Roll up, not the UMB created in MR21! this is the key point.

UMB created with MR21 and ML is a temporary account (i use the same account that standard cost release have)  and is cleared when you close the previos month in ML. The net value is 0 if your OBYC is correct, exactly as the release of a new standard cost in ck24. CHeck that  i use 2 accounts, one of UMB MR21  and other for PRY, because PRY is a real ML account that rollup.

If you close ML of the previous month and then do MR21 (with some tricks) UMB is not cleared and i think this is where the problem begin.

The behavior of MR22 is different!. UMB of MR22 is “always” P&L account, the recomendation is use a different account, because this is not cleared, you are creating “actual value in the balance” from nowhere so you have to hit the P&L. MR22 change the actual cost and is intended to roll up and also is correct that roll up!


Now check the final stock, the cost is 500 and is the same as the beguining stock and the same as the end stock of month 07.


Aditional Case.


1. i reverse ml close of 07

2. post MR21-LTPC. new standard is 400, so the system post

ScreenHunter_64 Aug. 16 08.52.jpg

3. close ml in per 07.

4. Run ml close in period 08 (not the last step)

You can see the late price change in ckm3n dont post price difference,


and the new ml close doc clear UMB for 500 (ck24)  + 500 (MR21)  + 500 (mr21-ltpc)  = 1500

ScreenHunter_64 Aug. 16 08.49.jpg

PRY is the difference between Standard and Actual 10 * (500 – 400), this is the value you see in the initial stock in price difference column.

So, now i did in month 08:

+ Relsease standard cost

+ MR21

+MR21 with LTPC


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

    "5.there are some ways to face this problem, im not going to explain this in the blog, again , we break the rules 😈 . Please CHECK CAREFULLY, this is not a  LTPC late price change with MR21!!"

    Are you referring to note 574930-program to change ML status from 30 to 10?

    If there are other ways, would you please share them through my personal email?



    • Hi Toidi, the story is a bit large....

      Indeed, one of the problems in my example was i did GM in the previous month (i mean period 08 is active). I need to do because I create a new material from scratch and want to calculate an actual cost in the ML close of 07 and show the complete example.

      When you do that, ML post a movement both in previos and actual period (procurement line in initual stock), and i couldnt cancel GM the post  as required in OSS  574930. This GR have a extrange behavior, all the price difference is in the previos month but post exit in sme way in the current.

      I create a modification in the program of the note that dont care of this issue.  I Tested a lot this modification and also the implication debuguing the ML close and i think work well (99% sure). There is not a OSS that "allow you do that", so i did at my own risk and responsability, in this example is just my testing Ides.

      the validation is the following

      ckmlcr is the table that record movement in the period, the program validate if the value is not "0" . Just jump the validation and system allow you set status 10 and then you can do MR21. 

          if f_ckmlcr-ZUUMB_O ne 0

                      or f_ckmlcr-abprd_o ne 0

                      or f_ckmlcr-abkdm_o ne 0

                      or f_ckmlcr-zuprd_o ne 0

                      or f_ckmlcr-zukdm_o ne 0

                      or f_ckmlcr-vpprd_o ne 0

                      or f_ckmlcr-vpkdm_o ne 0

                      or f_ckmlcr-vnprd_o ne 0

                      or f_ckmlcr-vnkdm_o ne 0

      Dont do that if the GM is in the current period!! In this case you must reverse the GM if you want the change the ML status (very sad 😥 )

      PS2. If you do MR21 LTPC after ML Close of the previos month, UMB rollup and damage the actual cost. Keep this in mind!

      • Arturo,

        Thanks for the update.  This is very interesting.  Like I have said in my other posts, we have a lot of materials with this problem, so getting business approval to run this SAP program in production with the modifications you have suggested would be a Himlayan task.

        Thanks for providing a solution.  I'll update you what happens next.



        • Hi Toidi,

          You do not have to use the modified program to change your prices, you can still use MR21 with LTPC in the new period, as long as the old period is open. This is what i understand from the blog...

          Arturo, please double confirm.

      • Hi Arturo,

        Are you saying that your blog example above can only work if we use the custom method to change the price in new period (while the old period is open) and it will not work if we use MR21 with LTPC?

        I thought we can use MR21 with LTPC to change the price in the new period while keeping the old period open and it will not allocate any price variance. Is it not the case?

        • Hi Sanjay.

          The correct way to work is with the oss 574930. You can reverse the status is some conditions are accomplish, eg reverse all the GM in the actual period (08). I think Its better because standar system control all the positilities and dont alow to damage something 😉 . Also, in CKM3N you see the post dont show "late price change".

          If you do MR21-LTPC in month 08 before ML close of the previos month (07), and no GM in the actual month (08), work good!

          work good means ML close of period 07 clean UMB created with standard cost release, MR21, and MR21-LTPC.

          Check the last lines of the blog,  i add an adendum of the initial blog with the steps:

          1. i reverse ml close of 07

          2. post MR21-LTPC. new standard is 400

          3. close ml in per 07.

          4. close ml in period 08

          You can see the late price change in ckm3n dont post price difference, and the new ml close doc is for 500 (ck24)  + 500 (MR21)  + 500 (mr21-ltpc)  = 1500 so clear UMB correctly.

          In my example, the situation is a bit different because i create the whole example in month 08, i post a GM in the previous month (i mean 07) while the actual month (08) is active. In this case, the sistem behavior is a bit extrange, create a doc in both months (07 and 08), and in my example i couldnt revese this doc because i need have data in the previos month in order to calculate an actal cost in month 07.

          I put "i dont use LTPC" because lot of ppl do MR21 LTPC after do GM in the actual period (08) o afther ML close of month 07. If you do that, UMB rollup and damage the actual cost. This was the only reason.

          Wish this clarify .


  • Hi Friends,

    I am comparatively new to ML, i need your help here..

    I have configured everything and i see that in my CKMLCPAVR and i don't see my Price Difference calculation. so could you please help me what may be the reason, i even posted some entries via MR22 but still i don't see the Price Difference calculation happening, we use Weighted Average.