进行退货后产生的物料凭证MvT也分两种:
如果参照的收货物料凭证的MvT 101或105,则退货物料凭证的MvT是122;
如果参照的是收货冻结的物料凭证(MvT 103)退货,生成的退货物料凭证MvT是124,做此项操作时不需要输入工厂
本文案例只针对105做退货物料凭证MvT122的参数过账
DATA: lt_item TYPE TABLE OF bapi2017_gm_item_create, lt_return TYPE TABLE OF bapiret2, ls_item TYPE bapi2017_gm_item_create, ls_header TYPE bapi2017_gm_head_01, ls_code TYPE bapi2017_gm_code, lv_mblnr TYPE mblnr, lv_mjahr TYPE mjahr. ls_code = '01'. "T158G-GMCODE ls_header-pstng_date = sy-datum. ls_header-doc_date = sy-datum. "退料 ls_item-material = '1000000501'. "物料 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = ls_item-material IMPORTING output = ls_item-material. ls_item-vendor = '008200111'. "供应商 ls_item-po_number = '3000000209'."采购单 ls_item-po_item = '10'."采购单行项目 ls_item-ref_doc = '6000006596'."参考的采购凭证 此处为105入库凭证中的参考凭证LFBNR 的值 ls_item-ref_doc_IT = '1'. ls_item-entry_qnt = '1'. "数量 ls_item-entry_uom = 'PCS'. "单位 ls_item-plant = '1000'. "工厂 ls_item-stge_loc = '1000'. "库位 ls_item-move_type = '122'. "移动类型 ls_item-mvt_ind = 'B'. LS_ITEM-batch = '2300010201'."批次 ls_item-move_reas = '0101'."退货原因 APPEND ls_item TO lt_item. CLEAR ls_item. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = ls_header goodsmvt_code = ls_code IMPORTING * goodsmvt_headret = materialdocument = lv_mblnr matdocumentyear = lv_mjahr TABLES goodsmvt_item = lt_item return = lt_return. READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc NE 0. COMMIT WORK AND WAIT. ELSE. ROLLBACK WORK. ENDIF. cl_demo_output=>write( lv_mblnr ). cl_demo_output=>write( lv_mjahr ). cl_demo_output=>write( lt_return ). cl_demo_output=>display( ).