‎2010 Jul 27 9:59 AM
Hi I have to replace the read statements by loop statement in the following code
LOOP AT P_I_IFLO INTO WA_IFLO.
WA_FINAL-TPLNR = WA_IFLO-TPLNR.
V_FINAL_IWERK = WA_IFLO-IWERK.
READ TABLE P_I_ILOA INTO WA_ILOA WITH KEY TPLNR = WA_FINAL-TPLNR
SWERK = V_FINAL_IWERK.
IF SY-SUBRC EQ '0'.
WA_FINAL-EQFNR = WA_ILOA-EQFNR.
V_FINAL_ILOAN = WA_ILOA-ILOAN.
ENDIF.
READ TABLE P_I_EQUZ INTO WA_EQUZ WITH KEY ILOAN = V_FINAL_ILOAN
IWERK = V_FINAL_IWERK.
IF SY-SUBRC EQ '0'.
WA_FINAL-EQUNR = WA_EQUZ-EQUNR.
ENDIF.
READ TABLE P_I_IFLOTX INTO WA_IFLOTX WITH KEY TPLNR = WA_FINAL-TPLNR.
IF SY-SUBRC EQ '0'.
WA_FINAL-PLTXT = WA_IFLOTX-PLTXT.
ENDIF.
READ TABLE P_I_EQKT INTO WA_EQKT WITH KEY EQUNR = WA_FINAL-EQUNR.
IF SY-SUBRC EQ '0'.
WA_FINAL-EQKTX = WA_EQKT-EQKTX.
ENDIF.
APPEND WA_FINAL TO P_I_FINAL.
CLEAR : WA_FINAL,
V_FINAL_ILOAN,
V_FINAL_IWERK,
WA_ILOA.
ENDLOOP.
The internal tables P_I_ILOA, P_I_EQUZ and P_I_EQKT have more than 1 entry. Using read statement, only one entry can be read and appended to the final internal table. Now I need to remove this read and put loop. Since there are more than one read statement and they are within a loop, how can i code it using loop?
‎2010 Jul 27 10:10 AM
Hi,
What is the problem?
You can loop it, like below,
loop at P_I_ILOA into WA_ILOA where TPLNR = WA_FINAL-TPLNR
and SWERK = V_FINAL_IWERK.
code...
code....
endloop.
‎2010 Jul 27 10:18 AM
Hi,
They select one field from one internal table and append it to final internal table..
If i use loop, how can i append it?
Ezhil
‎2010 Jul 27 10:18 AM
Hi,
You can use parallel cursor technique for that. It will help you in terms of performance..
Thanks
Subhankar
‎2010 Jul 27 10:27 AM
hi,
try using all the primary keys in the read statement. then there wil be only one entry for each set. and you do tn need to use loop.
‎2010 Jul 27 10:32 AM
Hi,
When you are looping in first ,, on P_I_IFLO ,, you will process first record of P_I_IFLO .. and at the end of the Loop ,, you will append this one record to Final table ..
Question here is,, why you like to convert the read from P_I_ILOA into Loop ??
because if you gets 3 records,, then do you like append all the 3 records into final (In P_I_ILOA) ??
‎2010 Jul 27 11:26 AM
‎2010 Jul 27 12:40 PM
Hi,
Its better to use parallel cursor method instead of 'Loop at where' as follows.
LOOP AT P_I_IFLO INTO WA_IFLO.
WA_FINAL-TPLNR = WA_IFLO-TPLNR.
V_FINAL_IWERK = WA_IFLO-IWERK.
READ TABLE P_I_ILOA INTO WA_ILOA WITH KEY TPLNR = WA_FINAL-TPLNR
SWERK = V_FINAL_IWERK.
IF SY-SUBRC EQ '0'.
LV_INDEX = SY_TABIX.
LOOP AT P_I_ILOA INTO WA_ILOA FROM LV_INDEX.
IF ( WA_ILOA-TPLNR = WA_FINAL-TPLNR) AND
(WA_ILOA-SWERK = V_FINAL_IWERK).
WA_FINAL-EQFNR = WA_ILOA-EQFNR.
V_FINAL_ILOAN = WA_ILOA-ILOAN.
ELSE.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
:
: similar code for other READS...
;
ENDLOOP.
Regards,
Karthik
‎2010 Jul 27 12:49 PM
Thank you.
But How do I finally append to the final internal table?
Ezhil
‎2010 Jul 27 1:17 PM
Hi ,
You may use the same READ statements inside the P_I_ILOA loop for other internal tables.
LOOP AT P_I_ILOA INTO WA_ILOA FROM LV_INDEX.
IF ( WA_ILOA-TPLNR = WA_FINAL-TPLNR) AND
(WA_ILOA-SWERK = V_FINAL_IWERK).
WA_FINAL-EQFNR = WA_ILOA-EQFNR.
V_FINAL_ILOAN = WA_ILOA-ILOAN.
[other READ statements]
ELSE.
EXIT.
ENDIF.Regards,
Karthik
‎2010 Jul 27 12:54 PM
Hi Try this code
LOOP AT P_I_IFLO INTO WA_IFLO.
WA_FINAL-TPLNR = WA_IFLO-TPLNR.
V_FINAL_IWERK = WA_IFLO-IWERK.
loop at P_I_ILOA INTO WA_ILOA where TPLNR = WA_IFLO-TPLNR
and SWERK = WA_IFLO-IWERK.
WA_FINAL-EQFNR = WA_ILOA-EQFNR.
V_FINAL_ILOAN = WA_ILOA-ILOAN.
loop at P_I_EQUZ INTO WA_EQUZ where ILOAN = WA_ILOA-ILOAN
and IWERK = WA_IFLO-IWERK.
WA_FINAL-EQUNR = WA_EQUZ-EQUNR.
loop at P_I_EQKT INTO WA_EQKT where equnr = WA_EQUZ-EQUNR.
WA_FINAL-EQKTX = WA_EQKT-EQKTX.
endloop.
endloop.
endloop.
loop at P_I_IFLOTX INTO WA_IFLOTX where TPLNR = WA_IFLO-TPLNR.
WA_FINAL-PLTXT = WA_IFLOTX-PLTXT.
endloop.
APPEND WA_FINAL TO P_I_FINAL.
CLEAR : WA_FINAL,
V_FINAL_ILOAN,
V_FINAL_IWERK,
WA_ILOA.
endloop.