Professional Documents
Culture Documents
Welcome, Guest
Login
Register
The ABAP Runtime Analysis (transaction SE30) is the best starting point if you want to execute performance or flow analysis of your ABAP program. Unfortunately many people use ABAP Runtime Analysis only to look for performance bottlenecks and don't know that ABAP Trace is the only tool with which you can trace the execution flow of an ABAP program at the statement level. This blog will show you how to use ABAP Trace of ABAP Runtime Analysis (SE30) to follow the flow logic of your ABAP program.
You could of course start the ABAP Debugger and try to debug in single step. And then after hours or weeks of intensive debugging you might be lucky enough to find the source code line of the ABAP statement. But why waste time? Here is how to use the ABAP Runtime Analysis to find this error message in a couple of minutes. If you press "?" button or click on the status bar near the error message, you will see the F1 help on the message, in the performance assistant. This tells informs you that the number of the error message is DS017. Therefore you have to look for the "message DS017":
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
1/15
7/29/13
To find the message, first start the ABAP Runtime Analysis and create a measurement variant. 1. Start the ABAP Runtime Analysis (transaction SE30) via System -> Utilities -> Runtime Analysis -> Execute or call the transaction directly with "/nse30". 2. Type "SE38" into "Transaction" field. 3. Create a measurement variant for your user: Type a name into "Variant" field and press "Create" button Set aggregation to "None" on the "Duration/Type" tab For memory usage info check the "With memory use" flag Switch on "Particular units" on the "Program(Parts)" tab Save your variant
Before we go on, some important notes. Don't use aggregation if you want to trace ABAP in order to follow the program logic (what we are doing here). Aggregation summarizes the trace data for a particular type of event in a single trace record and therefore reduces the number of entries in the trace file. But to see the complete program flow you need all trace data. Try to use "Particular units" where possible in order to reduce trace file size and trace only the code you really need to see. The option "Particular units" allows you to switch on/off the ABAP trace during the running transaction. The trace will be started as soon as you enter "/ron" (trace on) in the OK field in your transaction. With "/roff " the trace is stopped. Alternatively you can also use the menu path: System -> Utilities -> Runtime Analysis > Switch On / Switch Off. Let's execute the measurement: 1. Press "Execute" button. Transaction SE38, the ABAP Editor, starts. 2. Type "XXX" into the "Program " field and turn on the trace with System -> Utilities -> Runtime Analysis ->Switch On. 3. Press the "Display" button and turn off the trace with System -> Utilities -> Runtime Analysis -> Switch Off.
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
2/15
7/29/13
Step back to the Runtime Analysis and analyze the trace results: 1. Press the "Evaluate" button. 2. Press the "Call Hierarchy" button and you get a list which represents the complete path through your program. 3. Search for "message DS017" in the Call Hierarchy list. 4. Double-click on the entry in the Call Hierarchy list to jump to the source code line, which initiated the error message.
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
3/15
7/29/13
You can find this out very easily with the ABAP Runtime Analysis. You can use the ABAP Runtime Analysis (SE30) to trace programs which are running in a parallel session. 1. Ensure that you run SE30 on the same server as the running process! 2. You must create or adjust a trace variant for tracing the parallel process. Set aggregation to "None" again to get the Call Hierarchy. 3. Press the "Switch On/Off" button to trace processes running in a parallel session. The Runtime Analysis displays a list of the running processes similar to the Process Overview (transaction sm50). 4. Use the "Start measurement/End measurement" buttons to activate and deactivate trace. Caution: Deactivate the trace again after short tracing time so that you do not reach the trace file quota! Before deactivating the trace, refresh the work process display. The dialog step that was active in the work process with the activated trace may have changed, and that deactivates the trace automatically.
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
4/15
7/29/13
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
5/15
7/29/13
When the trace is scheduled, the ABAP Runtime Analysis automatically starts the trace as soon as session that meets your criteria is started on the system. The user you have specified logs on to the system and executes his task, and the ABAP Runtime Analysis starts to write the trace. The trace results can be analyzed - as usual - in the ABAP Runtime Analysis (using the "Evaluate" button on initial screen).
Topics: ABAP
5480 View s
Share
Tw eet
Like
63 Comments
Ritesh Mehta Dec 11, 2009 10:40 PM
Very Nice blog and very much required one. Helps to analyze the performance issues.
Like (0)
Thanks for the blog ,I am a functional person. with your blog reference i have solved my batch job issue. Thanks again S.N
Like (0)
Good one, very Help for abaper to analyze the performance issues.
Like (0)
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
6/15
7/29/13
Hi, thanks for an excellent blog. Very useful information, especially the part on HTTP tracing. /Bjrn-Henrik
Like (0)
Bjorn-Henrik Zink Dec 14, 2009 2:42 AM (in response to Bjorn-Henrik Zink)
Hi again, in fact, the blog is fantastic and the most useful blog I have read this year on SCN. It will surely speed up my analysis of HTTP/RFC applications. /Bjrn-Henrik
Like (0)
Olga Dolinskaja Dec 15, 2009 12:54 AM (in response to Bjorn-Henrik Zink)
Thank you very much! I hope it will help to analyze the behavior of Web Dynpro applications as well.
Like (0)
But I do want to comment that for finding from where the message was issued for SE38, we could still use "watch-points", which is equally quicker and cheaper(in terms of effort). I appreciate your effort ... Bye, Uth
Like (0)
Olga Dolinskaja Dec 15, 2009 12:52 AM (in response to Uthaman Palaniappan)
Hi Uth, in the example with a message you could indeed set a watchpoint on a variable SY-MSGNO and debugger would stop as soon as it changes. But it works only if you know that message number is stored in the SY-MSGNO. If you dont know it you cannot work with a watchpoint. The ABAP Trace makes sense if you are not familiar with the code and variables and need quickly to analyze its behavior. Best Regards, Olga.
Like (0)
Naimesh Kundanani Jan 20, 2010 3:13 PM (in response to Uthaman Palaniappan)
Even better, just keep a break-point on Statment "Message" , it'll be seconds before you reach the desired statement. This is how i teach the functional consultants in our team, cos just /H & they are on their way... while SE30 & other tools are best left to developers. Regardless, your blog is most enlightening, thank you :)
Like (0)
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
7/15
7/29/13
Chintan P. Contractor Dec 18, 2009 8:53 PM
Excellent Blog.. Would have saved a lot of time if i know this before...
Like (0)
Its great work, I have also published one article on SE30 but not as this much detail. Good job keep it up.
Like (0)
Often many inmportant topics are ignored to be studied in detail. Every ABAPer should fundamentally know these. And this blog serves the need.
Like (0)
Another tool that is very useful to gather information about the program flow is the "Single Transaction Analysis" (ST12) This toool has some features that go beyond SE30 e. g. the bottom-up analysis of an ABAP trace that displays the hierarchie of the callers in a quite comfortable and inuitive way.
Like (0)
of the course COMP267 given by Boris Gebhardt on debugging at SAP TECHED last year in Berlin. still a pitty that this is not a regular training since it already saved me months of cluelessness in debugging possibilities. I also made a summary of it but now I can link to this blog
Like (0)
Hello Arthur, I'd be most interested in your summary of COMP267, as a complement to this excellent blog. Where can it be found? -- Best Regards, Sebastian
Like (0)
my own summary was written in dutch for my colleages , I could not find the comp267 as an pdf file which was used at the course. perhaps Olga is allowed to also put it online as an extension to this blog.
ps it would be nice if there also came a follow up on this which handles debugging in se38. like debugging update processes, using watchpoints and where to declare the variables, finding the startpoint etc etc.
Like (0)
Hi, unfortunately I cannot share TechEd materials on the SDN. But the good news is, that the most content of the CD265 (successor of the comp267 on the TechED 2009) will go to the SDN as weblogs and videos and will focus on the News in Troubleshooting with NetWeaver 7.0 EhP2. This should happen between april and may.
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
8/15
7/29/13
hmmm there is not much in you're business card like an email.. I'm trying to debug some portal issues which work nice until the point I get methods or impossible functions which I can't isolate and transfer the testdata. normally it was nice if you came inside a function you could transfer all the import parameters to the function but not with HR_BLP_READ_TIMEDATA further on I haven't found yet with the new debugger how to transfer testdata to methods. seems like logic to me that when SAP wants us to programm OO that we also have the possibilities to debug it and transfer even the more complex testdata from methods to testdata ? is it already possible to transfer data from debugging to methods ??
Like (0)
Hi, in the past I created a debugger script to help myself getting data out of the debugger for reproducing errors. Perhaps this can help you, therefore I would like to understand exactly what you want to do. So far I understand you want to capture the methods parameter. Where do you want to use them? Kind Regards, Klaus
Like (0)
Hi, you can transfer content of debugger variales as import parameters for functions. It is possible to save debugger variables as test data for the SE37 transaction and then debug the function modules with these test data. Use context menu (right mouse button) for your variable in the variable fast display and choose Save Parameters as Test Data (SE37), execute debugging of your function module in SE37 and choose test data from test data directory (Test Data Directory button) as import parameter for your function module. Best Regards, Olga.
Like (0)
I know how to transfer testdata to se37 that's not the problem. the main problem is that it doesn't work for all functions especially those functions that are totally fuzzy and no way to remember all data.
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
9/15
7/29/13
Keep it up.Gr8.
Like (0)
Hi Thank you for all your efforts and time spent on the this. KRC
Like (0)
Great post for complex topic described in easy to read and understandable manner
Like (0)
Thank you very much; this very useful tutorial link arrived in my email just when I needed it. I found one minor error: 'Search for "message DS017" in the Call Hierarchy list' won't find it. As your picture shows, the code line is "Message S017" - not "DS017". Same for all messages: Snnn, Ennn, etc.; the full number from the F1 help box never shows in the code.
Like (0)
Very useful for tracing RFC requests of other users. Thank you for an excellent post.
Like (0)
Hi Olga, It was really useful. While we regularly used to test the t-codes, programs and FMs, we never explored the parallel session and user/service options. This would certainly help us reach the root of the problem even faster. However, I was unable to trace a BSP application. I gave these settings from user 001671 for another user (These were visible as on 21.01.2010)Measur. ID 4 User 000984 Sessn Any ProcessCat Any ObjectType Object Name HAP_DOCUMENT Scheduled 1 Started 0 Errors 0 Status Executed Exp. Date 20.01.2010 Expir.Time 12:02:42 After setting this up, I used the BSP application HAP_DOCUMENT. No trace was generated. Please suggest the correct settings, or if you know any document that can help. Thanks.
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
10/15
7/29/13
-Abhijeet.
Olga Dolinskaja Jan 21, 2010 3:32 AM (in response to Abhijeet Kulkarni)
Hi Abhijeet, your measurement settings look ok so far. Please verify that user mapping (on the other user) does not take place during execution of your BSP before calling HAP_DOCUMENT. Otherwise schedule measurement for e.g. "any" user. Please also verify that BSP request really arrives on the same application server of your ABAP backend system, where you scheduled your measurement in the SE30. For more details on measurement settings please take a look at the Runtime Analysis Docu on SAP Help Portal: http://help.sap.com/saphelp_NW70EHP1/helpdata/en/42/eaae4baeb732c3e10000000a1553f6/frameset.htm I hope this helps... Best regards, Olga.
Like (0)
Abhijeet Kulkarni Jan 21, 2010 4:20 AM (in response to Olga Dolinskaja)
Hi Olga, I would check the timing of user mapping and try tracing with the suggested settings. Interestingly, ST12 worked! I had put following setting in ST12Trace For- User User name- 000984 Task Type- H HTTP (HTTP request/BSP) Thanks for the guidance. -Abhijeet.
Like (0)
Yesterday did exactly as mentioned in the introduction. Spent many hours debugging a transaction to get to the root of the problem. I could've saved many hours if I knew of this weblog before. But I now know how to use SE30 and it'll be my savior. Many thanks for sharing your knowledge. I'll also try to learn about ST12 as suggested by another kind soul.
Like (0)
Hi Olga....your instructions on ABAP debug is really good. I would like to use it with BW ABAP code (Start/End Routines,etc). How should I use it? Is there any change to apply? Thanks in advance for your comments. Silvia
Like (0)
Olga Dolinskaja Jan 21, 2010 4:17 AM (in response to Silvia Giussani)
Hi Silvia, the SE30 allows you to examine the runtime of any ABAP programs, such as reports, subroutines, function modules or classes, that you create in the ABAP Workbench. I am not sure which type of BW applications you want to measure, but actually it should work the same way for BW ABAP applications as described in the blog. Best Regards, Olga.
Like (0)
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
11/15
7/29/13
Sanjay
Hi Olga, This is really magic man. I am happy to know that we could do this using SE30. Great Webblog ever.. Regards Abhii
Like (0)
Hi there, thanks for the nice blog. I've run into a problem, though: I've created a variant for a report of mine exactly as described. The report is started using a variant. The report, when debugged, makes a couple of PERFORMS and a method call during START-OFSELECTION. It then starts a couple of jobs in the background (which I don't expect to be measured) and displays a list at the end. However, the call hierarchy does not reflect any of this. Instead, it contains only one line saying "Runtime analysis" for "CL_ABAP_TRACE_SWITCH==========CP". The measurement file has only 5 KB. Any idea what might be going wrong? -- Sebastian
Like (0)
Olga Dolinskaja Jan 28, 2010 1:40 AM (in response to Sebastian Millies)
Hi Sebastian, Are you sure that the report was executed, e.g. have you seen the list at the end? If yes, for me it looks like the trace was not switched on. Please make sure that you run your report on the same application server as SE30. If the report runs correctly without SE30 and without debugger, please try again to run the measurement with SE30 and explicitly switch on/off it by choosing "Particular units" option in your variant and using "/ron" "/roff" commands as described in the blog. Best Regards, Olga.
Like (0)
Sebastian Millies Jan 29, 2010 4:15 AM (in response to Olga Dolinskaja)
thanks, it now works (except I'm often running against a limit on the trace file size). -- Sebastian
Like (0)
Olga Dolinskaja Jan 31, 2010 1:43 PM (in response to Sebastian Millies)
Hi Sebastian, you could increase your trace file size on the "Duration/Type" tab in your variant. Better way would be to switch on/off the trace only where you really need it (/ron and /roff commands). Regards, Olga.
Like (0)
thanks, that worked, except I had to talk the administrator of the server to give me a bigger quota. One idea for an improvement for the transaction would be the possibility of local measurement files (i. e. residing on the client, at least up and download should be possible). The reason for the big increase in file size was that some processes got started asynchronously and the process I was tracing then did active polling in a loop. I'd basically like to skip this part of the trace. I think a big improvement to the transaction would be the possibility of an exclude list in the "particular units" part of the variant.
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
12/15
7/29/13
Hi Sebastian, Thank you for the feedback. Just to let you know, we have made some improvements in the new version of Runtime Analysis (successor of SE30). The trace files will be written directly to the database, and you shouldn't have a problem with a disk quota for your trace files anymore. This feature will be available within SAP Business Suite based on Netweaver 7.0 EHP2. I have also forwarded your wish about the "exclude list" to the development. Regards, Olga.
Like (0)
Thank you Olga! I have been for some time now looking for a more efficient way to do forensics on programs from the namespace "!". Sometimes I am called upon to do this. Often the security audit log is "too late" for successfully submitted reports and I was "too slow" for STAD to give me these details. In addition to the developer trace, I had not thought of using SE30's own results yet. Many thanks! Julius
Like (0)
Hello Olga, Thank you for this post, one of the most useful I've seen. A great help for any SAP consultant! Regards, Joo
Like (0)
Indeed helped me find the source code of my error way faster than I would have done otherwise.
Like (0)
Ever since I discovered this weblog I used it a lot, and sent it to everyone I know. Thank you very much for this.
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
13/15
7/29/13
Hi, very nice and helpful blog, I followed this method earlier also reading this blog and it worked fine just as explained; but now I want to analyze a long running DTP job and every time, it doesnt display any code lines in output file (after clicking evaluate button). I used same settings for trace variant as mentioned. Cant SE30 trace object oriented code? - Purvang
Like (0)
Olga Dolinskaja Mar 9, 2010 3:51 AM (in response to Purvang Zinzuw adia)
Hi Purvang, yes, SE30 can trace object-oriented code as well. Please check again your trace variant ("Statements" tab). Best regards, Olga.
Like (0)
Purvang Zinzuw adia Mar 10, 2010 6:04 AM (in response to Olga Dolinskaja)
Hi, I have used below setting for trace variant Program (Parts) Tab - only 'RFC, Update' is unchecked Statements Tab - only Kernel Level is unchecked Duration Tab - aggregation is set to none and 'With memory use' is checked my DTP use parallel processes to process different data packages, I can see diff actions in SM66 output but I cannot capture these in SE30 file. Please help, Purvang
Like (0)
Olga Dolinskaja Mar 11, 2010 1:27 AM (in response to Purvang Zinzuw adia)
Hi Purvang, if a trace file is empty then the trace has not started at all. You maybe need to check some additional things. I can give you just some ideas...Before deactivating the trace in the "Start/end measurement..." view, refresh the work process display because the work process with activated trace may have changed. Consider that you need to start and stop the trace for each parallel process, that you want to trace. You will get trace files for each process. Do you use RFC calls into other systems in your parallel processes? If yes, then you need to check 'RFC, Update' as well. Regards, Olga.
Like (0)
Hi, I would like to know in case my ABAP shows 80% and above and Database shows 5% to 15% usage and remaining by system than is such a code good or bad and why?? Sid
Like (0)
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
14/15
7/29/13
it depends on you're coding if it is good or bad. sometimes 90% database is good when abap coding is very lean. when database access is lean 80% abap can be good. you have to look if customers are happy about the performance and if they are not then analyze if something can be changed with for instance se30. in you're case when abap is 80% it is logic to concentrate in looking at the coding. and how much time each block consumes. you get very quick insight in this with se30 or sat and full aggregation. Arthur
Like (0)
Hi, Thank you for a very good blog. It describes more advanced techniques for SE30 and presents core knowledge that should be known. Still up to date Regards, Adam
Like (0)
Copyright
Follow SCN
scn.sap.com/community/abap/testing-and-troubleshooting/blog/2009/12/11/abap-runtime-analysis-se30--how-to-analyze-abap-program-flow
15/15