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_SHIPMENT_CHANGE - No update of a shipement stage

ouhamoumustapha
Active Participant
0 Kudos

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      

1 ACCEPTED SOLUTION

Private_Member_49934
Contributor

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)                                                       *
************************************************************************

6 REPLIES 6

TuncayKaraca
Active Contributor
0 Kudos

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?

0 Kudos

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

Private_Member_49934
Contributor

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)                                                       *
************************************************************************

0 Kudos

Why not Try the FMs SD_SHIPMENTS_SAVE / RV_SHIPMENT_UPDATE ( both in the same FG )

0 Kudos

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

0 Kudos

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