Measure Performance and Analyze a Web UI Transaction using SE30
Many times we come across a situation where we need to check the system/code performance while saving a Web UI contact and see what all standard and custom APIs, genil and BOL classes are getting called in the cycle. This may be to improve the performance of the code or to check the calling classes/APIs. Runtime analysis tool (transaction SE30) gives us the flexibility to achieve the same. Apart from its standard use we can use it for analyzing Web UI transaction as well. Here this document shows how to achieve this analysis.
How to measure performance and analyze a transaction using SE30 from Web UI:
Suppose we want to measure and analyze the time taken for editing a contract and see what all APIs, Genil classes and BOL classes etc., both standard and custom, have been called from WEB UI, we would have to follow the following steps:
1. Execute transaction SE30 and Click on Schedule “For User/Service”.
2. You will see a screen which shows the overview of scheduled measurements. Click on “New measurement”.
3. Enter details in the dialog box as shown below. Select the process category as ‘HTTP’ or Select ‘Any’. ‘HTTP’ will measure performance in HTTP applications like WEB UI. You may select ‘Any’ if there are no other dialog or background processes running with your User ID. Enter Expiration Time till you require the measurement to get over. You will need to adjust the time according to server time as shown in the dialog box. Then Click on new. Your session has started now, do not close the window.
4. Next Step is to perform whatever action you need to do on the Web UI. It is recommended to keep the Web UI screen ready before you start the measurement in SE30.
For Example: Edit and Save a contract in Web UI as shown below:
5. After the scheduled time is over, click on the back button of transaction SE30. You will see the initial screen of ABAP runtime analysis. Click on Other file.
6. Click on OK button on the pop up screen.
7. You will see list of all measurements sorted in the descending order. Click on the latest one which is placed at the top and click on analyze.
8. The runtime analysis overview screen will be seen. It shows the ABAP, Database and system time taken in the process. Click on the hit list for more details.
9. A detailed analysis on the process is shown. Click on the ‘Net’ column and sort the list in descending order. The ABAP objects that take most of the time are listed on top.
The “Call” column will also show all the APIs, Genil and BOL classes that are called from Web UI, including standard and custom.
Using SE30 with a variant:
We can also analyze performance with filters on transaction, program, function modules and ABAP operations, etc. Enter a variant name and click on the new variant button and enter you user id. Then click on new:
You can enter up to 10 ABAP objects for measurement in the Programs tab.
On the statements tab, you can place filter for selected ABAP Statements:
Restrictions on SE30 Analysis:
- It is difficult to perform analysis of SQL Trace, Enqueue Trace and RFC Trace.
- Performance is also dependent on system load. Hence analysis should generally be done in quiet time.
Advantages of SE30:
1. Multiple users can analyze at the same time unlike ST05 or ST12.
2. In case you cannot find the cause of the performance problem or if you need further assistance for the analysis, contact the next support level or create an
SAP customer message on component BO-SVCRM. Attach the runtime analyses, a detailed description of the performed steps and the related STAD
records to the message.
Guidelines for analysis:
1. While analyzing the trace, note the time taken for Open cursor and Fetch statements on Custom tables too along with the calls to ABAP objects like
function modules, classes, etc.
2. The net time represents the time taken during the process call. Hence sort the list in descending order of the net time and you will get the calls that take
most of the time on top of the list.
3. The ‘Net %’ column represents the % of time taken in the call as compared to the total time taken for the process.
Hope you find this document helpful