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 single inside loop

Former Member
0 Likes
1,559

Hi experts,

Pls suggest to remove the select inside loop.

LOOP AT lt_likp INTO lwa_likp.

IF lwa_likp-lgtor <> zgwm_shp_ctrl-lgtor OR

lwa_likp-lgbzo <> zgwm_shp_ctrl-lgbzo.

SELECT SINGLE * FROM likp

INTO lwa_likp

WHERE vbeln = lwa_likp-vbeln.

UPDATE likp

SET lgtor = zgwm_shp_ctrl-lgtor

lgbzo = zgwm_shp_ctrl-lgbzo

WHERE vbeln = lwa_likp-vbeln.

ENDIF.

ENDLOOP.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
904

Hi Madan,

Use the below code which removes the select statement outside the loop :-

if not lt_likp[] is initial.

sort lt_likp.

SELECT * FROM likp

INTO lt_likp1

for all entries in lt_likp

WHERE vbeln = likp-vbeln

endif.

LOOP AT lt_likp INTO lwa_likp.

IF lwa_likp-lgtor zgwm_shp_ctrl-lgtor OR

lwa_likp-lgbzo zgwm_shp_ctrl-lgbzo.

read table lt_likp1 with key vbeln = lwa_likp-vbeln binary search.

if sy-subrc eq 0.

UPDATE likp

SET lgtor = zgwm_shp_ctrl-lgtor

lgbzo = zgwm_shp_ctrl-lgbzo

WHERE vbeln = lwa_likp-vbeln.

endif.

ENDIF.

ENDLOOP.

Regards,

Md Ziauddin.

4 REPLIES 4
Read only

Former Member
0 Likes
904

Hi,

try this,

it wiont effect if you write the select single inside the loop because the field uding in the sekect is a key field.

you can try for all enries and sort table using vbeln and use binary search inside the loop.

after the loop or Update commabnd use the commit work or roll back work when u r doing operation on databases.

Prabhudas

Read only

Former Member
0 Likes
905

Hi Madan,

Use the below code which removes the select statement outside the loop :-

if not lt_likp[] is initial.

sort lt_likp.

SELECT * FROM likp

INTO lt_likp1

for all entries in lt_likp

WHERE vbeln = likp-vbeln

endif.

LOOP AT lt_likp INTO lwa_likp.

IF lwa_likp-lgtor zgwm_shp_ctrl-lgtor OR

lwa_likp-lgbzo zgwm_shp_ctrl-lgbzo.

read table lt_likp1 with key vbeln = lwa_likp-vbeln binary search.

if sy-subrc eq 0.

UPDATE likp

SET lgtor = zgwm_shp_ctrl-lgtor

lgbzo = zgwm_shp_ctrl-lgbzo

WHERE vbeln = lwa_likp-vbeln.

endif.

ENDIF.

ENDLOOP.

Regards,

Md Ziauddin.

Read only

Former Member
0 Likes
904

Please note that your code example is nonsense! Maybe you missed something!

>SELECT SINGLE * FROM likp

>INTO lwa_likp

>WHERE vbeln = lwa_likp-vbeln.

This SELECT SINGLE does nothing, you know everything already.

Just do the UPDATE directly and forget the SELECT SINGLE!

Forget also the FOR ALL ENTRIES proposed solution!

Edited by: Siegfried Boes on Sep 28, 2010 2:41 PM

Read only

Former Member
0 Likes
904

Bad idea to directlly update SAP tables.

Rob