Skip to Content
Technical Articles
Author's profile photo Alina-Cristina Vranceanu

Actual Costing – Revaluation of Consumption in SAP S/4HANA

The idea of this blog post is to explain some of the situations vs. solutions I came across while using Revaluation of Consumption on the original account assignment. Below are the questions I will try to answer:

What is the use of Movement Type Group in Material Ledger?

How you can do a revaluation of consumption on original account for Returns if you already have a Movement Type Group Returns, assigned to the movement type?

How the revaluation on the original account should work for cross-company (intercompany) stock in transit movements?

The impact Revaluation of Consumption on the original account is having over CKMLCP Performance in SAP S/4HANA?

Revaluation of Consumption Prerequisites: ML + Actual Costing active.

With Revaluation of Consumption functionality, you can adjust the single-level consumption values in actual costing with the periodic unit price in all value records, if the Revaluation of Consumption step is run during ML closing (CKMLCP – Post Closing step).The price differences assigned to the category Consumption are distributed to the individual consumption alternatives in proportion to quantities consumed. Distribution only occurs for single-level consumption alternatives, as multilevel consumption has already been revaluated by multilevel material price determination.

Revaluation of Consumption can be performed on Collective (COC) and on Original Account Assignment (FI&CO).

Revaluation on collective account – for all consumption alternatives not marked as relevant for revaluation, the revaluation amounts determined are posted to a collective account during closing entry. The collective account must be stored in the customizing of the account determination, transaction OBYC, for transaction key COC.Revaluation on original account assignment: the original account assignment objects (the FI account posted on goods issue) are updated as key features of the consumption alternative. Price/exchange rate differences are posted to the same consumption account that was debited by the original goods issue.

To do this, you have to specify in customizing which movement types are relevant for revaluation. In this way, the amounts determined in Revaluation of Consumption can now be recalculated for these consumption alternatives of the original account assignment. As an option, you can additionally specify in customizing whether you also want to perform a recalculation in the CO account assignment.

You do that using Movement Type Group (MTG), which is a combination of movement types that are relevant to the material ledger update.

As mentioned, you have 2 options available, IMG – Controlling – Product Cost Controlling – Actual Costing/Material Ledger – Material Update – Define Movement Type Groups of Material Ledger:

  1. Revaluation of G/L account
  2. Revaluation of G/L account and CO Account Assignment

If you select option 1 or 2, the account assignment objects (G/L account and/ or CO account assignment) are stored as the consumption alternative key when consumption occurs for movement types that are assigned to these movement type groups. This allows the account assignment objects to be revaluated using actual costs at the end of the period.

After you have defined the MTG, you have to assign it to the movement types IMG – Controlling – Product Cost Controlling – Actual Costing/Material Ledger – Material Update – Assign Movement Type Groups of Material Ledger:Make sure you are assigning the correct single level movement types. As an orientation, I am proposing the following list, but you need to analyse which of the movement types make sense for you and if you use Z* movement types you need to consider those too.

To assign MTG to CO : 201, 202, 221, 222, 231, 232, 261, 262, 281, 282, 291, 292, 453, 454, 457, 458, 459, 460, 551, 552, 555, 556, 653, 654, 655, 656, 657, 658, 683, 684.

To assign MTG to FI only: 601, 602 (MTG CO can also be assigned to 601, 602, depends on how you want to do the revaluation)

Movement types like 241/242 (Asset) doesn’t allow Revaluation to Original Account, or for the 543 (GI Subcontracting = multilevel) the assignment will be ignored.

You need to make sure you have tested all movement types you are using.

The revaluation posting goes to the original CO account assignment, if:

  • It has been stored in the consumption alternative, and
  • the box ‘Set CO account assignment’ in the parameters of Post-Closing has been checked.

Otherwise, a CO account assignment is derived within Accounting Interface, e.g. from OKB9.

What is the use of Movement Type Group in ML?

Movement Type Groups are used to assign selected material movements to different categories.

As explained above, one of the Movement Type Group usages is Revaluation of Consumption on original account assignment.

Another good example is the returns from sales, which are being posted as receipts (ZU) in the price determination structure of the material ledger, affecting the price and generating an incorrect calculation of cumulative inventory (therefore periodic unit price).

As per the recommendation of SAP Note 575801 – Returns and inventories in material ledger, to move the returns into consumption (VN) you have to assign movement types to a specific Movement type Group defined for returns.

Define Movement Type Groups of Material Ledger (IMG path is mentioned above):

Assign Movement Type Groups of Material Ledger (IMG path is mentioned above):

In the ML Update Structure assign the Process Category `B+` and Movement Type Group` RT` to Category `VN`: IMG – Controlling – Product Cost Controlling – Actual Costing/Material Ledger – Material Update – Define Material Update Structure (table CKMLAB01Z)Movement types for returns: 453, 454, 457, 458, 653, 654, 655, 656, 657, 658, 701, 703, 707, 712, 718.

After this modification, the affected transactions are no longer posted as receipts but are posted as negative consumption in the material ledger, ensuring a correct calculation of actual price.

How you can do revaluation of consumption on original account for Returns if you already have a Movement Type Group for Returns, assigned to the movement type?

One of the questions I have asked myself, on my last project, was how to do Revaluation of Consumption on the original account for the Return movement types?

If I already have a Movement Type Group Return `RT` assigned to the movement type, I do not have the possibility to assign another Movement Type Group, defined for Revaluation of Consumption on original account assignment, to the same movement type.

Example:

  • 601 has the MTG for Revaluation of Consumption on the Original Account assigned to it CF
  • 657 has assigned the MTG for Returns RT

Because Movement Type Group `RT` is reassigning the Returns to `Consumption` category, both movement types are considered consumption and are assigned to category `VN`, with the difference that 601 has assigned to it the movement type group for Revaluation of Consumption.

What will happen during ML closing:

  • 601 revaluation will be posted to original GL&CO assignment
  • 657 will be revaluated on COC because we do not have the movement type group `CF` assigned to it.

In this case, the solution is simple, by assigning the MTG for Revaluation of Consumption `CF` the movement type is already directed to the Consumption `VN’ category. Therefore, the assignment of MTG for Returns `RT` should not be necessary for the movement types relevant for Revaluation of Consumption. The correct customizing will be to have Movement Type Group `CF` assigned to both movement types, including for returns:

How the revaluation on the original account should work for cross-company stock in transit (SIT) transfers?

In a cross-company-code or intra-company-code stock transfer, valuated stock in transit allows you to retain the quantity and value of a material that has already left the issuing plant but has not yet reached the receiving plant. Multiple scenarios are available for stock in transit, depending on how the ownership of the goods is being managed.  Stock in transit transfers is also one prerequisite for transfer pricing using multiple valuations.

If the stock in transit movement types are not available  for Revaluation of Consumption with movement types in Table T156Q see oss note 2154402 – SIT not available for Revaluation of Consumption2154402 – SIT not available for Revaluation of Consumption2154402 – SIT not available for Revaluation of Consumption

If you assign MTG for Revaluation of Consumption on original account for cross-company transfers, this will allow revaluating COGS account (+CO account assignment) in legal valuation.

For group valuation this has no impact, here the variances are rolled to the receiving material instead.

The impact Revaluation of Consumption on original account assignment is having over CKMLCP Performance in SAP S/4HANA

Here I am referring to Revaluation of Consumption postings done at Revaluation of G/L Account & CO Account Assignment.

While this setting gives detailed granularity of Revaluation of Consumption, posting at each account & CO object (profitability segment for example), there is also a downside, too many lines for consumption alternatives will get generated.

One example I have faced at one customer, ML closing selection count was 49.230 while ML settlement lines were over 4.5 mil entry, in one period. Because the original account assignment was the profitability segment PAOBJNR.

In case you are also using COGS split, each Revaluation of Consumption posting also adds an entry for actual COGS split. Each Revaluation of Consumption posting will further be split into many lines based on cost component detail.

Such a volume of settlement lines contributes to a long runtime during ML closing, especially when you are using Transfer Pricing and closing, for all valuation areas, needs to be performed in one run.

If you want to post Revaluation of Consumption on original consumption account, the configuration will be at the movement type level. A solution could be to have the option to do Revaluation of Consumption only for specific valuation areas/company codes (while leaving the rest at GL&CO level). As there is no such option of further lower-level configuration than at movement type, posting Revaluation of Consumption for problematic valuation areas at such detailed level, cannot be avoided.

What we did on the project, and it worked, was to use BAdI CKML_UPDATE and remove PAOBJNR while saving ML consumption alternative. Still, there is a PSG, but that is detailed just at the material and plant level. This can be limited to specific movement types, with a Z* table where you can maintain the limitation you want, in our case was company code, plant, material type, flag for clearing PSG.

E.g. For 10 postings of 601, the accounting will still have detailed PSG in the original posting. While storing that initial posting, the system clears detailed PSG and keeps the high-level PSG. This way, the Revaluation of Consumption gets posted on high-level, technically one entry per combination of material/plant/original account.

Be aware that the Profit Center is not derived anymore from the PAOBJNR. It will come from the material master instead.

The main reason for this enhancement is to reduce the number of settlement lines in MLRUNLIST table, with an expectation of quicker ML closing. In our case, the runtime has reduced significantly. Now it is running only 20% of what it used to run initially.

Below is an example of movement types consolidated into 1 settlement line instead of each consumption alternative (otherwise 16 lines in this example), after the implementation of the change.

I hope the information’s I have shared will be helpful.

Additional data for Revaluation of Consumption can be found on the links below:

https://wiki.scn.sap.com/wiki/display/ERPFI/Revaluation+of+consumption+step

Alina Cristina Vranceanu
Product Expert
SAP S/4HANA Regional Implementation Group

Assigned Tags

      21 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Indrajit Das
      Indrajit Das

      Excellent document with details which are very useful and which are usually missing from such blogs. Kudos to you Alina for taking the time to create and post such a document.

      Author's profile photo Alina-Cristina Vranceanu
      Alina-Cristina Vranceanu
      Blog Post Author

      Thank you, Indrajit! Hope it is helpful!

      Author's profile photo Ramky Prabhakar
      Ramky Prabhakar

      Very very informative blog. Thanks Alina.

      Author's profile photo Kasireddy Narasimha
      Kasireddy Narasimha

      Thank you, Alina! for sharing helpful content.

      After I found your document I immediately started doing the configuration and tested it. However, while running CKMLCP system is given error for CO object.

      I mapped default CC via OKB9 for ML consumption gl, so that error resolved. But as per the document shared by you system should pick consumption Cost Center, which is not happening.

      Please let me know if I’m missing any step...

       

      Regards

      Kasireddy

      Author's profile photo Alina-Cristina Vranceanu
      Alina-Cristina Vranceanu
      Blog Post Author

      Hi Kasireaddy,

      The revaluation posting goes to the original CO account assignment if:

      1. It has been stored in the consumption alternative, and

      2. the box ‘Set CO account assignment’ in the parameters of Post-Closing CKMLCP has been Checked. It is not sufficient to mark Revaluate Consumption in the parameters, you also need to mark Set CO account assignment.

      If all customizing is done correctly and you also meet these 2 prerequisites, it should work.

      Regards,

      Alina

      Author's profile photo Srinivas Dasoju
      Srinivas Dasoju

      Amazing Document, can see you put lots of efforts to get this clarification.

      Author's profile photo Srinivas Dasoju
      Srinivas Dasoju

      Hi Alina,

      Thanks for the blog we want to know if we can post to a different GL account for the COGS revaluations (not to original COGS Account). However, we still want to post to a customer level characteristic in COPA for each COGS. Is there any possibility?

       

      Regards

      Srini

       

      Author's profile photo Pierre Rensonnet
      Pierre Rensonnet

      Thank you very much! That's a lot of valuable information.

      I couldn't find why stock transfer orders were not correctly revaluated. You pointed to 2154402 - SIT not available for Revaluation of Consumption

      Nice standard bug from SAP by the way:

      Cause
      • The delivery of the Customizing table is incomplete.
      • You cannot create new entries in some of the Customizing transactions.

      Resolution

      To create these missing entries please install and run the program Z_T156Q_MISSING to find and add the missing entries. This program is provided by the SAP Note 856662.
      Author's profile photo Gleisson Pereira Ramos
      Gleisson Pereira Ramos

      Hello Pierre,

      I need to implement the SAP Note 856662 but when I go to the link it says the SAP Note/KBA 856662 is being updated. Do you have the program code to share with me?

      Author's profile photo Pierre Rensonnet
      Pierre Rensonnet

      You'd probably better directly check with SAP support then. But here is what i could find back:

      Manual activity:

      Use transaction SE38 or SE80 to create the correction report Z_T156Q_MISSING and assign a corresponding package to it.

      Report Z_T156Q_MISSING:

      *$*$----------------------------------------------------------------$*$*
      *$ Correction Inst.         0020751258 0000324672                     $*
      *$--------------------------------------------------------------------$*
      *$ Valid for       :                                                  $*
      *$ Software Component   S4CORE                                        $*
      *$  Release 100          All Support Package Levels                   $*
      *$  Release 101          All Support Package Levels                   $*
      *$  Release 102          All Support Package Levels                   $*
      *$  Release 103          All Support Package Levels                   $*
      *$  Release 104          All Support Package Levels                   $*
      *$*$----------------------------------------------------------------$*$*
      *&--------------------------------------------------------------------*
      *& Object          REPS Z_T156Q_MISSING
      *& Object Header   PROG Z_T156Q_MISSING
      *&--------------------------------------------------------------------*
      *>>>> START OF INSERTION <<<<
      *&---------------------------------------------------------------------*
      *& Z_T156Q_MISSING                                                     *
      *& Find/insert missing entries in T156Q                                *
      *& correction report from note 856662                                  *
      *&---------------------------------------------------------------------*

      *>>>> END OF INSERTION <<<<<<
      ...
      *&--------------------------------------------------------------------*
      *& REPORT Z_T156Q_MISSING
      *&--------------------------------------------------------------------*
      *>>>> START OF INSERTION <<<<
      REPORT  z_t156q_missing.
      PARAMETERSupdate AS CHECKBOX.

      TABLESt156st156q.
      DATAit156q LIKE TABLE OF t156q,
      wa156q LIKE t156q,
      wa156sc LIKE t156sc.

      SELECT FROM t156sc INTO wa156sc.
      SELECT SINGLE FROM t156q
      WHERE bwart wa156sc-bwart
      AND sobkz wa156sc-sobkz
      AND kzbew wa156sc-kzbew
      AND kzzug wa156sc-kzzug
      AND kzvbr wa156sc-kzvbr.
      IF NOT sy-subrc IS INITIAL.
      MOVE-CORRESPONDING wa156sc TO wa156q.
      IF wa156q-bwart '122'.
      wa156q-dlvtp 'RL'.
      ENDIF.
      APPEND wa156q TO it156q.
      ENDIF.
      ENDSELECT.

      SORT it156q BY bwart sobkz kzbew kzzug kzvbr.
      DELETE ADJACENT DUPLICATES FROM it156q.

      LOOP AT it156q INTO wa156q.
      IF update IS INITIAL.
      WRITE'Missing in T156Q:'wa156q-bwartwa156q-sobkz,
      wa156q-kzbewwa156q-kzzugwa156q-kzvbr.
      ELSE.
      WRITE'Inserting in T156Q:'wa156q-bwartwa156q-sobkz,
      wa156q-kzbewwa156q-kzzugwa156q-kzvbr.
      ENDIF.
      ENDLOOP.
      IF NOT sy-subrc IS INITIAL.
      WRITE'No missing entries in T156Q found.'.
      ENDIF.
      IF NOT update IS INITIAL.
      MODIFY t156q FROM TABLE it156q.
      ENDIF.
      *>>>> END OF INSERTION <<<<<<
      ...
      *&--------------------------------------------------------------------*

      Author's profile photo Gleisson Pereira Ramos
      Gleisson Pereira Ramos

      Thank you, Pierre!

      Author's profile photo DIVYESH BHARUCHA
      DIVYESH BHARUCHA

      Excellent information.

      Btw, any idea on scenario wherein more than one source of material transferred to (mov.Type 309) to another material. but a revaluation of consumption not transferred.

      SAY A  / B / C materials transferred to Material D by Mov. type 309. Now, revaluation of consumption not moving to material D.

       

       

      Author's profile photo DOZCO BASIS
      DOZCO BASIS

      Good piece set in the correct sequence  this clears  many  doubt and also the value flow reflected in CKM3n

      Author's profile photo Support Key Users Cableway Team
      Support Key Users Cableway Team

      Thank you Alina for your document. It is very useful.

      I just have a doubt I did the customizing correctly and assigned Good movement 261 (Prod Order Consumption) as 2 (GL and Co Posting)

      However, the Consumption are not valuated at Cumulative Inv PUP.

      Do you have an idea ?

      Thanks

      Author's profile photo Ajay Maheshwari
      Ajay Maheshwari

      Alina-Cristina Vranceanu WHAT A BLOG !! Really Crisp and to-the-point

      I have a follow-up Q related to the Note 575801 that you mentioned. As mentioned in this note, this is now obsolete. The solution described herein also has an inherent problem in the context of Revaluation of Consumption.

      SAP now suggests to use BADI CKML_UPDATE, Method MOVEMENT_IS_RETURN.

      Which solution is preferable to account Sales Returns under Consumption Folder - Modifying the Update Structure using movement type groups or using the BADI ? Also, is there a default implementation of this BADI which provides for Sales Returns as reversal of consumption instead of receipt ?

      Regards

      AJ

      Author's profile photo Frank Roos
      Frank Roos

       

       

      Hi all,

       

      I have the same question as Srini, but did not find an answer yet. Did anybody meanwhile found a solution of this problem.

       

      Thanks

       

      Frank

       

       

      Hi Alina,

      Thanks for the blog we want to know if we can post to a different GL account for the COGS revaluations (not to original COGS Account). However, we still want to post to a customer level characteristic in COPA for each COGS. Is there any possibility?

       

      Regards

      Srini

      Author's profile photo Alina-Cristina Vranceanu
      Alina-Cristina Vranceanu
      Blog Post Author

      Hi Frank,

      Are you using Margin Analysis?

      If you do not want to post to the original COGS account, use OBYC default account assignment for COC, set up the Customer as characteristic in COPA and you have to work on the derivation rules to populate the customer characteristic.

      Cheers,

      Alina

       

      Author's profile photo Frank Roos
      Frank Roos

      Hi Alina,

      thanks for your answer, we achieved to post with different accounts. As we are using the sales order in cost object controlling the problem is now, that we have no longer the sales order as controlling object. Maybe we will find a way via derivation as described in yout answer.

       

      Cheers

       

      Frank

      Author's profile photo Pranav Kumar
      Pranav Kumar

      Hi Alina Madam

      Good Explanation Article.

      I have some query regarding day wise Inventory valuation in costing module.

      please let me know how to achieve.

      Thanks

      Pranav

      Author's profile photo Alina-Cristina Vranceanu
      Alina-Cristina Vranceanu
      Blog Post Author

      Hi Pranav,

      You can leave the questions here.

      KR,

      Alina

      Author's profile photo Jeremy Morkel
      Jeremy Morkel

      Hi Alina,

      I have a scenario where the Revaluation of Consumption posting to COGS component split G/L accounts with the correct value and is displayed in CKM3N correctly i.e. total value is 2071.87 -

      COGS%20CC%20Split%20FI%20Posting

      COGS CC Split FI Posting

      Actual CC split

        Actual Actual CCS   Std. CCS
        2,071.87      
      CIF Price   1735.00   5.82
      Discharge Costs   17.89   0.06
      Customs Duty   181.85   0.61
      Electricity Costs   0.00    
      Inter-Company Margin   0.00    
      Freight Costs   0.00    
      Packing Materials   59.62   0.2
      Labour   77.51   0.26
          2071.87   6.95

      However in CKM3N the Cost component split value is different to the revaluation CC split FI values

      CKM3N%20-%20Revaluation%20of%20Consumption%20CC%20Split

      CKM3N - Revaluation of Consumption CC Split

      Here you'll notice that the cost component values are different t the G/L postings eg.

      CC - CIF Price 1735.00 vs 2139.13

      - Packaging material 59.62 vs 232.33-

      I would be grateful if you could explain how the CKM3N display values is calculated?

      Many thanks

      Jeremy.