Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

How to find tables that log changes in CDHDR

Former Member
0 Kudos

Hello,

I am not sure this is the right forum, but other forums do not let me to post a new thread.

I wonder how can I find out the complete list of tables that have Log Data changes checked, meaning which tables will log changes in CDHDR and CDPOS.

Thanks

Galina

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hello Galina,

The easiest and obvious way is to use transaction SCU3 and select the "List of logged tables" button. There are several dependencies which determine whether or not you will find a log there.

If you search SDN and "OSS" (service.sap.com/notes) for "rec/client", "recclient" (without "/"!), "vers_at_imp" and "sobj" then you will find usefull information on the logging options.

Note that if you have activated "recclient" in the transport profile, then the user ID for the change to the table will often be a transport request number. Changes to many tables and customizing objects are of course made in development systems. So you might want to consider activating some logging there as well.

In my opinion, another usefull "log" is preventing changes, rather than finding them. Giving a little bit more users a little bit too much change access for S_TABU_DIS, S_DEVELOP, etc is like having a little bit more <a href="http://en.wikipedia.org/wiki/Inflation">inflation</a> than you would want.

Cheers,

Julius

PS: It is strange that you cannot create threads in other forums. There was some "talk" about limiting the number of open threads per SDN user (10 was suggested) - because some people do not follow-up on and close the questions they have opened...

That should not apply to you, and I am not aware that it is implemented (yet).

9 REPLIES 9

Former Member
0 Kudos

Hello Galina,

The easiest and obvious way is to use transaction SCU3 and select the "List of logged tables" button. There are several dependencies which determine whether or not you will find a log there.

If you search SDN and "OSS" (service.sap.com/notes) for "rec/client", "recclient" (without "/"!), "vers_at_imp" and "sobj" then you will find usefull information on the logging options.

Note that if you have activated "recclient" in the transport profile, then the user ID for the change to the table will often be a transport request number. Changes to many tables and customizing objects are of course made in development systems. So you might want to consider activating some logging there as well.

In my opinion, another usefull "log" is preventing changes, rather than finding them. Giving a little bit more users a little bit too much change access for S_TABU_DIS, S_DEVELOP, etc is like having a little bit more <a href="http://en.wikipedia.org/wiki/Inflation">inflation</a> than you would want.

Cheers,

Julius

PS: It is strange that you cannot create threads in other forums. There was some "talk" about limiting the number of open threads per SDN user (10 was suggested) - because some people do not follow-up on and close the questions they have opened...

That should not apply to you, and I am not aware that it is implemented (yet).

0 Kudos

Hello, Julius

Thanks for your reply. I would like to know more about changes made to the system. I can see in CDHDR change documents related to PO activity (based on user), but I do not see anything for AP. I do not know how what tables AP folks would need to change (for example for FBL1N) without going via many programs, but I do not even see their names in CDHDR.

I tried to look at SCU3, and am not sure what I get out of it. First it says that logging is not activated for my system, and then it gives me the long list of tables. I do not see some that I see from CDHDR or CDPOS. I looked at rec/client and I am not sure what logging it deals with. I am looking at table DBTABLOG, and I see no entries for this year on our system. And what would be condition to have entries in this table. Would it be that "Log Date Changes"?

I guess I need more explanations. I would appreciate you shedding more light on this topic for me. I will definitely award points.

Thanks

Galina

0 Kudos

Hello Galina,

Sorry, I have confused different "logging" concepts here, and answered the wrong one. I was misled by your statement "how can I find out the complete list of tables that have Log Data changes checked".

I was referring to changes made to tables from maintenance views.

You are referring to "transaction" data changes (Purchase orders, Invoices, etc). For example, someone saves a record with quantity 1 x pack of 10 units. Then a delivery of order quantity 2 x pack of 5 units is made. You would like to see the history of that record to find who changed the order? Those sorts of records are written in many places. I would think that your best bet is to use the business transaction and open the menu to choose the "Display change documents" option, or look in the standard SAP menu in that application area for a "Display change documents" transaction or report. Or use transaction 'SEARCH_SAP_MENU' to find the node based on "<document type> change document".

There are in fact also "logs" for business transactions which "mutate" the data within the same table or logical database table (a cluster of tables). There you can see the current record, or if you want to you can go back in time to see what it was way back when.

Technically, it is often usefull to do a where-used-list search on a table or the field of a table to see where it is being read or updated from, and explore further to find the logic behind the "log" and which tables etc are important and what the conditions are for a "log" to be written, and when. But that is often confusing...

To be honest with you, if you are trying to get this information from tables (lo-and-behold a single table), then I think you are taking the wrong approach.

At least, that is my view on the topic,

Julius

PS: No problem with the points. They are an "indicator", but saying "thank you" does the same. Even better is... "sorry to disagree with you, but..." - then we all get to learn something

0 Kudos

Julius,

I am looking at tables because I do not see how to get this info otherwise. Here is the little scenario. Let say, we had a system's crash. I know that at the time of the crash, user A made entries in the system (in AP), and user B made entries in the system in (PO), and some other users also were logged on. I would like to make sure that everything that user A did is in the system, and what user B did is in the system. I am looking for the way to find out. I go to CDHDR (for change documents), and I see records for user 's B activity, but nothing for user A. However, I see entries for user C, who is in the same group as user A. I wonder, can it be that user A is using user's C login?, or it is because table CDHDR only logs fraction of changes, for some of the tables, but not for the others. So, I am on the search to find out. I do not care where and how I can find changes made by user A, I just want to find a log of these changes.

Thanks

Galina

0 Kudos

Hello Galina,

>> Let say, we had a system's crash.

That is again a different story. Are you a DB admin? You are stretching my knowledge here... in that case you need to restore DB logs. But I dont think that it is physically possible to get absolutely everything back again, because many objects which contain data only exist at runtime of the programs. You will have a tough time trying to find those in SE16 for example

>> However, I see entries for user C, who is in the same group as user A.

>> I wonder, can it be that user A is using user's C login?.

Strictly speaking, yes. The programmer can define that certain tasks triggered by user A are performed using "destinations" for example, and send the "table data" to the interface of a function module. Those tables, processing, and even creation of documents or change documents, can be running under user C (which is defined in the destination - see transaction SM59). A common solution to use is Workflow, where you can send tasks to "user C" so that user A's performance is better (and user A does not need the authorizations for those tasks). Ideally, those destinations are boring ones with limited boring authorizations.

>> or it is because table CDHDR only logs fraction of changes, for some of

>> the tables, but not for the others. So, I am on the search to find out.

I am not sure about the construct of that table, but as mentioned before, if you want to go looking for data in SAP tables, then I think you are taking the wrong approach.

Kind regards,

Julius

Former Member
0 Kudos

I cannot award point in "answered" state

0 Kudos

Julius,

I do not see where to award points!

Thanks for your help.

Galina

0 Kudos

No problem. There is currently some technical "problem" so points are not even visible. Perhaps they are being converted from apples in a table to pears in a structure?

Cheers,

Julius

0 Kudos

This is now marked as answered