Application Development 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: 

BAPI for Post Goods Issue in VL02N

Former Member
0 Kudos
3,348

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 .

3 REPLIES 3

Former Member
0 Kudos
497

Hi,

Try BAPI_OUTB_DELIVERY_CONFIRM_DEC.

former_member451655
Active Participant
0 Kudos
497

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

Former Member
0 Kudos
497

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.