11-15-2007 10:28 AM
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
11-15-2007 10:31 AM
use for all entries
first select form vbrk
second select from vbrp for all entries of vbrk
11-15-2007 10:31 AM
use for all entries
first select form vbrk
second select from vbrp for all entries of vbrk
11-15-2007 10:38 AM
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.
11-15-2007 10:40 AM
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
11-15-2007 10:42 AM
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>
11-15-2007 10:44 AM
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.
11-15-2007 11:50 AM
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
11-15-2007 2:53 PM
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