Skip to Content
0
Former Member
Sep 30, 2005 at 12:27 PM

Performance Issue

43 Views

Hi,

Can anyone re-design the code as this is giving me a performance issue. The earlier code and change code is given. But still, the db hit is around 80%.

<b>Old Code:</b>

**<<<++Start of changes NEX4CRH 08.08.2005 DV2K922632 CR17140

*SELECT

  • PGMIPRGRP MSEGMATNR MSEGERFMG MKPFVGART MKPF~BUDAT

*MSEGWERKS MSEGSHKZG

  • MSEGMBLNR MSEGMJAHR MKPF~MJAHR

  • FROM PGMI INNER JOIN MSEG

  • ON ( PGMINRMIT = MSEGmatnr ) INNER JOIN MKPF ON

  • ( MSEGMBLNR = MKPFMBLNR AND MSEGMJAHR = MKPFMJAHR ) INTO

*CORRESPONDING FIELDS OF TABLE

  • INT_ACTUAL WHERE PGMI~PRGRP IN S_PRDGRP AND

  • ( MSEG~BWART = '101' OR

  • MSEG~BWART = '102' )

  • AND MKPF~VGART = 'WF'.

<b>New-Code</b>

SELECT PRGRP NRMIT FROM PGMI INTO TABLE INT_PGMI

WHERE PRGRP IN S_PRDGRP.

SELECT MBLNR MATNR WERKS ERFMG MJAHR BWART SHKZG

INTO TABLE INT_MSEG

FROM MSEG FOR ALL ENTRIES IN INT_PGMI

WHERE MATNR = INT_PGMI-NRMIT AND

( MSEG~BWART = '101' OR

MSEG~BWART = '102' ).

SELECT MBLNR MJAHR VGART BUDAT FROM MKPF INTO TABLE INT_MKPF

FOR ALL ENTRIES IN INT_MSEG

WHERE MBLNR = INT_MSEG-MBLNR AND

MJAHR = INT_MSEG-MJAHR AND

MKPF~VGART = 'WF'.

LOOP AT INT_MKPF.

READ TABLE INT_MSEG WITH KEY MBLNR = INT_MKPF-MBLNR

MJAHR = INT_MKPF-MJAHR1.

IF SY-SUBRC = 0.

MOVE INT_MSEG-MBLNR TO INT_ACTUAL-MBLNR.

MOVE INT_MSEG-MATNR TO INT_ACTUAL-MATNR.

MOVE INT_MSEG-WERKS TO INT_ACTUAL-WERKS.

MOVE INT_MSEG-ERFMG TO INT_ACTUAL-ERFMG.

MOVE INT_MSEG-MJAHR TO INT_ACTUAL-MJAHR.

MOVE INT_MSEG-BWART TO INT_ACTUAL-BWART.

MOVE INT_MSEG-SHKZG TO INT_ACTUAL-SHKZG.

MOVE INT_MKPF-VGART TO INT_ACTUAL-VGART.

MOVE INT_MKPF-BUDAT TO INT_ACTUAL-BUDAT.

APPEND INT_ACTUAL.

ENDIF.

ENDLOOP.

CLEAR INT_ACTUAL.

LOOP AT INT_ACTUAL.

READ TABLE INT_PGMI WITH KEY NRMIT = INT_ACTUAL-MATNR.

IF SY-SUBRC = 0.

MOVE INT_PRDGRP-PRGRP TO INT_ACTUAL-PRGRP.

MODIFY INT_ACTUAL.

ENDIF.

ENDLOOP.

Please advise in this regard.