11-15-2005 11:46 AM
what is wrong :
SELECT viser02~sdaufnr
FROM (viser02 INNER JOIN vbak
ON vbakvbeln = viser02sdaufnr
AND vbakposnr = viser02posnr
INNER JOIN vbap
ON vbapvbeln = viser02sdaufnr
AND vbapposnr = viser02posnr)
where vbak~auart = 'WV'
and ( vbap~sobkz <> 'V'
OR vbap~sobkz <> 'W' ).
11-15-2005 11:52 AM
SELECT viser02~sdaufnr
FROM <b>(</b>viser02 INNER JOIN vbak
ON vbakvbeln = viser02sdaufnr
AND vbakposnr = viser02posnr
INNER JOIN vbap
ON vbapvbeln = viser02sdaufnr
AND vbapposnr = viser02posnr<b>)</b>
where vbak~auart = 'WV'
and ( vbap~sobkz <> 'V'
OR vbap~sobkz <> 'W' ).
remove the highlighted brackets.
SELECT viser02~sdaufnr
FROM viser02 INNER JOIN vbak
ON vbakvbeln = viser02sdaufnr
AND vbakposnr = viser02posnr
INNER JOIN vbap
ON vbapvbeln = viser02sdaufnr
AND vbapposnr = viser02posnr
where vbak~auart = 'WV'
and ( vbap~sobkz <> 'V'
OR vbap~sobkz <> 'W' ).
Regards
Raja
11-15-2005 11:56 AM
Yehiel,
Change the Code to the following:
SELECT viser02~sdaufnr
FROM ((viser02
INNER JOIN vbak
ON vbakvbeln = viser02sdaufnr
AND vbapposnr = viser02posnr)
INNER JOIN vbap
ON vbapvbeln = viser02sdaufnr
AND vbapposnr = viser02posnr)
where vbak~auart = 'WV'
and (vbap~sobkz <> 'V'
OR vbap~sobkz <> 'W') .
Thanks
Kam
11-15-2005 3:53 PM
Hi use the following code.
select viser02~sdaufnr
into table itab from ( ( viser02 as viser02 inner join vbak as vbak on vbakvbeln = viser02sdaufnr and vbakposnr = viser02posnr )
( inner join vbap as vbap on vbapvbeln = viser02sdaufnr AND vbapposnr = viser02posnr ) where vbakauart = 'WV' and vbapsobkz <> 'V' OR vbap~sobkz <> 'W' ).
11-15-2005 4:31 PM
Hi,
Write the join as follows
DATA: BEGIN OF ITAB_AUFNR OCCURS 0,
SDAUFNR LIKE VISER02-SDAUFNR,
END OF ITAB_AUFNR.
SELECT viser02~sdaufnr
INTO TABLE ITAB_AUFNR
FROM viser02
INNER JOIN vbak
ON vbakvbeln = viser02sdaufnr
INNER JOIN vbap
ON vbapvbeln = viser02sdaufnr
AND vbapposnr = viser02posnr
where vbak~auart = 'WV'
and ( vbapsobkz <> 'V' OR vbapsobkz <> 'W' ).
The problem with your join is in VBAK there will not be any item field(POSNR) and you also didn't specify the into clause.
As a best practice do not use negative conditions in where cluases, they will consume more time. There will be two options to eliminate this.
1. Populate ranges table with all the allowed values for the SOBKZ field and use it in where clause.
OR
2. Populate ranges table with the not required values with the sign option 'E' (Exclude).
If you need any further help let me know.
Thanks
Giridhar