如何转换物料的数量单位

举报
雨绸缪 发表于 2023/07/31 17:48:33 2023/07/31
【摘要】 本文将介绍如何将物料数量转换为另一种计量单位数量的功能模块 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

主要是在物料的计量单位维护了转换关系,然后才会使用上这个函数,如图:

image.png

然后我们通过运行 SE37 事务码执行 MD_CONVERT_MATERIAL_UNIT,就会得到转换关系后的结果,比如此处测试用的 1KG = 2PC,那么数量为 1000 时,得到的结果就是 2000,如下图:

image.png

也可以写一个简单的程序示例,在我们需要的报表中使用:

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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。