您的位置:首页 > 编程语言 > Go语言

ABAP:BAPI_GOODSMVT_CREATE 根据预留单 物料移动 MB1B

2011-10-16 09:04 453 查看
这几天做根据预留单执行MB1B生成物料移动凭证,开始用bapi调试,参数输入都正确但是就是没有return的正确返回值,只是能返回一个物料凭证号,如果有错误的时候就会报错E信息.然后在commit后,终于能更正确生成物料号了.

所以有些sap中的bapi return的返回值是不一定都能返回正误信息的.
具体调试代码如下,可以做个参考,MB1B的code是04.而且如果是根据预留单,
切记将关联单号写在reserv_no,res_item中.

DATA: trqty(13).

DATA: msgtext TYPE bapi_msg.

DATA: l_oid_miscdl TYPE oid_miscdl,

itab TYPE zecst0003,

l_materialdocument type BAPI2017_GM_HEAD_RET-MAT_DOC.

* REFRESH it_message[].

DATA: gdsmt_header LIKE bapi2017_gm_head_01.

DATA: gdsmt_code LIKE bapi2017_gm_code.

DATA: gdsmt_item LIKE bapi2017_gm_item_create OCCURS 0 WITH HEADER LINE.

DATA: return LIKE bapiret2 OCCURS 0.

CLEAR: gdsmt_header, gdsmt_code, gdsmt_item, gdsmt_item[], return.

* Setup BAPI header data.

gdsmt_header-pstng_date = sy-datum.

* gdsmt_header-ref_doc_no = sy-datum.

gdsmt_header-doc_date = sy-datum.

gdsmt_header-pr_uname = sy-uname.

gdsmt_code-gm_code = '04'. "01 - MB01 -

* Write 101 movement to table.

LOOP AT i_ltresb INTO itab.

MOVE '301' TO gdsmt_item-move_type.

MOVE itab-matnr TO gdsmt_item-material.

MOVE itab-erfmg TO gdsmt_item-entry_qnt.

MOVE itab-erfme TO gdsmt_item-entry_uom.

MOVE 'XXXX' TO gdsmt_item-plant.

MOVE itab-lgort TO gdsmt_item-stge_loc.

MOVE itab-rsnum TO gdsmt_item-reserv_no.

MOVE itab-rspos TO gdsmt_item-res_item.

* MOVE 'X' TO gdsmt_item-withdrawn.

MOVE 'OWN' TO gdsmt_item-batch.

* MOVE itab- TO gdsmt_item-move_plant.

* MOVE 'B' TO gdsmt_item-mvt_ind.

* move 'X' to gdsmt_item-no_more_gr. "是否標識完成收貨

APPEND gdsmt_item.

ENDLOOP.

IF NOT gdsmt_item[] IS INITIAL.

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'

EXPORTING

goodsmvt_header = gdsmt_header

goodsmvt_code = gdsmt_code

IMPORTING

materialdocument = l_materialdocument

TABLES

goodsmvt_item = gdsmt_item

return = return.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .

ENDIF.

其中 gm_code 與 Tcode對應如下:

01 -- MB01

02 -- MB31

03 -- MB1A

04 -- MB1B

05 -- MB1C

06 -- MB11

07 -- MB04
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: