Skip to Content
0
Former Member
Jan 21, 2009 at 06:04 AM

performance issue in nested loops

51 Views

Moved to correct forum by moderator

hi

below is my code . in this code i used the 3 nested loops which takes the very long time to execute .

say response time > 1000.

pls some body altered this code in efficient way or provide the technique .

i knew it is resolved by read statement , it reads only a single row but in my case several entries are in

it_ekbe1 and it_ekpo.

LOOP AT IT_EKKO1 INTO WT_EKKO1.
    LOOP AT IT_EKBE1 INTO WT_EKBE1.        
      LOOP AT IT_EKPO INTO WT_EKPO.
        IF WT_EKKO1-EBELN EQ WT_EKBE1-EBELN AND
           WT_EKBE1-EBELN EQ WT_EKPO-EBELN AND
           WT_EKBE1-EBELP EQ WT_EKPO-EBELP .
*           WT_EKBE1-WERKS EQ WT_EKPO-WERKS.
          IF WT_EKPO-MWSKZ NE SPACE .
            PERFORM TAX_CALCULATE_FUNCTION USING WT_EKKO1-BUKRS      "company code
                                                 WT_EKBE1-BUDAT     "posting date
                                                 WT_EKKO1-WAERS      "currency key
                                                 WT_EKPO-EBELN
                                                 WT_EKPO-EBELP      "CONDITION ITEM NUMBER
                                                 WT_EKPO-MWSKZ      "SALES TAX CODE
                                                 WT_EKPO-TXJCD      "TAX JURISIDICTION
                                                 WT_EKBE1-DMBTR      "AMOUNT IN DOCUMENT
                                                 WT_EKKO1-LIFNR      "VENDOR CODE
                                                 WT_EKKO1-LANDS      "COUNTRY KEY
                                                 WT_EKKO1-EKORG      "PURCHASE ORGANIZATION
                                                 WT_EKKO1-LLIEF      "SUPPLYING VENDOR
                                                 WT_EKKO1-BEDAT      "DOCUMENT DATE
                                                 WT_EKPO-MATNR      "material code
                                                 WT_EKPO-WERKS      "PLANT
                                                 WT_EKPO-BWTAR      "VALUATION TYPE
                                                 WT_EKPO-MATKL      "MATERIAL GROUP
                                                 WT_EKPO-MEINS      "BASE UNIT OF MEASURE
                                                 WT_EKBE1-MENGE      "QUANTITY
                                                 WT_EKPO-MTART      "MATERIAL TYPE
                                         CHANGING T_MWSBP.
              CASE WT_EKPO-WERKS.
              WHEN 'RAU1'.
                R1_BOUGHT = R1_BOUGHT + WT_EKBE1-DMBTR.
                R1_GROSS = R1_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R1_BOUGHT.
                WT_TAB-GROSS1 = R1_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'RAU2'.
                R2_BOUGHT = R2_BOUGHT + WT_EKBE1-DMBTR.
                R2_GROSS = R2_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R2_BOUGHT.
                WT_TAB-GROSS1 = R2_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'RAU3'.
                R3_BOUGHT = R3_BOUGHT + WT_EKBE1-DMBTR.
                R3_GROSS = R3_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R3_BOUGHT.
                WT_TAB-GROSS1 = R3_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'RAU4'.
                R4_BOUGHT  = R4_BOUGHT + WT_EKBE1-DMBTR.
                R4_GROSS = R4_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R4_BOUGHT.
                WT_TAB-GROSS1 = R4_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'AP01'.
                AP1_BOUGHT = AP1_BOUGHT + WT_EKBE1-DMBTR.
                AP1_GROSS = AP1_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = AP1_BOUGHT.
                WT_TAB-GROSS1 = AP1_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
            ENDCASE.
 MODIFY IT_TAB FROM WT_TAB TRANSPORTING BOUGHT1
                                                   GROSS1
                                                   WERKS WHERE WERKS = WT_EKPO-WERKS.
            IF SY-SUBRC NE 0.
              APPEND WT_TAB TO IT_TAB.
              CLEAR WT_TAB.
            ENDIF.
ENDLOOP.
    ENDLOOP.
  ENDLOOP.

regards

surender.

Edited by: Matt on Jan 21, 2009 5:41 PM