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

BAPI_GOODSMVT_CREATE only first line item is executed

Former Member
0 Likes
1,677

Hi Experts,

Im using the BAPI_GOODSMVT_CREATE, I'm passing ALL line items to be executed. However only the first line item is being created and the other line items are ignored. What should be the correct usage of the said BAPI. ? Thanks so much!

Best Regards,

Kaizer

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,082

Hi

Call Bapi like below...

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'

EXPORTING

goodsmvt_header = g_r_header

goodsmvt_code = '01'

IMPORTING

materialdocument = g_f_doc

TABLES

goodsmvt_item = g_t_goodsmvt

return = g_t_return

.

*-----Commit the BAPI

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

Hope it helps

Praveen

Hi Experts,

Im using the BAPI_GOODSMVT_CREATE, I'm passing ALL line items to be executed. However only the first line item is being created and the other line items are ignored. What should be the correct usage of the said BAPI. ? Thanks so much!

Best Regards,

Kaizer

4 REPLIES 4
Read only

Former Member
0 Likes
1,082

BAPI_GOODSMVT_CREATE to post Goods Movement

The following is an abap program making used of the BAPI function BAPI_GOODSMVT_CREATE to do Goods Receipts for Purchase Order after importing the data from an external system.

*

  • BAPI TO Upload Inventory Data

*

  • 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.

*--- End of Program

Or

I guess you are trying to tell that you need to populate fields which are added in the item table through Append structure.If that is the case then all you need is to populate the "extensionin" field in the tables tab of the FM "BAPI_GOODSMVT_CREATE",here you need to specify the name of the include structure and its values.Hope this helps.

Reward points..

Read only

Former Member
0 Likes
1,082

Hi Kurtz,

After bapi use FM

'BAPI_TRANSACTION_COMMIT'

your problem will be solved,

Reward if it helps,

Regards,

Talwinder

Read only

Former Member
0 Likes
1,083

Hi

Call Bapi like below...

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'

EXPORTING

goodsmvt_header = g_r_header

goodsmvt_code = '01'

IMPORTING

materialdocument = g_f_doc

TABLES

goodsmvt_item = g_t_goodsmvt

return = g_t_return

.

*-----Commit the BAPI

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

Hope it helps

Praveen

Read only

Former Member
0 Likes
1,082

Hi,

I'm experiencing exactly the same problem.

It only process the first, but returns an error and does not generate the document number.

I've tried with the commit as well, but still no luck.

Anyway, how do we know the document number after the commit if it fails because of the items ?