Insert Statement taking longer time

Hi,
One of my insert statement inside the procedure is taking more than 10secs to complete.
Scenario:
1. Having three tables e.g invoice table - invoice header, invoice Item and invoice attribute
2. These tables are loaded with data in the above specified order and they are not commited till all the data for an invoice gets inserted sucessfully.
e.g
a. Invoice header gets inserted first(one row)
b. Invoice Item second(will be in a loop with more than one row)
c. For every Invoice item an invoice attribute will be inserted
(Invoice Attribute has a FK column with a PK column in invoice item table column)
The problem is while inserting data into InvoiceAttribute it takes more than 10sec, IF the FK(mentioned above) is disabled insert statement is running fine.
note: Invoice Item table has 8.4million records
My assumption :
while inserting into Invoice attribute table the insert statement validated the FK with the invoice item table, since the new Inovice item id(PK column in invoice Item table) is not commited the insert statement takes time to validate the FK against (8.4million records)......
Please suggest me a solution.....................
Thanks in advance
NaveenPeri

I'll try with a blind shot : The FK is likely missing an index, thus performing full table scan on invoice attribute each time you perform an insert on the invoice attribute table.
By default an FK doesn't have an index. You must create one manually.
If this turns out to be a missfire then please post a plan with statistics for the attribute insertion.
Message was edited by:
76°®

Similar Messages

  • Insert statement taking more time

    Hi,
    Insert happening very slow after sqlldr happening in my program. Please find the below workflow of my program.
    1) SQLLDR will be called, it will insert around 4 lakhs records in 'TEMP" table using direct path load.Response time is good here.
    2)After, SQLLDR has finished its job, my procedure will be called, there every cursor statement working fine, but when it comes for "INSERT" statement it takes almost 40 mins.
    3)Insert statement like this
    INSERT /*+ append */ INTO HISTORY_TABLE(<COLUMN1>,<COLUMN2>,..etc) SELECT (<COLUMN1>,.<COLUMN2>...etc) from TEMP_TABLE;
    4)select records from temp table which records were inserted during sqlldr(direct=true),before procedure call.
    5)I check explain plan for the Insert statement it shows conventional path loading
    | Id  | Operation                | Name             | Rows  | Bytes | Cost (%CPU)|
    |   0 | INSERT STATEMENT         |                  |   409K|   143M|  6752   (2)|
    |   1 |  LOAD AS SELECT          | HISTORY_TABLE    |       |       |            |
    |   2 |   TABLE ACCESS FULL      | TEMP_TABLE       |   409K|   143M|  6752   (2)|
    6)Since i have no where condition in my insert statement it go for an full table scan.
    Kindly advice to impove its performance.
    My db is oracle 11g r2(11.2.0.3.0)
    OS-Windows server 2008 r2
    Tkprof for the sesion:
    call     count       cpu    elapsed       disk      query    current        rows
    Parse        0      0.00       0.00          0          0          0           0
    Execute      1     98.10    1860.58     347770      74736    1711253      407077
    Fetch        0      0.00       0.00          0          0          0           0
    total        1     98.10    1860.58     347770      74736    1711253      407077
    Misses in library cache during parse: 0
    Misses in library cache during execute: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 84     (recursive depth: 1)
    Elapsed times include waiting on following events:
      Event waited on                             Times   Max. Wait  Total Waited
      ----------------------------------------   Waited  ----------  ------------
      db file sequential read                    256304        6.61       1299.01
      direct path read temp                         273        3.47         14.99
      log buffer space                               22        0.75          3.84
      log file switch completion                      7       19.48         30.70
      log file switch (checkpoint incomplete)        16        8.12         17.15
      db file parallel read                           2        0.07          0.09
      log file switch (private strand flush incomplete)
                                                      3        0.32          0.74
      buffer busy waits                               4        0.00          0.00
      undo segment extension                          2        0.00          0.00
    SQL> show parameter optimizer
    NAME                                 TYPE        VALUE
    optimizer_capture_sql_plan_baselines boolean     FALSE
    optimizer_dynamic_sampling           integer     2
    optimizer_features_enable            string      11.2.0.3
    optimizer_index_caching              integer     0
    optimizer_index_cost_adj             integer     100
    optimizer_mode                       string      ALL_ROWS
    optimizer_secure_view_merging        boolean     TRUE
    optimizer_use_invisible_indexes      boolean     FALSE
    optimizer_use_pending_statistics     boolean     FALSE
    optimizer_use_sql_plan_baselines     boolean     TRUE
    SQL> show parameter db_file_multi
    NAME                                 TYPE        VALUE
    db_file_multiblock_read_count        integer     128
    SQL> show parameter db_block_size
    NAME                                 TYPE        VALUE
    db_block_size                        integer     8192
    SQL> show parameter cursor_sharing
    NAME                                 TYPE        VALUE
    cursor_sharing                       string      EXACT
    SQL>
    SQL> l
      1  select
      2* sname,pname,pval1,pval2 from sys.aux_stats$
    SQL> /
    SNAME                PNAME                     PVAL1 PVAL2
    SYSSTATS_INFO        STATUS                          COMPLETED
    SYSSTATS_INFO        DSTART                          11-03-2011 06:38
    SYSSTATS_INFO        DSTOP                           11-03-2011 06:38
    SYSSTATS_INFO        FLAGS                         1
    SYSSTATS_MAIN        CPUSPEEDNW           1720.20725
    SYSSTATS_MAIN        IOSEEKTIM                    10
    SYSSTATS_MAIN        IOTFRSPEED                 4096
    SYSSTATS_MAIN        SREADTIM
    SYSSTATS_MAIN        MREADTIM
    SYSSTATS_MAIN        CPUSPEED
    SYSSTATS_MAIN        MBRC
    SNAME                PNAME                     PVAL1 PVAL2
    SYSSTATS_MAIN        MAXTHR
    SYSSTATS_MAIN        SLAVETHR
    Thanks
    Faiz

    Hi,
    Below i apend the both table definitions. Please check
    CREATE TABLE HISTORY_TABLE
       ( DAT_TIM VARCHAR2(19 BYTE),
    REC_TYP VARCHAR2(2 BYTE),
    AUTH_PPD VARCHAR2(4 BYTE),
    LN_TERM VARCHAR2(4 BYTE),
    FIID_TERM VARCHAR2(4 BYTE),
    TERM_ID VARCHAR2(16 BYTE),
    LN_ISSUER VARCHAR2(4 BYTE),
    FIID_ISSUER VARCHAR2(20 BYTE),
    PAN VARCHAR2(19 BYTE),
    MBR_NUM VARCHAR2(3 BYTE),
    BRCH_ID VARCHAR2(4 BYTE),
    REGN_ID VARCHAR2(4 BYTE),
    USER_FLD1X VARCHAR2(2 BYTE),
    TYP_CDE VARCHAR2(2 BYTE),
    TYP VARCHAR2(4 BYTE),
    RTE_STAT VARCHAR2(2 BYTE),
    ORIGINATOR CHAR(1 BYTE),
    RESPONDER CHAR(1 BYTE),
    ENTRY_TIM VARCHAR2(19 BYTE),
    EXIT_TIM VARCHAR2(19 BYTE),
    RE_ENTRY_TIM VARCHAR2(19 BYTE),
    TRAN_DAT VARCHAR2(6 BYTE),
    TRAN_TIM VARCHAR2(8 BYTE),
    POST_DAT VARCHAR2(6 BYTE),
    ACQ_ICHG_SETL_DAT VARCHAR2(6 BYTE),
    ISS_ICHG_SETL_DAT VARCHAR2(6 BYTE),
    SEQ_NUM VARCHAR2(12 BYTE),
    TERM_TYP VARCHAR2(2 BYTE),
    TIM_OFST VARCHAR2(5 BYTE),
    ACQ_INST_ID_NUM VARCHAR2(11 BYTE),
    RCV_INST_ID_NUM VARCHAR2(11 BYTE),
    T_CDE VARCHAR2(2 BYTE),
    T_FROM VARCHAR2(2 BYTE),
    T_TO VARCHAR2(2 BYTE),
    FROM_ACCT VARCHAR2(24 BYTE),
    USER_FLD1 VARCHAR2(1 BYTE),
    TO_ACCT VARCHAR2(19 BYTE),
    MULT_ACCT VARCHAR2(1 BYTE),
    AMT1 VARCHAR2(19 BYTE),
    AMT2 VARCHAR2(19 BYTE),
    AMT3 VARCHAR2(19 BYTE),
    DEP_BAL_CR VARCHAR2(10 BYTE),
    DEP_TYP VARCHAR2(1 BYTE),
    RESP_BYTE1 VARCHAR2(3 BYTE),
    RESP_BYTE2 VARCHAR2(3 BYTE),
    TERM_NAME_LOC VARCHAR2(25 BYTE),
    TERM_OWNER_NAME VARCHAR2(40 BYTE),
    TERM_CITY VARCHAR2(13 BYTE),
    TERM_ST_X VARCHAR2(3 BYTE),
    TERM_CNTRY_X VARCHAR2(2 BYTE),
    OSEQ_NUM VARCHAR2(12 BYTE),
    OTRAN_DAT VARCHAR2(4 BYTE),
    OTRAN_TIM VARCHAR2(8 BYTE),
    B24_POST_DAT VARCHAR2(4 BYTE),
    ORIG_CRNCY_CDE VARCHAR2(3 BYTE),
    AUTH_CRNCY_CDE VARCHAR2(3 BYTE),
    AUTH_CONV_RATE VARCHAR2(8 BYTE),
    SETL_CRNCY_CDE VARCHAR2(3 BYTE),
    SETL_CONV_RATE VARCHAR2(8 BYTE),
    CONV_DAT_TIM VARCHAR2(19 BYTE),
    RVSL_RSN VARCHAR2(2 BYTE),
    PIN_OFST VARCHAR2(16 BYTE),
    SHRG_GRP VARCHAR2(1 BYTE),
    DEST_ORDER VARCHAR2(1 BYTE),
    AUTH_ID_RESP VARCHAR2(6 BYTE),
    IMP_IND VARCHAR2(1 BYTE),
    AVAIL_IMP VARCHAR2(2 BYTE),
    LEDG_IMP VARCHAR2(2 BYTE),
    HLD_AMT_IMP VARCHAR2(2 BYTE),
    CAF_REFR_IND VARCHAR2(1 BYTE),
    USER_FLD3 VARCHAR2(1 BYTE),
    DEP_SETL_IMP_FLG VARCHAR2(1 BYTE),
    ADJ_SETL_IMP_FLG VARCHAR2(1 BYTE),
    PBF1 VARCHAR2(1 BYTE),
    PBF2 VARCHAR2(1 BYTE),
    PBF3 VARCHAR2(1 BYTE),
    PBF4 VARCHAR2(1 BYTE),
    USER_FLD4 VARCHAR2(16 BYTE),
    FRWD_INST_ID_NUM VARCHAR2(11 BYTE),
    CRD_ACCPT_ID_NUM VARCHAR2(40 BYTE),
    CRD_ISS_ID_NUM VARCHAR2(11 BYTE),
    USER_FLD6 VARCHAR2(1 BYTE),
    FILE_NAME VARCHAR2(100 BYTE),
    ERR_FLAG CHAR(1 BYTE),
    AMT2_ACTUAL VARCHAR2(20 BYTE),
    ID_COL NUMBER(23,0),
    RVSL_FLAG CHAR(1 BYTE),
    SWRE_ID VARCHAR2(20 BYTE),
    GAC_ID VARCHAR2(20 BYTE),
    INS_USER NUMBER(5,0),
    PART_CODE NUMBER(3,0),
    ISS_RECON NUMBER(1,0),
    ACQ_RECON NUMBER(1,0),
    CROSS_BRANCH CHAR(1 BYTE),
    CONSORTIUM_CODE NUMBER(3,0),
    FROM_HOST VARCHAR2(1 BYTE),
    FROM_HOST_ACQ VARCHAR2(1 BYTE),
    AUDIT_NUM VARCHAR2(12 BYTE),
    CAPTURE_CODE VARCHAR2(1 BYTE),
    RESP_DAT_TIME VARCHAR2(19 BYTE),
    PAN_SEQ_NUM NUMBER(1,0),
    SERVICE_CODE VARCHAR2(3 BYTE),
    ISS_BIN VARCHAR2(6 BYTE),
    POS_DATA VARCHAR2(12 BYTE),
    SECURITY_DATA VARCHAR2(8 BYTE),
    CASHBACK_AMT VARCHAR2(15 BYTE),
    REPLACEMENT_AMOUNT VARCHAR2(15 BYTE),
    SETTL_AMT VARCHAR2(16 BYTE),
    TRAN_FEE VARCHAR2(15 BYTE),
    SETL_FEE VARCHAR2(15 BYTE),
    MERC_CODE VARCHAR2(4 BYTE),
    NTWORK_DATA VARCHAR2(12 BYTE),
    PRIVATE_DATA_C_100 VARCHAR2(100 BYTE),
    PAYMENT_INFO VARCHAR2(50 BYTE),
    SURCHARGE_FEE VARCHAR2(15 BYTE),
    SURC_BILL_AMT VARCHAR2(19 BYTE),
    PROCESSING_CODE VARCHAR2(7 BYTE),
    FRWD_CNTRY_CODE VARCHAR2(3 BYTE),
    NTWORK_CODE VARCHAR2(2 BYTE),
    FUNCTION_CODE VARCHAR2(3 BYTE),
    REASON_CODE VARCHAR2(4 BYTE),
    FEES VARCHAR2(10 BYTE),
    SUR_CHARGE VARCHAR2(10 BYTE),
    MESSAGE_TYPE VARCHAR2(4 BYTE),
    APPROVE_STATUS VARCHAR2(10 BYTE),
    CPS_TRAN_ID VARCHAR2(20 BYTE),
    BANKTYPE_CODE VARCHAR2(5 BYTE),
    RRB_BIN_CODE VARCHAR2(7 BYTE),
    T_TYPE VARCHAR2(5 BYTE),
    FEE_CRNCY VARCHAR2(25 BYTE),
    FEE_INDICATOR VARCHAR2(1 BYTE),
    FEE_TYPE VARCHAR2(84 BYTE),
    CREDIT_BANK_CODE VARCHAR2(11 BYTE),
    CREDIT_BR_CODE VARCHAR2(8 BYTE),
    DEBIT_BANK_CODE VARCHAR2(11 BYTE),
    ACTION_CODE VARCHAR2(3 BYTE),
    ZEROS VARCHAR2(6 BYTE),
    OTRACE_AUDIT_NO VARCHAR2(6 BYTE),
    OFEE_TYPE1 VARCHAR2(2 BYTE),
    OFEE_CRNCY1 VARCHAR2(3 BYTE),
    OFEE_AMNT VARCHAR2(16 BYTE),
    OFEE_INDICATOR VARCHAR2(1 BYTE),
    SPACES VARCHAR2(2 BYTE),
    ACQ_BANK_CODE VARCHAR2(6 BYTE),
    CASHAT_POS VARCHAR2(16 BYTE),
    LTS_STATUS VARCHAR2(30 BYTE),
    APP_CODE VARCHAR2(6 BYTE),
    CARD_ACCEPTID VARCHAR2(15 BYTE),
    RESPONSE_CODE VARCHAR2(15 BYTE),
    RES_RECVD_HOST VARCHAR2(1 BYTE),
    DEVICE_ID VARCHAR2(16 BYTE),
    RECORD_TYPE VARCHAR2(1 BYTE),
    RRT_DEBIT_BANK_CODE VARCHAR2(11 BYTE),
    ORIG_TYP VARCHAR2(6 BYTE),
    DEVICE_TYPE VARCHAR2(3 BYTE),
    ORGTRAN_CODE VARCHAR2(4 BYTE),
    BILL_CRNCY VARCHAR2(3 BYTE),
    BILL_AMNT VARCHAR2(19 BYTE),
    OTRAN_AMNT VARCHAR2(19 BYTE),
    INS_DATE DATE,
    RECON_FLAG VARCHAR2(2 BYTE),
    TRAN_ID VARCHAR2(25 BYTE)
       ) SEGMENT CREATION IMMEDIATE
      PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
    NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_TST ;
      CREATE INDEX CMS_ALL_SWT_DATA_INDEX ON HISTORY_TABLE (TYP, DEVICE_ID, FROM_ACCT, AMT1, NTWORK_CODE, ISS_BIN, POST_DAT, RESP_BYTE1, DEVICE_TYPE, T_CDE, PRIVATE_DATA_C_100, REASON_CODE)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX CMS_ALL_SWT_DATA_INDEX1 ON HISTORY_TABLE (TO_NUMBER(AMT1))
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX CMS_ALL_SWT_DATA_INDEX_FN ON HISTORY_TABLE (SUBSTR(DEVICE_ID,4))
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX CMS_ALL_SWT_DATA_INDEX_IDX ON HISTORY_TABLE (T_CDE, PRIVATE_DATA_C_100, ISS_BIN)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX CMS_ALL_SWT_DATA_INDEX_TST ON HISTORY_TABLE (TYP, POST_DAT, RESP_BYTE1, DEVICE_TYPE, AMT1)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX CMS_ALL_SWT_DATA_INDEX_TST1 ON HISTORY_TABLE (DEVICE_TYPE, TO_NUMBER(AMT1))
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX IDX_ALLSWT_PAN ON HISTORY_TABLE (PAN)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
    Table Definition for TEMP Table:
    CREATE TABLE REC_TLF_TEMP
       ( DAT_TIM VARCHAR2(19 BYTE),
    REC_TYP VARCHAR2(2 BYTE),
    AUTH_PPD VARCHAR2(4 BYTE),
    LN_TERM VARCHAR2(4 BYTE),
    FIID_TERM VARCHAR2(4 BYTE),
    TERM_ID VARCHAR2(16 BYTE),
    LN_ISSUER VARCHAR2(4 BYTE),
    FIID_ISSUER VARCHAR2(20 BYTE),
    PAN VARCHAR2(19 BYTE),
    MBR_NUM VARCHAR2(3 BYTE),
    BRCH_ID VARCHAR2(4 BYTE),
    REGN_ID VARCHAR2(4 BYTE),
    USER_FLD1X VARCHAR2(2 BYTE),
    TYP_CDE VARCHAR2(2 BYTE),
    TYP VARCHAR2(4 BYTE),
    RTE_STAT VARCHAR2(2 BYTE),
    ORIGINATOR CHAR(1 BYTE),
    RESPONDER CHAR(1 BYTE),
    ENTRY_TIM VARCHAR2(19 BYTE),
    EXIT_TIM VARCHAR2(19 BYTE),
    RE_ENTRY_TIM VARCHAR2(19 BYTE),
    TRAN_DAT VARCHAR2(6 BYTE),
    TRAN_TIM VARCHAR2(8 BYTE),
    POST_DAT VARCHAR2(6 BYTE),
    ACQ_ICHG_SETL_DAT VARCHAR2(6 BYTE),
    ISS_ICHG_SETL_DAT VARCHAR2(6 BYTE),
    SEQ_NUM VARCHAR2(12 BYTE),
    TERM_TYP VARCHAR2(2 BYTE),
    TIM_OFST VARCHAR2(5 BYTE),
    ACQ_INST_ID_NUM VARCHAR2(11 BYTE),
    RCV_INST_ID_NUM VARCHAR2(11 BYTE),
    T_CDE VARCHAR2(2 BYTE),
    T_FROM VARCHAR2(2 BYTE),
    T_TO VARCHAR2(2 BYTE),
    FROM_ACCT VARCHAR2(24 BYTE),
    USER_FLD1 VARCHAR2(1 BYTE),
    TO_ACCT VARCHAR2(19 BYTE),
    MULT_ACCT VARCHAR2(1 BYTE),
    AMT1 VARCHAR2(19 BYTE),
    AMT2 VARCHAR2(19 BYTE),
    AMT3 VARCHAR2(19 BYTE),
    DEP_BAL_CR VARCHAR2(10 BYTE),
    DEP_TYP VARCHAR2(1 BYTE),
    RESP_BYTE1 VARCHAR2(3 BYTE),
    RESP_BYTE2 VARCHAR2(3 BYTE),
    TERM_NAME_LOC VARCHAR2(25 BYTE),
    TERM_OWNER_NAME VARCHAR2(40 BYTE),
    TERM_CITY VARCHAR2(13 BYTE),
    TERM_ST_X VARCHAR2(3 BYTE),
    TERM_CNTRY_X VARCHAR2(2 BYTE),
    OSEQ_NUM VARCHAR2(12 BYTE),
    OTRAN_DAT VARCHAR2(4 BYTE),
    OTRAN_TIM VARCHAR2(8 BYTE),
    B24_POST_DAT VARCHAR2(4 BYTE),
    ORIG_CRNCY_CDE VARCHAR2(3 BYTE),
    AUTH_CRNCY_CDE VARCHAR2(3 BYTE),
    AUTH_CONV_RATE VARCHAR2(8 BYTE),
    SETL_CRNCY_CDE VARCHAR2(3 BYTE),
    SETL_CONV_RATE VARCHAR2(8 BYTE),
    CONV_DAT_TIM VARCHAR2(19 BYTE),
    RVSL_RSN VARCHAR2(2 BYTE),
    PIN_OFST VARCHAR2(16 BYTE),
    SHRG_GRP VARCHAR2(1 BYTE),
    DEST_ORDER VARCHAR2(1 BYTE),
    AUTH_ID_RESP VARCHAR2(6 BYTE),
    IMP_IND VARCHAR2(1 BYTE),
    AVAIL_IMP VARCHAR2(2 BYTE),
    LEDG_IMP VARCHAR2(2 BYTE),
    HLD_AMT_IMP VARCHAR2(2 BYTE),
    CAF_REFR_IND VARCHAR2(1 BYTE),
    USER_FLD3 VARCHAR2(1 BYTE),
    DEP_SETL_IMP_FLG VARCHAR2(1 BYTE),
    ADJ_SETL_IMP_FLG VARCHAR2(1 BYTE),
    PBF1 VARCHAR2(1 BYTE),
    PBF2 VARCHAR2(1 BYTE),
    PBF3 VARCHAR2(1 BYTE),
    PBF4 VARCHAR2(1 BYTE),
    USER_FLD4 VARCHAR2(16 BYTE),
    FRWD_INST_ID_NUM VARCHAR2(11 BYTE),
    CRD_ACCPT_ID_NUM VARCHAR2(40 BYTE),
    CRD_ISS_ID_NUM VARCHAR2(11 BYTE),
    USER_FLD6 VARCHAR2(1 BYTE),
    FILE_NAME VARCHAR2(100 BYTE),
    ERR_FLAG CHAR(1 BYTE),
    AMT2_ACTUAL VARCHAR2(20 BYTE),
    ID_COL NUMBER(23,0),
    RVSL_FLAG CHAR(1 BYTE),
    SWRE_ID VARCHAR2(20 BYTE),
    GAC_ID VARCHAR2(20 BYTE),
    INS_USER NUMBER(5,0),
    PART_CODE NUMBER(3,0),
    ISS_RECON NUMBER(1,0),
    ACQ_RECON NUMBER(1,0),
    CROSS_BRANCH CHAR(1 BYTE),
    CONSORTIUM_CODE NUMBER(3,0),
    FROM_HOST VARCHAR2(1 BYTE),
    FROM_HOST_ACQ VARCHAR2(1 BYTE),
    AUDIT_NUM VARCHAR2(12 BYTE),
    CAPTURE_CODE VARCHAR2(1 BYTE),
    RESP_DAT_TIME VARCHAR2(19 BYTE),
    PAN_SEQ_NUM NUMBER(1,0),
    SERVICE_CODE VARCHAR2(3 BYTE),
    ISS_BIN VARCHAR2(6 BYTE),
    POS_DATA VARCHAR2(12 BYTE),
    SECURITY_DATA VARCHAR2(8 BYTE),
    CASHBACK_AMT VARCHAR2(15 BYTE),
    REPLACEMENT_AMOUNT VARCHAR2(15 BYTE),
    SETTL_AMT VARCHAR2(16 BYTE),
    TRAN_FEE VARCHAR2(15 BYTE),
    SETL_FEE VARCHAR2(15 BYTE),
    MERC_CODE VARCHAR2(4 BYTE),
    NTWORK_DATA VARCHAR2(12 BYTE),
    PRIVATE_DATA_C_100 VARCHAR2(100 BYTE),
    PAYMENT_INFO VARCHAR2(50 BYTE),
    SURCHARGE_FEE VARCHAR2(15 BYTE),
    SURC_BILL_AMT VARCHAR2(19 BYTE),
    PROCESSING_CODE VARCHAR2(7 BYTE),
    FRWD_CNTRY_CODE VARCHAR2(3 BYTE),
    NTWORK_CODE VARCHAR2(2 BYTE),
    FUNCTION_CODE VARCHAR2(3 BYTE),
    REASON_CODE VARCHAR2(4 BYTE),
    FEES VARCHAR2(10 BYTE),
    SUR_CHARGE VARCHAR2(10 BYTE),
    MESSAGE_TYPE VARCHAR2(4 BYTE),
    APPROVE_STATUS VARCHAR2(10 BYTE),
    CPS_TRAN_ID VARCHAR2(20 BYTE),
    BANKTYPE_CODE VARCHAR2(5 BYTE),
    RRB_BIN_CODE VARCHAR2(7 BYTE),
    T_TYPE VARCHAR2(5 BYTE),
    FEE_CRNCY VARCHAR2(25 BYTE),
    FEE_INDICATOR VARCHAR2(1 BYTE),
    FEE_TYPE VARCHAR2(84 BYTE),
    CREDIT_BANK_CODE VARCHAR2(11 BYTE),
    CREDIT_BR_CODE VARCHAR2(8 BYTE),
    DEBIT_BANK_CODE VARCHAR2(11 BYTE),
    ACTION_CODE VARCHAR2(3 BYTE),
    ZEROS VARCHAR2(6 BYTE),
    OTRACE_AUDIT_NO VARCHAR2(6 BYTE),
    OFEE_TYPE1 VARCHAR2(2 BYTE),
    OFEE_CRNCY1 VARCHAR2(3 BYTE),
    OFEE_AMNT VARCHAR2(16 BYTE),
    OFEE_INDICATOR VARCHAR2(1 BYTE),
    SPACES VARCHAR2(2 BYTE),
    ACQ_BANK_CODE VARCHAR2(6 BYTE),
    CASHAT_POS VARCHAR2(16 BYTE),
    LTS_STATUS VARCHAR2(30 BYTE),
    APP_CODE VARCHAR2(6 BYTE),
    CARD_ACCEPTID VARCHAR2(15 BYTE),
    RESPONSE_CODE VARCHAR2(15 BYTE),
    RES_RECVD_HOST VARCHAR2(1 BYTE),
    DEVICE_ID VARCHAR2(16 BYTE),
    RECORD_TYPE VARCHAR2(1 BYTE),
    RRT_DEBIT_BANK_CODE VARCHAR2(11 BYTE),
    ORIG_TYP VARCHAR2(6 BYTE),
    DEVICE_TYPE VARCHAR2(3 BYTE),
    ORGTRAN_CODE VARCHAR2(4 BYTE),
    BILL_CRNCY VARCHAR2(3 BYTE),
    TRAN_ID VARCHAR2(25 BYTE),
    RECON_FLAG VARCHAR2(2 BYTE),
    BILL_AMNT VARCHAR2(19 BYTE),
    OTRAN_AMNT VARCHAR2(19 BYTE),
    INS_DATE DATE
       ) SEGMENT CREATION IMMEDIATE
      PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
    NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_TST ;
      CREATE INDEX CMS_TLF_TEMP_INDEX3 ON REC_TLF_TEMP (TO_NUMBER(PAN))
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX CMS_TLF_TEMP_INDEX4 ON REC_TLF_TEMP (TO_NUMBER(AUDIT_NUM))
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX IDX_REC_TEMP_CDE ON REC_TLF_TEMP (T_CDE)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_TST ;
      CREATE INDEX IDX_TLF_DEVICEID ON REC_TLF_TEMP (DEVICE_ID)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX IDX_TLF_PRIVATE ON REC_TLF_TEMP (PRIVATE_DATA_C_100)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_TST ;
      CREATE INDEX IDX_TLF_TEMP_BYTE1 ON REC_TLF_TEMP (PRIVATE_DATA_C_100, ISS_BIN, NTWORK_CODE)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_TST ;
      CREATE INDEX IDX_TLF_TEMP_TST ON REC_TLF_TEMP (RESP_BYTE1)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX IND_TLFTEMP_RVSLFLG ON REC_TLF_TEMP (RVSL_FLAG)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX IND_TLFTEMP_TRMID_TCD ON REC_TLF_TEMP (TERM_ID, T_CDE)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX IND_TLFTMP_NWCDE ON REC_TLF_TEMP (NTWORK_CODE)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX REC_TLF_TEMP_INDEX ON REC_TLF_TEMP (PAN, SEQ_NUM, AUDIT_NUM)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
      CREATE INDEX TEMPREVLSET ON REC_TLF_TEMP (SEQ_NUM, TYP, REC_TYP, PAN)
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE TBS_IDX ;
    It shows that no triggers for both the tables.
    Confirm that no where condition being used in the SQL.
    Thanks
    Faiz

  • Delete Statement taking long time

    Can anyone help for the below query:
    DELETE FROM apm_prod_mst_interface
         WHERE plant_code= 'CAPL'
    AND trunc(start_date) = '20-FEB-2008'
    AND shift = p_mb_details.shift
    AND formula_class = p_mb_details.formula_class
    AND item_no = p_batch_details.item_no
    AND line_no = p_mb_details.line_no
    AND nvl(formula_no,'1') = NVL('ASCC1','1')
    AND nvl(formula_vers,-1) = NVL(13,-1)
    AND uom = 'KG'
    AND NVL(routing_no,'-1') = NVL('SFSDF-2','-1')
    AND NVL(routing_vers,0) = NVL(14,0)
    AND NVL(plan_start_date,trunc(sysdate)) = NVL('20-FEB-2008',trunc(sysdate))
    AND NVL(expct_cmplt_date,trunc(sysdate)) = NVL('20-FEB-2008',trunc(sysdate))
    AND user_name = 'DUMMY'
    AND schedule = 2
    AND plan_qty > 0;
    Regards

    Check the High Water Mark of the table!
    If the table has lots of inserts & deletes all the time, the HWM may be 1000 miles away from the actual data (But Orcale will need to read all the blocks to determine if they are empty).
    Has the table been analyzed recently?
    Explain plan for the equivalent SELECT?
    IF you have index'es on all the fields, then an update will take time, since it has to update 15-20 indexes.
    I would:
    1) Try to time just the SELECT (explain plan & autotrace)
    2) Gather stats
    3) SELECT again - and see if difference?
    4) If not -> ALTER TABLE <name> MOVE (to fix HWM)
    5) SELECT again
    best regards
    Mette

  • Update statement taking long time

    Hi All,
    The following query is taking too much time for update the 100000 records.
    Please tell me how can this query time get reduced.
    DECLARE
       CURSOR cur IS
         SELECT c.account_id FROM crm_statement_fulfilled_sid c;
    BEGIN
       FOR i IN cur LOOP
         UPDATE crm_statement_fulfilled_sid a
            SET a.rewards_expired = (SELECT abs(nvl(SUM(t.VALUE), 0))
                                       FROM crm_reward_txns t
                                      WHERE txn_date BETWEEN
                                            (SELECT (decode(MAX(csf.procg_date) + 1,
                                                            NULL,
                                                            to_date('01-May-2011',
                                                                    'DD-MM-YYYY'),
                                                            MAX(csf.procg_date) + 1))
                                               FROM crm_statement_fulfilled csf
                                              WHERE csf.procg_date < '01-aug-2012'
                                                AND account_id = i.account_id) /*points_start_date_in*/
                                        AND '01-aug-2012'
                                        AND reason = 'RE'
                                        AND t.account_id = i.account_id);
       END LOOP;
    END;Any help?
    Sid

    Hoek wrote:
    Second: you're doing row-by-row (= slow-by-slow) processing.
    See if you can rewrite your code into a single SQL UPDATE statement that will process an entire SET at once.Well to be nitpicking. The op already does a single big update. He just does it again and again and again for each account id. Each time completely overwriting the values from the last account id.

  • 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>

  • 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.>

  • Master Dataload is taking long time to complete

    Hi
    In last couple of weeks, we are experience the delay for master dataload job. These dataload should take 5-8 minute to complete but it is taking more then 5 hour to complete. here we are using process chain for master dataload.
    Any idea? We don't understand where to start to check the root cause of this problem.
    Regards
    Amar

    Hi Freinds
    Some update of our master dataload. Still not resolved.
    Seem to me, our problem is related to Hierarchy in BW server.It is taking long time to update the hierarchy in BW server. As i told you, problem occur only when loading master dataload. For transaction dataload, no IDOC get stuck in R/3 (NPR) server. There are enough resources in both R/3 and BW server for trfc.
    There are total 9 hierarchy in the master dataload that is delaying in the process for update. If you have seen this type of problem for the following hierarchy, pls update me.
    A     0ACCOUNT (InfoSource)
         Hierarchy
    1     Fin statement vers FSV5
    2     Cost Element by fun area
    B     0COSTCENTER (InfoSource)
         Hierarchy
    3     Mitel Network
    4     NA MNS Total
    5     CEO
    6     Global Support Cost center
    C     0COORDER (infosource)
         Hierarchy
    7     Total R&D (Ron Wellard)
    8     RD YRD1
    9     RD YRD2
    Regards
    Amarjit

  • 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.

  • Taking long time to READ records

    Hi,
    I am fetching Purchase order numbers and vendors from EKKO and LFA1 table join and comapring them with plant entries from EKPO table based on REGIO field. then based on those values of EBELN and LIFNR wherein REGIO field doesnt match, m trying to populate the Output table of ALV, but its taking a long time.
    code is attached below.
    Moderator message - Please respect the 5,000 character maximum when posting. Post only the relevant portions of code
    while debugging i found out that select statement fetch values quickly but READ statement takes long time.
    Please help. Thanks in advance.
    Edited by: Rob Burbank on Jan 3, 2011 9:20 AM

    Hi,
    If join is giving the problem then try for the for all entries, but before using for all entries you have to remove the duplication entries from driver internal table.
    After all for all entries you used different kind of internal table like Sorted or hashed table. If your data don't have duplicate value the fields which you want to put with key fields used hashed internal table  or if you want to put where condition on internal table then used sorted internal table. Mean that you have to define internal table as sorted or hased internal.
    Read link provide by Raymond Giuseppi, as mention in above tread.
    You can also avoid data transfer time from table to work area using fields symbols.

  • Rtf template taking long time to load xml

    Dear All
    rtf template taking long time to load xml and Insert fields. I am using MS office2010. It was working before.
    can any one help me out.
    Regards
    Arifuddin

    Hi;
    Pelase review below which could be helpful for you
    XML Publisher Report Issues, Recommendations and Errors [ID 862644.1]
    Regard
    Helios

  • Query taking long time for EXTRACTING the data more than 24 hours

    Hi ,
    Query taking long time for EXTRACTING the data more than 24 hours please find the query and explain plan details below even indexes avilable on table's goe's to FULL TABLE SCAN. please suggest me.......
    SQL> explain plan for select a.account_id,round(a.account_balance,2) account_balance,
    2 nvl(ah.invoice_id,ah.adjustment_id) transaction_id,
    to_char(ah.effective_start_date,'DD-MON-YYYY') transaction_date,
    to_char(nvl(i.payment_due_date,
    to_date('30-12-9999','dd-mm-yyyy')),'DD-MON-YYYY')
    due_date, ah.current_balance-ah.previous_balance amount,
    decode(ah.invoice_id,null,'A','I') transaction_type
    3 4 5 6 7 8 from account a,account_history ah,invoice i_+
    where a.account_id=ah.account_id
    and a.account_type_id=1000002
    and round(a.account_balance,2) > 0
    and (ah.invoice_id is not null or ah.adjustment_id is not null)
    and ah.CURRENT_BALANCE > ah.previous_balance
    and ah.invoice_id=i.invoice_id(+)
    AND a.account_balance > 0
    order by a.account_id,ah.effective_start_date desc; 9 10 11 12 13 14 15 16
    Explained.
    SQL> select * from table(dbms_xplan.display);
    PLAN_TABLE_OUTPUT
    | Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)|
    | 0 | SELECT STATEMENT | | 544K| 30M| | 693K (20)|
    | 1 | SORT ORDER BY | | 544K| 30M| 75M| 693K (20)|
    |* 2 | HASH JOIN | | 544K| 30M| | 689K (20)|
    |* 3 | TABLE ACCESS FULL | ACCOUNT | 20080 | 294K| | 6220 (18)|
    |* 4 | HASH JOIN OUTER | | 131M| 5532M| 5155M| 678K (20)|
    |* 5 | TABLE ACCESS FULL| ACCOUNT_HISTORY | 131M| 3646M| | 197K (25)|
    | 6 | TABLE ACCESS FULL| INVOICE | 262M| 3758M| | 306K (18)|
    Predicate Information (identified by operation id):
    2 - access("A"."ACCOUNT_ID"="AH"."ACCOUNT_ID")
    3 - filter("A"."ACCOUNT_TYPE_ID"=1000002 AND "A"."ACCOUNT_BALANCE">0 AND
    ROUND("A"."ACCOUNT_BALANCE",2)>0)
    4 - access("AH"."INVOICE_ID"="I"."INVOICE_ID"(+))
    5 - filter("AH"."CURRENT_BALANCE">"AH"."PREVIOUS_BALANCE" AND ("AH"."INVOICE_ID"
    IS NOT NULL OR "AH"."ADJUSTMENT_ID" IS NOT NULL))
    22 rows selected.
    Index Details:+_
    SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,TABLE_NAME from dba_ind_columns where
    2 table_name in ('INVOICE','ACCOUNT','ACCOUNT_HISTORY') order by 4;
    INDEX_OWNER INDEX_NAME COLUMN_NAME TABLE_NAME
    OPS$SVM_SRV4 P_ACCOUNT ACCOUNT_ID ACCOUNT
    OPS$SVM_SRV4 U_ACCOUNT_NAME ACCOUNT_NAME ACCOUNT
    OPS$SVM_SRV4 U_ACCOUNT CUSTOMER_NODE_ID ACCOUNT
    OPS$SVM_SRV4 U_ACCOUNT ACCOUNT_TYPE_ID ACCOUNT
    OPS$SVM_SRV4 I_ACCOUNT_ACCOUNT_TYPE ACCOUNT_TYPE_ID ACCOUNT
    OPS$SVM_SRV4 I_ACCOUNT_INVOICE INVOICE_ID ACCOUNT
    OPS$SVM_SRV4 I_ACCOUNT_PREVIOUS_INVOICE PREVIOUS_INVOICE_ID ACCOUNT
    OPS$SVM_SRV4 U_ACCOUNT_NAME_ID ACCOUNT_NAME ACCOUNT
    OPS$SVM_SRV4 U_ACCOUNT_NAME_ID ACCOUNT_ID ACCOUNT
    OPS$SVM_SRV4 I_LAST_MODIFIED_ACCOUNT LAST_MODIFIED ACCOUNT
    OPS$SVM_SRV4 I_ACCOUNT_INVOICE_ACCOUNT INVOICE_ACCOUNT_ID ACCOUNT
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ACCOUNT ACCOUNT_ID ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ACCOUNT SEQNR ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_INVOICE INVOICE_ID ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ADINV INVOICE_ID ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_CIA CURRENT_BALANCE ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_CIA INVOICE_ID ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_CIA ADJUSTMENT_ID ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_CIA ACCOUNT_ID ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_LMOD LAST_MODIFIED ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ADINV ADJUSTMENT_ID ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_PAYMENT PAYMENT_ID ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ADJUSTMENT ADJUSTMENT_ID ACCOUNT_HISTORY
    OPS$SVM_SRV4 I_ACCOUNT_HISTORY_APPLIED_DT APPLIED_DATE ACCOUNT_HISTORY
    OPS$SVM_SRV4 P_INVOICE INVOICE_ID INVOICE
    OPS$SVM_SRV4 U_INVOICE CUSTOMER_INVOICE_STR INVOICE
    OPS$SVM_SRV4 I_LAST_MODIFIED_INVOICE LAST_MODIFIED INVOICE
    OPS$SVM_SRV4 U_INVOICE_ACCOUNT ACCOUNT_ID INVOICE
    OPS$SVM_SRV4 U_INVOICE_ACCOUNT BILL_RUN_ID INVOICE
    OPS$SVM_SRV4 I_INVOICE_BILL_RUN BILL_RUN_ID INVOICE
    OPS$SVM_SRV4 I_INVOICE_INVOICE_TYPE INVOICE_TYPE_ID INVOICE
    OPS$SVM_SRV4 I_INVOICE_CUSTOMER_NODE CUSTOMER_NODE_ID INVOICE
    32 rows selected.
    Regards,
    Bathula
    Oracle-DBA

    I have some suggestions. But first, you realize that you have some redundant indexes, right? You have an index on account(account_name) and also account(account_name, account_id), and also account_history(invoice_id) and account_history(invoice_id, adjustment_id). No matter, I will suggest some new composite indexes.
    Also, you do not need two lines for these conditions:
    and round(a.account_balance, 2) > 0
    AND a.account_balance > 0
    You can just use: and a.account_balance >= 0.005
    So the formatted query isselect a.account_id,
           round(a.account_balance, 2) account_balance,
           nvl(ah.invoice_id, ah.adjustment_id) transaction_id,
           to_char(ah.effective_start_date, 'DD-MON-YYYY') transaction_date,
           to_char(nvl(i.payment_due_date, to_date('30-12-9999', 'dd-mm-yyyy')),
                   'DD-MON-YYYY') due_date,
           ah.current_balance - ah.previous_balance amount,
           decode(ah.invoice_id, null, 'A', 'I') transaction_type
      from account a, account_history ah, invoice i
    where a.account_id = ah.account_id
       and a.account_type_id = 1000002
       and (ah.invoice_id is not null or ah.adjustment_id is not null)
       and ah.CURRENT_BALANCE > ah.previous_balance
       and ah.invoice_id = i.invoice_id(+)
       AND a.account_balance >= .005
    order by a.account_id, ah.effective_start_date desc;You will probably want to select:
    1. From ACCOUNT first (your smaller table), for which you supply a literal on account_type_id. That should limit the accounts retrieved from ACCOUNT_HISTORY
    2. From ACCOUNT_HISTORY. We want to limit the records as much as possible on this table because of the outer join.
    3. INVOICE we want to access last because it seems to be least restricted, it is the biggest, and it has the outer join condition so it will manufacture rows to match as many rows as come back from account_history.
    Try the query above after creating the following composite indexes. The order of the columns is important:create index account_composite_i on account(account_type_id, account_balance, account_id);
    create index acct_history_comp_i on account_history(account_id, invoice_id, adjustment_id, current_balance, previous_balance, effective_start_date);
    create index invoice_composite_i on invoice(invoice_id, payment_due_date);All the columns used in the where clause will be indexed, in a logical order suited to the needs of the query. Plus each selected column is indexed as well so that we should not need to touch the tables at all to satisfy the query.
    Try the query after creating these indexes.
    A final suggestion is to try larger sort and hash area sizes and a manual workarea policy.alter session set workarea_size_policy = manual;
    alter session set sort_area_size = 2147483647;
    alter session set hash_area_size = 2147483647;

  • 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

  • Create table taking long time

    my select query(2m records) coming within a second but while creating a table (nologging) based on the select clause it is taking long time.
    can anybody give me the suggestion which part i will look to improve the performance..

    Plan
    SELECT STATEMENT ALL_ROWS Cost: 11 Bytes: 655 Cardinality: 1                                              
         19 FILTER                                         
              18 NESTED LOOPS Cost: 11 Bytes: 655 Cardinality: 1                                    
                   15 NESTED LOOPS Cost: 9 Bytes: 617 Cardinality: 1                               
                        12 NESTED LOOPS Cost: 8 Bytes: 481 Cardinality: 1                          
                             9 NESTED LOOPS Cost: 6 Bytes: 435 Cardinality: 1                     
                                  6 NESTED LOOPS Cost: 4 Bytes: 209 Cardinality: 1                
                                       3 TABLE ACCESS BY INDEX ROWID TABLE OYSTER_WEB3.TRANSACTION Cost: 2 Bytes: 155 Cardinality: 1           
                                            2 BITMAP CONVERSION TO ROWIDS      
                                                 1 BITMAP INDEX SINGLE VALUE INDEX (BITMAP) OYSTER_WEB3.IX_LINE_COMMODITY_ID
                                       5 TABLE ACCESS BY INDEX ROWID TABLE OYSTERPLUS_DATA.BRIO_SUPPLIERS Cost: 2 Bytes: 54 Cardinality: 1           
                                            4 INDEX UNIQUE SCAN INDEX (UNIQUE) OYSTERPLUS_DATA.PK_BRIO_SUPPLIERS Cost: 1 Cardinality: 1      
                                  8 TABLE ACCESS BY INDEX ROWID TABLE OYSTER3.FLAT_SITE_MV Cost: 2 Bytes: 226 Cardinality: 1                
                                       7 INDEX UNIQUE SCAN INDEX (UNIQUE) OYSTER3.PK_FLAT_SITE_MV Cost: 1 Cardinality: 1           
                             11 TABLE ACCESS BY INDEX ROWID TABLE OYSTER3.SITE_COMMODITY_CODING Cost: 2 Bytes: 46 Cardinality: 1                     
                                  10 INDEX UNIQUE SCAN INDEX (UNIQUE) OYSTER3.PK_SITE_COMMODITY_CODING Cost: 1 Cardinality: 1                
                        14 TABLE ACCESS BY INDEX ROWID TABLE OYSTERPLUS_DATA.BRIO_COMMODITIES Cost: 1 Bytes: 136 Cardinality: 1                          
                             13 INDEX UNIQUE SCAN INDEX (UNIQUE) OYSTERPLUS_DATA.PK_BRIO_COMMODITIES Cost: 0 Cardinality: 1                     
                   17 TABLE ACCESS BY INDEX ROWID TABLE OYSTER3.SUPPLIER_ALIAS Cost: 2 Bytes: 38 Cardinality: 1                               
                        16 INDEX UNIQUE SCAN INDEX (UNIQUE) OYSTER3.PK_SUPPLIER_ALIAS Cost: 1 Cardinality: 1

  • You are running a report. It is taking long time for

    You are running a report. It is taking long time for
    execution. What steps will you do to reduce the
    execution time.
        plx explain clearly

    Avoid loops inside loops.
    Avoid select inside loops.
    Select only the data that is required instead of using select *
    Select the field in the sequence as they are present in the database, and also specify the fields in the where clause in the same sequence.
    When ur using for all entries in the select statement, check whether the internal table to which ur refering is not initial.
    Remove select... endselect instead use into table
    Avoid Select Single inside the loop, instead select all the data before the loop and read that internal table inside the loop using binary search.
    Sort the Internal tables where ever necessary.

Maybe you are looking for