My ALV Report is taking too much time to execute

Hi Friends,
My ALV Report is taking long time for execution(more than 1.5 Hrs).Pls suggest the changes to be done to improove the performance.Its very urgent.Pls respond as soon as possible.
Thanks & Regards,
Sunil Maurya
Report is as follows :
REPORT  YSEG_PROFIT.
TABLES : ZSEGMENT, coep.
TYPE-POOLS: slis.
DATA : BEGIN OF I_COEP OCCURS 0,
         BELNR  LIKE COEP-BELNR,
         BUZEI  LIKE COEP-BUZEI,
         PERIO  LIKE COEP-PERIO,
         WOGBTR LIKE COEP-WOGBTR,
         OBJNR  LIKE COEP-OBJNR,
         KSTAR  LIKE COEP-KSTAR,
         PAOBJNR LIKE COEP-PAOBJNR,
         KVGR5  LIKE ZSEGMENT-KVGR5,
         KAUFN  LIKE CE4KBL1_ACCT-KAUFN,
       END OF I_COEP.
DATA : BEGIN OF I_SECTOR OCCURS 0,
        KVGR5  LIKE ZSEGMENT-KVGR5,
      END OF I_SECTOR.
DATA : BEGIN OF I_AUFK OCCURS 0,
        OBJNR LIKE AUFK-OBJNR,
        PSPEL LIKE AUFK-PSPEL,
        KDAUF LIKE AUFK-KDAUF,
        KDPOS LIKE AUFK-KDPOS,
       END OF I_AUFK.
DATA : BEGIN OF I_VBAKP OCCURS 0,
        OBJNR LIKE VBAP-OBJNR,
        KVGR5 LIKE VBAK-VBELN,
      END OF I_VBAKP.
DATA : BEGIN OF I_PRPS OCCURS 0,
        OBJNR LIKE PRPS-OBJNR,
        PSPHI LIKE PRPS-PSPHI,
        ASTNR LIKE PROJ-ASTNR,
      END OF I_PRPS.
DATA : BEGIN OF I_OUTPUT OCCURS 0,
         KSTAR LIKE COEP-KSTAR,
         MCTXT LIKE CSKU-MCTXT,
         S01   LIKE COEP-WOGBTR,
         S02   LIKE COEP-WOGBTR,
         S03   LIKE COEP-WOGBTR,
         S04   LIKE COEP-WOGBTR,
         S05   LIKE COEP-WOGBTR,
         S06   LIKE COEP-WOGBTR,
         S07   LIKE COEP-WOGBTR,
         S08   LIKE COEP-WOGBTR,
         S09   LIKE COEP-WOGBTR,
         OTH   like COEP-WOGBTR,
         TOTAL LIKE COEP-WOGBTR,
      END OF I_OUTPUT.
DATA : BEGIN OF I_AFVC OCCURS 0,
        OBJNR LIKE AFVC-OBJNR,
        PROJN LIKE AFVC-PROJN,
        PROJ LIKE   PROJ-PSPID,
        PSPNR LIKE PROJ-PSPNR,
       END OF I_AFVC.
DATA : BEGIN OF I_PROJ OCCURS 0,
        PSPNR LIKE PROJ-PSPNR,
        ASTNR LIKE PROJ-ASTNR,
       END OF I_PROJ.
DATA : I_NP LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
DATA : I_NV LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
DATA : I_DETAIL LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
DATA : I_WB LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
DATA : I_PR LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
data : t_fieldcat_sum_rep TYPE slis_t_fieldcat_alv.
data : t_fieldcat_det_rep TYPE slis_t_fieldcat_alv.
DATA: k_fieldcat    TYPE slis_fieldcat_alv.
Declaration by Sunil Maurya for sorting
DATA : GT_SORT TYPE SLIS_T_SORTINFO_ALV,
       GS_SORT TYPE SLIS_SORTINFO_ALV.
DATA : GT_SORT1 TYPE SLIS_T_SORTINFO_ALV,
       GS_SORT1 TYPE SLIS_SORTINFO_ALV.
*data : it_sortcat type slis_t_sortinfo_alv.
*DATA : k_sortcat  like line of it_sortcat.
**data : wa_sort like line of it_sortcat.
Declaration by Sunil Maurya for sorting
constants :  c_user_command TYPE char30 VALUE 'USER_COMMAND'.
*Selection screen
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.
PARAMETER : P_PERIO1   LIKE COEP-PERIO obligatory,
           P_PERIO2   LIKE COEP-PERIO MODIF ID D1,
            P_GJAHR    LIKE COEP-GJAHR obligatory.
select-options :  P_KSTAR  for COEP-KSTAR,
                  P_GSBER  FOR COEP-GSBER.
SELECT-OPTIONS : S_KVGR5 FOR ZSEGMENT-KVGR5 MODIF ID D1.
SELECTION-SCREEN END OF BLOCK A.
INITIALIZATION.
   S_KVGR5-OPTION = 'BT' .
   S_KVGR5-LOW = 'S01'.
   S_KVGR5-HIGH = 'S09'.
   APPEND S_KVGR5.
AT SELECTION-SCREEN OUTPUT.
    LOOP AT SCREEN.
      IF SCREEN-GROUP1 = 'D1'.
         SCREEN-INPUT = '0'.
         MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
START-OF-SELECTION.
  PERFORM GET_SECTORS.
  PERFORM GET_DATA_COEP.
  PERFORM VALIDATE_SECTOR.
  PERFORM GROUP_OUTPUT.
PERFORM BUILD_SORTCAT. " Inserted by by Sunil Maurya for sorting
  PERFORM BUILD_CATLOG.
  PERFORM DISPLAY_OUTPUT.
*&      Form  GET_DATA_COEP
      text
-->  p1        text
<--  p2        text
FORM GET_DATA_COEP .
SELECT BELNR BUZEI PERIO WOGBTR OBJNR KSTAR PAOBJNR
FROM COEP INTO TABLE I_COEP WHERE
        KOKRS = 'KBL' AND
       PERIO >= P_PERIO1 AND
       PERIO <= P_PERIO2 AND
        PERIO = P_PERIO1 AND
        GJAHR = P_GJAHR AND
        KSTAR NE '' AND
        OBJNR NE '' AND
        KSTAR in P_KSTAR AND
        GSBER IN P_GSBER. "AND
       BELNR = '0103991827' .
  SORT I_COEP BY OBJNR.
  DELETE I_COEP WHERE OBJNR+0(2) <> 'VB' AND
                      OBJNR+0(2) <> 'PR' AND
                      OBJNR+0(2) <> 'NV' AND
                      OBJNR+0(2) <> 'NP' AND
                      OBJNR+0(2) <> 'AO'.
  SORT I_COEP BY KSTAR.
  DELETE I_COEP WHERE KSTAR+0(5) <> '00003' AND
                      KSTAR+0(5) <> '00004'.
  LOOP AT I_COEP WHERE OBJNR+0(2) = 'NP'.
    MOVE I_COEP TO I_NP.
    APPEND I_NP.
    CLEAR : I_NP, I_COEP.
  ENDLOOP.
  LOOP AT I_COEP WHERE OBJNR+0(2) = 'NV'.
    MOVE I_COEP TO I_NV.
    APPEND I_NV.
    CLEAR : I_NV, I_COEP.
  ENDLOOP.
  LOOP AT I_COEP WHERE OBJNR+0(2) = 'VB' .
    MOVE I_COEP TO I_WB.
    APPEND I_WB.
    CLEAR : I_WB, I_COEP.
  ENDLOOP.
  LOOP AT I_COEP WHERE OBJNR+0(2) = 'PR' .
    MOVE I_COEP TO I_PR.
    APPEND I_PR.
    CLEAR : I_PR, I_COEP.
  ENDLOOP.
*Inserted by Sunil Maurya for PAOBJNR = "AO....."
Data : ind type sy-tabix.
loop at i_coep where OBJNR+0(2) = 'AO'.
ind = sy-tabix.
select single KAUFN into i_coep-KAUFN from CE4KBL1_ACCT where PAOBJNR =
i_coep-PAOBJNR.
select single KVGR5 into i_coep-kvgr5 from vbak where vbeln =
i_coep-kaufn.
modify i_coep index ind.
clear i_coep.
endloop.
*Inserted by Sunil Maurya for PAOBJNR = "AO....."
*LOOP AT I_COEP WHERE OBJNR+0(2) = 'AO' .
   MOVE I_COEP TO I_AO.
   APPEND I_AO.
   CLEAR : I_AO, I_COEP.
*ENDLOOP.
ENDFORM.                    " GET_DATA_COEP
*&      Form  GET_SECTORS
      text
-->  p1        text
<--  p2        text
FORM GET_SECTORS .
  DATA : L_FR TYPE I,
         L_TO TYPE I.
  DATA :  L_CH1(1).
  LOOP AT S_KVGR5.
    IF S_KVGR5-OPTION = 'EQ'.
      I_SECTOR-KVGR5 = S_KVGR5-LOW.
      APPEND I_SECTOR.
      CLEAR : I_SECTOR.
      CONCATENATE '5' S_KVGR5-LOW+1(2) INTO I_SECTOR-KVGR5.
      APPEND I_SECTOR.
      CLEAR : I_SECTOR.
    ENDIF.
    IF S_KVGR5-OPTION = 'BT'.
      L_FR = S_KVGR5-LOW+1(2).
      L_TO = S_KVGR5-HIGH+1(2).
      WHILE L_FR <= L_TO.
        L_CH1 = L_FR.
        CONCATENATE 'S0' L_CH1 INTO I_SECTOR-KVGR5.
        APPEND I_SECTOR.
        CONCATENATE '50' L_CH1 INTO I_SECTOR-KVGR5.
        APPEND I_SECTOR.
        CLEAR : I_SECTOR, L_CH1.
        L_FR = L_FR + 1.
      ENDWHILE.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " GET_SECTORS
*&      Form  VALIDATE_SECTOR
      text
-->  p1        text
<--  p2        text
FORM VALIDATE_SECTOR .
*get data from AUFK for NP & NV type intab
IF I_NP[] IS NOT INITIAL.
  SELECT OBJNR PSPEL KDAUF KDPOS FROM AUFK
  INTO TABLE I_AUFK
  FOR ALL ENTRIES IN I_NP
  WHERE OBJNR = I_NP-OBJNR.
*Push this data in I_WB where order no exist in AUFK
  LOOP AT I_AUFK WHERE KDAUF NE ''.
    I_WB-OBJNR = I_AUFK-OBJNR.
    APPEND I_WB.
    CLEAR : I_AUFK, I_WB.
  ENDLOOP.
*Push this data in I_PR where order no exist in AUFK
  LOOP AT I_AUFK WHERE PSPEL NE ''.
    I_PR-OBJNR = I_AUFK-OBJNR.
    APPEND I_PR.
    CLEAR : I_AUFK, I_PR.
  ENDLOOP.
ENDIF.
  SELECT BOBJNR AKVGR5 FROM VBAK AS A INNER JOIN VBAP AS B
  ON AVBELN = BVBELN
  INTO TABLE I_VBAKP
  FOR ALL ENTRIES IN I_WB
  WHERE B~VBELN = I_WB-OBJNR+2(10).
  SORT I_VBAKP BY OBJNR.
  SORT I_COEP BY OBJNR.
  LOOP AT I_WB.
    READ TABLE I_VBAKP WITH KEY OBJNR = I_WB-OBJNR.
    IF SY-SUBRC = 0.
      READ TABLE I_SECTOR WITH KEY KVGR5 = I_VBAKP-KVGR5.
      IF SY-SUBRC <> 0.
       DELETE I_COEP WHERE OBJNR = I_WB-OBJNR.
         loop at i_coep where objnr = i_wb-objnr.
              i_coep-kvgr5 = 'OTH'.
              modify i_coep.
              clear : i_coep.
         endloop.
      ELSE.
     READ TABLE I_COEP WITH KEY BELNR = I_WB-BELNR BUZEI = I_WB-BUZEI.
       READ TABLE I_COEP WITH KEY OBJNR = I_WB-OBJNR.
        IF SY-SUBRC = 0.
          I_COEP-KVGR5 = I_SECTOR-KVGR5.
          MODIFY I_COEP INDEX SY-TABIX.
          LOOP AT I_COEP WHERE OBJNR = I_WB-OBJNR.
            I_COEP-KVGR5 = I_SECTOR-KVGR5.
            MODIFY I_COEP.
            CLEAR : I_COEP.
          ENDLOOP.
        ENDIF.
      ENDIF.
    ELSE.
     DELETE I_COEP WHERE OBJNR = I_WB-OBJNR.
         loop at i_coep where objnr = i_wb-objnr.
              i_coep-kvgr5 = 'OTH'.
              modify i_coep.
              clear : i_coep.
         endloop.
    ENDIF.
    CLEAR : I_VBAKP, I_SECTOR, I_COEP.
  ENDLOOP.
IF I_PR[] IS NOT INITIAL.
  SELECT AOBJNR APSPHI B~ASTNR
  FROM PRPS AS A INNER JOIN PROJ AS B
  ON APSPHI = BPSPNR
  INTO TABLE I_PRPS
  FOR ALL ENTRIES IN I_PR
  WHERE A~OBJNR = I_PR-OBJNR.
ENDIF.
  IF I_NV[] IS NOT INITIAL.
    SELECT OBJNR PROJN FROM AFVC INTO TABLE I_AFVC
    FOR ALL ENTRIES IN I_NV
    WHERE OBJNR = I_NV-OBJNR AND
          PROJN <> ''  .
    LOOP AT I_AFVC.
      CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
        EXPORTING
          INPUT         = I_AFVC-PROJN
       IMPORTING
         OUTPUT        = I_AFVC-PROJ
        I_AFVC-PROJ = I_AFVC-PROJ+0(9).
        CALL FUNCTION 'CONVERSION_EXIT_KONPD_INPUT'
          EXPORTING
            INPUT           = I_AFVC-PROJ
         IMPORTING
           OUTPUT          =  I_AFVC-PSPNR.
        MODIFY I_AFVC.
        CLEAR : I_AFVC.
    ENDLOOP.
    SELECT PSPNR ASTNR FROM PROJ INTO TABLE I_PROJ
    FOR ALL ENTRIES IN I_AFVC
    WHERE PSPNR = I_AFVC-PSPNR.
    LOOP AT I_NV.
       I_PRPS-OBJNR = I_NV-OBJNR.
       READ TABLE I_AFVC WITH KEY OBJNR = I_NV-OBJNR.
       IF SY-SUBRC = 0.
         READ TABLE I_PROJ WITH KEY PSPNR = I_AFVC-PSPNR.
         IF SY-SUBRC = 0.
           I_PRPS-ASTNR = I_PROJ-ASTNR.
         ENDIF.
       ENDIF.
        APPEND I_PRPS.
        I_PR-OBJNR = I_NV-OBJNR.
        APPEND I_PR.
        CLEAR : I_NV, I_AFVC, I_PROJ, I_PR.
    ENDLOOP.
  ENDIF.
  SORT I_PRPS BY OBJNR.
  LOOP AT I_PR.
    READ TABLE I_PRPS WITH KEY OBJNR = I_PR-OBJNR.
    IF SY-SUBRC = 0.
      READ TABLE I_SECTOR WITH KEY KVGR5 = I_PRPS-ASTNR+5(3).
      IF SY-SUBRC <> 0.
       DELETE I_COEP WHERE OBJNR = I_PR-OBJNR.
         loop at i_coep where objnr = i_pr-objnr.
              i_coep-kvgr5 = 'OTH'.
              modify i_coep.
              clear : i_coep.
         endloop.
      ELSE.
        READ TABLE I_COEP WITH KEY OBJNR = I_PR-OBJNR.
        IF SY-SUBRC = 0.
          CONCATENATE 'S' I_SECTOR-KVGR5+1(2) INTO I_COEP-KVGR5.
          MODIFY I_COEP INDEX SY-TABIX.
          LOOP AT I_COEP WHERE OBJNR = I_PR-OBJNR.
            CONCATENATE 'S' I_SECTOR-KVGR5+1(2) INTO I_COEP-KVGR5.
            MODIFY I_COEP.
            CLEAR : I_COEP.
          ENDLOOP.
        ENDIF.
      ENDIF.
    ELSE.
     DELETE I_COEP WHERE OBJNR = I_PR-OBJNR.
        loop at i_coep where objnr = i_pr-objnr.
              i_coep-kvgr5 = 'OTH'.
              modify i_coep.
              clear : i_coep.
         endloop.
    ENDIF.
    CLEAR : I_PR, I_PRPS, I_SECTOR, I_COEP.
  ENDLOOP.
ENDFORM.                    " VALIDATE_SECTOR
*&      Form  GROUP_OUTPUT
      text
-->  p1        text
<--  p2        text
FORM GROUP_OUTPUT .
  LOOP AT I_COEP.
    I_OUTPUT-KSTAR = I_COEP-KSTAR.
    IF I_COEP-KVGR5 = 'S01'.
      I_OUTPUT-S01 = I_COEP-WOGBTR.
    ENDIF.
    IF I_COEP-KVGR5 = 'S02'.
      I_OUTPUT-S02 = I_COEP-WOGBTR.
    ENDIF.
    IF I_COEP-KVGR5 = 'S03'.
      I_OUTPUT-S03 = I_COEP-WOGBTR.
    ENDIF.
    IF I_COEP-KVGR5 = 'S04'.
      I_OUTPUT-S04 = I_COEP-WOGBTR.
    ENDIF.
    IF I_COEP-KVGR5 = 'S05'.
      I_OUTPUT-S05 = I_COEP-WOGBTR.
    ENDIF.
    IF I_COEP-KVGR5 = 'S06'.
      I_OUTPUT-S06 = I_COEP-WOGBTR.
    ENDIF.
    IF I_COEP-KVGR5 = 'S07'.
      I_OUTPUT-S07 = I_COEP-WOGBTR.
    ENDIF.
    IF I_COEP-KVGR5 = 'S08'.
      I_OUTPUT-S08 = I_COEP-WOGBTR.
    ENDIF.
    IF I_COEP-KVGR5 = 'S09'.
      I_OUTPUT-S09 = I_COEP-WOGBTR.
    ENDIF.
    IF I_COEP-KVGR5 = 'OTH' OR I_COEP-KVGR5 = ''.
      I_OUTPUT-OTH = I_COEP-WOGBTR.
    ENDIF.
    COLLECT I_OUTPUT.
    CLEAR : I_COEP, I_OUTPUT.
  ENDLOOP.
  LOOP AT I_OUTPUT.
    SELECT SINGLE MCTXT FROM CSKU
    INTO I_OUTPUT-MCTXT
    WHERE KTOPL = 'KBL' AND
          SPRAS = SY-LANGU AND
          KSTAR = I_OUTPUT-KSTAR.
    I_OUTPUT-TOTAL = I_OUTPUT-S01 + I_OUTPUT-S02 + I_OUTPUT-S03
                    + I_OUTPUT-S04 + I_OUTPUT-S05 + I_OUTPUT-S06
                    + I_OUTPUT-S07 + I_OUTPUT-S08 + I_OUTPUT-S09
                    + I_OUTPUT-OTH.
    MODIFY I_OUTPUT.
    CLEAR : I_OUTPUT.
  ENDLOOP.
ENDFORM.                    " GROUP_OUTPUT
*&      Form  BUILD_CATLOG
      text
-->  p1        text
<--  p2        text
FORM BUILD_CATLOG .
  CLEAR k_fieldcat.
  k_fieldcat-fieldname = 'KSTAR'.
  k_fieldcat-seltext_l  = text-002.
  k_fieldcat-hotspot   = 'X'.
  APPEND k_fieldcat TO t_fieldcat_sum_rep.
  CLEAR k_fieldcat.
  k_fieldcat-fieldname = 'MCTXT'.
  k_fieldcat-seltext_l  = text-003.
  k_fieldcat-hotspot   = 'X'.
  APPEND k_fieldcat TO t_fieldcat_sum_rep.
  READ TABLE I_SECTOR WITH KEY KVGR5 = 'S01'.
  IF SY-SUBRC = 0.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'S01'.
    k_fieldcat-seltext_l  = text-004.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
  ENDIF.
  READ TABLE I_SECTOR WITH KEY KVGR5 = 'S02'.
  IF SY-SUBRC = 0.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'S02'.
    k_fieldcat-seltext_l  = text-005.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
  ENDIF.
  READ TABLE I_SECTOR WITH KEY KVGR5 = 'S03'.
  IF SY-SUBRC = 0.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'S03'.
    k_fieldcat-seltext_l  = text-006.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
  ENDIF.
  READ TABLE I_SECTOR WITH KEY KVGR5 = 'S04'.
  IF SY-SUBRC = 0.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'S04'.
    k_fieldcat-seltext_l  = text-007.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
  ENDIF.
  READ TABLE I_SECTOR WITH KEY KVGR5 = 'S05'.
  IF SY-SUBRC = 0.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'S05'.
    k_fieldcat-seltext_l  = text-008.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
  ENDIF.
  READ TABLE I_SECTOR WITH KEY KVGR5 = 'S06'.
  IF SY-SUBRC = 0.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'S06'.
    k_fieldcat-seltext_l  = text-009.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
  ENDIF.
  READ TABLE I_SECTOR WITH KEY KVGR5 = 'S07'.
  IF SY-SUBRC = 0.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'S07'.
    k_fieldcat-seltext_l  = text-010.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
  ENDIF.
  READ TABLE I_SECTOR WITH KEY KVGR5 = 'S08'.
  IF SY-SUBRC = 0.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'S08'.
    k_fieldcat-seltext_l  = text-011.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
  ENDIF.
  READ TABLE I_SECTOR WITH KEY KVGR5 = 'S09'.
  IF SY-SUBRC = 0.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'S09'.
    k_fieldcat-seltext_l  = text-012.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
  ENDIF.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'OTH'.
    k_fieldcat-seltext_l  = text-019.
    k_fieldcat-hotspot   = 'X'.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'TOTAL'.
    k_fieldcat-seltext_l  = text-020.
    k_fieldcat-do_sum    = 'X'. "Statement inserted by Sunil Maurya
    APPEND k_fieldcat TO t_fieldcat_sum_rep.
*=======================================================================
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'BELNR'.
    k_fieldcat-seltext_l  = text-013.
    APPEND k_fieldcat TO t_fieldcat_det_rep.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'BUZEI'.
    k_fieldcat-seltext_l  = text-014.
    APPEND k_fieldcat TO t_fieldcat_det_rep.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'PERIO'.
    k_fieldcat-seltext_l  = text-015.
    APPEND k_fieldcat TO t_fieldcat_det_rep.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'WOGBTR'.
    k_fieldcat-seltext_l  = text-016.
    APPEND k_fieldcat TO t_fieldcat_det_rep.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'OBJNR'.
    k_fieldcat-seltext_l  = text-018.
    APPEND k_fieldcat TO t_fieldcat_det_rep.
    CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'KSTAR'.
    k_fieldcat-seltext_l  = text-002.
    APPEND k_fieldcat TO t_fieldcat_det_rep.
     CLEAR k_fieldcat.
    k_fieldcat-fieldname = 'KVGR5'.
    k_fieldcat-seltext_l  = text-017.
    APPEND k_fieldcat TO t_fieldcat_det_rep.
*==============================================================
       Statements inserted by Sunil Maurya for sorting
CLEAR GS_SORT.
GS_SORT-FIELDNAME = 'KSTAR'.
GS_SORT-SPOS      = 1.
GS_SORT-UP        = 'X'.
APPEND GS_SORT TO GT_SORT.
CLEAR GS_SORT1.
GS_SORT1-FIELDNAME = 'KSTAR'.
GS_SORT1-SPOS      = 1.
GS_SORT1-UP        = 'X'.
GS_SORT1-SUBTOT    = 'X'.
APPEND GS_SORT1 TO GT_SORT1.
*CLEAR GS_SORT1.
*GS_SORT1-FIELDNAME = 'WOGBTR'.
*GS_SORT1-SPOS      = 2.
*GS_SORT1-UP        = 'X'.
*GS_SORT1-SUBTOT    = 'X'.
*APPEND GS_SORT1 TO GT_SORT1.
   FORM build_sortcat.
   k_sortcat-spos = 1.
   k_sortcat-fieldname = 'KSTAR'.
   k_sortcat-up      = 'X'.
  k_sortcat-down      = 'X'.
   APPEND k_sortcat TO it_sortcat.
clear k_sortcat.
   ENDFORM.
   Statements inserted by Sunil Maurya for sorting
ENDFORM.                    " BUILD_CATLOG
*&      Form  DISPLAY_OUTPUT
      text
-->  p1        text
<--  p2        text
FORM DISPLAY_OUTPUT .
  DATA l_repid TYPE syrepid.
  l_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = l_repid
      it_fieldcat             = t_fieldcat_sum_rep
      i_callback_user_command = c_user_command
      i_save                  = 'A'
      it_sort                 = GT_SORT[] "Statements inserted by Sunil
    TABLES
      t_outtab                = I_OUTPUT
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " DISPLAY_OUTPUT
*&      Form  user_command
      text
FORM user_command USING r_ucomm     LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  DATA: l_repid TYPE syrepid.
  l_repid = sy-repid.
  CASE r_ucomm.
    WHEN '&IC1'.
      clear : i_detail. refresh : i_detail.
      LOOP AT I_COEP WHERE KVGR5 = rs_selfield-fieldname.
          MOVE i_coep to i_detail.
          append i_detail.
          clear : i_detail, i_coep.
      endloop.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = l_repid
          it_fieldcat             = t_fieldcat_det_rep
          i_callback_user_command = c_user_command
          i_save                  = 'A'
          it_sort                 = GT_SORT1[] "Inserted by Sunil
        TABLES
          t_outtab                = i_detail
        EXCEPTIONS
          program_error           = 1
          OTHERS                  = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
  ENDCASE.
  ENDFORM.

Run the SE30 with internal tables, then examine the top lines.
see
SE30
The ABAP Runtime Trace (SE30) -  Quick and Easy
Define you tables as sorted tables or use at least binary search, otherwise this sorts are useless
and the nested loop is slow.
SORT I_VBAKP BY OBJNR.
SORT I_COEP BY OBJNR.
LOOP AT I_WB.
READ TABLE I_VBAKP WITH KEY OBJNR = I_WB-OBJNR.
IF SY-SUBRC = 0.
READ TABLE I_SECTOR WITH KEY KVGR5 = I_VBAKP-KVGR5.
IF SY-SUBRC 0.
DELETE I_COEP WHERE OBJNR = I_WB-OBJNR.
loop at i_coep where objnr = i_wb-objnr.
i_coep-kvgr5 = 'OTH'.
modify i_coep.
clear : i_coep.
endloop.
ELSE.
READ TABLE I_COEP WITH KEY BELNR = I_WB-BELNR BUZEI = I_WB-BUZEI.
READ TABLE I_COEP WITH KEY OBJNR = I_WB-OBJNR.
IF SY-SUBRC = 0.
I_COEP-KVGR5 = I_SECTOR-KVGR5.
MODIFY I_COEP INDEX SY-TABIX.
LOOP AT I_COEP WHERE OBJNR = I_WB-OBJNR.
I_COEP-KVGR5 = I_SECTOR-KVGR5.
MODIFY I_COEP.
CLEAR : I_COEP.
ENDLOOP.
This is all very slow.
Read my blog on internal tables:
Measurements on internal tables: Reads and Loops:
Runtimes of  Reads and Loops on Internal Tables
If you really wnat to identify all bugs, then try this
Z_SE30_COMPARE
A Tool to Compare Runtime Measurements: Z_SE30_COMPARE
Nonlinearity Check
Nonlinearity Check Using the Z_SE30_COMPARE
It needs at bit of experience but then it is very powerful!!!
That is also a waste of time, but not a nested loop. You sort and resort the same table,
but the sort is useless the deletes are still sequential on standard tables.
Put all the stuff into ONE loop on I_COEP.
SORT I_COEP BY OBJNR.
DELETE I_COEP WHERE OBJNR+0(2) <> 'VB' AND
OBJNR+0(2) <> 'PR' AND
OBJNR+0(2) <> 'NV' AND
OBJNR+0(2) <> 'NP' AND
OBJNR+0(2) <> 'AO'.
SORT I_COEP BY KSTAR.
DELETE I_COEP WHERE KSTAR+0(5) <> '00003' AND
KSTAR+0(5) <> '00004'.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'NP'.
MOVE I_COEP TO I_NP.
APPEND I_NP.
CLEAR : I_NP, I_COEP.
ENDLOOP.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'NV'.
MOVE I_COEP TO I_NV.
APPEND I_NV.
CLEAR : I_NV, I_COEP.
ENDLOOP.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'VB' .
MOVE I_COEP TO I_WB.
APPEND I_WB.
CLEAR : I_WB, I_COEP.
ENDLOOP.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'PR' .
MOVE I_COEP TO I_PR.
APPEND I_PR.
CLEAR : I_PR, I_COEP.
ENDLOOP.
There is probably more. BBut with the compare tool you can find everything.
Siegfried

Similar Messages

  • Still the report is taking too much time

    Hi All,
    When i refresh a webi report the report is taken too much time to refresh(open).
    In back end i have checked all the connections, contexts, cardinalities, joins, conditions...etc, in webi i have enabled the the check box 'query stripping'.
    but still the report is taking too much time, i didn't identified the problem?
    Please help me on this.
    Thanks in advance..

    Hi Mark,
    How many queries are there--2
    How many rows are returned--- 2000+
    Are all measures defined with aggregates-- Yes
    What is the array fetch size? (I1000 if it isn't already)

  • Report is taking too much time when running from parameter form

    Dear All
    I have developed report in oracle reports bulider 10g. while running it from report builder data is coming very fast.
    But, If it is running from parameter form it is taking too much time to format report in PDF.
    Please suggest any configuration or setting if anybody is having Idea.
    Thanks

    Hi,
    The first thing to check is whether the query is running to completion in TOAD. By default, TOAD just selects the first 50 rows, where as Discoverer must return all the rows before displaying results if a crosstab report is used.
    Secondly, check that the queries and the explain plans are the same in Discoverer and Toad. Although, Discoverer shows the SQL in the SQL inspector this isn't necessarily the SQL actually sent to the database. Use TOAD to interogate the Discoverer session to determine the actual SQL and compare this SQL and explain plan to SQL you ran in TOAD.
    Thirdly, check that the session context is the same in both cases. So check that any custom contexts and the USER_ENV context is the same, and if any security packages or VPD policies are used in the SQL that these have been initialised the same.
    If you still cannot determine the difference then trace both sessions.
    Rod West

  • Owb job taking too much time to execute

    While creating a job in OWB, I am using three tables,a joiner and an aggregator which are all joined through another joiner to load into the final table. The output is coming correct but the sql query generated is very complex having so many sub-queries. So, its taking so much time to execute. Pls help me in reducing the cost.
    -KC

    It depends on what kind of code it generates at each stage. The first step would be collect stats for all the tables used and check the SQL generated using EXPLAIN PLAN. See which sub-query or inline view creates the most cost.
    Generate SQL at various stages and see if you can achieve the same with a different operator.
    The other option would be passing HINTS to the tables selected.
    - K

  • Comma Separated Value Taking too Much Time to Execute

    Hi,
    select ES_DIAGNOSIS_CODE DC from ecg_study WHERE PS_PROTOCOL_ID LIKE 'H6L-MC-LFAN'
    The above query returns comma separated value from the above query.
    I am using the query below to split the comma separated value but the below query is taking lot of time to return the data.
    SELECT
    select DC from (
    with t as ( select ES_DIAGNOSIS_CODE DC from ecg_study WHERE PS_PROTOCOL_ID LIKE 'H6L-MC-LFAN' )
    select REGEXP_SUBSTR (DC, '[^,]+', 1, level) DC from t
    connect by level <= length(regexp_replace(DC,'[^,]*'))+1 )
    Please suggest me is there any alternative way to do this comma separated value.
    Thanks
    Sudhir

    Nikolay Savvinov wrote:
    Hi BluShadow,
    I know that this function is fast with varchar2 strings from several years of using it. With CLOBs one may need something faster, but the OP didn't menion CLOBs.
    Best regards,
    NikolayJust because you perceive it to be fast doesn't mean it's faster than doing it in SQL alone.
    For starters you are context switching from the SQL engine to PL/SQL to call it.
    Then in your code you are doing this...
    select substr(v_str,v_last_break+1, decode(v_nxt_break,0,v_length, v_nxt_break-v_last_break-1)) into v_result from dual;which is context switching back from the PL/SQL engine to the SQL engine for each entry in the string.
    Why people do that I don't know... when PL/SQL alone could do it without a context switch e.g.
    v_result := substr(v_str,v_last_break+1, case when v_nxt_break = 0 then v_length else v_nxt_break-v_last_break-1 end);So, if you still think it's faster than pure SQL (which is what the OP is using), please go ahead and prove it to us.

  • Crystal Report Query taking too much time

    Hi,
    We are developing one report based on SQL Server 2008 in Crystal Report. There are around 50,000 valid combination in database. Based on dynamic filter we need to bring few records in report. Since these filters are at report level, and crystal report is using microcube, it is taking more than 15 mins to execute.
    Is there any option to fetch record based on filter applied at report level.
    Regards
    Baby

    HI,
    First of all , thank you very much.
    Since having cascading prompt, we never thought in this way.
    Details:-
    For our report we have 4 prompts.
    1. category->family-brand (cascading- mandatory)
    2. season(madatory)
    3.collection (madatory)
    4.owner(not mandatory)
    previously we set all these filters at record level.
    Now we set season and collection at query level and brand, owner at report level. Report only query for selected season and collection only.
    Thanks once again.
    Regards
    Baby

  • Logic taking too much time to execute

    Dear Friends,
    My i_bkpf internal table has approx. 3 lakh records another table i_del has 2 lakh records. I have to delete these 2 lakh records of i_del from i_bkpf.
    I'd written the following piece of code for the same but it takes hell lot of time and ultimately I encounter a timeout.
    Kindly have a look at the following code and suggest how can I improve it.
    sort i_bkpf by belnr.
    sort i_del by belnr.
    loop at i_del.
    DELETE I_BKPF WHERE   BELNR  = I_DEL-BELNR  AND
                                           GJAHR = I_DEL-GJAHR AND
                                          BUKRS  = I_DEL-BUKRS.
    ENDLOOP.
    Regards,
    Alok.

    Hi
    do like this
    sort i_bkpf by bukrs belnr gjahr.
    sort i_del by  bukrs belnr gjahr.
    loop at i_del.
    read table  I_BKPF With key BUKRS = I_DEL-BUKRS
                                               BELNR = I_DEL-BELNR
                                                GJAHR = I_DEL-GJAHR
                                              binary search.
    if sy-subrc  = 0.
      delete i_bkpf index sy-tabix.
    endif..
    ENDLOOP.
    <b>Reward points for useful Answers</b>
    Regards
    Anji

  • Taking too much time using BufferedWriter to write to a file

    Hi,
    I'm using the method extractItems() which is given below to write data to a file. This method is taking too much time to execute when the number of records in the enumeration is 10000 and above. To be precise it takes around 70 minutes. The writing pauses intermittently for 20 seconds after writing a few lines and sometimes for much more. Has somebody faced this problem before and if so what could be the problem. This is a very high priority work and it would be really helpful if someone could give me some info on this.
    Thanks in advance.
    public String extractItems() throws InternalServerException{
    try{
                   String extractFileName = getExtractFileName();
                   FileWriter fileWriter = new FileWriter(extractFileName);
                   BufferedWriter bufferWrt = new BufferedWriter(fileWriter);
                   CXBusinessClassIfc editClass = new ExploreClassImpl(className, mdlMgr );
    System.out.println("Before -1");
                   CXPropertyInfoIfc[] propInfo = editClass.getClassPropertyInfo(configName);
    System.out.println("After -1");
              PrintWriter out = new PrintWriter(bufferWrt);
    System.out.println("Before -2");
              TemplateHeaderInfo.printHeaderInfo(propInfo, out, mdlMgr);
    System.out.println("After -2");
    XDItemSet itemSet = getItemsForObjectIds(catalogEditDO.getSelectedItems());
    Enumeration allitems = itemSet.allItems();
    System.out.println("the batch size : " +itemSet.getBatchSize());
    XDForm frm = itemSet.getXDForm();
    XDFormProperty[] props = frm.getXDFormProperties();
    System.out.println("Before -3");
    bufferWrt.newLine();
    long startTime ,startTime1 ,startTime2 ,startTime3;
    startTime = System.currentTimeMillis();
    System.out.println("time here is--before-while : " +startTime);
    while(allitems.hasMoreElements()){
    String aRow = "";
    XDItem item = (XDItem)allitems.nextElement();
    for(int i =0 ; i < props.length; i++){
         String value = item.getStringValue(props);
         if(value == null || value.equalsIgnoreCase("null"))
              value = "";
                             if(i == 0)
                                  aRow = value;
                             else
                                  aRow += ("\t" + value);
    startTime1 = System.currentTimeMillis();
    System.out.println("time here is--before-writing to buffer --new: " +startTime1);
    bufferWrt.write(aRow.toCharArray());
    bufferWrt.flush();//added by rosmon to check extra time taken for extraction//
    bufferWrt.newLine();
    startTime2 = System.currentTimeMillis();
    System.out.println("time here is--after-writing to buffer : " +startTime2);
    startTime3 = System.currentTimeMillis();
    System.out.println("time here is--after-while : " +startTime3);
                   out.close();//added by rosmon to check extra time taken for extraction//
    bufferWrt.close();
    fileWriter.close();
    System.out.println("After -3");
    return extractFileName;
    catch(Exception e){
                   e.printStackTrace();
    throw new InternalServerException(e.getMessage());

    Hi fiontan,
    Thanks a lot for the response!!!
    Yeah!! I kow it's a lotta code, but i thought it'd be more informative if the whole function was quoted.
    I'm in fact using the PrintWriter to wrap the BufferedWriter but am not using the print() method.
    Does it save any time by using the print() method??
    The place where the delay is occurring is the wile loop shown below:
                while(allitems.hasMoreElements()){
                String aRow = "";
                    XDItem item = (XDItem)allitems.nextElement();
                    for(int i =0 ; i < props.length; i++){
                         String value = item.getStringValue(props);
         if(value == null || value.equalsIgnoreCase("null"))
              value = "";
                             if(i == 0)
                                  aRow = value;
                             else
                                  aRow += ("\t" + value);
    startTime1 = System.currentTimeMillis();
    System.out.println("time here is--before-writing to buffer --out.flush() done: " +startTime1);
    bufferWrt.write(aRow.toCharArray());
    out.flush();//added by rosmon to check extra time taken for extraction//
    bufferWrt.flush();//added by rosmon to check extra time taken for extraction//
    bufferWrt.newLine();
    startTime2 = System.currentTimeMillis();
    System.out.println("time here is--after-writing to buffer : " +startTime2);
    What exactly happens is that after a few loops it just seems to sleep for around 20 seconds and then again starts off and ............it goes on till the records are done.
    Please do lemme know if you have any idea as to why this is happening !!!!! This bug is giving me the scare.
    thanks in advance

  • Code  taking too much time to output

    Following  code is taking too much time to execute . (some time giving Time_out )
    ind = sy-tabix.
        SELECT SINGLE * FROM mseg INTO mseg
           WHERE bwart = '102' AND
                 lfbnr = itab-mblnr AND
                 ebeln = itab-ebeln AND
                 ebelp = itab-ebelp.
        IF sy-subrc = 0.
          DELETE itab INDEX ind.
          CONTINUE.
    Is there any other way to write this code to reduce the output time.
    Thanks

    Hi,
    I think you are executing this code in a loop which is causing the problem. The rule is "Never put SELECT statements inside a loop".
    Try to rewrite the code as follows:
    * Outside the loop
    SELECT *
    from MSEG
    into table lt_mseg
    for all entries in itab
    where bwart = '102' AND
    lfbnr = itab-mblnr AND
    ebeln = itab-ebeln AND
    ebelp = itab-ebelp.
    Then inside the loop, do a READ on the internal table
    Loop at itab.
    read table lt_mseg with key bwart = '102'. "plus other conditions
    if sy-subrc ne 0.
    delete itab. "index is automatically determined here from SY-TABIX
    endif.
    endloop.
    I think this should optimise performance. You can check your code's performance using SE30 or ST05.
    Hope this helps! Please revert if you need anything else!!
    Cheers,
    Shailesh.
    Always provide feedback for helpful answers!

  • Report taking too much time in the portal

    Hi freiends,
    we have developed a report on the ods,and we publish the same on the portal.
    the problem is when the users are executing the report at the same time it is taking too much time.because of this the perfoemance is very poor.
    is there any way to sort out this issue,like can we send the report to the individual user's mail id
    so that they can not log in to the portal
    or can we create the same report on the cube.
    what could be the main difference if the report made on the cube or ods?
    please help me
    thanks in advance
    sridath

    Hi
    Try this to improve performance of query
    Find the query Run-time
    where to find the query Run-time ?
    557870 'FAQ BW Query Performance'
    130696 - Performance trace in BW
    This info may be helpful.
    General tips
    Using aggregates and compression.
    Using less and complex cell definitions if possible.
    1. Avoid using too many nav. attr
    2. Avoid RKF and CKF
    3. Many chars in row.
    By using T-codes ST03 or ST03N
    Go to transaction ST03 > switch to expert mode > from left side menu > and there in system load history and distribution for a particular day > check query execution time.
    /people/andreas.vogel/blog/2007/04/08/statistical-records-part-4-how-to-read-st03n-datasets-from-db-in-nw2004
    /people/andreas.vogel/blog/2007/03/16/how-to-read-st03n-datasets-from-db
    Try table rsddstats to get the statistics
    Using cache memory will decrease the loading time of the report.
    Run reporting agent at night and sending results to email. This will ensure use of OLAP cache. So later report execution will retrieve the result faster from the OLAP cache.
    Also try
    1. Use different parameters in ST03 to see the two important parameters aggregation ratio and records transferred to F/E to DB selected.
    2. Use the program SAP_INFOCUBE_DESIGNS (Performance of BW infocubes) to see the aggregation ratio for the cube. If the cube does not appear in the list of this report, try to run RSRV checks on the cube and aggregates.
    Go to SE38 > Run the program SAP_INFOCUBE_DESIGNS
    It will shown dimension Vs Fact tables Size in percent.If you mean speed of queries on a cube as performance metric of cube,measure query runtime.
    3. To check the performance of the aggregates,see the columns valuation and usage in aggregates.
    Open the Aggregates...and observe VALUATION and USAGE columns.
    "---" sign is the valuation of the aggregate. You can say -3 is the valuation of the aggregate design and usage. ++ means that its compression is good and access is also more (in effect, performance is good). If you check its compression ratio, it must be good. -- means the compression ratio is not so good and access is also not so good (performance is not so good).The more is the positives...more is useful the aggregate and more it satisfies the number of queries. The greater the number of minus signs, the worse the evaluation of the aggregate. The larger the number of plus signs, the better the evaluation of the aggregate.
    if "-----" then it means it just an overhead. Aggregate can potentially be deleted and "+++++" means Aggregate is potentially very useful.
    In valuation column,if there are more positive sign it means that the aggregate performance is good and it is useful to have this aggregate.But if it has more negative sign it means we need not better use that aggregate.
    In usage column,we will come to know how far the aggregate has been used in query.
    Thus we can check the performance of the aggregate.
    Refer.
    http://help.sap.com/saphelp_nw70/helpdata/en/b8/23813b310c4a0ee10000000a114084/content.htm
    http://help.sap.com/saphelp_nw70/helpdata/en/60/f0fb411e255f24e10000000a1550b0/frameset.htm
    performance ISSUE related to AGGREGATE
    Note 356732 - Performance Tuning for Queries with Aggregates
    Note 166433 - Options for finding aggregates (find optimal aggregates for an InfoCube)
    4. Run your query in RSRT and run the query in the debug mode. Select "Display Aggregates Found" and "Do not use cache" in the debug mode. This will tell you if it hit any aggregates while running. If it does not show any aggregates, you might want to redesign your aggregates for the query.
    Also your query performance can depend upon criteria and since you have given selection only on one infoprovider...just check if you are selecting huge amount of data in the report
    Check for the query read mode in RSRT.(whether its A,X or H)..advisable read mode is X.
    5. In BI 7 statistics need to be activated for ST03 and BI admin cockpit to work.
    By implementing BW Statistics Business Content - you need to install, feed data and through ready made reports which for analysis.
    http://help.sap.com/saphelp_nw70/helpdata/en/26/4bc0417951d117e10000000a155106/frameset.htm
    /people/vikash.agrawal/blog/2006/04/17/query-performance-150-is-aggregates-the-way-out-for-me
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/1955ba90-0201-0010-d3aa-8b2a4ef6bbb2
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/ce7fb368-0601-0010-64ba-fadc985a1f94
    http://help.sap.com/saphelp_nw04/helpdata/en/c1/0dbf65e04311d286d6006008b32e84/frameset.htm
    You can go to T-Code DB20 which gives you all the performance related information like
    Partitions
    Databases
    Schemas
    Buffer Pools
    Tablespaces etc
    use tool RSDDK_CHECK_AGGREGATE in se38 to check for the corrupt aggregates
    If aggregates contain incorrect data, you must regenerate them.
    202469 - Using aggregate check tool
    Note 646402 - Programs for checking aggregates (as of BW 3.0B SP15)
    You can find out whether an aggregate is usefull or useless you can find out through a proccess of checking the tables RSDDSTATAGGRDEF*
    Run the query in RSRT with statistics execute and come back you will get STATUID... copy this and check in the table...
    This gives you exactly which infoobjects it's hitting, if any one of the object is missing it's useless aggregate.
    6
    Check SE11 > table RSDDAGGRDIR . You can find the last callup in the table.
    Generate Report in RSRT
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/cccad390-0201-0010-5093-fd9ec8157802
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/4c0ab590-0201-0010-bd9a-8332d8b4f09c
    Business Intelligence Journal Improving Query Performance in Data Warehouses
    http://www.tdwi.org/Publications/BIJournal/display.aspx?ID=7891
    Achieving BI Query Performance Building Business Intelligence
    http://www.dmreview.com/issues/20051001/1038109-1.html
    Assign points if useful
    Cheers
    SM

  • Taking too much time (1min) to connect to database

    Hi,
    I have oracle 10.2 and 10g application server.
    Its taking too much time to connect to database through application (on browser). The connection through sqlplus is fine.
    Please share your experience.
    Regards,
    Naseer

    Dear AnaTech,
    i am going to ask not related this question which already you answered i am going to ask you about that how to connect forms6i and Developer 10g with OracleAS.
    i have installed and working Developer Suite 10g Ver. 10.1.2 and also Form Builder 6i. On my other machine i installed and working Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 and also on the database machine i installed Oracle Enterprise Manager 10g Application Server Control 10.1.2.0.2.
    my database conectivity with Developer suite Forms and Reports and also Form6i and Reports6i are working fine. no problem.
    now the 1 question of mine is that when i try to run form6i through run from web i got this error. FRM-99999: error 18121 occured see the release not.
    this and the main question of mine is this that how can i control my OracleAS 10g with forms because basically the functionality of OracleAS is Mid-Tier but i am not utilizing the Mid-tier i am using here Two-tier Envrionment even i installed 3-Tier Environment so tell me how i utilize it with 3-Tier..
    I hope you don't mind that i ask this question here and also if you give me you email then we can discuss this in detail and i can be helpful of your great expertise. i also know and utilize my 3-tier real envrionment.
    Waiting for your great response.
    Regards,
    K.J.J.C

  • Full DTP taking too much time to load

    Hi All ,
    I am facing an issue where a DTP is taking too much time to load data from DSO to Cube via PC and also while manually running it.
    There are 6 such similar DTP's which load data for different countries(different DSO's and Cubes as source and target respectively) for last 7 days based on GI Date. All the DTP's are pulling almost same no. of records and finish within 25-30 min. But only one DTP takes around 3 hours. The problem started couple of days back.
    I have change the Parallel processes from 3->4->5 and packet size from 50,000->10,000->1.00.000 but no improvement. Also want to mention that all the source DSO's and target Cubes have the same structure. All the transformations have Field Routines and End Routines.
    Can you all please share some pointers which can help.
    Thanks
    Prateek

    HI Raman ,
    This is what I get when I check the report. Can this be causing issues as 2 rows have % >= 100
    ETVC0006           /BIC/DETVC00069     rows:      1.484    ratio:          0  %
    ETVC0006           /BIC/DETVC0006C     rows: 15.059.600    ratio:        103  %
    ETVC0006           /BIC/DETVC0006D     rows:        242    ratio:          0  %
    ETVC0006           /BIC/DETVC0006P     rows:         66    ratio:          0  %
    ETVC0006           /BIC/DETVC0006T     rows:        156    ratio:          0  %
    ETVC0006           /BIC/DETVC0006U     rows:          2    ratio:          0  %
    ETVC0006           /BIC/EETVC0006      rows: 14.680.700    ratio:        100  %
    ETVC0006           /BIC/FETVC0006      rows:          0    ratio:          0  %
    ETVC0007           rows: 13.939.200    density:              0,0  %

  • Procedure Taking too Much Time

    Hi Guys,
    I have package which contains number of function and procedure which is link with Oracle 's standard report called Prodction Shortage Report , it is taking too much time and even now days it is not finsih after three days.
    So I am looking for some tuning steps which I can follow for all the queries one by one, I tried touse Explain Plan what it is showing not too much difference after movement of column from one location to another etc , even I have updated the existing indexes and also created new indexes.
    Thanks
    Shishu Paul

    Shishu,
    Is this report part of an Oracle product such as the Enterprise Business Suite (EBS)? If so, I recommend you create a Service Request (SR) with Oracle and have them tune the report. Doing your own tuning could cause you some support problems later on.
    Just my two cents...
    Craig

  • Client import taking too much time

    hi all,
    i am importing a client , i it has complete copy table 19,803 of 19,803 but for last four hours its status is processing
    scc3
    Target Client           650
    Copy Type               Client Import Post-Proc
    Profile                 SAP_CUST
    Status                  Processing...
    User                    SAP*
    Start on                24.05.2009 / 15:08:03
    Last Entry on           24.05.2009 / 15:36:25
    Current Action:         Post Processing
    -  Last Exit Program    RGBCFL01
    Transport Requests
    - Client-Specific       PRDKT00004
    - Texts                 PRDKX00004
    Statistics for this Run
    - No. of Tables             19803 of     19803
    - Deleted Lines                 7
    - Copied Lines                  0
    sm50
    1 DIA 542           Running Yes             SAPLTHFB 650 SAP*     
    7 BGD 4172   Running Yes 11479  RGTBGD23 650 SAP* Sequential Read     D010INC
    sm66
    Server  No. Type PID Status  Reason Sem Start Error CPU Time   User Report   Action          Table
    prdsap_PRD_00  7  BTC 4172 Running   Yes    11711 SAP* RGTBGD23 Sequential Read D010INC
    plz guide me why it is taking too much time , while it has finished most of the things
    best regard
    Khan

    The import is in post processing. It digs through all the documents and adapts them to the new client. Most of the tables in the application area have a "MANDT" (= client) field which needs to be changed. Depending of the size of the client this can take a huge amount of time.
    You can try to improve the speed by updating the table statistics for table D010INC.
    Markus

  • STAD Report generation takes too Much time

    Dear Experts,
    In our Production system if we execute the STAD report for10 minutes to get the business transaction data for a single user or multiple users. Its taking too much time upto 500 sec sometimes throwing DUMP due to time out.
    We have the issue from the begin itself.
    What are the checks needs to done and how to fix the issue ?
    Is that possible to schedule the same in Background to get the output and how ?
    System Info:
    ECC6.0 EHP4, Kernel Release 701 Support Pck - 55.
    Windows MSCS Clustering.
    SAPOSCOL on both instance.
    Thanks,
    Jai

    Hi,
    If the load of your system is very high, 10 minutes is much too long for STAD.
    The solution that I use is to display shorter intervals (maximum 3 minutes in my most loaded system).
    As rdisp/max_wprun_time is a dynamic parameter, a possible workaround is to increase its value during the time necessary to run STAD.
    Regards,
    Olivier

Maybe you are looking for

  • Error in Phone Software Update page ???

    When looking for a software-update for 6131 -> Update over-the-air Step 2/6 says Back-up data ... to memory card ... I might be blind, but I didn't see a backup option on my 6131. Did anyone see? Perhaps it's an option for S60 phones!? Greetings Carz

  • Delivery vs Invoice in Sales A/R  --- Return vs A/R Credit Memo

    1. What is the difference & relation between Delivery in Sales-A/R vs Invoice in Sales-A/R? They both similar. Does it mean we can make Delivery only and skip Invoice? According to definition: 'The Delivery is a legally binding document indicating th

  • YAHOO CALENDAR NOT SYNCING WITH IOS5

    After upgrading to IOS5, I cannot get my phone to sync with Yahoo's calendar. The e-mail and contacts are fine, but I've tried every which way I can think of, including using the cloud, and can not get it to work. It was working fine with the old ope

  • Weird BLACK FRAMES ...

    Folks, I'm suddenly getting these weird black frames around every selected item or window. It first emerged when I was working in Photoshop, and suddenly a large black frame covered part of the monitor (emerging off the screen). This black frame woul

  • Can i download and buy elements 11, and still get the cd shipped to me?

    hi there, i downloaded the trial version of photoshop 11, it quit after 24 hours........... i am happy to buy it though...... can i download and pay for it, and get a serial................... and then tomorrow when the office opens, i can call them