在 SAP ABAP 中,物料的基本单位转换通常涉及 物料主数据 (Material Master, MARA, MARC, MARM),以及单位转换表 MARM(物料计量单位转换表)。
基本单位 (Base Unit of Measure)
物料的基本单位存储在表 MARA (General Material Data) 的字段 MEINS 中。
该单位是所有库存管理和交易的基础单位。
单位转换 (Unit of Measure Conversion)
MARM 表 (Material Unit Conversion Table)
MATNR: 物料编号
MEINH: 目标单位
UMREZ: 转换分子
UMREN: 转换分母
MEINS: 基本单位
物料的所有单位转换信息存储在 MARM 表中:
计算公式:
获取物料单位转换
MATERIAL_UNIT_CONVERSIONMD_CONVERT_MATERIAL_UNITUNIT_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 计算转换,或者使用函数模块进行转换。
网友评论