Skip to Content
0
Former Member
Mar 16, 2009 at 12:26 PM

Performance issue

46 Views

hello,

Can anybody tell me how can i increse performance in following queries it takes lot of time..

SELECT mblnr                         " Number of Material Document
         mjahr                         " Material Document Year
         budat                         " Posting Date in the Document
    FROM mkpf
    INTO TABLE i_mkpf
   WHERE budat
      IN s_budat
     AND vgart = 'WE'.

  IF sy-subrc NE 0.
    MESSAGE 'No incoming Invoices exist'(002) TYPE 'I'.
    STOP.
  ELSE.
    SORT i_mkpf BY mblnr mjahr .
    DELETE ADJACENT DUPLICATES FROM i_mkpf
                               COMPARING mblnr mjahr.
  ENDIF.                               " IF sy-subrc NE 0

  IF i_mkpf IS NOT INITIAL.

    SELECT ebeln                       " Purchase Order Number
           ebelp                       " Item Number of Purchasing Document
           mblnr                       " Number of Material Document
           mjahr                       " Material Document Year
           zeile                       " Item In Material Document
           lfbnr                       " Document No. of a Reference Document
           lfbja                       " Fiscal Year of a Reference Document
           lfpos                       " Item of a Reference Document
           werks                       " Plant
           matnr                       " Material Number
           lifnr                       " Vendor Account Number
      FROM mseg
INTO TABLE i_mseg
       FOR ALL ENTRIES IN i_mkpf
     WHERE mblnr = i_mkpf-mblnr
       AND mjahr = i_mkpf-mjahr
       AND bwart = '101'
       AND werks IN s_werks.

    IF sy-subrc = 0.
      SORT i_mseg BY ebeln ebelp mblnr mjahr zeile.
      DELETE ADJACENT DUPLICATES FROM i_mseg
                            COMPARING ebeln ebelp mblnr
                                      mjahr zeile.
    ENDIF.                             " IF sy-subrc = 0
  ENDIF.                               " If i_mkpf is not initial


  IF i_mseg IS NOT INITIAL.
    SELECT ebeln                       " Purchasing Document Number
           ebelp                       " Item Number of Purchasing Doc
           belnr                       " Miro Document Number
           gjahr                       " Miro Document Year
           buzei                       " Item in Miro Document
           budat                       " Miro Posting Date
           dmbtr                       " Miro Amount In Local Currency
           lfgja                       " Fiscal Year of a Reference Doc.
           lfbnr                       " Document No. of a Reference Doc.
           lfpos                       " Item of a Reference Document
           vgabe                       " Transaction/event type, purchase order history
      FROM ekbe
INTO TABLE i_ekbe_miro1
       FOR ALL ENTRIES IN i_mseg
     WHERE ebeln =  i_mseg-ebeln
       AND ebelp =  i_mseg-ebelp
       AND bwart = '641'.

    IF sy-subrc EQ 0.

      SORT i_ekbe_miro1 BY ebeln.
      DELETE ADJACENT DUPLICATES FROM i_ekbe_miro1
                            COMPARING ebeln.

      LOOP AT i_ekbe_miro1 INTO fs_ekbe_miro1.
        DELETE i_mseg WHERE ebeln = fs_ekbe_miro1-ebeln.
      ENDLOOP.                         " LOOP AT i_ekbe_miro1

    ENDIF.                             " IF sy-subrc = 0

  ENDIF.                               " If i_mseg is not initial

  IF i_mseg IS NOT INITIAL.
    SELECT ebeln                       " Purchasing Document Number
           ebelp                       " Item Number of Purchasing Doc
           belnr                       " Miro Document Number
           gjahr                       " Miro Document Year
           buzei                       " Item in Miro Document
           budat                       " Miro Posting Date
           dmbtr                       " Miro Amount In Local Currency
           lfgja                       " Fiscal Year of a Reference Doc.
           lfbnr                       " Document No. of a Reference Doc.
           lfpos                       " Item of a Reference Document
           vgabe                       " Transaction/event type, purchase order history
      FROM ekbe
INTO TABLE i_ekbe_miro
       FOR ALL ENTRIES IN i_mseg
     WHERE ebeln =  i_mseg-ebeln
       AND ebelp =  i_mseg-ebelp
       AND lfgja =  i_mseg-lfbja
       AND lfbnr =  i_mseg-lfbnr
       AND lfpos =  i_mseg-lfpos
       AND werks IN s_werks
       AND vgabe = '2'.
  ENDIF.                               " if i_mseg is not initial

  IF sy-subrc EQ 0.
    SORT i_ekbe_miro BY belnr gjahr buzei.
  ENDIF.                               " IF sy-subrc EQ 0

  LOOP AT i_ekbe_miro INTO fs_ekbe_miro.

    fs_miro_ac-belnr = fs_ekbe_miro-belnr.
    fs_miro_ac-gjahr = fs_ekbe_miro-gjahr.
    fs_miro_ac-buzei = fs_ekbe_miro-buzei.
    fs_miro_ac-budat = fs_ekbe_miro-budat.
    CONCATENATE fs_ekbe_miro-belnr fs_ekbe_miro-gjahr INTO fs_miro_ac-awkey.
    APPEND fs_miro_ac TO i_miro_ac.

  ENDLOOP.                             " LOOP AT i_ekbe_miro

  SORT i_miro_ac BY belnr gjahr buzei budat awkey.
*  DELETE ADJACENT DUPLICATES FROM i_miro_ac COMPARING awkey.
  IF i_miro_ac IS NOT INITIAL.

    SELECT belnr                       " Accounting Document Number
           gjahr                       " Fiscal Year
           budat                       " Posting Date in the Document
           awkey                       " Reference Key
      FROM bkpf
INTO TABLE i_bkpf
       FOR ALL ENTRIES IN i_miro_ac
     WHERE bukrs EQ '1000'
       AND gjahr = i_miro_ac-gjahr
       AND budat = i_miro_ac-budat
       AND awkey = i_miro_ac-awkey.
  ENDIF.                               " IF i_miro_ac IS NOT INITIAL

  IF sy-subrc NE 0.
    MESSAGE 'No incoming Invoices exist'(002) TYPE 'I'.
    STOP.
  ENDIF.                               " IF sy-subrc NE 0
  IF i_mseg IS NOT INITIAL.
    SELECT mblnr                       " Number of Material Document
           mjahr                       " Material Document Year
           zeile                       " Item in Material Document
           rdoc1                       " Accounting Document
           exbed                       " Basic Excise Duty
           exaddtax1                   " Additional Tax1 value
           ecs                         " ECS Value
      FROM j_1igrxref
INTO TABLE i_excise
       FOR ALL ENTRIES IN i_mseg
     WHERE mblnr =   i_mseg-mblnr
       AND mjahr =   i_mseg-mjahr
       AND zeile =   i_mseg-zeile.
  ENDIF.                               " if i_mseg is not INITIAL
  IF sy-subrc NE 0.
    MESSAGE 'No incoming Invoices exist'(002) TYPE 'I'.
    STOP.
  ENDIF.                               " IF sy-subrc NE 0

regards

soniya.