SAP业务对库存进行直接报损的移动类型为551,区别与财务盘盈盘亏移动类型701和702,551可以在前台可见。也可以通过 ABPI_GOODSMVT_CREATE函数进行过账,551可以针对普通库和特殊库存进行处理。文中DEMO只增加了'E'库存和'O'库存两种特殊库存。
MIGO发货路径为:A07 发货 -> R10 其他 和 A01 收货 -> R10其他 这两种类型。
代码如下:
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. "MIGO 发料 A07 发货-> R10 其他 551 过账 "MIGO 收货 A01 收货-> R10 其他 551 过账 ls_code = '03'. "T158G-GMCODE ls_header-pstng_date = sy-datum. ls_header-doc_date = sy-datum. "退料 ls_item-move_type = '551'. "移动类型 "ls_item-xstob ='X'. "冲销移动类型标识符 ls_item-material = '10010042860'. "物料 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 = '4000'. "库位 ls_item-BATCH = 'PH04151333'." 批次 *当特殊库存为E时需要制定SO和项目号 *ls_item-SPEC_STOCK = 'E'. *ls_item-VAL_SALES_ORD = '0023000102'. *ls_item-VAL_S_ORD_ITEM = '0010'. *当特殊库存为O时需要指定供应商 "ls_item-SPEC_STOCK = 'O'. "ls_item-VENDOR = '0006200002'. 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( ).