05-15-2009 10:37 AM
Hi,
While calculating price variance percentage, standard price of material and netprice of purchase order is involved. How can i write a logic considering unit of both material and PO? Should i convert the PO unit to Base unit of material? If so, what is the logic for that?
05-15-2009 10:42 AM
form convert_to_base_uom
using pf_matnr type matnr
pf_menge_in type gsmng
pf_meins_in type meins
changing pf_menge_out type gsmng
pf_meins_out type meins.
define internal table to cache the base UOM
types: begin of lty_meins_rec,
matnr type matnr,
meins type meins,
end of lty_meins_rec.
types:
lty_meins_tab type hashed table of lty_meins_rec
with unique key matnr.
data:
ls_wa type lty_meins_rec.
statics:
lt_meins type lty_meins_tab.
first, find the base UOM
clear pf_meins_out.
read table lt_meins into ls_wa
with table key matnr = pf_matnr.
if sy-subrc = 0.
pf_meins_out = ls_wa-meins.
else.
select single meins
from mara
into ls_wa-meins
where matnr = pf_matnr.
if sy-subrc 0. "doesn't exist. try PC
ls_wa-meins = 'ST'.
endif.
ls_wa-matnr = pf_matnr.
pf_meins_out = ls_wa-meins.
insert ls_wa into table lt_meins.
endif.
now convert the qty
if pf_meins_in = pf_meins_out.
pf_menge_out = pf_menge_in.
else.
call function 'MATERIAL_UNIT_CONVERSION'
exporting
input = pf_menge_in
kzmeinh = 'X'
matnr = pf_matnr
meinh = pf_meins_in
meins = pf_meins_out
type_umr = '3'
importing
output = pf_menge_out
exceptions
conversion_not_found = 1
input_invalid = 2
material_not_found = 3
meinh_not_found = 4
meins_missing = 5
no_meinh = 6
output_invalid = 7
overflow = 8
others = 9.
endif.
endform.
05-15-2009 12:02 PM
yes u can convert po unit into th eone of the material..
i ll gv u the fm for material conversion.
MD_CONVERT_MATERIAL_UNIT
regrds
kanishak