Performance of report

All,
I created a report in report builder 9.0.4.0.33.
The report generates around 18,000 page pdf file, each row contains 14 fields - it takes around 40 minutes.
- the query for the report is tuned and it runs and gets the result in about a minute.
- there are no complications in the layout - just displaying the data in a table.
Is this a limitation of rdf, that it runs slow as the number of pages of increase. I am looking for something like performance report of rdf files.
thanks in advance,
Pavan

Hi,
That is a big report! How are you running this, client side or on the application server? My thoughts on speeding this up is to add more iron (hardware) but if you are concerned about making people wait, you should probably look into using report server so that you can schedule this as a job.
Thanks.

Similar Messages

  • Can the Performance Detail reports be exported as PDF without the Detail Table?

    We previously generated significant numbers of Performance Detail reports out of SCOM 2007 R2 as PDF files, and the 'Detail Table' did not show.
    Now that we are on SCOM 2012 R2, the same reports show the 'Detail Table' when exported to PDF. We report on 6 to 12 months of data, so these tables are huge, and are also useless for our purposes.
    Is there some way to suppress the Detail Table when exporting a Performance Detail report to PDF?

    Hello,
    Please see if the method in the following post can meet your requirements:
    SCOM reports on performance counters for large groups of servers
    http://www.bictt.com/blogs/bictt.php/2010/11/28/scom-reports-on-performance-counters-for-large-groups-of-servers

  • Split of Cubes to improve the performance of reports

    Hello Friends . We are now Implementing the Finance GL Line Items for Global Automobile operations in BMW and services to Outsourced to Japan which increased the data volume to 300 millions records for last 2 years since we go live. we have 200 Company codes.
    How To Improve performance
    1. Please suggest if I want to split the cubes based on the year and Company codes which are region based. which means european's will run report out of one cube and same report for america will be on another cube
    But Question here is if I make 8 cube (2 For each year : 1- current year comp code ABC & 1 Current Year DEF), (2 For each year : 1- Prev year comp code ABC & 1 Prev Year DEF)
    (2 For each year : 1- Arch year comp code ABC & 1 Archieve Year DEF)
    1. Then what how I can I tell the query to look the data from which cube. since Company code is authorization variable so to pick that value  of comp code and make a customer exit variable for infoprovider  will increase lot of work.
    Is there any good way to do this. does split of cubes make sense based on company code or just make it on year.
    Please suggest me a excellent approach step by step to split cubes for 60 million records in 2 years growth will be same for
    next 4 years since more company codes are coming.
    2. Please suggest if split of cube will improve performance of report or it will make it worse since now query need to go thru 5-6 different cubes.
    Thanks
    Regards
    Soniya

    Hi Soniya,
    There are two ways in which you can split your cube....either based on Year or based on Company code.(i.e Region). While loading the data, write a code in the start routine which will filter tha data. For example, if you are loading data for three region say 1, 2, and 3, you code will be something like
    DELETE SOURCE_PACKAGE WHERE REGION EQ '2' OR
    REGION EQ '3'.
    This will load data to your cube correspoding to region 1.
    you can build your reports either on these cubes or you can have a multiprovider above these cubes and build the report.
    Thanks..
    Shambhu

  • Performance my Report  is 57% is ABAP , 42 % System & 1% for DB

    Performance my Report  is 57% is ABAP , 42 % System & 1% for DB..it it OK or will there be any performance issues. Please let me know

    ABAP Execution time is <b>18,602</b> micro seconds
    DB                     <b> 256</b>
    System                 <b>13,899</b>
    <b>  HITLIST</b>----
    Number     Gross time (in microseconds)     =     Net (microseconds)     Gross time in %     Net time in %     Call     Program Name     Type     Display filter group
    1     32757          0     100.0     0.0     Runtime analysis          Sys.     
    1     32725          4368     99.9     13.3     Submit Report Z_BALRAM_TEST1     SAPMS38T          
    1     26691          776     81.5     2.4     Program Z_BALRAM_TEST1               
    3     26554          2088     81.1     6.4     Dynpro Entry     Z_BALRAM_TEST1          
    1     26383          850     80.5     2.6     PBO Dynpro SAPMSSY0     SAPMSSY0     Sys.     
    1     423          50     1.3     0.2     Call Func. DOKU_OBJECT_EXIST     RSDBRUNT          
    1     408          10     1.2     0.0     Call Func. AC_SYSTEM_FLUSH     SAPFGUICNTL          
    1     385          37     1.2     0.1     Call Func. SYSTEM_COMBO_OUTPUT     SAPMSSYD          
    1     303          21     0.9     0.1     Call Func. VRM_QUEUE_FLUSH     SAPLSCNT          
    1     140          97     0.4     0.3     Load Dynpro SAPMSSY0 1000     Z_BALRAM_TEST1     Sys.

  • How to improve query performance when reporting on ods object?

    Hi,
    Can anybody give me the answer, how to improve my query performance when reporting on ODS object?
    Thanks in advance,
    Ravi Alakuntla.

    Hi Ravi,
    Check these links which may cater your requirement,
    Re: performance issues of ODS
    Which criteria to follow to pick InfoObj. as secondary index of ODS?
    PDF on BW performance tuning,
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/cccad390-0201-0010-5093-fd9ec8157802
    Regards,
    Mani.

  • Poor performance of Report Writer reports (Special Ledger Library)

    Greetings - We are running into problems with poor performance of reports that are written with the SAP Report Writer. The problem appears to be caused when SAP is using the primary-key index in our Special Purpose ledger (where the reports are generated). The index contains object fields that cannot be added to the report library (COBJNR, SOBJNR, ROBJNR). We have created alternate indices, but they are not being picked up with the Report Writer reports.
    Are there any configurable or technical settings that we can work with in order to force the use of a specific index for a report? It seems logical that SAP would find the most efficient index to use, but with the reports that we are looking at, this does not appear to be the case.
    Any help that can be offered will be greatly appreciated...We are currently using version 4.6C, but are planning an upgrade to ECC 6.0 later this year.
    Thanks in advance -

    Arjun,
    Where / which files contains these parameters we cannot find them all ??? 
    Tomcat - Java _properties and try again ( You can tune below value as per your system memory)
    -XX:PermSize=256m
    -XX:MaxPermSize=256m
    -XX:NewSize=171m
    -XX:MaxNewSize=171m
    -XX:SurvivorRatio=2
    -XX:TargetSurvivorRatio=90
    -XX:+DisableExplicitGC
    -XX:+UseTLAB
    As a general update it looks like we need to use the Monitoring tools that are installed by default, we are now in the process of installing the database etc
    Cheers

  • Performance Monitor Reports Missing in FDM

    Hi All -
    I'm trying to run "Performance Monitor Reports" in FDM and am getting the below error messages for both type of reports. Any help on this greatly appreciated. Thank you!!
    Here's the message from the error log:
    Invalid Report File: \\..\Apps\FDMLTD\Reports\PerformanceGraphAvgProcessTime.rpt
    I logged into the app server and looked in the folder, and .rpt isn't there.
    Same with the Min-Max report
    Error: Invalid Report File: \\..\Apps\FDMLTD\Reports\PerformanceGraphMinMaxProcessTime.rpt

    Can you please let me know the steps to import report xml? I logged into workbench client, clicked on "view->Reports" and tried to import. But I was not able to locate the required xml files for the Performance monitor reports.
    I tried to find the steps in help guide as well, but couldn't find anything. Thanks!

  • Performance in report

    Hi Experts,
                   In this following shown report Data base performance is consuming , can you please help me in this issue where can i increase my performance. Please help me urgent.
    Report need performance
    Program Name           :  ZSD_QUOTE                                  *
    Functional Analyst     :  TOBY                                       *
    Programmer             :  Vijay Joseph                               *
    Start date             :  03/14/2007  (MM/DD/YYYY)                   *
    Initial CTS            :  DEVK913353                                 *
    Description            :  This program will generate the Quote detls *
    Includes               :  None                                       *
    Function Modules       :  None                                       *
    Logical database       :  None                                       *
    Transaction Code       :  ZQUOTE                                     *
    External references    :  None                                       *
                       Modification Log                                  *
    Date      | Modified by     | CTS number    |  Comments              *
    03/14/2007|Vijay Joseph     | DEVK913353    |Initial Development     *
    REPORT  ZSD_QUOTE
            line-size  252
            line-count 40(0)
            no standard page heading   .                         .
    *Tables
    TABLES : VBAK,
             EQUI,
             EKKO.
    *TYPES
    TYPES : BEGIN OF T_VBAP,
            VBELN  LIKE VBAK-VBELN,
            ERDAT  LIKE VBAK-ERDAT,
            BNDDT  LIKE VBAK-BNDDT,
            NETWR  LIKE VBAK-NETWR,
            VKBUR  LIKE VBAK-VKBUR,
            BSTNK  LIKE VBAK-BSTNK,
            KUNNR  LIKE VBAK-KUNNR,
            POSNR  LIKE VBAP-POSNR,
            MATNR  LIKE VBAP-MATNR,
            PSTYV  LIKE VBAP-PSTYV,
            KWMENG LIKE VBAP-KWMENG,
            VGBEL  LIKE VBAP-VGBEL,
            VGPOS  LIKE VBAP-VGPOS,
            WERKS  LIKE VBAP-WERKS,
            END OF T_VBAP.
    *Types for the likp and lips
    TYPES : BEGIN OF T_LIPS,
            VBELN LIKE LIKP-VBELN,
            LFDAT LIKE LIKP-LFDAT,
            POSNR LIKE LIPS-POSNR,
            PSTYV LIKE LIPS-PSTYV,
            MATNR LIKE LIPS-MATNR,
            WERKS LIKE LIPS-WERKS,
            VGBEL LIKE LIPS-VGBEL,
            VGPOS LIKE LIPS-VGPOS,
            END OF T_LIPS.
    *Types for the EQUI
    TYPES : BEGIN OF T_EQUI,
            EQUNR LIKE EQUI-EQUNR,
            SERNR LIKE EQUI-SERNR,
            KDAUF LIKE EQBS-KDAUF,
            KDPOS LIKE EQBS-KDPOS,
            END OF T_EQUI.
    *Types for the KNA1
    TYPES : BEGIN OF T_KNA1,
            KUNNR LIKE KNA1-KUNNR,
            NAME1 LIKE KNA1-NAME1,
            END OF T_KNA1.
    *Types for the MAKT
    TYPES : BEGIN OF T_MAKT,
            MATNR LIKE MAKT-MATNR,
            MAKTX LIKE MAKT-MAKTX,
            SPRAS LIKE MAKT-SPRAS,
            END OF T_MAKT.
    *types for VBFA
    TYPES : BEGIN OF T_VBFA,
            VBELV    LIKE VBFA-VBELV,
            POSNV    LIKE VBFA-POSNV,
            VBELN    LIKE VBFA-VBELN,
            POSNN    LIKE VBFA-POSNN,
            VBTYP_N  LIKE VBFA-VBTYP_N,
            END OF T_VBFA.
    *types for the output
    TYPES : BEGIN OF T_OUTPUT,
            VBELV  LIKE VBFA-VBELV,
            ERDAT  LIKE VBAK-ERDAT,
            BNDDT  LIKE VBAK-BNDDT,
            NETWR(15) type C,       "  LIKE VBAK-NETWR,
            VBELN  LIKE VBAK-VBELN,
            BSTNK  LIKE VBAK-BSTNK,
            KUNNR  LIKE VBAK-KUNNR,
            KWMENG(15) TYPE C,      "  LIKE VBAP-KWMENG,
            NAME1  LIKE KNA1-NAME1,
            VKBUR  LIKE VBAK-VKBUR,
            MATNR  LIKE MAKT-MATNR,
            MAKTX  LIKE MAKT-MAKTX,
            LFDAT  LIKE LIKP-LFDAT,
            SERNR  LIKE EQUI-SERNR,
            END OF T_OUTPUT.
    *Types for the VBUP
    TYPES : BEGIN OF T_VBUP,
            vbeln LIKE VBUP-VBELN,
            posnr LIKE VBUP-POSNR,
            lfsta LIKE VBUP-LFSTA,
            END OF T_VBUP.
    *Internal Table
    DATA : GIT_VBAP   TYPE  STANDARD TABLE OF T_VBAP,
           GIT_LIPS   TYPE  STANDARD TABLE OF T_LIPS,
           GIT_EQUI   TYPE  STANDARD TABLE OF T_EQUI,
           GIT_KNA1   TYPE  STANDARD TABLE OF T_KNA1,
           GIT_MAKT   TYPE  STANDARD TABLE OF T_MAKT,
           GIT_OUTPUT TYPE  STANDARD TABLE OF T_OUTPUT,
           GIT_VBUP   TYPE  STANDARD TABLE OF T_VBUP,
           GIT_VBFA   TYPE  STANDARD TABLE OF T_VBFA.
    *work Area
    DATA : GWA_VBAP   TYPE  T_VBAP,
           GWA_LIPS   TYPE  T_LIPS,
           GWA_EQUI   TYPE  T_EQUI,
           GWA_KNA1   TYPE  T_KNA1,
           GWA_MAKT   TYPE  T_MAKT,
           GWA_OUTPUT TYPE  T_OUTPUT,
           GWA_VBUP   TYPE  T_VBUP,
           GWA_VBFA   TYPE  T_VBFA.
    *selection screen.
    SELECTION-SCREEN : BEGIN OF BLOCK ZBLOCK WITH FRAME TITLE TEXT-015.
    Select-options : S_VBELN FOR VBAK-VBELN,
                     S_ERDAT FOR VBAK-ERDAT, " OBLIGATORY,
                     S_EBELN FOR EKKO-EBELN MATCHCODE OBJECT MEKK,
                     S_SERNR FOR EQUI-SERNR MATCHCODE OBJECT EQSN.
    PARAMETERS     : P_WERKS LIKE VBAP-WERKS OBLIGATORY.
    SELECTION-SCREEN : END OF BLOCK ZBLOCK.
    **************top of page*********************************************
    TOP-OF-PAGE.
      PERFORM SAPSD_TOP_OF_PAGE.
    **************At selection screen*************************************
    at selection-screen.
    *for validating the Sales Order
      PERFORM SAPSD_SCREEN_VALIDATION_VBELN.
    *for validating the plant
      PERFORM SAPSD_SCREEN_VALIDATION_WERKS.
    *for the validating the PO number
      PERFORM SAPSD_SCREEN_VALIDATION_PO.
    *for the validating the serial number
      PERFORM SAPSD_SCREEN_VALIDATION_SERIAL.
    ***************strart of selection************************************
    START-OF-SELECTION.
    *Get the data
      PERFORM SAPSD_FETCH_DATA.
    *For the final output table
      PERFORM SAPSD_OUTPUT.
    *&      Form  SAPSD_FETCH_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM SAPSD_FETCH_DATA .
    *FETCH FROM THE VBAK AND VBAP.
      SELECT  VBAK~VBELN
              VBAK~ERDAT
              VBAK~BNDDT
              VBAK~NETWR
              VBAK~VKBUR
              VBAK~BSTNK
              VBAK~KUNNR
              VBAP~POSNR
              VBAP~MATNR
              VBAP~PSTYV
              VBAP~KWMENG
              VBAP~VGBEL
              VBAP~VGPOS
              VBAP~WERKS
              FROM VBAK INNER JOIN VBAP
              ON VBAKVBELN EQ  VBAPVBELN
              INTO TABLE GIT_VBAP
              WHERE VBAK~VBELN IN  S_VBELN
              AND   VBAK~ERDAT IN  S_ERDAT
              AND   VBAK~BSTNK IN  S_EBELN
              AND   VBAP~PSTYV EQ  'IRRA'
              AND   VBAP~WERKS EQ  P_WERKS.
      IF SY-SUBRC EQ 0.
        SORT GIT_VBAP BY VBELN.
      else.
        message e022(z1).
      ENDIF.
    *from vbfa
    select VBELV
           POSNV
           VBELN
           POSNN
           VBTYP_N
           into table git_vbfa
           from vbfa
           for all entries in git_vbap
           where  vbelv  eq git_vbap-vbeln
           and    posnv  eq git_vbap-posnr.
    *FETCH DATA FROM THE LIKP AND LIPS
      IF NOT GIT_VBAP IS INITIAL.
        SELECT LIKP~VBELN
               LIKP~LFDAT
               LIPS~POSNR
               LIPS~PSTYV
               LIPS~MATNR
               LIPS~WERKS
               LIPS~VGBEL
               LIPS~VGPOS
               FROM LIKP INNER JOIN LIPS
               ON LIKPVBELN EQ LIPSVBELN
               INTO TABLE GIT_LIPS
               FOR ALL ENTRIES IN GIT_VBFA
               WHERE LIPS~VBELN   EQ GIT_VBFA-VBELN
               and   LIPS~POSNR   EQ GIT_VBFA-POSNN.
              AND   LIPS~WERKS   EQ GIT_VBAP-WERKS.
              AND   LIPS~MATNR   EQ GIT_VBAP-MATNR.
              AND   LIPS~POSNR EQ GIT_VBAP-POSNR.
               AND   LIPS~PSTYV EQ 'IRRA'.
              AND   LIPS~VGPOS EQ GIT_VBAP-POSNR.
        IF SY-SUBRC EQ 0.
          SORT GIT_LIPS BY VBELN.
        ENDIF.
      ENDIF.
    *for getting the delivery status(dont take the delivered document number
    *take only 'open'.
      if not git_lips is initial.
        select VBELN
               posnr
               lfsta
               from vbup
               into table git_vbup
               for all entries in git_lips
               where vbeln eq git_lips-vbeln
               and   posnr eq git_lips-posnr.
              and   ( lfsta EQ 'A' ) OR
                    ( lfsta EQ 'B' ) .
        if sy-subrc eq 0.
          sort git_vbup by vbeln.
        endif.
      endif.
    *To get the equipment number
      IF NOT GIT_VBAP IS INITIAL.
        SELECT EQUI~EQUNR
               EQUI~SERNR
               EQBS~KDAUF
               EQBS~KDPOS
               FROM EQUI INNER JOIN EQBS
               ON EQUIEQUNR EQ EQBSEQUNR
               INTO TABLE GIT_EQUI
               FOR ALL ENTRIES IN GIT_VBAP
               WHERE EQUI~SERNR IN S_SERNR
               AND   EQBS~KDAUF EQ GIT_VBAP-VBELN.
        IF SY-SUBRC EQ 0.
          SORT GIT_EQUI BY EQUNR.
        ENDIF.
      ENDIF.
    *To get the customer name
      IF NOT GIT_VBAP IS INITIAL.
        SELECT KUNNR
               NAME1
               INTO TABLE GIT_KNA1
               FROM KNA1
               FOR ALL ENTRIES IN GIT_VBAP
               WHERE KUNNR EQ GIT_VBAP-KUNNR.
        IF SY-SUBRC EQ 0.
          SORT GIT_KNA1 BY KUNNR.
        ENDIF.
      ENDIF.
    *to get the material number
      if not git_vbap is initial.
        SELECT MATNR
               MAKTX
               SPRAS
               INTO TABLE GIT_MAKT
               FROM MAKT
               FOR ALL ENTRIES IN GIT_VBAP
               WHERE MATNR EQ GIT_VBAP-MATNR
               AND SPRAS   EQ SY-LANGU.
        IF SY-SUBRC EQ 0.
          SORT GIT_MAKT BY MATNR.
        ENDIF.
      endif.
    ENDFORM.                    " SAPSD_FETCH_DATA
    *&      Form  SAPSD_OUTPUT
          text
    -->  p1        text
    <--  p2        text
    FORM SAPSD_OUTPUT .
    data : l_vbelv like vbfa-vbelv.
      LOOP AT GIT_VBAP INTO GWA_VBAP.
    *for getting the delivey date
        clear : gwa_lips.
        read table git_vbfa into gwa_vbfa with key vbelv =  gwa_vbap-vbeln
                                                   posnv =  gwa_vbap-posnr.
        if sy-subrc eq 0.
        read table git_lips into gwa_lips
                            with key VBELN  =  GWA_vbfa-Vbeln
                                     POSNR  =  GWA_vbfa-posnn
                                     PSTYV  =  'IRRA'.
        IF SY-SUBRC EQ 0.
          GWA_OUTPUT-LFDAT = GWA_LIPS-LFDAT.
          READ TABLE GIT_VBUP INTO GWA_VBUP
                              WITH KEY VBELN  =  GWA_LIPS-VBELN
                                       POSNR  =  GWA_LIPS-POSNR.
         IF SY-SUBRC EQ 0.
          IF GWA_VBUP-LFSTA EQ 'A' OR GWA_VBUP-LFSTA EQ  'B'.
           clear : l_vbelv.
           select single vbelv
                         into l_vbelv
                         from vbfa
                         where VBELN EQ gwa_vbap-vbeln.
    *Quote Number
           if sy-subrc eq 0.
             GWA_OUTPUT-VBELV  =  L_VBELV.
           endif.
    *Move the details to the final table
            GWA_OUTPUT-VBELN  =  GWA_VBAP-VBELN.
            GWA_OUTPUT-ERDAT  =  GWA_VBAP-ERDAT.
            GWA_OUTPUT-BNDDT  =  GWA_VBAP-BNDDT.
            GWA_OUTPUT-NETWR  =  GWA_VBAP-NETWR.
            GWA_OUTPUT-KUNNR  =  GWA_VBAP-KUNNR.
            GWA_OUTPUT-KWMENG =  GWA_VBAP-KWMENG.
            GWA_OUTPUT-BSTNK  =  GWA_VBAP-BSTNK.
    for getting the name from kna1
            CLEAR : GWA_KNA1.
            READ TABLE GIT_KNA1 INTO GWA_KNA1
                                 WITH KEY KUNNR = GWA_VBAP-KUNNR.
            IF SY-SUBRC EQ 0.
              GWA_OUTPUT-NAME1 = GWA_KNA1-NAME1.
            ENDIF.
            GWA_OUTPUT-VKBUR = GWA_VBAP-VKBUR.
    *for getting mateial number and description
            CLEAR : GWA_MAKT.
            READ TABLE GIT_MAKT INTO GWA_MAKT
                                WITH KEY MATNR = GWA_VBAP-MATNR
                                SPRAS          = SY-LANGU.
            IF SY-SUBRC EQ 0.
              GWA_OUTPUT-MATNR = GWA_MAKT-MATNR.
              GWA_OUTPUT-MAKTX = GWA_MAKT-MAKTX.
            ENDIF.
    for getting the serial number
            clear : gwa_equi.
            read table git_equi into gwa_equi
                                with key kdauf = gwa_vbap-vbeln
                                         kdpos = gwa_vbap-posnr.
            IF SY-SUBRC EQ 0.
              GWA_OUTPUT-SERNR = gwa_equi-sernr.
            ENDIF.
            append gwa_output to git_output.
            ENDIF.
          ENDIF.
        ENDIF.
        CLEAR : GWA_VBAP,
                GWA_OUTPUT.
      ENDLOOP.
    *free and refres the internal table
      clear :   git_vbap,
                git_lips,
                git_makt,
                git_equi.
      refresh : git_vbap,
                git_lips,
                git_makt,
                git_equi.
      free:     git_vbap,
                git_lips,
                git_makt,
                git_equi.
      loop at git_output into gwa_output.
        FORMAT COLOR COL_NORMAL INTENSIFIED OFF INVERSE OFF.
        WRITE :   /1    sy-vline,
                   2    gwa_output-VBELV,  "qte no
                   13   sy-vline,
                   14   gwa_output-ERDAT,  "cr date
                   25   sy-vline,
                   26   gwa_output-BNDDT,  "exp date
                   36   sy-vline,
                   37   gwa_output-NETWR,  "qte value
                   53   sy-vline,
                   54   gwa_output-VBELN,  "so
                   65   SY-VLINE,
                   66   gwa_output-BSTNK,  "po
                   87   SY-VLINE,
                   88   gwa_output-KUNNR,  "customer
                   99   SY-VLINE,
                   100  gwa_output-NAME1,  "Name
                   136  sy-vline,
                   137  gwa_output-VKBUR,  "S off
                   142  sy-vline,
                   143  gwa_output-MATNR,  "Material
                   162  sy-vline,
                   163  gwa_output-MAKTX , "Description
                   204  sy-vline,
                   205  gwa_output-KWMENG,  "Or Qty
                   221  sy-vline,
                   222  gwa_output-LFDAT,  "Del Date
                   233  sy-vline,
                   234  gwa_output-SERNR,  "Serial No
                   252  SY-VLINE.
        uline.
        clear : gwa_output.
      endloop.
    *free and refresh the internal table
      refresh : git_output.
      free    : git_output.
    ENDFORM.                    " SAPSD_OUTPUT
    *&      Form  SAPSD_TOP_OF_PAGE
          text
    -->  p1        text
    <--  p2        text
    FORM SAPSD_TOP_OF_PAGE .
      write: /15 text-016, 30 sy-repid.
      FORMAT COLOR COL_HEADING INTENSIFIED ON INVERSE OFF.
      ULINE.
      WRITE :     /1     sy-vline,
                   2     text-001,  "QTE No
                   13    sy-vline,
                   14    text-002,  "CR Date
                   25    sy-vline,
                   26    text-003,  "EX Date
                   36    sy-vline,
                   37    text-004,  "QT Value
                   53    sy-vline,
                   54    text-005,  "SO
                   65    SY-VLINE,
                   66    text-006,  "PO
                   87    SY-VLINE,
                   88    text-007,  "Customer
                   99    sy-vline,
                   100   text-008,  "Name
                   136   sy-vline,
                   137   text-009,  "S off
                   142   sy-vline,
                   143   text-010,  "Material
                   162   sy-vline,
                   163   text-011 , "Description
                   204   sy-vline,
                   205   text-012,  "Or Qty
                   221   sy-vline,
                   222   text-013,  "Del Date
                   233   sy-vline,
                   234   text-014,  "Serial No
                   252   SY-VLINE.
      ULINE.
    ENDFORM.                    " SAPSD_TOP_OF_PAG,
    *&      Form  SAPSD_SCREEN_VALIDATION_VBELN
          text
    -->  p1        text
    <--  p2        text
    FORM SAPSD_SCREEN_VALIDATION_VBELN .
      IF NOT S_VBELN IS INITIAL.
    *To check the plant.If entry is wrong the an error message displayed.
        DATA : l_VBELN LIKE VBAK-VBELN. "SO
    Validating SO in selection screen
        SELECT SINGLE VBELN INTO l_VBELN FROM VBAK
                     WHERE VBELN IN S_VBELN.
        IF sy-subrc NE 0.
          MESSAGE e023(Z1).           " Invalid SO
        ENDIF.
      endif.
    ENDFORM.                    " SAPSD_SCREEN_VALIDATION_VBELN
    *&      Form  SAPSD_SCREEN_VALIDATION_WERKS
          text
    -->  p1        text
    <--  p2        text
    FORM SAPSD_SCREEN_VALIDATION_WERKS .
      IF NOT P_WERKS IS INITIAL.
    *To check the plant.
    *If entry is wrong the an error message displayed.
        DATA : l_WERKS LIKE T001W-WERKS. "Plant
    Validating Plant in selection screen
        SELECT SINGLE WERKS INTO l_WERKS FROM T001W
                     WHERE WERKS EQ P_WERKS.
        IF sy-subrc NE 0.
          MESSAGE e024(Z1).           " Invalid Plant
        ENDIF.
      ENDIF.
    ENDFORM.                    " SAPSD_SCREEN_VALIDATION_WERKS
    *&      Form  SAPSD_SCREEN_VALIDATION_PO
          text
    -->  p1        text
    <--  p2        text
    FORM SAPSD_SCREEN_VALIDATION_PO .
      IF NOT S_EBELN IS INITIAL.
    *To check the plant.
    *If entry is wrong the an error message displayed.
        DATA : l_EBELN LIKE EKKO-EBELN. "PO
    Validating PO in selection screen
        SELECT SINGLE EBELN INTO l_EBELN FROM EKKO
                     WHERE EBELN IN S_EBELN.
        IF sy-subrc NE 0.
          MESSAGE e025(Z1).           " Invalid PO
        ENDIF.
      ENDIF.
    ENDFORM.                    " SAPSD_SCREEN_VALIDATION_PO
    *&      Form  SAPSD_SCREEN_VALIDATION_SERIAL
          text
    -->  p1        text
    <--  p2        text
    FORM SAPSD_SCREEN_VALIDATION_SERIAL .
      IF NOT S_SERNR IS INITIAL.
    *To check the SERIAL NO.
    *If entry is wrong the an error message displayed.
        DATA : l_SERNR LIKE EQUI-SERNR. "Serial No
    Validating Serial NO in selection screen
        SELECT SINGLE SERNR INTO l_SERNR FROM EQUI
                     WHERE SERNR IN S_SERNR.
        IF sy-subrc NE 0.
          MESSAGE e026(Z1).           " Invalid Serial No
        ENDIF.
      ENDIF.
    ENDFORM.                    " SAPSD_SCREEN_VALIDATION_SERIAL
    Please help me in this .
    Thanks & Regards
    Ahammad

    Hi Shaik,
    Please remove all the join select queries and use 'for all entries' varaiant of the select query. Check whether you can create and use indexes in ur queries.
    Thanks and Regards,
    Saurabh Chhatre

  • Vendor performance analysis report

    Hi all,
    requirement to create an ALV report for vendor performance analysis...  wat r d tables n feilds which are to be used fr this... any help is appreciated..

    Refer the links -
    vendor performance report !!!
    vendor performance report
    vendor performance report
    I need standard vendor performance report

  • Regarding the performance in report

    Hi Abap Gurus,
                              i am working on the report. my requirement is that after executing the report data gets extracting after 11 hours.the required data is comonf perfectly.  how to improve the performance. any tips to follow the performance in the report.  if possible post the code.
    Moderator Message: Please search the forum for available information.
    Edited by: kishan P on Oct 19, 2010 4:50 PM

    Hi,
    Please check below thread;
    Extract from ALV List
    Regards
    Jana

  • Variable screen performance in report

    In my project we are having  somany master data objects,
    we have to find the performance of selection screen ,earlier we have only display as selection screen  as key now according to our client requirment we are providing both key and text in sleection screen with long text , how can i find these master data objects performance in variable screen.
    The SAP std out of the box setting for an Infoobject is usually the key.( Sometimes text )
    We are now making changes to almost all info objects to display as key and text, and depending on what business is asking we are changing to Long text, medium or short.
    Investigation required
    1)       how does it affect the performance when we do F4 help
    2)       how does it help in search by text
    3)       what difference does it make when searching by key vs text.
    My feel is if we show the key and text , definitely the key comes from Dimension table and the text will be fetched from the text table of the master data attribute
    And hence for business partner etc it might really affect the time taken to fetch the variable values.
    please help how to find the performance of variables.

    Yeah, It won't have much impact on the performance of the selection screen.......
    Even we are displaying both key and text for many reports but never faced a performance issue.......

  • Urgent: regarding the increasing the performance of report

    Hi,
    I had a report which is displaying the correct data but i execute on PRD Server,it gets Request Time Out.So i want to increase the performance of it.Plzz help me out in doing this.
    REPORT  ZWIP_STOCK NO STANDARD PAGE HEADING LINE-SIZE 150.
    TABLES: AFPO, AFRU, MARA, MAKT.
    DATA: BEGIN OF ITAB OCCURS 0,
          AUFNR LIKE AFPO-AUFNR,
          MATNR LIKE AFPO-MATNR,
          LGORT LIKE AFPO-LGORT,
          MEINS LIKE MARA-MEINS,
          NTGEW LIKE MARA-NTGEW,
          MTART LIKE MARA-MTART,
          STOCK TYPE P LENGTH 10 DECIMALS 3,
          END OF ITAB.
    DATA : ITAB2 LIKE ITAB OCCURS 0 WITH HEADER LINE.
    DATA : DESC LIKE MAKT-MAKTX.
    SELECT-OPTIONS : MAT_TYPE FOR MARA-MTART.
    SELECT-OPTIONS : P_MATNR FOR AFPO-MATNR.
    DATA : V_MINOPR LIKE AFRU-VORNR,
           V_MAXOPR LIKE AFRU-VORNR,
           V_QTYMIN LIKE AFRU-GMNGA,
           V_QTYMAX LIKE AFRU-GMNGA,
           V_QTY TYPE P LENGTH 10 DECIMALS 3.
            SELECT AAUFNR AMATNR ALGORT BMEINS BNTGEW BMTART FROM AFPO AS A
              INNER JOIN MARA AS B ON AMATNR = BMATNR
                INTO TABLE ITAB WHERE ELIKZ <> 'X' AND MTART IN MAT_TYPE AND A~MATNR IN P_MATNR.
        ITAB2[] = ITAB[].
        SORT ITAB2 BY MATNR MEINS MTART NTGEW.
        DELETE ADJACENT DUPLICATES FROM ITAB2 COMPARING MATNR MEINS MTART NTGEW.
       LOOP AT ITAB2.
        V_QTY = 0.
          LOOP AT ITAB WHERE MATNR = ITAB2-MATNR.
            SELECT MIN( VORNR ) INTO V_MINOPR FROM AFRU WHERE AUFNR = ITAB-AUFNR.
            SELECT MAX( VORNR ) INTO V_MAXOPR FROM AFRU WHERE AUFNR = ITAB-AUFNR.
            SELECT SUM( GMNGA ) INTO V_QTYMIN FROM AFRU WHERE AUFNR = ITAB-AUFNR AND VORNR =  V_MINOPR.
            SELECT SUM( GMNGA ) INTO V_QTYMAX FROM AFRU WHERE AUFNR = ITAB-AUFNR AND VORNR =  V_MAXOPR.
            V_QTY = V_QTY + V_QTYMIN - V_QTYMAX.
          ENDLOOP.
          ITAB2-STOCK = V_QTY.
          MODIFY ITAB2.
        ENDLOOP.
        LOOP AT ITAB2.
              WRITE:/ ITAB2-MATNR,ITAB2-STOCK.
        ENDLOOP.

    Instead of code from
    itab2[] = itab[] till last endloop try code given below
    data : begin of minopr occurs 0,
           aufnr type afru-aurnr,
           vornr type afru-vornr,
           end of minopr.
    data : begin of maxopr occurs 0,
           aufnr type afru-aurnr,
           vornr type afru-vornr,
           end of maxopr.
    data : begin of qtymin occurs 0,
           aufnr type afru-aurnr,
           vornr type afru-vornr,
           end of qtymin.
    data : begin of qtymax occurs 0,
           aufnr type afru-aurnr,
           vornr type afru-vornr,
           end of qtymax.
    select aurnr vornr into table minopr from afru for all entries in itab where aurnr = itab-aufnr
    maxopr[] = minopr[].
    sort minopr by aufnr vornr ascending.
    sort maxopr by aufnr vornr descending.
    delete adjacent duplicates from minopr comparing aufnr.
    delete adjacent duplicates from maxopr comparing aufnr.
    SELECT aufnr vornr GMNGA INTO TABLE QTYMIN FROM AFRU for all entries in minopr WHERE AUFNR = minopr-AUFNR AND VORNR = MINOPR-vornr.
    SELECT aufnr vornr GMNGA INTO TABLE QTYMAX FROM AFRU for all entries in maxopr WHERE AUFNR = maxopr-AUFNR AND VORNR = maxopr-vornr.
    sort qtymin by aufnr.
    sort qtymax by aufnr
    sort itab by matnr MEINS MTART NTGEW.
    LOOP AT ITAB.
    v_minopr = 0.
    v_maxopr = 0.
    read table qtymin with key aufnr = itab-aufnr binary search.
    if sy-subrc = 0.
    loop at qtymin from sy-tabix.
    if qtymin-aufnr = itab-aufnr.
    V_MINOPR = V_MINOPR + itab-gmnga.
    else.
    exit.
    endif.
    endloop.
    endif.
    read table qtymax with key aufnr = itab-aufnr binary search.
    if sy-subrc = 0.
    loop at qtymax from sy-tabix.
    if qtymax-aufnr = itab-aufnr.
    V_MaxOPR = V_MaxOPR + itab-gmnga.
    else.
    exit.
    endif.
    endloop.
    endif.
    V_QTY = V_QTY + V_QTYMIN - V_QTYMAX.
    At new itab-matnr.
    if sy-tabix = 1.
    continue.
    endif.
    itab2 = itab.
    itab2-stock = v_qty.
    append itab2.
    V_QTY = 0.
    endat.
    ENDLOOP.
    itab2 = itab.
    itab2-stock = v_qty.
    append itab2.
    LOOP AT ITAB2.
    WRITE:/ ITAB2-MATNR,ITAB2-STOCK.
    ENDLOOP.

  • Slow performance refreshing report with multiple subreports in main report

    I am using multiple subreports in my main report that appear to be slowing down the performance of the report considerably. Is there something I can do to increase performance with subreports.

    Hi Brian,
    Subreports are a known performance hog.
    I would suggest going back to the drawing board and rethinking on the layout of the report. The best thing, of course, would be to completely get rid of the subreports by creating a single SQL statement that takes care of all the report's requirements.
    Sometimes it is imperative to have subreports, in which case, you should try to make sure any selection filters from both the Main Report and the Subreport are passed back to the database.
    Also, avoid using Page N of M for better performance - with or without Subreports.
    -Abhilash

  • How to genarate performance monitoring report in SAP PI automatically

    Dear All,
    I have a requirement where I need to automatically generate a report of monthly data of Performance monitoring in SAP PI  and send it to business users.
    As per my understanding, this can be achieved by pulling the data every month from the tables where these data of Performance monitoring is maintained internally within SAP PI.
    Please provide me inputs as which table stores these data/ and solutions to acheive this.
    Thanks
    Azahar

    Refer below links .. You can write abap report to make it happen
    Re: Get count of the messages to particular Interface in a day and send email
    /people/gourav.khare2/blog/2007/12/12/interesting-abap-tables-in-xi-150-part-i
    http://wiki.sdn.sap.com/wiki/display/XI/UsefulABAPtablesinSAP+XI

  • Performance issue-Report

    Hi,
    I have developed FI report which is having 18 laks records, the time taken is more than 45 hrs,please any one can help me in the performance wise.
    SELECT ZBUKR
             RZAWE
             LIFNR
             KUNNR
             ZNME1
             VBLNR
             RWBTR
             WAERS
             ZALDT
             VOIDD
             VOIDR
             BANCD
             CHECT  FROM PAYR INTO TABLE IT_PAYR
                WHERE RZAWE IN S_RZAWE
                AND   ZALDT IN S_ZALDT
                AND   BANCD IN S_BANCD
                AND   VOIDD IN S_VOIDD
                AND   LIFNR IN S_LIFNR
                AND   KUNNR IN S_KUNNR.
      IF SY-SUBRC = 0.
        SORT IT_PAYR BY VBLNR.
        DELETE ADJACENT DUPLICATES FROM IT_PAYR
        COMPARING VBLNR GJAHR.
    else.
      ENDIF.
      SORT IT_PAYR BY VBLNR LIFNR KUNNR.
    *******Fetches data from PAYR Table******
      IF NOT IT_PAYR[] IS INITIAL.
        IT_VEND[] = IT_PAYR[].
        SORT IT_VEND BY LIFNR.
        DELETE IT_VEND WHERE LIFNR EQ SPACE.
        DELETE ADJACENT DUPLICATES FROM IT_VEND COMPARING LIFNR.
        SELECT LIFNR
               BRSCH
               INTO TABLE IT_LFA1
               FROM LFA1
               FOR ALL ENTRIES IN IT_PAYR
               WHERE LIFNR EQ IT_PAYR-LIFNR.
        IT_CUST[] = IT_PAYR[].
        SORT IT_CUST BY KUNNR.
        DELETE IT_CUST WHERE KUNNR EQ SPACE.
        DELETE ADJACENT DUPLICATES FROM IT_CUST COMPARING KUNNR.
        SELECT KUNNR
               BRSCH
               INTO TABLE IT_KNA1
               FROM KNA1
               FOR ALL ENTRIES IN IT_PAYR
               WHERE KUNNR EQ IT_PAYR-KUNNR.
        SELECT VBLNR
               BELNR
               BUKRS
               GJAHR
               KUNNR
               LIFNR
               ZBUKR
               SHKZG FROM REGUP
        INTO table it_regup
            FOR ALL ENTRIES IN IT_PAYR
        WHERE VBLNR EQ IT_PAYR-VBLNR
         AND VBLNR NE SPACE
          AND XVORL EQ SPACE.
      ENDIF.
    *********If internal table Regup has data then fetch BSEG data where
    ********belnr is equal to REGUP Belnr number**********************
      IF NOT IT_REGUP[] IS INITIAL.
        SELECT BUKRS
               BELNR
               HKONT
               DMBTR
               SHKZG
               GJAHR
               WRBTR
               BUZEI
               EBELN
               EBELP FROM BSEG
        INTO CORRESPONDING FIELDS OF TABLE IT_BSEG
            FOR ALL ENTRIES IN IT_REGUP
        WHERE BUKRS EQ IT_REGUP-BUKRS
          AND BELNR EQ IT_REGUP-BELNR
          AND GJAHR EQ IT_REGUP-GJAHR
          AND SHKZG EQ 'S'.
      ENDIF.
      DATA: V_BVORG LIKE BKPF-BVORG.
      DATA: V_M_BELNR LIKE BSEG-BELNR.
      SORT IT_BSEG BY BELNR.
    ****Looping to Bseg table***********
      LOOP AT IT_BSEG.
    *Check for the GL Account Number is 120990 and credit/debit Indicator
    *SHKZG is S.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = IT_BSEG-HKONT
          IMPORTING
            OUTPUT = IT_BSEG-HKONT.
       SHIFT IT_BSEG-HKONT LEFT DELETING LEADING '0'.
        IF IT_BSEG-HKONT = '120990' AND IT_BSEG-SHKZG = 'S'.    "120990
    ****Fetch BVORG data from BKPF table******
          SELECT BELNR
                 BVORG FROM BKPF INTO TABLE IT_BKPF
          WHERE  BUKRS EQ IT_BSEG-BUKRS
          AND    BELNR EQ IT_BSEG-BELNR
          AND    GJAHR EQ IT_BSEG-GJAHR.
          LOOP AT IT_BKPF INTO WA_BKPF.
            MOVE WA_BKPF-BVORG TO V_BVORG.
    ********Fetch HKONT DMBTR BUKRS from BSEG Table**********************
            SELECT BUKRS
                   BELNR
                   HKONT
                   DMBTR
                   SHKZG
                   GJAHR
                   EBELN
                   EBELP FROM BSEG
                INTO  CORRESPONDING FIELDS OF TABLE IT_BSEG1
                WHERE BUKRS = V_BVORG+10(4)
                  AND BELNR = V_BVORG+0(10)
                  AND GJAHR = IT_BSEG-GJAHR.
            IF IT_BSEG1-BELNR IS NOT INITIAL.
              SELECT EBELN
                     EBELP
                     BELNR FROM BSEG INTO TABLE IT_PO_BSEG
                     FOR ALL ENTRIES IN IT_BSEG1
                                    WHERE BELNR = IT_BSEG1-BELNR
                                    AND   SHKZG = 'S'.
            ENDIF.
          ENDLOOP.
        ELSE.
          SELECT EBELN
           EBELP
           BELNR FROM BSEG INTO TABLE IT_PO_BSEG
                          WHERE BELNR = IT_BSEG-BELNR
                          AND   SHKZG = 'S'.
                       AND EBELN NE SPACE.
    *ENDLOOP.
        ENDIF.
    *****************Checking for Capital and Expenses*********
       SHIFT IT_BSEG-HKONT LEFT DELETING LEADING '0'.
        IF    IT_BSEG-HKONT+0(2) = '15' OR
              IT_BSEG-HKONT+0(2) = '17' OR
              IT_BSEG-HKONT+0(2) = '85'.
          MOVE C_CAPITAL TO IT_BSEG-ACTYP.
        ELSE.
          IF NOT IT_BSEG-HKONT IS INITIAL.
            MOVE C_EXPENSE TO IT_BSEG-ACTYP.
          ENDIF.
        ENDIF.
    ************Conversion exit ALPHA, external->internal******
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            INPUT  = IT_BSEG-HKONT
          IMPORTING
            OUTPUT = IT_BSEG-HKONT.
    ************Include Tax Accounts*************
        IF  IT_BSEG-HKONT IN S_TAXACC.
          MOVE C_TAX TO IT_BSEG-ACTYP.
        ENDIF.
        MODIFY IT_BSEG TRANSPORTING ACTYP.
      ENDLOOP.   " END LOOP FOR BSEG.
      SORT IT_PO_BSEG BY EBELN.
    *********Fetch SAKTO DMBTR BUKRS from MSEG Table********************
      IF NOT IT_PO_BSEG[] IS INITIAL.
        DELETE IT_PO_BSEG WHERE EBELN IS INITIAL.
        SELECT EBELN
               EBELP
               SAKTO
               DMBTR
               BUKRS
               FROM MSEG
               INTO TABLE IT_MSEG
               FOR ALL ENTRIES IN IT_PO_BSEG
               WHERE EBELN = IT_PO_BSEG-EBELN
                 AND EBELP = IT_PO_BSEG-EBELP.
       IF SY-SUBRC = 0.
         DELETE IT_MSEG WHERE EBELN IS INITIAL.
       ENDIF.
      ENDIF.
    ENDFORM.                    " GET_DATA_PAYR
    *&      Form  final_fetch
          text
    -->  p1        text
    <--  p2        text
    FORM FINAL_FETCH.
      LOOP AT IT_PAYR.
       MOVE IT_PAYR-ZBUKR TO IT_FINAL-ZBUKR.
       MOVE IT_PAYR-RZAWE TO IT_FINAL-RZAWE.
       MOVE IT_PAYR-ZNME1 TO IT_FINAL-ZNME1.
       MOVE IT_PAYR-VBLNR TO IT_FINAL-VBLNR.
       MOVE IT_PAYR-WAERS TO IT_FINAL-WAERS.
       MOVE IT_PAYR-ZALDT TO IT_FINAL-ZALDT.
       MOVE IT_PAYR-VOIDD TO IT_FINAL-VOIDD.
       MOVE IT_PAYR-VOIDR TO IT_FINAL-VOIDR.
       MOVE IT_PAYR-BANCD TO IT_FINAL-BANCD.
       MOVE IT_PAYR-CHECT TO IT_FINAL-CHECT.
       MOVE IT_PAYR-RWBTR TO IT_FINAL-RWBTR.
        MOVE-corresponding  IT_PAYR TO IT_FINAL.
        READ TABLE IT_LFA1 WITH KEY LIFNR = IT_PAYR-LIFNR
                                BINARY SEARCH.
        IF SY-SUBRC = 0.
          MOVE IT_LFA1-LIFNR TO IT_FINAL-LIFNR.
          IF NOT IT_LFA1-BRSCH IS INITIAL.
            MOVE IT_LFA1-BRSCH TO V_L_BRSCH.
            OVERLAY V_L_BRSCH WITH '0000'.
            IF V_L_BRSCH CO '1234567890'.
              MOVE 'CUS ' TO V_L_BRSCH.
            ELSE.
              MOVE IT_LFA1-BRSCH TO V_L_BRSCH.
            ENDIF.
            MOVE V_L_BRSCH TO IT_FINAL-BRSCH.
          ENDIF.
        ENDIF.
        READ TABLE IT_KNA1 WITH KEY KUNNR = IT_PAYR-KUNNR
                                BINARY SEARCH.
        IF SY-SUBRC = 0.
          MOVE IT_KNA1-KUNNR TO IT_FINAL-KUNNR.
          IF NOT IT_KNA1-BRSCH IS INITIAL.
            MOVE IT_KNA1-BRSCH TO V_K_BRSCH.
            OVERLAY V_K_BRSCH WITH '0000'.
            IF V_K_BRSCH CO '1234567890'.
              MOVE 'CUS' TO V_K_BRSCH.
            ELSE.
              MOVE IT_KNA1-BRSCH TO V_K_BRSCH.
            ENDIF.
            MOVE V_K_BRSCH TO IT_FINAL-BRSCH.
          ENDIF.
        ENDIF.
       READ TABLE IT_REGUP WITH KEY VBLNR = IT_PAYR-VBLNR.
        LOOP AT IT_REGUP WHERE VBLNR = IT_PAYR-VBLNR.
       IF SY-SUBRC = 0.
          SORT IT_BSEG BY BELNR HKONT ACTYP.
          CLEAR :V_SUM_TAX , V_END_EXP_DMBTR ,V_FINAL_RWBTR.
          LOOP AT IT_BSEG WHERE BUKRS = IT_REGUP-BUKRS
                          AND   BELNR = IT_REGUP-BELNR
                          AND   GJAHR = IT_REGUP-GJAHR
                          AND   SHKZG = 'S'.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            INPUT  = IT_BSEG-HKONT
          IMPORTING
            OUTPUT = IT_BSEG-HKONT.
           SHIFT IT_BSEG-HKONT LEFT DELETING LEADING '0'.
            IF IT_BSEG-HKONT = '120990' AND IT_BSEG-SHKZG = 'S'.
              READ TABLE IT_BKPF WITH KEY BELNR = IT_BSEG-BELNR
                                      BINARY SEARCH.
              IF SY-SUBRC = 0.
                READ TABLE IT_BSEG1 WITH KEY BELNR = V_BVORG+0(10)
                                         BINARY SEARCH.
                IF SY-SUBRC = 0.
                  READ TABLE IT_PO_BSEG WITH KEY BELNR = IT_BSEG1-BELNR.
                  IF SY-SUBRC = 0.
                    READ TABLE IT_MSEG WITH KEY EBELN = IT_PO_BSEG-EBELN.
                    IF SY-SUBRC = 0.
                      MOVE IT_MSEG-SAKTO TO IT_FINAL-HKONT.
                      MOVE IT_MSEG-DMBTR TO IT_FINAL-WRBTR.
                      MOVE IT_MSEG-BUKRS TO IT_FINAL-BUKRS.
                    ELSE.
                      PERFORM GL_OFFSETTING.
                    ENDIF.
                  ELSE.
                    PERFORM GL_OFFSETTING.
                  ENDIF.
                  PERFORM GL_OFFSETTING.
                ELSE.
                  PERFORM GL_OFFSETTING.
                ENDIF.
              ENDIF.
            ELSE.
              PERFORM GL_OFFSETTING.
            ENDIF.
            MOVE IT_FINAL-WRBTR TO V_FINAL_RWBTR.
    **********Check internal table for Taxes***********
            AT END OF ACTYP.
              IF IT_BSEG-ACTYP = 'EXPENSE'.
                V_END_EXP_DMBTR = V_FINAL_RWBTR + V_SUM_TAX.
                IF  V_END_EXP_DMBTR  IS NOT INITIAL.
                  IT_FINAL-WRBTR = V_END_EXP_DMBTR.
                ENDIF.
              ENDIF.
              IF IT_BSEG-ACTYP = 'CAPITAL'.
                V_END_CAP_DMBTR = V_FINAL_RWBTR + V_SUM_TAX.
                IF  V_END_EXP_DMBTR  IS NOT INITIAL.
                  IT_FINAL-WRBTR = V_END_EXP_DMBTR.
                ENDIF.
              ENDIF.
              IF IT_BSEG-ACTYP = 'TAX'.
                SUM.
                V_SUM_TAX = IT_FINAL-WRBTR.
              ENDIF.
            ENDAT.
    ******************End for Tax Logic******************
            IF IT_BSEG-ACTYP = 'TAX'.
              MOVE C_EXPENSE TO IT_FINAL-ACTYP.
            ELSE.
              MOVE IT_BSEG-ACTYP TO IT_FINAL-ACTYP.
            ENDIF.
            IT_FINAL-BELNR = IT_BSEG-BELNR.
            APPEND IT_FINAL.
            CLEAR IT_FINAL.
          ENDLOOP.
          CLEAR V_BVORG.
       CLEAR IT_FINAL.
        ENDLOOP.
      ENDLOOP.
    ENDFORM.                    " final_fetch
    *&      Form  gl_offsetting
          text
    -->  p1        text
    <--  p2        text
    FORM GL_OFFSETTING .
      MOVE IT_BSEG-HKONT TO IT_FINAL-HKONT.
      MOVE IT_BSEG-WRBTR TO IT_FINAL-WRBTR.
      MOVE IT_BSEG-BUKRS TO IT_FINAL-BUKRS.
    ENDFORM.                    " gl_offsetting
    Thanks,
    Anitha

    Also the following code is not performant:
    LOOP AT IT_BKPF INTO WA_BKPF.
    MOVE WA_BKPF-BVORG TO V_BVORG.
    ********Fetch HKONT DMBTR BUKRS from BSEG Table**********************
    SELECT BUKRS
    BELNR
    HKONT
    DMBTR
    SHKZG
    GJAHR
    EBELN
    EBELP FROM BSEG
    INTO CORRESPONDING FIELDS OF TABLE IT_BSEG1
    WHERE BUKRS = V_BVORG+10(4)
    AND BELNR = V_BVORG+0(10)
    AND GJAHR = IT_BSEG-GJAHR.
    IF IT_BSEG1-BELNR IS NOT INITIAL.
    SELECT EBELN
    EBELP
    BELNR FROM BSEG INTO TABLE IT_PO_BSEG
    FOR ALL ENTRIES IN IT_BSEG1
    WHERE BELNR = IT_BSEG1-BELNR
    AND SHKZG = 'S'.
    ENDIF.
    ENDLOOP.
    For every record in it_bkpf you do a select on BSEG. As BSEG is very huge, this will decrease performance dramatically. It's better to use a for all entries of BKPF in your select on BSEG.
    Also try to avoid " into corresponding fields of", as it generates abap overhead. Always store the exact number of fields to the internal table, in the correct order.

  • Improve Performance of Report

    I have a report on the opportunities subject area but the performance for this report is very slow.
    I have included the external id but the output gets timed out always.
    Is there a way to improve the performance for this report?
    Edited by: user636400 on Aug 27, 2008 11:11 PM

    Garima,
    You mentioned that you used the ID field in the report, but you are interested in the sum of values... do you really need to see each record int he report, or an aggregation of data by user? The ID column forces the report to return every record and then perform the aggregation. Without the ID, the query is able to leverage the database server to perform the aggregation rather than the report having to calculate it over the entire dataset.
    Look for columns in your report that are unique at the record level and remove those first, then as Alex said, add them back in one at a time and you will quickly find the column that is causing the report to time out.
    Also, this message recently went out to all primary contacts:
    We have discovered a product defect that enables Oracle CRM On Demand users to submit real-time reports that take longer than 10 minutes to run. When this occurs, there is the potential for performance degradation for all users who are co-located on your Pod.
    A fix for this defect will be rolled-out across our entire fleet over the next eight weeks. After this fix is deployed to your Pod, any real-time report that fails to complete within 10 minutes will be terminated and will result in the display of the following error message: "The user request exceeded the maximum query governing execution time.”
    Note that historical reports are unaffected by this fix. Should you have any real-time reports which exceed the 10 minute window, then you need to set them up as historical reports using Analytics. Alternatively, you can continue to run them as real-time reports but must reduce the amount of data selected using filters, column prompts, dashboard prompts or report filter chains so that the report completes within the 10 minute window.
    Regards,
    Mike L.

Maybe you are looking for