<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Function Module Performance Tunning  Issue in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909547#M378739</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;solved this problem by myself&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 19 Jun 2007 20:26:50 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-06-19T20:26:50Z</dc:date>
    <item>
      <title>Function Module Performance Tunning  Issue</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909543#M378735</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would like improve the performance for this below function module.&lt;/P&gt;&lt;P&gt;This FM is for BW extraction . Ztest is the view created based aufnr,afru and cdhdr table with 12 fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have checked in the SE30 -transaction . It hit is 92 % in the database level and ABAP is only 7% . Please advise me how can improve the performace of this function module. &lt;/P&gt;&lt;P&gt;Advance thanks for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FUNCTION ZTEST.&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;"&lt;/STRONG&gt;"Local interface:&lt;/P&gt;&lt;P&gt;*"  IMPORTING&lt;/P&gt;&lt;P&gt;*"     REFERENCE(I_REQUNR) TYPE  SRSC_S_IF_SIMPLE-REQUNR&lt;/P&gt;&lt;P&gt;*"     REFERENCE(I_DSOURCE) TYPE  SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL&lt;/P&gt;&lt;P&gt;*"     REFERENCE(I_MAXSIZE) TYPE  SRSC_S_IF_SIMPLE-MAXSIZE DEFAULT 1000&lt;/P&gt;&lt;P&gt;*"     REFERENCE(I_INITFLAG) TYPE  SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL&lt;/P&gt;&lt;P&gt;*"     REFERENCE(I_READ_ONLY) TYPE  SRSC_S_IF_SIMPLE-READONLY OPTIONAL&lt;/P&gt;&lt;P&gt;*"  TABLES&lt;/P&gt;&lt;P&gt;*"      I_T_SELECT TYPE  SRSC_S_IF_SIMPLE-T_SELECT OPTIONAL&lt;/P&gt;&lt;P&gt;*"      I_T_FIELDS TYPE  SRSC_S_IF_SIMPLE-T_FIELDS OPTIONAL&lt;/P&gt;&lt;P&gt;*"      E_T_DATA STRUCTURE  ZVIEW1 OPTIONAL&lt;/P&gt;&lt;P&gt;*"  EXCEPTIONS&lt;/P&gt;&lt;P&gt;*"      NO_MORE_DATA&lt;/P&gt;&lt;P&gt;*"      ERROR_PASSED_TO_MESS_HANDLER&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;  TABLES: ZVIEW1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Auxiliary Selection criteria structure&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: L_S_SELECT TYPE SRSC_S_SELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialization mode (first call by SAPI) or data transfer mode&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(following calls) ?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data Structures for delta-mechanism&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;  DATA: L_V_LINES TYPE I.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Static structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;  STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;counter&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           S_COUNTER_DATAPAKID LIKE SY-TABIX,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;cursor&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           S_CURSOR TYPE CURSOR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Ranges for data selection&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  RANGES: L_R_ERSDA FOR ZVIEW1-ERSDA,&lt;/P&gt;&lt;P&gt;          L_R_AUFNR FOR ZVIEW1-AUFNR,&lt;/P&gt;&lt;P&gt;          L_R_BUDAT FOR ZVIEW1-BUDAT,&lt;/P&gt;&lt;P&gt;          L_R_RMZHL FOR ZVIEW1-RMZHL,&lt;/P&gt;&lt;P&gt;          L_R_RUECK FOR ZVIEW1-RUECK,&lt;/P&gt;&lt;P&gt;          L_R_VORNR FOR ZVIEW1-VORNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: L_T_DATA  TYPE STANDARD TABLE OF ZVIEW1 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialization mode (first call by SAPI) or data transfer mode&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(following calls) ?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF I_INITFLAG = SBIWA_C_FLAG_ON.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialization: check input parameters&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                buffer input parameters&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                prepare data selection&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check DataSource validity&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CASE I_DSOURCE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      WHEN 'ZTEST'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      WHEN OTHERS.&lt;/P&gt;&lt;P&gt;        RAISE ERROR_PASSED_TO_MESS_HANDLER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Copy selection criteria for future extractor calls (fetch-calls)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND LINES OF I_T_SELECT TO S_S_IF-T_SELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fill parameter buffer for data extraction calls&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    S_S_IF-REQUNR  = I_REQUNR.&lt;/P&gt;&lt;P&gt;    S_S_IF-DSOURCE = I_DSOURCE.&lt;/P&gt;&lt;P&gt;    S_S_IF-MAXSIZE = I_MAXSIZE.&lt;/P&gt;&lt;P&gt;    S_S_IF-INITFLAG = I_INITFLAG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fill field list table for an optimized select statement&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(in case that there is no 1:1 relation between InfoSource fields&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;and database table fields this may be far from being trivial)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.                 "Initialization mode or data extraction ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data transfer: First Call      OPEN CURSOR + FETCH&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               Following Calls FETCH only&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;First data package -&amp;gt; OPEN CURSOR&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF S_COUNTER_DATAPAKID = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fill range tables BW will only pass down simple selection criteria&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;                              WHERE FIELDNM = 'ERSDA'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO L_R_ERSDA.&lt;/P&gt;&lt;P&gt;        APPEND L_R_ERSDA.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;                              WHERE FIELDNM = 'AUFNR'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO L_R_AUFNR.&lt;/P&gt;&lt;P&gt;        APPEND L_R_AUFNR.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;                              WHERE FIELDNM = 'BUDAT'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO L_R_BUDAT.&lt;/P&gt;&lt;P&gt;        APPEND L_R_BUDAT.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;                              WHERE FIELDNM = 'RMZHL'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO L_R_RMZHL.&lt;/P&gt;&lt;P&gt;        APPEND L_R_RMZHL.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;                              WHERE FIELDNM = 'RUECK'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO L_R_RUECK.&lt;/P&gt;&lt;P&gt;        APPEND L_R_RUECK.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;                              WHERE FIELDNM = 'VORNR'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO L_R_VORNR.&lt;/P&gt;&lt;P&gt;        APPEND L_R_VORNR.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Determine number of database records to be read per FETCH statement&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;from input parameter I_MAXSIZE. If there is a one to one relation&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;between DataSource table lines and database entries, this is trivial.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;In other cases, it may be impossible and some estimated value has to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;be determined.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Deltainit?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      DESCRIBE TABLE L_R_ERSDA LINES L_V_LINES.&lt;/P&gt;&lt;P&gt;      IF L_V_LINES = 1.&lt;/P&gt;&lt;P&gt;        READ TABLE L_R_ERSDA INDEX 1.&lt;/P&gt;&lt;P&gt;        IF  L_R_ERSDA-SIGN   = 'I'&lt;/P&gt;&lt;P&gt;        AND L_R_ERSDA-OPTION = 'BT'&lt;/P&gt;&lt;P&gt;        AND L_R_ERSDA-LOW    = SPACE&lt;/P&gt;&lt;P&gt;        AND L_R_ERSDA-HIGH   = SY-DATUM.&lt;/P&gt;&lt;P&gt;          CLEAR L_R_ERSDA.&lt;/P&gt;&lt;P&gt;          REFRESH L_R_ERSDA.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF L_R_ERSDA[] IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Deltainit or Full&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        OPEN CURSOR WITH HOLD S_CURSOR FOR&lt;/P&gt;&lt;P&gt;          SELECT  *&lt;/P&gt;&lt;P&gt;          FROM    ZVIEW1&lt;/P&gt;&lt;P&gt;          WHERE   AUFNR IN L_R_AUFNR&lt;/P&gt;&lt;P&gt;          AND     BUDAT IN L_R_BUDAT&lt;/P&gt;&lt;P&gt;          AND     RMZHL IN L_R_RMZHL&lt;/P&gt;&lt;P&gt;          AND     RUECK IN L_R_RUECK&lt;/P&gt;&lt;P&gt;          AND     VORNR IN L_R_VORNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delta&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        OPEN CURSOR WITH HOLD S_CURSOR FOR&lt;/P&gt;&lt;P&gt;          SELECT  *&lt;/P&gt;&lt;P&gt;          FROM    ZVIEW1&lt;/P&gt;&lt;P&gt;          WHERE   AUFNR IN L_R_AUFNR&lt;/P&gt;&lt;P&gt;          AND     BUDAT IN L_R_BUDAT&lt;/P&gt;&lt;P&gt;          AND     RMZHL IN L_R_RMZHL&lt;/P&gt;&lt;P&gt;          AND     RUECK IN L_R_RUECK&lt;/P&gt;&lt;P&gt;          AND     VORNR IN L_R_VORNR&lt;/P&gt;&lt;P&gt;          AND    ( ERSDA  IN  L_R_ERSDA&lt;/P&gt;&lt;P&gt;          OR      LAEDA  IN  L_R_ERSDA ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.                           "Full or Delta ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.                             "First data package ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fetch records into e_t_data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    FETCH NEXT CURSOR S_CURSOR&lt;/P&gt;&lt;P&gt;               INTO CORRESPONDING FIELDS&lt;/P&gt;&lt;P&gt;               OF TABLE L_T_DATA&lt;/P&gt;&lt;P&gt;               PACKAGE SIZE S_S_IF-MAXSIZE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLOSE CURSOR S_CURSOR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      RAISE NO_MORE_DATA.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Next data package	&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.			"Initialization mode or data extraction ?&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;delete records marked as cancelled.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE L_T_DATA WHERE STZHL NE ''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT L_T_DATA BY AUFNR RUECK RMZHL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT L_T_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF L_T_DATA-STOKZ = 'X'.&lt;/P&gt;&lt;P&gt;      L_T_DATA-STZHL = L_T_DATA-RMZHL.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Append into interface table e_t_data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MOVE-CORRESPONDING L_T_DATA TO E_T_DATA.&lt;/P&gt;&lt;P&gt;    APPEND E_T_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFUNCTION.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 11 Feb 2007 15:53:57 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909543#M378735</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-02-11T15:53:57Z</dc:date>
    </item>
    <item>
      <title>Re: Function Module Performance Tunning  Issue</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909544#M378736</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Avoid Select * statements.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Declare an internal table of particular fields &amp;amp; select those particulare fields in internal table from Database istead of providing select *.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;Do one more thing give target area for selecting records. If you are selecting only one record the use SELECT SINGLE statement. Or if you are using multiple reocrds the use INTO TABLE addition.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;eg. &lt;/P&gt;&lt;P&gt;DATA: begin of it_kan1 occurs 100,&lt;/P&gt;&lt;P&gt;       kunnr type kunnr,&lt;/P&gt;&lt;P&gt;       name1 type name1,&lt;/P&gt;&lt;P&gt;      end if it_kna1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT kunnr name1&lt;/P&gt;&lt;P&gt;    FROM kna1&lt;/P&gt;&lt;P&gt;    INTO TABLE it_kna1&lt;/P&gt;&lt;P&gt;    WHERE ..........&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The performance of this function module will be increased drastically.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;P&gt;DATA: begin of &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward points if helpful answer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Asvhender&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 11 Feb 2007 20:29:09 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909544#M378736</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-02-11T20:29:09Z</dc:date>
    </item>
    <item>
      <title>Re: Function Module Performance Tunning  Issue</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909545#M378737</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; I would like improve the performance for this below&lt;/P&gt;&lt;P&gt;&amp;gt; function module.&lt;/P&gt;&lt;P&gt;&amp;gt; This FM is for BW extraction . Ztest is the view&lt;/P&gt;&lt;P&gt;&amp;gt; created based aufnr,afru and cdhdr table with 12&lt;/P&gt;&lt;P&gt;&amp;gt; fields.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; I have checked in the SE30 -transaction . It hit is&lt;/P&gt;&lt;P&gt;&amp;gt; 92 % in the database level and ABAP is only 7% .&lt;/P&gt;&lt;P&gt;&amp;gt; Please advise me how can improve the performace of&lt;/P&gt;&lt;P&gt;&amp;gt; this function module. &lt;/P&gt;&lt;P&gt;&amp;gt; Advance thanks for your help.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; FUNCTION ZTEST.&lt;/P&gt;&lt;P&gt;&amp;gt; *"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;&amp;gt; -&lt;/P&gt;&lt;HR originaltext="-----------------" /&gt;&lt;P&gt;&amp;gt; &lt;STRONG&gt;"&lt;/STRONG&gt;"Local interface:&lt;/P&gt;&lt;P&gt;&amp;gt; *"  IMPORTING&lt;/P&gt;&lt;P&gt;&amp;gt; *"     REFERENCE(I_REQUNR) TYPE&lt;/P&gt;&lt;P&gt;&amp;gt;  SRSC_S_IF_SIMPLE-REQUNR&lt;/P&gt;&lt;P&gt;&amp;gt; "     REFERENCE(I_DSOURCE) TYPE&lt;/P&gt;&lt;P&gt;&amp;gt;  SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL&lt;/P&gt;&lt;P&gt;&amp;gt; "     REFERENCE(I_MAXSIZE) TYPE&lt;/P&gt;&lt;P&gt;&amp;gt;  SRSC_S_IF_SIMPLE-MAXSIZE DEFAULT 1000&lt;/P&gt;&lt;P&gt;&amp;gt; "     REFERENCE(I_INITFLAG) TYPE&lt;/P&gt;&lt;P&gt;&amp;gt;  SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL&lt;/P&gt;&lt;P&gt;&amp;gt; "     REFERENCE(I_READ_ONLY) TYPE&lt;/P&gt;&lt;P&gt;&amp;gt;  SRSC_S_IF_SIMPLE-READONLY OPTIONAL&lt;/P&gt;&lt;P&gt;&amp;gt; "  TABLES&lt;/P&gt;&lt;P&gt;&amp;gt; *"      I_T_SELECT TYPE  SRSC_S_IF_SIMPLE-T_SELECT&lt;/P&gt;&lt;P&gt;&amp;gt; OPTIONAL&lt;/P&gt;&lt;P&gt;&amp;gt; *"      I_T_FIELDS TYPE  SRSC_S_IF_SIMPLE-T_FIELDS&lt;/P&gt;&lt;P&gt;&amp;gt; OPTIONAL&lt;/P&gt;&lt;P&gt;&amp;gt; *"      E_T_DATA STRUCTURE  ZVIEW1 OPTIONAL&lt;/P&gt;&lt;P&gt;&amp;gt; *"  EXCEPTIONS&lt;/P&gt;&lt;P&gt;&amp;gt; *"      NO_MORE_DATA&lt;/P&gt;&lt;P&gt;&amp;gt; *"      ERROR_PASSED_TO_MESS_HANDLER&lt;/P&gt;&lt;P&gt;&amp;gt; *"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;&amp;gt; -&lt;/P&gt;&lt;HR originaltext="-----------------" /&gt;&lt;P&gt;&amp;gt;   TABLES: ZVIEW1.&lt;/P&gt;&lt;P&gt;&amp;gt; * Auxiliary Selection criteria structure&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;   DATA: L_S_SELECT TYPE SRSC_S_SELECT.&lt;/P&gt;&lt;P&gt;&amp;gt; * Initialization mode (first call by SAPI) or data&lt;/P&gt;&lt;P&gt;&amp;gt; transfer mode&lt;/P&gt;&lt;P&gt;&amp;gt; * (following calls) ?&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; *----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------" /&gt;&lt;P&gt;&amp;gt; -&lt;/P&gt;&lt;HR originaltext="-----------------" /&gt;&lt;P&gt;&amp;gt; * Data Structures for delta-mechanism&lt;/P&gt;&lt;P&gt;&amp;gt; *----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------" /&gt;&lt;P&gt;&amp;gt; -&lt;/P&gt;&lt;HR originaltext="-----------------" /&gt;&lt;P&gt;&amp;gt;   DATA: L_V_LINES TYPE I.&lt;/P&gt;&lt;P&gt;&amp;gt; -&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------" /&gt;&lt;P&gt;&amp;gt; -&lt;/P&gt;&lt;HR originaltext="---------------" /&gt;&lt;P&gt;&amp;gt; * Static structures&lt;/P&gt;&lt;P&gt;&amp;gt; *----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------" /&gt;&lt;P&gt;&amp;gt; -&lt;/P&gt;&lt;HR originaltext="-----------------" /&gt;&lt;P&gt;&amp;gt;   STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,&lt;/P&gt;&lt;P&gt;&amp;gt; counter&lt;/P&gt;&lt;P&gt;&amp;gt;            S_COUNTER_DATAPAKID LIKE SY-TABIX,&lt;/P&gt;&lt;P&gt;&amp;gt;           S_CURSOR TYPE CURSOR.&lt;/P&gt;&lt;P&gt;&amp;gt;  for data selection&lt;/P&gt;&lt;P&gt;&amp;gt;  RANGES: L_R_ERSDA FOR ZVIEW1-ERSDA,&lt;/P&gt;&lt;P&gt;&amp;gt;          L_R_AUFNR FOR ZVIEW1-AUFNR,&lt;/P&gt;&lt;P&gt;&amp;gt;  L_R_BUDAT FOR ZVIEW1-BUDAT,&lt;/P&gt;&lt;P&gt;&amp;gt;          L_R_RMZHL FOR ZVIEW1-RMZHL,&lt;/P&gt;&lt;P&gt;&amp;gt;  L_R_RUECK FOR ZVIEW1-RUECK,&lt;/P&gt;&lt;P&gt;&amp;gt;          L_R_VORNR FOR ZVIEW1-VORNR.&lt;/P&gt;&lt;P&gt;&amp;gt; L_T_DATA  TYPE STANDARD TABLE OF ZVIEW1 WITH HEADER&lt;/P&gt;&lt;P&gt;&amp;gt;  LINE.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; * Initialization mode (first call by SAPI) or data&lt;/P&gt;&lt;P&gt;&amp;gt; transfer mode&lt;/P&gt;&lt;P&gt;&amp;gt; * (following calls) ?&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;   IF I_INITFLAG = SBIWA_C_FLAG_ON.&lt;/P&gt;&lt;P&gt;&amp;gt; ******************************************************&lt;/P&gt;&lt;P&gt;&amp;gt; ******************&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; * Initialization: check input parameters&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; *                 buffer input parameters&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; *                 prepare data selection&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; ******************************************************&lt;/P&gt;&lt;P&gt;&amp;gt; ******************&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; * Check DataSource validity&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;     CASE I_DSOURCE.&lt;/P&gt;&lt;P&gt;&amp;gt;     WHEN 'ZTEST'.&lt;/P&gt;&lt;P&gt;&amp;gt;     WHEN OTHERS.&lt;/P&gt;&lt;P&gt;&amp;gt;     RAISE ERROR_PASSED_TO_MESS_HANDLER.&lt;/P&gt;&lt;P&gt;&amp;gt;   ENDCASE.&lt;/P&gt;&lt;P&gt;&amp;gt; * Copy selection criteria for future extractor calls&lt;/P&gt;&lt;P&gt;&amp;gt; (fetch-calls)&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;     APPEND LINES OF I_T_SELECT TO S_S_IF-T_SELECT.&lt;/P&gt;&lt;P&gt;&amp;gt; Fill parameter buffer for data extraction calls&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;     S_S_IF-REQUNR  = I_REQUNR.&lt;/P&gt;&lt;P&gt;&amp;gt; S_S_IF-DSOURCE = I_DSOURCE.&lt;/P&gt;&lt;P&gt;&amp;gt;     S_S_IF-MAXSIZE = I_MAXSIZE.&lt;/P&gt;&lt;P&gt;&amp;gt; S_S_IF-INITFLAG = I_INITFLAG.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; * Fill field list table for an optimized select&lt;/P&gt;&lt;P&gt;&amp;gt; statement&lt;/P&gt;&lt;P&gt;&amp;gt; * (in case that there is no 1:1 relation between&lt;/P&gt;&lt;P&gt;&amp;gt; InfoSource fields&lt;/P&gt;&lt;P&gt;&amp;gt; * and database table fields this may be far from&lt;/P&gt;&lt;P&gt;&amp;gt; being trivial)&lt;/P&gt;&lt;P&gt;&amp;gt;     APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.&lt;/P&gt;&lt;P&gt;&amp;gt; ELSE.                 "Initialization mode or data&lt;/P&gt;&lt;P&gt;&amp;gt; extraction ?&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; ******************************************************&lt;/P&gt;&lt;P&gt;&amp;gt; ******************&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; * Data transfer: First Call      OPEN CURSOR + FETCH&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; *                Following Calls FETCH only&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; ******************************************************&lt;/P&gt;&lt;P&gt;&amp;gt; ******************&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; * First data package -&amp;gt; OPEN CURSOR&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;     IF S_COUNTER_DATAPAKID = 0.&lt;/P&gt;&lt;P&gt;&amp;gt; ll range tables BW will only pass down simple&lt;/P&gt;&lt;P&gt;&amp;gt; selection criteria&lt;/P&gt;&lt;P&gt;&amp;gt; * of the type SIGN = 'I' and OPTION = 'EQ' or OPTION&lt;/P&gt;&lt;P&gt;&amp;gt; = 'BT'.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;       LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;&amp;gt;                         WHERE FIELDNM = 'ERSDA'.&lt;/P&gt;&lt;P&gt;&amp;gt; NG L_S_SELECT TO L_R_ERSDA.&lt;/P&gt;&lt;P&gt;&amp;gt;         APPEND L_R_ERSDA.&lt;/P&gt;&lt;P&gt;&amp;gt; DLOOP.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;       LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;&amp;gt;                         WHERE FIELDNM = 'AUFNR'.&lt;/P&gt;&lt;P&gt;&amp;gt; NG L_S_SELECT TO L_R_AUFNR.&lt;/P&gt;&lt;P&gt;&amp;gt;         APPEND L_R_AUFNR.&lt;/P&gt;&lt;P&gt;&amp;gt; DLOOP.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;       LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;&amp;gt;                         WHERE FIELDNM = 'BUDAT'.&lt;/P&gt;&lt;P&gt;&amp;gt; NG L_S_SELECT TO L_R_BUDAT.&lt;/P&gt;&lt;P&gt;&amp;gt;         APPEND L_R_BUDAT.&lt;/P&gt;&lt;P&gt;&amp;gt; DLOOP.&lt;/P&gt;&lt;P&gt;&amp;gt;       LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;&amp;gt;                         WHERE FIELDNM = 'RMZHL'.&lt;/P&gt;&lt;P&gt;&amp;gt; NG L_S_SELECT TO L_R_RMZHL.&lt;/P&gt;&lt;P&gt;&amp;gt;         APPEND L_R_RMZHL.&lt;/P&gt;&lt;P&gt;&amp;gt; DLOOP.&lt;/P&gt;&lt;P&gt;&amp;gt;       LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;&amp;gt;                         WHERE FIELDNM = 'RUECK'.&lt;/P&gt;&lt;P&gt;&amp;gt; NG L_S_SELECT TO L_R_RUECK.&lt;/P&gt;&lt;P&gt;&amp;gt;         APPEND L_R_RUECK.&lt;/P&gt;&lt;P&gt;&amp;gt; DLOOP.&lt;/P&gt;&lt;P&gt;&amp;gt;       LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT&lt;/P&gt;&lt;P&gt;&amp;gt;                         WHERE FIELDNM = 'VORNR'.&lt;/P&gt;&lt;P&gt;&amp;gt; NG L_S_SELECT TO L_R_VORNR.&lt;/P&gt;&lt;P&gt;&amp;gt;         APPEND L_R_VORNR.&lt;/P&gt;&lt;P&gt;&amp;gt; DLOOP.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; * Determine number of database records to be read per&lt;/P&gt;&lt;P&gt;&amp;gt; FETCH statement&lt;/P&gt;&lt;P&gt;&amp;gt; * from input parameter I_MAXSIZE. If there is a one&lt;/P&gt;&lt;P&gt;&amp;gt; to one relation&lt;/P&gt;&lt;P&gt;&amp;gt; * between DataSource table lines and database&lt;/P&gt;&lt;P&gt;&amp;gt; entries, this is trivial.&lt;/P&gt;&lt;P&gt;&amp;gt; * In other cases, it may be impossible and some&lt;/P&gt;&lt;P&gt;&amp;gt; estimated value has to&lt;/P&gt;&lt;P&gt;&amp;gt; * be determined.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; * Deltainit?&lt;/P&gt;&lt;P&gt;&amp;gt;       DESCRIBE TABLE L_R_ERSDA LINES L_V_LINES.&lt;/P&gt;&lt;P&gt;&amp;gt; IF L_V_LINES = 1.&lt;/P&gt;&lt;P&gt;&amp;gt;         READ TABLE L_R_ERSDA INDEX 1.&lt;/P&gt;&lt;P&gt;&amp;gt; IF  L_R_ERSDA-SIGN   = 'I'&lt;/P&gt;&lt;P&gt;&amp;gt;         AND L_R_ERSDA-OPTION = 'BT'&lt;/P&gt;&lt;P&gt;&amp;gt; AND L_R_ERSDA-LOW    = SPACE&lt;/P&gt;&lt;P&gt;&amp;gt;         AND L_R_ERSDA-HIGH   = SY-DATUM.&lt;/P&gt;&lt;P&gt;&amp;gt;   CLEAR L_R_ERSDA.&lt;/P&gt;&lt;P&gt;&amp;gt;         REFRESH L_R_ERSDA.&lt;/P&gt;&lt;P&gt;&amp;gt; ENDIF.&lt;/P&gt;&lt;P&gt;&amp;gt;       ENDIF.&lt;/P&gt;&lt;P&gt;&amp;gt;   IF L_R_ERSDA[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&amp;gt; Deltainit or Full&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;Why is OPEN CURSOR being used ??&lt;/P&gt;&lt;P&gt;Please define an internal table having the same number of fields in the same order that you would like to select and then get the entries into the internal table in one go. Your fetch cursor is causing an issue alongwith CORRESPONDING statement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also apart from this you can also remove the MOVE-CORRESPONDING that you used above to specifically define which fields to move into which .&lt;/P&gt;&lt;P&gt;This will performance tune your code further.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;gt;         OPEN CURSOR WITH HOLD S_CURSOR FOR&lt;/P&gt;&lt;P&gt;&amp;gt;   SELECT  *&lt;/P&gt;&lt;P&gt;&amp;gt;         FROM    ZVIEW1&lt;/P&gt;&lt;P&gt;&amp;gt;   WHERE   AUFNR IN L_R_AUFNR&lt;/P&gt;&lt;P&gt;&amp;gt;         AND     BUDAT IN L_R_BUDAT&lt;/P&gt;&lt;P&gt;&amp;gt;   AND     RMZHL IN L_R_RMZHL&lt;/P&gt;&lt;P&gt;&amp;gt;         AND     RUECK IN L_R_RUECK&lt;/P&gt;&lt;P&gt;&amp;gt;   AND     VORNR IN L_R_VORNR.&lt;/P&gt;&lt;P&gt;&amp;gt;       ELSE.&lt;/P&gt;&lt;P&gt;&amp;gt; a&lt;/P&gt;&lt;P&gt;&amp;gt;         OPEN CURSOR WITH HOLD S_CURSOR FOR&lt;/P&gt;&lt;P&gt;&amp;gt;   SELECT  *&lt;/P&gt;&lt;P&gt;&amp;gt;         FROM    ZVIEW1&lt;/P&gt;&lt;P&gt;&amp;gt;   WHERE   AUFNR IN L_R_AUFNR&lt;/P&gt;&lt;P&gt;&amp;gt;         AND     BUDAT IN L_R_BUDAT&lt;/P&gt;&lt;P&gt;&amp;gt;   AND     RMZHL IN L_R_RMZHL&lt;/P&gt;&lt;P&gt;&amp;gt;         AND     RUECK IN L_R_RUECK&lt;/P&gt;&lt;P&gt;&amp;gt;   AND     VORNR IN L_R_VORNR&lt;/P&gt;&lt;P&gt;&amp;gt;         AND    ( ERSDA  IN  L_R_ERSDA&lt;/P&gt;&lt;P&gt;&amp;gt;   OR      LAEDA  IN  L_R_ERSDA ).&lt;/P&gt;&lt;P&gt;&amp;gt; ENDIF.                           "Full or Delta&lt;/P&gt;&lt;P&gt;&amp;gt; ?&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; ENDIF.                             "First data&lt;/P&gt;&lt;P&gt;&amp;gt;  package ?&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; * Fetch records into e_t_data&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;     FETCH NEXT CURSOR S_CURSOR&lt;/P&gt;&lt;P&gt;&amp;gt;            INTO CORRESPONDING FIELDS&lt;/P&gt;&lt;P&gt;&amp;gt;     OF TABLE L_T_DATA&lt;/P&gt;&lt;P&gt;&amp;gt;            PACKAGE SIZE S_S_IF-MAXSIZE.&lt;/P&gt;&lt;P&gt;&amp;gt; -SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;       CLOSE CURSOR S_CURSOR.&lt;/P&gt;&lt;P&gt;&amp;gt;   RAISE NO_MORE_DATA.&lt;/P&gt;&lt;P&gt;&amp;gt;   ENDIF.&lt;/P&gt;&lt;P&gt;&amp;gt; * Next data package	&lt;/P&gt;&lt;P&gt;&amp;gt;     S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.&lt;/P&gt;&lt;P&gt;&amp;gt; ENDIF.			"Initialization mode or data extraction ?&lt;/P&gt;&lt;P&gt;&amp;gt; * delete records marked as cancelled.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;   DELETE L_T_DATA WHERE STZHL NE ''.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; SORT L_T_DATA BY AUFNR RUECK RMZHL.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;   LOOP AT L_T_DATA.&lt;/P&gt;&lt;P&gt;&amp;gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;&amp;gt;    IF L_T_DATA-STOKZ = 'X'.&lt;/P&gt;&lt;P&gt;&amp;gt;    L_T_DATA-STZHL = L_T_DATA-RMZHL.&lt;/P&gt;&lt;P&gt;&amp;gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&amp;gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&amp;gt; end into interface table e_t_data.&lt;/P&gt;&lt;P&gt;&amp;gt;     MOVE-CORRESPONDING L_T_DATA TO E_T_DATA.&lt;/P&gt;&lt;P&gt;&amp;gt; APPEND E_T_DATA.&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt;   ENDLOOP.&lt;/P&gt;&lt;P&gt;&amp;gt; ENDFUNCTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;The above mentioned will surely help you.&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Nishant &lt;/P&gt;&lt;P&gt;&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 Feb 2007 19:14:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909545#M378737</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-02-12T19:14:21Z</dc:date>
    </item>
    <item>
      <title>Re: Function Module Performance Tunning  Issue</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909546#M378738</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You are using a view with probably several tables. Check&lt;/P&gt;&lt;P&gt;- if all key fields are linked in the view definition&lt;/P&gt;&lt;P&gt;- if all tables are needed (maybe you aren't interested in all fields)&lt;/P&gt;&lt;P&gt;- if some existing indices can speed up the access&lt;/P&gt;&lt;P&gt;- if a new index can speed a up the access&lt;/P&gt;&lt;P&gt;- with SQL-trace, how the different tables are accessed (maybe the optimizer has troubles with best way to select the entries)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Christian&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 Feb 2007 20:26:17 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909546#M378738</guid>
      <dc:creator>christian_wohlfahrt</dc:creator>
      <dc:date>2007-02-12T20:26:17Z</dc:date>
    </item>
    <item>
      <title>Re: Function Module Performance Tunning  Issue</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909547#M378739</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;solved this problem by myself&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jun 2007 20:26:50 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/function-module-performance-tunning-issue/m-p/1909547#M378739</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-19T20:26:50Z</dc:date>
    </item>
  </channel>
</rss>

