‎2008 Dec 18 6:18 PM
Hello,
I'd like to move a product from one storage location to another and I think the BAPI GoodsMovement.CreateFromData could be the right one for this purpose.
In The SAP Frontend I used the Transaktion MIGO - Goods Movement with these settings:
Code: Transfer Posting
Move Type: 301 (transfer plant to plant)
[General]
Document Date: 19.12.2008
Posting Date: 19.12.2008
[From]
Material: XY_05
Plant: 1000
Stor. Loc.: 0002
Unit of Entry: 1 PC
[Dest]
Plant: 1000
Stor. Loc.: 0001
And everything Works fine using the Frontend.
Now I'd like to do this using BAPI. So I opened the method GoodsMovement.CreateFromData and hit "Test/Run" (by the way, it's the first time I am working with BAPIs).
In the section "Import Parameters" I entered:
[GOODSMVT_HEADER].PSTNG_DATE - 19.12.2008
[GOODSMVT_HEADER].DOC_DATE - 19.12.2008
[GOODSMVT_CODE].GM - 04 (-> Transfer Posting)
In "Tables":
[GOODSMVT_ITEM].MATERIAL - XY_05
[GOODSMVT_ITEM].PLANT - 1000
[GOODSMVT_ITEM].STGE_LOC - 0002
[GOODSMVT_ITEM].MOVE_TYPE - 301
[GOODSMVT_ITEM].ENTRY_QNT - 1
[GOODSMVT_ITEM].MOVE_MAT - XY_05
[GOODSMVT_ITEM].MOVE_PLANT - 1000
[GOODSMVT_ITEM].MOVE_STLOC - 0001
After executing I get an incremented Material-Document number in the section "Export parameters". But when I try to open the Material Document using transaction MB03, SAP says that this document doesn't exist. And actually there happend no transfer - every item is still on its old location.
But the BAPI seems to work basically, because when I enter the quantity 6 to move, and there are just 4 items left, it fails and says that there are 2 items under.
I don't know why he doesn't change the values in the database. Maybe I need something like a commit?...
Thanks a lot for your help!
HP
‎2008 Dec 18 6:23 PM
Hello,
Yes you would need to ensure you executed 'BAPI_TRANSACTION_COMMIT'.
Regards,
C
‎2008 Dec 22 2:30 PM
Oh ok, thank you for your reply! But now, I got another problem... I released the GOODS_MOVEMENT_CREATE and BAPI_TRANSACTION_COMMIT function as Web Services in one group.
But when I call the GOOD_MOVEMENT API first, and then BAPI_TRANSACTION_COMMIT afterwards as a different service, there will happen nothing. I think this is because I have only a stateless service. In my creation wizard for the Web Service I found no option to create a stateful service.
I found this thread , but I cannot follow his solution at the end.
Is there another way how I can commit my transaction?
‎2008 Dec 25 12:56 PM
check this
*
*
GMCODE Table T158G - 01 - MB01 - Goods Receipts for Purchase Order
02 - MB31 - Goods Receipts for Prod Order
03 - MB1A - Goods Issue
04 - MB1B - Transfer Posting
05 - MB1C - Enter Other Goods Receipt
06 - MB11
*
Domain: KZBEW - Movement Indicator
Goods movement w/o reference
B - Goods movement for purchase order
F - Goods movement for production order
L - Goods movement for delivery note
K - Goods movement for kanban requirement (WM - internal only)
O - Subsequent adjustment of "material-provided" consumption
W - Subsequent adjustment of proportion/product unit material
*
report zbapi_goodsmovement.
parameters: p-file like rlgrap-filename default
'c:\sapdata\TEST.txt'.
parameters: e-file like rlgrap-filename default
'c:\sapdata\gdsmvterror.txt'.
parameters: xpost like sy-datum default sy-datum.
data: begin of gmhead.
include structure bapi2017_gm_head_01.
data: end of gmhead.
data: begin of gmcode.
include structure bapi2017_gm_code.
data: end of gmcode.
data: begin of mthead.
include structure bapi2017_gm_head_ret.
data: end of mthead.
data: begin of itab occurs 100.
include structure bapi2017_gm_item_create.
data: end of itab.
data: begin of errmsg occurs 10.
include structure bapiret2.
data: end of errmsg.
data: wmenge like iseg-menge,
errflag.
data: begin of pcitab occurs 100,
ext_doc(10), "External Document Number
mvt_type(3), "Movement Type
doc_date(8), "Document Date
post_date(8), "Posting Date
plant(4), "Plant
material(18), "Material Number
qty(13), "Quantity
recv_loc(4), "Receiving Location
issue_loc(4), "Issuing Location
pur_doc(10), "Purchase Document No
po_item(3), "Purchase Document Item No
del_no(10), "Delivery Purchase Order Number
del_item(3), "Delivery Item
prod_doc(10), "Production Document No
scrap_reason(10), "Scrap Reason
upd_sta(1), "Update Status
end of pcitab.
call function 'WS_UPLOAD'
exporting
filename = p-file
filetype = 'DAT'
IMPORTING
FILELENGTH =
tables
data_tab = pcitab
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
OTHERS = 6
.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
exit.
endif.
gmhead-pstng_date = sy-datum.
gmhead-doc_date = sy-datum.
gmhead-pr_uname = sy-uname.
gmcode-gm_code = '01'. "01 - MB01 - Goods Receipts for Purchase Order
loop at pcitab.
itab-move_type = pcitab-mvt_type.
itab-mvt_ind = 'B'.
itab-plant = pcitab-plant.
itab-material = pcitab-material.
itab-entry_qnt = pcitab-qty.
itab-move_stloc = pcitab-recv_loc.
itab-stge_loc = pcitab-issue_loc.
itab-po_number = pcitab-pur_doc.
itab-po_item = pcitab-po_item.
concatenate pcitab-del_no pcitab-del_item into itab-item_text.
itab-move_reas = pcitab-scrap_reason.
append itab.
endloop.
loop at itab.
write:/ itab-material, itab-plant, itab-stge_loc,
itab-move_type, itab-entry_qnt, itab-entry_uom,
itab-entry_uom_iso, itab-po_number, itab-po_item,
pcitab-ext_doc.
endloop.
call function 'BAPI_GOODSMVT_CREATE'
exporting
goodsmvt_header = gmhead
goodsmvt_code = gmcode
TESTRUN = ' '
IMPORTING
goodsmvt_headret = mthead
MATERIALDOCUMENT =
MATDOCUMENTYEAR =
tables
goodsmvt_item = itab
GOODSMVT_SERIALNUMBER =
return = errmsg
.
clear errflag.
loop at errmsg.
if errmsg-type eq 'E'.
write:/'Error in function', errmsg-message.
errflag = 'X'.
else.
write:/ errmsg-message.
endif.
endloop.
if errflag is initial.
commit work and wait.
if sy-subrc ne 0.
write:/ 'Error in updating'.
exit.
else.
write:/ mthead-mat_doc, mthead-doc_year.
perform upd_sta.
endif.
endif.
----
FORM UPD_STA *
----
........ *
----
form upd_sta.
loop at pcitab.
pcitab-upd_sta = 'X'.
modify pcitab.
endloop.
call function 'WS_DOWNLOAD'
exporting
filename = p-file
filetype = 'DAT'
IMPORTING
FILELENGTH =
tables
data_tab = pcitab
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
OTHERS = 6
.
endform.