Skip to Content
0
Former Member
Oct 11, 2013 at 02:51 AM

How to improve performance while using MSEG ?

729 Views

Dear Experts,

Requirement :

Baseline date in MIRO screen will pick up automatically based on respective PURCHASE ORDER GRN Posting Date. If MIRO contains multiple PO & GRN, system will pick up the 1st line item PO andits respective 1st GRN posting date as BASE LINE date in MIRO.

If there is no GRN postings for 101 Movement for PO’s in MIRO then BASE LINE date will be posting date of MIRO.

BADI Implemented:

MRM_PAYMENT_TERMS

Method PAYMENT_TERMS_SET

Code:

method if_ex_mrm_payment_terms~payment_terms_set.

types : begin of ty_mseg,

mblnr type mseg-mblnr,

mjahr type mseg-mjahr,

zeile type mseg-zeile,

end of ty_mseg.

types : begin of ty_mseg_service,

mblnr type mseg-mblnr,

mjahr type mseg-mjahr,

zeile type mseg-zeile,

lfbnr type mseg-lfbnr,

lfpos type mseg-lfpos,

end of ty_mseg_service.

types : begin of ty_essr,

lblni type essr-lblni,

budat type essr-budat,

end of ty_essr.

data : it_drseg type mmcr_tdrseg,

wa_drseg type line of mmcr_tdrseg,

it_mseg type table of ty_mseg,

wa_mseg type ty_mseg,

it_mseg_s type table of ty_mseg_service,

wa_mseg_s type ty_mseg_service,

wa_essr type ty_essr.

it_drseg = ti_drseg.

select mblnr

mjahr

zeile

from mseg into table it_mseg

for all entries in it_drseg

where mblnr = it_drseg-mblnr

and mjahr = it_drseg-mjahr

and bwart = '101'.

if it_mseg is not initial.

loop at it_drseg into wa_drseg.

read table it_mseg into wa_mseg with key mblnr = wa_drseg-mblnr mjahr = wa_drseg-mjahr.

if sy-subrc ne 0.

delete it_drseg.

endif.

endloop.

clear wa_drseg.

read table it_drseg into wa_drseg index 1.

if it_drseg is not initial.

e_zfbdt = wa_drseg-webud.

else.

e_zfbdt = i_rbkpv-zfbdt.

endif.

endif.

select mblnr

mjahr

zeile

lfbnr

lfpos

from mseg into table it_mseg_s

for all entries in it_drseg

where ebeln = it_drseg-ebeln

and ebelp = it_drseg-ebelp

and lfbnr = it_drseg-lfbnr

and bwart = '101'.

if it_mseg_s is not initial.

clear : wa_drseg, wa_mseg_s.

loop at it_drseg into wa_drseg.

read table it_mseg_s into wa_mseg_s with key lfbnr = wa_drseg-lfbnr.

if sy-subrc ne 0.

delete it_drseg.

endif.

endloop.

clear : wa_drseg, wa_mseg_s.

read table it_drseg into wa_drseg index 1.

select single lblni

budat

from essr into wa_essr

where lblni = wa_drseg-lfbnr.

if wa_essr-budat is not initial.

e_zfbdt = wa_essr-budat.

else.

e_zfbdt = i_rbkpv-zfbdt.

endif.

endif.

if e_zfbdt is initial.

e_zfbdt = i_rbkpv-zfbdt.

endif.

e_zbd1t = i_rbkpv-zbd1t.

e_zbd1p = i_rbkpv-zbd1p.

e_zbd2t = i_rbkpv-zbd2t.

e_zbd2p = i_rbkpv-zbd2p.

e_zbd3t = i_rbkpv-zbd3t.

e_zlspr = i_rbkpv-zlspr.

endmethod.

Performance very bad... how to improve performance....

Thanks in advance...