Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Using BAPI GoodsMovement.CreateFromData

Former Member
0 Likes
1,767

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

3 REPLIES 3
Read only

Former Member
0 Likes
972

Hello,

Yes you would need to ensure you executed 'BAPI_TRANSACTION_COMMIT'.

Regards,

C

Read only

Former Member
0 Likes
972

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?

Read only

Former Member
0 Likes
972

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.