Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

help in select

Former Member
0 Kudos

hi

i have this select with join and i wont to separate it for to selects without join

and to get the same results what is the best way to do that ?



    SELECT vbrk~vbeln vbrk~vbtyp vbrk~fkdat vbrk~netwr vbrk~waerk vbrp~kvgr3
      FROM vbrk INNER JOIN vbrp ON vbrp~vbeln EQ vbrk~vbeln
                 AND vbrp~posnr EQ '00010'
                 AND vbrp~ps_psp_pnr EQ l_project
  INTO TABLE sdprojectinvoice
  WHERE vbrk~rfbsk EQ 'C'
        AND vbrk~fksto EQ ' '
        AND vbrk~sfakn EQ ' '.

Regards

1 ACCEPTED SOLUTION

Former Member
0 Kudos

use for all entries

first select form vbrk

second select from vbrp for all entries of vbrk

7 REPLIES 7

Former Member
0 Kudos

use for all entries

first select form vbrk

second select from vbrp for all entries of vbrk

Former Member
0 Kudos

HI,

use for all entries key owrd

see this example.

PARAMETERS p_city TYPE spfli-cityfrom.

TYPES: BEGIN OF entry_tab_type,

carrid TYPE spfli-carrid,

connid TYPE spfli-connid,

END OF entry_tab_type.

DATA: entry_tab TYPE TABLE OF entry_tab_type,

sflight_tab TYPE SORTED TABLE OF sflight

WITH UNIQUE KEY carrid connid fldate.

SELECT carrid connid

FROM spfli

INTO CORRESPONDING FIELDS OF TABLE entry_tab

WHERE cityfrom = p_city.

SELECT carrid connid fldate

FROM sflight

INTO CORRESPONDING FIELDS OF TABLE sflight_tab

FOR ALL ENTRIES IN entry_tab

WHERE carrid = entry_tab-carrid AND

connid = entry_tab-connid.

rgds,

bharat.

Former Member
0 Kudos

HI,

this is the trasformation:

SELECT <vbrk fields>
FROM vbrk
INTO TABLE i_vbrk
 WHERE vbrk~rfbsk EQ 'C'
        AND vbrk~fksto EQ ' '
        AND vbrk~sfakn EQ ' '.

IF i_vbrk[] IS NOT INITIAL.
SELECT <vbrp fields>
FROM vbrp
INTO TABLE i_vbrp
FOR ALL ENTRIES IN i_vbrk[]
WHERE vbeln = i_vbrk-vbeln
  AND vbrp~posnr EQ '00010'
                 AND vbrp~ps_psp_pnr EQ l_project.
ENDIF.

That's all. rgs

Former Member
0 Kudos

Hi Ricardo,

This will surely solve your problem...

SELECT vbeln vbtyp fkdat netwr waerk

FROM vbrk

INTO TABLE sdprojectinvoice

where "Your conditions."

select kvgr3 etc...

from vbrp

INTO CORRESPONDING FIELDS OF TABLE itab

FOR ALL ENTRIES IN sdprojectinvoice

WHERE trkorr EQ sdprojectinvoice-field.

<b>Kindly Reward If Useful

Rohit G</b>

Former Member
0 Kudos

hI

BY USEING FOR ALL ENTRIES YOU CAN WRITE THIS CODE

PERFORMANCE WISE ALSO THIS IS VERY GOOD METHOD COMPARED TO JOINS

SELECT VBELN VBTYP FKDAT NETWR WAERK 
             FROM VBRK  
             INTO TABLE ITAB1 
       WHERE VBELN = P_VBELN  AND POSNR = '00010' AND PS_PSP_PNR = L_PROJECT.

IF NOT ITAB1[] IS INITIAL.

SELECT KVGR3 
              FROM VBRP
              INTO TABLE ITAB2 
              FOR ALL ENTRIES IN ITAB1 
              WHERE VBELN = ITAB1-VBELN AND UR CONDITION


ENDIF.

Former Member
0 Kudos

Hi,

Hope this helps you.

Data: begin of it_vbrk occurs 0,

vbeln like vbrk-vbeln

and so on..........

end of it_vbrk.

data: begin of it_vbrp occurs 0,

add the required fields

end of it_vbrp.

select vbeln

vbtyp

fkdat

netwr

waerk

from vbrk into table it_vbrk

where vbeln = p_vbeln

and rfbsk = 'C'

and fksto = ' '

and sfakn = ' '.

if not it_vbrk[] is initial.

select vbeln

posnr

from vbrp into table it_vbrp

for all entries in it_vbrk

where vbeln = it_vbrk-vbeln

and ps_psp_pnr = l_project.

endif.

Reward if helpful.

Regards,

Harini.S

Former Member
0 Kudos

Ricardo - JOINS are usually more efficient than FOR ALL ENTRIES. In your case, the problem is that you are not using an index in the SELECT.

Rob