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.
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.
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.
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:
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.
LOOP AT lt_thrpt ASSIGNING FIELD-SYMBOL(<thrpt>).
lo_thrpt = lcl_throuput=>create( <thrpt> ).
<thrpt>-throughput = lo_thrpt->ls_thrpt-throughput.
ASSIGN lcl_measure=>lt_main[ werks = ls_thrpt-vkorg spmon = ls_thrpt-spmon ] TO FIELD-SYMBOL(<line>).
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.