Secondary Index Picked with one field short in select query

Hi,
We have a select query as follows
select  single lgort       vgbel        vgpos
    into   (lips-lgort,lips-vgbel,lips-vgpos)
    from    lips
   where         vbeln          Eq p_zlcpp-vbeln
     and         matnr          Eq p_zlcpp-matnr
     and         charg          Eq p_zlcpp-charg
The secondary index ZB has the fields as follows:
MANDT     Client
MATNR     Material Number
CHARG     Batch Number
BWART     Movement Type (Inventory Management)
When seen in the trace it seems the select query picks this secondary index. Whether it is correct? since i find no BWART in the select query. Because of this index the query take large time. I used the Hint statement as follows:
select  single lgort       vgbel        vgpos
    into   (lips-lgort,lips-vgbel,lips-vgpos)
    from    lips
   where         vbeln          Eq p_zlcpp-vbeln
     and         matnr          Eq p_zlcpp-matnr
     and         charg          Eq p_zlcpp-charg   %_HINTS ORACLE 'INDEX("LIPS" "LIPS~0")' .
and it now works fast. Please advice the best way to make the select query work on itself without using the hint statement to pick the index LIPS~0 instead of the invalid secondary index ZB.
Thanks & Regards,
Selvakumar M.
Edited by: Selva on Jun 17, 2011 7:35 PM

Hello Selva,
your problem here is the decision of the optimizer that does not exactly know the selectivity of the fields.
If your deliveries are normally small (not too many items), then selecting via the document number will be relatively fast.
And selecting via the material number + batch will be slow in case if many deliveries are having same product from the same batch delivered.
I assume that the latest is the case in your system. That's why the selection with ZB index is slow.
If the data distribution is as I described above, then your hint is quite OK and I advise you to stick to the hint.
From my PoV this is the better solution rather changing the coding and throwing out MATNR field from the WHERE clause to filter later in ABAP.
Another solution would be trying to play with histograms. But you'll need %SUBSTITUTE VALUES% or %SUBSTITUTE LITERALS% hint anyway, so I find your solution better.
So, please stay with hint. Even SAP standard development does it for some select statements.
Regards,
  Yuri

Similar Messages

  • How to modify field symbol of type Index Table with other field symbol of type any.

    Hello Experts,
    How is it possible to update an filed symbol table of type Index table with other filed symbol table.
    e.g.
    Field symbol :  <lt_table1> type Index table.
    Field symbol : <lt_table2> type Index table.
    after some code...at run time these table filled like following.
    <lt_tabel1 > has  value fore column  like c11 , c12 , c13 
    <lt_table2> has value for column like C11     , C12 , C13 , C14 , C15 . some extra  values from <lt_table1>
    Now I want to be modify <table1> one entires like C12 with <table2 > col C12.
    how I can achieve this.
    Regards,
    Chetan.

    Hi,
    did you try  ASSIGN COMPONENT xx OF STRUCTURE <IT_TABEL1> TO <IT_TABLE2>.
    xx will contain the number of the column
    or maybe, if you have the description with a field catalog or other, that will be easier ..
    regards
    Fred

  • Need help with parameter fields and report selection.

    Hi all:
    I hope some one can help me with the problem I am having with my parameter field and record selection.
    First, can anyone explain to me why my parameter field CustStart, which is dynamic and is based on the field Customer in the table CustMaster.  There are over 1800 records in the CustMaster table but the drop down list only shows maybe about half of them and there is no way to scroll down to the last customer record.  What am I doing wrong?
    Second, is there any way to base a parameter field on a formula field on my report?  On my report I have created a field Cust that is the customer name and number joined together in one field.  I would very much llike to use this formula in my record selection and in my parameter field.  Can it be done?
    All help is greatly appreciated
    Thanks,
    FatMan

    Hi,
    You can use the following for changin increasing the LOV.
    Crystal Reports XI BusinessObjects Enterprise XI
    For performance reasons, in Crystal Reports XI Release 1 and Release 2 the maximum number of values that are returned for a list of values is set to 1000. If you have a cascading List of Values (for example Country > Region > City), the lowest level (in this case City) will only display a maximum of 1000 values. This means that the higher-level prompts may display far fewer values than you expect. The list of values provides the data for the dynamic parameter list.
    How can you modify the maximum number of values available in a dynamic parameter list?
    Resolution
    To increase the maximum number of values available in a dynamic parameter list, you must add a registry key.
    CAUTION     The following resolution involves editing the registry. Using the Registry Editor incorrectly can cause serious problems that may require you to reinstall the Microsoft Windows operating system. Use the Registry Editor at your own risk. For information on how to edit the registry key, view the 'Changing Keys and Values' online Help topic in the Registry Editor (Regedit.exe).
    It is strongly recommended that you make a backup copy of the registry files (System.dat and User.dat on Win9x computers) before you edit the registry.
    Crystal Reports XI Release 1
    1.     Create a registry key HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.0\Crystal Reports\DatabaseOptions\LOV.
    NOTE     Alternatively, you can create the registry key HKEY_CURRENT_USER\SOFTWARE\Business Objects\Suite 11.0\Crystal Reports\DatabaseOptions\LOV and that key will override the settings of the HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.0\Crystal Reports\DatabaseOptions\LOV key.
    2.     Add a string value "MaxRowsetRecords" and set the value to the maximum number of values that you desire for your report. For example, a value of 2000 will return up to 2000 values in the lowest level of a cascading parameter. NOTE: The value 0 (Unlimited) will not work with BusinessObjects Enterprise XI or Crystal Reports Server XI, you must specify another value.
    NOTE     The higher the number of values is, the longer it will take the Enter Values dialog box to populate with values.
    3.      After making changes to the registry, restart the affected service or application as required.
    Crystal Reports XI Release 2
    1.     Create a registry key HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.5\Crystal Reports\DatabaseOptions\LOV.
    NOTE     Alternatively, you can create the registry key HKEY_CURRENT_USER\SOFTWARE\Business Objects\Suite 11.5\Crystal Reports\DatabaseOptions\LOV and that key will override the settings of the HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.5\Crystal Reports\DatabaseOptions\LOV key.
    2.     Add a string value "MaxRowsetRecords" and set the value to the maximum number of values that you desire for your report. For example, a value of 2000 will return up to 2000 values in the lowest level of a cascading parameter. 
    NOTE     The value 0 (Unlimited) will not work with BusinessObjects Enterprise XI or Crystal Reports Server XI, you must specify another value.
    3.     After making changes to the registry, restart the affected service or application as required.
    I hope this helps you.
    Regards,
    Prashant

  • User must fill at list one field in a selection screen in report

    Hi experts,
    i have a report that the user should choose between 2 fields or he can fill them both. but he must to fill at list one of them- at the selection screen.
    how do i check that the user filled at list one of them.
    any help will be appreciate it.
    dana.

    Hi ,
    You can check that in AT SELECTION-SCREEN event.
    To validate that in the IF condition check whether any one of the parameters
    filled or not.If both the fields are initial then give a error message to proceed further.
    Check the code -
    PARAMETERS : p_name(20) TYPE c,
                 p_id(10) TYPE c.
    AT SELECTION-SCREEN.
      IF p_name IS INITIAL AND p_id IS INITIAL .
        MESSAGE 'Enter at least one field' TYPE 'E'.
      ENDIF.
    START-OF-SELECTION.
      WRITE 'Test'.
    Regards
    Pinaki

  • Facing problem with a date column in select query

    Hi,
    I am facing problem with a date column. Below is my query and its fainling with " invalid number format model" .
    Query: SELECT *
    FROM EMP
    WHERE trunc(LAST_UPDATED) >= to_date(to_char(22-05-2009,'dd-mm-yyyy'),'dd-mm-yyyy')
    LAST_UPDATED column is "DATE" data type.
    Please help me Thanks

    Radhakrishna Sarma wrote:
    SeánMacGC wrote:
    WHERE LAST_UPDATED >= to_date('22-05-2009','dd-mm-yyyy');
    You do not need the TRUNC here in any case.
    I don't think so. What if the user wants only data for 22nd May and the table has records with date later than 22nd also? In that case your query willl not work. In order for the Index to work, I think the query can be written like this I think Sean is right though. Use of TRUNC Function is quiet useless based on the condition given here, since the to_date Function used by OP will always point to midnight of the specified date, in this case 22-05-2009 00:00:00.
    Regards,
    Jo
    Edit: I think Sean proved his point... ;)

  • How to truncate a field in a Select Query

    Hello Gurus,
    I am new in SAP, i have a question i am making an appointment letter in SMARTFORMS , in global declaration (initialization) i am using a select query
    SELECT SINGLE BET01 FROM PA0008 INTO G_BET01 WHERE PERNR = WA_PERNR.
    where BET01 is the Amount field which is getting printed in the smart form but its takes 5 to 6 character blank spaces in the printing time, i want to truncate this space (remove this space ) in the print time , please tell me how to remove this space , the field size is 13 , how can i reduce the field size in my smartform query. please help . G_BET01 is a variable

    Maybe you can use this.
    DATA: d_char(15).
    WRITE G_BET01 TO d_char CURRENCY 'XXX'.
    'Then you can remove the spaces using :
    CONDENSE d_char no-gaps.

  • Sorting by Last Name with One Field

    In other words, how would I sort by last name when it's a single field that looks like FirstName_LastName?
    Ex:
    Alex S
    Derek A
    Bob Z
    to
    Derek A
    Alex S
    Bob Z
    I would suppose there is a way to make it read only the data after the space and sort it that way somehow?
    I have other problems but this is the biggest one I have at the moment.

    Dgn wrote:
    The thing is the I don't specifically remember hearing this in class and it doesn't appear in my book unless it goes by some other name.
    I'm dealing with a multi class program if that has any relevance.
    And I'm supposed to sort the names into a alphabetical last name format.Are you supposed to use your own sorting alogrithm or are you supposed to use Java's built in sorting algorithms and API?

  • Dynamic LOV's - can we display more than one field in the Select list.

    I have the following query.
    SELECT DISTINCT NAME d, legal_entity_id r
    FROM xle_entity_profiles
    ORDER BY NAME
    So the drop down would contain the Organizational  Name - say in the case   China mobilex
    The legal entity  id is - 100
    Issue, there's also a legal entity id of 110 that is mapped to the same Organizational name - China mobilex
    so in the select list display it would look like
                                   China mobile
                                   China mobile
    QUESTION - is there a way to display BOTH
                                   China mobile 100 
                                   China mobile 110

    Hi Mikez,
    Perhaps the super LOV plugin of Skillbuilders would suit your needs more. It lets you create a modal dialog LOV with multiple columns, so you can display your selectable entries like:
    "Organizational Name" | "Country" | "Address" | "Phone Number"
    From a users point of view that would make more sense than an id column.
    - Item Plugin - SkillBuilders Super LOV
    Regards,
    Vincent Deelen

  • Error in procedure with cursor which has a select query in NVL

    cursor has a select statement in the NVL functiion
    sample query in given
    SELECT fu.user_name Core_ID,
    fu.description User_Name,
    fu.LAST_LOGON_DATE LAST_LOGON_DATE,
    TRUNC(SYSDATE) - TRUNC(fu.LAST_LOGON_DATE) DAYS_SINCE_LAST_LOGON,
    NVL((SELECT 'YES' FROM custmot.moto_rma_approvers mra
    WHERE mra.primary_approver = fu.user_name),'NO') PRIMARY_RMA_APPROVER,
    NVL((SELECT 'YES' FROM custmot.moto_rma_approvers mra
    WHERE mra.secondary_approver = fu.user_name), 'YES', 'ALL RESPONSIBILITIES',
    DECODE(fu.employee_id, NULL, 'USER ACCOUNT', 'ALL RESPONSIBILITIES' ))) END_DATE_WHAT
    FROM apps.fnd_user fu
    This query runs fine when it is run seperately. But when its defined in cursor in a procedure it throws up the following error.
    "Encountered the symbol "SELECT" when expecting one of the following:
    ( - + mod not null others <an identifier>
    <a double-quoted delimited-identifier> <a bind variable> avg
    count c"
    can you please help us with this

    I noticed your statement has one additional end-bracket at the end. Probably this is just a typo. It should read like this:
    SELECT fu.user_name core_id,
           fu.description user_name,
           fu.last_logon_date last_logon_date,
           TRUNC (SYSDATE) - TRUNC (fu.last_logon_date) days_since_last_logon,
           NVL ((SELECT 'YES'
                   FROM custmot.moto_rma_approvers mra
                  WHERE mra.primary_approver = fu.user_name), 'NO')
                                                             primary_rma_approver,
           NVL ((SELECT 'YES'
                   FROM custmot.moto_rma_approvers mra
                  WHERE mra.secondary_approver = fu.user_name),
                'YES',
                'ALL RESPONSIBILITIES',
                DECODE (fu.employee_id,
                        NULL, 'USER ACCOUNT',
                        'ALL RESPONSIBILITIES'
               ) end_date_what
      FROM apps.fnd_user fuIf that doesn't help, you may make your cursor dynamic:
       OPEN c FOR 'SELECT fu.user_name core_id,
           fu.description user_name,
           fu.last_logon_date last_logon_date,
           TRUNC (SYSDATE) - TRUNC (fu.last_logon_date) days_since_last_logon,
           NVL ((SELECT ''YES''
                   FROM custmot.moto_rma_approvers mra
                  WHERE mra.primary_approver = fu.user_name), ''NO'')
                                                             primary_rma_approver,
           NVL ((SELECT ''YES''
                   FROM custmot.moto_rma_approvers mra
                  WHERE mra.secondary_approver = fu.user_name),
                ''YES'',
                ''ALL RESPONSIBILITIES'',
                DECODE (fu.employee_id,
                        NULL, ''USER ACCOUNT'',
                        ''ALL RESPONSIBILITIES''
               ) end_date_what
      FROM apps.fnd_user fu';

  • SQL-display two rows in a table as one row in the select query

    Hi guys
    Sorry if this sounds a little odd.
    I have two tables
    Im sorry but i tried to format these tables in text to make them look like tables but this text processor deletes space based formatting.
    States
    state id | Name
    1 | california
    2 | New york
    3 | New hampshire
    .......so on
    Grades
    Gradeid | State id | Language | Avgscore |
    1 | 1 | ENG | 67 |
    2 | 1 | FRENCH | 76 |
    2 | 2 | SPANISH | 34 |
    Now i wanna write an sql query thats gonna display like
    State Name | State id | English | French | SPANISH|
    California | 1 | 67 | 76 | null
    New York | 2 | null | null | 34
    I know how to get just an sql query where i can say
    SELECT A.id, A.Name, G.Language,G.Avgscore
    FROM States A , Grades G
    where A.state_id = G.state_id
    and G.Language = 'English'
    How do i accomplish this?
    Thanks
    J
    Edited by: user7348303 on Apr 1, 2010 1:15 PM

    Regarding:
    Im sorry but i tried to format these tables in text to make them look like tables but this text processor deletes space based formatting.Use this tag: {noformat}{noformat}
    before and after your example, so formatting will be maintained when posting your example.
    Example, when you type:
    {noformat}select * from dual;
    {noformat}
    it will appear as:select * from dual;
    when you post it on the forum.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Select query with secondary index

    hi,
    i have a report which is giving performance issues on a perticular select query on KONH table.
    the select query doesnt use the primary key fields and table already has around 19 million entries.So there was a secondary index created for the fields in the table.
    now, KONH is a client specific table, and hence has MANDT as the first field. when the table is not indexed it is sorted according to the order of fields, like first MANDT, then primary key fields and then remaining fields.. (correct me if i am wrong)
    but the secondary index created doesnt has MANDT in it..(yea, a mistake! )...
    but instead of correccting the secondary index, i am told to change the select query..
    so, i used a "client specific" syntax to sort the issue.. but i dont understand whre i should put the "where mandt eq sy-mandt" clause..
    should i put it right after all my secondary index fields are over? or what happens to the order of fields which are not present in the list of secondary index?
    kindaly help.
    thanx.

    Hi chinmay kulkarni,
    its better if you can ask concerned person to add MANDT field in your  index as well....
    Indexes and MANDT
    If a table begins with the mandt field, so should its indexes. If a table begins with mandt and an index doesn't, the optimizer might not use the index.
    Remember, if you will, Open SQL's automatic client handling feature. When select * from ztxlfa1 where land1 = 'US' is executed, the actual SQL sent to the database is select * from ztxlfa1 where mandt = sy-mandt and land1 = 'US'. Sy-mandt contains the current logon client. When you select rows from a table using Open SQL, the system automatically adds sy-mandt to the where clause, which causes only those rows pertaining to the current logon client to be found.
    When you create an index on a table containing mandt, therefore, you should also include mandt in the index. It should come first in the index, because it will always appear first in the generated SQL.
    Index: Technical key of a database table.
    Primary index: 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.
    Secondary index: Additional indexes could be created considering the most frequently accessed dimensions of the table.
    Structure of an Index
    An index can be used to speed up the selection of data records from a table.
    An index can be considered to be a copy of a database table reduced to certain fields. The data is stored in sorted form in this copy. This sorting permits fast access to the records of the table (for example using a binary search). Not all of the fields of the table are contained in the index. The index also contains a pointer from the index entry to the corresponding table entry to permit all the field contents to be read.
    When creating indexes, please note that:
    An index can only be used up to the last specified field in the selection! The fields which are specified in the WHERE clause for a large number of selections should be in the first position.
    Only those fields whose values significantly restrict the amount of data are meaningful in an index.
    When you change a data record of a table, you must adjust the index sorting. Tables whose contents are frequently changed therefore should not have too many indexes.
    Make sure that the indexes on a table are as disjunctive as possible.
    (That is they should contain as few fields in common as possible. If two indexes on a table have a large number of common fields, this could make it more difficult for the optimizer to choose the most selective index.)
    For Example...
    SELECT KUNNR KUNN2 INTO TABLE T_CUST_TERR
    FROM KNVP CLIENT SPECIFIED
    WHERE MANDT = SY-MANDT " here MANDT shd be first
    AND KUNN2 IN S_TERR
    AND PARVW LIKE 'Z%'.
    Accessing tables using Indexes
    The database optimizer decides which index on the table should be used by the database to access data records.
    You must distinguish between the primary index and secondary indexes of a table. The primary index contains the key fields of the table. The primary index is automatically created in the database when the table is activated. If a large table is frequently accessed such that it is not possible to apply primary index sorting, you should create secondary indexes for the table.
    The indexes on a table have a three-character index ID. '0' is reserved for the primary index. Customers can create their own indexes on SAP tables; their IDs must begin with Y or Z.
    If the index fields have key function, i.e. they already uniquely identify each record of the table, an index can be called a unique index. This ensures that there are no duplicate index fields in the database.
    When you define a secondary index in the ABAP Dictionary, you can specify whether it should be created on the database when it is activated. Some indexes only result in a gain in performance for certain database systems. You can therefore specify a list of database systems when you define an index. The index is then only created on the specified database systems when activated
    Also pls have a look on below link
    http://www.sapfans.com/sapfans/forum/devel/messages/30240.html
    Hope it will solve your problem..
    Reward points if useful...
    Thanks & Regards
    ilesh 24x7

  • How to make a one field form with Adobe Muse?

    Hello,
    I hope you can help me guys, im trying to make one field form for a webpage (this form is just to input a phone number, similar as the newsletter sign up forms with one field) and the problem is with the widgets i can´t erase the Name and email field... Is possible to eliminate those?
    thanks a lot for your help

    Hi
    I am afraid its not possible to do the same, as Name and email field are mandatory.

  • F4 Help on one field should populate data on another field

    Dear All....
    I am using the FM - F4IF_INT_TABLE_VALUE_REQUEST for F4 help on one field of the selection screen. Based on the selected value, a values corresponding to it should appear on another field.
    My Code -
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_svn.
      SELECT qmnum serialnr
        INTO TABLE t_qmel
        FROM qmel
        WHERE qmart  = 'ZD'.
      SORT t_qmel BY qmnum.
    Display the f4 Help Values for SVN
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield     = 'QMNUM'
          dynpprog     = sy-repid
          dynpnr       = sy-dynnr
          dynprofield  = 'P_SVN'
          window_title = text-015
          value_org    = 'S'
        TABLES
          value_tab    = t_qmel
          return_tab   = t_retval.
      READ TABLE t_retval INTO w_retval_wa INDEX 1.
      IF sy-subrc = 0.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  = w_retval_wa-fieldval
          IMPORTING
            output = w_qmel_wa-qmnum.
        w_retval_wa-fieldval = w_qmel_wa-qmnum.
        READ TABLE t_qmel INTO w_qmel_wa WITH KEY qmnum = w_retval_wa-fieldval
                                         BINARY SEARCH.
        IF sy-subrc = 0.
          p_esn = w_qmel_wa-serialnr.
        ENDIF.
      ENDIF.
    But this is however not working.
    Please let me know where I am going wrong.
    I have serached SDN thoroghly but could not get my solution.
    Please guide me....
    Regards,
    Pankaj Agarwal.

    *&  AT SELECTION SCREEN ON VALUE-REQUEST FOR FIELD
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ebeln.
      PERFORM f4_hlp_ebeln.
    *&      Form  F4_HLP_EBELN
          text
    -->  p1        text
    <--  p2        text
    FORM f4_hlp_ebeln .
      TYPES: BEGIN OF ty_ebeln,
               ebeln TYPE ebeln ,
            END OF ty_ebeln.
      DATA: lt_ebeln TYPE TABLE OF ty_ebeln.
      CLEAR: lt_ebeln[].
      SELECT ebeln
           FROM zmt_po_mic_ded
             INTO TABLE lt_ebeln.
      IF sy-subrc = 0.
        SORT lt_ebeln[] BY ebeln.
        DELETE ADJACENT DUPLICATES FROM lt_ebeln COMPARING ALL FIELDS.
        CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
          EXPORTING
            retfield         = 'EBELN'
            dynpprog         = sy-repid
            dynpnr           = sy-dynnr
            dynprofield      = 'P_EBELN'
            value_org        = 'S'
            callback_program = sy-repid
          TABLES
            value_tab        = lt_ebeln[]
          EXCEPTIONS
            parameter_error  = 1
            no_values_found  = 2
            OTHERS           = 3.
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
      ENDIF.
    ENDFORM.                    " F4_HLP_EBELN
    DATA: t_dynfields TYPE TABLE OF dynpread,
          t_valhlp    TYPE TABLE OF ty_valhlp.
    DATA: w_dynfields TYPE dynpread.
    CLEAR: t_dynfields[], t_valhlp[].
      DATA: l_ebeln TYPE ebeln.
      w_dynfields-fieldname = 'P_EBELN'.
      w_dynfields-fieldvalue = p_ebeln.
      APPEND w_dynfields TO t_dynfields.
      CLEAR w_dynfields.
      CALL FUNCTION 'DYNP_VALUES_READ'
        EXPORTING
          dyname               = sy-repid
          dynumb               = sy-dynnr
          translate_to_upper   = c_x
        TABLES
          dynpfields           = t_dynfields
        EXCEPTIONS
          invalid_abapworkarea = 1
          invalid_dynprofield  = 2
          invalid_dynproname   = 3
          invalid_dynpronummer = 4
          invalid_request      = 5
          no_fielddescription  = 6
          invalid_parameter    = 7
          undefind_error       = 8
          double_conversion    = 9
          stepl_not_found      = 10
          OTHERS               = 11.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      READ TABLE t_dynfields INTO w_dynfields INDEX 1.
      IF sy-subrc = 0.
        l_ebeln = w_dynfields-fieldvalue.
        SELECT ebeln
               ebelp
               FROM ekpo
               INTO TABLE t_valhlp
               WHERE ebeln = l_ebeln.
        IF sy-subrc = 0.
          SORT t_valhlp[] BY ebeln ebelp.
    here we get the value of ebelp depending on the selection of EBELN ***
        endif.
      ENDIF.

  • SELECT QUERY  BASED ON SECONDARY INDEX

    Hi all,
    CAN ANYONE TELL ME HOW TO WRITE SELECT QUERY BASED ON SECONDARY INDEX.
    IN WHAT WAY DOES IT IMPROVE PERFORMANCE.
    i KNOW WHEN CREATING SECONDARY INDEX I NEED TO GIVE AN INDEX NO -iT SHOULD BE ANY NUMBER RIGHT?
    I HAVE TO LIST ALL PRIMARY KEYS FIRST AND THEN THE FIELD FOR WHICH I AM CREATING SECONDARY INDEX RIGHT?
    LETS SAY I HAVE 2 PRIMARY KEYS AND I WANT TO CREATE SEONDARY INDEX FOR 2 FIELDS THEN
    I NEED TO CREATE A SEPERTE SECONDARY INDEX FOR EACH ONE OF THOSE FIELDS OR ONE SHOULD BE ENOUGH
    pLS LET ME KNOW IF IAM WRONG

    HI,
    If you cannot use the primary index to determine the result set because, for example, none of the primary index fields occur in the WHERE or HAVINGclauses, the system searches through the entire table (full table scan). For this case, you can create secondary indexes, which can restrict the number of table entries searched to form the result set.
    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. <b>As a rule, secondary indexes should not contain more than four fields</b>, <b>and you should not have more than five indexes for a single database table</b>.
    <b>What to Keep in Mind for Secondary Indexes:</b>
    http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eb2d446011d189700000e8322d00/content.htm
    http://www.sap-img.com/abap/quick-note-on-design-of-secondary-database-indexes-and-logical-databases.htm
    Regards
    Sudheer

  • Using Secondary Index

    Hi,
    I have a secondary index with 3 key fields.While wrting the select query with these 3 key fields I am providing 2 more non-key fields. Now the problem is that the secondary index in not used in this case. Can anybody help me why it is not using the secondary index.
    For example:
    Seconday Index fields are : fd1, fd2, fd3
    In select query:
    select A B C from  <XYZ> into table I_XYZ
    where  fd1 = 'a'     " key field
    and fd2 = 'b'         " key field
    and fd3 = 'c'         " key field
    and fd4 = 'd'         " non-key field
    and fd5 = 'e'.        " non-key field
    Problem : Query is not using the seconday index.
    Regards
    Sanjay

    hi,
    Check if your secondary index is having mandt field or not.
    system changes your select as
    select A B C from <XYZ> into table I_XYZ
    where <b>mandt = sy-mandt  and</b>
    fd1 = 'a' " key field
    and fd2 = 'b' " key field
    and fd3 = 'c' " key field
    and fd4 = 'd' " non-key field
    and fd5 = 'e'. " non-key field
    so, secondary index will be chosen only if mandt is there in the list of fields in secondary index.
    Regards
    sailaja.

Maybe you are looking for

  • New General ledger accounting in ECC 6.0 : Profit centre not in BSID table

    hi, I already create new transaction code and report from standard transaction code *s_alr_87012168 : Customer Aging Report (Due Date Analysis for Open Items)* and i also add Profit center fields into Dynamic selection. My problem is, if i run the re

  • Why can't I password-protect a PDF that's been Enabled for Commenting in Acrobat Reader?

    What is the point of not being able to password-protect a PDF you have enabled Commenting in for Acrobat Reader users? We are testing out the option of using the "commented" PDF from the user's end (who just has Acrobat Reader). These PDFs we'll be s

  • Help!!!  Macbook Pro airport wireless.

    I purchased my Macbook Pro two weeks ago, May 27th, 2007. At the same time I purchased a macbook for my wife. My problem, my wifes macbook picks up five wireless networks to my one. Her macbook will connect to wireless networks and have a strong thre

  • Clear Retention Policy Tags from mailbox items

    Hello Experts I searched for this but didn't find clear answer so I decided to re word running - exchange 2010 sp3 RU4 background - we had email retention policy applied to all mailboxes in the environment during 2010 migration project w/ retention h

  • Real-Time Collaboration Instant Messaging & .wmv video ?

    Hi, is posible using the last version Netweaver 2004s and Netweaver 2004s BI for some <b>Real-Time Collaboration Instant Messaging</b> for speak to users depending the costcenter and territory area ? So idea is show too video .wmv for Principal Direc