Change transport type when setting original system (#6816)

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Marc Bernard 2024-02-23 14:23:07 +01:00 committed by GitHub
parent 0d35e9377e
commit 37390a521e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 75 additions and 7 deletions

View File

@ -82,7 +82,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_CTS_API IMPLEMENTATION. CLASS zcl_abapgit_cts_api IMPLEMENTATION.
METHOD get_current_transport_for_obj. METHOD get_current_transport_for_obj.
@ -213,6 +213,56 @@ CLASS ZCL_ABAPGIT_CTS_API IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_cts_api~change_transport_type.
DATA ls_request_header TYPE trwbo_request_header.
CALL FUNCTION 'ENQUEUE_E_TRKORR'
EXPORTING
trkorr = iv_transport_request
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
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
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.
CALL FUNCTION 'DEQUEUE_E_TRKORR'
EXPORTING
trkorr = iv_transport_request.
ENDMETHOD.
METHOD zif_abapgit_cts_api~confirm_transport_messages. METHOD zif_abapgit_cts_api~confirm_transport_messages.
TYPES: BEGIN OF ty_s_message, TYPES: BEGIN OF ty_s_message,

View File

@ -153,4 +153,11 @@ INTERFACE zif_abapgit_cts_api
!iv_transport_request TYPE trkorr !iv_transport_request TYPE trkorr
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS change_transport_type
IMPORTING
!iv_transport_request TYPE trkorr
!iv_transport_type TYPE trfunction
RAISING
zcx_abapgit_exception.
ENDINTERFACE. ENDINTERFACE.

View File

@ -158,9 +158,10 @@ CLASS zcl_abapgit_objects DEFINITION
zcx_abapgit_exception . zcx_abapgit_exception .
CLASS-METHODS update_original_system CLASS-METHODS update_original_system
IMPORTING IMPORTING
!it_items TYPE zif_abapgit_definitions=>ty_items_tt !it_items TYPE zif_abapgit_definitions=>ty_items_tt
!ii_log TYPE REF TO zif_abapgit_log !ii_log TYPE REF TO zif_abapgit_log
!io_dot TYPE REF TO zcl_abapgit_dot_abapgit !io_dot TYPE REF TO zcl_abapgit_dot_abapgit
!iv_transport TYPE trkorr
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
CLASS-METHODS check_objects_locked CLASS-METHODS check_objects_locked
@ -869,9 +870,10 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
" Set the original system for all updated objects to what's defined in repo settings " Set the original system for all updated objects to what's defined in repo settings
update_original_system( update_original_system(
it_items = lt_items it_items = lt_items
ii_log = ii_log ii_log = ii_log
io_dot = io_repo->get_dot_abapgit( ) ). io_dot = io_repo->get_dot_abapgit( )
iv_transport = is_checks-transport-transport ).
zcl_abapgit_factory=>get_default_transport( )->reset( ). zcl_abapgit_factory=>get_default_transport( )->reset( ).
@ -1336,6 +1338,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
METHOD update_original_system. METHOD update_original_system.
DATA lv_srcsystem TYPE tadir-srcsystem. DATA lv_srcsystem TYPE tadir-srcsystem.
DATA lv_errors TYPE abap_bool.
DATA lv_msg TYPE string. DATA lv_msg TYPE string.
FIELD-SYMBOLS <ls_item> LIKE LINE OF it_items. FIELD-SYMBOLS <ls_item> LIKE LINE OF it_items.
@ -1392,10 +1395,18 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
ii_log->add_error( ii_log->add_error(
iv_msg = lv_msg iv_msg = lv_msg
is_item = <ls_item> ). is_item = <ls_item> ).
lv_errors = abap_true.
ENDIF. ENDIF.
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.
IF lv_errors IS INITIAL.
" Since original system has changed, the type of transport request needs to be switched to "Repair"
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 ).
ENDIF.
ENDMETHOD. ENDMETHOD.