How To reduce UNDO records

Scenario:
Table A has 40 million records and table B has 30 million records.
And we have standy Database so there is no option for using Nologging.
Using Join and where clause i need to insert around 15 million records to table C.
If we insert using select statement it will generate more UNDO records
Please provide me the solution so that i can avoid UNDO as much as possibe.
Regards
Deepak S

>>when u give create table as it will generate undo . my table consists of 15 million records . when we create table d as select * from tablename . It will generte more undo..
My suggession is give the query in toad save the output in .dat file . using sqlloader we can import the data. So we can reduce the undo ....
Hmmm, have you some clue about regular sqlloader generate less redo than CTAS ?
We're agree about regular term since you have a standby databasen nologging operation should be avoid.
Read the following test case. Note that I'm alone on the database, so all the redo generation are because my queries.
First, test with CTAS method :
SQL> select b.name, a.value
  2  from   v$sysstat a, v$statname b
  3  where  a.statistic#=b.statistic#
  4* and    b.name like '%redo size%'
SQL> /
NAME                                                                  VALUE
redo size 846112
SQL> select count(*) from all_objects;
  COUNT(*)
     41183
SQL> create table myobjects as select * from all_objects;
Table created.
SQL> select b.name, a.value
  2  from   v$sysstat a, v$statname b
  3  where  a.statistic#=b.statistic#
  4* and    b.name like '%redo size%'
SQL> /
NAME                                                                  VALUE
redo size 5672516
SQL> select (5672516-846112)/1024/1024 from dual
SQL> /
(5672516-846112)/1024/1024
                4,6028175CTAS generate around 4,6Mb redolog.
Now, with your method. Creation of a data file :
QL> set head off
SQL> set pagesize 0
SQL> set linesize 1000
SQL> set trims on
SQL> spool E:\Scripts\Sql\myobjects.dat
SQL> select OWNER          ||';'||
            OBJECT_NAME    ||';'||
            SUBOBJECT_NAME ||';'||
            OBJECT_ID      ||';'||
            DATA_OBJECT_ID ||';'||
            OBJECT_TYPE    ||';'||
            CREATED        ||';'||
            LAST_DDL_TIME  ||';'||
            TIMESTAMP      ||';'||
            STATUS         ||';'||
            TEMPORARY      ||';'||
            GENERATED      ||';'||
            SECONDARY     
     from   myobjects;
SYS;DUAL;;258;258;TABLE;30/08/05;30/08/05;2005-08-30:13:50:32;VALID;N;N;N
PUBLIC;DUAL;;259;;SYNONYM;30/08/05;30/08/05;2005-08-30:13:50:32;VALID;N;N;N
SYS;SYSTEM_PRIVILEGE_MAP;;311;311;TABLE;30/08/05;30/08/05;2005-08-30:13:50:34;VALID;N;N;N
PUBLIC;SYSTEM_PRIVILEGE_MAP;;313;;SYNONYM;30/08/05;30/08/05;2005-08-30:13:50:34;VALID;N;N;N
SYS;TABLE_PRIVILEGE_MAP;;314;314;TABLE;30/08/05;30/08/05;2005-08-30:13:50:34;VALID;N;N;N
SQL> spool offThen a controlfile to use with sqlloader :
E:\Scripts\Sql\myobjects.ctl
LOAD DATA
INFILE 'E:\Scripts\Sql\myobjects.dat'
BADFILE 'E:\Scripts\Sql\myobjects.bad'
DISCARDFILE 'E:\Scripts\Sql\myobjects.dsc'
INTO TABLE myobjects
FIELDS TERMINATED BY ';'
(OWNER           CHAR(30),
OBJECT_NAME     CHAR(30),
SUBOBJECT_NAME  CHAR(30),
OBJECT_ID       INTEGER EXTERNAL(22) NULLIF OBJECT_ID=BLANKS,
DATA_OBJECT_ID  INTEGER EXTERNAL(22) NULLIF DATA_OBJECT_ID=BLANKS,
OBJECT_TYPE     CHAR(19),
CREATED         DATE(8) "DD/MM/YY" NULLIF CREATED=BLANKS,
LAST_DDL_TIME   DATE(8) "DD/MM/YY" NULLIF LAST_DDL_TIME=BLANKS,
TIMESTAMP       CHAR(19),
STATUS          CHAR(7),
TEMPORARY       CHAR(1),
GENERATED       CHAR(1),
SECONDARY       CHAR(1))Now, we create the empty table and check the redo amount before sqlloader :
SQL> create table myobjects as select * from all_objects where 1=2;
Table created.
SQL> select b.name, a.value
  2  from   v$sysstat a, v$statname b
  3  where  a.statistic#=b.statistic#
  4  and    b.name like '%redo size%'
  5  /
NAME                                                                  VALUE
redo size 6236212Run the sqlloader :
E:\oracle\ora102\BIN>sqlldr scott/demo102 control=E:\Scripts\Sql\myobjects.ctl
Commit point reached - logical record count 40897
Commit point reached - logical record count 40961
Commit point reached - logical record count 41025
Commit point reached - logical record count 41089
Commit point reached - logical record count 41153
Commit point reached - logical record count 41183
Commit point reached - logical record count 41184Last, check the redo amount and compare with previous amount :
SQL> select b.name, a.value
  2  from   v$sysstat a, v$statname b
  3  where  a.statistic#=b.statistic#
  4  and    b.name like '%redo size%'
  5  /
NAME                                                                  VALUE
redo size 11196136
SQL> select (11196136-6236212)/1024/1024 from dual;
(11196136-6236212)/1024/1024
                  4,73015213
SQL> select count(*) from myobjects;
     41184
SQL> SQL*Loader generate around 4,7Mb.
To resume the redo amount generation :
1. CTAS ~ 4,6Mb
2. SQL*Loader ~ 4,7Mb
What you said in your last post :
My suggession is give the query in toad save the output in .dat file . using sqlloader we can import the data. So we can reduce the undo ...Are you still sure now ?
Nicolas.
Well, I'm sorry, you said about undo and me about redo...
Message was edited by:
N. Gasparotto

Similar Messages

  • Update New Records is taking much time to complete. How to reduce

    Hi,
    Iam having a Table with 200 Clumns and trying to Update 5 columns and the table has 5lakh Records. It is taking very much time 2hours to complete. Pls let me know why is this taking time how to reduce....
    In my ssis Package iam using
    Oracle Source
    Look up
    Oledb Command for the Update.
    Please help ism stuck?

    I have somthing like this..
    Update table
    Set column1 =@column1, column2=@column2,column3=@column3,column4=@column4,column5=@column5
    where column1=@column1
    in this case i need to add a index on column1 right? Pls llet me know
    Yes, an index in column1 (preferably clustered) would avoid the table scan for each update. The ELT the staging table alternative Jim suggested will likely perform better than individual updates for a large process like this.
    Dan Guzman, SQL Server MVP, http://www.dbdelta.com

  • How can I reduce the recording time of the webcam?

    How can I reduce the recording time of the webcam?
    thanks
    Alex

    Keep in mind that Logic also has a limit of 8550 quarter notes. So changing the time signature to 4/8 can get longer recording times. So make sure you change this setting along with the song end. See page 93 in the reference manual.
    MBP 1.83 & MDD 1G DP   Mac OS X (10.4.7)   Logic Pro 7.2.2, Motu 828MkII+828, Firebox LC&XT, Tranzport, Unitor8+(3x)AMT-8's

  • How to reduce the size of cloned Oracle Applications Instance

    How to reduce the size of cloned Oracle applications instance, so as to save the storage space for the cloned systems.
    How can we remove unimplemented modules in the instance so that we can reclaim the space occupied by them.
    can any please suggest on this..?

    mumbai,
    I would recommend to leave it as it is.
    If you can add some inexpensive HDD to your test system then do so.
    The Apps DB storage decreasing process is quite painful and isn't straightforward.
    You can’t just delete unused schemas & tablesapces (if they are not used than they are not consuming reasonable space anyway). The modules in Apps are using each other procedures and objects. The effect of deleting one module (schema) is highly unpredictable.
    If you will do something like that than you will not be able to patch your cloned system after that.
    Some things can be done however in order to reduce size of a testing Apps system:
    - Decries UNDO & TEMP tablespaces. Normally you do not need that big tbs in test system as you have got in the production.
    - If your REDO LOG files are quite big and you have got a lot of redo groups you can recreated smaller REDO log files.
    - On Apps tier you can delete OUTput and LOG files
    In case you still would like to decrease data volume in your testing system you need to take a look on some tools which provide data subtracting capabilities from Apps DB. This process has to be quite intelligent. The tool have to know the data structures in APPS DB and subtract data in the way to not harm logical relationships between records. After a subtracting process you will need to make multiple FULL exp/imp cycles in order to reduce physical space consumed by the database. Beside the fact that those tools are quite expensive you will need to spend a lot of your time to implement those.
    BTW: That is the size of you production DB? Have you analyzed which module takes most of the space? May be you can identify top 10 objects and try to archive a data from those object preventing the future grow of the production database.
    Just my 0.02£
    Yury
    Check this out:
    A.
    http://www.freelists.org/archives/ora-apps-dba/05-2006/msg00000.html
    B.
    - Users can subscribe to your list by sending email to
    ora-apps-dba-request_at_freelists.org with 'subscribe' in the Subject field
    C.
    http://www.freelists.org/archives/ora-apps-dba/05-2006/threads.html

  • How to measure undo at a session level

    Below is what are trying to do.
    We are trying to implement Oracle's table block compression feature.
    In doing so, in one of our testing we discovered that the session performing the DML (inserts) generated almost 30x undo.
    We measured this undo by using below query (before the transaction commited).
    SELECT a.sid, a.username, used_ublk, used_ublk*8192 bytes
    FROM v$session a, v$transaction b
    WHERE a.saddr = b.ses_addr
    However, above is at a transaction level since it still not committed, we would lose this value once the transaction either committed or rolled back, for this reason, we are trying to find an equivalent statistic at a session level.
    1. What we are trying to find it out whether if an equivalent session level statistic exist to measure the amount of undo generated?
    2. Is the undo generated always in terms of "undo blocks?"
    3. When querying v$statname for name like '%undo%' we came across several statistics, the closest one
    undo change vector size -in bytes?
    4. desc test_table;
    Name Type
    ID NUMBER
    sql> insert into test_table values (1);
    5. However when we run the query against:
    SELECT s.username,sn.name, ss.value
    FROM v$sesstat ss, v$session s, v$statname sn
    WHERE ss.sid = s.sid
    AND sn.statistic# = ss.statistic#
    AND s.sid =204
    AND sn.name ='undo change vector size'
    SID USERNAME NAME BYTES
    204 NP4 undo change vector size 492
    6. Query against: v$transaction
    SELECT a.sid, a.username, used_ublk, used_ublk*8192 bytes
    FROM v$session a, v$transaction b
    WHERE a.saddr = b.ses_addr
    SID USED_UBLK BYTES
    204 1 8192
    What are trying to understand is:
    1. How can we or what is the correct statistic to determine how many undo blocks were generated by particular session?
    2. What is the statistic: undo change vector size? What does it really mean? or measure?

    Any transaction that generates Undo will use Undo Blocks in multiples of 1 --- i.e. the minimum allocation on disk is 8KB.
    Furthermore, an Undo_Rec does not translate to a Table Row. The Undo has to capture changes to Indexes, block splits, other actions. Multiple changes to the same table/index block may be collapsed into one undo record/block etc etc.
    Therefore, a transaction that generated 492 bytes of Undo would use 8KB of undo space because that is the minimum allocation.
    You need to test with larger transactions.
    SQL> update P_10 set col_2='ABC2' where mod(col_1,10)=0;
    250000 rows updated.
    SQL>
    SQL> @active_transactions
           SID    SERIAL# SPID         USERNAME     PROGRAM                       XIDUSN  USED_UBLK  USED_UREC
           143        542 17159        HEMANT       sqlplus@DG844 (TNS V1-V3)          6       5176     500000
    Statistic : db block changes                                      1,009,903
    Statistic : db block gets                                         1,469,623
    Statistic : redo entries                                            502,507
    Statistic : redo size                                           117,922,016
    Statistic : undo change vector size                              41,000,368
    Statistic : table scan blocks gotten                                 51,954
    Statistic : table scan rows gotten                               10,075,245Hemant K Chitale

  • How to reduce performance time.

    Hi,
    Any body guide me how to reduce performance time for this report.
    It’s taking to much time for execution.
    *& Report  ZEOU_CST_CLAIM_REP                                          *
    REPORT  zeou_cst_claim_rep.
    *& Program Name    : ZEOU_CST_CLAIM_REP                                *
    *& Title           : CST Claim Report                                  *
    *& Module Name     : EOU                                               *
    *& Author          : Chandra Vangoor                                   *
    *& Create Date     : 05.05.2006                                        *
    *& Logical DB      : None                                              *
    *& Program Type    : On-Line.                                          *
    *& SAP Release     : 4.7                                               *
    *& Description     :                                                   *
    *& Log    Date    Author        Reason of change
    TABLES
    TABLES : a363,
             mara,
             marc,
             makt,
             ekko,
             ekpo,
             mkpf,
             mseg,
             konp,
             konh.
    SELECTION-SCREEN
    SELECTION-SCREEN   :   BEGIN OF BLOCK cst WITH FRAME TITLE text-001.
    SELECT-OPTIONS :   s_matnr FOR mara-matnr,                            "Material Number
                       s_lifnr FOR ekko-lifnr,                            "Account Number of the Vendor
                       s_bedat FOR ekko-bedat,                            "Purchasing Document Date
                       s_kschl FOR konh-kschl OBLIGATORY NO INTERVALS,    "Condition type
                       s_bwart FOR mseg-bwart OBLIGATORY NO INTERVALS.    "Movement Type (Inventory Management)
    PARAMETERS     :   p_werks LIKE marc-werks OBLIGATORY.                "Plant
    SELECTION-SCREEN   :   END OF BLOCK cst.
    INCLUDES
    INCLUDE zalv_data.
    DATA - INTERNAL TABLES AND FIELD LISTS
    DATA :  BEGIN    OF     a363_itab  OCCURS 0,
            matnr    LIKE   a363-matnr,                    "Material Number
            lifnr    LIKE   a363-lifnr,                    "Account Number of the Vendor
            werks    LIKE   a363-werks,                    "Plant
            kschl    LIKE   a363-kschl,                    "Condition type
            knumh    LIKE   a363-knumh,                    "Condition record number
            kbetr    LIKE   konp-kbetr,                    "Rate (condition amount or percentage) where no scale exists
            END      OF     a363_itab.
    DATA :  BEGIN    OF     konp_itab  OCCURS 0,
            knumh    LIKE   a363-knumh,                    "Condition record number
            kbetr    LIKE   konp-kbetr,                    "Rate (condition amount or percentage) where no scale exists
            lifnr    LIKE   a363-lifnr,                    "Account Number of the Vendor
            END      OF     konp_itab.
    DATA :  BEGIN    OF     ekko_itab  OCCURS 0,
            ebeln    LIKE   ekko-ebeln,                    "Purchasing Document Number
            lifnr    LIKE   ekko-lifnr,                    "Account Number of the Vendor
            bedat    LIKE   ekko-bedat,                    "Purchasing Document Date
            END      OF     ekko_itab.
    DATA :  BEGIN    OF     ekpo_itab  OCCURS 0,
            ebeln    LIKE   ekpo-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   ekpo-ebelp,                    "Item Number of Purchasing Document
            matnr    LIKE   ekpo-matnr,                    "Material Number
            werks    LIKE   ekpo-werks,                    "Plant
            menge    LIKE   ekpo-menge,                    "Purchase order quantity
            END      OF     ekpo_itab.
    DATA :  BEGIN    OF     v_po_det  OCCURS 0,            "VENDOR + PLANT + PO DEATILS
            lifnr    LIKE   ekko-lifnr,                    "Account Number of the Vendor
            ebeln    LIKE   ekko-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   ekpo-ebelp,                    "Item Number of Purchasing Document
            bedat    LIKE   ekko-bedat,                    "Purchasing Document Date
            matnr    LIKE   ekpo-matnr,                    "Material Number
            werks    LIKE   ekpo-werks,                    "Plant
            menge    LIKE   ekpo-menge,                    "Purchase order quantity
            kbetr    LIKE   konp-kbetr,                    "Rate (condition amount or percentage) where no scale exists
            END      OF     v_po_det.
    DATA :  BEGIN    OF     mseg_itab  OCCURS 0,
            mblnr    LIKE   mseg-mblnr,                    "Number of Material Document
            ebeln    LIKE   mseg-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   mseg-ebelp,                    "Item Number of Purchasing Document
            matnr    LIKE   mseg-matnr,                    "Material Number
            lifnr    LIKE   mseg-lifnr,                    "Account Number of the Vendor
            werks    LIKE   mseg-werks,                    "Plant
            menge    LIKE   mseg-menge,                    "Quantity
            dmbtr    LIKE   mseg-dmbtr,                    "Amount in local currency
            bwart    LIKE   mseg-bwart,                    "Movement Type (Inventory Management)
            END      OF     mseg_itab.
    DATA :  BEGIN    OF     mkpf_itab  OCCURS 0,
            mblnr    LIKE   mkpf-mblnr,                    "Number of Material Document
            bldat    LIKE   mkpf-bldat,                    "Document Date in Document
            END      OF     mkpf_itab.
    DATA :  BEGIN    OF     zeou_pcrdtl_itab  OCCURS 0,
            matnr    LIKE   zeou_pcrdtl-matnr,             "Material Number
            lifnr    LIKE   zeou_pcrdtl-lifnr,             "Account Number of the Vendor
            mblnr    LIKE   zeou_pcrdtl-mblnr,             "Number of Material Document
            whssn    LIKE   zeou_pcrdtl-whssn,             "Warehouse Records Entry Serial No.
            whsdt    LIKE   zeou_pcrdtl-whsdt,             "Warehouse Records Entry date
            END      OF     zeou_pcrdtl_itab.
    DATA :  BEGIN    OF     gr_wh_info  OCCURS 0,          "INFO OF GR & WH BASED ON MVMT TYPE & PO
            mblnr    LIKE   mseg-mblnr,                    "Number of Material Document
            bldat    LIKE   mkpf-bldat,                    "Document Date in Document
            ebeln    LIKE   mseg-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   ekpo-ebelp,                    "Item Number of Purchasing Document
            matnr    LIKE   mseg-matnr,                    "Material Number
            lifnr    LIKE   mseg-lifnr,                    "Account Number of the Vendor
            werks    LIKE   mseg-werks,                    "Plant
            menge    LIKE   mseg-menge,                    "Quantity
            dmbtr    LIKE   mseg-dmbtr,                    "Amount in local currency
            bwart    LIKE   mseg-bwart,                    "Movement Type (Inventory Management)
            whssn    LIKE   zeou_pcrdtl-whssn,             "Warehouse Records Entry Serial No.
            whsdt    LIKE   zeou_pcrdtl-whsdt,             "Warehouse Records Entry date
            END      OF     gr_wh_info.
    DATA :  BEGIN    OF     bseg_itab  OCCURS 0,
            ebeln    LIKE   bseg-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   bseg-ebelp,                    "Item Number of Purchasing Document
            matnr    LIKE   bseg-matnr,                    "Material Number
            lifnr    LIKE   bseg-lifnr,                    "Account Number of the Vendor
            werks    LIKE   bseg-werks,                    "Plant
            buzid    LIKE   bseg-buzid,                    "Identification of the Line Item
            bschl    LIKE   bseg-bschl,                    "Posting Key
            wrbtr    LIKE   bseg-wrbtr,                    "Amount in document currency
            bukrs    LIKE   bseg-bukrs,                    "Company Code
            belnr    LIKE   bseg-belnr,                    "Accounting Document Number
            gjahr    LIKE   bseg-gjahr,                    "Fiscal Year
            END      OF     bseg_itab.
    DATA :  BEGIN    OF     bkpf_itab  OCCURS 0,
            bukrs    LIKE   bkpf-bukrs,                    "Company Code
            belnr    LIKE   bkpf-belnr,                    "Accounting Document Number
            gjahr    LIKE   bkpf-gjahr,                    "Fiscal Year
            xblnr    LIKE   bkpf-xblnr,                    "Reference Document Number
            bldat    LIKE   bkpf-bldat,                    "Document Date in Document
            END      OF     bkpf_itab.
    DATA :  BEGIN    OF     vend_inv  OCCURS 0,            "VENDOR INVOICE DETAILS
            ebeln    LIKE   bseg-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   bseg-ebelp,                    "Item Number of Purchasing Document
            matnr    LIKE   bseg-matnr,                    "Material Number
            lifnr    LIKE   bseg-lifnr,                    "Account Number of the Vendor
            werks    LIKE   bseg-werks,                    "Plant
            buzid    LIKE   bseg-buzid,                    "Identification of the Line Item
            bschl    LIKE   bseg-bschl,                    "Posting Key
            wrbtr    LIKE   bseg-wrbtr,                    "Amount in document currency
            bukrs    LIKE   bseg-bukrs,                    "Company Code
            belnr    LIKE   bseg-belnr,                    "Accounting Document Number
            gjahr    LIKE   bseg-gjahr,                    "Fiscal Year
            xblnr    LIKE   bkpf-xblnr,                    "Reference Document Number
            bldat    LIKE   bkpf-bldat,                    "Document Date in Document
            END      OF     vend_inv.
    DATA :  BEGIN    OF     chckinit  OCCURS 0,            "CHEQUE INIT INFO
            ebeln    LIKE   bseg-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   bseg-ebelp,                    "Item Number of Purchasing Document
            matnr    LIKE   bseg-matnr,                    "Material Number
            lifnr    LIKE   bseg-lifnr,                    "Account Number of the Vendor
            werks    LIKE   bseg-werks,                    "Plant
            buzid    LIKE   bseg-buzid,                    "Identification of the Line Item
            bschl    LIKE   bseg-bschl,                    "Posting Key
            bukrs    LIKE   bkpf-bukrs,                    "Company Code
            belnr    LIKE   bkpf-belnr,                    "Accounting Document Number
            gjahr    LIKE   bkpf-gjahr,                    "Fiscal Year
            koart    LIKE   bseg-koart,                    "Account type
            augbl    LIKE   bseg-augbl,                    "Document Number of the Clearing Document
            END      OF     chckinit.
    DATA :  BEGIN    OF     chckpayer  OCCURS 0,           "CHEQUE BANK DETAILS
            vblnr    LIKE   payr-vblnr,                    "Document Number of the Payment Document
            zbukr    LIKE   payr-zbukr,                    "Paying company code
            gjahr    LIKE   payr-gjahr,                    "Fiscal Year
            chect    LIKE   payr-chect,                    "Check Number
            zaldt    LIKE   payr-zaldt,                    "Probable Payment Date (Cash Discount 1 Due)
            hbkid    LIKE   payr-hbkid,                    "Short key for a house bank
            END      OF     chckpayer.
    DATA :  chckpayer_u LIKE chckpayer OCCURS 0 WITH HEADER LINE.      "UNIQUE CHEQUE DETAILS
    DATA :  BEGIN    OF     chckfinal  OCCURS 0,           "CHEQUE FINAL INFO
            ebeln    LIKE   bseg-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   bseg-ebelp,                    "Item Number of Purchasing Document
            matnr    LIKE   bseg-matnr,                    "Material Number
            lifnr    LIKE   bseg-lifnr,                    "Account Number of the Vendor
            werks    LIKE   bseg-werks,                    "Plant
            buzid    LIKE   bseg-buzid,                    "Identification of the Line Item
            bschl    LIKE   bseg-bschl,                    "Posting Key
            bukrs    LIKE   bkpf-bukrs,                    "Company Code
            belnr    LIKE   bkpf-belnr,                    "Accounting Document Number
            gjahr    LIKE   bkpf-gjahr,                    "Fiscal Year
            koart    LIKE   bseg-koart,                    "Account type
            augbl    LIKE   bseg-augbl,                    "Document Number of the Clearing Document
            vblnr    LIKE   payr-vblnr,                    "Document Number of the Payment Document
            zbukr    LIKE   payr-zbukr,                    "Paying company code
            chect    LIKE   payr-chect,                    "Check Number
            zaldt    LIKE   payr-zaldt,                    "Probable Payment Date (Cash Discount 1 Due)
            hbkid    LIKE   payr-hbkid,                    "Short key for a house bank
            END      OF     chckfinal.
    DATA :  BEGIN    OF     mat_desc OCCURS 0,
            matnr    LIKE   mara-matnr,
            maktx    LIKE   makt-maktx,
            END      OF     mat_desc.
    DATA :  BEGIN      OF     vend_det OCCURS 0,
            lifnr      LIKE   lfa1-lifnr,
            name1      LIKE   lfa1-name1,
            j_1icstno  LIKE   j_1imovend-j_1icstno,
            END        OF     vend_det.
    DATA :  BEGIN    OF     cst_rep  OCCURS 0,             "FINAL CST REPORT
            lifnr    LIKE   a363-lifnr,                    "Account Number of the Vendor
            name1    LIKE   lfa1-name1,                    "Vendor Name
            j_1icstno  LIKE   j_1imovend-j_1icstno,        " Vendor CST No.
            werks    LIKE   a363-werks,                    "Plant
           kschl    LIKE   a363-kschl,                    "Condition type
            ebeln    LIKE   ekko-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   ekpo-ebelp,                    "Item Number of Purchasing Document
            bedat    LIKE   ekko-bedat,                    "Purchasing Document Date
            matnr    LIKE   ekpo-matnr,                    "Material Number
            maktx    LIKE   makt-maktx,                    "Material Description.
            kbetr    LIKE   konp-kbetr,                    "Rate (condition amount or percentage) where no scale exists
            mblnr    LIKE   mseg-mblnr,                    "Number of Material Document
            bldat    LIKE   mkpf-bldat,                    "Document Date in Document
            menge    LIKE   mseg-menge,                    "Quantity
            dmbtr    LIKE   mseg-dmbtr,                    "Amount in local currency
            cst_dmbtr LIKE  mseg-dmbtr,                    "CST Amount in local currency
            bwart    LIKE   mseg-bwart,                    "Movement Type (Inventory Management)
            whssn    LIKE   zeou_pcrdtl-whssn,             "Warehouse Records Entry Serial No.
            whsdt    LIKE   zeou_pcrdtl-whsdt,             "Warehouse Records Entry date
            buzid    LIKE   bseg-buzid,                    "Identification of the Line Item
            bschl    LIKE   bseg-bschl,                    "Posting Key
            wrbtr    LIKE   bseg-wrbtr,                    "Amount in document currency
            cst_wrbtr LIKE  bseg-wrbtr,                    "CST Amount in document currency
            belnr    LIKE   bseg-belnr,                    "Accounting Document Number
            gjahr    LIKE   bseg-gjahr,                    "Fiscal Year
            xblnr    LIKE   bkpf-xblnr,                    "Reference Document Number
            koart    LIKE   bseg-koart,                    "Account type
            augbl    LIKE   bseg-augbl,                    "Document Number of the Clearing Document
            vblnr    LIKE   payr-vblnr,                    "Document Number of the Payment Document
            zbukr    LIKE   payr-zbukr,                    "Paying company code
            chect    LIKE   payr-chect,                    "Check Number
            zaldt    LIKE   payr-zaldt,                    "Probable Payment Date (Cash Discount 1 Due)
            hbkid    LIKE   payr-hbkid,                    "Short key for a house bank
            END      OF     cst_rep.
    DATA :  BEGIN    OF     gt_output  OCCURS 0,              "ALV OUTPUT
            slno     LIKE   sy-tabix,                      "Serial Number
            lifnr    LIKE   a363-lifnr,                    "Account Number of the Vendor
            name1    LIKE   lfa1-name1,                    "Vendor Name
            j_1icstno  LIKE   j_1imovend-j_1icstno,        " Vendor CST No.
            werks    LIKE   a363-werks,                    "Plant
           kschl    LIKE   a363-kschl,                    "Condition type
            ebeln    LIKE   ekko-ebeln,                    "Purchasing Document Number
            ebelp    LIKE   ekpo-ebelp,                    "Item Number of Purchasing Document
            bedat    LIKE   ekko-bedat,                    "Purchasing Document Date
            matnr    LIKE   ekpo-matnr,                    "Material Number
            maktx    LIKE   makt-maktx,                    "Material Description
            mblnr    LIKE   mseg-mblnr,                    "Number of Material Document
            bldat    LIKE   mkpf-bldat,                    "Document Date in Document
            menge    LIKE   mseg-menge,                    "Quantity
            dmbtr    LIKE   mseg-dmbtr,                    "Amount in local currency
            cst_dmbtr LIKE  mseg-dmbtr,                    "CST Amount in local currency
            bwart    LIKE   mseg-bwart,                    "Movement Type (Inventory Management)
            whssn    LIKE   zeou_pcrdtl-whssn,             "Warehouse Records Entry Serial No.
            whsdt    LIKE   zeou_pcrdtl-whsdt,             "Warehouse Records Entry date
            buzid    LIKE   bseg-buzid,                    "Identification of the Line Item
            bschl    LIKE   bseg-bschl,                    "Posting Key
            wrbtr    LIKE   bseg-wrbtr,                    "Amount in document currency
            cst_wrbtr LIKE  bseg-wrbtr,                    "CST Amount in document currency
            belnr    LIKE   bseg-belnr,                    "Accounting Document Number
            gjahr    LIKE   bseg-gjahr,                    "Fiscal Year
            xblnr    LIKE   bkpf-xblnr,                    "Reference Document Number
            koart    LIKE   bseg-koart,                    "Account type
            augbl    LIKE   bseg-augbl,                    "Document Number of the Clearing Document
            vblnr    LIKE   payr-vblnr,                    "Document Number of the Payment Document
            zbukr    LIKE   payr-zbukr,                    "Paying company code
            chect    LIKE   payr-chect,                    "Check Number
            zaldt    LIKE   payr-zaldt,                    "Probable Payment Date (Cash Discount 1 Due)
            hbkid    LIKE   payr-hbkid,                    "Short key for a house bank
            usr_txt1(20) TYPE c,
            usr_txt2(20) TYPE c,
            END      OF     gt_output.
    *Working Variables
    DATA : cst_gr  LIKE  mseg-dmbtr,
           cst_inv LIKE  bseg-wrbtr,
           usr_txt1(20) TYPE c,
           usr_txt2(20) TYPE c.
    START-OF-SELECTION.
    *Retreiving Data from a363 table for the given input
      SELECT  matnr
              lifnr
              werks
              kschl
              knumh
              FROM a363
              INTO TABLE a363_itab
              WHERE matnr IN s_matnr AND lifnr IN s_lifnr AND werks EQ p_werks AND kschl IN s_kschl.
    *rakesh ***************************
    SELECT  *
             FROM konp
             INTO CORRESPONDING FIELDS OF TABLE konp_itab
             FOR ALL ENTRIES IN a363_itab
             WHERE knumh EQ a363_itab-knumh.
      IF  a363_itab[] IS NOT INITIAL.
        SELECT knumh
               kbetr
               lifnr
               FROM konp INTO TABLE konp_itab
               FOR ALL ENTRIES IN a363_itab
               WHERE knumh EQ a363_itab-knumh.
      ENDIF.
      LOOP AT a363_itab.
        READ TABLE konp_itab WITH KEY knumh = a363_itab-knumh.
        IF sy-subrc EQ 0.
          MOVE : konp_itab-kbetr TO a363_itab-kbetr.
          MODIFY a363_itab.
        ENDIF.
        CLEAR : a363_itab, konp_itab.
      ENDLOOP.
    rakesh****************************
    SELECT *
            FROM makt
            INTO CORRESPONDING FIELDS OF TABLE mat_desc
            FOR ALL ENTRIES IN a363_itab
            WHERE matnr EQ a363_itab-matnr.
      SELECT matnr
             maktx
             FROM makt INTO TABLE mat_desc
             FOR ALL ENTRIES IN a363_itab
             WHERE matnr EQ a363_itab-matnr.
      SELECT a~lifnr
             a~name1
             b~j_1icstno
             INTO TABLE vend_det
             FROM lfa1 AS a JOIN j_1imovend AS b
             ON alifnr EQ blifnr
             FOR ALL ENTRIES IN a363_itab
             WHERE a~lifnr EQ a363_itab-lifnr.
    Retreiving Data from EKKO & EKPO table for the given input
    And Populating the V_PO_DETAILS itab
    SELECT  *
             FROM ekko
             INTO CORRESPONDING FIELDS OF TABLE ekko_itab
             FOR ALL ENTRIES IN a363_itab
             WHERE lifnr EQ a363_itab-lifnr AND bedat IN s_bedat.
      IF  a363_itab[] IS NOT INITIAL.
        SELECT ebeln
               lifnr
               bedat
               FROM ekko INTO TABLE ekko_itab
               FOR ALL ENTRIES IN a363_itab
                WHERE lifnr EQ a363_itab-lifnr AND bedat IN s_bedat.
      ENDIF.
    SELECT  *
             FROM ekpo
             INTO CORRESPONDING FIELDS OF TABLE ekpo_itab
             FOR ALL ENTRIES IN a363_itab
             WHERE matnr EQ a363_itab-matnr AND werks EQ a363_itab-werks AND mwskz NE 'V0'.
      IF  a363_itab[] IS NOT INITIAL.
        SELECT ebeln
               ebelp
               matnr
               werks
               menge
               FROM ekpo INTO TABLE ekpo_itab
               FOR ALL ENTRIES IN a363_itab
               WHERE matnr EQ a363_itab-matnr AND werks EQ a363_itab-werks AND mwskz NE 'V0'.
      ENDIF.
      LOOP AT ekpo_itab.
        MOVE :   ekpo_itab-ebelp TO v_po_det-ebelp,
                 ekpo_itab-matnr TO v_po_det-matnr,
                 ekpo_itab-werks TO v_po_det-werks,
                 ekpo_itab-menge TO v_po_det-menge.
        READ TABLE ekko_itab WITH KEY ebeln = ekpo_itab-ebeln.
        IF sy-subrc EQ 0.
          MOVE  :  ekko_itab-lifnr TO v_po_det-lifnr,
                   ekko_itab-ebeln TO v_po_det-ebeln,
                   ekko_itab-bedat TO v_po_det-bedat.
          APPEND : v_po_det.
        ENDIF.
        CLEAR  : ekko_itab, ekpo_itab, v_po_det.
      ENDLOOP.
      LOOP AT v_po_det.
        READ TABLE a363_itab WITH KEY matnr = v_po_det-matnr lifnr = v_po_det-lifnr werks = v_po_det-werks.
        IF sy-subrc EQ 0.
          MOVE : a363_itab-kbetr TO v_po_det-kbetr.
          MODIFY v_po_det.
        ENDIF.
        CLEAR : a363_itab, v_po_det.
      ENDLOOP.
    Retreiving Data from MKPF & MSEG & ZEOU_PCRDTL table for the given input
    And Populating the GR_WH_info itab
    SELECT  *
             FROM mseg
             INTO CORRESPONDING FIELDS OF TABLE mseg_itab
             FOR ALL ENTRIES IN v_po_det
             WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND bwart IN s_bwart.
      IF v_po_det[] IS NOT INITIAL.
        SELECT mblnr
               ebeln
               ebelp
               matnr
               lifnr
               werks
               menge
               dmbtr
               bwart
               FROM mseg INTO TABLE mseg_itab
               FOR ALL ENTRIES IN v_po_det
               WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND bwart IN s_bwart.
      ENDIF.
      IF mseg_itab[] IS NOT INITIAL.
    SELECT  *
             FROM mkpf
             INTO CORRESPONDING FIELDS OF TABLE mkpf_itab
             FOR ALL ENTRIES IN mseg_itab
             WHERE mblnr EQ mseg_itab-mblnr.
        SELECT  mblnr
                bldat
                FROM mkpf INTO TABLE mkpf_itab
                FOR ALL ENTRIES IN mseg_itab
                WHERE mblnr EQ mseg_itab-mblnr.
      SELECT  *
             FROM zeou_pcrdtl
             INTO CORRESPONDING FIELDS OF TABLE zeou_pcrdtl_itab
             FOR ALL ENTRIES IN mseg_itab
             WHERE mblnr EQ mseg_itab-mblnr AND matnr EQ mseg_itab-matnr.
        SELECT matnr
               lifnr
               mblnr
               whssn
               whsdt
               FROM zeou_pcrdtl INTO TABLE zeou_pcrdtl_itab
                 FOR ALL ENTRIES IN mseg_itab
                 WHERE mblnr EQ mseg_itab-mblnr AND matnr EQ mseg_itab-matnr.
      ENDIF.
      LOOP AT mseg_itab.
        MOVE  :  mseg_itab-mblnr TO gr_wh_info-mblnr,
                 mseg_itab-ebeln TO gr_wh_info-ebeln,
                 mseg_itab-ebelp TO gr_wh_info-ebelp,
                 mseg_itab-matnr TO gr_wh_info-matnr,
                 mseg_itab-lifnr TO gr_wh_info-lifnr,
                 mseg_itab-werks TO gr_wh_info-werks,
                 mseg_itab-menge TO gr_wh_info-menge,
                 mseg_itab-dmbtr TO gr_wh_info-dmbtr,
                 mseg_itab-bwart TO gr_wh_info-bwart.
        READ TABLE mkpf_itab WITH KEY mblnr = mseg_itab-mblnr.
        IF sy-subrc EQ 0.
          MOVE  :  mkpf_itab-bldat TO gr_wh_info-bldat.
        ENDIF.
        READ TABLE zeou_pcrdtl_itab WITH KEY mblnr = mseg_itab-mblnr.
        IF sy-subrc EQ 0.
          MOVE  :  zeou_pcrdtl_itab-whssn TO gr_wh_info-whssn,
                   zeou_pcrdtl_itab-whsdt TO gr_wh_info-whsdt.
        ENDIF.
        APPEND : gr_wh_info.
        CLEAR : mseg_itab, mkpf_itab, gr_wh_info.
      ENDLOOP.
    Retreiving Data from BSEG & BKPF table
    And Populating the Vendor Invoice Details
      IF v_po_det[] IS NOT INITIAL.
    SELECT  *
             FROM bseg
             INTO CORRESPONDING FIELDS OF TABLE bseg_itab
             FOR ALL ENTRIES IN v_po_det
             WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.
        SELECT  ebeln
                ebelp
                matnr
                lifnr
                werks
                buzid
                bschl
                wrbtr
                bukrs
                belnr
                gjahr
                FROM bseg INTO TABLE bseg_itab
                  FOR ALL ENTRIES IN v_po_det
                  WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.
      ENDIF.
      IF bseg_itab[] IS NOT INITIAL.
    SELECT  *
             FROM bkpf
             INTO CORRESPONDING FIELDS OF TABLE bkpf_itab
             FOR ALL ENTRIES IN bseg_itab
             WHERE bukrs EQ bseg_itab-bukrs AND belnr EQ bseg_itab-belnr AND gjahr EQ bseg_itab-gjahr.
        SELECT  bukrs
                belnr
                gjahr
                xblnr
                bldat
                FROM bkpf INTO TABLE bkpf_itab
                FOR ALL ENTRIES IN bseg_itab
                WHERE bukrs EQ bseg_itab-bukrs AND belnr EQ bseg_itab-belnr AND gjahr EQ bseg_itab-gjahr.
      ENDIF.
      LOOP AT bseg_itab.
        MOVE  :  bseg_itab-ebeln TO vend_inv-ebeln,
                 bseg_itab-ebelp TO vend_inv-ebelp,
                 bseg_itab-matnr TO vend_inv-matnr,
                 bseg_itab-lifnr TO vend_inv-lifnr,
                 bseg_itab-werks TO vend_inv-werks,
                 bseg_itab-buzid TO vend_inv-buzid,
                 bseg_itab-bschl TO vend_inv-bschl,
                 bseg_itab-wrbtr TO vend_inv-wrbtr,
                 bseg_itab-bukrs TO vend_inv-bukrs,
                 bseg_itab-belnr TO vend_inv-belnr,
                 bseg_itab-gjahr TO vend_inv-gjahr.
        READ TABLE bkpf_itab WITH KEY bukrs = bseg_itab-bukrs belnr = bseg_itab-belnr gjahr = bseg_itab-gjahr.
        IF sy-subrc EQ 0.
          MOVE  :  bkpf_itab-xblnr TO vend_inv-xblnr,
                   bkpf_itab-bldat TO vend_inv-bldat.
          APPEND  :  vend_inv.
        ENDIF.
        CLEAR : vend_inv, bseg_itab, bkpf_itab.
      ENDLOOP.
    Retreiving Data from BSEG & BKPF table
    And Populating the Cheque Info Details
      IF v_po_det[] IS NOT INITIAL.
    SELECT  *
             FROM bseg
             INTO CORRESPONDING FIELDS OF TABLE chckinit
             FOR ALL ENTRIES IN v_po_det
             WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.
        SELECT  ebeln
                ebelp
                matnr
                lifnr
                werks
                buzid
                bschl
                bukrs
                belnr
                gjahr
                koart
                augbl
                FROM bseg INTO TABLE chckinit
                  FOR ALL ENTRIES IN v_po_det
                  WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.
      ENDIF.
      IF chckinit[] IS NOT INITIAL.
    SELECT  *
             FROM payr
             INTO CORRESPONDING FIELDS OF TABLE chckpayer
             FOR ALL ENTRIES IN chckinit
             WHERE vblnr EQ chckinit-augbl.
        SELECT  vblnr
                zbukr
                gjahr
                chect
                zaldt
                hbkid
                FROM payr INTO TABLE chckpayer
                FOR ALL ENTRIES IN chckinit
                WHERE vblnr EQ chckinit-augbl.
      ENDIF.
      SORT chckpayer BY vblnr DESCENDING.
      LOOP AT chckpayer.
        ON CHANGE OF chckpayer-vblnr.
          MOVE   : chckpayer TO chckpayer_u.
          APPEND : chckpayer_u.
          CLEAR  : chckpayer_u, chckpayer.
        ENDON.
      ENDLOOP.
      LOOP AT chckinit.
        MOVE  :  chckinit-ebeln TO chckfinal-ebeln,
                 chckinit-ebelp TO chckfinal-ebelp,
                 chckinit-matnr TO chckfinal-matnr,
                 chckinit-lifnr TO chckfinal-lifnr,
                 chckinit-werks TO chckfinal-werks,
                 chckinit-buzid TO chckfinal-buzid,
                 chckinit-bschl TO chckfinal-bschl,
                 chckinit-bukrs TO chckfinal-bukrs,
                 chckinit-gjahr TO chckfinal-gjahr,
                 chckinit-koart TO chckfinal-koart,
                 chckinit-augbl TO chckfinal-augbl.
        READ TABLE chckpayer_u WITH KEY vblnr = chckinit-augbl gjahr = chckinit-gjahr.
        IF sy-subrc EQ 0.
          MOVE  :  chckpayer_u-vblnr TO chckfinal-vblnr,
                   chckpayer_u-zbukr TO chckfinal-zbukr,
                   chckpayer_u-chect TO chckfinal-chect,
                   chckpayer_u-zaldt TO chckfinal-zaldt,
                   chckpayer_u-hbkid TO chckfinal-hbkid.
          APPEND : chckfinal.
        ENDIF.
        CLEAR : chckfinal, chckpayer_u, chckinit.
      ENDLOOP.
    Populating the final CST TABLE
      LOOP AT v_po_det.
        MOVE  :   v_po_det-lifnr TO cst_rep-lifnr,
                  v_po_det-werks TO cst_rep-werks,
                  v_po_det-ebeln TO cst_rep-ebeln,
                  v_po_det-ebelp TO cst_rep-ebelp,
                  v_po_det-bedat TO cst_rep-bedat,
                  v_po_det-matnr TO cst_rep-matnr,
                  v_po_det-kbetr TO cst_rep-kbetr.
        READ TABLE gr_wh_info WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.
        IF sy-subrc EQ 0.
          MOVE :  gr_wh_info-mblnr TO cst_rep-mblnr,
                  gr_wh_info-bldat TO cst_rep-bldat,
                  gr_wh_info-menge TO cst_rep-menge,
                  gr_wh_info-dmbtr TO cst_rep-dmbtr,
                  gr_wh_info-bwart TO cst_rep-bwart,
                  gr_wh_info-whssn TO cst_rep-whssn,
                  gr_wh_info-whsdt TO cst_rep-whsdt.
        ENDIF.
        READ TABLE vend_inv WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.
        IF sy-subrc EQ 0.
          MOVE : vend_inv-buzid TO cst_rep-buzid,
                 vend_inv-bschl TO cst_rep-bschl,
                 vend_inv-wrbtr TO cst_rep-wrbtr,
                 vend_inv-belnr TO cst_rep-belnr,
                 vend_inv-gjahr TO cst_rep-gjahr,
                 vend_inv-xblnr TO cst_rep-xblnr.
        ENDIF.
        READ TABLE chckfinal WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.
        IF sy-subrc EQ 0.
          MOVE : chckfinal-augbl TO cst_rep-augbl,
                 chckfinal-vblnr TO cst_rep-vblnr,
                 chckfinal-zbukr TO cst_rep-zbukr,
                 chckfinal-chect TO cst_rep-chect,
                 chckfinal-zaldt TO cst_rep-zaldt,
                 chckfinal-hbkid TO cst_rep-hbkid.
        ENDIF.
        READ TABLE mat_desc WITH KEY matnr = v_po_det-matnr.
        IF sy-subrc EQ 0.
          MOVE : mat_desc-maktx TO cst_rep-maktx.
        ENDIF.
        READ TABLE vend_det WITH KEY lifnr = v_po_det-lifnr.
        IF sy-subrc EQ 0.
          MOVE : vend_det-name1 TO cst_rep-name1,
                 vend_det-j_1icstno TO cst_rep-j_1icstno.
        ENDIF.
        APPEND : cst_rep.
        CLEAR  : cst_rep, v_po_det, gr_wh_info, vend_inv, chckfinal.
      ENDLOOP.
    Populating GT_output
      LOOP AT cst_rep.
        cst_gr = cst_rep-dmbtr * ( cst_rep-kbetr / 1000 ).
        cst_inv = cst_rep-wrbtr * ( cst_rep-kbetr / 1000 ).
        MOVE : cst_gr  TO cst_rep-cst_dmbtr,
               cst_inv TO cst_rep-cst_wrbtr.
        MODIFY : cst_rep.
        CLEAR : cst_rep, cst_gr, cst_inv.
      ENDLOOP.
      LOOP AT cst_rep.
        MOVE :  sy-tabix TO gt_output-slno,
                cst_rep-lifnr TO gt_output-lifnr,
                cst_rep-name1 TO gt_output-name1,
                cst_rep-j_1icstno TO gt_output-j_1icstno,
                cst_rep-werks TO gt_output-werks,
                cst_rep-matnr TO gt_output-matnr,
                cst_rep-maktx TO gt_output-maktx,
                cst_rep-ebeln TO gt_output-ebeln,
                cst_rep-ebelp TO gt_output-ebelp,
                cst_rep-bedat TO gt_output-bedat,
                cst_rep-mblnr TO gt_output-mblnr,
                cst_rep-bldat TO gt_output-bldat,
                cst_rep-menge TO gt_output-menge,
                cst_rep-dmbtr TO gt_output-dmbtr,
                cst_rep-cst_dmbtr TO gt_output-cst_dmbtr,
                cst_rep-bwart TO gt_output-bwart,
                cst_rep-whssn TO gt_output-whssn,
                cst_rep-whsdt TO gt_output-whsdt,
                cst_rep-buzid TO gt_output-buzid,
                cst_rep-bschl TO gt_output-bschl,
                cst_rep-wrbtr TO gt_output-wrbtr,
                cst_rep-cst_wrbtr TO gt_output-cst_wrbtr,
                cst_rep-belnr TO gt_output-belnr,
                cst_rep-gjahr TO gt_output-gjahr,
                cst_rep-xblnr TO gt_output-xblnr,
                cst_rep-augbl TO gt_output-augbl,
                cst_rep-vblnr TO gt_output-vblnr,
                cst_rep-zbukr TO gt_output-zbukr,
                cst_rep-chect TO gt_output-chect,
                cst_rep-zaldt TO gt_output-zaldt,
                cst_rep-hbkid TO gt_output-hbkid.
        APPEND gt_output.
        CLEAR : cst_rep, gt_output, sy-tabix.
      ENDLOOP.
    END-OF-SELECTION.
    *-ALV Routine
      PERFORM alv_forms.
    *&      Form  alv_forms
    FORM alv_forms.
      PERFORM alv_routines.
      gx_variant = sy-repid.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
        EXPORTING
          i_save     = g_save
        CHANGING
          cs_variant = gx_variant
        EXCEPTIONS
          not_found  = 2.
      IF sy-subrc = 0.
        vari = gx_variant-variant.
      ENDIF.
      PERFORM comment_build  USING gt_list_top_of_page[].
      PERFORM fieldcat_init  USING gt_fieldcat[].
      PERFORM layout_build USING gs_layout.
      PERFORM print_build  USING gs_print.
      PERFORM alv_output.
    ENDFORM.                    " alv_forms
    *&      Form  alv_routines
    FORM alv_routines.
      PERFORM eventtab_build USING gt_events[].
      PERFORM e06_t_sort_build  USING gt_sort[].
      PERFORM sp_group_build USING gt_sp_group[].
      g_save = 'A'.
      PERFORM variant_init.
    ENDFORM.                    " alv_routines
    *&      Form  eventtab_build
    ----

    Hi Anu,
    These two statements taking to much time for execution what I can do for reducing execution time.
    Regards,
    Rakesh
    SELECT ebeln
    ebelp
    matnr
    lifnr
    werks
    buzid
    bschl
    wrbtr
    bukrs
    belnr
    gjahr
    FROM bseg INTO TABLE bseg_itab
    FOR ALL ENTRIES IN v_po_det
    WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.
    ENDIF.
    SELECT ebeln
    ebelp
    matnr
    lifnr
    werks
    buzid
    bschl
    bukrs
    belnr
    gjahr
    koart
    augbl
    FROM bseg INTO TABLE chckinit
    FOR ALL ENTRIES IN v_po_det
    WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.
    ENDIF.

  • Urgent HELP - How to reduce the number of entries in table MESYBODY?

    Does anyone know how to reduce the number of records in synchronization table MESYBODY and MESYHEAD?  The reason I wanted to reduce these tables is because I believe they have so many duplicated entries that causes extremely slow performance everytime we sync.  Currently, there are almost 50,000 records for approximately 100 users, and I believe it shouldn't be that much. 
    We are running into a problem that it takes approximately 25-30 minutes to sync. 
    Any advices would be highly appreciated.
    Regards,
    Dai

    Hi Dai,
    please try to run the middleware job WAF_MW_MAPPING. For some applications (Mobile Time and Travel for example) this helps to clean the tables.
    Br, alex
    alexander ilg
    http://www.msc-mobile.com

  • How to Reduce Clusetering Factor on Table?

    I am seeing a very high clustering factor on an SDO geometry table in our 10g RAC DB on our Linux boxes. This slow performance is repeateable on othe r Linux as well as Solaris DBs for the same table. Inserts go in at a rate of 44 milliseconds per insert and we only have about 27000 rows in the table. After viewing a VERY slow insert of about 600 records into this same table, I saw the clustering factor in OEM. The clustering factor is nearly identical to the # rows in the table indicating that useability of the index is fairly low now. I have referenced Metalink Tech Note 223117.1 and, while it affirms what I've seen, I am still trying to determine how to reduce the Clustering Factor. The excerpt on how to do this is below:
    "The only method to affect the clustering factor is to sort and then store the rows in the table in the same order as in they appear in the index. Exporting rows and putting them back in the same order that they appeared originally will have no affect. Remember that ordering the rows to suit one index may have detrimental effects on the choice of other indexes."
    Sounds great, but how does one actually go about storing the rows in the table in the same order as they appear in the index?
    We have tried placing our commits after the last insert as well as after every insert and the results are fairly neglible. We also have a column of type SDE.ST_GEOMETRY in the table and are wondering if this might also be an issue. Thanks in advance for any help.
    Matt Sauter

    Joel is right that the clustering factor is going to have absolutely no effect on the speed of inserts. The clustering factor is merely one, purely statistical, factor the optimiser makes use of to determine how to perform a SELECT statement (i.e., do I bother to use this index or not for row retrieval). It's got nothing to do with the efficiency of inserts.
    If I were you, I'd be looking at factors such as excessive disk I/O taking place for other reasons, inadequate buffer cache and/or enqueue and locking issues instead.
    If you're committing after every insert, for example, then redo will have to be flushed (a commit is about the only foreground wait event -i.e., one that you get to experience in real time- that Oracle has, so a commit after every insert's really not a smart idea). If your redo logs are stored on, say, the worst-performing disk you could buy that's also doing duty as a fileserver's main hard disk, then LGWR will be twiddling its thumbs a lot! You say you've tested this, and that's fine... I'm just saying, it's one theoretical possibility in these sorts of situations. You still want to make sure you're not suffering any log writer-related waits, all the same.
    Similarly, if you're performing huge reads on a (perhaps completely separate) table that is causing the buffer cache to be wiped every second or so, then getting access to your table so your inserts can take place could be problematic. Check if you've got any database writer waits, for example: they are usally a good sign of general I/O bottlenecks.
    Finally, you're on a RAC... so if the blocks of the table you're writing to are in memory over on another instance, and they have to be shipped to your instance, you could have high enqueue waits whilst that shipment is taking place. Maybe your interconnect is not up to the job? Maybe it's faulty, even, with significant packet loss along the way? Even worse if someone's decided to switch off cache fusion transfer for the datafiles invoved (for then block shipment happens by writing them to disk in one instance and reading from disk in the other). RAC adds a whole new level of complexity to things, so good luck tracking that lot down!!
    Also, maybe you're using Freelists and Freelist groups rather than ASSM, so perhaps you're fighting for access to the freelist with whatever else is happening on your database at the time...
    You get the idea: this could be a result of activity taking place on the server for reasons completely unconnected with your insert. It could be a feature of Spatial (with which not many people will be familiar, so good luck if so!) It could be a result of the way your RAC is configured. It could be any number of things... but I'd be willing to bet quite a bit that it's got sod-all to do with the clustering factor!
    You'll need to monitor the insert using a tool like Insider or Toad so you can see if waits and so on happen, more or less in real time -or start using the built-in tools like Statspack or AWR to analyze your workload after it's completed- to work out what your best fix is likely to be.

  • How to reduce dso activation time

    hi
    can any body explain  me how to reduce dso activation time.I am having a dso with 5 crore records and it is taking 7 to 8 hrs for activation.

    Hi,
    Try this.
    T.code RSCUSTA2 . Here you can change the no.of records and no.of processes to use for activation job with this you can increase your ODS activation process, here the no.of processes can be increased based on no.of processes available in your server, check in SM50 or SM51.
    ODS Query Performance  
    Thanks,
    JituK

  • How to reduce Swaps in ST02

    Dear Experts,
    In Transaction ST02 there are heavy swaps in the following buffers:
    Field description
    Initial records
    Program
    CUA
    Screen
    Tables
    Generic key
    Single record
    Export/import
    How to reduce them; If parameters has to be changed Pl let me know the parameters to be changed and also sequence to be followed.
    It would really be helpful if you could let me know how to calculate the parameter values, and sequence to be followed as ease.
    Details:
    OS: HP-UX 11.23
    ECC 5.0
    Oracle Release 9.2.0.6.0
    Physical mem avail  Kb    16,764,976
    Regards
    Injamuri

    Hi,
    Please click [buffers|http://help.sap.com/erp2005_ehp_04/helpdata/EN/c4/3a6e98505211d189550000e829fbbd/frameset.htm] for information.
    For Table Buffer or TABL
    zcsa/table_buffer_area u2013 for size of table buffer data area.
    zcsa/db_max_buftab u2013 for directory entries u2013 one for every resident table
    For Single key table Buffer or TABLEP.
    rtbb/max_tables u2013 Directory Entries u2013 One for each table.
    rtbb/buffer_length u2013 Size of data area
    Program buffer
    abap/buffersize u2013 Only parameter. No of directory entries are calculated automatically.
    For Screen Buffer or PRES.
    zcsa/bufdir_entries u2013 Directory size u2013 One per screen.
    zcsa/presentation_buffer_area u2013 Total screen buffer size in KB.
    CUA buffers
    rsdb/cua/buffersize u2013 total Buffer in KB and no of directories are caluated by dividing the same with 2K.
    Role and paging buffer.
    rdisp/ROLL_SHM u2013 For role buffer
    rdisp/PG_SHM u2013 For paging buffer
    Calendar Buffer
    zcsa/calendar_area
    With Regards,
    Krishna.

  • How to reduce UNDOTBS01.DBF?

    How to reduce UNDOTBS01.DBF?
    Can anyone tell me, how to do that

    Hello,
    I hope you asking about the undo tablespace,
    please see the followin threads,
    Undo Tablespace
    How can I shrink/release the undo table space
    How can I shrink/release the undo table space
    Additionally please specify your database version and O/S.
    Adith

  • How to Reduce the Gate count of a Design(RTL gate count)

     
    Hi All,
    I am a newbie to FPGA design and implemetation. I have a design (H.264 Encoder) and implemented on zynq zc702 (which is having Artix7 FPGA fabric). Now we need to implement it on zynq zc706 with reduced gate count ( because we are going to add some more blocks like rate control etc.,)
    How to reduce the gate count ?
    Please guide me regarding this query.
    Thanks,
    Ramesh

    
    Try to reduce the overall control set. Registers in the slice shares the same control set so if the number of registers in the control set do not divide cleanly, some registers may go unused.
    Make sure correct DSP and BRAM blocks are getting inferred by the tool
    Try to map FSM in BRAM.
    Use Synthesis and Implementation level strategies.
    See if any module is having high utilization and can be reduced by changing RTL: report_utilization -hierarchical  -file utilization.txt
    Thanks,
    Anusheel
    Search for documents/answer records related to your device and tool before posting query on forums.
    Search related forums and make sure your query is not repeated.
    Please mark the post as an answer "Accept as solution" in case it helps to resolve your query.
    Helpful answer -> Give Kudos
     

  • How long I can record a voice memo in my iphone 5s, how long I can record a voice memo in my iphone 5s

    how long I can record a voice memo in my iphone 5s, how long I can record a voice memo in my iphone 5s

    Thanks Caramby.  I actually found another work-around
    Here's how to copy the voice memo to your laptop (and then email it if you need to):
    With iTunes open on the Voice Memo folder of your device (an iPhone 4s in my case), simply drag the required file from iTunes and onto the desktop of your pc/laptop.  It won't remove the file from your device but simply make a copy.   Then you can play the file from your pc/laptop (through Quicktime) as the file is in AAC format.  You can also attach the file to an email for sending.
    Hope this helps someone else.
    RB

  • How to get latest record on top of the result list

    Hi Gurus,
    How to get latest record on top of the result list when you open the record.
    saved data method in BT120H_CPL of OverView page and result list in ICCMP_INBOX.
    Regards,
    Ravi

    Hi
    Try sort descending by on fileld "changed at ".
    manipulate the sort depends on your requirement
    Regards
    Logu

  • How to create a record based on the name of a file in the file-system?

    Hi,
    With a lot of pictures I want to have a database to gather some information about these pictures.
    First question is how to generate a record based on a file in the file system?
    e.g. the pictures are "c:\fotos\2009\01\disc_001.jpg" to "c:\foto\2009\01\dis_98.jpg" .
    now i want to create records with as one of the attributes the name of the picture (not the picture itself). how to create these records (based on the information of the file-ssytem). i.e. the number of records should be the same as the number of pictures.
    any suggestions?
    any reaction will be appreciated.
    Leo

    Link to Create directory
    http://www.adp-gmbh.ch/ora/sql/create_directory.html
    You can create a list of files in the directory and read the list files from that directory.
    [UTL_FILE Documentation |http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10802/u_file.htm#996728]
    [Solution using Java|http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:439619916584]
    SS

Maybe you are looking for

  • SQL%ROWCOUNT problem in Oracle 9i

    We have migrated our application from 8i to 9i. There is a PL/SQL procedure which returns number of rows inserted in the table. In Oracle it was returning correct number of rows but when we have migrated same procedure on Oracle9i it is returning 0 (

  • How to handle very wide EPS images?

    Hello, I am working on a project where we need to be able to open very wide EPS images in photoshop, but seems that the program has some limit. The image contains a printed music stave Please, see the attached eps file: I am able to open it with Prev

  • Problem opening 40D RAW files

    I have installed CS3 Extended and then downloaded and installed Camera RAW 4.2. In CS3 in the Help / about plug-ins option, Camera RAW 4.2 is named. I have also opened CS3 with the ctrl key depressed and cleared the cache / reset preferences. I have

  • I can't download music to my iPod mini

    I need help. The description of my problem is extremely long. I had my iTunes library on a computer and then moved it to another computer (more specifically a PC) this is NOT when my problem occured. I imported some music to iTunes and successfully d

  • MacBook (10.4.11) and Belkin-G 4-port Router...

    Hey everyone, I just bought a new router for our apartment and my macbook is having a hard time connecting. Like the topic says, I am running OS X 10.4.11 and trying to connect to the Belkin G-router (Model: F5D7234-4). I can connect to it and my air