2021-01-13

ABAP物料批次层单位转换

物料在批次层级启用双单位之后,报表需要对物料进行单位转换,标准的转换函数MD_CONVERT_MATERIAL_UNIT就不在实用。跟踪标准事务码MMBE时发现会调用MURC_ALL_BATCH_FACTORS_NEW函数进行批次的单位转换,该函数要求输入对象号参数,所以将该函数再次封装
在这里插入图片描述

自定义接口传入参数
自定义接口传入传出表,在该结构中输入工厂及批次值
FUNCTION ZCONVERT_MATERIAL_UNIT_CHARG.
*"----------------------------------------------------------------------
"“局部接口:
*” IMPORTING
*" VALUE(IF_MATNR) TYPE MATNR OPTIONAL
*" VALUE(IF_MEINS) TYPE MARA-MEINS OPTIONAL
*" VALUE(IF_MEINH) TYPE MARM-MEINH OPTIONAL
*" TABLES
*" ET_CONV_TAB STRUCTURE RMMME2 OPTIONAL
*"----------------------------------------------------------------------

TYPES:
BEGIN OF GTY_S_MCHA_OBJEK, "批次对象
WERKS TYPE WERKS_D,
CHARG TYPE CHARG_D,
OBJEK TYPE INOB-OBJEK,
END OF GTY_S_MCHA_OBJEK,
BEGIN OF GTY_S_OBJEK,
OBJEK TYPE INOB-OBJEK,
END OF GTY_S_OBJEK.

DATA:
LS_MCHA_KEY TYPE MCHA_KEY,
LS_MCHA_OBJEK TYPE GTY_S_MCHA_OBJEK,
LS_OBJEK TYPE GTY_S_OBJEK.

DATA:LS_TAB TYPE RMMME2.

RANGES: MS_CHARG_SAVE FOR MCHB-CHARG, "Begin P40K053180
MS_WERKS_SAVE FOR MARCV-WERKS.

  • Global data
    DATA:
    GT_MCHA_OBJEK TYPE STANDARD TABLE OF GTY_S_MCHA_OBJEK,
    GT_OBJEK TYPE STANDARD TABLE OF GTY_S_OBJEK.

    SORT ET_CONV_TAB BY WERKS CHARG.
    DELETE ADJACENT DUPLICATES FROM ET_CONV_TAB COMPARING WERKS CHARG.
    LS_MCHA_KEY-MATNR = IF_MATNR.
    LOOP AT ET_CONV_TAB INTO LS_TAB. "批次对象

  • Build object key
    LS_MCHA_KEY-WERKS = LS_TAB-WERKS.
    LS_MCHA_KEY-CHARG = LS_TAB-CHARG.
    LS_OBJEK-OBJEK = LS_MCHA_KEY.
    APPEND LS_OBJEK TO GT_OBJEK.

  • Build mcha object table
    LS_MCHA_OBJEK-WERKS = LS_TAB-WERKS.
    LS_MCHA_OBJEK-CHARG = LS_TAB-CHARG.
    LS_MCHA_OBJEK-OBJEK = LS_MCHA_KEY.
    APPEND LS_MCHA_OBJEK TO GT_MCHA_OBJEK.
    ENDLOOP.

  • 获取批次转换比例
    CALL FUNCTION ‘MURC_ALL_BATCH_FACTORS_NEW’
    EXPORTING
    IF_MATNR = IF_MATNR

  • IF_KZDCH                  =
    
  • IF_KZDWS                  =
    IF_MEINS                  = IF_MEINS
    IF_MEINH                  = IF_MEINH
    

    TABLES
    IT_SEL_CHARG = MS_CHARG_SAVE
    IT_SEL_WERKS = MS_WERKS_SAVE
    IT_MCHA_OBJEK = GT_MCHA_OBJEK

  • IT_MCH1_OBJEK             =
    IT_OBJEK                  = GT_OBJEK
    ET_CONV_TAB               = ET_CONV_TAB
    

    EXCEPTIONS
    NOT_FOUND = 1
    NO_BATCH_CONVERSION = 2
    OTHERS = 3
    .
    IF SY-SUBRC <> 0.

  • Implement suitable error handling here
    ENDIF.
    ENDFUNCTION.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值