Application Development and Automation 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: 
Read only

select statement

Former Member
0 Likes
417

Hi all,

I wrote logic like this.But it getting performance problem.

Can anybody tell me how to avoid this.

SELECT * INTO TABLE wknvv

FROM knvv

WHERE vkorg IN sales_or

AND vtweg IN dist_cha

AND spart IN div

AND vkbur IN sales_of .

LOOP AT wknvv .

SELECT vbeln auart zzmax_cpi INTO (wlist-vbeln,wlist-auart,max)

FROM vbak

WHERE

vbtyp = 'G'

AND kunnr = wknvv-kunnr

AND auart IN contr_ty.

max1 = max.

IF sy-subrc = 0 AND max1 IS NOT INITIAL .

SELECT * INTO wvbap FROM vbap

WHERE vbeln = wlist-vbeln

AND abgru = ''.

IF sy-subrc = 0.

SELECT SINGLE * FROM veda INTO wveda

WHERE vbeln = wlist-vbeln

AND vposn = wvbap-posnr

AND vkuegru = ''

AND venddat IN dates .

IF sy-subrc = 0.

MOVE-CORRESPONDING wvbap TO wlist .

MOVE-CORRESPONDING wveda TO wlist .

MOVE-CORRESPONDING wknvv TO wlist .

APPEND wlist.

ENDIF .

ENDIF.

ENDSELECT.

CLEAR wlist.

ENDIF.

ENDSELECT .

ENDLOOP.

please give me solution immediatly.

I will give full points.

regards,

rakesh.

3 REPLIES 3
Read only

Former Member
0 Likes
396

Can you please tell me why you are using so many select statements within a loop when you can have so may statements like READ TABLE , FOR ALL ENTRIES or JOIN STATEMENTS.

Shall i write then for you?

Read only

0 Likes
396

hi ashish ,

please write the solution.

I will give the full points.

Read only

0 Likes
396

Hi Rakesh,

rite now i m not on the system but

you can write the query like this.

SELECT * INTO TABLE wknvv

FROM knvv

WHERE vkorg IN sales_or

AND vtweg IN dist_cha

AND spart IN div

AND vkbur IN sales_of .

then do the for all entries of WKNW

CREATE a table type with 3 fields for WLIST

SELECT vbeln auart zzmax_cpi

INTO TABLE wlist

FOR ALL ENTRIES IN wknw

FROM vbak

WHERE

vbtyp = 'G'

AND kunnr = wknvv-kunnr

AND auart IN contr_ty.

delete wlist where zzmax_cpi = 0.

SELECT * INTO TABLE wvbap

FROM vbap

FOR ALL ENTRIES OF wlist

WHERE vbeln = wlist-vbeln

AND abgru = ''.

IF sy-subrc = 0.

SELECT SINGLE *

FROM veda

INTO TABLE wveda

FOR ALL ENTRIES OF wlist

WHERE vbeln = wlist-vbeln

AND vposn = wvbap-posnr

AND vkuegru = ''

AND venddat IN dates .

here you have to create two more Internal tables WVEDA and WLIST

Hope this is useful to u...