One approach to trace a dedicated workprocess
As an ABAPer we have SAT, ST05 ( or sometimes ST12 ) for trace in our toolbox, and recently I find this report which could also do the trace job.
Although the trace information it generates is quite technical and perhaps more useful for those guys who are interested with the ABAP kernel.
How to use this report
1. SE38, execute report RSTRC000, mark the checkbox “Keep Work process”, so that a free work process will be owned exclusively by you unless you release it via this report again. And change the trace Level to 2: Full trace. Select the component which you would like to trace, for example Database.
Click save button and you can see the work process 23 is locked.
2. Now it is ready to run the program which you would like to trace ( just the similar process as SAT or ST05 ). Use /nse38 to go to ABAP editor starting from the current screen of report RSTRC000, and run your program. For me, I just run a report which will query material data from database table COMM_PRODUCT. Once the program finishes, run report RSTRC000 again.
click button “Default val.” so that trace Level is changed to 1 automatically,
then click save button and you could observe the previously locked work process 23 is released.
Now you could click “Display” button to review trace log:
You could export the trace locally to review it. For me I prefer to use my favourite text editor “sublime text” to review text file.
Here below I just list the trace review of several trace component which I have already tried myself.
from the log, I could find which database tables are involved in the report execution and which ABAP program triggers such access. Some C language call could be observed but due to security or authority reasons maybe, we could not review the source file like ablink.c in folder /bas/*.
We could also find the detail OPEN SQL statement from the log, however I could not find the value of query parameter as shown below – they are displayed as ? in the trace.
It just lists all the ABAP class which are involved in the report execution but without method name of those class. In my case from the trace I can just know there are totally 40 different ABAP class with prefix CL_CRM_PROD* ( which are responsible by me) involved in the execution.
Since we are currently use HANA as our database, I could have a very draft understanding about how the OPEN SQL like SELECT XXX FROM table statement is executed in HANA.
This time I would like to trace the lock behavior in tcode COMMPR01. I switch to edit mode which triggers a lock request to enqueue server to lock the product and then I make changes on its description field.
in the trace this enqueue request is perfectly recorded:
- the enqueue object
- the database table on which the enqueue object is working
- the guid of the product instance being locked
- the tcode name COMMPR01
- the user which triggers the enqueue request
From my point of view this option is a good substitute for the enqueue trace in ST05.
I run my report ZHANA_OBJECT_SEARCH in the background and
and I could see from the job log that it is successfully executed.
and this information is also available in RSTRC000 trace:
I didn’t try all the other trace options and maybe they are useful under some extreme use cases. If you are interested, you can start now try it yourself 🙂