Вы находитесь на странице: 1из 4

Migo using Bapi - 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_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),
mvt_type(3),
doc_date(8),
post_date(8),
plant(4),
material(18),
qty(13),
recv_loc(4),
issue_loc(4),
pur_doc(10),
po_item(3),
del_no(10),
del_item(3),
prod_doc(10),
scrap_reason(10),
upd_sta(1),
end of pcitab.

"External Document Number


"Movement Type
"Document Date
"Posting Date
"Plant
"Material Number
"Quantity
"Receiving Location
"Issuing Location
"Purchase Document No
"Purchase Document Item No
"Delivery Purchase Order Number
"Delivery Item
"Production Document No
"Scrap Reason
"Update Status

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
filetype
IMPORTING
FILELENGTH
tables
data_tab
EXCEPTIONS
FILE_OPEN_ERROR
FILE_READ_ERROR
NO_BATCH

= p-file
= 'DAT'
=
= pcitab
= 1
= 2
= 3

*
*
*

GUI_REFUSE_FILETRANSFER
INVALID_TYPE
OTHERS
.

endform.
*--- End of Program

= 4
= 5
= 6

Вам также может понравиться