2008 Sep 24 6:47 PM
Hi,
In case if delivery picked and PGI has not been done then i need to cancel the delivery. To delete / cancel the delivery i need to undo pickings. Could you suggest me the FM / BAPI to unpick the qtys and cancel the delivery.
2008 Sep 24 6:50 PM
2008 Sep 24 6:54 PM
Sorry, we are using 4.6C. Just i need to BAPI / FM to perform unpicking. Because i found the BAPI to delete/cancel the delivery, before i use that i need to do unpicking.
2024 Feb 28 12:59 AM
Hi , Former Member,
2024 Feb 28 2:52 PM
2024 Mar 06 12:29 AM
I've solved it. Thank you.Share my test code.
DATA: ls_vbkok TYPE vbkok.
DATA: lt_vbkok TYPE STANDARD TABLE OF vbkok.
DATA: lt_prott TYPE STANDARD TABLE OF prott.
DATA: ls_prott TYPE prott.
DATA: lt_vbpok TYPE STANDARD TABLE OF vbpok.
DATA: ls_vbpok TYPE vbpok.
DATA: lv_message TYPE string.
DATA: lv_all_message TYPE string.
DATA: lv_flag TYPE char01.
PARAMETERS : p_vbeln TYPE likp-vbeln OBLIGATORY.
ls_vbkok-vbeln_vl = p_vbeln.
CLEAR:ls_vbpok,lv_flag,lv_message,lv_all_message,lt_prott.
DATA : lt_lips LIKE TABLE OF lips WITH HEADER LINE.
SELECT * FROM lips
INTO TABLE lt_lips
WHERE vbeln = p_vbeln.
LOOP AT lt_lips.
SELECT SINGLE * FROM vbfa
INTO @DATA(lw_vbfa)
WHERE vbelv = @LT_lips-vbeln
AND posnv = @LT_lips-posnr
AND vbtyp_n = 'Q'.
ls_vbpok-vbeln_vl = lt_lips-vbeln.
ls_vbpok-posnr_vl = lt_lips-posnr.
ls_vbpok-vbeln = lw_vbfa-vbeln.
ls_vbpok-posnn = lw_vbfa-posnn.
ls_vbpok-vbtyp_n = 'Q'.
ls_vbpok-meins = lt_lips-meins.
ls_vbpok-pikmg = 0.
APPEND ls_vbpok TO lt_vbpok.
ENDLOOP.
CALL FUNCTION 'WS_DELIVERY_UPDATE'
EXPORTING
vbkok_wa = ls_vbkok
synchron = 'X'
commit = 'X'
delivery = p_vbeln
update_picking = 'X'
if_database_update = '1'
nicht_sperren = 'X'
if_error_messages_send_0 = 'X'
TABLES
vbpok_tab = lt_vbpok
prot = lt_prott
EXCEPTIONS
error_message = 1
OTHERS = 2.
IF sy-subrc = 0 .
LOOP AT lt_prott INTO ls_prott WHERE msgty CA 'EAX'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = ls_prott-msgid
msgnr = ls_prott-msgno
msgv1 = ls_prott-msgv1
msgv2 = ls_prott-msgv2
msgv3 = ls_prott-msgv3
msgv4 = ls_prott-msgv4
IMPORTING
message_text_output = lv_message.
CONCATENATE lv_all_message lv_message INTO lv_all_message .
lv_message = lv_all_message.
lv_flag = 'X' .
CLEAR ls_prott.
ENDLOOP.
ELSE.
CLEAR lv_message.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = sy-msgid
msgnr = sy-msgno
msgv1 = sy-msgv1
msgv2 = sy-msgv2
msgv3 = sy-msgv3
msgv4 = sy-msgv4
IMPORTING
message_text_output = lv_all_message.
lv_message = lv_all_message.
lv_flag = 'X' .
ENDIF .
IF lv_flag IS INITIAL .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WRITE : 'OK'.
* CLEAR lv_message.
* CALL FUNCTION 'MESSAGE_TEXT_BUILD'
* EXPORTING
* msgid = sy-msgid
* msgnr = sy-msgno
* msgv1 = sy-msgv1
* msgv2 = sy-msgv2
* msgv3 = sy-msgv3
* msgv4 = sy-msgv4
* IMPORTING
* message_text_output = lv_all_message.
* WRITE : / lv_all_message.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WRITE : lv_all_message.
ENDIF.