SAP BAPI FOR 生产工单入库MIGO(101/102)

生产工单101入库以及102取消入库

BAPI: BAPI_GOODSMVT_CREATE

代码示例:

FUNCTION zfm_pp_production_order_rk.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IS_DATA) TYPE  ZPPS_501A
*"  EXPORTING
*"     REFERENCE(ET_DATA) TYPE  ZPPTT_501B
*"----------------------------------------------------------------------
  DATA: ls_item     TYPE zpps_501a_item,
        lt_item     TYPE TABLE OF zpps_501a_item,
        gs_header   TYPE bapi2017_gm_head_01,
        gv_code     TYPE bapi2017_gm_code,
        gt_item     TYPE TABLE OF bapi2017_gm_item_create,
        gs_item     TYPE bapi2017_gm_item_create,
        gt_return   TYPE TABLE OF bapiret2,
        gs_return   TYPE bapiret2,
        gv_mat_doc  TYPE bapi2017_gm_head_ret-mat_doc,
        gv_mat_year TYPE bapi2017_gm_head_ret-doc_year,
        es_data     TYPE zpps_501b.

  CLEAR: ls_item,
         lt_item,
         gs_header,
         gv_code,
         gt_item,
         gs_item,
         gt_return,
         gs_return,
         gv_mat_doc,
         gv_mat_year,
         es_data.

  LOOP AT is_data-item[] INTO ls_item.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = ls_item-aufnr
      IMPORTING
        output = ls_item-aufnr.

    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      EXPORTING
        input        = ls_item-matnr
      IMPORTING
        output       = ls_item-matnr
      EXCEPTIONS
        length_error = 1
        OTHERS       = 2.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        input          = ls_item-meins
        language       = sy-langu
      IMPORTING
        output         = ls_item-meins
      EXCEPTIONS
        unit_not_found = 1
        OTHERS         = 2.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.

    APPEND ls_item TO lt_item.
    CLEAR: ls_item.
  ENDLOOP.

  "抬头数据
  gs_header-doc_date = is_data-bldat.    "凭证中的凭证日期
  gs_header-pstng_date = is_data-budat.  "凭证中的过帐日期
  gs_header-header_txt = is_data-memos.    "MES操作流水号

  gv_code = '01'.

  "明细行数据
  LOOP AT lt_item INTO ls_item.
    IF is_data-ztype = '1'. "生产下线
      gs_item-move_type = '101'. "移动类型(库存管理)
    ELSEIF is_data-ztype = '2'. "生产退回
      gs_item-move_type = '102'. "移动类型(库存管理)
    ENDIF.

    gs_item-mvt_ind = 'F'. "移动标识
    gs_item-material = ls_item-matnr. "物料
    gs_item-plant = is_data-werks. "工厂
    gs_item-orderid = ls_item-aufnr. "工单
    gs_item-entry_qnt = ls_item-menge. "数量
    gs_item-entry_uom = ls_item-meins. "单位
    gs_item-stge_loc = ls_item-lgort. "库存地点

*    gs_item-batch = '2406130003'.
    APPEND gs_item TO gt_item.
    CLEAR: gs_item.
  ENDLOOP.

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      goodsmvt_header  = gs_header
      goodsmvt_code    = gv_code
*     TESTRUN          = ' '
*     GOODSMVT_REF_EWM =
*     GOODSMVT_PRINT_CTRL           =
    IMPORTING
*     GOODSMVT_HEADRET =
      materialdocument = gv_mat_doc
      matdocumentyear  = gv_mat_year
    TABLES
      goodsmvt_item    = gt_item
*     GOODSMVT_SERIALNUMBER         =
      return           = gt_return
*     GOODSMVT_SERV_PART_DATA       =
*     EXTENSIONIN      =
*     GOODSMVT_ITEM_CWM             =
    .

  LOOP AT gt_return INTO gs_return WHERE type = 'A' OR type  = 'E'.

  ENDLOOP.
  IF sy-subrc = 0.
    es_data-type = 'E'.
    LOOP AT gt_return INTO gs_return WHERE type = 'A' OR type  = 'E'.
      CONCATENATE es_data-message gs_return-message INTO es_data-message SEPARATED BY ';'.
    ENDLOOP.
    APPEND es_data TO et_Data.
    CLEAR: es_data.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    es_data-type = 'S'.
    CONCATENATE '物料凭证' gv_mat_doc gv_mat_year '创建成功.' INTO es_data-message SEPARATED BY space.
    es_data-mblnr = gv_mat_doc.
    es_data-mjahr = gv_mat_year.
    APPEND es_data TO et_data.
    CLEAR: es_data.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
  ENDIF.



ENDFUNCTION.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值