DEMO1:
REPORT zdemo_mbst.
PARAMETERS p_mblnr TYPE bapi2017_gm_head_02-mat_doc.
PARAMETERS p_ebeln TYPE ebeln.
DATA:lt_ekbe TYPE TABLE OF ekbe.
DATA:ls_ekbe TYPE ekbe.
DATA:lv_mblnr LIKE mseg-mblnr..
DATA:ls_goodsmvt_headret LIKE bapi2017_gm_head_ret.
DATA:lt_return LIKE TABLE OF bapiret2.
DATA:ls_return LIKE bapiret2.
DATA:ls_goodsmvt_pstng_date TYPE bapi2017_gm_head_02-pstng_date.
DATA:ls_goodsmvt_pr_uname TYPE bapi2017_gm_head_01-pr_uname.
CLEAR ls_goodsmvt_headret.
CLEAR lt_return[].
ls_goodsmvt_pstng_date = sy-datum.
ls_goodsmvt_pr_uname = sy-uname.
"根据MIGO收货的采购订单,找到对应的收货凭证
IF p_mblnr IS INITIAL AND p_ebeln IS NOT INITIAL.
SELECT * FROM ekbe INTO TABLE lt_ekbe
WHERE ebeln = p_ebeln AND gjahr = sy-datum(4) AND bwart = '101'.
SORT lt_ekbe BY belnr DESCENDING.
READ TABLE lt_ekbe INTO ls_ekbe INDEX 1.
p_mblnr = ls_ekbe-belnr.
ENDIF.
CALL FUNCTION 'BAPI_GOODSMVT_CANCEL'
EXPORTING
materialdocument = p_mblnr
matdocumentyear = sy-datum(4)
goodsmvt_pstng_date = ls_goodsmvt_pstng_date
goodsmvt_pr_uname = ls_goodsmvt_pr_uname
IMPORTING
goodsmvt_headret = ls_goodsmvt_headret
TABLES
return = lt_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
DEMO2:
DATA: e_companycode TYPE bukrs,
e_asset TYPE bf_anln1,
e_subnumber TYPE bf_anln2,
e_return TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
*&-----冲销
DATA :i_materialdocument TYPE bapi2017_gm_head_02-mat_doc,
i_matdocumentyear TYPE bapi2017_gm_head_02-doc_year,
i_goodsmvt_headret TYPE bapi2017_gm_head_ret.
LOOP AT it_alv INTO wa_alv WHERE box = 'X'.
CLEAR: e_return,i_materialdocument,i_matdocumentyear,i_goodsmvt_headret.
i_materialdocument = wa_alv-mblnr.
i_matdocumentyear = wa_alv-mjahr.
CALL FUNCTION 'BAPI_GOODSMVT_CANCEL'
EXPORTING
materialdocument = i_materialdocument
matdocumentyear = i_matdocumentyear
goodsmvt_pstng_date = sy-datum
" GOODSMVT_PR_UNAME = sy-usnam
IMPORTING
goodsmvt_headret = i_goodsmvt_headret
TABLES
return = e_return
* GOODSMVT_MATDOCITEM =
.
READ TABLE e_return WITH KEY type = 'E'.
IF sy-subrc <> 0.
wa_alv-mblnr = i_goodsmvt_headret-mat_doc.
wa_alv-mjahr = i_goodsmvt_headret-doc_year.
wa_alv-flag = ''.
MODIFY it_alv FROM wa_alv.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
MESSAGE '冲销成功!' TYPE 'S'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .
MESSAGE e_return-message TYPE e_return-type.
ENDIF.
ENDLOOP.