使用 BAPI_GOODSMVT_CREATE创建带“E"特殊库存标识的物料凭证时,一定要记得物料号要补齐0,废话不多说,直接上代码吧。我这里使用移动类型为561 E,所以
goodsmvt_code
-
gm_code
=
'05'
.(也就是MB1C)。经过S4的测试机测试,成功产生物料凭证,仅供参考。
REPORT
ztest.
*BAPI测试
DATA: goodsmvt_header
TYPE
bapi2017_gm_head_01,
goodsmvt_code
TYPE
bapi2017_gm_code.
DATA: lt_itab
TYPE
TABLE
OF
bapi2017_gm_item_create,
ls_itab
TYPE
bapi2017_gm_item_create.
DATA: lt_return
TYPE
TABLE
OF
bapiret2,
ls_return
TYPE
bapiret2.
DATA:goodsmvt_headret TYPE
bapi2017_gm_head_ret.
DATA: ls_materialdocument
TYPE
bapi2017_gm_head_ret-mat_doc.
DATA:matdocumentyear TYPE
bapi2017_gm_head_ret-doc_year.
START-OF-SELECTION.
goodsmvt_header-pstng_date
=
sy-datum.
goodsmvt_header-doc_date
=
sy-datum.
goodsmvt_header-pr_uname
=
sy-uname.
goodsmvt_code-gm_code
=
'05'.
*----------行项目赋值--------------------
ls_itab-material
=
'820000005'.
"物料号
CALL
FUNCTION
'CONVERSION_EXIT_MATN1_INPUT' ”补齐物料号的前导0
EXPORTING
input
=
ls_itab-material
IMPORTING
output
=
ls_itab-material
*
EXCEPTIONS
*
LENGTH_ERROR
=
1
*
OTHERS
=
2
.
IF
sy-subrc
<>
0.
* Implement
suitable
error
handling
here
ENDIF.
ls_itab-plant
=
'1010'.
"工厂
ls_itab-stge_loc
=
'5004'.
"库存地点
ls_itab-move_type
=
'561'.
"移动类型
ls_itab-spec_stock
=
'E'.
"特殊库存标识
ls_itab-val_sales_ord
=
'690000055'.
"销售订单
CALL
FUNCTION
'CONVERSION_EXIT_ALPHA_INPUT' "补齐销售订单的前导0
EXPORTING
input
=
ls_itab-val_sales_ord
IMPORTING
output
=
ls_itab-val_sales_ord.
ls_itab-val_s_ord_item
=
'10'.
"销售订单行项
CALL
FUNCTION
'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input
=
ls_itab-val_s_ord_item
IMPORTING
output
=
ls_itab-val_s_ord_item.
ls_itab-entry_qnt
=
'1'.
"数量
*
ls_itab-entry_uom
=
'PC'.
"单位
SELECT
SINGLE
meins "单位有可能和你见到的不一样,干脆直接从mara表中获取吧
INTO
ls_itab-entry_uom
FROM
mara
WHERE
matnr
=
ls_itab-material.
APPEND
ls_itab
TO
lt_itab.
CALL
FUNCTION
'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header
=
goodsmvt_header
goodsmvt_code
=
goodsmvt_code
*
TESTRUN
=
'
'
*
GOODSMVT_REF_EWM
=
IMPORTING
goodsmvt_headret
=
goodsmvt_headret
materialdocument
=
ls_materialdocument
matdocumentyear
=
matdocumentyear
TABLES
goodsmvt_item
=
lt_itab
*
GOODSMVT_SERIALNUMBER
=
return
=
lt_return
*
GOODSMVT_SERV_PART_DATA
=
*
EXTENSIONIN
=
.
IF
sy-subrc
=
0.
CALL
FUNCTION
'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait
=
'X'
*
IMPORTING
*
RETURN
=
.
WRITE:
/
'成功!'.
ENDIF.
*BAPI测试
DATA:
DATA:
DATA:
DATA:goodsmvt_headret
DATA:
DATA:matdocumentyear
START-OF-SELECTION.
*----------行项目赋值--------------------
*
*
*
*
*
*
*
*
*
*
*
*