SAP 物料基本单位转换

在 SAP ABAP 中,物料的基本单位转换通常涉及 物料主数据 (Material Master, MARA, MARC, MARM),以及单位转换表 MARM(物料计量单位转换表)。

基本单位 (Base Unit of Measure)

  • 物料的基本单位存储在表 MARA (General Material Data) 的字段 MEINS 中。

  • 该单位是所有库存管理和交易的基础单位。

单位转换 (Unit of Measure Conversion)

  1. MARM 表 (Material Unit Conversion Table)

    • MATNR: 物料编号

    • MEINH: 目标单位

    • UMREZ: 转换分子

    • UMREN: 转换分母

    • MEINS: 基本单位

    • 物料的所有单位转换信息存储在 MARM 表中:

    • 计算公式:

      基本单位数量=目标单位数量×UMRENUMREZ\text{基本单位数量} = \text{目标单位数量} \times \frac{\text{UMREN}}{\text{UMREZ}}

  2. 获取物料单位转换

    • MATERIAL_UNIT_CONVERSION

    • MD_CONVERT_MATERIAL_UNIT

    • UNIT_CONVERSION_SIMPLE

    • 可以使用 SELECT 查询 MARM 表获取转换关系。

    • 也可以使用 函数模块 进行转换:

示例 ABAP 代码

abap复制编辑DATA: lv_matnr TYPE matnr,       " 物料编号
      lv_meinh TYPE meinh,       " 目标单位
      lv_menge TYPE mseg-menge,  " 目标数量
      lv_umrez TYPE marm-umrez,  " 分子
      lv_umren TYPE marm-umren,  " 分母
      lv_base_qty TYPE mseg-menge. " 基本单位数量

lv_matnr = '1000001'.  " 示例物料编号
lv_meinh = 'KG'.      " 目标单位
lv_menge = 10.        " 目标单位数量

SELECT SINGLE umrez, umren INTO (lv_umrez, lv_umren)
  FROM marm
  WHERE matnr = lv_matnr
    AND meinh = lv_meinh.

IF sy-subrc = 0.
  lv_base_qty = lv_menge * lv_umren / lv_umrez.
  WRITE: '基本单位数量:', lv_base_qty.
ELSE.
  WRITE: '单位转换未找到'.
ENDIF.

使用函数模块

abap复制编辑DATA: lv_base_qty TYPE mseg-menge.

CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
  EXPORTING
    i_matnr   = '1000001'
    i_in_me   = 'KG'
    i_out_me  = 'PC'
    i_menge   = 10
  IMPORTING
    e_menge   = lv_base_qty
  EXCEPTIONS
    error     = 1
    OTHERS    = 2.

IF sy-subrc = 0.
  WRITE: '基本单位数量:', lv_base_qty.
ELSE.
  WRITE: '转换失败'.
ENDIF.

总结

  • 基本单位存储在 MARA-MEINS。

  • 单位转换关系存储在 MARM 表,包含 UMREZ/UMREN。

  • 可以手动查询 MARM 计算转换,或者使用函数模块进行转换。

关键词: ABAP

网友评论

发表评论