Next Generation ABAP Runtime Analysis (SAT) Introduction
SAT is the transaction name of the new ABAP Runtime Analysis Tool, which is one of the most significant improvements in ABAP in the NetWeaver 7.0 EhP2. For those of you who are already familiar with the transaction SE30, the former ABAP Runtime Analysis Tool, transaction SAT is the successor of SE30. In SAT, ABAP’s Runtime Analysis has been reworked by SAP’s R&D department and has been enhanced with effective new analysis tools and features.
SAT offers benefits such as a modern state-of-the art UI, new analysis tools, easy navigation between tools and so on. This first blog of the series about SAT gives overview of the most useful SAT improvements (particularly in comparison with the former SE30) and gives a quick guideline how to use new features and tools of the SAT to execute effective runtime analysis of any ABAP application.
These series of blogs about SAT are suitable both for newbies and for experienced SE30 users. You can find other blogs from these series about SAT here:
Next Generation ABAP Runtime Analysis (SAT) – How to analyze performance
Next Generation ABAP Runtime Analysis (SAT) – How to analyze memory consumption
Next Generation ABAP Runtime Analysis (SAT) – How to analyze program flow
If you want to see a live demonstration of SAT, take a look at this short video:
1. Getting started
Starting a trace measurement in SAT is quite similar to SE30. There are no major changes on the initial screen from SE30 to SAT. A new tab Evaluate has been added to the screen. On the Evaluate tab you can take a look at trace measurements results with their status, date of creation, total runtimes and so on. By default your traces are shown, but you can change this by right-clicking on the column Trace user and choosing the Set Filter.
In the old SE30, internal tables were identified only by their internal names (IT_<nn>). You will be pleased to discover, that SAT can determine and show the real names of internal tables for the trace measurement results.
One of the benefits of SAT is a new storage system for traces. SAT stores traces in the database. That means that you can display a trace from any application server in the system (in SE30 only traces of the current application server are visible). You can also keep traces for a longer time (in SE30 traces older than one week are deleted to save file system space). When you display a trace measurement result the first time (e.g. by you double clicking it on the Evaluate tab), it gets formatted and written to the database.
The switch to SAT from SE30 is simple: you can still use trace files that you created with SE30. The old trace files are moved to the database just like new SAT traces. Keep in mind, the files will be deleted on the file system and therefore they are not available in SE30 anymore.
2. Variants – The Basis of All Measurements
The variants are the basis of all measurements in SAT. You maintain trace conditions and restrictions in a variant.
Before you start a measurement just press New button in the Settings area on the SAT initial screen to create a new variant. You will see the screen with three tabs, which you already know from the SE30: Duration and type, Statements, Program Components.
Use variants to get the trace data you need while keeping extraneous data and storage use to a minimum. Especially for long running trace measurements it makes sense to restrict your trace measurement as much as possible in order to not run out of limits of your trace file size.
Here are some practical tips for using variants most efficiently to restrict a trace:
- If you run a trace for performance measurement use Per Call Position aggregation to get one trace entry for all similar calls. If for example the same method gets called 10 times, only one entry will be created in the trace file, which would contain 10 as number of the hits and the sum of the runtimes of the hits. Without aggregation 10 entries with runtimes will be written into trace file, which results in a larger trace file. Note: if you run a trace to follow the program flow of your application, use “None” aggregation to get a call hierarchy in a trace.
- Use Explicit Switching on and Of of Measurement option to switch on/off the trace only where you need it, for example if you are interested in a special part of a transaction (between screen 3 and 4). This option allows you to switch on/off the trace during the running ABAP program. You also must activate Limitation on Program Components on the Program Components tab. The trace will be started as soon as you enter “/ron” (trace on) in the OK code field in your transaction. With “/roff ” (trace off) the trace is stopped. Alternatively you can also use the menu path: System -> Utilities -> Runtime Analysis -> Switch On / Switch Off.
- Don’t trace “everything”- restrict the statements. Remember that about 40% of all trace records belong to the operations on internal tables! Therefore they extremely increase the size of a trace file. You can trace for example only Processing Blocks in a first run to find out the relevant parts of code, and then trace most (or even all) statements of the Statements tab and specify your found relevant code (programs, classes, function groups…) on the Program Components tab.
- Explicitly name your programs/classes/functions…on the Program Components tab if you know beforehand which parts of the code you want to trace. You can even specify which sub elements (like a subroutine, function of a function group, a method of a class…) shall be traced.
3. Running a trace measurement
After you created your trace measurement variant, you can run the trace. Enter a name of your transaction (or program, or function module) into corresponding input field of the In Dialog area on the initial screen and press Execute button.
If you used Explicit Switching on and Of of Measurement option in your variant to switch on/off the trace only where you really need it, you have to activate the trace after your ABAP program is running. Enter “/ron” (trace on) command in the OK code field in your transaction. Alternatively you can also use the menu path: System -> Utilities -> Runtime Analysis -> Switch On.
Your trace is running now. You can stop the trace and return to SAT by pressing the green arrow Back button. Alternatively you can enter “/roff” (trace off) command in the OK code field in your transaction or use the menu path: System -> Utilities -> Runtime Analysis -> Switch Off.
4. Using trace evaluation tools
After your trace measurement was executed, it’s time to analyze the trace results. Go to the Evaluate tab on the initial screen, find your trace result and double click it. SAT also displays trace results immediately after trace execution if you checked the Eval. Immediately checkbox on the initial screen.
The display of the SAT is visually close to the new ABAP debugger. The user interface consists of the desktops. You can set up each desktop as you wish, with up to four trace evaluation tools. By default the Desktop 1 presents tools for analyzing performance and Desktop 2 tools for analyzing program flow.
The old SE30 transaction offered only two main tools, the Hit List and the Call Hierarchy. SAT offers a rich set of new tools to analyze different aspects of a trace:
- Hit List Tool works the same way as in SE30. It displays a hit list of all measured statements. Identical events are summarized into one trace line together with their execution times. But identical events from different calling positions of source code appear as different entries in the hit list.
- Call Hierarchy Tool works the same way as in SE30. It displays operations and events as they occur in a program.
- Profile Tool shows you the runtime distribution of components, packages, programs and even debugger layers.
- Processing Blocks Tool displays a tree of processing blocks to get aggregated view on the call sequence
- Call Stack displays call stack for each item of the Call Hierarchy
- Database Tables Tool identifies time-consuming database statements
- Times Tool displays more specific time measurement values for the single events of the call hierarchy.
Here is what each tool looks like. Don’t worry – the information on using each tool follows!
Here are some guidelines when to use each tool.
- To measure performance, use the Profile Tool in combination with the Hit List Tool. The benefit of the Profile Tool is that you can start a trace evaluation at your application component (e.g. FI or HR) and drill down the trace results view through the sub-components and their packages to follow up on the top performance consumers. Afterwards you can display the subarea of a detected performance consumer in the Hit List Tool to analyze its trace events. It saves your time and you get a short and transparent Hit List which is easier to understand.If you want to see how it works, take a look at this blog Next Generation ABAP Runtime Analysis (SAT) – How to analyze performance
- To analyze program flow, use the Call Hierarchy Tool in combination with the Call Stack and Processing Blocks Tools. You can use Call Hierarchy to display trace events the way they were called by the program. Since the display of the Call Hierarchy is a little large, you can display a Call Stack for a chosen event of the Call Hierarchy or just choose the event and position its display in the Processing Blocks Tool. There you will see all processing blocks (methods, functions, etc.) you configured in your trace measurement variant and can better follow the call hierarchy of the trace event and even display the critical processing blocks in terms of consumed runtime or memory.If you want to see how it works, take a look at this blog Next Generation ABAP Runtime Analysis (SAT) – How to analyze program flow
- To display detailed information on runtimes in the Call Hierarchy, use the Times Tool. For example Times Tool shows a distribution of runtimes across non-system and system programs.
- Identify time-consuming database operations and accesses to buffered tables with the Database Tables Tool. By using easy navigation of SAT you can display the subarea in the detailed Hit List Tool to follow the runtime distribution of database accesses, or position in the Call Hierarchy (and e.g. display a Call Stack) to follow the callers of the database access.
5. Working with user interface
Here are some guidelines for efficient work with the SAT toolset and user interface.
- Display more details on a specific entry by using Display subarea in… buttons. In some tools you can navigate from the overall view to the details of the specific entry. Use the Overall view (funnel button) to get back to the overall view.
- Navigate comfortably between tools by choosing Position in the… buttons. Working with multiple trace evaluation tools requires easy navigation between them. By setting the cursor on the trace entry in one tool and using Position in the… command of the right-mouse button menu you can easily take a look at this entry in another tool. For example switch from the Hit List to the Call Hierarchy.
- Focus on a specific sub hierarchy by using Confine to Subarea button. This command confines the data in all tools to the statements that lie in the sub hierarchy of the selected node.
And some more common user interface features in the tools:
- Use Additional information button to show more fields in the tool display. You can choose for example to display a package, a software component or a person responsible.
- Use Display Call Stack button to show the call stack for a selected entry. This feature is available only within Call Hierarchy.
- Toggle between absolute and percentage runtimes by using “Absolute/Percentage Times” button. If you choose this button, SAT toggles between displaying the runtimes as an absolute value or as a percentage of the total runtime.
6. Comparing traces
In SAT you can compare two compatible traces. You can use the comparison tools to analyze in detail the behavior of the application you are measuring. SAT offers two trace comparison tools: Hit List Comparison and Call Hierarchy Comparison.
To start the trace comparison just mark two compatible traces on the Evaluate tab and press Compare measurements button. You can not only compare the traces of different application servers of the system, but also the traces of completely different systems. This could be useful if for example a program behaves differently in development and production systems, and you need to find out the reason. Just select one of the comparison traces on the Evaluate tab and send it to another system via RFC call by clicking Send Measurement via RFC button. Alternatively you can download a trace to a file and upload it on the target system.
Here are some guidelines for using trace comparisons effectively.
- To check your application for scalability, use the Hit List Comparison. Trace your program twice, the first time with a smaller amount of test data and the second time with a larger amount of test data. Then compare the traces. You can take a look at the ratio of the net times of events in both traces. If you know the factor by which you have multiplied the amount of test data in the second measurement, you can examine the results and check if the net time ratios are greater than the factor.
- To check the effect of changes to your code, use the Hit List Comparison. You have optimized a critical portion of your code? You can check that the improvements work as you expect with the Hit List Comparison. Trace the old code and then the new code using the same set of test data. Then check for changes in the runtime in the trace comparison.
- To identify branches in the program that were not executed in a previous program execution use Call Hierarchy Comparison. This could happen if for example the program sources have changed since the last measurement, or if you use different starting parameters or different custom data and so on.
This is basically everything you need to know about SAT before starting work with it. For more information on special usage scenarios of SAT like performance analysis, program flow analysis or memory consumption analysis read specialized blogs of these SAT series mentioned in the beginning of this blog.
There is also a detailed application support (F1 help) for using SAT and its tools integrated in the SAT transaction. Just take a look at it at your leisure.
I guess it would be a successful project to contact SAP's ELearning-division (aka Thomas Jung) to produce a 45-min-video of this.
I ahev already posted a detailed eLearning video about SAT (link is included in the beginning of this blog!).
very usefull information. Thank you.
We are in netweaver 7.1 EhP5, I am not able to see the options you mentioned above. For example you have a check box under "Data Formatting" to Determine names of Internal tables.
Many of the menu paths mentioned are not seen.
Can SAT be used for WebDynpro Application, if yes, how?
yes, SAT can be used for WebDynpro applications. Please take a look at the part 4 ("How to trace HTTP/RFC requests...") of the blog "SAT - How to analyze program flow" linked above in this blog. The live step-by-step demonstration of tracing HTTP requests of a WebDynrpo application is recorded in the SAT Video linked also in this blog.
thank you fortaking the time to publish this series of blogs.
This is excellent.
Thanks for this article. I was trying to use SAT for parallel processing. My job keeps on using the dialog work processes once they are available and keeps running these work processes in back ground. I am facing the issue having a trace on a specific work process. Once I activate the trace on work process, i wont be knowing by when it will exactly end the current work process and whether the next job has been allocated to this work process or not. If I have to use st12 through SM50, it works fine to collect the trace to measure till the end of the work process even if i wont bother to switch off the trace before next job kicks in. But through SAT it is never the case, it either wont collect the trace or it wont show up any thing. Is there a way to collect the trace on time bound.
I have a question, it is a special security ROLE that my user must be granted before use completely the SAT transaction?. I activated the measurement over a running process but after switch off the trace it does not caught any information.
you just need your usual developer role. Please make sure, you start and stop the trace correctly and use the appropriate variant. Try to follow the steps in the linked video on top of the blog.
I hope this will help...
Thank you for answer me.
It works fine now.
Hi Olga, this is the best(and only?) SAT material I could find in SCN. Thanks for such an informative and well organized document.
Earlier I have used the SAT tool, and I was able to use all of its options. Now while I am trying, I do not find all the options/tabs in the 'Display Measurement' after the program run. I do not find the following tabs:
Processing blocks and call hierarchy were a lot helpful. Please find the attachment.
I am not sure if this is a security/authorization or settings related issue. I want to know how to enable all the result tabs back. It would be great if you can direct me on this.
Dear Olga Dolinskaja 🙂 can you explain where to find the call hierarchy in later versions including S/4HANA?
Thanks and best regards
call hierarchy should be there. When you define your trace variant you need to set "Aggregation" to "None" to get call hierarchy.
Thanks a ton for your effort in creating this exhaustive blog. I have a question pls. I want to obtain traces of a night job which runs over a period of 18 hours! Would SQLM be the best transaction for this ? If a report takes 2 hours to execute, can I get traces with SAT? could you pls confirm
you can turn on SQLM for a long period of time, but it measures only expensive SQL statements (not the program logic). SQLM is the tool for performance analysis of SQLs at productive operation. SAT is actually the tool which also detects the performance problems within ABAP code as well and you can use it to analyze e.g. the long running programs (like your 2h running program). Take a look at the "How to analyze performance" blog linked above.
Thanks a ton for replying. As I am still resolving this issue so your timely reply is a wonderful support for me:) So if a report runs over 3 to 4 hours, can SAT record the log? Could you pls confirm? I am rightaway see your blog too.
as I've said before: in general it is possible to analyze a long running report with SAT. Just try it out and you will see, if it works for your specific use case.
Dear Olga, please update broken links, e.g. http://weblogs.sdn.sap.com/pub/wlg/18210.
done! Thank you for the notice :-).