Fix changing transport type when setting original system (#6870)

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Marc Bernard 2024-03-29 12:56:35 +01:00 committed by GitHub
parent 483d852823
commit 52c9bd1847
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 65 additions and 31 deletions

View File

@ -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

View File

@ -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.

View File

@ -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 <ls_item> 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.

View File

@ -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(