‎2006 Sep 25 3:05 PM
Hi,
"Nested Loops
Nested loops are avoided. If unavoidable, take advantage of parallel cursor technique "
HOW to incorporate this?
regards
Gunjan
‎2006 Sep 25 5:30 PM
Hi,
Example of parallel cursor technique..
EX..
DATA: BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBELN,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0,
VBELN TYPE VBELN,
POSNR TYPE POSNR,
END OF ITAB.
SORT ITAB1 BY VBELN.
DATA: V_TABIX TYPE SYTABIX.
LOOP AT ITAB.
READ TABLE TRANSPORTING NO FIELDS
WITH KEY VBELN = ITAB-VBELN
BINARY SEARCH.
IF SY-SUBRC = 0.
V_TABIX = SY-TABIX.
LOOP AT ITAB1 FROM V_TABIX.
IF ITAB1-VBELN <> ITAB-VBELN.
EXIT.
ENDIF.
DO THE PROCESSING...
ENDLOOP.
ENDIF.
ENDLOOP.
Thanks,
Naren
‎2006 Sep 25 3:10 PM
hi Gunjan,
Check out the link.
http://help.sap.com/saphelp_47x200/helpdata/en/fc/eb3b23358411d1829f0000e829fbfe/frameset.htm
Regards,
Richa
‎2006 Sep 25 3:10 PM
<b>Exampl for parallel cursor from SAP </b>
REPORT <b>demo_select_cursor_1</b>.
DATA: c1 TYPE cursor,
c2 TYPE cursor.
DATA: wa1 TYPE spfli,
wa2 TYPE spfli.
DATA: flag1(1) TYPE c,
flag2(1) TYPE c.
OPEN CURSOR: c1 FOR SELECT carrid connid
FROM spfli
WHERE carrid = 'LH',
c2 FOR SELECT carrid connid cityfrom cityto
FROM spfli
WHERE carrid = 'AZ'.
DO.
IF flag1 NE 'X'.
FETCH NEXT CURSOR c1 INTO CORRESPONDING FIELDS OF wa1.
IF sy-subrc <> 0.
CLOSE CURSOR c1.
flag1 = 'X'.
ELSE.
WRITE: / wa1-carrid, wa1-connid.
ENDIF.
ENDIF.
IF flag2 NE 'X'.
FETCH NEXT CURSOR c2 INTO CORRESPONDING FIELDS OF wa2.
IF sy-subrc <> 0.
CLOSE CURSOR c2.
flag2 = 'X'.
ELSE.
WRITE: / wa2-carrid, wa2-connid,
wa2-cityfrom, wa2-cityto.
ENDIF.
ENDIF.
IF flag1 = 'X' AND flag2 = 'X'.
EXIT.
ENDIF.
<b>Output :</b>
Parallel Cursors in one Database Table
LH 0400
LH 0402
LH 0454
LH 0455
LH 2402
LH 2407
LH 2415
LH 2436
LH 2462
LH 2463
LH 3577
Regards
Vivek
reward points if this helpds
‎2006 Sep 25 5:27 PM
Check <a href="/people/rob.burbank/blog/2006/02/07/performance-of-nested-loops">this.</a>
Rob
‎2006 Sep 25 5:30 PM
Hi,
Example of parallel cursor technique..
EX..
DATA: BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBELN,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0,
VBELN TYPE VBELN,
POSNR TYPE POSNR,
END OF ITAB.
SORT ITAB1 BY VBELN.
DATA: V_TABIX TYPE SYTABIX.
LOOP AT ITAB.
READ TABLE TRANSPORTING NO FIELDS
WITH KEY VBELN = ITAB-VBELN
BINARY SEARCH.
IF SY-SUBRC = 0.
V_TABIX = SY-TABIX.
LOOP AT ITAB1 FROM V_TABIX.
IF ITAB1-VBELN <> ITAB-VBELN.
EXIT.
ENDIF.
DO THE PROCESSING...
ENDLOOP.
ENDIF.
ENDLOOP.
Thanks,
Naren
‎2006 Sep 26 7:41 AM
hi
if i have to join 2 loops something like this, then how do i go abt maing use of parallel cursor technique?
LOOP AT I_ITEM INTO WA_ITEM.
LOOP AT I_MARD INTO WA_MARD WHERE MATNR = WA_ITEM-MATNR.
ENDLOOP.
ENDLOOP.[REGARDS
GUNJAN