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

nested loops!!

Former Member
0 Likes
724

Hi,

"Nested Loops

Nested loops are avoided. If unavoidable, take advantage of parallel cursor technique "

HOW to incorporate this?

regards

Gunjan

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
677

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

5 REPLIES 5
Read only

Former Member
Read only

Former Member
0 Likes
677

<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

Read only

Former Member
0 Likes
677

Check <a href="/people/rob.burbank/blog/2006/02/07/performance-of-nested-loops">this.</a>

Rob

Read only

Former Member
0 Likes
678

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

Read only

0 Likes
677

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