Skip to Content
0
Former Member
Nov 12, 2009 at 06:39 AM

BW FM to extract Data

62 Views

Hi All ,

I am new to this kind of extraction in BW ,

Would like to know couple things

My code

* Select record from FIFO DSO .
      OPEN CURSOR WITH HOLD S_CURSOR1 FOR
      SELECT /BIC/MATERIAL
             /BIC/PLANT
             /BIC/RECP_DATE
             /BIC/UPD_DATE
             /BIC/WEEK_END
             /BIC/RECP_QTY
              BASE_UOM
              RECORDMODE
      FROM /BIC/AFF_O01300
                   WHERE /bic/material  IN LR_MATERIAL
                   and /bic/plant     IN LR_PLANT.                  "First data package ?

*Seelct Records from new GRs
      OPEN CURSOR WITH HOLD S_CURSOR2 FOR
       SELECT /BIC/DOC_DATE
               /BIC/MATERIAL
               /BIC/PLANT
               /BIC/MOVETYPE
               /BIC/QUANT_B
                BASE_UOM
               RECORDMODE
       FROM /bic/aff_o00500
                     WHERE /bic/material  IN LR_MATERIAL
                       and /bic/plant     IN LR_PLANT
                       and /BIC/MOVETYPE = '101'.    "First data package ?


*Select SOH
      OPEN CURSOR WITH HOLD S_CURSOR3 FOR
      SELECT /BIC/WEEK_END
             /BIC/PLANT
             /BIC/MATERIAL
             /BIC/STK_ONOQW
             BASE_UOM
             RECORDMODE
      FROM /bic/aff_o00700
                         WHERE /BIC/WEEK_END = lv_week_end
                           and /bic/material  IN LR_MATERIAL
                           and /bic/plant     IN LR_PLANT
                             .     "First data package ?

    ENDIF.

    Do .
* High volume of data. use package in loop
      FETCH NEXT CURSOR S_CURSOR1
                     APPENDING CORRESPONDING FIELDS
                    OF TABLE gT_GR_FIFO
                     PACKAGE SIZE C_package.

      IF SY-SUBRC <> 0.
        CLOSE CURSOR S_CURSOR1.
        EXIT.
*         RAISE NO_MORE_DATA.
      ENDIF.
    ENDDO.

    Do .
* High volume of data .use package in loop
      FETCH NEXT CURSOR S_CURSOR2
                 APPENDING CORRESPONDING FIELDS
                OF TABLE gt_STK_GR_NEW
                PACKAGE SIZE C_package.

      IF SY-SUBRC <> 0.
        CLOSE CURSOR S_CURSOR2.
        EXIT.
*         RAISE NO_MORE_DATA.
      ENDIF.
    ENDDO.

    Do .
* High volume of data use package in loop
      FETCH NEXT CURSOR S_CURSOR3
                 APPENDING CORRESPONDING FIELDS
                OF TABLE gt_MATL_ACT_SOH
                PACKAGE SIZE C_package.

      IF SY-SUBRC <> 0.
        CLOSE CURSOR S_CURSOR3.
        EXIT.
*         RAISE NO_MORE_DATA.
      ENDIF.
    ENDDO.

As you see I am opening 3 three cursors .

the 1 st fetch statement will be retreving about couple of million records .

through search on this I found that using fetch in loop with package would not cause any internal table space problem and

performance issues .

But not sure wheter this is the right approach .

Any suggestions will be great .

Thanks

Vinay

.