2006 Jun 14 6:56 AM
HI,
Present program i s not working ,pleas help me in doing it,
Error is showing in "vbak~ernam+0(1) EQ CB ."
data : begin of itab occurs 0,
kunnr like kna1-kunnr,
matnr like mara-matnr,
end of itab.
data : pvbeln like vbak-vbeln.
data ikna1 like kna1 occurs 0 with header line.
select kunnr from kna1 into table ikna1 up to 10 rows.
constants : CB type c value 'B'.
select mara~matnr into table itab from
( ( mara inner join vbap on maramatnr = vbapmatnr )
inner join vbak on vbapvbeln = vbakvbeln )
for all entries in ikna1
where vbakkunnr = ikna1-kunnr and vbakernam+0(1) EQ CB .
loop at itab.
read table ikna1 with key kunnr = '20'.
itab-kunnr = ikna1-kunnr.
modify itab.
write:/ itab-kunnr,itab-matnr.
endloop.
HI,
Present program i s not working ,pleas help me in doing it,
Error is showing in "vbak~ernam+0(1) EQ CB ."
data : begin of itab occurs 0,
kunnr like kna1-kunnr,
matnr like mara-matnr,
end of itab.
data : pvbeln like vbak-vbeln.
data ikna1 like kna1 occurs 0 with header line.
select kunnr from kna1 into table ikna1 up to 10 rows.
constants : CB type c value 'B'.
select mara~matnr into table itab from
( ( mara inner join vbap on maramatnr = vbapmatnr )
inner join vbak on vbapvbeln = vbakvbeln )
for all entries in ikna1
where vbakkunnr = ikna1-kunnr and vbakernam+0(1) EQ CB .
loop at itab.
read table ikna1 with key kunnr = '20'.
itab-kunnr = ikna1-kunnr.
modify itab.
write:/ itab-kunnr,itab-matnr.
endloop.
2006 Jun 14 7:02 AM
Hi
i don't think you can put comparison like this "vbak~ernam+0(1) EQ CB " in your select statemnet.
You can better remove this from you select statement and then in loop you can put the check.
Regards
Naresh
2006 Jun 14 7:06 AM
Madhavi,
You cannot use offsets in select statement where conditions. Your select using join should be changed.
Look at the example.
REPORT demo_select_inner_join.
DATA: BEGIN OF wa,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
fldate TYPE sflight-fldate,
bookid TYPE sbook-bookid,
END OF wa,
itab LIKE SORTED TABLE OF wa
WITH UNIQUE KEY carrid connid fldate bookid.
SELECT p~carrid p~connid f~fldate b~bookid
INTO CORRESPONDING FIELDS OF TABLE itab
FROM ( ( spfli AS p
INNER JOIN sflight AS f ON p~carrid = f~carrid AND
p~connid = f~connid )
INNER JOIN sbook AS b ON b~carrid = f~carrid AND
b~connid = f~connid AND
b~fldate = f~fldate )
WHERE p~cityfrom = 'FRANKFURT' AND
p~cityto = 'NEW YORK' AND
f~seatsmax > f~seatsocc.
LOOP AT itab INTO wa.
AT NEW fldate.
WRITE: / wa-carrid, wa-connid, wa-fldate.
ENDAT.
WRITE / wa-bookid.
ENDLOOP.Thanks,
Message was edited by: Naren Somen
Message was edited by: Naren Somen
2006 Jun 14 7:08 AM
Madhavi,
You cannot specify the offset of the column from the table, in the SELECT statement.
You will have to select the data and then do a filtering or use a like operator.
Regards,
Ravi
2006 Jun 14 7:10 AM
hi,
not only with inner join, with any select statement u can compare the expression directly like that.
first u need to store tha in a variable and then proceed.
select mara~matnr into table itab from
( ( mara inner join vbap on maramatnr = vbapmatnr )
inner join vbak on vbapvbeln = vbakvbeln )
for all entries in ikna1
where vbakkunnr = ikna1-kunnr and vbakernam+0(1) EQ CB .
u can write the above like below.
select a~matnr into table itab from
mara as a inner join vbap as b
on amatnr = bmatnr
inner join vbak as c on bvbeln = cvbeln
for all entries in ikna1
where vbak~kunnr = ikna1-kunnr.
loop at itab.
var = itab-ernam+0(1).
if var <> 'CB'.
delete itab.
endif.
endloop.
2006 Jun 14 7:15 AM
Hi,
just define a range for ERNAM and fill this range with 'B*' -> you can select even much more complex search patterns.
Regards,
Christian
2006 Jun 14 7:18 AM
Hi Varisety,
first wen u say vbak~ernam+0(1), it can hold only one variable..how can u make a comparision with CB...
also, instead of
where vbakkunnr = ikna1-kunnr and vbakernam+0(1) EQ CB .
use this in ur code
where vbakkunnr = ikna1-kunnr and vbakernam like 'CB%'.
hope it helps..
2006 Jun 14 7:20 AM
You can do one more thing,
Declare one more field into internal table itab i.e
DATA : BEGIN OF itab OCCURS 0,
kunnr LIKE kna1-kunnr,
matnr LIKE mara-matnr,
<b>ernam like vbak-ernam,</b>
END OF itab.
in Select statement, select ERNAM also.
And while looping you can give where condition:
<b>LOOP AT itab where ernam+0(1) EQ cb .</b>
Hope you find your solution here.
<b>Reward if helpful</b>
Rgds,
2006 Jun 14 7:33 AM
you cannot use offset in select but you can use it in delete stament.
so--
select mara~matnr into table itab from
( ( mara inner join vbap on maramatnr = vbapmatnr )
inner join vbak on vbapvbeln = vbakvbeln )
for all entries in ikna1
where vbak~kunnr = ikna1-kunnr.
delete itab where ernam+0(1) ne cb.
you dont have to use loop at itab.
Message was edited by: Sharath kumar R
2006 Jun 14 7:40 AM
Hi Madhavi,
The statement vbak~ernam+0(1) cannot be used directly in a where condition.
Write the following select query
select mara~matnr into table itab from
( ( mara inner join vbap on mara~matnr = vbap~matnr )
inner join vbak on vbap~vbeln = vbak~vbeln )
for all entries in ikna1
where vbak~kunnr = ikna1-kunnr
and vbak~ernam like 'B%' .
This select will return only vbak~ernam starting with 'B'
Sameena
2006 Jun 14 3:00 PM
Hi,
while u r selecting from databse tables this won't work vbak~ernam+0(1) EQ CB .
correct statement is- vbak~ernam like 'C%' (pls try this now).
***************************************************
-> vbak~ernam+0(1) EQ CB <- This will works in read statement only(if u r reading from table).
***************************************************
Regards,
Ramesh.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |