sapdev logo background
sapdev logo sapdev logo
Comments

Performance tuning using GROUPBY






**************************************************************
*     Performance tuning using GROUPBY
*
* Extracts from program ZFAL2002
**************************************************************


**************************************************************
* START-OF-SELECTION

  SELECT KALNR KALKA BWVAR MEEHT SUM( MENGE )
  INTO TABLE I_CKIS FROM CKIS
  WHERE KADKY <= SY-DATUM
    AND TVERS = '01'
    AND KALKA IN ('01','Z1','Z2')
    AND BWVAR IN ('Z01','Z02','Z03','Z04','Z07')
*   and kkzst = ' '
    AND KKZMA = ' '
    AND TYPPS = 'E'
    AND ( KSTAR <> 800040 OR KSTAR <> 800050 )
    AND ( MEEHT = 'MIN' OR MEEHT = 'H' )
  GROUP BY KALNR KALKA BWVAR MEEHT.

* Perform actual processing
  Perform get_associated_labour_hours.


*----------------------------------------------------------------------*
FORM GET_ASSOCIATED_LABOUR_HOURS.
* Determine start position and then process single record for given key
* i_ckis is sorted on kalnr kalka bwvar meeht with menge summated.
  READ TABLE I_CKIS WITH KEY KALNR = W_KEKO-KALNR
                             KALKA = W_KEKO-KALKA
                             BWVAR = W_KEKO-BWVAR
                             MEEHT = 'H'          BINARY SEARCH.
  IF SY-SUBRC = 0.
    D_LAB_HRS =  I_CKIS-MENGE * 60.
  ENDIF.

  READ TABLE I_CKIS WITH KEY KALNR = W_KEKO-KALNR
                             KALKA = W_KEKO-KALKA
                             BWVAR = W_KEKO-BWVAR
                             MEEHT = 'MINS'       BINARY SEARCH.
  IF SY-SUBRC = 0.
    D_LAB_HRS =  D_LAB_HRS + I_CKIS-MENGE.
  ENDIF.

  D_LAB_HRS = D_LAB_HRS / W_KEKO-LOSGR.
  D_LAB_HRS = D_LAB_HRS / 60.          "Convert from mins into hours
ENDFORM.                               " GET_LABOUR_HOURS_ASSOCIATED



comments powered by Disqus