2008 Nov 27 5:07 AM
Hi All,
I have to do PGI(post Goods issue ) in Vl02N .I have the outbound delivery number and the actual GI date to do that .I did BDC now ,its working fine .The client now wants a BAPI which should do the PGI.
Can you suggest me any BAPI which serves my purpose .
I saw BAPI_GOODSMVT_CREATE,but its not working for me .
Need your comments on the same .
Thanks .
2008 Nov 27 5:38 AM
2008 Nov 27 5:38 AM
hi ,
here is a Sample code where i used BAPI_GOODSMVT_CREATE ( i used a diffrenent Movment Type )
adjest the Code as per your Reuirement .
TYPES : BEGIN OF ty_master,
zcur_date TYPE fmfgapass-budat,
zdoc_date TYPE mkpf-bldat,
bill_of_lading TYPE c LENGTH 16,
zindex TYPE c LENGTH 16,
zsupplier TYPE c LENGTH 25,
zmatnr TYPE c LENGTH 18,
zplant TYPE c LENGTH 4,
zlocation TYPE c LENGTH 4,
move_type TYPE c LENGTH 3,
stck_type TYPE c LENGTH 1,
zquantity TYPE p LENGTH 13 DECIMALS 3 ,
zunit TYPE c LENGTH 3,
zpo_number TYPE c LENGTH 10,
zline TYPE n LENGTH 5,
mvt_ind TYPE c LENGTH 1,
serialno_auto_numberassignment TYPE c LENGTH 1,
zuser_id TYPE c LENGTH 10,
END OF ty_master.
DATA: ty_header TYPE bapi2017_gm_head_01 ,
lc_mat_doc TYPE bapi2017_gm_head_ret-mat_doc,
lt_item TYPE STANDARD TABLE OF bapi2017_gm_item_create WITH HEADER LINE,
lt_serial TYPE STANDARD TABLE OF bapi2017_gm_serialnumber WITH HEADER LINE,
lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.
*--- Interla Tables User For User Programme
DATA : it_master TYPE STANDARD TABLE OF ty_master.
DATA : wa_master TYPE ty_master.
*--- Constans to be use for bapi
DATA : lw_code TYPE bapi2017_gm_code VALUE '01'.
select all the Delivery No's into an Internal Table "it_master
CLEAR wa_master.
CLEAR lt_item.
*- Loop The master Table and fill the BAPI relavant item and master table *-
LOOP AT it_master INTO wa_master.
*--- Header Data To BAPI
ty_header-pstng_date = wa_master-zcur_date .
ty_header-doc_date = wa_master-zdoc_date.
ty_header-ref_doc_no = wa_master-zindex.
ty_header-header_txt = wa_master-zsupplier.
*--- Item Data To BAPI
lt_item-material = wa_master-zmatnr.
lt_item-plant = wa_master-zplant.
lt_item-stge_loc = wa_master-zlocation .
lt_item-move_type = '101'.
lt_item-stck_type = 'F'.
lt_item-entry_qnt = wa_master-zquantity.
lt_item-entry_uom = wa_master-zunit.
lt_item-po_number = wa_master-zpo_number.
lt_item-po_item = wa_master-zline.
lt_item-mvt_ind = 'B'.
lt_item-serialno_auto_numberassignment = 'X'.
APPEND lt_item.
REFRESH lt_return.
CLEAR lc_mat_doc.
*--- Call the BAPI with the Parameters
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ty_header
goodsmvt_code = lw_code
IMPORTING
materialdocument = lc_mat_doc
TABLES
goodsmvt_item = lt_item[]
goodsmvt_serialnumber = lt_serial[]
return = lt_return.
IF lt_return[] IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
endloop.
Hope this will Help You ,
Br,
Dilum Alawatte
2008 Nov 27 12:33 PM
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.