2 for all entries with different condition

Hi
i have an internal 2 internal table which have the following field
ITAB1 : Stock category, plant, storage location , SKU code   (those value are given though flat file)
ITAB2 : Grid value , meterial NO, SKU code  (those values are determine through a FM where we export the SKU code and it will retreive the matnr and grid value in an ITAB2)
I have to do select FROM database MCHB
with the condition Grid value , material NO , Stock category, plant, storage location
Note that gris value and matnr are found in two different internal table i was thinking of doing for all entries but
is it possible to do for all entries from 2 internal table
SELECT FOROM MCHB
FOR ALL ENTRIES in ITAB1
FOR ALL ENTRIES in ITAB2
WHERE
grid value = itab2-gridvalue
matnr = itab2-matnr
stock cat = itab1-stock cat
plant = itab1-plant
storage location = itab1-storage location
Please help on how to tackle this?

Hi,
You have to create a new third internal table with the fields matnr, grid value, stock category, plant and storage location....
Then process the itab1 and get the process the itab2 for the corresponding SKU Code (which I believe is the common field for both of the internal tables) and then populate the third internal table itab3...
Then use the itab3 for the FOR ALL ENTRIES.
Thanks
Naren

Similar Messages

  • For All Entries with two tables

    Hi All,
             Can we use FOR ALL ENTRIES with two tables. for example
    SELECT * FROM MKPF INTO TABLE T_MKPF
             WHERE BUDAT IN S_BUDAT.
    SELECT * FROM MARA INTO TABLE T_MARA
             WHERE MTART IN S_MTART AND
                            MAKTL IN S_MAKTL.
    SELECT * FROM MSEG INTO TABLE T_MSEG
           FOR ALL ENTRIES IN  "T_MKPF AND T_MARA"
                  WHERE MBLNR EQ T_MKPF-MBLNR AND
                                 MATNR EQ T_MARA-MATNR.
    can we do it like this or any other way to do this plz tell. I waitting for your responce.
    Thanks
    Jitendra

    Hi,
    u cannot do like this....chek some documentation on it..
    1. duplicate rows are automatically removed
    2. if the itab used in the clause is empty , all the rows in the source table will be selected .
    3. performance degradation when using the clause on big tables.
    Say for example you have the following abap code:
    Select * from mara
    For all entries in itab
    Where matnr = itab-matnr.
    If the actual source of the material list (represented here by itab) is actually another database table, like:
    select matnr from mseg
    into corresponding fields of table itab
    where ….
    Then you could have used one sql statement that joins both tables.
    Select t1.*
    From mara t1, mseg t2
    Where t1.matnr = t2.matnr
    And T2…..
    So what are the drawbacks of using the "for all entires" instead of a join ?
    At run time , in order to fulfill the "for all entries " request, the abap engine will generate several sql statements (for detailed information on this refer to note 48230). Regardless of which method the engine uses (union all, "or" or "in" predicates) If the itab is bigger then a few records, the abap engine will break the itab into parts, and rerun an sql statement several times in a loop. This rerun of the same sql statement , each time with different host values, is a source of resource waste because it may lead to re-reading of data pages.
    returing to the above example , lets say that our itab contains 500 records and that the abap engine will be forced to run the following sql statement 50 times with a list of 10 values each time.
    Select * from mara
    Where matnr in ( ...)
    Db2 will be able to perform this sql statement cheaply all 50 times, using one of sap standard indexes that contain the matnr column. But in actuality, if you consider the wider picture (all 50 executions of the statement), you will see that some of the data pages, especially the root and middle-tire index pages have been re-read each execution.
    Even though db2 has mechanisms like buffer pools and sequential detection to try to minimize the i/o cost of such cases, those mechanisms can only minimize the actual i/o operations , not the cpu cost of re-reading them once they are in memory. Had you coded the join, db2 would have known that you actually need 500 rows from mara, it would have been able to use other access methods, and potentially consume less getpages i/o and cpu.
    In other words , when you use the "for all entries " clause instead of coding a join , you are depriving the database of important information needed to select the best access path for your application. Moreover, you are depriving your DBA of the same vital information. When the DBA monitors & tunes the system, he (or she) is less likely to recognize this kind of resource waste. The DBA will see a simple statement that uses an index , he is less likely to realize that this statement is executed in a loop unnecessarily.
    Beore using the "for all entries" clause and to evaluate the use of database views as a means to:
    a. simplify sql
    b. simplify abap code
    c. get around open sql limitations.
    check the links
    http://www.thespot4sap.com/articles/SAPABAPPerformanceTuning_ForAllEntries.asp
    The specified item was not found.
    Regards,
    Nagaraj

  • For all entries with inner join

    Hi All,
    I found some unusual thing.
    i have written INNERJOIN along with FOR ALL ENTRIES and also INNERJOIN in loop..endloop. I have tested both programs with around 1000 records, i found that INNERJOIN with FOR ALL ENTRIES is taking more time compared to the other one. As we know FOR ALL ENTRIES with SIMPLE SELECT takes less time compared to select in loop..endloop. Anybody tell me is there any specific reason for this
    thanks in advance
    rajavardhana reddy

    Have a look at this weblog by Dharmaveer Singh:
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2986 [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken]
    Sudha

  • SELECT with and without for all entries giving different results

    Hi All,
    For some reason unknown to me ,
    There is a difference in result between the below mentioned query however the logic is same.
    1 .  lw_ebeln-EBELN = '0000366416'.
         APPEND lw_ebeln to lt_ebeln. 
          SELECT    ebeln
         FROM     ekbe
         INTO TABLE lt_ekbe
         FOR ALL ENTRIES IN lt_ebeln
         WHERE ebeln = lt_ebeln-ebeln
    2. SELECT ebeln from ekbe into table lt_ekbe where
    ebeln = '0000366416'..
    I have tried a lot to find the reason but unable to.
    Thanks,
    Faiz

    Hi faizur,
    Hope it help ful.
    If you add the EBELP in Internal table,  you will be getting same number of entries in both query.
    For all entries Removes the Duplicate key.
    Regards,
    Venkat.

  • Select For all entries with multiple keys

    Dear Developers,
    im writing a program which reads the last the last mseg entry with bwart 101 and bwart 201 an writes it into different fields of a table. In dependance of the bwart the max-value of mkpf-budat should be moved into field wedat or wadat.
    At the moment i use this coding:
    loop at gt_daten assigning <fs_daten>.
        select distinct max( budat ) from wb2_v_mkpf_mseg2 into <fs_daten>-wedat
          where matnr_i = <fs_daten>-matnr
            and werks_i = <fs_daten>-werks
            and lgort_i = <fs_daten>-lgort
            and bwart_i = '101'.
        select distinct max( budat ) from wb2_v_mkpf_mseg2 into <fs_daten>-wadat
        where matnr_i = <fs_daten>-matnr
          and werks_i = <fs_daten>-werks
          and lgort_i = <fs_daten>-lgort
          and bwart_i = '201'.
      endloop.
    wb2_v_mkpf_mseg2 is a view combining mkpf an mseg by primary keys.
    Searching the internet i read, using FOR ALL ENTRIES should be prefered to selectstatements in loops.
    So i tried:
    *selectstatement
    select budat matnr_i werks_i lgort_i bwart_i from wb2_v_mkpf_mseg2 into table lt_mseg for all entries in gt_daten
        where matnr_i = gt_daten-matnr
          and werks_i = gt_daten-werks
          and lgort_i = gt_daten-lgort
          and ( bwart_i = '101' or bwart_i = '201' )
    *Substitute the MAX( )-Function
      sort lt_mseg descending by matnr werks lgort bwart budat.
      delete adjacent duplicates from lt_mseg comparing matnr werks lgort bwart.
    *Differ between wedat and wadat
      loop at gt_daten assigning <fs_daten>.
        loop at lt_mseg assigning <fs_mseg>
          where matnr = <fs_daten>-matnr
            and werks = <fs_daten>-werks
            and lgort = <fs_daten>-lgort.
          case <fs_mseg>-bwart.
            when '101'.
              <fs_daten>-wedat = <fs_mseg>-budat.
            when '201'.
              <fs_daten>-wadat = <fs_mseg>-budat.
          endcase.
        endloop.
    Even in the dev-system this takes twice the time of the "nested" selects.
    Imho this is because of the internal OR interpretation of the FOR ALL ENTRIES-statement and the size of the result.
    Can somebody give me a hint, how to tune this code?
    Select Inner join should be difficult because the target field differs, dependent of the value in bwart...
    Thanks in advance!

    I understand that you are trying to capture the maximum value of posting date MKPF-BUDAT for movement types 101 and 201 for each combination of material, plant and storage location.
    Few things, that makes the below coding more efficient at both application and database level and I confirmed this on an IDES sandbox
    1. Along with MKPF and MSEG, there is another table WBGT, in the view WB2_V_MKPF_MSEG join and also WBGT has select condition restrictions imposed on its fields. So if this restriction impacts your selection you may want to do a INNER JOIN of MSEG with MKPF only (with MSEG as leading table, as it has an active secondary index with MATNR, WERKS, LGORT and BWART ) and also there won't be overhead from the unnecessary join with WBGT table whose fields you are not using.
    2. The below SORT on lt_mseg will ensure that the record having greatest BUDAT will be at the top of all rows (least index) for each combination of MATNR, WERKS, LGORT and BWART.
    3. DELETE ADJACENT DUPLICATES will ensure that only the top row (having greatest BUDAT) remains in the table lt_mseg for each combination of MATNR, WERKS, LGORT and BWART. This will ensure that subsequent READs with BINARY SEARCH will always and efficiently read the row with maximum value of BUDAT for each unique combination of MATNR, WERKS, LGORT and BWART.
    4. The below logic will require more memory (even though it is more efficient performance wise) compared to direct SELECT with MAX for each MATNR, WERKS, LGORT and BWART in a LOOP the way you were doing before. So if the size of lt_mseg is causing memory issues, your logic with aggregate function MAX at database level will be your only option.
    So, I propose you revise your coding like below for most optimal results
    CHECK NOT gt_daten[] IS INITIAL.
    *selectstatement
    *SELECT budat matnr_i werks_i lgort_i bwart_i
    *  FROM wb2_v_mkpf_mseg2
    *  INTO TABLE lt_mseg
    *    FOR ALL ENTRIES IN gt_daten
    *    WHERE matnr_i = gt_daten-matnr
    *      AND werks_i = gt_daten-werks
    *      AND lgort_i = gt_daten-lgort
    *      AND ( bwart_i = '101' OR bwart_i = '201' ).
    * The below SELECT is more economical than the one commented above
    SELECT mkpf~budat mseg~matnr mseg~werks mseg~lgort mseg~bwart
      FROM mseg INNER JOIN mkpf
        ON mseg~mblnr = mkpf~mblnr AND
           mseg~mjahr = mkpf~mjahr
        INTO TABLE lt_mseg
          FOR ALL ENTRIES IN gt_daten
            WHERE mseg~matnr = gt_daten-matnr
              AND mseg~werks = gt_daten-werks
              AND mseg~lgort = gt_daten-lgort
              AND ( mseg~bwart = '101' OR mseg~bwart = '201' ).
    *Substitute the MAX( )-Function
    SORT lt_mseg BY matnr werks lgort bwart DESCENDING budat.
    DELETE ADJACENT DUPLICATES FROM lt_mseg COMPARING matnr werks lgort bwart.
    *Differ between wedat and wadat
    LOOP AT gt_daten ASSIGNING <fs_daten>.
      READ TABLE lt_mseg ASSIGNING <fs_mseg>
        WITH KEY matnr = <fs_daten>-matnr
                 werks = <fs_daten>-werks
                 lgort = <fs_daten>-lgort
                 bwart = '101' BINARY SEARCH.
      IF sy-subrc = 0.
        <fs_daten>-wedat = <fs_mseg>-budat.
      ENDIF.
      READ TABLE lt_mseg ASSIGNING <fs_mseg>
        WITH KEY matnr = <fs_daten>-matnr
                 werks = <fs_daten>-werks
                 lgort = <fs_daten>-lgort
                 bwart = '201' BINARY SEARCH.
      IF sy-subrc = 0.
        <fs_daten>-wadat = <fs_mseg>-budat.
      ENDIF.
    ENDLOOP.

  • For all entries with 2 internal table

    HI experts.
    How to use  2 for all entries in a select statement.
    Below refer to my below code.
    select vbeln matnr lfimg vgbel posnr from lips into corresponding fields of table
      it_lips for all entries in  it_likp   where
                  vbeln = it_likp-vbeln and
                  matnr = it_mara-matnr.
    I want to add another for all entries it_mara.
    Please help me .Thanks in advanced.

    hi,
    it is possible....
    use this query...
    declare another internal table of the same type as it_lips.
    data : it_lips_final like it_lips.
    select vbeln matnr lfimg vgbel posnr from lips into corresponding fields of table
    it_lips for all entries in it_likp where
    vbeln = it_likp-vbeln .
    loop at it_lips.
      read table it_mara into it_mara with key matnr = it_lips-matnr.
      if sy-subrc = 0.
        append it_lips to it_lips_final.
      endif.
    endloop.
    refresh it_lips[].
    it_lips[] = it_lips_final[]
    what the above code does is selects all the entries of vbeln from lips and filters it in the loop reading it from mara checking for matnr value and finally
    all the entries according to your requirement is there in it_lips_final which we move it to it_lips again...
    this is something similar to writing a for all entries for 2 table.... but in another fashion
    Regards
    Siddarth

  • Want to Avoid Loop for all entries with select query !!

    Hi Guru's  !
    This is my following code . I want to avoid loop  to improve the performance of program.
    data: lt_cuhd type HASHED TABLE OF /sapsll/cuhd WITH UNIQUE key guid_cuhd,
          ls_cuhd type /sapsll/cuhd.
    data: lt_comments type STANDARD TABLE OF zss_comments,
          ls_comments type zss_comments.
    data: lv_objkey type string.
    select * from /sapsll/cuhd into table lt_cuhd.
    loop at lt_cuhd  into ls_cuhd.
      CONCATENATE ls_cuhd-corder '%' into lv_objkey. " Example 'Mum%'
      select * from zss_comments into table lt_comments
                where objkey like lv_objkey
                 AND guid_cuhd = ls_cuhd-guid_cuhd
                  AND event_id <> ''.
    endloop.
    I want
    New code should be...using all entries no loop required.
      *select * from zss_comments into table lt_comments
                where objkey like lv_objkey
                 AND guid_cuhd = ls_cuhd-guid_cuhd
                  AND event_id <> ''.*

    why dont you add the object key also to  lt_cuhd and once you fetch the data to lt_cuhd loop it and add the '%'
    when looping use field symbols so that you dont have to use  modify.
    then use for all entries using lt_cuhd
    i don't you can find a better way to add the % mark apart from looping but by this way only one select query will be done for
    zss_comments
    Thanks
    Nafran

  • Inner join and select for all entries with respect to performance

    Hi Friends,
    I just want to know which is more efficient with respect to performance the Inner join or select for all entries?which is more efficient? and how? can you explain me in detail ?
    Regards,
    Dinesh

    INNER JOIN->
    The data that can be selected with a view depends primarily on whether the view implements an inner join or an outer join. With an inner join, you only get the records of the cross-product for which there is an entry in all tables used in the view. With an outer join, records are also selected for which there is no entry in some of the tables used in the view.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/cf/21ec77446011d189700000e8322d00/content.htm
    FOR ALL ENTRIES->
    Outer join can be created using this addition to the where clause in a select statement. It speeds up the performance tremendously, but the cons of using this variation are listed below
    Duplicates are automatically removed from the resulting data set. Hence care should be taken that the unique key of the detail line items should be given in the select statement.
    If the table on which the For All Entries IN clause is based is empty, all rows are selected into the destination table. Hence it is advisable to check before-hand that the first table is not empty.
    If the table on which the For All Entries IN clause is based is very large, the performance will go down instead of improving. Hence attempt should be made to keep the table size to a moderate level.
    Not Recommended
    Loop at int_cntry.
    Select single * from zfligh into int_fligh
    where cntry = int_cntry-cntry.
    Append int_fligh.
    Endloop.
    Recommended
    Select * from zfligh appending table int_fligh
    For all entries in int_cntry
    Where cntry = int_cntry-cntry.

  • Inner join and select for all entries with respect to performance in SAP

    Hi Friends,
    I just want to know which is more efficient with respect to performance the Inner join or select for all entries?which is more efficient?
    Regards,
    Dinesh

    I did some testing a while ago and found that a JOIN is usually a bit more efficient than FOR ALL ENTRIES. This wasn't always the case though, so the best thing to do is to write it both ways and see which is faster.
    Rob

  • For all entries in join conditions

    Hi All,
                  Can we use for all entries statement in the selection of  joining 4 tables.
    If so, please give me an example.
    Thanks

    Hello,
    U can use it.
    Check this:
    * Get the material classification details
      SELECT A~CUOBJ A~OBJEK A~KLART B~ATINN B~ATZHL B~ATWRT B~ATFLV
             B~ATAWE B~ATFLB B~ATAW1 C~CLINT D~CLASS
        INTO CORRESPONDING FIELDS OF TABLE G_T_OBJECTS
        FROM INOB AS A INNER JOIN AUSP AS B
          ON A~CUOBJ = B~OBJEK AND
             A~KLART = B~KLART
             INNER JOIN KSSK AS C
             ON B~OBJEK = C~OBJEK AND
                B~KLART = C~KLART
             INNER JOIN KLAH AS D
             ON C~CLINT = D~CLINT
         FOR ALL ENTRIES IN L_T_OBJECT
       WHERE A~OBJEK EQ L_T_OBJECT-OBJEK AND
             A~OBTAB EQ 'MARA'  AND
             A~KLART IN S_KLART AND
             B~ADZHL EQ '0000'  AND
             C~LKENZ EQ ' '     AND
             D~CLASS IN S_CLASS.
    If useful reward.
    Vasanth

  • For all entries with large sets

    Hello All,
    Does for all entries have restriction that the itab should not exceed the maximum entries? Look at code below:
      select pernr raufpl raplzl catshours
             from catsdb
             into corresponding fields of table lit_catshrs
             for all entries in itab
             where pernr = itab-pernr
               and status in ('10', '20', '30')
               and workdate in s_date.
    if itab have 7000 entries in production system, will the select statement cause a short dump such as DBIF_RSQL_INVALID_RSQL?
    Thanks,
    Alex M

    Hi,
    check the sequence of the fields in the internal table lit_catshrs
    Because RSQL error occurs because of this.
    and Whenevr you use for all entries of some Internal Table it is a must to check that
    IF not ITAB[] Is initial.
    < write the select>
    endif.
    Other performance related thing w.r.t to ABAP are
    1) Dont use nested seelct statement
    2) If possible use for all entries in addition
    3) In the where addition make sure you give all the primary key
    4) Use Index for the selection criteria.
    5) You can also use inner joins
    6) You can try to put the data from the first select statement into an Itab and then in order to select the data from the second table use for all entries in.
    7) Use the runtime analysis SE30 and SQL Trace (ST05) to identify the performance and also to identify where the load is heavy, so that you can change the code accordingly
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5d0db4c9-0e01-0010-b68f-9b1408d5f234
    reward if useful
    regards,
    Anji

  • Offset in where clause of for all entries

    Hi ,
    I need to fetch VBELN from VBKD table based on Purchase order no which is fetched from a Z-table.So I am using for all entries with where condition as VBKD-BSTKD_M = Ztable-PONumber  and fetching values from VBKD .But at times PO number in VBKD table can have additional things attached to it .
    Eg Ztable-PO number = 12345678 , VBKD-BSTKD_M = 12345678-001 so I need to ignore the '-001' part and still fetch data from VBKD.So how can I do that.
    Pls let me know if you have any ideas.
    Thanks in advance,
    Rajasekaran

    Hi ,
    We cannot use offset directly in where as it will result in syntax error as the field length for both fields have to match .In my case the length of both Ztable -PO number field and vbkd-bstkd_m are 35 characters.So cannot use offset directly in where clause of for all entries.
    Pls let me know if you have any other ideas.
    Thanks in advance,
    Rajsekaran

  • FOR ALL ENTRIES... with FIELD SYMBOL

    Is it possible to use FOR ALL ENTRIES with a FIELD-SYMBOL that points to a data reference of type STANDARD TABLE ?
    I have the following:
      SELECT * FROM mara
        INTO TABLE table
        FOR ALL ENTRIES IN another_table
        WHERE matnr EQ another_table-matnr.
    The code above is what exists, (working), but I'm improving the program and one of the improvements is to allow dynamic querying by providing a field symbol instead of a hard-coded table like "another_table". But I get the message "the specified type has no structure and therefore no component called "MATNR".
    My code just have the field symbol that points to a previously data reference created for a table passed as a parameter (this is working, having checked via debugging) replacing "another_table" and <fs>-matnr instead of "another_table-matnr".
    What solutions would you guys suggest ?
    Thanks
    Avraham

    Why is that that the commented line doesn't work, but under debugging I can reach <ls_items>-matnr ?
    Everything is fine with <lt_items>, it contains 8 lines, and debugging shows <ls_items> receiving one line each loop pass, just as expected. I wanted to understand why/when does this error of "has no structure therefore there is no component"... appears.
    LOOP AT <lt_items> INTO <ls_items>.
    *    SELECT SINGLE * INTO ls_mara FROM mara WHERE mara~matnr = <ls_items>-matnr.
        IF sy-subrc = 0.
          APPEND ls_mara TO lt_mara.
        ENDIF.
      ENDLOOP.

  • About for all entries

    can u give the information abt the FOR ALL ENTRIES and the conditions.

    HI
    GOOD
    Use of FOR ALL Entries
    Outer join can be created using this addition to the where clause in a select statement. It speeds up the performance tremendously, but the cons of using this variation are listed below
    Duplicates are automatically removed from the resulting data set. Hence care should be taken that the unique key of the detail line items should be given in the select statement.
    If the table on which the For All Entries IN clause is based is empty, all rows are selected into the destination table. Hence it is advisable to check before-hand that the first table is not empty.
    If the table on which the For All Entries IN clause is based is very large, the performance will go down instead of improving. Hence attempt should be made to keep the table size to a moderate level.
    Not Recommended
                Loop at int_cntry.
                 Select single * from zfligh into int_fligh
    where cntry = int_cntry-cntry.
    Append int_fligh.
                Endloop.
    Recommended
                Select * from zfligh appending table int_fligh
                For all entries in int_cntry
                Where cntry = int_cntry-cntry.
    GO THROUGH THESE LINKS
    http://www.thespot4sap.com/articles/SAPABAPPerformanceTuning_ForAllEntries.asp
    CODE
    Code to demonstrate Select FOR ALL ENTRIES command
    The FOR ALL ENTRIES comand only retrieves data which matches  
    entries within a particular internal table.
    TYPES: begin of t_bkpf,
    include structure bkpf.
      bukrs like bkpf-bukrs,
      belnr like bkpf-belnr,
      gjahr like bkpf-gjahr,
      BLDAT like bkpf-BLDAT,
      monat like bkpf-monat,
      budat like bkpf-budat,
      xblnr like bkpf-xblnr,
      awtyp like bkpf-awtyp,
      awkey like bkpf-awkey,
    end of t_bkpf.
    data: it_bkpf type standard table of t_bkpf initial size 0,
          wa_bkpf type t_bkpf.
    TYPES: begin of t_bseg,
    *include structure bseg.
      bukrs     like bseg-bukrs,
      belnr     like bseg-belnr,
      gjahr     like bseg-gjahr,
      buzei     like bseg-buzei,
      mwskz     LIKE bseg-mwskz,         "Tax code
      umsks     LIKE bseg-umsks,         "Special G/L transaction type
      prctr     LIKE bseg-prctr,         "Profit Centre       
      hkont     LIKE bseg-hkont,         "G/L account
      xauto     like bseg-xauto,
      koart     like bseg-koart,
      dmbtr     like bseg-dmbtr,
      mwart     like bseg-mwart,
      hwbas     like bseg-hwbas,
      aufnr     like bseg-aufnr,
      projk     like bseg-projk,
      shkzg     like bseg-shkzg,
      kokrs     like bseg-kokrs,
    end of t_bseg.
    data: it_bseg type standard table of t_bseg initial size 0,
          wa_bseg type t_bseg.
    select bukrs belnr gjahr BLDAT monat budat xblnr awtyp awkey
      up to 100 rows
      from bkpf
      into table it_bkpf.
    if sy-subrc EQ 0.
      select bukrs belnr gjahr buzei mwskz umsks prctr hkont xauto koart
             dmbtr mwart hwbas aufnr projk shkzg kokrs
        from bseg
        into table it_bseg
        FOR ALL ENTRIES in it_bkpf
        where bukrs eq it_bkpf-bukrs and
              belnr eq it_bkpf-belnr and
              gjahr eq it_bkpf-gjahr.
    endif.
    CODE
    You can only use FOR ALL ENTRIES IN ...WHERE ...in a SELECT statement. 
        SELECT ... FOR ALL ENTRIES IN itab WHERE cond returns the union of the solution sets of all SELECT
        statements that would result if you wrote a separate statement for each line of the internal table replacing the symbol
        itab-f with the corresponding value of component f in the WHERE condition.Duplicates are discarded from the result 
        set. If the internal table itab does not contain any entries, the system treats the statement as though there were 
        no WHERE cond condition, and selects all records (in the current client). 
        for example: 
           SELECT * FROM sflight INTO wa_sflight 
                     FOR ALL ENTRIES IN ftab 
                     WHERE CARRID = ftab-carrid AND 
                      CONNID = ftab-connid AND 
                             fldate = '20010228'. 
        this condition, return all entries of the sflight 
    THANKS
    MRUTYUN

  • Inner joins  Vs  for all entries

    Hi All,
    Pls let me know
    the differences b/w innerjoins and for all entries,,,,which is the best option and  Y??
    Thanks in Advance,
    Bye

    Hi!
    INNER JOIN is used if we want to retrieve some data from more than one table.
    FOR ALL ENTRIES is used if we want some data from a table based on some conditions of some other table.
    Using several nested INNER JOIN statements can be inefficient and cause time out if the tables become too big in the future."
    In ABAP, these joins are first split by the ABAP processor and then sent to the database, with the increase in DATA in production system, these joins tend to give way if your database keeps growing larger and larger.
    You should rather use "FOR ALL ENTRIES IN" (Tabular conditions), which is a much efficient way as far as performance is concerned.
    Check these links:
    inner joins and for all entries
    inner join and for all entries
    Reward points if it helps.
    Regards
    Sudheer

Maybe you are looking for

  • Best Practice - Order Types for Consumers

    I was curious what the best practice is for entering orders within the CRM Interaction Center.   Do you have a separate order type within the CRM system and pass it to the SAP system for "Consumer" orders and then have a different order type that is

  • Urgent- How to Default Current Months First Date in a Dashboard Prompt

    We have requirement that whenever our user clicks on a dashboard it should show the report associated with the dashboard defaulted to MTD. For example if the user is running the dashboard on 16th Jan then the report associated with dashboard by defau

  • Difference between dispatch time in po and scheduled time in job

    Hi all , can any one please explain me what is the exact difference between dispatch time maintained in po and time/date set for job schedule here my question is ,i maintained dispatch time as send job with periodically in PO and i had maintained dat

  • IS  XE  BETTER

    Hi, am wondering if express edition is preferbale to enterprise edition. And how can I increase the size of the space. Message was edited by: user539979

  • Error original filter used for grahpics

    Hi, Since upgrading to FM10, we have been getting the following error message: At least one original filter used for graphics imported by reference is not available, or the imported file's format has changed. An alternative filter may be used if the