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(  ).

Comments are closed.

Post Navigation