04-18-2012 6:34 PM
Hello Abaper,
I have a requierement to update the distance of a shippement (VT02N-Stages).
I'm trying to use the BAPI BAPI_SHIPMENT_CHANGE, I've 4 message type 'S' :
S |VW |487 |Processing shipment : Start
S |VW |486 |Read shipment 0000001070
S |VW |515 |Processing shipment 0000001070 : End
S |VW |488 |Save shipment 0000001070
I've called the BAPI_TRANSACTION_COMMIT but no update in the shipement, have you any idea why ?
Thanks a lot for your response.
Best regards,
Mustapha
04-19-2012 9:37 AM
Did you read the description in the begining of the FM?
************************************************************************
* CAUTION *
* This function module is not released officially. *
* It is not implemented in normal applications *
* and is not well tested. *
* (This function module is only implemented to store the knowledge *
* for later use) *
************************************************************************
04-18-2012 7:09 PM
You are checking SY-SUBRC after BAPI.
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
Have you checked SY-SUBRC in debug, is it 0?
Even though BAPI is successful, SY-SUBRC might not be zero!
To check whether BAPI is successful or not, you need to check RETURN messages.
Check this: BAPI is not return sy-subrc then how it handle the errors?
04-19-2012 9:31 AM
Hello,
Thanks for your reply.
As mentionned above, I've checked the RETURN messages for this BAPI, All messages type are 'S'..
Yes, I've checked the SY-SUBRC in Debug ans its value is 0.
(If you want to test the program, I've attached it in my first post).
Thanks again for your help.
Mustapha
04-19-2012 9:37 AM
Did you read the description in the begining of the FM?
************************************************************************
* CAUTION *
* This function module is not released officially. *
* It is not implemented in normal applications *
* and is not well tested. *
* (This function module is only implemented to store the knowledge *
* for later use) *
************************************************************************
04-19-2012 9:44 AM
Why not Try the FMs SD_SHIPMENTS_SAVE / RV_SHIPMENT_UPDATE ( both in the same FG )
04-19-2012 10:05 AM
I've tried both of thoses FM (SD_SHIPMENTS_SAVE / RV_SHIPMENT_UPDATE), but no update in the VTTS table :s, I think I have a mistake when felling the internal table passed of thoses FM.
Please, find below an exemple with FM "SD_SHIPMENTS_SAVE", I have the SY-SUBRC = 1 (No_change), knowing that i have changed the value of DISTZ.
DATA : lt_vtts TYPE STANDARD TABLE OF vtts.
DATA : ls_vtts TYPE vtts.
DATA : lt_xvttk TYPE STANDARD TABLE OF vttkvb.
DATA : lt_yvttk TYPE STANDARD TABLE OF vttkvb.
DATA : ls_vttkvb TYPE vttkvb.
DATA : ls_vttk TYPE vttk.
DATA : lt_xvttp TYPE STANDARD TABLE OF vttpvb.
DATA : lt_yvttp TYPE STANDARD TABLE OF vttpvb.
DATA : ls_vttpvb TYPE vttpvb.
DATA : lt_xvtts TYPE STANDARD TABLE OF vttsvb.
DATA : lt_yvtts TYPE STANDARD TABLE OF vttsvb.
DATA : ls_vttsvb TYPE vttsvb.
DATA : ld_tknum TYPE vttk-tknum VALUE '0000001070'.
DATA :
e_log_always TYPE char20,
e_log_on_error_warning TYPE char20,
e_save_log TYPE char20.
CALL FUNCTION 'DG56_VTTS_READ'
EXPORTING
i_shipment_id = ld_tknum
TABLES
e_vtts_tab = lt_xvtts
EXCEPTIONS
no_data_found = 1
OTHERS = 2.
lt_yvtts[] = lt_xvtts[].
READ TABLE lt_xvtts INTO ls_vttsvb INDEX 1.
MOVE '99' TO ls_vttsvb-distz.
MODIFY TABLE lt_xvtts FROM ls_vttsvb.
CALL FUNCTION 'DG56_VTTK_READ'
EXPORTING
i_shipment_id = ld_tknum
IMPORTING
e_vttk = ls_vttk
EXCEPTIONS
no_data_found = 1
OTHERS = 2.
IF sy-subrc = 0.
MOVE-CORRESPONDING ls_vttk TO ls_vttkvb.
APPEND ls_vttkvb TO lt_xvttk.
ENDIF.
CALL FUNCTION 'DG56_VTTP_READ'
EXPORTING
i_shipment_id = ld_tknum
TABLES
e_vttp_tab = lt_xvttp
EXCEPTIONS
no_data_found = 1
OTHERS = 2.
IF sy-subrc = 0.
ENDIF.
CALL FUNCTION 'SD_SHIPMENTS_SAVE'
EXPORTING
i_transaktionstyp = 'V'
i_upd_deadlines = 'X'
i_upd_texts = 'X'
i_upd_shipping_units = 'X'
i_upd_output = 'X'
i_opt_update_task = 'X'
i_opt_activities = 'X'
i_opt_no_statistics = ' '
i_opt_read_ship_units = 'X'
i_flag_tra_complete = 'X'
* I_TRA_SAVE_CALLER =
IMPORTING
e_log_always = e_log_always
e_log_on_error_warning = e_log_on_error_warning
e_save_log = e_save_log
TABLES
i_xvttk = lt_xvttk
i_yvttk = lt_yvttk
i_xvttp = lt_xvttp
i_yvttp = lt_yvttp
* I_VTRLK =
* I_VTRLP =
i_xvtts = lt_xvtts
i_yvtts = lt_yvtts
* I_XVTSP =
* I_YVTSP =
* I_XVBPA =
* I_YVBPA =
* I_XSADR =
* I_YSADR =
* I_XVTFA =
* I_YVTFA =
* I_XVEKP =
* I_YVEKP =
* I_XVEPO =
* I_YVEPO =
* CHANGING
* C_SPLIT_DIALOG_WA =
EXCEPTIONS
no_change = 1
delivery_split_error = 2
OTHERS = 3
.
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
ENDIF.
Thanks,
Mustapha
04-19-2012 10:44 AM
Hello,
Please find below the solution of this issue, I've forgoted to update the field VTTS-UPDKZ = 'U' :
DATA : w_vttk TYPE vttkvb.
DATA :
t_vttk TYPE STANDARD TABLE OF vttkvb,
t_vttk_1 TYPE STANDARD TABLE OF vttkvb,
t_vttp TYPE STANDARD TABLE OF vttpvb,
t_vttp_1 TYPE STANDARD TABLE OF vttpvb,
t_vtts TYPE STANDARD TABLE OF vttsvb,
s_vtts TYPE vttsvb,
t_vtts_1 TYPE STANDARD TABLE OF vttsvb,
t_vtsp TYPE STANDARD TABLE OF vtspvb,
t_vtsp_1 TYPE STANDARD TABLE OF vtspvb,
t_vbpa TYPE STANDARD TABLE OF vbpavb,
t_vbpa_1 TYPE STANDARD TABLE OF vbpavb,
t_vtfa TYPE STANDARD TABLE OF vtfavb,
t_vtfa_1 TYPE STANDARD TABLE OF vtfavb,
t_vbadr TYPE STANDARD TABLE OF sadrvb,
t_vbadr_1 TYPE STANDARD TABLE OF sadrvb.
FIELD-SYMBOLS : <fs_vtts> TYPE vttsvb.
CALL FUNCTION 'RV_SHIPMENT_VIEW'
EXPORTING
shipment_number = '0000001030'
option_tvtk = 'X'
option_ttds = 'X'
language = sy-langu
option_items = 'X'
option_minimized_item_data = ' '
option_sales_orders = ' '
option_export_data = ' '
option_stawn_read = 'X'
option_segments = 'X'
option_partners = 'X'
option_messages = 'X'
option_packages = ' '
option_package_dialog = 'X'
option_flow = 'X'
option_delivery_lock = 'X'
option_authority_check = 'X'
activity = 'A'
option_no_refresh = 'X'
option_ignore_missing_deliv = ' '
i_filter_type = 'F'
option_hu_via_vbfa = ' '
IMPORTING
f_vttkvb = w_vttk
TABLES
f_vttp = t_vttp
f_vtts = t_vtts
f_vtsp = t_vtsp
f_vbpa = t_vbpa
f_vtfa = t_vtfa
EXCEPTIONS
not_found = 1
no_authority = 2
delivery_missing = 3
delivery_lock = 4
OTHERS = 5.
APPEND w_vttk TO t_vttk.
READ TABLE t_vtts ASSIGNING <fs_vtts> INDEX 1.
IF sy-subrc EQ 0.
MOVE 88 TO <fs_vtts>-distz.
MOVE 'U' TO <fs_vtts>-updkz.
ENDIF.
CALL FUNCTION 'RV_SHIPMENT_UPDATE'
EXPORTING
i_opt_update_task = 'X'
i_flag_tra_complete = 'X'
* I_TRA_SAVE_CALLER =
TABLES
u_xvttk = t_vttk
u_yvttk = t_vttk_1
u_xvttp = t_vttp
u_yvttp = t_vttp_1
u_xvtts = t_vtts
u_yvtts = t_vtts_1
u_yvtsp = t_vtsp
u_xvtsp = t_vtsp_1
u_xvtfa = t_vtfa
u_yvtfa = t_vtfa_1
u_xvbpa = t_vbpa
u_yvbpa = t_vbpa_1
u_xvbadr = t_vbadr
u_yvbadr = t_vbadr_1.
COMMIT WORK AND WAIT .
Best regards,
Mustapha