Creating an INDEX on an internal table

Hi Folks,
Currently I am dealing with some programs which needs to be optimised.I had came acrossed some queries which are having some fields in the where clause which are neither a primary  key nor in any index.As it is not advisable to create as many index as we can in a standard table,I just want to create an index on the internal table.
Will be glad if anyone here can provide me some lead in this.
Thanks,
K.Kiran.

Hi,
There is no need to create the index in the internal table since the primary key of the database table from which you selected the data becomes Primary index for the internal table.
The primary index is distinguished from the secondary indexes of a table. The primary index contains the key fields of the table and a pointer to the non-key fields of the table. The primary index is created automatically when the table is created in the database
You can also create further indexes on a table in the ABAP Dictionary. These are called secondary indexes. This is necessary if the table is frequently accessed in a way that does not take advantage of the sorting of the primary index for the access.
You create secondary indexes using the ABAP Dictionary. There you can create its columns and define it as UNIQUE. However, you should not create secondary indexes to cover all possible combinations of fields.
Only create one if you select data by fields that are not contained in another index, and the performance is very poor. Furthermore, you should only create secondary indexes for database tables from which you mainly read, since indexes have to be updated each time the database table is changed. As a rule, secondary indexes should not contain more than four fields, and you should not have more than five indexes for a single database table.
Secondary indexes should contain columns that you use frequently in a selection, and that are as highly selective as possible. The fewer table entries that can be selected by a certain column, the higher that column’s selectivity. Place the most selective fields at the beginning of the index. Your secondary index should be so selective that each index entry corresponds to, at most, five percent of the table entries. If this is not the case, it is not worth creating the index. You should also avoid creating indexes for fields that are not always filled, where their value is initial for most entries in the table.
Regards,
Priyanka.

Similar Messages

  • Create/drop index on a busy table

    Hello,
    It's kind-a of a funny question but how do you create or drop a index on a very busy table? (by making the users wait...)
    I tried:
    lock table <table> in exclusive mode
    then in another session (session2)
    update <table> set col1 = 'a';
    (this session now waits)
    then back a the first session:
    create index bla on <table> (col1);
    And what happens is that the lock is released immediatelly, and in session2 the update updates and I get the standard "RESOURCE BUSY" error.
    Any ideas on how to do that ?
    Thanks

    Jozsef wrote:
    Hi there,
    I have done similar things couple of times before and I have used a pretty good method to obtain a rough (and it was really a rough, but enough) estimation.
    Sorry folks, it does not work properly for create index...this method only works for SELECT statments, SO IGNORE IT :(
    It nearly works in 10g:
    | Id  | Operation              | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | CREATE INDEX STATEMENT |       | 10000 | 40000 |    10   (0)| 00:00:01 |
    |   1 |  INDEX BUILD NON UNIQUE| T1_I1 |       |       |            |          |
    |   2 |   SORT CREATE INDEX    |       | 10000 | 40000 |            |          |
    |   3 |    TABLE ACCESS FULL   | T1    | 10000 | 40000 |     6   (0)| 00:00:01 |
    Note
       - estimated index size: 196K bytesThe "Note" tells you Oracle's estimate of the final space allocation needed for the index. There are various reasons why the estimate is not very accurate, and why it's not a good estimate of the space requirement in the TEMP tablespace, but it gives you a figure that is probably in the right ballpark (factor of 2 out, either way, probably).
    Jonathan Lewis
    http://jonathanlewis.wordpress.com
    http://www.jlcomp.demon.co.uk
    "For every expert there is an equal and opposite expert."
    Arthur C. Clarke

  • Create an index on a huge table

    hi gurus
    I am going to create an index on a very large table(194GB) with the temporary tablespace size is 80G.
    I am afraid that during the index creation the temporary tablespace is not enouth to hold the data needed
    to create the index,because i only have 80g in temporary tablespace. How do i estimated the size i need to create a such large index and is there an effcient way to do such index creation?
    thank u in advance.

    Jozsef wrote:
    Hi there,
    I have done similar things couple of times before and I have used a pretty good method to obtain a rough (and it was really a rough, but enough) estimation.
    Sorry folks, it does not work properly for create index...this method only works for SELECT statments, SO IGNORE IT :(
    It nearly works in 10g:
    | Id  | Operation              | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | CREATE INDEX STATEMENT |       | 10000 | 40000 |    10   (0)| 00:00:01 |
    |   1 |  INDEX BUILD NON UNIQUE| T1_I1 |       |       |            |          |
    |   2 |   SORT CREATE INDEX    |       | 10000 | 40000 |            |          |
    |   3 |    TABLE ACCESS FULL   | T1    | 10000 | 40000 |     6   (0)| 00:00:01 |
    Note
       - estimated index size: 196K bytesThe "Note" tells you Oracle's estimate of the final space allocation needed for the index. There are various reasons why the estimate is not very accurate, and why it's not a good estimate of the space requirement in the TEMP tablespace, but it gives you a figure that is probably in the right ballpark (factor of 2 out, either way, probably).
    Jonathan Lewis
    http://jonathanlewis.wordpress.com
    http://www.jlcomp.demon.co.uk
    "For every expert there is an equal and opposite expert."
    Arthur C. Clarke

  • How to create New columns for the Internal Table Dynamically?

    HI Guys,
                          In my logic i have to create new columns depending on the logic which i am executing.
    My requirement is .I have to display o/p like this
    Material || Year || Period  ||  Mix ratio || Vendor ||Mix Ratio || Vendor || Mix Ratio Vendor || Mix ratio || Vendor || Mix ratio.............................from table's CKMLMV003 and CKMLMV001.Her i have to display the o/p in the above format and i have to display Vendor and Mix Ratio for 5 columns irrespective of data .If i have more than 5 columns for any record then i have to create a New columns dynamically for Vendor and Mix ratio.If anybody want my code i can Submit But plz tell with example how to do?
                    <b>The O/P must be finally shown in ALV Grid</b>
    Thanks,
    Gopi

    You must create the entire internal table dynamically, you can not add columns to a statically define internal table.  Here is an example of creating a dynamic internal table.
    Creation of internal table dynamically based on the Date Range entered
    Regards,
    Rich Heilman

  • Create object/structure like dynamic internal table

    Hi,
    We have created dynamic internal table with some fields.
    for the above how to create structure or internal table like dynamic internal table structure .
    Scenario: internal table itab1 ( with header line) have 5 fields.
    Based on some of the conditions in layout of the report.
    we have to create dynamic internal table.
    field-symbols: <FS> type standard table.
    we are able to create dynamic internal table with 3 fields
    with assignment <fs> = itab1[]
    the columns are not appearing but data appearing in next column.
    how to solve this one
    Thanks
    Ramesh

    Hi Ramesh,
      I hope this code works...
    report  yup_alv_datbase                         .
    *-Display Database table contents in ALV Grid Format
    >********************************************************************
    This report displays data from SAP tables, views (like SE16)        *
    FM : REUSE_ALV_GRID_DISPLAY                                         *
    tables:
      dd02l,                               " SAP tables
      dd03l.                               " Table Fields
    type-pools: slis.                      " ALV Global Types
    selection-screen :
    begin of line, comment 1(35) v_1 for field p_table.         "#EC NEEDED
    parameters p_table like dd03l-tabname obligatory memory id dtb.
    selection-screen end of line.
    selection-screen :
    begin of line, comment 1(35) v_2 for field p_max.           "#EC NEEDED
    parameters p_max(2) type n default '20' obligatory.
    selection-screen end of line.
    at selection-screen.
      select single * from dd02l where tabname  = p_table
                                   and as4local = 'A'
                                   and as4vers  = '0000'.
      if sy-subrc ne 0.
      Table & is not active in the Dictionary
        message e402(mo) with p_table.
      elseif dd02l-tabclass = 'INTTAB'.
      & is a structure, not a table
        message e403(mo) with p_table.
      endif.
    initialization.
      v_1 = 'Table'.
      v_2 = 'Maximum of records'.
    start-of-selection.
      perform f_display_data.
         Form  F_DISPLAY_DATA
    form f_display_data.
    Macro definition
      define m_sort.
        add 1 to ls_sort-spos.
        ls_sort-fieldname = &1.
        ls_sort-up = 'X'.
        append ls_sort to lt_sort.
      end-of-definition.
      data:
        l_long type i,
        lp_struct   type ref to data,
        lp_table    type ref to data,      " Pointer to dynamic table
        of_sdescr   type ref to cl_abap_structdescr,
        ls_lvc_cat  type lvc_s_fcat,
        lt_lvc_cat  type lvc_t_fcat,       " Field catalog
        ls_fieldcat type slis_fieldcat_alv,
        lt_fieldcat type slis_t_fieldcat_alv,  " Field catalog
        ls_layout   type slis_layout_alv,
        lt_sort     type slis_t_sortinfo_alv,  " Sort table
        ls_sort     type slis_sortinfo_alv.
      field-symbols :
        <fieldcat>   type slis_fieldcat_alv,
        <lt_data>    type table,           " Data to display
        <fs>         type any,
        <components> type abap_compdescr.
    Dynamic creation of a structure
      create data lp_struct type (p_table).
      assign lp_struct->* to <fs>.
    Fields Structure
      of_sdescr ?= cl_abap_typedescr=>describe_by_data( <fs> ).
      loop at of_sdescr->components assigning <components>.
      Field MANDT not displayed
        if sy-tabix = 1 and <components>-name = 'MANDT'.
          continue.                        " Next loop
        endif.
      Build Fieldcatalog
        ls_lvc_cat-fieldname = <components>-name.
        ls_lvc_cat-ref_table = p_table.
        append ls_lvc_cat to lt_lvc_cat.
      Build Fieldcatalog
        ls_fieldcat-fieldname = <components>-name.
        ls_fieldcat-ref_tabname = p_table.
        append ls_fieldcat to lt_fieldcat.
      endloop.
    Create internal table
      call method cl_alv_table_create=>create_dynamic_table
        exporting it_fieldcatalog = lt_lvc_cat
        importing ep_table = lp_table.
      assign lp_table->* to <lt_data>.
    Read data
      select * from (p_table) up to p_max rows
        into corresponding fields of table <lt_data>
       order by primary key.
      if <lt_data>[] is initial.
      No table entries found for specified key
        message i429(mo).
        exit.
      endif.
    Read key field to Build Sort Table
      select * from dd03l where tabname  = p_table
                            and fieldname <> '.INCLUDE'
                            and as4vers  = '0000'
                            and as4local = 'A'
                          order by position.
        read table lt_fieldcat assigning <fieldcat>
                                with key fieldname = dd03l-fieldname.
        check sy-subrc eq 0.
        add dd03l-leng to l_long.
        if dd03l-keyflag = 'X'.
        Build Sort Table
          m_sort dd03l-fieldname.
          <fieldcat>-key = 'X'.
        elseif l_long > 150.
          <fieldcat>-tech = 'X'.
        endif.
      endselect.
      ls_layout-zebra = 'X'.
      ls_layout-colwidth_optimize = 'X'.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                is_layout   = ls_layout
                it_fieldcat = lt_fieldcat
                it_sort     = lt_sort
           tables
                t_outtab    = <lt_data>.
    endform.                               " F_DISPLAY_DATA
    END OF PROGRAM Z_ALV_DYNAMIC_DATA *********************
    Regards,
    Sampath

  • Can we create secondary index for a cluster table

    hi
    can we create secondary index for a cluster table

    Jyothsna,
    There seems to be some kind of misunderstanding here. You <i>cannot</i> create a secondary index on a cluster table. A cluster table does not exist as a separate physical table in the database; it is part of a "physical cluster". In the case of BSEG for instance, the physical cluster is RFBLG. The only fields of the cluster table that also exist as fields of the physical cluster are the leading fields of the primary key. Taking again BSEG as the example, the primary key includes the fields MANDT, BUKRS, BELNR, GJAHR, BUZEI. If you look at the structure of the RFBLG table, you will see that it has primary key fields MANDT, BUKRS, BELNR, GJAHR, PAGENO. The first four fields are those that all cluster tables inside BSEG have in common. The fifth field, PAGENO, is a "technical" field giving the sequence number of the current record in the series of cluster records sharing the same primary key.
    All the "functional" fields of the cluster table (for BSEG this is field BUZEI and everything beyond that) exist only inside a raw binary object. The database does not know about these fields, it only sees the raw object (the field VARDATA of the physical cluster). Since the field does not exist in the database, it is impossible to create a secondary index on it. If you try to create a secondary index on a cluster table in transaction SE11, you will therefore rightly get the error "Index maintenance only possible for transparent tables".
    Theoretically you could get around this by converting the cluster table to a transparent table. You can do this in the SAP dictionary. However, in practice this is almost never a good solution. The table becomes much larger (clusters are compressed) and you lose the advantage that related records are stored close to each other (the main reason for having cluster tables in the first place). Apart from the performance and disk space hit, converting a big cluster table like BSEG to transparent would take extremely long.
    In cases where "indexing" of fields of a cluster table is worthwhile, SAP has constructed "indexing tables" around the cluster. For example, around BSEG there are transparent tables like BSIS, BSAS, etc. Other clusters normally do not have this, but that simply means there is no reason for having it. I have worked with the SAP dictionary for over 12 years and I have never met a single case where it was necessary to convert a cluster to transparent.
    If you try to select on specific values of a non-transparent field in a cluster without also specifying selections for the primary key, then the database will have to do a serial read of the whole physical cluster (and the ABAP DB interface will have to decompress every single record to extract the fields). The performance of that is monstrous -- maybe that was the reason of your question. However, the solution then is (in the case of BSEG) to query via one of the index tables (where you are free to create secondary indexes since those tables are transparent).
    Hope this clarifies things,
    Mark

  • HOW TO CREATE LOCAL INDEX ON BIG PARTITION TABLE

    Dear All,
    I have one big table 450GB stored on 9 partitions and same partitions I have created for the index. Now the problem is when i am trying to create local index it took one and half day and is still going on...
    is there any shortest way to create local index on this table easily.
    Database version is 11.2.0.1.0
    INDEX SCRIPT IS
    CREATE INDEX INDEX_SPACE0_IX_LOCAL ON FINANCE (END_TIME)
    INITRANS 2 MAXTRANS
    255
    LOCAL ( PARTITION INDEX_SPACE01
    LOGGING
    NOCOMPRESS
    TABLESPACE INDEX_SPACE01
    PCTFREE 5 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 1M MINEXTENTS 1 MAXEXTENTS
    2147483645 BUFFER_POOL
    DEFAULT), PARTITION INDEX_SPACE02
    LOGGING
    NOCOMPRESS
    TABLESPACE INDEX_SPACE02 PCTFREE
    5 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 1M MINEXTENTS 1 MAXEXTENTS
    2147483645 BUFFER_POOL DEFAULT),
    PARTITION INDEX_SPACE03
    LOGGING
    NOCOMPRESS
    TABLESPACE
    INDEX_SPACE03
    PCTFREE 5 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 1M MINEXTENTS 1 MAXEXTENTS
    2147483645 BUFFER_POOL DEFAULT),
    PARTITION INDEX_SPACE04
    LOGGING
    NOCOMPRESS
    TABLESPACE
    INDEX_SPACE04 PCTFREE 5 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 1M MINEXTENTS
    1 MAXEXTENTS
    2147483645 BUFFER_POOL DEFAULT),
    PARTITION INDEX_SPACE05
    LOGGING
    NOCOMPRESS
    TABLESPACE
    INDEX_SPACE05 PCTFREE 5 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 1M MINEXTENTS
    1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT),
    PARTITION INDEX_SPACE06
    LOGGING
    NOCOMPRESS
    TABLESPACE INDEX_SPACE06 PCTFREE 5 INITRANS 2
    MAXTRANS 255 STORAGE (INITIAL 1M MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL
    DEFAULT),
    PARTITION INDEX_SPACE07
    LOGGING
    NOCOMPRESS
    TABLESPACE INDEX_SPACE07 PCTFREE
    5 INITRANS 2
    MAXTRANS 255 STORAGE (INITIAL 1M MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL
    DEFAULT),
    PARTITION INDEX_SPACE08
    LOGGING
    NOCOMPRESS
    TABLESPACE INDEX_SPACE08 PCTFREE
    5 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 1M MINEXTENTS 1 MAXEXTENTS
    2147483645
    BUFFER_POOL DEFAULT),
    PARTITION INDEX_SPACE09
    LOGGING
    NOCOMPRESS
    TABLESPACE
    INDEX_SPACE09 PCTFREE 5 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 1M MINEXTENTS
    1 MAXEXTENTS 2147483645 BUFFER_POOL
    DEFAULT))
    NOPARALLEL;
    Thanks in advance......
    Thanks,
    Edited by: sherkhan on Aug 24, 2011 3:36 AM
    Edited by: sherkhan on Aug 24, 2011 3:49 AM

    Have you verified that 'n' Index partition segments have got created so far ? (they would apepar as TEMPORARY segments only till the full index creation is completed). Have you monitored the session statistics and waits and confirmed that it is not waiting on something horrible ?
    A CREATE INDEX can well be NOLOGGING instead of LOGGING. It could also use PARALLEL but I always recommend setting it back to NOPARALLEL immediately after the CREATE is completed.
    You can also "quickly" build an empty index and then gradually create (i.e. build) each partition
    CREATE INDEX INDEX_SPACE0_IX_LOCAL  .........  UNUSABLE ;
    ALTER INDEX INDEX_SPACE0_IX_LOCAL REBUILD PARTITION PARTITION INDEX_SPACE01;
    ALTER INDEX INDEX_SPACE0_IX_LOCAL REBUILD PARTITION PARTITION INDEX_SPACE02;
    ...Hemant K Chitale

  • Procedure for creating an Index on SAP standard table

    Hi,
    I need to create an Index on a SAP standard table. Please help me out with the process of doing so.
    Regards,
    Sharadendu

    Please search the forum. You will find lots of related threads:
    how to create an index
    how to create secondary index

  • Creating XML file from ABAP internal table data....

    Hello,
    I am fethcing data froma  custom table and I have to write data in XMl format. Following is the XML format in which I want data. Is there any function module iN SAP which will help me in writing data from internal table to XML file ?
    <batch>
      <invoice>
        <StatusCode>10</StatusCode>
        <paymentamount>122.00</paymentamount>
         <ReferenceNumber>70980934</ReferenceNumber>
      </invoice>
      <invoice>
         <StatusCode>90</StatusCode>
        <paymentamount>122.00</paymentamount>
         <ReferenceNumber>70980934</ReferenceNumber>
      </invoice>
      <control>
        <InvoiceCount>2</InvoiceCount>
      </control>
    </batch>
    Please help.
    Regards,
    Jainam.

    I suggest you look into "simple transformations". That's SAP's most recent technology for such purposes, as far as I know.
    http://help.sap.com/abapdocu_70/en/ABENABAP_ST.htm
    Thomas

  • Creating XML transformation using multiple internal tables

    <b>Hi everyone,</b><br />
    <br />
    <b>I'm trying to transforme 3 internal tables (from customer master data) into a single XML document.</b><br />
    <p />
    DATA:   BEGIN OF wtab OCCURS 0 ,<br />
            kunnr LIKE kna1-kunnr, "Customer ID<br />
            ktokd LIKE kna1-ktokd, <br />
            land1 LIKE kna1-land1, <br />
            name1 LIKE kna1-name1, <br />
            ort01 LIKE kna1-ort01, <br />
            pstlz LIKE kna1-pstlz, <br />
            spras_iso LIKE kna1-spras, <br />
            smtp_addr LIKE adr6-smtp_addr, <br />
            stras LIKE kna1-stras, <br />
              END OF wtab.<br />
    <br />
    DATA:   BEGIN OF wtab_o OCCURS 0 ,<br />
            kunnr LIKE knvv-kunnr, "Customer ID<br />
            vkorg LIKE knvv-vkorg, "Sales organisation<br />
            waers LIKE knvv-waers, <br />
            END OF wtab_o.<br />
    <br />
    DATA:   BEGIN OF wtab_p OCCURS 0 ,<br />
            kunnr LIKE knvp-kunnr, "Customer ID<br />
            vkorg LIKE knvp-vkorg, "Sales organisation<br />
            parvw LIKE knvp-parvw, <br />
            kunn2 LIKE knvp-kunnr,<br />
              END OF wtab_p.<br />
    <p />
    <b>The internal tables are related to each other as follows:*</b><br />
    <br />
    wtab-kunnr = wtab_o-kunnr<br />
    <br />
    AND<br />
    <br />
    wtab_o-vkorg = wtab_p-vkorg<br />
    wtab_o-kunnr = wtab_p-kunnr<br />
    <br />
    <b>I couldn't figure out how to declare this relationship when calling the transformation. Is it possible?</b><br />
    <p />
    ABAP<br />
    <br />
    <br />
    REFRESH : gt_source_itab.<br />
    CLEAR : g_rxml.<br />
    <br />
      GET REFERENCE OF wtab INTO gs_source_wa-value.<br />
      gs_source_wa-name = 'DEBMAS04'.<br />
      APPEND gs_source_wa TO gt_source_itab.<br />
    <br />
      GET REFERENCE OF wtab_o INTO gs_source_wa-value.<br />
      gs_source_wa-name = 'E1KNVVM'.<br />
      APPEND gs_source_wa TO gt_source_itab.<br />
    <br />
    GET REFERENCE OF wtab_p INTO gs_source_wa-value.<br />
      gs_source_wa-name = 'E1KNVPM'.<br />
      APPEND gs_source_wa TO gt_source_itab.<br />
    <br />
      TRY.<br />
          CALL TRANSFORMATION Z_XSLT_CLIENT<br />
          SOURCE (gt_source_itab)<br />
          RESULT XML g_rxml<br />
          OPTIONS xml_header = 'without_encoding'.<br />
    CATCH cx_root INTO gs_rif_ex.<br />
    <br />
          gs_var_text = gs_rif_ex-&gt;get_text( ).<br />
          MESSAGE gs_var_text TYPE 'E'.<br />
        ENDTRY.<br />
    <br />
    <br />
    Transformation Z_XSLT_CLIENT:<br />
    <br />
    <br />
    &lt;xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   xmlns:sap="http://www.sap.com/sapxsl"&gt;<br />
    &lt;xsl:output indent="yes" encoding="UTF-16" method="xml" version="1.0"/&gt;<br />
    &lt;xsl:strip-space elements="*"/&gt;<br />
    &lt;xsl:template match="/"&gt;<br />
    &lt;DEBMAS04&gt;<br />
    &lt;xsl:apply-templates select="//DEBMAS04/item"/&gt;<br />
    &lt;/DEBMAS04&gt;<br />
    &lt;/xsl:template&gt;<br />
    &lt;xsl:template match="DEBMAS04/item"&gt;<br />
         &lt;IDOC&gt;<br />
           &lt;xsl:attribute name="BEGIN"&gt;1&lt;/xsl:attribute&gt;<br />
           &lt;E1KNA1M&gt;<br />
            &lt;xsl:attribute name="SEGMENT"&gt;1&lt;/xsl:attribute&gt;<br />
            &lt;KUNNR&gt;<br />
               &lt;xsl:value-of select="KUNNR"/&gt;<br />
            &lt;/KUNNR&gt;<br />
            &lt;KTOKD&gt;<br />
               &lt;xsl:value-of select="KTOKD"/&gt;<br />
            &lt;/KTOKD&gt;<br />
            &lt;LAND1&gt;<br />
               &lt;xsl:value-of select="LAND1"/&gt;<br />
            &lt;/LAND1&gt;<br />
            &lt;NAME1&gt;<br />
               &lt;xsl:value-of select="NAME1"/&gt;<br />
            &lt;/NAME1&gt;<br />
            &lt;ORT01&gt;<br />
               &lt;xsl:value-of select="ORT01"/&gt;<br />
            &lt;/ORT01&gt;<br />
            &lt;PSTLZ&gt;<br />
               &lt;xsl:value-of select="PSTLZ"/&gt;<br />
            &lt;/PSTLZ&gt;<br />
            &lt;SPRAS_ISO&gt;<br />
               &lt;xsl:value-of select="SPRAS_ISO"/&gt;<br />
            &lt;/SPRAS_ISO&gt;<br />
            &lt;SMTP_ADDR&gt;<br />
               &lt;xsl:value-of select="SMTP_ADDR"/&gt;<br />
            &lt;/SMTP_ADDR&gt;<br />
            &lt;STRAS&gt;<br />
               &lt;xsl:value-of select="STRAS"/&gt;<br />
            &lt;/STRAS&gt;<br />
             &lt;xsl:apply-templates select="//E1KNVVM/item"/&gt;<br />
           &lt;/E1KNA1M&gt;<br />
      &lt;/IDOC&gt;<br />
    &lt;/xsl:template&gt;<br />
    &lt;xsl:template match="E1KNVVM/item"&gt;<br />
       &lt;E1KNVVM&gt;<br />
             &lt;xsl:attribute name="SEGMENT"&gt;1&lt;/xsl:attribute&gt;<br />
             &lt;VKORG&gt;<br />
               &lt;xsl:value-of select="VKORG"/&gt;<br />
             &lt;/VKORG&gt;<br />
             &lt;WAERS&gt;<br />
               &lt;xsl:value-of select="WAERS"/&gt;<br />
             &lt;/WAERS&gt;<br />
           &lt;xsl:apply-templates select="//E1KNVPM/item"/&gt;<br />
       &lt;/E1KNVVM&gt;<br />
    &lt;/xsl:template&gt;<br />
    &lt;xsl:template match="E1KNVPM/item"&gt;<br />
       &lt;E1KNVPM&gt;<br />
             &lt;xsl:attribute name="SEGMENT"&gt;1&lt;/xsl:attribute&gt;<br />
             &lt;PARVW&gt;<br />
               &lt;xsl:value-of select="PARVW"/&gt;<br />
             &lt;/PARVW&gt;<br />
             &lt;KUNN2&gt;<br />
               &lt;xsl:value-of select="KUNN2"/&gt;<br />
             &lt;/KUNN2&gt;<br />
       &lt;/E1KNVPM&gt;<br />
    &lt;/xsl:template&gt;<br />
    &lt;/xsl:transform&gt;<br />
    <br />
    <b>The way the call transformation is now, for each line in table wtab (DEBMAS04) I'm getting all the lines in table wtab_o (E1KNVVM) and table wtab_p (E1KNVPM)</b><br />
    <p />
    <br />
    Thank you for your help,<br />
    <br />
    Giselle<br />
    <p />

    Hi Giselle,
    I think it's possible (using xsl:if for instance), but an easier way is to nest your internal tables declarations (wtab_o inside wtab, kunnr becomes useless, and wtab_p inside wtab_o), and use the SAP standard "ID" transformation (no need for a custom XSL transformation). You'll get a slightly different result, but I don't think you want something very sophisticated.
    Sandra

  • Impossible to create an index with an object table

    Is it possible to use object tables with Oracle Spatial ?
    With Oracle 8.1.7.0.0, here is the example where I encounter a problem (this example works of course with an equivalent relational table) :
    create or replace type zonegeo as object (
    id integer, definitionGeo MDSYS.SDO_GEOMETRY
    create table essaigeo of zonegeo (id PRIMARY KEY)
    OBJECT ID PRIMARY KEY;
    INSERT INTO USER_SDO_GEOM_METADATA
    VALUES ('ESSAIGEO','DEFINITIONGEO',
    MDSYS.SDO_DIM_ARRAY(
    MDSYS.SDO_DIM_ELEMENT('X', 47680.000, 1197822.000, 0.005),
    MDSYS.SDO_DIM_ELEMENT('Y', 1620431.000, 2677441.000, 0.005)
    NULL -- SRID
    CREATE INDEX ESSAIGEO_SPATIAL_IDX
    ON ESSAIGEO(DEFINITIONGEO)
    INDEXTYPE IS MDSYS.SPATIAL_INDEX
    PARAMETERS ('SDO_LEVEL = 6);
    ERREUR ` la ligne 1 :
    ORA-29855: erreur d'exicution de la routine ODCIINDEXCREATE
    ORA-13203: ichec de lecture de la table USER_SDO_GEOM_METADATA
    ORA-13203: ichec de lecture de la table USER_SDO_GEOM_METADATA
    ORA-06512: ` "MDSYS.SDO_INDEX_METHOD", ligne 8
    ORA-06512: ` ligne 1

    In Oracle 8.1.7 you cannot embed a geometry type in another type and index it.
    In 9i, you can , but not in the way you've defined it, i.e. you have to create a regular
    table, and have a column of type zonegeo, and make a few other changes, i.e.:
    create or replace type zonegeo as object (
    id integer, definitionGeo MDSYS.SDO_GEOMETRY
    create table essaigeo (zone zonegeo);
    INSERT INTO USER_SDO_GEOM_METADATA
    VALUES ('ESSAIGEO','ZONE.DEFINITIONGEO',
    MDSYS.SDO_DIM_ARRAY(
    MDSYS.SDO_DIM_ELEMENT('X', 47680.000, 1197822.000, 0.005),
    MDSYS.SDO_DIM_ELEMENT('Y', 1620431.000, 2677441.000, 0.005)
    NULL -- SRID
    CREATE INDEX ESSAIGEO_SPATIAL_IDX
    ON ESSAIGEO(ZONE.DEFINITIONGEO)
    INDEXTYPE IS MDSYS.SPATIAL_INDEX
    PARAMETERS ('SDO_LEVEL = 6);

  • Problem creating index on global temporary table

    Running Oracle DB Oracle9i Release 9.2.0.7.0.
    I'm trying to create 3 indexes on a temporary table, the first index creates fine but the other remaining 2 result in the following error:
    ERROR at line 1: ORA-00600: internal error code, arguments: [kftts2bz_many_files], [0], [20], [], [], [], [], []
    Have tried searching with not much success, any pointers, tips, hints would be appreciated, below is the table and the indexes:-
    create global temporary TABLE contacts (
    ID VARCHAR2(20) NOT NULL,
    DOB VARCHAR2(8),
    HH_LASTNAME VARCHAR2(90),
    PERSON VARCHAR2(10) NOT NULL,
    CONT_JOB VARCHAR2(90) NOT NULL,
    SOURCE VARCHAR2(8) NOT NULL,
    ADS VARCHAR2(8) NOT NULL,
    CONT VARCHAR2(8) NOT NULL,
    SRCPERSONID VARCHAR2(15),
    FIRSTNAME VARCHAR2(90),
    MIDDLENAME VARCHAR2(90),
    LASTNAME VARCHAR2(90),
    FULLNAME VARCHAR2(90),
    TITLE VARCHAR2(50),
    SALUTATION VARCHAR2(90),
    ) on commit delete rows;
    create index i_contact_1 on contacts(dob, soundex(hh_lastname ));
    create index i_contact_pk on contacts(id, person, cont_job, source, ads, cont);
    create index i_contact_2 on contacts(srcpersonid, source);

    Bug 3238525 - Upgrade from 9.0 can leave corruptdata for global temporary table indices
    ORA-600 [kftts2bz_many_files]
         Doc ID:      285592.1

  • Create XML file from internal table and vise a versa

    Hi Friends,
    I have requirement to create an XML string from internal table data and also read XML string data to internal table.
    Can anybody tell are there any Function Modules or methods existing for this?
    Thanks.
    Krishna Yerram.

    1. Write XSLT program. T.code XSLT . e.g. XSLT name "ZTRANS".
    2. Write ABAP program
    Which includes declaration of internal tables
    that you need "IT_DATA".
    Upload XML data to an internal table "IT_XML "
    use below statement to convert XML to internal table.
    Call transformation ZTRANS
    source XML IT_XML
    result IT_DATA.

  • Create a xml file from an internal table: CALL TRANSFORMATION

    Hello gurus,
    I want to create a xml file using data from scustom table. I will create an internal table and will select some records to it.
    I searched the forum and i discovered the call transformation, but when i execute the example program at the CALL TRANSFORMATION shows a dump screen.
    How we create a xml file from internal table??
    Please help me. I will mark the useful answers.

    I'm using if_ixml class to create xml documents
    TYPES: BEGIN OF xml_line,
             data(256) TYPE x,
           END OF xml_line.
    DATA: o_ixml          TYPE REF TO if_ixml,
          o_document      TYPE REF TO if_ixml_document,
          o_element       TYPE REF TO if_ixml_element,
          o_streamfactory TYPE REF TO if_ixml_stream_factory,
          o_ostream       TYPE REF TO if_ixml_ostream,
          o_renderer      TYPE REF TO if_ixml_renderer.
    DATA: t_xml_table     TYPE TABLE OF xml_line,
          v_xml_size      TYPE i.
    o_ixml = cl_ixml=>create( ).
    o_document = o_ixml->create_document( ).
    * The o_document have a set of methods to add elements, attributes, etc.
    o_element  = o_document->create_simple_element(
                      name = 'RootNode'
                      value = 'some text'
                      parent = o_document ).
    o_streamfactory = o_ixml->create_stream_factory( ).
    o_ostream = o_streamfactory->create_ostream_itable( table = t_xml_table ).
    o_renderer = o_ixml->create_renderer( ostream  = o_ostream document = o_document ).
    o_renderer->render( ).
    v_xml_size = o_ostream->get_num_written_raw( ).
    CALL METHOD cl_gui_frontend_services=>gui_download
      EXPORTING
        bin_filesize = v_xml_size
        filename     = 'C:a.xml'
        filetype     = 'BIN'
      CHANGING
        data_tab     = t_xml_table.

  • I want to create an internal table without using header line and occurs 0?

    hi experts,
    Can anybody help me to declare an internal table without using headerline and occurs 0 options but still i have to use the functionalities that occurs 0 and header line options provide.

    Hi Saisri,
    You can use the internal table without headerline and create a header for then internal table with the same structure. We need to use the header while manipulating with the data of the internal table.
    example:
    types: begin of ty_afpo,
                 kdauf type kdauf,
                 kdpos type kdpos,
                 ltrmp   type ltrmp,
               end   of ty_afpo.
    data : t_afpo type standard table of ty_afpo,  " internal table declaration
             wa_afpo type ty_afpo.                        " work area declaration
    <after populating the data into the internal table>
    loop at t_afpo into wa_afpo.
    write:/ wa_afpo-kdauf, wa_afpo-kdpos, wa_afpo-ltrmp.
    endloop.
    This I think shall give you a basic understanding of how things work.
    <b>Reward points if this helps,</b>
    Kiran

Maybe you are looking for

  • GL Master -Open Item Management, Post Automatically

    Hi All, Hear I have a question. A) Why should we select either 1.Openitem Management 2.Post Automatically or bouth to a G/L Master. OR B) In which situation we have to select either 1.Openitem Management 2.Post Automatically or bouth  a  the time of

  • Fatal Error code C0000043 shows when applying update - Can't repair though!

    I was updating an old laptop with the current windows updates since I hadn't used it since 2012. After the updates were download and the computer restarted, it got stuck loading the files. The Fatal Error message showed C0000043.  Now I've read other

  • Version mismatch error in SOAP interface

    Hi Scenario is SOAP to SOAP. Sending request by SOAP UI to receiver webservice. Interface was perfectly done & tested successfully. Then we have done some changes in Receiver soap channel ...due to some error the changes were reverted but now i am ge

  • Moving Bookmarks

    I am trying to move my bookmarks from my iBook G4 runing Tiger to my old desktop G4 running Panther 10.03.5. I saved the bookmarks to a memory stick, downloaded them to my new laptop, reinstalled the operating system in the desktop (Panther). When I

  • Calling Matlab 7.1 from LabView 6.1

    Hello, I am using LabView 6.1 and I have recently installed Matlab 7.1 on the same machine. When I try to call Matlab by a Matlab script node, I only get the error message that the script could not be executed and that a failure occured calling the s