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 for PGI

Former Member
0 Likes
12,659

hi guys

does someone know of a BAPI which i can call and pass the delivery number and it will do a PGI for me?

i tried BAPI_GOODSMVT_CREATE but its not working well for me.

please let me know if there is such a BAPI

thanks

1 ACCEPTED SOLUTION
Read only

Former Member
7,227

Hi Sanket,

Use the following piece of code.


  DATA:
    L_VBELN LIKE LIKP-VBELN,
    L_VBKOK LIKE VBKOK,
    L_PROTT LIKE PROTT OCCURS 0 WITH HEADER LINE.

* carry out goods issue
  L_VBKOK-VBELN_VL = L_VBELN.<-- fill this field with your delivery number
  L_VBKOK-WABUC    = 'X'.

  CALL FUNCTION 'WS_DELIVERY_UPDATE'
       EXPORTING
            VBKOK_WA           = L_VBKOK
            SYNCHRON           = 'X'
            NO_MESSAGES_UPDATE = ' '
            UPDATE_PICKING     = 'X'
            COMMIT             = ' '
            DELIVERY           = L_VBELN
            NICHT_SPERREN      = 'X'
       TABLES
            PROT               = L_PROTT
       EXCEPTIONS
            OTHERS             = 0.
  COMMIT WORK AND WAIT.

Please reward and close if it works.

Srinivas

7 REPLIES 7
Read only

Former Member
7,228

Hi Sanket,

Use the following piece of code.


  DATA:
    L_VBELN LIKE LIKP-VBELN,
    L_VBKOK LIKE VBKOK,
    L_PROTT LIKE PROTT OCCURS 0 WITH HEADER LINE.

* carry out goods issue
  L_VBKOK-VBELN_VL = L_VBELN.<-- fill this field with your delivery number
  L_VBKOK-WABUC    = 'X'.

  CALL FUNCTION 'WS_DELIVERY_UPDATE'
       EXPORTING
            VBKOK_WA           = L_VBKOK
            SYNCHRON           = 'X'
            NO_MESSAGES_UPDATE = ' '
            UPDATE_PICKING     = 'X'
            COMMIT             = ' '
            DELIVERY           = L_VBELN
            NICHT_SPERREN      = 'X'
       TABLES
            PROT               = L_PROTT
       EXCEPTIONS
            OTHERS             = 0.
  COMMIT WORK AND WAIT.

Please reward and close if it works.

Srinivas

Read only

0 Likes
7,227

Thanks for your posting.

Read only

Former Member
0 Likes
7,227

hi srinivas

thanks for the code.it worked.i will take care of making it RFC enabled.

thanks once again

Read only

Former Member
0 Likes
7,227

Hi,

I am creating a Delivery with GN_DELIVERY_CREATE...The delivery is created, but the picking quantity is still blank in the Delivery document. When I am using the 'WS_UPDATE_DELIVERY' with the above mentioned code..it is returning with an error message - 'Picking is not done for the line item'. The BAPI works if I update the pciking quantity manualy using VL02N. Is there a way I can directly do both the picking as well as the PGI with this BAPI. Am I missing any import parameters?

Thanks,

Ravi.

Read only

0 Likes
7,227

The picking qty can be specified in the vbpok table

please refer to the code given below

  • Populating the item data

lx_sales_item-ref_doc = l_vbeln.

lx_sales_item-ref_item = c_000010.

lx_sales_item-dlv_qty = fp_l_quantity.

lx_sales_item-sales_unit = fp_afpo-meins.

APPEND lx_sales_item TO li_sales_item.

  • Function Module to create delivery

CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'

EXPORTING

ship_point = l_vstel

IMPORTING

delivery = fp_l_delivery

TABLES

sales_order_items = li_sales_item

return = li_return1.

IF fp_l_delivery IS INITIAL.

  • Error message Delivery not created

MESSAGE e049

ENDIF.

lx_vbkok-vbeln_vl = fp_l_delivery.

lx_vbkok-vbtyp_vl = c_vbtype_j .

lx_vbkok-vbeln = fp_l_delivery.

lx_vbkok-wabuc = c_wabuc_x.

lx_vbpok-vbeln_vl = fp_l_delivery.

lx_vbpok-posnr_vl = c_posnr.

lx_vbpok-vbeln = fp_l_delivery.

lx_vbpok-posnn = c_posnr.

lx_vbpok-matnr = fp_afpo-matnr.

lx_vbpok-charg = fp_afpo-charg.

lx_vbpok-werks = fp_afpo-dwerk.

lx_vbpok-taqui = c_wabuc_x.

lx_vbpok-pikmg = fp_l_quantity.

APPEND lx_vbpok TO li_vbpok.

  • Clearing the implicit lock that mb_create_goods_mvt has. That

  • prevents it from bieng called more then once within same LUW.

PERFORM clear_xcommit IN PROGRAM saplmbwl.

  • FM to perform picking,confirmation W-M status and PGI.

CALL FUNCTION 'WS_DELIVERY_UPDATE'

EXPORTING

vbkok_wa = lx_vbkok

synchron = c_xfeld_x

delivery = fp_l_delivery

update_picking = c_xfeld_x

nicht_sperren = c_no_sp_x

if_database_update = c_data_1

if_error_messages_send_0 = c_xfeld_x

TABLES

vbpok_tab = li_vbpok

prot = li_prott.

  • Checking if any error in PGI

READ TABLE li_prott WITH KEY MSGTY = c_e TRANSPORTING NO FIELDS.

IF sy-subrc EQ 0.

MESSAGE e046 WITH fp_l_delivery.

ENDIF.

READ TABLE li_prott WITH KEY MSGTY = c_a TRANSPORTING NO FIELDS.

IF sy-subrc EQ 0.

MESSAGE e046 WITH fp_l_delivery.

ENDIF.

Read only

0 Likes
7,227

Hi Bansal,

My quiry is suppose there is a batch splitting for a line item than is it works or we have to write some other code or use other Fm.

Read only

tiago_silva118
Explorer
0 Likes
7,227

An other option is to use the FM 'SD_SHIPMENT_POST_GOODS_ISSUE'.

Regards.