对已发料的订单进行做262冲销部分物料。
业务场景:对于绝大部分企业来见,某些物料的BOM不是100%的准确性,在做生成订单发料生产后,发现有部分物料是多余的,需要将这些物料返回到仓库中,在业务场景中多数称之为:订单预料返仓。区别于直接冲销261物料凭证,仅是对订单的物料做部分冲销。虽然可以做冲销物料261发料凭证,然后重新做261发料。保证工单投料的准确性。如果说在SAP操作还算比较简单,使用外部系统的话就比较复杂了。
SAP针对这样的业务场景:建议直接做对订单做262冲销。T-CODE: MIGO 或者 MB1A
使用BAPI‘BAPI_GOODSMVT_CREATE’进行过账代码如下:
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 = '03'. "T158G-GMCODE ls_header-pstng_date = sy-datum. ls_header-doc_date = sy-datum. "退料 ls_item-move_type = '262'. "移动类型 ls_item-xstob ='X'. "冲销移动类型标识符 ls_item-material = '2060064890'. "物料 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = ls_item-material IMPORTING output = ls_item-material. ls_item-entry_qnt = '1'. "数量 ls_item-entry_uom = 'PCS'. "单位 ls_item-plant = '1000'. "工厂 ls_item-stge_loc = '2000'. "库位 ls_item-reserv_no = '0000015664'. "预留号 ls_item-res_item = '0006'. "预留行 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( ).