生产工单101入库以及102取消入库
BAPI: BAPI_GOODSMVT_CREATE
代码示例:
FUNCTION zfm_pp_production_order_rk.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(IS_DATA) TYPE ZPPS_501A
*" EXPORTING
*" REFERENCE(ET_DATA) TYPE ZPPTT_501B
*"----------------------------------------------------------------------
DATA: ls_item TYPE zpps_501a_item,
lt_item TYPE TABLE OF zpps_501a_item,
gs_header TYPE bapi2017_gm_head_01,
gv_code TYPE bapi2017_gm_code,
gt_item TYPE TABLE OF bapi2017_gm_item_create,
gs_item TYPE bapi2017_gm_item_create,
gt_return TYPE TABLE OF bapiret2,
gs_return TYPE bapiret2,
gv_mat_doc TYPE bapi2017_gm_head_ret-mat_doc,
gv_mat_year TYPE bapi2017_gm_head_ret-doc_year,
es_data TYPE zpps_501b.
CLEAR: ls_item,
lt_item,
gs_header,
gv_code,
gt_item,
gs_item,
gt_return,
gs_return,
gv_mat_doc,
gv_mat_year,
es_data.
LOOP AT is_data-item[] INTO ls_item.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_item-aufnr
IMPORTING
output = ls_item-aufnr.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = ls_item-matnr
IMPORTING
output = ls_item-matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = ls_item-meins
language = sy-langu
IMPORTING
output = ls_item-meins
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
APPEND ls_item TO lt_item.
CLEAR: ls_item.
ENDLOOP.
"抬头数据
gs_header-doc_date = is_data-bldat. "凭证中的凭证日期
gs_header-pstng_date = is_data-budat. "凭证中的过帐日期
gs_header-header_txt = is_data-memos. "MES操作流水号
gv_code = '01'.
"明细行数据
LOOP AT lt_item INTO ls_item.
IF is_data-ztype = '1'. "生产下线
gs_item-move_type = '101'. "移动类型(库存管理)
ELSEIF is_data-ztype = '2'. "生产退回
gs_item-move_type = '102'. "移动类型(库存管理)
ENDIF.
gs_item-mvt_ind = 'F'. "移动标识
gs_item-material = ls_item-matnr. "物料
gs_item-plant = is_data-werks. "工厂
gs_item-orderid = ls_item-aufnr. "工单
gs_item-entry_qnt = ls_item-menge. "数量
gs_item-entry_uom = ls_item-meins. "单位
gs_item-stge_loc = ls_item-lgort. "库存地点
* gs_item-batch = '2406130003'.
APPEND gs_item TO gt_item.
CLEAR: gs_item.
ENDLOOP.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = gs_header
goodsmvt_code = gv_code
* TESTRUN = ' '
* GOODSMVT_REF_EWM =
* GOODSMVT_PRINT_CTRL =
IMPORTING
* GOODSMVT_HEADRET =
materialdocument = gv_mat_doc
matdocumentyear = gv_mat_year
TABLES
goodsmvt_item = gt_item
* GOODSMVT_SERIALNUMBER =
return = gt_return
* GOODSMVT_SERV_PART_DATA =
* EXTENSIONIN =
* GOODSMVT_ITEM_CWM =
.
LOOP AT gt_return INTO gs_return WHERE type = 'A' OR type = 'E'.
ENDLOOP.
IF sy-subrc = 0.
es_data-type = 'E'.
LOOP AT gt_return INTO gs_return WHERE type = 'A' OR type = 'E'.
CONCATENATE es_data-message gs_return-message INTO es_data-message SEPARATED BY ';'.
ENDLOOP.
APPEND es_data TO et_Data.
CLEAR: es_data.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
es_data-type = 'S'.
CONCATENATE '物料凭证' gv_mat_doc gv_mat_year '创建成功.' INTO es_data-message SEPARATED BY space.
es_data-mblnr = gv_mat_doc.
es_data-mjahr = gv_mat_year.
APPEND es_data TO et_data.
CLEAR: es_data.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
ENDFUNCTION.