There are hundreds, if not thousands, of different objects in SAP. To take Finance alone, we can create, maintain and process GL accounts, financial documents, cost centres, profit centres, fixed assets and so forth.
But the creation of the object is not the only step in its lifecycle. It can also be changed and, rarely, deleted. Some of the changes can have serious consequences on linked processes. When that happens, the question arises among business users and the support team: who did this and why did they make that change?
While the question “why” remains solely on the conscience of the responsible person, SAP often has the ability to tell “who, when and what” changed. Many objects in SAP ERP have “Change documents” listed somewhere in the menu or on the transaction screen itself.
But what if you need to track changes for multiple objects at one time?
It is easy for some objects. For example, you can track changes for Vendor and Customer Master Records using transaction codes S_ALR_87012089 and S_ALR_87012182 respectively.
However, it is not possible for some other objects. For example, you will not find standard reports to track changes on multiple Cost Centres or FI documents, though you can see changes for individual objects.
Here is the time for some technical wheeziness to come into play.
SAP stores changes for most of the standard objects in 2 tables: CDHDR and CDPOS. Changes in SAP’s terms are also documents. That’s why each change has header (CDHDR) and items (CDPOS). Now, looking into the tables CDHDR and CDPOS, you will be able to see who, what and when changed.
Now, this is a place to hold up a big warning sign.
Never ever, try to run reports on tables CDHDR and CDPOS without a proper understanding of how information is stored there. Determine first, what your object’s class and ID are, and how ID is generated. Table TCDOB can help you in this.
For example, changes in Cost Centres are recorded with Object Class KOSTL and Object ID consisting of concatenated Controlling Area and Cost Centre code. At the same time, changes in Bank master data are recorded with Object Class BANK and Object ID consisting of concatenated Client number, country and bank key. Don’t forget in the latter case that the SAP field for country code is 3 characters long, so expect a space between the country code and bank key if you use “standard” country codes like GB, DE, ZA or US.
Now, when you have figured out the rules, you can write a short specification for the developer and write a report showing the changes in object of interest.
You may ask, why not use simpler tools like SAP Query or Quick Viewer to link just these 2 tables together? I can tell you 3 reasons for that:
Unfortunately, not all the objects in SAP leave traces in CDHDR/CDPOS. However, some of them leave traces in Transport Requests. How you can search through them? Read another article: How to track changes in SAP configuration objects.
You may also have some project-specific objects. How to track changes in these bespoke SAP objects? Read about this!