Skip to Content
author's profile photo
Former Member

Performance Tuning - Suggestions

Hi,

I have an ABAP (Interactive List) Program times out in PRD very often. The ABAP run time is about 99%. The DB time is less than 1%. All the select statements has the table index in place. Actually it isprocessing all the Production Orders (Released but not Confirmed/Closed). Please let me know if you have any suggestion.

Appreciate Your Help.

Thanks,

Kannan.

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

4 Answers

  • Best Answer
    author's profile photo
    Former Member
    Oct 11, 2007 at 05:16 PM

    Hi

    1) Dont use nested select statements

    2) If possible use for all entries in addition

    3) In the where addition make sure you give all the primary key

    4) Use Index for the selection criteria.

    5) You can also use inner joins

    6) You can try to put the data from the first select statement into an Itab and then in order to select the data from the second table use for all entries in.

    7) Use the runtime analysis SE30 and SQL Trace (ST05) to identify the performance and also to identify where the load is heavy, so that you can change the code accordingly

    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5d0db4c9-0e01-0010-b68f-9b1408d5f234

    ABAP performance depends upon various factors and in devicded in three parts:

    1. Database

    2. ABAP

    3. System

    Run Any program using SE30 (performance analys) to improve performance refer to tips and trics section of SE30, Always remember that ABAP perfirmance is improved when there is least load on Database.

    u can get an interactive grap in SE30 regarding this with a file.

    also if u find runtime of parts of codes then use :

    Switch on RTA Dynamically within ABAP Code

    *To turn runtim analysis on within ABAP code insert the following code

    SET RUN TIME ANALYZER ON.

    *To turn runtim analysis off within ABAP code insert the following code

    SET RUN TIME ANALYZER OFF.

    Always check the driver internal tables is not empty, while using FOR ALL ENTRIES

    Avoid for all entries in JOINS

    Try to avoid joins and use FOR ALL ENTRIES.

    Try to restrict the joins to 1 level only ie only for tables

    Avoid using Select *.

    Avoid having multiple Selects from the same table in the same object.

    Try to minimize the number of variables to save memory.

    The sequence of fields in 'where clause' must be as per primary/secondary index ( if any)

    Avoid creation of index as far as possible

    Avoid operators like <>, > , < & like % in where clause conditions

    Avoid select/select single statements in loops.

    Try to use 'binary search' in READ internal table. Ensure table is sorted before using BINARY SEARCH.

    Avoid using aggregate functions (SUM, MAX etc) in selects ( GROUP BY , HAVING,)

    Avoid using ORDER BY in selects

    Avoid Nested Selects

    Avoid Nested Loops of Internal Tables

    Try to use FIELD SYMBOLS.

    Try to avoid into Corresponding Fields of

    Avoid using Select Distinct, Use DELETE ADJACENT

    Check the following Links

    performance-tuning-of-program

    http://www.sapgenie.com/abap/performance.htm

    http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp

    check the below link

    http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm

    See the following link if it's any help:

    http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp

    Check also http://service.sap.com/performance

    and

    books like

    http://www.sap-press.com/product.cfm?account=∏uct=H951

    http://www.sap-press.com/product.cfm?account=∏uct=H973

    http://www.sap-img.com/abap/more-than-100-abap-interview-faqs.htm

    http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp

    Performance tuning for Data Selection Statement

    http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm

    Debugger

    http://help.sap.com/saphelp_47x200/helpdata/en/c6/617ca9e68c11d2b2ab080009b43351/content.htm

    http://www.cba.nau.edu/haney-j/CIS497/Assignments/Debugging.doc

    http://help.sap.com/saphelp_erp2005/helpdata/en/b3/d322540c3beb4ba53795784eebb680/frameset.htm

    Run Time Analyser

    http://help.sap.com/saphelp_47x200/helpdata/en/c6/617cafe68c11d2b2ab080009b43351/content.htm

    SQL trace

    http://help.sap.com/saphelp_47x200/helpdata/en/d1/801f7c454211d189710000e8322d00/content.htm

    CATT - Computer Aided Testing Too

    http://help.sap.com/saphelp_47x200/helpdata/en/b3/410b37233f7c6fe10000009b38f936/frameset.htm

    Test Workbench

    http://help.sap.com/saphelp_47x200/helpdata/en/a8/157235d0fa8742e10000009b38f889/frameset.htm

    Coverage Analyser

    http://help.sap.com/saphelp_47x200/helpdata/en/c7/af9a79061a11d4b3d4080009b43351/content.htm

    Runtime Monitor

    http://help.sap.com/saphelp_47x200/helpdata/en/b5/fa121cc15911d5993d00508b6b8b11/content.htm

    Memory Inspector

    http://help.sap.com/saphelp_47x200/helpdata/en/a2/e5fc84cc87964cb2c29f584152d74e/content.htm

    ECATT - Extended Computer Aided testing tool.

    http://help.sap.com/saphelp_47x200/helpdata/en/20/e81c3b84e65e7be10000000a11402f/frameset.htm

    Just refer to these links...

    performance

    Performance Guide

    performance issues...

    Performance Tuning

    Performance issues

    performance tuning

    performance tuning

    You can go to the transaction SE30 to have the runtime analysis of your program.Also try the transaction SCI , which is SAP Code Inspector.

    1 Always check the driver internal tables is not empty, while using FOR ALL ENTRIES

    2 Avoid for all entries in JOINS

    3 Try to avoid joins and use FOR ALL ENTRIES.

    4 Try to restrict the joins to 1 level only ie only for 2 tables

    5 Avoid using Select *.

    6 Avoid having multiple Selects from the same table in the same object.

    7 Try to minimize the number of variables to save memory.

    8 The sequence of fields in 'where clause' must be as per primary/secondary index ( if any)

    9 Avoid creation of index as far as possible

    10 Avoid operators like <>, > , < & like % in where clause conditions

    11 Avoid select/select single statements in loops.

    12 Try to use 'binary search' in READ internal table. Ensure table is sorted before using BINARY SEARCH.

    13 Avoid using aggregate functions (SUM, MAX etc) in selects ( GROUP BY , HAVING,)

    14 Avoid using ORDER BY in selects

    15 Avoid Nested Selects

    16 Avoid Nested Loops of Internal Tables

    17 Try to use FIELD SYMBOLS.

    18 Try to avoid into Corresponding Fields of

    19 Avoid using Select Distinct, Use DELETE ADJACENT.

    Regards

    Anji

    Add comment
    10|10000 characters needed characters exceeded

  • Oct 11, 2007 at 05:09 PM

    Hi,

    Please, post partial or full code here, than the experts can advise your beter.

    Regards

    RP

    Add comment
    10|10000 characters needed characters exceeded

  • author's profile photo
    Former Member
    Oct 11, 2007 at 06:04 PM

    It's probably nested loops. Check:

    <a href="/people/rob.burbank/blog/2006/02/07/performance-of-nested-loops">Performance of Nested Loops</a>

    Rob

    Add comment
    10|10000 characters needed characters exceeded

  • author's profile photo
    Former Member
    Oct 11, 2007 at 06:44 PM

    Run SCII on the program and do all the performance checks. To do this, expand the Performance Checks item in the list and click the check box twice. All of the sub-items for performance should be selected.

    The following are the items that it checks:

    <i><b>Performance Checks</b>

    Analysis of WHERE Condition for SELECT

    Analysis of WHERE Condition in UPDATE and DELETE

    SELECT Statements That Bypass the Table Buffer

    SELECT Statements with Subsequent CHECK

    SELECTs in Loops

    Changing Database Accesses in Loops

    Nested Loops

    Low Performance Operations on Internal Tables

    Low-Perform. Parameter Transfers

    Copy current table row for LOOP AT ...

    EXIT or no statement in SELECT...ENDSELECT loop

    Invalidation of SAP Table Buffer

    Instance Creation of a BAdI: Missing Import Parameter

    Table Attributes Check</i>

    You will probably also want to click the arrow for "Low Performance Operations on Internal Tables" and check the entry for STANDARD TABLES.

    This is because one other common cause of slow processing in a scenario like yours, where the database time is minimal, is poor handling of internal tables.

    Rob pointed out the nested loop issue, but this can be compounded with bad design with regard to READ on tables, if the READ forces sequential access.

    You can fix this problem by either sorting the tables and using BINARY SEARCH on the READ, or (if the tables have UNIQUE keys) you can used HASHED tables.

    Good luck

    Brian

    PS

    You can also use SCII for other type of checks. It is a valuable tool.

    Add comment
    10|10000 characters needed characters exceeded