‎2009 May 05 9:15 AM
Hai,
As Iam using Loop in a Loop iam getting time out dump .
in my internal table itab3 has unique objnr values.
for each objnr i have different status in itab_jcds.
each status column has diff status.
now i need to concatenate the status depending upon same objnr.
LOOP AT ITAB3 INTO WA_ITAB3.
RDX = SY-TABIX.
LOOP AT ITAB_JCDS INTO WA_ITAB_JCDS WHERE OBJNR = WA_ITAB3-OBJNR.
CONCATENATE WA_ITAB_JCDS-STATUS1 WA_ITAB3-STATUS1 INTO WA_ITAB3-STATUS1 SEPARATED BY SPACE.
CONCATENATE WA_ITAB_JCDS-STATUS2 WA_ITAB3-STATUS2 INTO WA_ITAB3-STATUS2 SEPARATED BY SPACE.
CONCATENATE WA_ITAB_JCDS-STATUS3 WA_ITAB3-STATUS3 INTO WA_ITAB3-STATUS3 SEPARATED BY SPACE.
CONCATENATE WA_ITAB_JCDS-STATUS4 WA_ITAB3-STATUS4 INTO WA_ITAB3-STATUS4 SEPARATED BY SPACE.
ENDLOOP.
MODIFY ITAB3 FROM WA_ITAB3 INDEX RDX
TRANSPORTING
OBJNR
STATUS1
STATUS2
STATUS3
STATUS4.
ENDLOOP.
example:
itab3
objnr
123
145
itab_jcds.
objnr stat1 stat2 stat3 stat4
123 nopr mav crtd rel
123 CRTD mnav rel prt
123 rel orsc txt crtd
now i req output as
itab3
objnr stat1 stat2 stat3 stat4.
123 nopr crtd rel mav mnav orsc crtd rel txt rel prt crtd
could u please help.
‎2009 May 05 9:22 AM
Hi Goutam,
2 suggestions:
- change itab_jcds to a sorted table (key objnr) in order to avoid linear search on this table.
- use ASSIGNING on LOOP AT ITAB3 to avoid the MODIFY (instead just change fields
OBJNR STATUS1 STATUS2 STATUS3 STATUS4 directly in the table body with a field-symbol).
this should speed it up a little bit
Kind regards,
Hermann
‎2009 May 05 9:26 AM
Hi,
Try this way..
SORT ITAB3 BY OBJNR.
SORT ITAB_JCDS BY OBJNR.
LOOP AT ITAB3 INTO WA_ITAB3.
RDX = SY-TABIX.
READ TABLE ITAB_JCDS INTO WA_ITAB_JCDS WITH KEY OBJNR = WA_ITAB3-OBJNR.
BINARY SEARCH.
IF SY-SUBRC EQ 0.
LOOP AT ITAB_JCDS INTO WA_ITAB_JCDS FROM SY-TABIX.
IF WA_ITAB_JCDS-OBJNR NE WA_ITAB3-OBJNR.
EXIT.
ENDIF.
CONCATENATE WA_ITAB_JCDS-STATUS1 WA_ITAB3-STATUS1 INTO WA_ITAB3-STATUS1 SEPARATED BY SPACE.
CONCATENATE WA_ITAB_JCDS-STATUS2 WA_ITAB3-STATUS2 INTO WA_ITAB3-STATUS2 SEPARATED BY SPACE.
CONCATENATE WA_ITAB_JCDS-STATUS3 WA_ITAB3-STATUS3 INTO WA_ITAB3-STATUS3 SEPARATED BY SPACE.
CONCATENATE WA_ITAB_JCDS-STATUS4 WA_ITAB3-STATUS4 INTO WA_ITAB3-STATUS4 SEPARATED BY SPACE.
ENDLOOP.
MODIFY ITAB3 FROM WA_ITAB3 INDEX RDX
TRANSPORTING
OBJNR
STATUS1
STATUS2
STATUS3
STATUS4.
ENDIF.
ENDLOOP
‎2009 May 05 10:06 AM
‎2009 May 05 9:32 AM
Hi,
Instead of MODIFY statement use Field-symbols,
Is ur wa_itab3-status1 has any value?
Using the above statement be little careful, as what ever value u assig to the field in field symbol it stores.
Try as below
FIELD-SYMBOLS : <wa_itab3> TYPE ty_itab3.
LOOP AT itab3 ASSIGNING <wa_itab3>. " using ASSIGNING <field-symbol> no need of MODIFY statement.
LOOP AT itab_jcds INTO wa_itab_jcds WHERE objnr = <wa_itab3>-objnr.
CONCATENATE wa_itab_jcds-status1 <wa_itab3>-status1 INTO <wa_itab3>-status1 SEPARATED BY SPACE.
CONCATENATE wa_itab_jcds-status2 <wa_itab3>-status2 INTO <wa_itab3>-status2 SEPARATED BY SPACE.
CONCATENATE wa_itab_jcds-status3 <wa_itab3>-status3 INTO <wa_itab3>-status3 SEPARATED BY SPACE.
ENDLOOP.
ENDLOOP.Regards
Bala Krishna
‎2009 May 05 10:05 AM
the loop in loop causes the time out
LOOP AT ITAB3 INTO WA_ITAB3.
LOOP AT ITAB_JCDS INTO WA_ITAB_JCDS WHERE OBJNR = WA_ITAB3-OBJNR.
Either use SORTED table (convenient) as said above or the more complicated solution with the
BINARY SEARCH also shown above.
The assigning can even make it faster, but the first effect much much larger!
Siegfried