SAP ABAP BAPI_MATERIAL_SAVEDATA 物料主数据EAN

效果图:

  

 

 

DATA:LS_TE_MARA TYPE  BAPI_TE_MARA ,
       LS_TE_MARAX TYPE  BAPI_TE_MARAX .
  DATA: WA_BAPIMATHEAD TYPE BAPIMATHEAD.
  DATA:GS_DESCRIPTION TYPE BAPI_MAKT.
  DATA: WA_CLIENTDATA TYPE BAPI_MARA.
  DATA: WA_CLIENTDATAX TYPE BAPI_MARAX.
  DATA: WA_PLANTDATA TYPE BAPI_MARC.
  DATA: WA_PLANTDATAX TYPE BAPI_MARCX.
  DATA  LT_INTERNATIONALARTNOS  LIKE TABLE OF   BAPI_MEAN .
  DATA:  LS_INTERNATIONALARTNOS  LIKE  BAPI_MEAN .
  DATA:LS_UNITSOFMEASURE LIKE  BAPI_MARM,
   LS_UNITSOFMEASUREX  LIKE  BAPI_MARMX .
  DATA:LT_BAPIPAREX TYPE TABLE OF BAPIPAREX ,
        LS_BAPIPAREX  TYPE BAPIPAREX  .
  DATA:LT_BAPIPAREXX TYPE TABLE OF BAPIPAREXX ,
       LS_BAPIPAREXX TYPE BAPIPAREXX .
*"库存地点
  DATA: WA_BAPI_MARD TYPE BAPI_MARD.
  DATA: WA_BAPI_MARDX TYPE BAPI_MARDX.
  DATA: WA_BAPI_MBEW TYPE BAPI_MBEW.
  DATA: WA_BAPI_MBEWX TYPE BAPI_MBEWX.
  DATA: WA_BAPI_MVKE TYPE BAPI_MVKE.
  DATA: WA_BAPI_MVKEX TYPE BAPI_MVKEX.
*仓库
  DATA: WA_BAPI_MLGN TYPE BAPI_MLGN.
  DATA: WA_BAPI_MLGNX TYPE BAPI_MLGNX.
  DATA:LV_MESSAGE TYPE STRING .
  DATA:LV_ALL_MESSAGE TYPE STRING .
  DATA:
   LT_UNITSOFMEASURE LIKE TABLE OF   BAPI_MARM,
  LT_UNITSOFMEASUREX  LIKE TABLE OF   BAPI_MARMX.
*仓储类型
  DATA: WA_BAPI_MLGT TYPE BAPI_MLGT.
  DATA: WA_BAPI_MLGTX TYPE BAPI_MLGTX.
*税分类
  DATA: I_TAXCLASSIFICATIONS TYPE TABLE OF BAPI_MLAN.
  DATA: WA_TAXCLASSIFICATIONS TYPE BAPI_MLAN.
*错误消息
  DATA: WA_BAPIRET2 TYPE BAPIRET2.
  DATA: I_BAPI_MATRETURN2 TYPE TABLE OF
                     BAPI_MATRETURN2 WITH HEADER LINE.
  DATA:  GT_DESCRIPTION TYPE TABLE OF BAPI_MAKT.
  DATA:GT_MEASURE  LIKE TABLE OF  BAPI_MARM,
        WA_MEASURE LIKE BAPI_MARM,
  GT_MEASUREX LIKE TABLE OF   BAPI_MARMX,
  WA_MEASUREX LIKE BAPI_MARMX.
  DATA: LV_FLAG TYPE CHAR01 .
*创建基本视图和EAN数据。
  WA_BAPIMATHEAD-BASIC_VIEW = 'X'.
*基本视图。
  WA_BAPIMATHEAD-MATERIAL   = GS_HEAD-MATNR .  "物料
*基本EAN数据。
  CLEAR: LS_UNITSOFMEASURE.
  CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
    EXPORTING
      INPUT          = GS_HEAD-MEINS
      LANGUAGE       = SY-LANGU
    IMPORTING
      OUTPUT         = LS_UNITSOFMEASURE-ALT_UNIT
    EXCEPTIONS
      UNIT_NOT_FOUND = 1
      OTHERS         = 2.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  LS_UNITSOFMEASURE-GROSS_WT = GS_HEAD-BRGEW .

  CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
    EXPORTING
      INPUT          = GS_HEAD-GEWEI
      LANGUAGE       = SY-LANGU
    IMPORTING
      OUTPUT         = LS_UNITSOFMEASURE-UNIT_OF_WT
    EXCEPTIONS
      UNIT_NOT_FOUND = 1
      OTHERS         = 2.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  WA_CLIENTDATA-NET_WEIGHT = GS_HEAD-NTGEW.
  WA_CLIENTDATA-UNIT_OF_WT = LS_UNITSOFMEASURE-UNIT_OF_WT.
  WA_CLIENTDATAX-NET_WEIGHT = 'X'.
  WA_CLIENTDATAX-UNIT_OF_WT = 'X'.

  LS_UNITSOFMEASURE-EAN_UPC = GS_HEAD-EAN11 .
  LS_UNITSOFMEASURE-EAN_CAT = GS_HEAD-NUMTP .
  LS_UNITSOFMEASURE-LENGTH = GS_HEAD-LAENG  .
  LS_UNITSOFMEASURE-WIDTH = GS_HEAD-BREIT .
  LS_UNITSOFMEASURE-HEIGHT = GS_HEAD-HOEHE .
  LS_UNITSOFMEASURE-UNIT_DIM = GS_HEAD-MEABM  .
  LS_UNITSOFMEASURE-VOLUME = GS_HEAD-VOLUM .
  CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
    EXPORTING
      INPUT          = GS_HEAD-VOLEH
      LANGUAGE       = SY-LANGU
    IMPORTING
      OUTPUT         = LS_UNITSOFMEASURE-VOLUMEUNIT
    EXCEPTIONS
      UNIT_NOT_FOUND = 1
      OTHERS         = 2.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  APPEND LS_UNITSOFMEASURE TO LT_UNITSOFMEASURE .

  CLEAR: LS_UNITSOFMEASUREX.

  LS_UNITSOFMEASUREX-ALT_UNIT =   LS_UNITSOFMEASURE-ALT_UNIT .
  LS_UNITSOFMEASUREX-GROSS_WT = 'X' .
  LS_UNITSOFMEASUREX-EAN_UPC = 'X' .
  LS_UNITSOFMEASUREX-EAN_CAT = 'X' .
  LS_UNITSOFMEASUREX-LENGTH =  'X' .
  LS_UNITSOFMEASUREX-WIDTH =  'X' .
  LS_UNITSOFMEASUREX-HEIGHT = 'X' .
  LS_UNITSOFMEASUREX-UNIT_DIM = 'X' .
  LS_UNITSOFMEASUREX-VOLUME =  'X' .
  LS_UNITSOFMEASUREX-VOLUMEUNIT =  'X' .
  LS_UNITSOFMEASUREX-UNIT_OF_WT = 'X' .
  APPEND LS_UNITSOFMEASUREX TO LT_UNITSOFMEASUREX .

  CLEAR LS_INTERNATIONALARTNOS .
  CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
    EXPORTING
      INPUT          = GS_HEAD-MEINS
      LANGUAGE       = SY-LANGU
    IMPORTING
      OUTPUT         = LS_INTERNATIONALARTNOS-UNIT
    EXCEPTIONS
      UNIT_NOT_FOUND = 1
      OTHERS         = 2.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  LS_INTERNATIONALARTNOS-UNIT_ISO = SPACE .
  LS_INTERNATIONALARTNOS-EAN_UPC  =  GS_HEAD-EAN11 .
  LS_INTERNATIONALARTNOS-EAN_CAT  = GS_HEAD-NUMTP .
  LS_INTERNATIONALARTNOS-DEL_FLAG = SPACE .
  APPEND LS_INTERNATIONALARTNOS TO LT_INTERNATIONALARTNOS .

*附加EAN .
  LOOP AT GT_MARM INTO GS_MARM  .
    CLEAR LS_UNITSOFMEASURE .
    CLEAR LS_UNITSOFMEASUREX .
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = GS_MARM-MEINH
        LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = LS_UNITSOFMEASURE-ALT_UNIT
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = GS_MARM-MEINH
        LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = LS_UNITSOFMEASURE-ALT_UNIT_ISO
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LS_UNITSOFMEASURE-GROSS_WT = GS_MARM-BRGEW .

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = GS_MARM-GEWEI
        LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = LS_UNITSOFMEASURE-UNIT_OF_WT
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    LS_UNITSOFMEASURE-EAN_UPC = GS_MARM-EAN11.
    LS_UNITSOFMEASURE-EAN_CAT = GS_MARM-NUMTP .
    LS_UNITSOFMEASURE-LENGTH = GS_MARM-LAENG  .
    LS_UNITSOFMEASURE-WIDTH = GS_MARM-BREIT .
    LS_UNITSOFMEASURE-HEIGHT = GS_MARM-HOEHE .
    LS_UNITSOFMEASURE-UNIT_DIM = GS_MARM-MEABM  .
    LS_UNITSOFMEASURE-VOLUME = GS_MARM-VOLUM .

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = GS_MARM-VOLEH
        LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = LS_UNITSOFMEASURE-VOLUMEUNIT
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    LS_UNITSOFMEASURE-NUMERATOR   =   GS_MARM-UMREZ .
    LS_UNITSOFMEASURE-DENOMINATR =   GS_MARM-UMREN .
    APPEND LS_UNITSOFMEASURE TO LT_UNITSOFMEASURE .

    CLEAR: LS_UNITSOFMEASUREX.
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = GS_MARM-MEINH
        LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = LS_UNITSOFMEASUREX-ALT_UNIT
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = GS_MARM-MEINH
        LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = LS_UNITSOFMEASUREX-ALT_UNIT_ISO
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LS_UNITSOFMEASUREX-GROSS_WT = 'X' .
    LS_UNITSOFMEASUREX-EAN_UPC = 'X' .
    LS_UNITSOFMEASUREX-EAN_CAT = 'X' .
    LS_UNITSOFMEASUREX-LENGTH =  'X' .
    LS_UNITSOFMEASUREX-WIDTH =  'X' .
    LS_UNITSOFMEASUREX-HEIGHT = 'X' .
    LS_UNITSOFMEASUREX-UNIT_DIM = 'X' .
    LS_UNITSOFMEASUREX-VOLUME =  'X' .
    LS_UNITSOFMEASUREX-VOLUMEUNIT =  'X' .
    LS_UNITSOFMEASUREX-NUMERATOR   =  'X' .
    LS_UNITSOFMEASUREX-DENOMINATR =    'X'.
    LS_UNITSOFMEASUREX-UNIT_OF_WT = 'X' .
    APPEND LS_UNITSOFMEASUREX TO LT_UNITSOFMEASUREX .
    CLEAR LS_INTERNATIONALARTNOS .
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = GS_MARM-MEINH
        LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = LS_INTERNATIONALARTNOS-UNIT
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LS_INTERNATIONALARTNOS-UNIT_ISO = LS_INTERNATIONALARTNOS-UNIT .
    LS_INTERNATIONALARTNOS-EAN_UPC  = GS_MARM-EAN11 .
    LS_INTERNATIONALARTNOS-EAN_CAT  = GS_MARM-NUMTP  .
    LS_INTERNATIONALARTNOS-DEL_FLAG = SPACE .
    APPEND LS_INTERNATIONALARTNOS TO LT_INTERNATIONALARTNOS .
  ENDLOOP.
*默认字段
  CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
      HEADDATA             = WA_BAPIMATHEAD
      CLIENTDATA           = WA_CLIENTDATA
      CLIENTDATAX          = WA_CLIENTDATAX
      PLANTDATA            = WA_PLANTDATA
      PLANTDATAX           = WA_PLANTDATAX
      STORAGELOCATIONDATA  = WA_BAPI_MARD
      STORAGELOCATIONDATAX = WA_BAPI_MARDX
      VALUATIONDATA        = WA_BAPI_MBEW
      VALUATIONDATAX       = WA_BAPI_MBEWX
      WAREHOUSENUMBERDATA  = WA_BAPI_MLGN
      WAREHOUSENUMBERDATAX = WA_BAPI_MLGNX
      SALESDATA            = WA_BAPI_MVKE
      SALESDATAX           = WA_BAPI_MVKEX
      STORAGETYPEDATA      = WA_BAPI_MLGT
      STORAGETYPEDATAX     = WA_BAPI_MLGTX
    IMPORTING
      RETURN               = WA_BAPIRET2
    TABLES
      MATERIALDESCRIPTION  = GT_DESCRIPTION
      TAXCLASSIFICATIONS   = I_TAXCLASSIFICATIONS[]
      UNITSOFMEASURE       = LT_UNITSOFMEASURE
      UNITSOFMEASUREX      = LT_UNITSOFMEASUREX
      INTERNATIONALARTNOS  = LT_INTERNATIONALARTNOS
      EXTENSIONIN           =   LT_BAPIPAREX
      EXTENSIONINX         = LT_BAPIPAREXX
      RETURNMESSAGES       = I_BAPI_MATRETURN2[].
  LOOP AT I_BAPI_MATRETURN2 WHERE TYPE CA 'EAX'.
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        MSGID               = I_BAPI_MATRETURN2-ID
        MSGNR               = I_BAPI_MATRETURN2-NUMBER
        MSGV1               = I_BAPI_MATRETURN2-MESSAGE_V1
        MSGV2               = I_BAPI_MATRETURN2-MESSAGE_V2
        MSGV3               = I_BAPI_MATRETURN2-MESSAGE_V3
        MSGV4               = I_BAPI_MATRETURN2-MESSAGE_V4
      IMPORTING
        MESSAGE_TEXT_OUTPUT = LV_MESSAGE.

    LV_FLAG = 'X'.
    CONCATENATE LV_ALL_MESSAGE LV_MESSAGE INTO LV_ALL_MESSAGE .
    LV_FLAG = 'X'.
  ENDLOOP.
  IF LV_FLAG IS INITIAL .
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'
*     IMPORTING
*       RETURN        =
      .
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
*   IMPORTING
*     RETURN        =
      .
    CONCATENATE  GS_CUST-MSGTX  'EAN' GS_MARC-WERKS '操作失败:'LV_ALL_MESSAGE  INTO GS_CUST-MSGTX .
  ENDIF.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值