mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
New feature: Original system (#6715)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
314caccdd1
commit
543935a160
|
@ -174,6 +174,7 @@
|
||||||
"^cl_srvd_wb_object_data$",
|
"^cl_srvd_wb_object_data$",
|
||||||
"^cl_wb_object_operator_factory$",
|
"^cl_wb_object_operator_factory$",
|
||||||
"^cl_wer_const$",
|
"^cl_wer_const$",
|
||||||
|
"^cl_xco_",
|
||||||
"^cx_aff_",
|
"^cx_aff_",
|
||||||
"^cx_wb_object_operation_error$",
|
"^cx_wb_object_operation_error$",
|
||||||
"^cx_xco_",
|
"^cx_xco_",
|
||||||
|
@ -188,10 +189,12 @@
|
||||||
"^if_wb_adt_plugin_resource_co$",
|
"^if_wb_adt_plugin_resource_co$",
|
||||||
"^if_wb_object_data_selection_co$",
|
"^if_wb_object_data_selection_co$",
|
||||||
"^if_wb_object_operator$",
|
"^if_wb_object_operator$",
|
||||||
|
"^if_xco_",
|
||||||
"^int4$",
|
"^int4$",
|
||||||
"^numc2$",
|
"^numc2$",
|
||||||
"^sabp_t_tadir_keys$",
|
"^sabp_t_tadir_keys$",
|
||||||
"^sap_bool$",
|
"^sap_bool$",
|
||||||
|
"^srcsystem$",
|
||||||
"^stringtab$",
|
"^stringtab$",
|
||||||
"^sychar01$",
|
"^sychar01$",
|
||||||
"^sychar10$",
|
"^sychar10$",
|
||||||
|
|
|
@ -149,6 +149,20 @@ CLASS zcl_abapgit_objects DEFINITION
|
||||||
!ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt
|
!ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
CLASS-METHODS check_original_system
|
||||||
|
IMPORTING
|
||||||
|
!it_items TYPE zif_abapgit_definitions=>ty_items_tt
|
||||||
|
!ii_log TYPE REF TO zif_abapgit_log
|
||||||
|
!io_dot TYPE REF TO zcl_abapgit_dot_abapgit
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
CLASS-METHODS update_original_system
|
||||||
|
IMPORTING
|
||||||
|
!it_items TYPE zif_abapgit_definitions=>ty_items_tt
|
||||||
|
!ii_log TYPE REF TO zif_abapgit_log
|
||||||
|
!io_dot TYPE REF TO zcl_abapgit_dot_abapgit
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS check_objects_locked
|
CLASS-METHODS check_objects_locked
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!it_items TYPE zif_abapgit_definitions=>ty_items_tt
|
!it_items TYPE zif_abapgit_definitions=>ty_items_tt
|
||||||
|
@ -340,6 +354,35 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD check_original_system.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lv_srcsystem TYPE tadir-srcsystem,
|
||||||
|
lv_error TYPE abap_bool.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ls_item> LIKE LINE OF it_items.
|
||||||
|
|
||||||
|
lv_srcsystem = io_dot->get_original_system( ).
|
||||||
|
IF lv_srcsystem IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ii_log->add_info( |>> Checking original system| ).
|
||||||
|
|
||||||
|
LOOP AT it_items ASSIGNING <ls_item> WHERE srcsystem <> lv_srcsystem AND srcsystem IS NOT INITIAL.
|
||||||
|
ii_log->add_error(
|
||||||
|
iv_msg = |Object belongs to system { <ls_item>-srcsystem }. Can't overwrite it from system { lv_srcsystem }|
|
||||||
|
is_item = <ls_item> ).
|
||||||
|
lv_error = abap_true.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
IF lv_error = abap_true.
|
||||||
|
zcx_abapgit_exception=>raise( 'Error trying to overwrite object from different system' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD class_name.
|
METHOD class_name.
|
||||||
|
|
||||||
CONCATENATE 'ZCL_ABAPGIT_OBJECT_' is_item-obj_type INTO rv_class_name.
|
CONCATENATE 'ZCL_ABAPGIT_OBJECT_' is_item-obj_type INTO rv_class_name.
|
||||||
|
@ -678,6 +721,12 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
|
|
||||||
check_objects_locked( lt_items ).
|
check_objects_locked( lt_items ).
|
||||||
|
|
||||||
|
" Check the original system of all objects to prevent overwritting
|
||||||
|
check_original_system(
|
||||||
|
it_items = lt_items
|
||||||
|
ii_log = ii_log
|
||||||
|
io_dot = io_repo->get_dot_abapgit( ) ).
|
||||||
|
|
||||||
lo_i18n_params = zcl_abapgit_i18n_params=>new( is_params = determine_i18n_params(
|
lo_i18n_params = zcl_abapgit_i18n_params=>new( is_params = determine_i18n_params(
|
||||||
io_dot = io_repo->get_dot_abapgit( )
|
io_dot = io_repo->get_dot_abapgit( )
|
||||||
iv_main_language_only = io_repo->get_local_settings( )-main_language_only ) ).
|
iv_main_language_only = io_repo->get_local_settings( )-main_language_only ) ).
|
||||||
|
@ -792,7 +841,6 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
io_files = lo_files ).
|
io_files = lo_files ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
|
||||||
CATCH zcx_abapgit_exception INTO lx_exc.
|
CATCH zcx_abapgit_exception INTO lx_exc.
|
||||||
ii_log->add_exception( ix_exc = lx_exc
|
ii_log->add_exception( ix_exc = lx_exc
|
||||||
is_item = ls_item ).
|
is_item = ls_item ).
|
||||||
|
@ -819,6 +867,12 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
|
|
||||||
update_package_tree( io_repo->get_package( ) ).
|
update_package_tree( io_repo->get_package( ) ).
|
||||||
|
|
||||||
|
" Set the original system for all updated objects to what's defined in repo settings
|
||||||
|
update_original_system(
|
||||||
|
it_items = lt_items
|
||||||
|
ii_log = ii_log
|
||||||
|
io_dot = io_repo->get_dot_abapgit( ) ).
|
||||||
|
|
||||||
zcl_abapgit_factory=>get_default_transport( )->reset( ).
|
zcl_abapgit_factory=>get_default_transport( )->reset( ).
|
||||||
|
|
||||||
lo_timer->end( abap_true ).
|
lo_timer->end( abap_true ).
|
||||||
|
@ -1134,9 +1188,11 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
|
|
||||||
LOOP AT it_results ASSIGNING <ls_result>.
|
LOOP AT it_results ASSIGNING <ls_result>.
|
||||||
|
|
||||||
ls_item-devclass = <ls_result>-package.
|
ls_item-devclass = <ls_result>-package.
|
||||||
ls_item-obj_type = <ls_result>-obj_type.
|
ls_item-obj_type = <ls_result>-obj_type.
|
||||||
ls_item-obj_name = <ls_result>-obj_name.
|
ls_item-obj_name = <ls_result>-obj_name.
|
||||||
|
ls_item-srcsystem = <ls_result>-srcsystem.
|
||||||
|
ls_item-origlang = <ls_result>-origlang.
|
||||||
INSERT ls_item INTO TABLE rt_items.
|
INSERT ls_item INTO TABLE rt_items.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
@ -1151,9 +1207,11 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
|
|
||||||
LOOP AT it_tadir ASSIGNING <ls_tadir>.
|
LOOP AT it_tadir ASSIGNING <ls_tadir>.
|
||||||
|
|
||||||
ls_item-devclass = <ls_tadir>-devclass.
|
ls_item-devclass = <ls_tadir>-devclass.
|
||||||
ls_item-obj_type = <ls_tadir>-object.
|
ls_item-obj_type = <ls_tadir>-object.
|
||||||
ls_item-obj_name = <ls_tadir>-obj_name.
|
ls_item-obj_name = <ls_tadir>-obj_name.
|
||||||
|
ls_item-srcsystem = <ls_tadir>-srcsystem.
|
||||||
|
ls_item-origlang = <ls_tadir>-masterlang.
|
||||||
INSERT ls_item INTO TABLE rt_items.
|
INSERT ls_item INTO TABLE rt_items.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
@ -1275,6 +1333,72 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD update_original_system.
|
||||||
|
|
||||||
|
DATA lv_srcsystem TYPE tadir-srcsystem.
|
||||||
|
DATA 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.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ii_log->add_info( |>> Setting original system| ).
|
||||||
|
|
||||||
|
LOOP AT it_items ASSIGNING <ls_item>.
|
||||||
|
" Local packages are not stored in TADIR
|
||||||
|
IF <ls_item>-obj_type = 'DEVC' AND <ls_item>-obj_name(1) = '$'.
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
IF exists( <ls_item> ) = abap_true.
|
||||||
|
CALL FUNCTION 'TR_TADIR_INTERFACE'
|
||||||
|
EXPORTING
|
||||||
|
wi_tadir_pgmid = 'R3TR'
|
||||||
|
wi_tadir_object = <ls_item>-obj_type
|
||||||
|
wi_tadir_obj_name = <ls_item>-obj_name
|
||||||
|
wi_tadir_srcsystem = lv_srcsystem
|
||||||
|
wi_test_modus = abap_false
|
||||||
|
EXCEPTIONS
|
||||||
|
tadir_entry_not_existing = 1
|
||||||
|
tadir_entry_ill_type = 2
|
||||||
|
no_systemname = 3
|
||||||
|
no_systemtype = 4
|
||||||
|
original_system_conflict = 5
|
||||||
|
object_reserved_for_devclass = 6
|
||||||
|
object_exists_global = 7
|
||||||
|
object_exists_local = 8
|
||||||
|
object_is_distributed = 9
|
||||||
|
obj_specification_not_unique = 10
|
||||||
|
no_authorization_to_delete = 11
|
||||||
|
devclass_not_existing = 12
|
||||||
|
simultanious_set_remove_repair = 13
|
||||||
|
order_missing = 14
|
||||||
|
no_modification_of_head_syst = 15
|
||||||
|
pgmid_object_not_allowed = 16
|
||||||
|
masterlanguage_not_specified = 17
|
||||||
|
devclass_not_specified = 18
|
||||||
|
specify_owner_unique = 19
|
||||||
|
loc_priv_objs_no_repair = 20
|
||||||
|
gtadir_not_reached = 21
|
||||||
|
object_locked_for_order = 22
|
||||||
|
change_of_class_not_allowed = 23
|
||||||
|
no_change_from_sap_to_tmp = 24
|
||||||
|
OTHERS = 25.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
|
||||||
|
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO lv_msg.
|
||||||
|
ii_log->add_error(
|
||||||
|
iv_msg = lv_msg
|
||||||
|
is_item = <ls_item> ).
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD update_package_tree.
|
METHOD update_package_tree.
|
||||||
|
|
||||||
DATA: lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
|
DATA: lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
|
||||||
|
|
|
@ -103,6 +103,13 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
|
||||||
METHODS set_abap_language_version
|
METHODS set_abap_language_version
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_abap_language_version TYPE string .
|
!iv_abap_language_version TYPE string .
|
||||||
|
METHODS get_original_system
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_original_system) TYPE string .
|
||||||
|
METHODS set_original_system
|
||||||
|
IMPORTING
|
||||||
|
!iv_original_system TYPE csequence .
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
@ -234,6 +241,11 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_original_system.
|
||||||
|
rv_original_system = ms_data-original_system.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_requirements.
|
METHOD get_requirements.
|
||||||
rt_requirements = ms_data-requirements.
|
rt_requirements = ms_data-requirements.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -343,6 +355,11 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD set_original_system.
|
||||||
|
ms_data-original_system = iv_original_system.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD set_requirements.
|
METHOD set_requirements.
|
||||||
ms_data-requirements = it_requirements.
|
ms_data-requirements = it_requirements.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -220,8 +220,8 @@ CLASS zcl_abapgit_repo_status IMPLEMENTATION.
|
||||||
rs_result-obj_type = ls_item-obj_type.
|
rs_result-obj_type = ls_item-obj_type.
|
||||||
rs_result-obj_name = ls_item-obj_name.
|
rs_result-obj_name = ls_item-obj_name.
|
||||||
rs_result-package = ls_item-devclass.
|
rs_result-package = ls_item-devclass.
|
||||||
rs_result-srcsystem = sy-sysid.
|
rs_result-srcsystem = ''.
|
||||||
rs_result-origlang = sy-langu.
|
rs_result-origlang = ''.
|
||||||
|
|
||||||
READ TABLE it_state_idx INTO ls_file_sig
|
READ TABLE it_state_idx INTO ls_file_sig
|
||||||
WITH KEY
|
WITH KEY
|
||||||
|
|
|
@ -21,6 +21,7 @@ INTERFACE zif_abapgit_dot_abapgit PUBLIC.
|
||||||
requirements TYPE ty_requirement_tt,
|
requirements TYPE ty_requirement_tt,
|
||||||
version_constant TYPE string,
|
version_constant TYPE string,
|
||||||
abap_language_version TYPE string,
|
abap_language_version TYPE string,
|
||||||
|
original_system TYPE tadir-srcsystem,
|
||||||
END OF ty_dot_abapgit .
|
END OF ty_dot_abapgit .
|
||||||
|
|
||||||
CONSTANTS:
|
CONSTANTS:
|
||||||
|
|
|
@ -42,6 +42,7 @@ CLASS zcl_abapgit_gui_page_sett_repo DEFINITION
|
||||||
version_constant TYPE string VALUE 'version_constant',
|
version_constant TYPE string VALUE 'version_constant',
|
||||||
version_value TYPE string VALUE 'version_value',
|
version_value TYPE string VALUE 'version_value',
|
||||||
abap_langu_vers TYPE string VALUE 'abap_langu_vers',
|
abap_langu_vers TYPE string VALUE 'abap_langu_vers',
|
||||||
|
original_system TYPE string VALUE 'original_system',
|
||||||
END OF c_id.
|
END OF c_id.
|
||||||
CONSTANTS:
|
CONSTANTS:
|
||||||
BEGIN OF c_event,
|
BEGIN OF c_event,
|
||||||
|
@ -193,7 +194,13 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
iv_width = '30%'
|
iv_width = '30%'
|
||||||
)->column(
|
)->column(
|
||||||
iv_label = 'Minimum Patch'
|
iv_label = 'Minimum Patch'
|
||||||
iv_width = '30%' ).
|
iv_width = '30%'
|
||||||
|
)->text(
|
||||||
|
iv_name = c_id-original_system
|
||||||
|
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' ).
|
||||||
|
|
||||||
IF zcl_abapgit_feature=>is_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ) = abap_true.
|
IF zcl_abapgit_feature=>is_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ) = abap_true.
|
||||||
ro_form->radio(
|
ro_form->radio(
|
||||||
|
@ -332,6 +339,10 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
iv_val = ls_dot-abap_language_version ).
|
iv_val = ls_dot-abap_language_version ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
ro_form_data->set(
|
||||||
|
iv_key = c_id-original_system
|
||||||
|
iv_val = ls_dot-original_system ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -350,6 +361,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
lo_dot->set_folder_logic( mo_form_data->get( c_id-folder_logic ) ).
|
lo_dot->set_folder_logic( mo_form_data->get( c_id-folder_logic ) ).
|
||||||
lo_dot->set_starting_folder( mo_form_data->get( c_id-starting_folder ) ).
|
lo_dot->set_starting_folder( mo_form_data->get( c_id-starting_folder ) ).
|
||||||
lo_dot->set_version_constant( mo_form_data->get( c_id-version_constant ) ).
|
lo_dot->set_version_constant( mo_form_data->get( c_id-version_constant ) ).
|
||||||
|
lo_dot->set_original_system( mo_form_data->get( c_id-original_system ) ).
|
||||||
|
|
||||||
IF zcl_abapgit_feature=>is_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ) = abap_true.
|
IF zcl_abapgit_feature=>is_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ) = abap_true.
|
||||||
lo_dot->set_abap_language_version( mo_form_data->get( c_id-abap_langu_vers ) ).
|
lo_dot->set_abap_language_version( mo_form_data->get( c_id-abap_langu_vers ) ).
|
||||||
|
@ -406,6 +418,8 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD validate_form.
|
METHOD validate_form.
|
||||||
|
|
||||||
|
CONSTANTS lc_allowed(36) TYPE c VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
lt_lang_list TYPE zif_abapgit_definitions=>ty_languages,
|
lt_lang_list TYPE zif_abapgit_definitions=>ty_languages,
|
||||||
lv_folder TYPE string,
|
lv_folder TYPE string,
|
||||||
|
@ -414,6 +428,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
lv_min_release TYPE zif_abapgit_dot_abapgit=>ty_requirement-min_release,
|
lv_min_release TYPE zif_abapgit_dot_abapgit=>ty_requirement-min_release,
|
||||||
lv_min_patch TYPE zif_abapgit_dot_abapgit=>ty_requirement-min_patch,
|
lv_min_patch TYPE zif_abapgit_dot_abapgit=>ty_requirement-min_patch,
|
||||||
lv_version_constant TYPE string,
|
lv_version_constant TYPE string,
|
||||||
|
lv_original_system TYPE string,
|
||||||
lx_exception TYPE REF TO zcx_abapgit_exception.
|
lx_exception TYPE REF TO zcx_abapgit_exception.
|
||||||
|
|
||||||
ro_validation_log = zcl_abapgit_html_form_utils=>create( mo_form )->validate( io_form_data ).
|
ro_validation_log = zcl_abapgit_html_form_utils=>create( mo_form )->validate( io_form_data ).
|
||||||
|
@ -470,6 +485,13 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
||||||
iv_val = 'LXE approach requires a non-empty list of languages' ).
|
iv_val = 'LXE approach requires a non-empty list of languages' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
lv_original_system = io_form_data->get( c_id-original_system ).
|
||||||
|
IF lv_original_system CN lc_allowed.
|
||||||
|
ro_validation_log->set(
|
||||||
|
iv_key = c_id-original_system
|
||||||
|
iv_val = 'System name must be alphanumerical' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user