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: 

HELP--PERFORMANCE TUNING

Former Member
0 Kudos
145

Hi all,

Please help me in performance tuning.

<b>Guide me to the documents and books that are useful for performance tuning of a R/3, ABAP and a JAVA systems.</b>

As im a fresher ill be happy to start with the basics of performance tuning that too of a R/3 system.

Please send me the links of documents and e-books that relate to this matter.

Expecting your kind response.

<i>Vineeth</i>

1 ACCEPTED SOLUTION
6 REPLIES 6

Former Member
0 Kudos
93

Hi,

you can aslo see some examples in Transaction Code - SE30. In this code go to Tips & Tricks..

Ashven

Former Member
0 Kudos
93

Check:

/people/rob.burbank/blog/2006/11/16/performance--what-will-kill-you-and-what-will-leave-you-with-only-a-flesh-wound

and its links.

Rob

SantoshKallem
Active Contributor
0 Kudos
93

Former Member
0 Kudos
93

Hi Vineeth,

You can find realted to this topic by searching through this

website.

www.esnips.com

Regards,

Balaji Reddy G

**Rewards if answers are useful

0 Kudos
93

Hi Vineeth,

Here are some performance TIPS

<u>LOOP AT with WHERE clause

Working with internal tables

For all entries

Tools for performance tuning

Using table buffering</u>

<b>LOOP AT with WHERE clause</b>

If you use a LOOP AT statement with a WHERE clause, the table whole will be read through

and not only the entriers that satifies the WHERE clause. This can lead to performance

problems when a very large internal table is read many times with a WHERE clause.

The solution is to sort the table on the keyfields, use a READ statment to find

the first entry that satifies the key. Then you can start the loop here, and check for

changes in the keyfield to exit the loop.

Do not

loop at gi_mseg into g_mseg

where matnr = p_matnr and

werks = p_werks and

lgort = p_lgort and

sobkz = space,

endloop.

Instead use:

  • Sort internal table with entries from MSEG

sort gi_mseg by matnr werks lgort.

  • Find index of first entry that satifies the where clause

data:

l_tabix_from like sy-tabix.

read table gi_mseg with key matnr = p_matnr

werks = p_werks

lgort = p_lgort binary search

into g_mseg.

check sy-tabix > 0.

move sy-tabix to l_tabix_from.

  • Loop over the table from l_tabix_from, check for changes in keyfields, and

  • if necessary check other fields.

loop at gi_mseg into g_mseg from l_tabix_from.

if g_mseg-matnr <> p_matnr or

g_mseg-werks <> p_werks or

g_mseg-lgort <> p_lgort.

  • Stop loop

exit.

endif.

  • Check other fields

check g_mseg-sobkz = space.

..... do something ......

endloop.

<b>

For all entries</b>

The for all entries creates a where clause, where all the entries in the driver table are combined with OR. If the number of entries in the driver table is larger than rsdb/max_blocking_factor, several similar SQL statements are executed to limit the length of the WHERE clause.

Some steps that might make FOR ALL ENTRIES more efficient:

- Removing duplicates from the the driver table

- Sorting the driver table

- If possible, convert the data in the driver table to ranges so a BETWEEN statement is used instead of and OR statement:

- FOR ALL ENTRIES IN i_tab

WHERE mykey >= i_tab-low and

mykey <= i_tab-high.

<b>Tools for performance tuning</b>

The runtime analysis (SE30)

SQL Trace (ST05)

Tips and Tricks tool

The performance database

<b>Using table buffering</b>

Using buffered tables improves the performance considerably. Note that in some cases a statement can not be used with a buffered table, so when using these staments the buffer will be bypassed. These staments are:

Select DISTINCT

ORDER BY / GROUP BY / HAVING clause

Any WHERE clasuse that contains a subquery or IS NULL expression

JOIN

A SELECT... FOR UPDATE

If you want to explicitly bypass the buffer, use the BYPASS BUFFER addition to the SELECT clause.

Regards,

Ramamurthy

**Rewards if answers are useful