Hello,
is there a way to make a loop faster or to replace it by something faster? I know of 'for all entries' but what if the two fields aren't compatible?
SELECT rqposname RQIDENT
INTO TABLE t_output
FROM tsp01
WHERE rqposname EQ lv_email.
LOOP AT t_output ASSIGNING FIELD-SYMBOL(<fs2>).
SELECT SINGLE jobname progname variant listident
INTO ( <fs2>-jobname, <fs2>-progname, <fs2>-variant, <fs2>-listident )
FROM tbtcp
WHERE listident EQ <fs2>-rqident
AND listident NE '0'.
ENDLOOP.
This takes a few minutes even though there are "only" 1300 rows in t_output.
Any Tips?
Thanks in advance.
Help others by sharing your knowledge.
AnswerRequest clarification before answering.
SELECT inside LOOP is generally bad for performance! Always try to SELECT your data in one DB fetch if possible.
In this case I would suggest simple SELECT with JOIN of the two tables.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes I did try that
but unfortunaly listident and rqident are not the same type.
teaman I see, in this case you can either create a table for FOR ALL ENTRIES or range table. And you will have to retype the rqident to listident.
But now I see another and bigger problem - your both conditions (only the one you are using) are not index nor key fields:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.