Sql code taking long time

Hello Everyone,
In Oracle 10g,I have table emp_history and column name hired_date,which has the
values in the following format 7/8/2011 12:55:55 PM
('mm/dd/yyyy hh12:mi:ss AM') ana this table has more than 50 thousand records,
when I tried to get the employees whose hired_date between 01/04/2011 and 30/04/2011
its taking long time(16 to 19 minutes) just to fetch 845 records.
I tried the following codes,
select * from emp_history where to_char(hired_date,'mmddyyyy') between
04012011' and 04302011' and ...;and
  select * from emp_history where to_char(hired_date,'ddmmyyyy') between
'01042011' and 30042011' and ....It having some other where condition also but If I commented the above where condition alone its working fine,
If I include i taking long time.
Can anyone tell me how to modify the code.
Thank you.
Edited by: Gurujothi on Aug 3, 2012 4:21 AM

Do you have an index on HIRED_DATE column? If yes then your index will not be considered.
You need to write your query like this.
select *
  from emp_history
where hired_date between to_date('04012011', 'mmddyyyy') and (to_date('04302011', 'mmddyyyy') + 1) - interval '1' second
   and ...;Use of function on a column makes that column index unusable.
Further to assist you please read the following link and post the required details
{message:id=9360003}

Similar Messages

  • Sql query taking long time

    the below query is taking very long time.
    select /*+ PARALLEL(a,8) PARALLEL(b,8) */ a.personid,a.winning_id, b.questionid from
    winning_id_cleanup a , rm_personquestion b
    where a.personid = b.personid and (a.winning_id,b.questionid) not in
    (select /*+ PARALLEL(c,8) */ c.personid,c.questionid from rm_personquestion c where c.personid=a.winning_id);
    where the rm_personquestion table is having 45 million rows and winning_id_cleanup is having 1 million rows.
    please tell me how to tune this query?

    Please post u'r query at PL/SQL
    It's not for SQL and PL/SQL

  • SQL Query taking longer time as seen from Trace file

    Below Query Execution timings:
    Any help will be benefitial as its affecting business needs.
    SELECT MATERIAL_DETAIL_ID
    FROM
    GME_MATERIAL_DETAILS WHERE BATCH_ID = :B1 FOR UPDATE OF ACTUAL_QTY NOWAIT
    call count cpu elapsed disk query current rows
    Parse 1 0.00 0.70 0 0 0 0
    Execute 2256 8100.00 24033.51 627 12298 31739 0
    Fetch 2256 900.00 949.82 0 12187 0 30547
    total 4513 9000.00 24984.03 627 24485 31739 30547
    Thanks and Regards

    Thanks Buddy.
    Data Collected from Trace file:
    SELECT STEP_CLOSE_DATE
    FROM
    GME_BATCH_STEPS WHERE BATCH_ID
    IN (SELECT
    DISTINCT BATCH_ID FROM
    GME_MATERIAL_DETAILS START WITH BATCH_ID = :B2 CONNECT BY PRIOR PHANTOM_ID=BATCH_ID)
    AND NVL(STEP_CLOSE_DATE, :B1) > :B1
    call count cpu elapsed disk query current rows
    Parse 1 0.00 0.54 0 0 0 0
    Execute 2256 800.00 1120.32 0 0 0 0
    Fetch 2256 9100.00 13551.45 396 77718 0 0
    total 4513 9900.00 14672.31 396 77718 0 0
    Misses in library cache during parse: 0
    Optimizer goal: CHOOSE
    Parsing user id: 66 (recursive depth: 1)
    Rows Row Source Operation
    0 TABLE ACCESS BY INDEX ROWID GME_BATCH_STEPS
    13160 NESTED LOOPS
    6518 VIEW
    6518 SORT UNIQUE
    53736 CONNECT BY WITH FILTERING
    30547 NESTED LOOPS
    30547 INDEX RANGE SCAN GME_MATERIAL_DETAILS_U1 (object id 146151)
    30547 TABLE ACCESS BY USER ROWID GME_MATERIAL_DETAILS
    23189 NESTED LOOPS
    53736 BUFFER SORT
    53736 CONNECT BY PUMP
    23189 TABLE ACCESS BY INDEX ROWID GME_MATERIAL_DETAILS
    23189 INDEX RANGE SCAN GME_MATERIAL_DETAILS_U1 (object id 146151)
    4386 INDEX RANGE SCAN GME_BATCH_STEPS_U1 (object id 146144)
    In the Package there are lots of SQL Statements using CONNECT BY CLAUSE.
    Does the use of CONNECT BY Clause degrades performance?
    As you can see the Rows Section is 0 but the Query and elapsed time is taking longer
    Regards

  • SQL execution taking long time

    All,
    I have a read only VO and i have configured the VO to print the SQL getting executed along with bind parameters. The SQL is taking a lot of time to execute when running in web. When i run the generated SQL in toad it takes close to 30.6 seconds, however on the page it is taking closed to 5 mins. In the logs i can see the sql getting printed, then the bind variable and then it stops for around 5-8 mins then proceeds.
    Also my query fetches a max of 10 records in worst case else 2-3 always so i guess setting of range size is not going to work.
    Any idea as to what is wrong in my case.
    thnks
    Jdev 11.1.1.5

    Hi,
    Do your query use index, if so then check that your binds have the same data type as columns in where clause and you don't do like
    where upper(column_name) = :upper(bind1)

  • SQL Query taking long time....its very urgent !!!

    Hi All,
    Can any body help me out to tune this query... its cost is 62,900.. and thete is full table scan on ap_invoices_all...
    For one invoice ID its taking 20 sccs...
    SELECT /*+ INDEX  ( i2 AP_INVOICES_N8 )  INDEX  ( i1 AP_INVOICES_N8 )   */ DISTINCT ou.name operating_unit,
    NVL(SUBSTR(UPPER(TRANSLATE(i1.invoice_num,'a!@#\/-_$%^&*.','a')),
    1,:P_MATCH_LENGTH),'NomatchKluDge1') match_string,
    UPPER(v.vendor_name) upper_supplier_name,
    i1.invoice_num invoice_number,
    to_char(i1.invoice_date,'DD-MON-YYYY') invoice_date,
    --i1.invoice_date invoice_date,
    NVL(i1.invoice_amount,0) invoice_amount,
    i1.invoice_currency_code currency_code,
    v.segment1 supplier_number,
    v.vendor_name supplier_name,
    ssa.vendor_site_code supplier_code,
    lc.displayed_field invoice_type,
    poh.segment1 po_number,
    (select min(por.release_num)
    from po_releases_all por
    where poh.po_header_id = por.po_header_id) release_num,
    gcc.segment1 location,
    i1.payment_method_code payment_method_code,
    DECODE(LENGTH(TO_CHAR(aca.check_number)),9,aca.check_number,aca.doc_sequence_value) payment_doc_number
    FROM ap_invoices_all i1,
    ap_invoices_all i2,
    ap_suppliers v ,
    ap_supplier_sites_all ssa,
    ap_lookup_codes lc,
    /* (select distinct pha.SEGMENT1, i.PO_HEADER_ID, i.INVOICE_ID
    from ap_invoice_lines_all i
    ,po_headers_all pha
    where pha.PO_HEADER_ID = i.PO_HEADER_ID) poh, */
    po_headers_all poh,
    ap_invoice_lines_all ail,
    ap_invoice_distributions_all aida,
    gl_code_combinations gcc,
    ap_checks_all aca,
    ap_invoice_payments_all ipa,
    hr_all_organization_units ou
    WHERE i1.invoice_id <> i2.invoice_id
    AND NVL(substr(upper(translate(i1.invoice_num,'a!@#\/-_$%^&*.','a')),
    1,:P_MATCH_LENGTH),'NomatchKluDge1')
    = NVL(substr(upper(translate(i2.invoice_num,'a!@#\/-_$%^&*.','a')),
    1,:P_MATCH_LENGTH),'abcdefghijklm')
    --AND i1.creation_date between :p_creation_date_from  and  :p_creation_date_to
    AND i1.cancelled_date IS NULL
    --AND i2.creation_date between  :p_creation_date_from  and  :p_creation_date_to
    AND i2.cancelled_date IS NULL
    AND i1.invoice_amount = nvl(i2.invoice_amount,-1)
    --AND i1.vendor_id      =  i2.vendor_id
    AND i1.vendor_id+0 = i2.vendor_id+0
    AND nvl(i1.vendor_id,-1) = v.vendor_id
    AND i1.invoice_id = aida.invoice_id
    AND aida.distribution_line_number = 1
    AND gcc.code_combination_id = aida.dist_code_combination_id
    AND     lc.lookup_code (+)      = i1.invoice_type_lookup_code
    AND     lc.lookup_type (+)      = 'INVOICE TYPE'
    AND i1.vendor_site_id = ssa.vendor_site_id(+)
    --AND i1.invoice_id = poh.invoice_id (+)
    AND i1.invoice_id = ail.invoice_id
    --AND ail.line_number = 1                                       
    AND aida.INVOICE_LINE_NUMBER = 1
    --AND ail.po_header_id = poh.po_header_id (+)  
    AND ail.po_header_id = poh.po_header_id
    AND ail.INVOICE_ID = aida.INVOICE_ID
    and ail.LINE_NUMBER = aida.INVOICE_LINE_NUMBER
    AND i1.invoice_id = ipa.invoice_id(+)
    AND ipa.check_id = aca.check_id(+)
    AND i1.org_id = ou.organization_id
    and i1.invoice_id = 123456
    ORDER BY upper(v.vendor_name),
    NVL(substr(upper(translate(i1.invoice_num,'a!@#\/-_$%^&*.','a')),
    1,:P_MATCH_LENGTH),'abcdefghijklm'),
    upper(i1.invoice_num);
    Regards
    --Harry                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    I tried to rewrite this query to format it into something more readable. Since I can't test, this may have introduced syntax errors:
    SELECT /*+ INDEX  ( i2 AP_INVOICES_N8 )  INDEX  ( i1 AP_INVOICES_N8 )   */
           DISTINCT ou.name                             operating_unit,
           NVL(SUBSTR(UPPER(TRANSLATE(i1.invoice_num,
                            'a!@#\/-_$%^&*.','a')),
               1,:P_MATCH_LENGTH),'NomatchKluDge1')     match_string,
           UPPER(v.vendor_name)                         upper_supplier_name,
           i1.invoice_num                               invoice_number,
           to_char(i1.invoice_date,'DD-MON-YYYY')       invoice_date,
           NVL(i1.invoice_amount,0)                     invoice_amount,
           i1.invoice_currency_code                     currency_code,
           v.segment1                                   supplier_number,
           v.vendor_name                                supplier_name,
           ssa.vendor_site_code                         supplier_code,
           lc.displayed_field                           invoice_type,
           poh.segment1                                 po_number,
           (SELECT MIN(por.release_num)
            FROM   po_releases_all por
            WHERE  poh.po_header_id = por.po_header_id) release_num,
           gcc.segment1                                 location,
           i1.payment_method_code                       payment_method_code,
           DECODE(LENGTH(TO_CHAR(aca.check_number)),9,
              aca.check_number,aca.doc_sequence_value)  payment_doc_number
    FROM   ap_invoices_all i1
           INNER JOIN ap_invoices_all i2
             ON   i1.invoice_id = i2.invoice_id
             AND  i1.invoice_amount = NVL(i2.invoice_amount,-1)
             AND  i1.vendor_id+0 = i2.vendor_id+0
           INNER JOIN ap_suppliers v
             ON    NVL(i1.vendor_id,-1) = v.vendor_id
           INNER JOIN ap_lookup_codes lc,
             ON lc.lookup_code  = i1.invoice_type_lookup_code
           INNER JOIN ap_invoice_distributions_all aida
              ON    i1.invoice_id = aida.invoice_id
           INNER JOIN gl_code_combinations gcc
             ON     gcc.code_combination_id = aida.dist_code_combination_id
           INNER JOIN ap_invoice_lines_all ail
             ON     i1.invoice_id = ail.invoice_id
           INNER JOIN po_headers_all poh
             ON     ail.po_header_id = poh.po_header_id
           INNER JOIN hr_all_organization_units ou
             ON     i1.org_id = ou.organization_id
           LEFT JOIN (ap_invoice_payments_all ipa
                       INNER JOIN ap_checks_all aca
                         ON ipa.check_id = aca.check_id)
             ON     i1.invoice_id = ipa.invoice_id
           LEFT JOIN ap_supplier_sites_all ssa,
             ON i1.vendor_site_id = ssa.vendor_site_id
    WHERE  NVL(substr(upper(translate(i1.invoice_num,'a!@#\/-_%^&*.','a')),
                1,:P_MATCH_LENGTH),'NomatchKluDge1')
               = NVL(substr(upper(translate(i2.invoice_num,'a!@#\/-_$%^&*.','a')),
                1,:P_MATCH_LENGTH),'abcdefghijklm')
    AND    i1.cancelled_date IS NULL
    AND    i2.cancelled_date IS NULL
    AND    aida.distribution_line_number = 1
    AND    aida.INVOICE_LINE_NUMBER = 1
    AND    ail.LINE_NUMBER = 1
    AND    lc.lookup_type  = 'INVOICE TYPE'
    AND    i1.invoice_id = 123456
    ORDER BY upper(v.vendor_name),
             NVL(substr(upper(translate(i1.invoice_num,'a!@#\/-_$%^&*.','a')),
              1,:P_MATCH_LENGTH),'abcdefghijklm'),
             upper(i1.invoice_num);I dislike queries in the SELECT clause like the one you have to get RELEASE_NUM. One thing in particular that I see about this on is that this appears to be the only place that anything from the PO_HEADERS_ALL table is used. PO_HEADERS_ALL is only in the query pulled in by the AP_INVOICE_LINES_ALL table. Since the JOIN column used for that is PO_HEADER_ID and that's the same one used in the SELECT clause query, do you really even need the PO_HEADERS_ALL table? This would remove one join at least.
    Your query had "AND aida.INVOICE_LINE_NUMBER = 1" and "AND ail.LINE_NUMBER = aida.INVOICE_LINE_NUMBER". The second needn't reference AIDA, I changed it to "AND ail.LINE_NUMBER = 1". It likely won't make a performance impact, but the SQL is clearer.

  • Hi in my sql query i applied like condition (like '%TEST') but it is taking long time

    Hi in my sql query i applied like condition (like '%TEST') but it is taking long time. I applied indexes also,but still i'm facing the same problem. In my databse nearly 2,00,000 records their.

    Hi Manikandan
    Is there a difference in performance between running the query in BEx and WebI?
    have you aggregates in place on the BEx side of things?
    When you say its taking too long to open the report, have you a variable screen coming up for the report and is that what is taking the time or is it the report execution.
    With regards
    Gill

  • Report Taking long time in QA system

    Gurus,
    I have developed a report which works fine in dev.Though in QA system its performance is not okay.Please go through th ecode and help me through.
    TABLES: REGUH,BSAK,BSIS,LFA1,LFB1,BSAS.
    ****    Internal table declaration starts.
    ***    To Store Vendor clearing Document.
    ***    Internal table for credit card sub total.
    DATA : BEGIN OF I_BSAK OCCURS 0,
           XBLNR LIKE BSAK-XBLNR,
           LIFNR LIKE REGUH-LIFNR,
           PRCTR LIKE BSEG-PRCTR,
           NAME1 LIKE LFA1-NAME1,
           AUGDT LIKE BSAK-AUGDT,
           AUGBL LIKE BSAK-AUGBL,
           XBLNR1 LIKE BSAK-XBLNR,
           GJAHR LIKE BSAK-GJAHR,
           BELNR LIKE BSAK-BELNR,
           BLDAT LIKE BSAK-BLDAT,
           BLART LIKE BSAK-BLART,
           SHKZG LIKE BSAK-SHKZG,
           DMBTR LIKE BSAK-DMBTR,
           AUGGJ LIKE BSAK-AUGGJ,
           CPUDT LIKE BSAK-CPUDT,
           LAUFD LIKE REGUH-LAUFD,
           KTOKK LIKE LFA1-KTOKK,
           RWBTR LIKE REGUH-RWBTR,
           VBLNR LIKE REGUH-VBLNR,
           HKONT LIKE BSEG-HKONT,
           END OF I_BSAK.
    ***    Internal table for Vendor sub total.
    DATA : BEGIN OF I_BSAK_LIFNR OCCURS 0,
           LIFNR LIKE REGUH-LIFNR,
           XBLNR LIKE BSAK-XBLNR,
           PRCTR LIKE BSEG-PRCTR,
           NAME1 LIKE LFA1-NAME1,
           AUGDT LIKE BSAK-AUGDT,
           AUGBL LIKE BSAK-AUGBL,
           XBLNR1 LIKE BSAK-XBLNR,
           GJAHR LIKE BSAK-GJAHR,
           BELNR LIKE BSAK-BELNR,
           BLDAT LIKE BSAK-BLDAT,
           BLART LIKE BSAK-BLART,
           SHKZG LIKE BSAK-SHKZG,
           DMBTR LIKE BSAK-DMBTR,
           AUGGJ LIKE BSAK-AUGGJ,
           CPUDT LIKE BSAK-CPUDT,
           LAUFD LIKE REGUH-LAUFD,
           KTOKK LIKE LFA1-KTOKK,
           RWBTR LIKE REGUH-RWBTR,
           VBLNR LIKE REGUH-VBLNR,
           HKONT LIKE BSEG-HKONT,
           END OF I_BSAK_LIFNR.
    ***    Internal table for Profit center sub total.
    DATA : BEGIN OF I_BSAK_PRCTR OCCURS 0,
           PRCTR LIKE BSEG-PRCTR,
           BELNR LIKE BSAK-BELNR,
           GJAHR LIKE BSAK-GJAHR,
           LIFNR LIKE REGUH-LIFNR,
           XBLNR LIKE BSAK-XBLNR,
           HKONT LIKE BSEG-HKONT,
           NAME1 LIKE LFA1-NAME1,
           AUGDT LIKE BSAK-AUGDT,
           AUGBL LIKE BSAK-AUGBL,
           XBLNR1 LIKE BSAK-XBLNR,
           BLDAT LIKE BSAK-BLDAT,
           BLART LIKE BSAK-BLART,
           SHKZG LIKE BSAK-SHKZG,
           DMBTR LIKE BSAK-DMBTR,
           AUGGJ LIKE BSAK-AUGGJ,
           CPUDT LIKE BSAK-CPUDT,
           LAUFD LIKE REGUH-LAUFD,
           KTOKK LIKE LFA1-KTOKK,
           RWBTR LIKE REGUH-RWBTR,
           VBLNR LIKE REGUH-VBLNR,
           END OF I_BSAK_PRCTR.
    ***  Work area for sub totals.
    DATA: WA LIKE I_BSAK.
    DATA : I_BSAK_INIT LIKE I_BSAK OCCURS 0 WITH HEADER LINE.
    ***    To store line item.
    DATA : BEGIN OF I_BSEG OCCURS 0,
           BELNR LIKE BSEG-BELNR,
           GJAHR LIKE BSEG-GJAHR,
           BUZEI LIKE BSEG-BUZEI,
           HKONT LIKE BSEG-HKONT,
           SHKZG LIKE BSEG-SHKZG,
           DMBTR LIKE BSEG-DMBTR,
           PRCTR LIKE BSEG-PRCTR,
           LIFNR LIKE REGUH-LIFNR,
           AUGDT LIKE BSAK-AUGDT,
           AUGBL LIKE BSAK-AUGBL,
           XBLNR LIKE BSAK-XBLNR,
           XBLNR1 LIKE BSAK-XBLNR,
           BLDAT LIKE BSAK-BLDAT,
           BLART LIKE BSAK-BLART,
           NAME1 LIKE LFA1-NAME1,
           END OF I_BSEG.
    DATA : BEGIN OF I_BSEG_COPY OCCURS 0,
          PRCTR LIKE BSEG-PRCTR,
          BELNR LIKE BSEG-BELNR,
          GJAHR LIKE BSEG-GJAHR,
          BUZEI LIKE BSEG-BUZEI,
          HKONT LIKE BSEG-HKONT,
          SHKZG LIKE BSEG-SHKZG,
          DMBTR LIKE BSEG-DMBTR,
          LIFNR LIKE REGUH-LIFNR,
          AUGDT LIKE BSAK-AUGDT,
          AUGBL LIKE BSAK-AUGBL,
          XBLNR LIKE BSAK-XBLNR,
          XBLNR1 LIKE BSAK-XBLNR,
          BLDAT LIKE BSAK-BLDAT,
          BLART LIKE BSAK-BLART,
          NAME1 LIKE LFA1-NAME1,
          END OF I_BSEG_COPY.
    ***    To store GL account name
    DATA: BEGIN OF I_SKAT OCCURS 0,
          SAKNR LIKE SKAT-SAKNR,
          TXT50 LIKE SKAT-TXT50,
          END OF I_SKAT.
    ***   To store Vendor detail
    DATA: BEGIN OF I_LFA1 OCCURS 0,
          LIFNR LIKE LFA1-LIFNR,
          NAME1 LIKE LFA1-NAME1,
          KTOKK LIKE LFA1-KTOKK,
          END OF I_LFA1.
    DATA: I_INACT TYPE TABLE OF SY-UCOMM.
    ***  End of Internal table declaration.
    ***  Constant for company code
    CONSTANTS : C_BUKRS(4) VALUE '0010'.
    ***  Data declaration.
    DATA: FR_LAUFDT LIKE REGUH-LAUFD,
          TO_LAUFDT LIKE REGUH-LAUFD,
          COL,
          HEADING(80),
          HEADING1(10),
          HEADING2(80),
          AUTH_RESTRICT,
          G_DETAIL,
          G_SORTV,
          G_SORTP,
          G_SORTC,
          G_FLAG,
          V_XBLNR LIKE BSAK-XBLNR,
          V_UCOMM LIKE SY-UCOMM,
          V_AUGBL LIKE BSAS-AUGBL,
          V_BELNR LIKE BSAS-BELNR.
    DATA : BEGIN OF I_SEL OCCURS 0 ,
           AUGBL LIKE BSAK-AUGBL,
           END OF I_SEL.
    DATA: PROGNAME TYPE SY-REPID,
          DYNNUM   TYPE SY-DYNNR,
          DYNPRO_VALUES TYPE TABLE OF DYNPREAD,
          FIELD_VALUE LIKE LINE OF DYNPRO_VALUES,
          VALUES_TAB LIKE I_SEL OCCURS 0 WITH HEADER LINE.
    DATA : RETURN_TAB LIKE  DDSHRETVAL OCCURS 0 WITH HEADER LINE.
    ***  Selection screen.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(30) TXT_PD FOR FIELD P_LAUFDF.
    SELECTION-SCREEN POSITION POS_LOW.
    PARAMETERS P_LAUFDF LIKE REGUH-LAUFD OBLIGATORY.
    SELECTION-SCREEN COMMENT 52(5) TXT_TO FOR FIELD P_LAUFDT.
    SELECTION-SCREEN POSITION POS_HIGH.
    PARAMETERS P_LAUFDT LIKE REGUH-LAUFD.
    SELECTION-SCREEN END OF LINE.
    SELECT-OPTIONS: S_KTOKK FOR LFA1-KTOKK.
    PARAMETERS: P_RWBTR LIKE REGUH-RWBTR.
    SELECT-OPTIONS: S_LIFNR FOR REGUH-LIFNR.
    * S_XBLNR FOR BSAK-XBLNR MATCHCODE OBJECT ZXBLNR.
    **** Added By Rajesh On 17 OCT 08 (DEVK914797) ****
    SELECT-OPTIONS: S_BELNR  FOR BSAK-BELNR.
    **** End of Addition By Rajesh *****
    *** Added By Samir On 04 Sep 08 (DEVK914623) ***
    SELECTION-SCREEN SKIP.
    PARAMETERS: CHK_REC AS CHECKBOX.
    *** End Of Addition By Samir ***
    SELECTION-SCREEN END OF BLOCK B1.
    ***  Initialization.
    INITIALIZATION.
      TXT_PD = 'Payment Date'.
      TXT_TO = 'to' .
      G_SORTC = 'X'.
    ***  At selection-screen.
    AT SELECTION-SCREEN.
      FR_LAUFDT =  P_LAUFDF.
      IF P_LAUFDT IS INITIAL.
        TO_LAUFDT = FR_LAUFDT.
      ELSE.
        IF P_LAUFDT LT P_LAUFDF.
          MESSAGE E000(ZMSG) WITH 'To Date is less than From date'.
        ENDIF.
        TO_LAUFDT = P_LAUFDT.
      ENDIF.
    ***  Heading.
      WRITE FR_LAUFDT TO HEADING1.
      WRITE TO_LAUFDT TO HEADING2.
      IF HEADING1 <> HEADING2.
        CONCATENATE 'Vendor Credit Card(s) Report for the Payment Date'
        HEADING1 'To' HEADING2 INTO HEADING2 SEPARATED BY SPACE.
      ELSE.
        CONCATENATE 'Vendor Credit Card(s) Report for the Payment Date'
        HEADING1 INTO HEADING2 SEPARATED BY SPACE.
      ENDIF.
    ***  Start of selection.
    START-OF-SELECTION.
      G_DETAIL = 'X'.
      PERFORM GET_DATA.
      PERFORM MODIFY_ITAB.                          "Process and for authority check.
    *** Added By Samir On 04 Sep 08 (DEVK914623) ***
    **** Changed By Rajesh On 17 OCT 08 (DEVK914797) ****
      IF CHK_REC = 'X'.
        LOOP AT I_BSAK.
          SELECT SINGLE BELNR
          INTO   V_BELNR
          FROM   BSAS
          WHERE  BUKRS = C_BUKRS
            AND  HKONT = '0000002012'
            AND  BELNR = I_BSAK-AUGBL
            AND  BUDAT = I_BSAK-AUGDT
            AND  BELNR IN S_BELNR.               " For displaying only reconciled items.
    **** End of Addition By Rajesh *****
          IF SY-SUBRC <> 0.
            DELETE I_BSAK.
          ENDIF.
        ENDLOOP.
      ENDIF.
    *** End Of Addition By Samir ***
      LOOP AT I_BSAK.
        MOVE-CORRESPONDING I_BSAK TO: I_BSAK_LIFNR.
        APPEND: I_BSAK_LIFNR.
        CLEAR:  I_BSAK_LIFNR.
      ENDLOOP.
      LOOP AT I_BSAK.
        MOVE-CORRESPONDING I_BSAK TO: I_BSAK_PRCTR.
        READ TABLE I_BSEG WITH KEY BELNR = I_BSAK-BELNR.
        I_BSAK_PRCTR-HKONT = I_BSEG-HKONT.
        APPEND: I_BSAK_PRCTR.
        CLEAR:  I_BSAK_PRCTR.
      ENDLOOP.
    *loop at i_bseg.
    *   MOVE-CORRESPONDING I_BSAK TO: I_BSAK_PRCTR.
    *endloop.
    *perform write_data.
      PERFORM DISPLAY_OUTPUT.
    AT USER-COMMAND.
      CASE SY-UCOMM.
        WHEN 'EXPA'.
          G_DETAIL = 'X'.
        WHEN 'COLL'.
          CLEAR G_DETAIL.
        WHEN 'SORTV'.
          CLEAR: V_UCOMM.
          V_UCOMM = 'SORTV'.
          G_SORTV = 'X'.
          CLEAR G_SORTP.
          CLEAR G_SORTC.
        WHEN 'SORTC'.
          CLEAR: V_UCOMM.
          V_UCOMM = 'SORTC'.
          CLEAR G_SORTV.
          CLEAR G_SORTP.
          G_SORTC = 'X'.
        WHEN 'SORTP'.
          CLEAR: V_UCOMM.
          V_UCOMM = 'SORTP'.
          CLEAR G_SORTV.
          CLEAR G_SORTC.
          G_SORTP = 'X'.
      ENDCASE.
      PERFORM DISPLAY_OUTPUT.
    *perform write_data.
    ***  To get the header text in the output.
    TOP-OF-PAGE.
      PERFORM TOP_OF_PAGE.
    TOP-OF-PAGE DURING LINE-SELECTION.
      PERFORM TOP_OF_PAGE.
    *&      Form  GET_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM GET_DATA .
      SY-LSIND = 0.
      P_RWBTR = P_RWBTR * -1.
      REFRESH I_BSAK_INIT.
      CLEAR I_BSAK_INIT.
      SELECT A~LIFNR A~LAUFD A~VBLNR A~RWBTR
              B~KTOKK B~NAME1
                FROM REGUH AS A INNER JOIN LFA1 AS B
                ON   A~LIFNR = B~LIFNR
                INTO CORRESPONDING FIELDS OF TABLE I_BSAK_INIT
                WHERE A~LAUFD BETWEEN FR_LAUFDT AND TO_LAUFDT AND
                      A~XVORL <> 'X' AND
                      A~ZBUKR = C_BUKRS  AND
                      A~LIFNR IN S_LIFNR AND
                      A~RZAWE = 'X' AND
                      A~RWBTR LE P_RWBTR AND
                      B~KTOKK IN S_KTOKK.
      IF SY-SUBRC <> 0.
        MESSAGE 'Records Not Found' TYPE 'I'.
        LEAVE LIST-PROCESSING.
      ENDIF.
    *---------------------PERFORMANCE ISSUE--------------------------
    delete adjacent duplicates from i_bsak_init.
      IF NOT I_BSAK_INIT[] IS INITIAL.
       SELECT LIFNR AUGDT AUGBL GJAHR BELNR CPUDT BLDAT XBLNR
               BLART SHKZG DMBTR AUGGJ
                  FROM BSAK
                  INTO CORRESPONDING FIELDS OF TABLE I_BSAK
                  FOR ALL ENTRIES IN I_BSAK_INIT
                  WHERE BUKRS = C_BUKRS  AND
                  AUGBL = I_BSAK_INIT-VBLNR AND
                  XZAHL <> 'X'.
      ENDIF.
    ***  Selecting all line item records from BSEG table.
      IF I_BSAK[] IS NOT INITIAL.
        SELECT BELNR GJAHR BUZEI HKONT SHKZG DMBTR PRCTR
               FROM BSEG
               INTO CORRESPONDING FIELDS OF TABLE I_BSEG
               FOR ALL ENTRIES IN I_BSAK
               WHERE BUKRS = C_BUKRS      AND
                     BELNR = I_BSAK-BELNR AND
                     GJAHR = I_BSAK-GJAHR AND
                     BELNR <> I_BSAK-AUGBL AND
                     KOART <> 'K'.
      ENDIF.
    ***  Selecting gl account name from SKAT table.
      IF I_BSEG[] IS NOT INITIAL.
        SELECT SAKNR TXT50
               FROM SKAT
               INTO CORRESPONDING FIELDS OF TABLE I_SKAT
               FOR ALL ENTRIES IN I_BSEG
               WHERE SPRAS = 'E'     AND
                     KTOPL = C_BUKRS AND
                     SAKNR = I_BSEG-HKONT.
      ENDIF.
      SORT I_BSAK BY BELNR.
      SORT I_BSAK_INIT BY VBLNR.
      SORT I_BSEG BY BELNR GJAHR.
    *** Selecting Credit Card No. into I_XBLNR table.
      LOOP AT I_BSAK.
        I_BSAK-XBLNR1 = I_BSAK-XBLNR.
        CLEAR: V_XBLNR.
        SELECT SINGLE XBLNR FROM BKPF INTO V_XBLNR
                              WHERE BUKRS = C_BUKRS  AND
                              BELNR = I_BSAK-AUGBL.
        IF SY-SUBRC EQ 0.
          I_BSAK-XBLNR = V_XBLNR.
        ENDIF.
        READ TABLE I_BSEG WITH KEY BELNR = I_BSAK-BELNR
                                   GJAHR = I_BSAK-GJAHR
                                   BINARY SEARCH.
        IF SY-SUBRC EQ 0.
          I_BSAK-PRCTR = I_BSEG-PRCTR.
        ENDIF.
        READ TABLE I_BSAK_INIT WITH KEY VBLNR = I_BSAK-AUGBL BINARY SEARCH.
        IF SY-SUBRC EQ 0.
          I_BSAK-NAME1 = I_BSAK_INIT-NAME1.
          I_BSAK-LAUFD = I_BSAK_INIT-LAUFD.
          I_BSAK-KTOKK = I_BSAK_INIT-KTOKK.
        ENDIF.
        MODIFY I_BSAK TRANSPORTING XBLNR XBLNR1 PRCTR NAME1 LAUFD KTOKK.
      ENDLOOP.
    ENDFORM.                    " GET_DATA
    *&      Form  MODIFY_ITAB
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM MODIFY_ITAB .
    ***  Process on internal table
      LOOP AT I_BSAK.
        AUTHORITY-CHECK OBJECT 'F_LFA1_GRP'
                             ID 'KTOKK'
                          FIELD I_BSAK-KTOKK.
        IF SY-SUBRC NE 0.
          DELETE I_BSAK WHERE KTOKK EQ I_BSAK-KTOKK.
          AUTH_RESTRICT = 'X'.
          CONTINUE.
        ENDIF.
      ENDLOOP.
      IF AUTH_RESTRICT EQ 'X'.
        MESSAGE S005(ZMSG).
      ENDIF.
      LOOP AT I_BSAK.
        IF I_BSAK-SHKZG = 'S'.
          I_BSAK-DMBTR = I_BSAK-DMBTR * -1.
          MODIFY I_BSAK .
        ENDIF.
      ENDLOOP.
      LOOP AT I_BSEG.
        IF I_BSEG-SHKZG = 'H'.
          I_BSEG-DMBTR = I_BSEG-DMBTR * -1.
          MODIFY I_BSEG .
        ENDIF.
      ENDLOOP.
    ***  Default Sorting on internal table .
      SORT I_BSAK BY XBLNR LIFNR BELNR.
      SORT I_BSEG BY BELNR HKONT.
      SORT I_SKAT BY SAKNR.
    ENDFORM.                    " MODIFY_ITAB
    *&      Form  DISPLAY_OUTPUT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM DISPLAY_OUTPUT .
    ***  Coding for detail output starts
      CLEAR SY-LSIND.
      REFRESH I_INACT.
      IF G_DETAIL EQ 'X'.
        APPEND 'EXPA' TO I_INACT.
      ELSE.
        APPEND 'COLL' TO I_INACT.
      ENDIF.
      IF G_SORTV EQ 'X'.
        APPEND 'SORTV' TO I_INACT.
        SORT I_BSAK BY LIFNR.
        SORT I_BSAK_LIFNR BY LIFNR.
      ELSEIF G_SORTP EQ 'X'.
        APPEND 'SORTP' TO I_INACT.
        SORT I_BSAK BY PRCTR.
        SORT I_BSAK_PRCTR BY PRCTR.
      ELSE.
        APPEND 'SORTC' TO I_INACT.
        SORT I_BSAK BY XBLNR.
      ENDIF.
      SET PF-STATUS 'STAT' EXCLUDING I_INACT.
      IF V_UCOMM = 'SORTC'.
        PERFORM WRITE_DATA.
      ELSEIF V_UCOMM = 'SORTV' .     "Subroutine for card sub total.
        PERFORM WRITE_DATA_VENDOR.   "Subroutine for vendor sub total.
      ELSEIF V_UCOMM = 'SORTP'.      "Subroutine for profit center sub total.
    *    PERFORM WRITE_DATA_PROFIT.
        PERFORM WRITE_DATA_PROFIT_NEW.  " New subroutine for profit center.
      ELSE.
        PERFORM WRITE_DATA.
      ENDIF.
    ENDFORM.                    " DISPLAY_OUTPUT
    *&      Form  F_COLOR
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM F_COLOR .
      IF COL = 'X'.
        FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
        CLEAR COL.
      ELSE.
        FORMAT COLOR COL_NORMAL INTENSIFIED ON.
        COL = 'X'.
      ENDIF.
    ENDFORM.                    " F_COLOR
    *&      Form  TOP_OF_PAGE
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM TOP_OF_PAGE .
    ***  Top-of-page is Common for summary and detail report.
    ***  To display top of page only on first page.
      IF SY-PAGNO = 1 .
        CALL FUNCTION 'Z_NPL_HEADING'
          EXPORTING
            LINE_SIZE = SY-LINSZ
            HEADING1  = HEADING
            HEADING2  = HEADING2.
        FORMAT COLOR COL_HEADING INTENSIFIED ON.
    ****  To get output columns text descprition
        ULINE.
        WRITE:/ SY-VLINE NO-GAP, (10) 'Vendor' NO-GAP,
                SY-VLINE NO-GAP, (35) 'Name of Payee' NO-GAP,
                SY-VLINE NO-GAP, (10) 'G/L Num' NO-GAP,
                SY-VLINE NO-GAP, (42) 'G/L Name' NO-GAP,
                SY-VLINE NO-GAP, (07) 'Profit Center' NO-GAP,
                SY-VLINE NO-GAP, (16) 'Credit Card NO.' NO-GAP,
                SY-VLINE NO-GAP, (10) 'Pmnt Date' NO-GAP,
                SY-VLINE NO-GAP, (08) 'Doc.Type' NO-GAP,
                SY-VLINE NO-GAP, (10) 'Inv.Date' NO-GAP,
                SY-VLINE NO-GAP, (16) 'Invoice' NO-GAP,
                SY-VLINE NO-GAP, (14) 'Amount Paid' NO-GAP,
                SY-VLINE.
        ULINE.
      ENDIF.
    ENDFORM.                    " TOP_OF_PAGE
    *&      Form  WRITE_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM WRITE_DATA .
      LOOP AT I_BSAK.
        CLEAR WA.
        MOVE-CORRESPONDING I_BSAK TO WA.
        PERFORM WRITE.
        AT END OF XBLNR.                             "Card sub total
          IF G_SORTC EQ 'X'.
            SUM.
            IF G_DETAIL EQ 'X'. ULINE. ENDIF.
            FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
            WRITE:/ SY-VLINE NO-GAP, (25) 'Credit Card Total:', I_BSAK-XBLNR ,
                    (35) I_BSAK-NAME1 NO-GAP.
            WRITE: 110 SY-VLINE NO-GAP,(79) I_BSAK-DMBTR NO-GAP
                                             CURRENCY 'USD',SY-VLINE.
            ULINE.
          ENDIF.
        ENDAT.                                     "End of Credit card Detail
    ****  Grand total
        AT LAST.                                   "Grand total
          SUM.
          FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
          WRITE:/ SY-VLINE NO-GAP,(107) 'Grand Total:',
                  SY-VLINE NO-GAP,(79) I_BSAK-DMBTR NO-GAP
                                         CURRENCY 'USD', SY-VLINE.
          ULINE.
        ENDAT.
      ENDLOOP.                                     "End for I_BSAK loop
    ENDFORM.                    " WRITE_DATA
    *&      Form  WRITE_DATA_VENDOR
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM WRITE_DATA_VENDOR .
      LOOP AT I_BSAK_LIFNR.
        CLEAR WA.
        MOVE-CORRESPONDING I_BSAK_LIFNR TO WA.
        PERFORM WRITE.
        AT END OF LIFNR.                           "Vendor sub Total
          IF G_SORTV EQ 'X'.
            SUM.
            IF G_DETAIL EQ 'X'. ULINE. ENDIF.
            FORMAT COLOR COL_TOTAL INTENSIFIED ON.
            WRITE:/ SY-VLINE NO-GAP,(15) 'Vendor Total:', I_BSAK_LIFNR-LIFNR.
            WRITE: 110 SY-VLINE NO-GAP,(79) I_BSAK_LIFNR-DMBTR NO-GAP
                                             CURRENCY 'USD',SY-VLINE.
            ULINE.
          ENDIF.
        ENDAT.                                     "End of Vendor Total
    ****  Grand total
        AT LAST.                                   "Grand total
          SUM.
          FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
          WRITE:/ SY-VLINE NO-GAP,(107) 'Grand Total:',
                  SY-VLINE NO-GAP,(79) I_BSAK_LIFNR-DMBTR NO-GAP
                                         CURRENCY 'USD', SY-VLINE.
          ULINE.
        ENDAT.
      ENDLOOP.                                     "End for I_BSAK_LIFNR loop
    ENDFORM.                    " WRITE_DATA_VENDOR
    *&      Form  WRITE_DATA_PROFIT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM WRITE_DATA_PROFIT .
    *** Changed By Samir On 18 Sep 08 (DEVK914685) ***
      LOOP AT I_BSAK_PRCTR.
        READ TABLE I_BSAK WITH KEY BELNR = I_BSAK_PRCTR-BELNR
                                   GJAHR = I_BSAK_PRCTR-GJAHR.
        IF SY-SUBRC = 0.
          I_BSAK_PRCTR-LIFNR  = I_BSAK-LIFNR.
          I_BSAK_PRCTR-NAME1  = I_BSAK-NAME1.
          I_BSAK_PRCTR-XBLNR  = I_BSAK-XBLNR.
          I_BSAK_PRCTR-LAUFD  = I_BSAK-LAUFD.
          I_BSAK_PRCTR-BLART  = I_BSAK-BLART.
          I_BSAK_PRCTR-BLDAT  = I_BSAK-BLDAT.
          I_BSAK_PRCTR-XBLNR1 = I_BSAK-XBLNR1.
          MODIFY I_BSAK_PRCTR TRANSPORTING LIFNR NAME1 XBLNR LAUFD BLART BLDAT XBLNR1.
        ENDIF.
      ENDLOOP.
    *** End Of Changes By Samir On 18 Sep 08 ***
      SORT I_BSAK_PRCTR BY PRCTR.
      LOOP AT I_BSAK_PRCTR.
        PERFORM F_COLOR.
        IF G_DETAIL = 'X'.
    *** Changed By Samir On 18 Sep 08 (DEVK914685) ***
          READ TABLE I_SKAT WITH KEY SAKNR = I_BSAK_PRCTR-HKONT BINARY SEARCH.
          WRITE:/ SY-VLINE NO-GAP, (10) I_BSAK_PRCTR-LIFNR NO-GAP,
                  SY-VLINE NO-GAP, (35) I_BSAK_PRCTR-NAME1 NO-GAP,
                  SY-VLINE NO-GAP, (10) I_BSAK_PRCTR-HKONT NO-GAP,
                  SY-VLINE NO-GAP, (42) I_SKAT-TXT50 NO-GAP,
                  SY-VLINE NO-GAP, (07) I_BSAK_PRCTR-PRCTR NO-GAP,
                  SY-VLINE NO-GAP, (16) I_BSAK_PRCTR-XBLNR NO-GAP,     " CREDIT CARD NO.
                  SY-VLINE NO-GAP, (10) I_BSAK_PRCTR-LAUFD NO-GAP,
                  SY-VLINE NO-GAP, (08) I_BSAK_PRCTR-BLART NO-GAP,
                  SY-VLINE NO-GAP, (10) I_BSAK_PRCTR-BLDAT NO-GAP,
                  SY-VLINE NO-GAP, (16) I_BSAK_PRCTR-XBLNR1 NO-GAP.
          WRITE:  SY-VLINE NO-GAP, (14) I_BSAK_PRCTR-DMBTR NO-GAP.
          WRITE:  SY-VLINE.
        ENDIF.
    *** End Of Changes By Samir On 18 Sep 08 ***
        AT END OF PRCTR.                           "Profit Center sub Total
          IF G_SORTP EQ 'X'.
            SUM.
            IF G_DETAIL EQ 'X'. ULINE. ENDIF.
            FORMAT COLOR COL_TOTAL INTENSIFIED ON.
            WRITE:/ SY-VLINE NO-GAP,(07) 'Profit Center Total:', I_BSAK_PRCTR-PRCTR.
            WRITE: 110 SY-VLINE NO-GAP,(79) I_BSAK_PRCTR-DMBTR NO-GAP
                                             CURRENCY 'USD',SY-VLINE.
            ULINE.
          ENDIF.
        ENDAT.                                    "End of Profit Center Total
    ****  Grand total
        AT LAST.                                  "Grand total
          SUM.
          FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
          WRITE:/ SY-VLINE NO-GAP,(107) 'Grand Total:',
                  SY-VLINE NO-GAP,(79) I_BSAK_PRCTR-DMBTR NO-GAP
                                         CURRENCY 'USD', SY-VLINE.
          ULINE.
        ENDAT.
      ENDLOOP.                                     "End for I_BSAK_PRCTR loop
    ENDFORM.                    " WRITE_DATA_PROFIT
    *&      Form  WRITE
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM WRITE .
      IF G_DETAIL = 'X'.
        IF WA-KTOKK = 'Z001'.                   " For HR Vendors
          PERFORM F_COLOR.
          READ TABLE I_BSEG WITH KEY BELNR = WA-BELNR GJAHR = WA-GJAHR BINARY SEARCH .
          READ TABLE I_SKAT WITH KEY SAKNR = I_BSEG-HKONT BINARY SEARCH.
          WRITE:/ SY-VLINE NO-GAP, (10) WA-LIFNR NO-GAP,
                  SY-VLINE NO-GAP, (35) WA-NAME1 NO-GAP,
                  SY-VLINE NO-GAP, (10) I_BSEG-HKONT NO-GAP,
                  SY-VLINE NO-GAP, (42) I_SKAT-TXT50 NO-GAP,
    *** Changed By Samir On 18 Sep 08 (DEVK914685) ***
    *             SY-VLINE NO-GAP, (07) WA-PRCTR NO-GAP,
                  SY-VLINE NO-GAP, (07) I_BSEG-PRCTR NO-GAP,
    *** End Of Changes By Samir On 18 Sep 08 ***
                  SY-VLINE NO-GAP, (16) WA-XBLNR NO-GAP,        " CREDIT CARD NO.
                  SY-VLINE NO-GAP, (10) WA-LAUFD NO-GAP,
                  SY-VLINE NO-GAP, (08) WA-BLART NO-GAP,
                  SY-VLINE NO-GAP, (10) WA-BLDAT NO-GAP,
                  SY-VLINE NO-GAP, (16) WA-XBLNR1 NO-GAP.
          WRITE: SY-VLINE NO-GAP, (14) WA-DMBTR NO-GAP.
          WRITE: SY-VLINE.
        ELSE.
          LOOP AT I_BSEG WHERE BELNR = WA-BELNR AND GJAHR = WA-GJAHR .
            PERFORM F_COLOR.
            READ TABLE I_SKAT WITH KEY SAKNR = I_BSEG-HKONT BINARY SEARCH.
            WRITE:/ SY-VLINE NO-GAP, (10) WA-LIFNR NO-GAP,
                    SY-VLINE NO-GAP, (35) WA-NAME1 NO-GAP,
                    SY-VLINE NO-GAP, (10) I_BSEG-HKONT NO-GAP,
                    SY-VLINE NO-GAP, (42) I_SKAT-TXT50 NO-GAP,
    *** Changed By Samir On 17 Sep 08 (DEVK914671) ***
    *               SY-VLINE NO-GAP, (07) WA-PRCTR NO-GAP,
                    SY-VLINE NO-GAP, (07) I_BSEG-PRCTR NO-GAP,
    *** End Of Changes By Samir On 17 Sep 08 ***
                    SY-VLINE NO-GAP, (16) WA-XBLNR NO-GAP,     " CREDIT CARD NO.
                    SY-VLINE NO-GAP, (10) WA-LAUFD NO-GAP,
                    SY-VLINE NO-GAP, (08) WA-BLART NO-GAP,
                    SY-VLINE NO-GAP, (10) WA-BLDAT NO-GAP,
                    SY-VLINE NO-GAP, (16) WA-XBLNR1 NO-GAP.
            WRITE: SY-VLINE NO-GAP, (14)  I_BSEG-DMBTR NO-GAP.
            WRITE: SY-VLINE.
          ENDLOOP.                                 "End   for I_BSEG loop
        ENDIF.                                     "Endif for I_PAYR-KTOKK = 'Z001'
      ENDIF.                                       "Endif for g_detail = 'X'.
    ENDFORM.                    " WRITE
    *&      Form  WRITE_DATA_PROFIT_NEW
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM WRITE_DATA_PROFIT_NEW .
      REFRESH I_BSEG_COPY.
      CLEAR I_BSEG_COPY.
    *  DATA I_BSEG_COPY LIKE I_BSEG OCCURS 0 WITH HEADER LINE.
    *  I_BSEG_COPY[] = I_BSEG[].
      LOOP AT I_BSEG.
        MOVE-CORRESPONDING I_BSEG TO I_BSEG_COPY.
        APPEND I_BSEG_COPY.
        CLEAR I_BSEG_COPY.
      ENDLOOP.
      LOOP AT I_BSEG_COPY.
        READ TABLE I_BSAK_PRCTR WITH KEY BELNR = I_BSEG_COPY-BELNR GJAHR = I_BSEG_COPY-GJAHR ."HKONT = I_BSEG_COPY-HKONT.
        IF SY-SUBRC = 0.
          I_BSEG_COPY-LIFNR = I_BSAK_PRCTR-LIFNR.
          I_BSEG_COPY-XBLNR = I_BSAK_PRCTR-XBLNR.
          I_BSEG_COPY-NAME1 = I_BSAK_PRCTR-NAME1.
          I_BSEG_COPY-AUGDT = I_BSAK_PRCTR-AUGDT.
          I_BSEG_COPY-AUGBL = I_BSAK_PRCTR-AUGBL.
          I_BSEG_COPY-XBLNR1 = I_BSAK_PRCTR-XBLNR1.
          I_BSEG_COPY-BLDAT = I_BSAK_PRCTR-BLDAT.
          I_BSEG_COPY-BLART = I_BSAK_PRCTR-BLART.
          MODIFY I_BSEG_COPY TRANSPORTING LIFNR XBLNR NAME1 AUGDT AUGBL XBLNR1 BLDAT BLART.
        ENDIF.
      ENDLOOP.
      SORT I_BSAK_PRCTR BY PRCTR BELNR.
      SORT I_BSEG BY BELNR.
      SORT I_BSEG_COPY BY PRCTR.
      DATA COUNT TYPE I.
      DATA G_BELNR LIKE BSAK-BELNR.
      LOOP AT I_BSEG_COPY.
        CLEAR G_BELNR.
        G_BELNR = I_BSEG_COPY-BELNR.
        COUNT = COUNT + 1.
        READ TABLE I_BSAK WITH KEY BELNR = I_BSEG_COPY-BELNR.
        IF SY-SUBRC <> 0.
          DELETE I_BSEG_COPY WHERE BELNR = G_BELNR."INDEX count.
        ENDIF.
      ENDLOOP.
    *  LOOP AT I_BSAK_PRCTR.
      LOOP AT I_BSEG_COPY.
        CLEAR WA.
        MOVE-CORRESPONDING I_BSEG_COPY TO WA.
        PERFORM WRITE_PRCTR.
        AT END OF PRCTR.                           "Profit center sub Total
          IF G_SORTP EQ 'X'.
            SUM.
            IF G_DETAIL EQ 'X'. ULINE. ENDIF.
            FORMAT COLOR COL_TOTAL INTENSIFIED ON.
            WRITE:/ SY-VLINE NO-GAP,(20) 'Profit Center Total:', I_BSEG_COPY-PRCTR.
            WRITE: 110 SY-VLINE NO-GAP,(79) I_BSEG_COPY-DMBTR NO-GAP
                                             CURRENCY 'USD',SY-VLINE.
            ULINE.
          ENDIF.
        ENDAT.                                     "End of Vendor Total
    ****  Grand total
        AT LAST.                                   "Grand total
          SUM.
          FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
          WRITE:/ SY-VLINE NO-GAP,(107) 'Grand Total:',
                  SY-VLINE NO-GAP,(79) I_BSEG_COPY-DMBTR NO-GAP
                                         CURRENCY 'USD', SY-VLINE.
          ULINE.
        ENDAT.
      ENDLOOP.                                     "End for I_BSAK_LIFNR loop
    *ENDFORM.                    " WRITE_DATA_VENDOR
    ENDFORM.                    " WRITE_DATA_PROFIT_NEW
    *&      Form  WRITE_PRCTR
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM WRITE_PRCTR .
      IF G_DETAIL = 'X'.
        IF WA-KTOKK = 'Z001'.                   " For HR Vendors
          PERFORM F_COLOR.
    *      READ TABLE I_BSEG WITH KEY BELNR = WA-BELNR GJAHR = WA-GJAHR PRCTR = WA-PRCTR BINARY SEARCH .
          READ TABLE I_SKAT WITH KEY SAKNR = WA-HKONT BINARY SEARCH.
          WRITE:/ SY-VLINE NO-GAP, (10) WA-LIFNR NO-GAP,
                  SY-VLINE NO-GAP, (35) WA-NAME1 NO-GAP,
                  SY-VLINE NO-GAP, (10) WA-HKONT NO-GAP,
                  SY-VLINE NO-GAP, (42) I_SKAT-TXT50 NO-GAP,
    *** Changed By Samir On 18 Sep 08 (DEVK914685) ***
                  SY-VLINE NO-GAP, (07) WA-PRCTR NO-GAP,
    *             SY-VLINE NO-GAP, (07) I_BSEG-PRCTR NO-GAP,
    *** End Of Changes By Samir On 18 Sep 08 ***
                  SY-VLINE NO-GAP, (16) WA-XBLNR NO-GAP,        " CREDIT CARD NO.
                  SY-VLINE NO-GAP, (10) WA-LAUFD NO-GAP,
                  SY-VLINE NO-GAP, (08) WA-BLART NO-GAP,
                  SY-VLINE NO-GAP, (10) WA-BLDAT NO-GAP,
                  SY-VLINE NO-GAP, (16) WA-XBLNR1 NO-GAP.
          WRITE: SY-VLINE NO-GAP, (14) WA-DMBTR NO-GAP.
          WRITE: SY-VLINE.
        ELSE.
    *      LOOP AT I_BSEG WHERE BELNR = WA-BELNR AND GJAHR = WA-GJAHR AND PRCTR = WA-PRCTR .
          PERFORM F_COLOR.
          READ TABLE I_SKAT WITH KEY SAKNR = WA-HKONT BINARY SEARCH.
          WRITE:/ SY-VLINE NO-GAP, (10) WA-LIFNR NO-GAP,
                  SY-VLINE NO-GAP, (35) WA-NAME1 NO-GAP,
                  SY-VLINE NO-GAP, (10) WA-HKONT NO-GAP,
                  SY-VLINE NO-GAP, (42) I_SKAT-TXT50 NO-GAP,
    *** Changed By Samir On 17 Sep 08 (DEVK914671) ***
                 SY-VLINE NO-GAP, (07) WA-PRCTR NO-GAP,
    *              SY-VLINE NO-GAP, (07) I_BSEG-PRCTR NO-GAP,
    *** End Of Changes By Samir On 17 Sep 08 ***
                  SY-VLINE NO-GAP, (16) WA-XBLNR NO-GAP,     " CREDIT CARD NO.
                  SY-VLINE NO-GAP, (10) WA-LAUFD NO-GAP,
                  SY-VLINE NO-GAP, (08) WA-BLART NO-GAP,
                  SY-VLINE NO-GAP, (10) WA-BLDAT NO-GAP,
                  SY-VLINE NO-GAP, (16) WA-XBLNR1 NO-GAP.
          WRITE: SY-VLINE NO-GAP, (14)  WA-DMBTR NO-GAP.
          WRITE: SY-VLINE.
    *      ENDLOOP.                                 "End   for I_BSEG loop
        ENDIF.                                     "Endif for I_PAYR-KTOKK = 'Z001'
      ENDIF.                                       "Endif for g_detail = 'X'.
    ENDFORM.                    " WRITE_PRCTR
    Thanks in advance
    Raj.

    Ralph,
    Thanks for the reply.
    I have marked the sql statement in the code that is taking long time to run but Its my mistake not explaining the same in the description.
    When I was debugging the code the below sql statement was taking long time.
      IF NOT I_BSAK_INIT[] IS INITIAL.
       SELECT LIFNR AUGDT AUGBL GJAHR BELNR CPUDT BLDAT XBLNR
               BLART SHKZG DMBTR AUGGJ
                  FROM BSAK
                  INTO CORRESPONDING FIELDS OF TABLE I_BSAK
                  FOR ALL ENTRIES IN I_BSAK_INIT
                  WHERE BUKRS = C_BUKRS  AND
                  AUGBL = I_BSAK_INIT-VBLNR AND
                  XZAHL <> 'X'.
      ENDIF.
    Any suggestions on the code?
    Regards,
    Raj.

  • Why oracle text index column taking long  time

    why oracle text index column is taking long time to return result.I created text index on a column if I run the query on a single table result is very fast.If I join table with other table (10 records only )
    it is taking long time but in explain plan it is searching by index only.
    I created this index for searching a varchar2 column,the data is comma seperated values like ( UK,US,IT,BR) and the table having records 20 lakhs.Normally if I query with like operater
    ( like '%US%' ) it is taking full table scan because I am using '%' both sides. Please help me on this regard how to search the data with less time. Here is may sample code and explain plan.
    SQL*Plus: Release 9.2.0.1.0 - Production on Wed Jan 28 16:54:22 2009
    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
    Connected to:
    Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    SQL&gt; set timing on
    SQL&gt; set linesize 180
    SQL&gt; explain plan for SELECT T.esongid FROM (SELECT A.ESONGID FROM wcmedeco.EDECO_ESONGS_TERR_CTRY 
    A WHERE CONTAINS(A.TERR_CTRY_NAMES,'US')&gt;0  
      2  GROUP BY A.ESONGID)K,T
      3  WHERE  K.ESONGID=T.ESONGID;
    Explained.
    Elapsed: 00:00:00.01
    SQL&gt; select *from table(dbms_xplan.display);
    PLAN_TABLE_OUTPUT
    | Id  | Operation                      |  Name                   | Rows  | Bytes | Cost  |
    |   0 | SELECT STATEMENT               |                         |     1 |    26 |     4 |
    |   1 |  NESTED LOOPS                  |                         |     1 |    26 |     4 |
    |   2 |   VIEW                         |                         |     1 |    13 |     4 |
    |   3 |    SORT GROUP BY               |                         |     1 |    89 |     4 |
    |   4 |     TABLE ACCESS BY INDEX ROWID| EDECO_ESONGS_TERR_CTRY  |     1 |    89 |     2 |
    |   5 |      DOMAIN INDEX              | IDX_TERR_CTRY_NAMES     |       |       |     0 |
    |   6 |   INDEX RANGE SCAN             | IDX_ESONGID_T           |     1 |    13 |     1 |
    PLAN_TABLE_OUTPUT
    Note: cpu costing is off, 'PLAN_TABLE' is old version
    14 rows selected.
    Elapsed: 00:00:00.00
    SQL&gt; Regards,
    Rajasekhar

    You have not formatted your code properly so we cannot see the query you're executing. Please put some line breaks in.
    Secondly, how fresh are the statistics on those tables? Are you really returning one record out of twenty million?
    Cheers, APC
    blog: http://radiofreetooting.blogspot.com

  • Delete statements are taking longer time

    Hi All,
    I have an issue with delete statement. below are my oracle DB details.
    SQL>select * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
    PL/SQL Release 11.1.0.6.0 - Production
    CORE 11.1.0.6.0 Production
    TNS for Linux: Version 11.1.0.6.0 - Production
    NLSRTL Version 11.1.0.6.0 - Production
    I have a schema in the database which has 120 tables in it. The problem is, when the QA team is deleting the customers from customer table, it is running long time and haven't completed. this customer table have FK relation with other tables and have all the right indexes in place. then i have tried to identified the problem, why it is taking long time, and found that when they are running this delete query at the same time application is also running. the sessions created by application are locked most of the table and at the same time the delete session is also waiting for exclusive lock on those table. I given the same info to QA team and asked to stop the application when they deleting the customers. Then they said, they don't want to stop the application and the delete has to work and they asked for different solution. Here i am not sure, what solution i need to provide them.
    Can you please suggest me a approach and Thanks in advance.

    Hari wrote:
    and at the same time the delete session is also waiting for exclusive lock on those table. The only way the delete session could be waiting for an exclusive lock on the table is if the code to delete from the customer includes the command: lock table customer in exclusive mode;Unless your original description is wrong, either the deletion code has to change or the application has to stop modifying the customer table.
    Regards
    Jonathan Lewis
    http://jonathanlewis.wordpress.com
    Author: <b><em>Oracle Core</em></b>

  • I am extracting the data from ECC To bw .but Data Loading taking long tim

    Hi All,
                     i am extracting the data from ECC To BI Syatem..but Data Loading Taking Long time. from last   6 hoursinfopackage is running.still it is showing yellow.Manually i made the red.and delete again i applied repeat of the last delta.but same proble is coming .in the status job is showing bckground job is not finished at source system.we requested to basis.basis people killed that job.again we schedule the chain also again same problem is coming.how can i solve this issue.
    Thanks ,
    chandu

    Hi,
    There are different places to track your job. Once your job is triggered in BW, you can track your load job where exactly it is taking more time and why. Follow below steps:
    1) After InfoPackage is triggered, then take the request number and go to source system to check your extraction job status.
    You can get the job status by taking the request number from BW and go to transaction SM37 in ECC. Then give the request number with begining '' and ending ''.  Also give '*' to user name.
    Job name:  REQ_XXXXXX
    User Name: *
    Check the job status whether job is completed or cancelled or short dump. If the job is still running check in SM66 whether you can see any process. If not accordingly you got to check in ST22 or SM21 in ECC. If the job is complete, then the same in BW side now.
    2) Check the data arrived in PSA, if not check whether Transfer routines or start routines are having bad SQL or code. Similarly in update rules.
    3) Once it is through in Source system (ECC), Transfer rules , Update Rules, then the next task is updating the data might some time take more time which might be based on some parameters ( Number of parallel process to update database ). Check whether updating the database is taking more time and may be you got to check with the DBA guy also.
    At all the times you should see minimum of atleast once process running all the time in SM66 till the time your job gets complete. If not you will see a log in ST22.
    Let me know if you still have questions.
    Assigning points is the only way of saying thanks in SDN.
    Thanks,
    Kumar.

  • SSRS Reports taking long time to load

    Hello,
    Problem : SSRS Reports taking long time to load
    My System environment : Visual Studio 2008 SP1  and SQL Server 2008 R2
    Production Environment : Visual Studio 2008 SP1  and SQL Server 2008 R2
    I have created a Parameterized report (6 parameters), it will fetch data from 1 table. table has 1 year and 6 months data,      I am selecting parameters for only 1 month (about 2500 records). It is taking almost 2 minutes and 30 seconds
    to load the report.
    This report running efficiently in my system (report load takes only 5 to 6 seconds) but in
    production it is taking 2 minutes 30 seconds.
    I have checked the Execution log from production so I found the timing for
    Data retrieval (approx~)       Processing (approx~)               Rendering (approx~)
    10 second                                      15 sec                        
                2 mins and 5 sec.
    But Confusing point is that , if I run the same report at different time overall output time is same (approx) 2 min 30 sec but
    Data retrieval (approx~)       Processing (approx~)                Rendering (approx~)
    more than 1 min                            15 sec                                     
    more than 1 min
    so 1 question why timings are different ?
    My doubts are
    1) If query(procedure to retrieve the data) is the problem then it should take more time always,
    2) If Report structure is problem then rendering will also take same time (long time)
    for this (2nd point) I checked on blog that Rendering depends on environment structure e.g. Network bandwidth, RAM, CPU Usage , Number of users accessing same report at a time.
    So I did testing of report when no other user working on any report But failed (same result  output is 2 min 30 sec)
    From network team I got the result is that there is no issue or overload in CPU usage or RAM also No issue in Network bandwidth.
    Production Database Server and Report server are different (but in same network).
    I checked that database server the SQL Server is using almost Full RAM (23 GB out of 24 GB)
    I tried to allocate the memory to less amount up to 2GB (Trial solution I got from Blogs) but this on also failed.
    one hint I got from colleague that , change the allocated memory setting from static memory to dynamic to SQL Server
    (I guess above point is the same) I could not find that option Static and Dynamic memory setting.
    I did below steps
    Connected to SQL Server Instance
    Right click on Instance go to properties, Go to Memory Tab
    I found three options 1) Server Memory   2) Other memory   3) Section for "Configured values and Running values"
    Then I tried to reduce Maximum  Server memory up to 2 GB (As mentioned above)
    All trials failed, this issue I could not find the roots for this issue.
    Can anyone please help (it's bit urgent).

    Hi UdayKGR,
    According to your description, your report takes too long to load on your production environment. Right?
    In this scenario, since the report runs quickly in developing environment, we initially think it supposed to be the issue on data retrieval. However, based on the information in execution log, it takes longest time on rendering part. So we suggest you optimize
    the report itself to reduce the time for rendering. Please refer to the link below:
    My report takes too long to render
    Here is another article about overall performance optimization for Reporting Services:
    Reporting Services Performance and Optimization
    If you have any question, please feel free to ask.
    Best Regards,
    Simon Hou

  • Connecting to the database taking long time to connect database server

    Hi
    When I execute procedure i am getting the below message at bottom of the Oracle SQL Developer
    "Connecting to the database"
    it is taking more than 10 min plz guide

    Hi
    have you installed a normal Oracle Client also on your Host? normal Oracle Client
    Did you connect with host:port:sid or with a Oracle Naming Service? through TNS Service
    Can you test tnsping <alias> yes, It is working fine
    Did other user have the same problem? yes
    Did you connect through WAN or LAN connection? LAN (Intranet)
    Can you tell more about you client/database setup?
    Database setup:
    OS: Window 2008 server
    version: 11.1.0
    Client: 11.1.0
    OS: Window 2008 server
    Now I am not able to execute single select query which table contains 6 records and 15 columns it is taking long time I have waited 30 min still no resutls
    only one table is behaving like this remaining is working fine
    Edited by: user9235224 on Oct 6, 2012 7:06 PM

  • Update ztable is taking long time

    Hi All,
    i have run the 5 jobs with the same program at a time but when we check the db trace
    zs01 is taking long time as shown below.here zs01 is having small amount of data.
    in the below dbtrace for updating zs01 is taking 2,315,485 seconds .how to reduce this?
    HH:MM:SS.MS Duration     Program   ObjectName  Op.   Curs   Array   Rec     RC     Conn     
    2:36:15 AM     2,315,485     SAPLZS01  ZS01       FETCH  294     1     1     0     R/3     
    The code as shown below
    you can check the code in the program SAPLZS01 include LZS01F01.
    FORM UPDATE_ZS01.
    IF ZS02-STATUS = '3'.
        IF Z_ZS02_STATUS = '3'.            "previous status is ERROR
          EXIT.
        ELSE.
          SELECT SINGLE FOR UPDATE * FROM  ZS01
                 WHERE  PROC_NUM    = ZS02-PROC_NUM.
          CHECK SY-SUBRC = 0.
          ADD ZS02-MF_AMT TO ZS01-ERR_AMT.
          ADD 1           TO ZS01-ERR_INVOI.
          UPDATE ZS01.
        ENDIF.
      ENDIF.
    my question is when updating the ztable why it is taking such long time,
    how to reduce the time or how to make faster to update the ztable .
    Thanks in advance,
    regards
    Suni

    Try the code like this..
    data: wa_zs01 type zs01.
    FORM UPDATE_ZS01.
    IF ZS02-STATUS = '3'.
        IF Z_ZS02_STATUS = '3'.            "previous status is ERROR
          EXIT.
        ELSE.
          SELECT SINGLE FOR UPDATE * FROM  ZS01
                 WHERE  PROC_NUM    = ZS02-PROC_NUM.
    -- change
      CHECK SY-SUBRC = 0.
          ADD ZS02-MF_AMT TO wa_ZS01-ERR_AMT.
          ADD 1           TO wa_ZS01-ERR_INVOI.
          UPDATE ZS01 from wa_zs01.
        ENDIF.
      ENDIF.
    And i think this Select query for ZS01 is inside the ZS02 SELECT statement,
    This might also make slow process.
    If you want to make database access always use Workarea/Internal table to fetch the data
    and work with that.
    Accessing database like this or with Select.... endselect is an inefficient programming.

  • Simple query is taking long time

    Hi Experts,
    The below query is taking long time.
    [code]SELECT   FS.*
      FROM   ORL.FAX_STAGE FS
             INNER JOIN
                   ORL.FAX_SOURCE FSRC
                INNER JOIN
                   GLOBAL_BU_MAPPING GBM
                ON GBM.BU_ID = FSRC.BUID
             ON UPPER (FSRC.FAX_NUMBER) = UPPER (FS.DESTINATION)
    WHERE       FSRC.IS_DELETED = 'N'
             AND GBM.BU_ID IS NOT NULL
             AND UPPER (FS.FAX_STATUS) ='COMPLETED';[/code]
    this query is returning 1645457 records.
    [code]PLAN_TABLE_OUTPUT
    | Id  | Operation           | Name                   | Rows  | Bytes | Cost (%CPU)|
    |   0 | SELECT STATEMENT    |                        |   625K|   341M| 45113   (1)|
    |   1 |  HASH JOIN          |                        |   625K|   341M| 45113   (1)|
    |   2 |   NESTED LOOPS      |                        |   611 | 14664 |    22   (0)|
    |   3 |    TABLE ACCESS FULL| FAX_SOURCE             |  2290 | 48090 |    22   (0)|
    |   4 |    INDEX RANGE SCAN | GLOBAL_BU_MAPPING_BUID |     1 |     3 |     0   (0)|
    |   5 |   TABLE ACCESS FULL | FAX_STAGE              |  2324K|  1214M| 45076   (1)|
    PLAN_TABLE_OUTPUT
    Note
       - 'PLAN_TABLE' is old version
    15 rows selected.[/code]
    The distinct number of records in each table.
    [code]SELECT FAX_STATUS,count(*)
    FROM fax_STAGE
    GROUP BY FAX_STATUS;
    FAX_STATUS    COUNT(*)
    BROKEN          10
    Broken - New    9
    Completed    2324493
    New             20
    SELECT is_deleted,COUNT(*)
    FROM  FAX_SOURCE
    GROUP BY IS_DELETED;
    IS_DELETED COUNT(*)
    N         2290
    Y         78[/code]
    Total number of records in each table.
    [code]SELECT COUNT(*) FROM ORL.FAX_SOURCE FSRC-- 2368
    SELECT COUNT(*) FROM ORL.FAX_STAGE--2324532
    SELECT COUNT(*) FROM APPS_GLOBAL.GLOBAL_BU_MAPPING--9
    [/code]
    To improve the performance of this query I have created the following indexes.
    [code]Functional based index on UPPER (FSRC.FAX_NUMBER) ,UPPER (FS.DESTINATION) and UPPER (FS.FAX_STATUS).
    Bitmap index on FSRC.IS_DELETED.
    Normal Index on GBM.BU_ID and FSRC.BUID.
    [/code]
    But still the performance is bad for this query.
    What can I do apart from this to improve the performance of this query.
    Please help me .
    Thanks in advance.

    <I have created the following indexes.
    CREATE INDEX ORL.IDX_DESTINATION_RAM ON ORL.FAX_STAGE(UPPER("DESTINATION"))
    CREATE INDEX ORL.IDX_FAX_STATUS_RAM ON ORL.FAX_STAGE(LOWER("FAX_STATUS"))
    CREATE INDEX ORL.IDX_UPPER_FAX_STATUS_RAM ON ORL.FAX_STAGE(UPPER("FAX_STATUS"))
    CREATE INDEX ORL.IDX_BUID_RAM ON ORL.FAX_SOURCE(BUID)
    CREATE INDEX ORL.IDX_FAX_NUMBER_RAM ON ORL.FAX_SOURCE(UPPER("FAX_NUMBER"))
    CREATE BITMAP INDEX ORL.IDX_IS_DELETED_RAM ON ORL.FAX_SOURCE(IS_DELETED)
    After creating the following indexes performance got improved.
    But our DBA said that new BITMAP index at FAX_SOURCE table (ORL.IDX_IS_DELETED_RAM) can cause locks
    on multiple rows if IS_DELETED column is in use. Please proceed with detailed tests.
    I am sending the explain plan before creating indexes and after indexes has been created.
    SELECT  FS.*
    FROM  ORL.FAX_STAGE FS
                    INNER JOIN
                    ORL.FAX_SOURCE FSRC
                  INNER JOIN
                      GLOBAL_BU_MAPPING GBM
                    ON GBM.BU_ID = FSRC.BUID
                ON UPPER (FSRC.FAX_NUMBER) = UPPER (FS.DESTINATION)
    WHERE      FSRC.IS_DELETED = 'N'
              AND GBM.BU_ID IS NOT NULL
              AND UPPER (FS.FAX_STATUS) =:B1;
    --OLD without indexes
    PLAN_TABLE_OUTPUT
    Plan hash value: 3076973749
    | Id  | Operation          | Name                  | Rows  | Bytes | Cost (%CPU)| Time    |
    |  0 | SELECT STATEMENT    |                        |  141K|    85M| 45130  (1)| 00:09:02 |
    |*  1 |  HASH JOIN          |                        |  141K|    85M| 45130  (1)| 00:09:02 |
    |  2 |  NESTED LOOPS      |                        |  611 | 18330 |    22  (0)| 00:00:01 |
    |*  3 |    TABLE ACCESS FULL| FAX_SOURCE            |  2290 | 59540 |    22  (0)| 00:00:01 |
    |*  4 |    INDEX RANGE SCAN | GLOBAL_BU_MAPPING_BUID |    1 |    4 |    0  (0)| 00:00:01 |
    |*  5 |  TABLE ACCESS FULL | FAX_STAGE              | 23245 |    13M| 45106  (1)| 00:09:02 |
    PLAN_TABLE_OUTPUT
    Predicate Information (identified by operation id):
      1 - access(UPPER("FSRC"."FAX_NUMBER")=UPPER("FS"."DESTINATION"))
      3 - filter("FSRC"."IS_DELETED"='N')
      4 - access("GBM"."BU_ID"="FSRC"."BUID")
          filter("GBM"."BU_ID" IS NOT NULL)
      5 - filter(UPPER("FS"."FAX_STATUS")=SYS_OP_C2C(:B1))
    21 rows selected.
    --NEW with indexes.
    PLAN_TABLE_OUTPUT
    Plan hash value: 665032407
    | Id  | Operation                        | Name                    | Rows  | Bytes | Cost (%CPU)| Time    |
    |  0 | SELECT STATEMENT                |                          |  5995 |  3986K|  3117  (1)| 00:00:38 |
    |*  1 |  HASH JOIN                      |                          |  5995 |  3986K|  3117  (1)| 00:00:38 |
    |  2 |  NESTED LOOPS                  |                          |  611 | 47658 |    20  (5)| 00:00:01 |
    |*  3 |    VIEW                          | index$_join$_002        |  2290 |  165K|    20  (5)| 00:00:01 |
    |*  4 |    HASH JOIN                    |                          |      |      |            |      |
    |*  5 |      HASH JOIN                  |                          |      |      |            |      |
    PLAN_TABLE_OUTPUT
    |  6 |      BITMAP CONVERSION TO ROWIDS|                          |  2290 |  165K|    1  (0)| 00:00:01 |
    |*  7 |        BITMAP INDEX SINGLE VALUE | IDX_IS_DELETED_RAM      |      |      |            |      |
    |  8 |      INDEX FAST FULL SCAN      | IDX_BUID_RAM            |  2290 |  165K|    8  (0)| 00:00:01 |
    |  9 |      INDEX FAST FULL SCAN        | IDX_FAX_NUMBER_RAM      |  2290 |  165K|    14  (0)| 00:00:01 |
    |* 10 |    INDEX RANGE SCAN              | GLOBAL_BU_MAPPING_BUID  |    1 |    4 |    0  (0)| 00:00:01 |
    |  11 |  TABLE ACCESS BY INDEX ROWID    | FAX_STAGE                | 23245 |    13M|  3096  (1)| 00:00:38 |
    |* 12 |    INDEX RANGE SCAN              | IDX_UPPER_FAX_STATUS_RAM |  9298 |      |  2434  (1)| 00:00:30 |
    Predicate Information (identified by operation id):
    PLAN_TABLE_OUTPUT
      1 - access(UPPER("DESTINATION")="FSRC"."SYS_NC00035$")
      3 - filter("FSRC"."IS_DELETED"='N')
      4 - access(ROWID=ROWID)
      5 - access(ROWID=ROWID)
      7 - access("FSRC"."IS_DELETED"='N')
      10 - access("GBM"."BU_ID"="FSRC"."BUID")
          filter("GBM"."BU_ID" IS NOT NULL)
      12 - access(UPPER("FAX_STATUS")=SYS_OP_C2C(:B1))
    31 rows selected
    Please confirm on the DBA comment.Is this bitmap index locks rows in my case.
    Thanks.>

  • RSPCM is taking long time

    Hi,
    RSPCM is taking long time to open at the same time RSPC is working fine
    when I try to change the process chain status through RSPC_PROCESS_FINISH . it is executing for long time no response. I tried executing it backgrond also from past 2 days it is running, no progress.
    Our basis team created index to all backend table of RSPCM, still issue persist. Please suggest me some to get rid of this.
    Br,
    Harish

    hi,
    Please check the below thread
    RSPCM T-Code was executing very slow
    Please check note 1372931
    hope it helps!
    Edited by: Lavanya J on Nov 4, 2011 1:32 PM

Maybe you are looking for

  • How to get mouse over shape to display data in Visio 2013?

    Hi Visio pros, I am required to create a diagram of our servers rack setup and will be publishing to a Web page using Visio 2013. The goal is to mouse over the server shape and have the data be displayed. I have followed arguably every solution on th

  • I can't connect my iPod nano 6th gen to iTunes 11.1.

    I can't connect my iPod nano 6th gen to iTunes 11.1. It keeps saying 'it could not be identified properly". I've tried all the steps on troubleshooting page but nothing's successful. Anybody got some help?

  • Component for JSF Save as dialog Box

    Hi I would like to have a save as diolog box in my JSF based Web application I am using richfaces as the implementation.. Can anyone give some valuable points about how to implememt that..............

  • I want to use f9 to insert

    This should be easy, but I can't seem to find the location to change the settings. Currently, when I hit the f9 key, OS Tiger shows me windows of all active apps. I want to go back to the f9 key allowing me to insert a clip from the viewer onto the t

  • Convert mac mail to outlook

    Anyone could help me with this question? How can I convert my email on Mac to .pst format? And were I can find the email on finder? Tks