Each material in SAP has its standard, base unit of measure (stored in MARA-MEINS). To allow using alternative units, those can be maintained per material in table MARM. A common requirement for ABAPer is to convert material quantity from one unit to another, most likely from an alternative unit to the base one, to be able to summarize the report results.
To do the conversion, SAP provides the function module MATERIAL_UNIT_CONVERSION. Its parameter names are not self-explaining, and for my own purposes I have a simple wrapper form that I use to convert quantities from alternative to base UoM. The form is using data caching technique that I described in one of my earlier posts.
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.
ref: https://abaplog.wordpress.com/2007/03/22/converting-material-quantities-to-different-unit-of-measure-in-abap/
No comments :
Post a Comment