SAP ABAP 费用采购订单验

METHOD zii_si_mmi016_s4_ib_syn~si_mmi016_s4_ib_syn.
*** **** INSERT IMPLEMENTATION HERE **** ***

DATA: ls_item_req_header TYPE zdt_mmi016_s4_req_head.
DATA: lt_item_req_item TYPE zdt_mmi016_s4_req_item_tab,
      ls_item_req_item LIKE LINE OF lt_item_req_item.

DATA:lv_error.
DATA:lt_ztmm006 TYPE TABLE OF ztmm006.
DATA:ls_ztmm006 TYPE ztmm006.
DATA:lv_xh TYPE ztmm006-xh.
DATA:lv_xhitem TYPE ztmm006-xhitem.

DATA goodsmvt_header TYPE bapi2017_gm_head_01.
DATA goodsmvt_code TYPE bapi2017_gm_code.
DATA materialdocument TYPE bapi2017_gm_head_ret-mat_doc.
DATA matdocumentyear TYPE bapi2017_gm_head_ret-doc_year.
DATA goodsmvt_item TYPE TABLE OF bapi2017_gm_item_create.
DATA ls_goodsmvt_item TYPE bapi2017_gm_item_create.
DATA return TYPE TABLE OF bapiret2.
DATA ls_return TYPE bapiret2.
DATA:lw_txz01 TYPE ekpo-txz01.

REFRESH:goodsmvt_item,return,lt_item_req_item,lt_ztmm006.
CLEAR:ls_item_req_header,goodsmvt_header,materialdocument,matdocumentyear,lv_error,lv_xh,lv_xhitem.

ls_item_req_header = input-mt_mmi016_s4_req-head.
lt_item_req_item = input-mt_mmi016_s4_req-item.

goodsmvt_header-pstng_date = ls_item_req_header-budat.
goodsmvt_header-doc_date = ls_item_req_header-doc_date.
goodsmvt_header-pr_uname = sy-uname.
goodsmvt_header-header_txt = ls_item_req_header-zoaid.

goodsmvt_code = '01'.

LOOP AT lt_item_req_item INTO ls_item_req_item.
  CLEAR:ls_goodsmvt_item.
  ls_goodsmvt_item-move_type = '101'. "移动类型
  ls_goodsmvt_item-po_number = |{ ls_item_req_item-ebeln ALPHA = IN }|.         "采购凭证号
  ls_goodsmvt_item-po_item   = |{ ls_item_req_item-ebelp ALPHA = IN }| .         "采购凭证的项目编号
  ls_goodsmvt_item-mvt_ind   = 'B'.            "移动标识  ’B‘为采购收货  ’F ' 生产收货
  ls_goodsmvt_item-entry_qnt = ls_item_req_item-menge.
  CLEAR lw_txz01.                                                                                                                   "20230315-yuchengyi-add
  SELECT SINGLE txz01 INTO lw_txz01 FROM ekpo WHERE ebeln = ls_goodsmvt_item-po_number AND ebelp = ls_goodsmvt_item-po_item.        "20230315-yuchengyi-add
  ls_goodsmvt_item-item_text = ls_item_req_header-zoaid && '//' && lw_txz01.                                                        "20230315-yuchengyi-add

  APPEND ls_goodsmvt_item TO goodsmvt_item.

ENDLOOP.

IF goodsmvt_item[] IS NOT INITIAL.

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      goodsmvt_header  = goodsmvt_header
      goodsmvt_code    = goodsmvt_code
    IMPORTING
      materialdocument = materialdocument
      matdocumentyear  = matdocumentyear
    TABLES
      goodsmvt_item    = goodsmvt_item[]
      return           = return[].

  LOOP AT return INTO ls_return WHERE type = 'E'.
    lv_error = 'E'.

    output-mt_mmi016_s4_res-ztype = 'E'.
    output-mt_mmi016_s4_res-mess = output-mt_mmi016_s4_res-ztype && '/' && ls_return-message.

  ENDLOOP.

  IF lv_error = 'E'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.

    output-mt_mmi016_s4_res-ztype = 'S'.
    output-mt_mmi016_s4_res-mess  = '验收成功,物料凭证:' && materialdocument.
    output-mt_mmi016_s4_res-mblnr = materialdocument.
    output-mt_mmi016_s4_res-gjahr = matdocumentyear.

  ENDIF.

ENDIF.

SELECT MAX( xh ) INTO lv_xh FROM ztmm006.
ADD 1 TO lv_xh.

LOOP AT lt_item_req_item INTO ls_item_req_item.
  ADD 1 TO lv_xhitem.
  CLEAR:ls_ztmm006.
  ls_ztmm006-xh = lv_xh.
  ls_ztmm006-xhitem = lv_xhitem.
  ls_ztmm006-zoaid = ls_item_req_header-zoaid.
  ls_ztmm006-budat   = ls_item_req_header-budat.
  ls_ztmm006-doc_date   = ls_item_req_header-doc_date.
  ls_ztmm006-zoaitem = ls_item_req_item-zoaitem.
  ls_ztmm006-ebeln = ls_item_req_item-ebeln.
  ls_ztmm006-ebelp = ls_item_req_item-ebelp.
  ls_ztmm006-menge = ls_item_req_item-menge.
  ls_ztmm006-meins = ls_item_req_item-meins.
  ls_ztmm006-ztype = output-mt_mmi016_s4_res-ztype.
  ls_ztmm006-mess = output-mt_mmi016_s4_res-mess.
  ls_ztmm006-mblnr = materialdocument.
  ls_ztmm006-gjahr = matdocumentyear.
  APPEND ls_ztmm006 TO lt_ztmm006.
ENDLOOP.

IF lt_ztmm006 IS NOT INITIAL.
  MODIFY ztmm006 FROM TABLE lt_ztmm006.
ENDIF.

ENDMETHOD.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值