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.