TOC Measurements with SAP Part 1

TOC Measurements with SAP Part 1


The topic of this blog is to show you how SAP ( in my case ERP ECC 6.0 ) can be used to get the right data for performance measurements, which are used in TOC ( Theory of Constraint ). These measurements consist of T (Throughput), I (Investment) and OE (Operating Expense). My main goal is to direct you to where and how to obtain data from (out of) SAP. A detailed examination of TOC and it’s TA (Throughput Accounting) is beyond this post. You can find a lot of information on the internet and books related to this subject.

The Goal:

There was a project in our company to improve financial control processes of the whole company and to simplify it. It was decided to take an approach from TOC and its Throughput Accounting (TA) by using its measurements T, I, OE for evaluating the company´s performance. These are the basic values and from these, you can gain e.g. NET PROFIT (T – OE) and RETURN ON INVESTMENT ((T – OE) / I) or PRODUCTIVITY (T/OE) and TURNS (T/I). Unfortunately, there is no standard way in SAP ECC 6.0 to get this data directly. Let me demonstrate a way of how to gain our measurements for a time period of a month:


T = Revenues – TVC (Totally Variable Cost – mostly just raw material) There are at least two possible ways how to build it. We have to start with sales. Fortunately, there are LIS – Infostructures with revenues in time periods such as S001 and others. See picture…In my case, it is the infostructure S660. Now with data (Month, MaterialNumber and Sales) for building our throughput (T) value we have to get the second part of the equation and this is TVC (Totally Variable Costs => in our case raw material) One way is to break down to all these component(raw materials) of the product in BOM ( Bill of Material) with the function module CS_BOM_EXPL_MAT_V2 and then find out their price in the time period (tables MBEWH / MBEW) or another way is to use calculations (tables KEKO + KEPH) for the product in that time period where TVC is available. I created for TVC a cds view. See code:

define view zcds_calc as select from keko left outer join keph on keko.bzobj = keph.bzobj and keko.kalnr = keph.kalnr and keko.kalka = keph.kalka and keko.kadky = keph.kadky and keko.tvers = keph.tvers and keko.bwvar = keph.bwvar and keko.kkzma = keph.kkzma { key keko.werks as werks, key keko.kalnr as kalnr, key keko.matnr as matnr, key keko.kadky as kadky, keko.poper as mesic, keko.bdatj as rok, keko.losgr as losgr, // Quantity (keph.kst001 + keph.kst002) as tvc // our total variable costs for Quantity } where keph.kkzst <> 'X' and freig = 'X'

Now we have everything needed for our equation for Throughput and we can sum all products sold in a month in one T in a time period. Here are my methods as for an example:

METHOD get_throughput. 
SELECT * FROM zcds_throuput INTO TABLE lt_thrpt 
WHERE matnr IN sl_matnr 
AND spmon IN sl_month 
AND vkorg IN sl_werk 
AND matnr NOT IN sl_nomat. 
lo_thrpt = lcl_throuput=>create( <thrpt> ). 
lo_thrpt->calc_position( ). 
<thrpt>-throughput = lo_thrpt->ls_thrpt-throughput. 
METHOD calc_position. 
CLEAR: ls_thrpt-throughput. 
ASSIGN lcl_measure=>lt_main[ werks = ls_thrpt-vkorg spmon = ls_thrpt-spmon ] 
 ls_thrpt-throughput = ls_thrpt-revenues - 
( ls_thrpt-unit * lcl_calc=>get_tvc( i_matnr = ls_thrpt-matnr is_main = <line> ) ). 
<line>-t = <line>-t + ls_thrpt-throughput. 

In the next part, we will look at how to build OE and I and how we use them for performance evaluation. 

Best Regards