diff --git a/src/cts/zcl_abapgit_cts_api.clas.abap b/src/cts/zcl_abapgit_cts_api.clas.abap index 6d5d11d21..db06c840e 100644 --- a/src/cts/zcl_abapgit_cts_api.clas.abap +++ b/src/cts/zcl_abapgit_cts_api.clas.abap @@ -215,7 +215,9 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION. METHOD zif_abapgit_cts_api~change_transport_type. - DATA ls_request_header TYPE trwbo_request_header. + DATA: + ls_request_header TYPE trwbo_request_header, + lt_request_headers TYPE trwbo_request_headers. CALL FUNCTION 'ENQUEUE_E_TRKORR' EXPORTING @@ -228,33 +230,49 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION. zcx_abapgit_exception=>raise_t100( ). ENDIF. - CALL FUNCTION 'TRINT_READ_REQUEST_HEADER' + CALL FUNCTION 'TR_READ_REQUEST_WITH_TASKS' EXPORTING - iv_read_e070 = abap_true - iv_read_e070c = abap_true - CHANGING - cs_request = ls_request_header + iv_trkorr = iv_transport_request + IMPORTING + et_request_headers = lt_request_headers EXCEPTIONS - empty_trkorr = 1 - not_exist_e070 = 2 - OTHERS = 3. + invalid_input = 1 + OTHERS = 2. IF sy-subrc <> 0. zcx_abapgit_exception=>raise_t100( ). ENDIF. - CALL FUNCTION 'TRINT_CHANGE_TRFUNCTION' - EXPORTING - iv_new_trfunction = iv_transport_type - CHANGING - cs_request_header = ls_request_header - EXCEPTIONS - action_aborted_by_user = 1 - change_not_allowed = 2 - db_access_error = 3 - OTHERS = 4. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise_t100( ). - ENDIF. + LOOP AT lt_request_headers INTO ls_request_header WHERE trfunction = iv_transport_type_from. + + CALL FUNCTION 'TRINT_READ_REQUEST_HEADER' + EXPORTING + iv_read_e070 = abap_true + iv_read_e070c = abap_true + CHANGING + cs_request = ls_request_header + EXCEPTIONS + empty_trkorr = 1 + not_exist_e070 = 2 + OTHERS = 3. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + CALL FUNCTION 'TRINT_CHANGE_TRFUNCTION' + EXPORTING + iv_new_trfunction = iv_transport_type_to + CHANGING + cs_request_header = ls_request_header + EXCEPTIONS + action_aborted_by_user = 1 + change_not_allowed = 2 + db_access_error = 3 + OTHERS = 4. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDLOOP. CALL FUNCTION 'DEQUEUE_E_TRKORR' EXPORTING diff --git a/src/cts/zif_abapgit_cts_api.intf.abap b/src/cts/zif_abapgit_cts_api.intf.abap index 7d1fe045c..6ed2c7bda 100644 --- a/src/cts/zif_abapgit_cts_api.intf.abap +++ b/src/cts/zif_abapgit_cts_api.intf.abap @@ -156,8 +156,9 @@ INTERFACE zif_abapgit_cts_api METHODS change_transport_type IMPORTING - !iv_transport_request TYPE trkorr - !iv_transport_type TYPE trfunction + !iv_transport_request TYPE trkorr + !iv_transport_type_from TYPE trfunction + !iv_transport_type_to TYPE trfunction RAISING zcx_abapgit_exception. ENDINTERFACE. diff --git a/src/objects/zcl_abapgit_objects.clas.abap b/src/objects/zcl_abapgit_objects.clas.abap index 98c475060..218529719 100644 --- a/src/objects/zcl_abapgit_objects.clas.abap +++ b/src/objects/zcl_abapgit_objects.clas.abap @@ -1310,15 +1310,28 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. METHOD update_original_system. - DATA lv_srcsystem TYPE tadir-srcsystem. - DATA lv_errors TYPE abap_bool. - DATA lv_msg TYPE string. + DATA: + lv_srcsystem TYPE tadir-srcsystem, + lv_transport_type_from TYPE trfunction, + lv_transport_type_to TYPE trfunction, + lv_errors TYPE abap_bool, + lv_msg TYPE string. FIELD-SYMBOLS LIKE LINE OF it_items. lv_srcsystem = io_dot->get_original_system( ). + IF lv_srcsystem IS INITIAL. RETURN. + ELSEIF lv_srcsystem = 'SID'. + " Change objects to local system and switch repairs to development requests + lv_srcsystem = sy-sysid. + lv_transport_type_from = zif_abapgit_cts_api=>c_transport_type-wb_repair. + lv_transport_type_to = zif_abapgit_cts_api=>c_transport_type-wb_task. + ELSE. + " Change objects to external system and switch development requests to repairs + lv_transport_type_from = zif_abapgit_cts_api=>c_transport_type-wb_task. + lv_transport_type_to = zif_abapgit_cts_api=>c_transport_type-wb_repair. ENDIF. ii_log->add_info( |>> Setting original system| ). @@ -1374,10 +1387,11 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. ENDLOOP. IF lv_errors IS INITIAL. - " Since original system has changed, the type of transport request needs to be switched to "Repair" + " Since original system has changed, the type of transport request needs to be adjusted zcl_abapgit_factory=>get_cts_api( )->change_transport_type( - iv_transport_request = iv_transport - iv_transport_type = zif_abapgit_cts_api=>c_transport_type-wb_repair ). + iv_transport_request = iv_transport + iv_transport_type_from = lv_transport_type_from + iv_transport_type_to = lv_transport_type_to ). ENDIF. ENDMETHOD. diff --git a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_repo.clas.abap b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_repo.clas.abap index c86dcbfc1..75bc7417c 100644 --- a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_repo.clas.abap +++ b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_repo.clas.abap @@ -206,7 +206,8 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION. iv_label = 'Original System' iv_upper_case = abap_true iv_max = 3 - iv_hint = 'Sets the source system of objects during deserialize in downstream systems' ). + iv_hint = 'Sets the source system of objects during deserialize in downstream systems' + && ' (use "SID" to force the source system to sy-sysid)' ). IF zcl_abapgit_feature=>is_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ) = abap_true. ro_form->radio(