abap物料单位转换

*&---------------------------------------------------------------------*
*& Report Z_MATNR_UNIT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_MATNR_UNIT.

PARAMETERS: P_MATNR  TYPE MATNR.
PARAMETERS: P_NUM1   TYPE LFIMG.
PARAMETERS: P_VRKME1 TYPE VRKME.
PARAMETERS: P_VRKME2 TYPE VRKME.


START-OF-SELECTION.

  DATA: L_CURR TYPE NETPR.
  DATA: L_QUAN TYPE LFIMG.

  PERFORM SUB_MATNR_UNIT_CONV USING P_MATNR P_NUM1 P_VRKME1 P_VRKME2 CHANGING L_CURR.
  PERFORM SUB_MATNR_UNIT_CONV USING P_MATNR P_NUM1 P_VRKME1 P_VRKME2 CHANGING L_QUAN.

  WRITE: / L_CURR.
  WRITE: / L_QUAN.


*&      Form  unit_conv
FORM SUB_MATNR_UNIT_CONV USING I_MATNR I_NUM I_VRKME1 I_VRKME2 CHANGING C_NUM.

  DATA: L_MATNR  TYPE MATNR.
  DATA: L_VRKME1 TYPE VRKME,
        L_VRKME2 TYPE VRKME.
  DATA: L_MENGE1 LIKE EKPO-MENGE,
        L_MENGE2 LIKE EKPO-MENGE.

  CLEAR: C_NUM.

  """""""""""""""""""""
  CHECK I_MATNR  IS NOT INITIAL.
  CHECK I_NUM    IS NOT INITIAL.
  CHECK I_VRKME1 IS NOT INITIAL.
  CHECK I_VRKME2 IS NOT INITIAL.

  L_MATNR   = I_MATNR.
  L_MENGE1  = I_NUM.
  L_VRKME1  = I_VRKME1.
  L_VRKME2  = I_VRKME2.

  """"""""""""""""""""" 单位是否都在marm表中;
  SELECT MEINH INTO TABLE @DATA(LT_MARM) FROM MARM WHERE MATNR = @L_MATNR.
  SORT LT_MARM.

  READ TABLE LT_MARM INTO DATA(LS_MARM1) WITH KEY MEINH = I_VRKME1 BINARY SEARCH.
  IF SY-SUBRC = 0.
    READ TABLE LT_MARM INTO DATA(LS_MARM2) WITH KEY MEINH = I_VRKME2 BINARY SEARCH.
    IF SY-SUBRC = 0.
      "" 继续
    ELSE.
      RETURN.
    ENDIF.
  ENDIF.

  CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
    EXPORTING
      I_MATNR              = L_MATNR       "#EC CI_FLDEXT_OK[2215424]
      I_IN_ME              = L_VRKME1
      I_OUT_ME             = L_VRKME2
      I_MENGE              = L_MENGE1
    IMPORTING
      E_MENGE              = L_MENGE2
    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.
    STOP.
  ENDIF.

  IF NOT L_MENGE2 IS INITIAL.
    C_NUM = L_MENGE2.
  ENDIF.

ENDFORM.                    " unit_conv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值