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...