如何转换物料的数量单位
【摘要】 本文将介绍如何将物料数量转换为另一种计量单位数量的功能模块 MD_CONVERT_MATERIAL_UNIT,计量单位之间转换(如:每 PCS 等于多少 SET)导入参数包括:物料代码 ( I_MATNR)源计量单位 (I_IN_ME)目标计量单位 (I_OUT_ME)数量 (I_MENGE)导出参数:E_MENGE:目标数量我们可以指定物料编号和源度量单位、目标度量单位和数量。这个函数模块...
本文将介绍如何将物料数量转换为另一种计量单位数量的功能模块 MD_CONVERT_MATERIAL_UNIT
,计量单位之间转换(如:每 PCS 等于多少 SET)
导入参数包括:
- 物料代码 (
I_MATNR
) - 源计量单位 (
I_IN_ME
) - 目标计量单位 (
I_OUT_ME
) - 数量 (
I_MENGE
)
导出参数:
- E_MENGE:目标数量
我们可以指定物料编号和源度量单位、目标度量单位和数量。这个函数模块会帮我们得到转换后的结果:
例如:
参数名 | 文本 | 设置值 |
---|---|---|
I_MATNR | 物料编号 | 11006941 |
I_IN_ME | 源计量単位 | KG |
I_OUT_ME | 目标计量単位 | PC |
I_MENGE | 数量 | 1 |
主要是在物料的计量单位维护了转换关系,然后才会使用上这个函数,如图:
然后我们通过运行 SE37
事务码执行 MD_CONVERT_MATERIAL_UNIT
,就会得到转换关系后的结果,比如此处测试用的 1KG = 2PC,那么数量为 1000 时,得到的结果就是 2000,如下图:
也可以写一个简单的程序示例,在我们需要的报表中使用:
DATA: LV_MATNR TYPE MARA-MATNR,
LV_IN_ME TYPE MARA-MEINS,
LV_OUT_ME TYPE MARA-MEINS,
LV_MENGE TYPE EKPO-MENGE,
LV_E_MENGE TYPE EKPO-MENGE.
I_MATNR = '11006162'.
I_IN_ME = 'KG'.
I_OUT_ME = 'TO'.
I_MENGE = 1.
CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
EXPORTING
I_MATNR = LV_MATNR
I_IN_ME = LV_IN_ME
I_OUT_ME = LV_OUT_ME
I_MENGE = LV_MENGE
IMPORTING
E_MENGE = LV_E_MENGE
EXCEPTIONS
ERROR_IN_APPLICATION = 1
ERROR = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
ENDIF.
其实,在很多时候官方提供了很有用的功能模块,我们都可以先自己使用通过 SE37
进行使用和探索,然后再封装为自己的工具库,使用起来就很方便,提高代码复用率。
也可以进行封装,如下:
*&---------------------------------------------------------------------*
*& Form FRM_UNIT_CONVERSION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->VALUE(PV_MATNR) 物料
* -->VALUE(CH_MENGE) 待转换数量
* -->VALUE(CH_MEINS) 待转换计量单位
*----------------------------------------------------------------------*
FORM frm_unit_conversion USING value(pv_matnr)
CHANGING value(ch_menge) value(ch_meins) .
DATA :
lv_in_meins TYPE mara-meins,
lv_out_meins TYPE mara-meins,
lv_in_menge TYPE menge_d,
lv_out_menge TYPE menge_d.
CLEAR : lv_in_meins,lv_out_meins, lv_in_menge, lv_out_menge.
* 取出物料基本计量单位
SELECT SINGLE meins INTO lv_out_menge
FROM mara
WHERE matnr = pv_matnr.
lv_in_menge = ch_menge.
lv_in_meins = ch_meins.
CALL FUNCTION 'ZFM_UT_UNIT_CONVERSION'
EXPORTING
ip_matnr = pv_matnr " 物料
ip_meins = lv_out_menge " 物料计量单位
ip_unit_in = lv_in_meins " 待转换 物料计量单位
ip_unit_out = lv_out_menge " 转换为 物料计量单位
ip_value_in = lv_in_menge
IMPORTING
ep_value_out = lv_out_menge
EXCEPTIONS
overflow = 1
OTHERS = 2.
IF sy-subrc = 0.
ch_menge = lv_out_menge.
ENDIF .
ch_meins = lv_out_meins.
ENDFORM . "FRM_UNIT_CONVERSION
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)