2006 Sep 24 5:51 PM
Hello friends,
I have to select data from data base based on a where condition from an internal table.
In It_BSID the field Vbeln is sometimes blank. So i have to select data into IT_KNVP where IT_BSID-vbeln is blank.
Below is the code that i ahve used and has errors.
SELECT kunnr
parvw
kunn2
INTO TABLE it_knvp
FROM knvp
FOR ALL ENTRIES IN it_bsid
WHERE it_bsid-vbeln is initial
and kunn2 EQ it_bsid-kunnr
and parvw EQ 'RE'.
Any suggestions.
Shejal Shetty.
2006 Sep 24 5:58 PM
Hi
What do you need to extract?
You can't use FOR ALL ENTRIES option in this situation
You have to split the record with VBELN and without VBELN
LOOP AT IT_BSID WHERE VBELN = ' '.
APPEND IT_BSID TO IT_BSID_2.
ENDLOOP.
SELECT kunnr
parvw
kunn2
INTO TABLE it_knvp
FROM knvp
FOR ALL ENTRIES IN it_bsid_2
WHERE kunn2 EQ it_bsid-kunnr
and parvw EQ 'RE'.
Max
Hi
What do you need to extract?
You can't use FOR ALL ENTRIES option in this situation
You have to split the record with VBELN and without VBELN
LOOP AT IT_BSID WHERE VBELN = ' '.
APPEND IT_BSID TO IT_BSID_2.
ENDLOOP.
SELECT kunnr
parvw
kunn2
INTO TABLE it_knvp
FROM knvp
FOR ALL ENTRIES IN it_bsid_2
WHERE kunn2 EQ it_bsid-kunnr
and parvw EQ 'RE'.
Max
2006 Sep 24 5:58 PM
Hi
What do you need to extract?
You can't use FOR ALL ENTRIES option in this situation
You have to split the record with VBELN and without VBELN
LOOP AT IT_BSID WHERE VBELN = ' '.
APPEND IT_BSID TO IT_BSID_2.
ENDLOOP.
SELECT kunnr
parvw
kunn2
INTO TABLE it_knvp
FROM knvp
FOR ALL ENTRIES IN it_bsid_2
WHERE kunn2 EQ it_bsid-kunnr
and parvw EQ 'RE'.
Max
2006 Sep 24 6:00 PM
Thanks MAX,
So I have to use another Internal table. IS there no way that i can do this without using another internal table.
However i dont want to loop it_bsid.
Shejal.
2006 Sep 24 6:03 PM
Can i do it in this way,
LOOP AT IT_BSID WHERE VBELN = ' '.
SELECT kunnr
parvw
kunn2
INTO it_knvp
FROM knvp
WHERE kunn2 EQ it_bsid-kunnr
and parvw EQ 'RE'.
endselect.
endloop.
Shejal Shetty.
2006 Sep 24 6:05 PM
Max is right.. you don't have an option but loop at it_bsid once & use another itab with the FOR ALL ENTRIES option..
or
delete it_bsid where vbeln is initial
and parvw EQ 'RE'.
and then use yor select
~Suresh
2006 Sep 24 6:07 PM
Hi
Yes of course, but in this way u don't use FOR ALL ENTRIES option:
LOOP AT IT_BSID WHERE VBELN = ' '.
SELECT kunnr
parvw
kunn2
INTO it_knvp
FROM knvp
WHERE kunn2 EQ it_bsid-kunnr
and parvw EQ 'RE'.
<b>APPEND IT_KNVP.</b>
endselect.
endloop.
or
LOOP AT IT_BSID WHERE VBELN = ' '.
SELECT kunnr
parvw
kunn2
<b>APPENDING TABLE IT_KNVP</b>
FROM knvp
WHERE kunn2 EQ it_bsid-kunnr
and parvw EQ 'RE'.
endloop.
Max
2006 Sep 24 6:07 PM
Hi,
writing a select statement in a loop will cause a performance issue.
You can use the code suggested by MAX.
Regards,
Azaz Ali.
2006 Sep 24 6:07 PM
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |