Rebuid index.

Hi Guys
I am facing an error during Update statistics as :
Index SAPR3.TPFET__0 is unbalanced - please rebuild the index.
I have rebuit the index and it was rebuild successfully.
But, when i ran update statistics again, same error appeared again.
I dont have any DB Expert to assist me and I need to fix it.
Please let me know how?
Regards

Smashing Eric
Index has been rebuilt.
1. i followed Note 444287.
2. then i rebuilt the index and finally i ran
3. alter table sapr3.TPFET monitoring;
then ran update statistics and it ran absolutely fine.
But i still dont know which step has worked as medicine.
Many Thanks,
Cheers
Ricky

Similar Messages

  • Can't rebuid index for failed index

    Hi,
    I got a kind of indexing failure for certain reason, for example, using too long name of dot-notation to specifying a object attribute for indexing. Then I drop the failed index by the following statement:
    drop index myIdx force;
    Then try to re-create the index:
    CREATE INDEX myIdx on test(Descp.FUNC_SUM.FNAME)
    indextype is ctxsys.context
    parameters ('datastore ExpSeq_Summary_Dir
    filter ctxsys.null_filter');
    At this time, the following error happened:
    CREATE INDEX ESIdx on test(DESCP.FUNC_SUM.FNAME)
    ERROR at line 1:
    ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
    ORA-20000: interMedia Text error:
    DRG-10516: failed to perform DDL operation due to an Oracle error
    DRG-50857: oracle error in driddl.PolicyCreate
    ORA-00001: unique constraint (CTXSYS.DRC$IDX_COLSPEC) violated
    ORA-06512: at "CTXSYS.DRUE", line 126
    ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 78
    ORA-06512: at line 1
    It seems always that way if an indexing failed, the index name can't be used any more, even if you do force to drop it.
    Do anybody ever got and know the answer?
    Thanks.

    You need to delete the entry in dr$index table owned by ctxsys for the index you are trying to rebuild. Under certain circumstances this gets left behind and the force option also fails to remove it. Just delete it and you should be able to rebuild the index ok.

  • Local index vs global index in partitioned tables

    Hi,
    I want to know the differences between a global and a local index.
    I'm working with partitioned tables about 10 millons rows and 40 partitions.
    I know that when your table is partitioned and your index non-partitioned is possible that
    some database operations make your index unusable and you have tu rebuid it, for example
    when yo truncate a partition your global index results unusable, is there any other operation
    that make the global index unusable??
    I think that the advantage of a global index is that takes less space than a local and is easier to rebuild,
    and the advantage of a local index is that is more effective resolving a query isn't it???
    Any advice and help about local vs global index in partitioned tables will be greatly apreciatted.
    Thanks in advance

    here is the documentation -> http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14220/partconc.htm#sthref2570
    In general, you should use global indexes for OLTP applications and local indexes for data warehousing or DSS applications. Also, whenever possible, you should try to use local indexes because they are easier to manage. When deciding what kind of partitioned index to use, you should consider the following guidelines in order:
    1. If the table partitioning column is a subset of the index keys, use a local index. If this is the case, you are finished. If this is not the case, continue to guideline 2.
    2. If the index is unique, use a global index. If this is the case, you are finished. If this is not the case, continue to guideline 3.
    3. If your priority is manageability, use a local index. If this is the case, you are finished. If this is not the case, continue to guideline 4.
    4. If the application is an OLTP one and users need quick response times, use a global index. If the application is a DSS one and users are more interested in throughput, use a local index.
    Kind regards,
    Tonguç

  • Multiple text indexes on a single database

    Hi,
    We want to enable text search on one of our databases. Due to the specificity of the database we want to use a custom thesaurus.
    I would like to know if there's a way to create different text indexes using different thesaurus and then specify the index to be used in the query(similar to oracle sql hints).
    Thanks,
    Uma

    I don't know how often your data changes or how soon that data needs to be searchable or whether there can be any down time. If you can run a nightly procedure, during which time the data would not be searchable, you can have that procedure synchronize the index, then check all of the indexed tokens against those in your financial terms and those in your stoplist, then add any of the tokens that are not financial terms to your stoplist, then drop and rebuid the index. The new documents will then be searchable. It appears that, in order for the new stopwords to be used, the index must be dropped and recreated, not just rebuilt or synchronized. Please see the example below.
    SCOTT@10gXE> CREATE TABLE financial_terms
      2    (word VARCHAR2 (60))
      3  /
    Table created.
    SCOTT@10gXE> INSERT ALL
      2  INTO financial_terms VALUES ('account')
      3  INTO financial_terms VALUES ('balance')
      4  INTO financial_terms VALUES ('bank')
      5  INTO financial_terms VALUES ('deposit')
      6  INTO financial_terms VALUES ('finance')
      7  INTO financial_terms VALUES ('loan')
      8  INTO financial_terms VALUES ('withdraw')
      9  SELECT * FROM DUAL
    10  /
    7 rows created.
    SCOTT@10gXE> CREATE TABLE financial_documents
      2    (document CLOB)
      3  /
    Table created.
    SCOTT@10gXE> EXEC CTX_DDL.CREATE_STOPLIST ('non_financial')
    PL/SQL procedure successfully completed.
    SCOTT@10gXE> CREATE INDEX financial_idx ON financial_documents (document)
      2  INDEXTYPE IS CTXSYS.CONTEXT
      3  PARAMETERS ('STOPLIST non_financial')
      4  /
    Index created.
    SCOTT@10gXE> CREATE OR REPLACE PROCEDURE check_words
      2  AS
      3  BEGIN
      4    CTX_DDL.SYNC_INDEX ('financial_idx');
      5    FOR r IN
      6        (SELECT token_text
      7         FROM      dr$financial_idx$i,
      8             (SELECT UPPER (word) AS word
      9              FROM      financial_terms
    10              UNION ALL
    11              SELECT UPPER (spw_word) AS word
    12              FROM      ctx_stopwords
    13              WHERE  spw_stoplist = 'NON_FINANCIAL')
    14         WHERE  token_text = word (+)
    15         AND      word IS NULL)
    16    LOOP
    17        CTX_DDL.ADD_STOPWORD ('NON_FINANCIAL', r.token_text);
    18    END LOOP;
    19    EXECUTE IMMEDIATE 'DROP INDEX financial_idx';
    20    EXECUTE IMMEDIATE
    21        'CREATE INDEX financial_idx ON financial_documents (document)
    22         INDEXTYPE IS CTXSYS.CONTEXT
    23         PARAMETERS (''STOPLIST non_financial'')';
    24  END check_words;
    25  /
    Procedure created.
    SCOTT@10gXE> SHOW ERRORS
    No errors.
    SCOTT@10gXE> INSERT ALL
      2  INTO financial_documents VALUES ('bank account')
      3  INTO financial_documents VALUES ('loan application')
      4  INTO financial_documents VALUES ('test of other words')
      5  SELECT * FROM DUAL
      6  /
    3 rows created.
    SCOTT@10gXE> COMMIT
      2  /
    Commit complete.
    SCOTT@10gXE> EXECUTE check_words
    PL/SQL procedure successfully completed.
    SCOTT@10gXE> SELECT spw_word
      2  FROM   ctx_stopwords
      3  WHERE  spw_stoplist = 'NON_FINANCIAL'
      4  /
    SPW_WORD
    APPLICATION
    OF
    OTHER
    TEST
    WORDS
    SCOTT@10gXE> SELECT token_text FROM dr$financial_idx$i
      2  /
    TOKEN_TEXT
    ACCOUNT
    BANK
    LOAN
    SCOTT@10gXE> SELECT * FROM financial_documents
      2  WHERE CONTAINS (document, 'account OR loan OR test') > 0
      3  /
    DOCUMENT
    bank account
    loan application
    SCOTT@10gXE>

  • How can I to repair this Index corruption??

    Hi.
    I´m working with Oracle 9.2.0.7.0 on Windows 2003 SP2.
    I´ve a corruption issue on a PK index that I not am able to repair...
    I´ve detected it when I tried make a RMAN backup.This is the message:
    RMAN-03009: failure of backup command on ORA_DISK_1 channel at 03/02/2012 10:12:45
    ORA-19566: exceeded limit of 0 corrupt blocks for file...
    Then, I try to rebuild the index, but I get the following errors;
    ORA-01115: IO error reading block from file 8 (block # 447127)
    ORA-01110: data file 8: 'F:\ORACLE\ORADATA\INDEXES02.DBF'
    ORA-27091: unable to queue I/O
    ORA-27070: async read/write failed
    OSD-04006: ReadFile() failure, unable to read from file
    O/S error : (OS 121) The semophore timeout period has expired.
    The next step was to connect to rman catalog and try to recover that block:
    RMAN> blockrecover datafile 8 block 447127;
    Starting blockrecover at 02-FEB-12 using channel ORA_DISK_1
    Finished blockrecover at 02-FEB-12
    I try to rebuild index again but I´ve the same errors but on block 447128 this time...
    I do a new blockrecover and try to do a new rebuild index but it fails on block 447129...
    I´ve repeated this procces many times until arrive to block 447134. On this block, I have done a blockrecover correctly but when I do a rebuild index it fails on the same block again.
    Finally, after many retries, when I do a new rebuild but in this case, i get a
    ORA-08103: object no longer exists
    ...is absurd. The object yet exist!!
    Then I did BACKUP VALIDATE DATABASE from Rman catalog, and then query the view v$database_block_corruption.
    FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTION_TYPE
    8 447120 5 0 ALL ZERO
    8 447125 1 0 FRACTURED
    2 rows selected.
    I don´t know what mean this... Anyway when I try to make BLOCKRECOVER CORRUPTION LIST; rman returns:
    RMAN-06026: some targets not found - aborting restore
    RMAN-06023: no backup or copy of datafile 8 found to restore
    and it´s true...I only have backup of the archivelogs...
    Then, I decided to try something different using DBMS_REPAIR.
    I created the REPAIR_TABLE with this script:
    BEGIN
    SYS.DBMS_REPAIR.ADMIN_TABLES (
    TABLE_NAME => 'REPAIR_TABLE',
    TABLE_TYPE => SYS.dbms_repair.repair_table,
    ACTION => SYS.dbms_repair.create_action,
    TABLESPACE => 'USERS');
    END;
    Then try save the information of bad blocks in the table...
    SET SERVEROUTPUT ON
    DECLARE num_corrupt INT;
    BEGIN
    num_corrupt := 0;
    SYS.DBMS_REPAIR.CHECK_OBJECT (
    SCHEMA_NAME => 'MYSCHM',
    OBJECT_NAME => 'PK_CORX2',
    REPAIR_TABLE_NAME => 'REPAIR_TABLE',
    CORRUPT_COUNT => num_corrupt);
    SYS.DBMS_OUTPUT.PUT_LINE('number corrupt: ' || TO_CHAR (num_corrupt));
    END;
    ...but I get
    ORA-00942: table or view does not exist
    ORA-06512: at "SYS.DBMS_REPAIR", line 284
    now, I include the OBJECT_TYPE parameter
    SET SERVEROUTPUT ON
    DECLARE num_corrupt INT;
    BEGIN
    num_corrupt := 0;
    SYS.DBMS_REPAIR.CHECK_OBJECT (
    SCHEMA_NAME => 'MYSCHM',
    OBJECT_NAME => 'PK_CORX2',
    OBJECT_TYPE => 'INDEX_TYPE',
    REPAIR_TABLE_NAME => 'REPAIR_TABLE',
    CORRUPT_COUNT => num_corrupt);
    SYS.DBMS_OUTPUT.PUT_LINE('number corrupt: ' || TO_CHAR (num_corrupt));
    END;
    and then, message is
    ORA-06502: PL/SQL: numeric or value error string. Causa: An arithmetic, numeric, string, conversion, or constraint error occurred.
    ORA-06502 in line 4
    I don´t know how to fix that...
    The only thing that occurs to me is shutdown the instance, export the table, drop the table, import again and then recreate index... but I prefer not to stop the database because it is production, And I'm not sure this will solve the problem...
    Have anybody any suggestion??? will be attentively listened...
    note: I also did a scandisk of the unit if there were errors on the disk ...
    Thanks everybody.
    Regards

    Thank you everybody. I'll try to answer all the questions...
    Normally I´m doing backups by Rman and I´m complementing it with a full export every days.
    Because the Rman backup fails due to the file corruption for several days ago I have only EXP backups in this moment.
    On the other hand I agree with you Girish Sharma. The problem seems to be generated by a OS failure and I've tried to check it.
    A significant fact is that when copying the file to another drive using OS commands, the copy fails with the message "Cannot Copy File- Path Too Long". Obviously that not is the real problem because the path is short, equal al rest of the files... Also, I can copy files from the same folder without problem.
    The HDD is configured in RAID 1, I think if this were a hardware failure of a HD, the other should be functioning properly, so I conclude it must be a file system failure. So I did an scandisk on the unit but does not seem to have solved nothing.I guess the damage is already done at the logical level of data ...
    Ok, finally I found the mode to place tablespace offline and then disable the constraint and drop the index. After this I´ve created the index in other tablespace.
    I thought that this would solve the problem, but when I tried to make a level 0 backup with RMAN it fails with the same error. Nothing has changed...
    ...well, not really. there's something that have changed.
    Alert.log show that the corruption is on file 8 block 447120, as before... but when I go to locate the object affected, this does not exist.
    SELECT segment_name , segment_type , owner , tablespace_name
    FROM sys.dba_extents
    WHERE file_id =8
    AND 447120 BETWEEN block_id and block_id blocks -1;
    no rows selected.
    I'm not sure how to interpret this... the index is now in another tablespace, and I´ve checked doing a rebuid of it, however, the datafile still corrupt and not let me do full backups...

  • Rebuilding indexes on a scheduled basis:

    can you please help mefor this :
    1)can you give me a sample schedualr program that rebuilds the indexes on the particular tables for every weekends.

    909551 wrote:
    I am having particualr tables where dml operations are performed in a very frequent manner and in with the huge no of rows i want to rebuid the indexes for these tables every once per week so that i want schedular program for rebuilding the indexes for this one i want sample schedular programSo what is the problem? Why do the indexes need to be rebuild?
    Are the indexes dropped before the DML? And then rebuild? Does not sound like it.
    Instead is sounds like you expect there is something wrong with the indexes after DML and then this needs to be corrected using an index rebuild. So what is wrong with the indexes after the DML?
    How about reading this asktom thread on the topic?

  • Rebuild of Indexes

    Hi all,
    Is it require that that all the indexes should be recreated on a quarterly or yearly basis.
    If it is please let me know in detail.
    Regards
    Sandy.

    you acn rebuild the indexs from brtools if you know the tables.
    As per what practise what i follow we rebuid the indexes before client copy.
    Thanks
    Rishi Abrol

  • Which to use - Sy-index or sy-tabix ??

    This is what i found out about SY-INDEX and SY-TABIX but which one to use when i want to delete a line of data from an internal table ? I tried both sy-index and sy-tabix and both works fine and returning the expected output for me but which one is better of to use ?
    SY-TABIX :- For Internal Table, Current Line Index
    SY-INDEX :- For Loops, Current Loop Pass
    The below code is where i uses the Delete ..
    LOOP AT dmg.
            CONCATENATE
                   dmg-dmg00
                   dmg-dmg01
                   dmg-dmg02
                   dmg-dmg03
                   dmg-dmg04
                   dmg-dmg07
                   dmg-dmg08
                   dmg-dmg09 INTO tli_down1 SEPARATED BY '*'.
            APPEND tli_down1. CLEAR tli_down1.
            DELETE dmg INDEX sy-index.
            EXIT.
          ENDLOOP.

    Right. Just like what they said upstairs, sy-babix is the best choice.
    One more thing is, if you want to concatenate fields of table dmg and append to tli_down1 on by one. You should not use EXIT after delete dmg.
    In that case ,only one line can be appended into tli_down1 table.
    > The below code is where i uses the Delete ..
    >
    > LOOP AT dmg.
    >         CONCATENATE
    >        dmg-dmg00
    >         dmg-dmg01
    >        dmg-dmg02
    >         dmg-dmg03
    >        dmg-dmg04
    >         dmg-dmg07
    >        dmg-dmg08
    >         dmg-dmg09 INTO tli_down1 SEPARATED BY '*'.
    >   APPEND tli_down1. CLEAR tli_down1.
    >       DELETE dmg INDEX sy-index.
    >   EXIT.
    >     ENDLOOP.

  • Index's on cubes or Aggregates on infoobjects

    Hello,
    Please tell me if it is possible to put index's on cubes; are they automatically added or is this something I put on them?
    I do not understand index's are they like aggregates?
    Need to find info that explains this.
    Thanks for the hlep.
    Newbie

    Indexes are quite different from aggregates.
    An Aggregate is a slice of a cube which helps the data retrival on a faster note when a query is executed on a cube. Basically it is kind of a snapshot of KPI's and Business Indicators (Chars) which will be displayed as the initial query run result.
    Index is a process which is inturn will reduce the query response time. While an object gets activated, the system automatically create primary indexes. Optionaly, you can create additional index called secondary indexes.Before loading data, it is advisable to delete the indexes and insert them back after the loading.
    Indexes act like pointers for quickly geting the Data.When u delete it will delete indexes and when u create it will create the indexes.
    When loading we delete Bcs during loading it has to look for existing Indexes and try to update so it will effect the Data load performence so we delete and create it will take less time when compared to updating the existing ones.
    There is one more issue we have to take care if u r having more than 50 million records this is not a good practice insteah we can delete and create during week end when they r no users.

  • LIKE, LIKEC and Index usage

    I've table that contains about 20 million rows, and I've created index for varchar2(100) column. It works well if I do
    SELECT * FROM MY_TABLE WHERE MY_COL LIKE 'FOO%';
    But if I change query to use LIKEC (to make unicode escaped strings work):
    SELECT * FROM MY_TABLE WHERE MY_COL LIKEC 'FOO%';
    I always get full table scan in explain plan.
    I tried to use NVARCHAR, or index created by TO_NCHAR but I always end up hitting full table scan.
    Should I create index some special way or do something else before I get index working?

    Just a gut feeling : is the database using character semantics or byte semantics?
    My gut feeling, after looking up the documentation, is it should be character semantics.
    BTW: Not posting version info decreases the chance you get an adequate reply.
    Sybrand Bakker
    Senior Oracle DBA

  • Index with "or" clause (BUG still exists?)

    The change log for 2.3.10 mentions "Fixed a bug that caused incorrect query plans to be generated for predicates that used the "or" operator in conjunction with indexes [#15328]."
    But looks like the Bug still exists.
    I am listing the steps to-repro. Let me know if i have missed something (or if the bug needs to be fixed)
    DATA
    dbxml> openContainer test.dbxml
    dbxml> getDocuments
    2 documents found
    dbxml> print
    <node><value>a</value></node>
    <node><value>b</value></node>
    INDEX (just one string equality index on node "value")
    dbxml> listIndexes
    Index: unique-node-metadata-equality-string for node {http://www.sleepycat.com/2002/dbxml}:name
    Index: node-element-equality-string for node {}:value
    2 indexes found.
    QUERY
    setVerbose 2 2
    preload test.dbxml
    query 'let $temp := fn:compare("test", "test") = 0
    let $results := for $i in collection("test.dbxml")
    where ($temp or $i/node[value = ("a")])
    return $i
    return <out>{$temp}{$results}</out>'
    When $temp is true i expected the result set to contain both the records, but that was not the case with the index. It works well when there is no index!
    Result WITH INDEX
    dbxml> print
    <out>true<node><value>a</value></node></out>
    Result WITHOUT INDEX
    dbxml> print
    <out>true<node><value>a</value></node><node><value>b</value></node></out>

    Hi Vijay,
    This is a completely different bug, relating to predicate expressions that do not examine nodes. Please try the following patch, to see if it fixes this bug for you:
    --- dbxml-2.3.10-original/dbxml/src/dbxml/optimizer/QueryPlanGenerator.cpp     2007-04-18 10:05:24.000000000 +0100
    +++ dbxml-2.3.10/dbxml/src/dbxml/optimizer/QueryPlanGenerator.cpp     2007-08-08 11:32:10.000000000 +0100
    @@ -1566,11 +1572,12 @@
         else if(name == Or::name) {
              UnionQP *unionOp = new (&memMgr_) UnionQP(&memMgr_);
    +          result.operation = unionOp;
              for(VectorOfASTNodes::iterator i = args.begin(); i != args.end(); ++i) {
                   PathResult ret = generate(*i, ids);
                   unionOp->addArg(ret.operation);
    +               if(ret.operation == 0) result.operation = 0;
    -          result.operation = unionOp;
         // These operators use the presence of the node arguments, not their valueJohn

  • INDEX vs TABIX

    Hi,
    Can some body explain the CLEAR difference between Sy-index and Sy-tabix. And one or two small examples. I am little bit confused.
    Thanx.

    Hi,
    SY-INDEX
    In a DO or WHILE loop, SY-INDEX contains the number of loop passes including the current pass.
    SY-TABIX
    Current line of an internal table. SY-TABIX is set by the statements below, but only for index tables. The field is either not set or is set to 0 for hashed tables.
    APPEND sets SY-TABIX to the index of the last line of the table, that is, it contains the overall number of entries in the table.
    COLLECT sets SY-TABIX to the index of the existing or inserted line in the table. If the table has the type HASHED TABLE, SY-TABIX is set to 0.
    LOOP AT sets SY-TABIX to the index of the current line at the beginning of each loop lass. At the end of the loop, SY-TABIX is reset to the value that it had before entering the loop. It is set to 0 if the table has the type HASHED TABLE.
    READ TABLE sets SY-TABIX to the index of the table line read. If you use a binary search, and the system does not find a line, SY-TABIX contains the total number of lines, or one more than the total number of lines. SY-INDEX is undefined if a linear search fails to return an entry.
    SEARCH <itab> FOR sets SY-TABIX to the index of the table line in which the search string is found.
    regards,
    madhu

  • What is" LINE-COL2 = SY-INDEX ** 2."

    can u explain what is '' ** "
    FIELD-SYMBOLS <FS> LIKE LINE OF ITAB.
    DO 4 TIMES.
      LINE-COL1 = SY-INDEX.
      LINE-COL2 = SY-INDEX ** 2.  "what this will do
      APPEND LINE TO ITAB.
    ENDDO.

    Hi sunil,
    1 **   means "To the power of"
    2. eg. 5 ** 2  =  25
       (5 To the power of 2 = 25)
    regards,
    amit m.

  • Regarding sy-index

    Hi all,
    I am trying to get loop count by using sy-index.
    But I am not able get exact expected out put.
    I am gettig all zeros instead of loop number.
    I am sending my code here.
    DATA: lv_diff(10) TYPE c,
            lv_erdat1 LIKE sy-datum,
            lv_erdat2 LIKE sy-datum,
            i(15) TYPE c VALUE '1'.
      SORT t_ordno BY aufnr.
      LOOP AT t_ordno  INTO st_ordno.
        READ TABLE t_ordno INTO st_ordno INDEX i.
        lv_erdat1 =  st_ordno-erdat.
        i = i + 1.
        READ TABLE t_ordno INTO st_ordno INDEX i.
        lv_erdat2 = st_ordno-erdat.
        i = i + 1.
        CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
             EXPORTING
                  i_datum_bis = lv_erdat2
                  i_datum_von = lv_erdat1
             IMPORTING
                  e_tage      = lv_diff.
        WRITE:/ lv_diff,
              50 <u><b>sy-index.</b></u>
        CLEAR: lv_erdat1,lv_erdat2,lv_diff.

    use this code
    DATA: lv_diff(10) TYPE c      ,
          lv_erdat1 LIKE sy-datum ,
          lv_erdat2 LIKE sy-datum ,
          i(15) TYPE c VALUE '1'  ,
          l_tabix type syst-tabix .
    SORT t_ordno BY aufnr.
    LOOP AT t_ordno INTO st_ordno.
      l_tabix = sy-tabix .
      READ TABLE t_ordno INTO st_ordno INDEX i.
      lv_erdat1 = st_ordno-erdat.
      i = i + 1.
      READ TABLE t_ordno INTO st_ordno INDEX i.
      lv_erdat2 = st_ordno-erdat.
      i = i + 1.
      CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
           EXPORTING
                i_datum_bis = lv_erdat2
                i_datum_von = lv_erdat1
           IMPORTING
                e_tage      = lv_diff.
      WRITE:/ lv_diff,
           50 l_tabix.
      CLEAR: lv_erdat1,lv_erdat2,lv_diff.

  • ANY SY-INDEX REFLECT CHANGES WHEN CONTROL BREAK STATEMENT PROCESS

    Dear Guru's,
                     I have a requirement where i have to move the values to variable when control break (AT END OF) process. So i want to move the values according to the end of Vendor so for that  i want to know is there any sy-index available which reflects changes when Control break (AT end of) process.
    LIKE Sy-subrc = 0 when select statement fetches record or sy-tabix is like counter for loop.
    Hope to get reply soon.
    Regards,
    Himanshu Rangappa

    Hi,
    There is no system Fields for it.
    But your requirement can be done with 'AT NEW' and 'AT END' statement.
    Refer this sample example,
    loop at otab.
        at new module.
          move otab-module to otab2-module.
        ENDAT.
          at END OF effort.
          sum.               "Do your calculations here
          move otab-count to otab2-count.
          append otab2.
        endat.
      endloop.

Maybe you are looking for