_______________________________________________________________________________________________________________________

Home :: Sample Code :: Tutorials :: Interview FAQs :: Material :: SAP Books :: About :: Contact :: Links :: Disclaimer
_______________________________________________________________________________________________________________________

Jun 15, 2007

Performance Optimization

Q) What is "Performance Tuning"? Why do we need it?

Depending on the complexity and volumes of data, ABAP programs often are vulnerable to time-out issues and short dumps. Users, in general (SAP/Non SAP) get annoyed by time consumiung applicationsas they (the programs) often affect user productivity, TCO of software and many more critical factors pertaining to the management of the software. This is where the need "Performance Tuning" arises.

So, what exactly is Performance Tuning?

This simply means - ensuring that an ABAP program performs efficiently. A good ABAP program to bring the desired output to the user within the desired timeframe. Thus increasing the productivity of users, saving a lot of time and keeping the management happy in the bargain.

Q) List out the benefits of Performance Tuning/Optimization.

  • Maximum user productivity
  • Minimum time-outs
  • Lower total cost of ownership - due to reduced timelines and increased productivity of users
  • Faster ROI (return on investment)
  • Easier upgradation

Q) List out the steps for Performance Tuning/Optimization.

Data declaration

  • Remove all code and variables that are not used in the program
  • Avoid declaring internal tables using LIKE or TYPE reference. Instead, use BEGIN OF... ... END OF ITAB.
  • Avoid declaring internal tables using 'occurs 0' & 'with header line'

SELECTs & DB access

  • Use selection criteria to effectively select and limit the number of database reads
  • Select only those columns that are needed – Do not use a SELECT * unless necessary
  • To populate an internal table thru a SELECT, use the INTO TABLE addition
  • To update table entries, specify the columns
  • Design your SELECT Query to Use as much index fields as possible from left to right in your WHERE statement
  • Use a SELECT SINGLE if the primary keys are known, otherwise SELECT UPTO 1 ROWS
  • Do not use nested SELECTs – Use views, joins or the FOR ALL ENTRIES option
  • Avoid using INTO CORRESPONDING FIELDS OF TABLE. Instead use INTO TABLE.
  • Do not use SELECTs in loops
  • Restrict the database access by using the WHERE clause – do not use a CHECK
  • Use indexes wherever available
  • Avoid NOT in the WHERE condition
  • Do not select the same data more than once
  • Avoid the SELECT DISTINCT Statement. Instead use ABAP SORT + DELETE ADJACENT DUPLICATES on an internal table, to delete duplicate rows.

Processing data

  • Use aggregate functions wherever required instead of additional logic
  • Use sort on the internal table for small amounts of data and database ORDER BY for larger amount
  • Whenever using READ TABLE use BINARY SEARCH addition to speed up the search. Be sure to sort the internal table before binary search.
  • Use "CHECK" instead of IF/ENDIF whenever possible.
  • Use "CASE" instead of IF/ENDIF whenever possible.
  • Use "MOVE" with individual variable/field moves instead of "MOVE-CORRESPONDING"

Performing Checks

  • Perform the Extended Program Check
  • Perform Runtime Analyses

Q) List out the tools used Performance Tuning/Optimization.

  • Run time analysis transaction SE30
    This transaction gives all the analysis of an ABAP program with respect to the database and the non-database processing.
  • SQL Trace transaction ST05
    The trace list has many lines that are not related to the SELECT statement in the ABAP program. This is because the execution of any ABAP program requires additional administrative SQL calls. To restrict the list output, use the filter introducing the trace list.

No comments:

Subscribe to posts via email

Enter your email address:

Delivered by FeedBurner

Blog Owner

Karthik P
Certified SAP Netweaver Consultant

View Karthik Potharaju's profile on LinkedIn