mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 04:36:49 +08:00
Change Package Assignment (#4980)
* Change Package Assignment Previously, if an object was assigned to another package (but not changed otherwise), AG would delete and re-create the object. This was also visible in the "Selective Pull" popups: The new process is smarter and detects such changes. It re-assigns the package (via a TADIR change) and avoids dropping and re-creating. The package overwrite popup is also avoided (it will still appear if the object itself was changed, too): * Better icon * Add unit test Co-authored-by: Lars Hvam <larshp@hotmail.com> Co-authored-by: Alexander Tsybulsky <sbcgua@users.noreply.github.com>
This commit is contained in:
parent
3e14313f32
commit
0379bc6d11
|
@ -151,6 +151,11 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
|
||||||
APPEND INITIAL LINE TO lt_changes ASSIGNING <ls_changes>.
|
APPEND INITIAL LINE TO lt_changes ASSIGNING <ls_changes>.
|
||||||
MOVE-CORRESPONDING <ls_result> TO <ls_changes>.
|
MOVE-CORRESPONDING <ls_result> TO <ls_changes>.
|
||||||
|
|
||||||
|
IF <ls_result>-packmove = abap_true.
|
||||||
|
<ls_changes>-action = zif_abapgit_objects=>c_deserialize_action-packmove.
|
||||||
|
<ls_changes>-icon = icon_package_standard.
|
||||||
|
<ls_changes>-text = 'Change package assignment'.
|
||||||
|
ELSE.
|
||||||
CONCATENATE <ls_result>-lstate <ls_result>-rstate INTO lv_status RESPECTING BLANKS.
|
CONCATENATE <ls_result>-lstate <ls_result>-rstate INTO lv_status RESPECTING BLANKS.
|
||||||
|
|
||||||
CASE lv_status.
|
CASE lv_status.
|
||||||
|
@ -175,6 +180,7 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
|
||||||
WHEN OTHERS.
|
WHEN OTHERS.
|
||||||
ASSERT 0 = 1.
|
ASSERT 0 = 1.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -259,7 +265,7 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
|
||||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF it_results.
|
FIELD-SYMBOLS: <ls_result> LIKE LINE OF it_results.
|
||||||
|
|
||||||
lo_folder_logic = zcl_abapgit_folder_logic=>get_instance( ).
|
lo_folder_logic = zcl_abapgit_folder_logic=>get_instance( ).
|
||||||
LOOP AT it_results ASSIGNING <ls_result> WHERE match IS INITIAL.
|
LOOP AT it_results ASSIGNING <ls_result> WHERE match IS INITIAL AND packmove IS INITIAL.
|
||||||
|
|
||||||
lv_package = lo_folder_logic->path_to_package(
|
lv_package = lo_folder_logic->path_to_package(
|
||||||
iv_top = io_repo->get_package( )
|
iv_top = io_repo->get_package( )
|
||||||
|
|
|
@ -17,6 +17,7 @@ CLASS ltcl_warning_overwrite_find DEFINITION FINAL FOR TESTING
|
||||||
warning_overwrite_find_03 FOR TESTING RAISING cx_static_check,
|
warning_overwrite_find_03 FOR TESTING RAISING cx_static_check,
|
||||||
warning_overwrite_find_04 FOR TESTING RAISING cx_static_check,
|
warning_overwrite_find_04 FOR TESTING RAISING cx_static_check,
|
||||||
warning_overwrite_find_05 FOR TESTING RAISING cx_static_check,
|
warning_overwrite_find_05 FOR TESTING RAISING cx_static_check,
|
||||||
|
warning_overwrite_find_06 FOR TESTING RAISING cx_static_check,
|
||||||
|
|
||||||
given_result
|
given_result
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
@ -151,6 +152,27 @@ CLASS ltcl_warning_overwrite_find IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD warning_overwrite_find_06.
|
||||||
|
|
||||||
|
" changed package assignment
|
||||||
|
given_result( |CLAS;ZAG_UNIT_TEST;;/src/;zag_unit_test.clas.abap;;;D;;X| ).
|
||||||
|
given_result( |CLAS;ZAG_UNIT_TEST;;/src/sub;zag_unit_test.clas.abap;;;A;;X| ).
|
||||||
|
|
||||||
|
when_warning_overwrite_find( ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
exp = 1
|
||||||
|
act = lines( mt_overwrite ) ).
|
||||||
|
|
||||||
|
READ TABLE mt_overwrite INTO ms_overwrite INDEX 1.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
exp = zif_abapgit_objects=>c_deserialize_action-packmove
|
||||||
|
act = ms_overwrite-action ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD given_result.
|
METHOD given_result.
|
||||||
|
|
||||||
DATA: ls_result LIKE LINE OF mt_result.
|
DATA: ls_result LIKE LINE OF mt_result.
|
||||||
|
@ -165,7 +187,8 @@ CLASS ltcl_warning_overwrite_find IMPLEMENTATION.
|
||||||
ls_result-package
|
ls_result-package
|
||||||
ls_result-match
|
ls_result-match
|
||||||
ls_result-lstate
|
ls_result-lstate
|
||||||
ls_result-rstate.
|
ls_result-rstate
|
||||||
|
ls_result-packmove.
|
||||||
|
|
||||||
INSERT ls_result INTO TABLE mt_result.
|
INSERT ls_result INTO TABLE mt_result.
|
||||||
|
|
||||||
|
|
|
@ -169,6 +169,10 @@ CLASS zcl_abapgit_objects DEFINITION
|
||||||
!iv_obj_type TYPE tadir-object
|
!iv_obj_type TYPE tadir-object
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
CLASS-METHODS change_package_assignments
|
||||||
|
IMPORTING
|
||||||
|
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
|
!ii_log TYPE REF TO zif_abapgit_log.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -202,6 +206,28 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD change_package_assignments.
|
||||||
|
|
||||||
|
CALL FUNCTION 'TR_TADIR_INTERFACE'
|
||||||
|
EXPORTING
|
||||||
|
wi_tadir_pgmid = 'R3TR'
|
||||||
|
wi_tadir_object = is_item-obj_type
|
||||||
|
wi_tadir_obj_name = is_item-obj_name
|
||||||
|
wi_tadir_devclass = is_item-devclass
|
||||||
|
wi_test_modus = abap_false
|
||||||
|
EXCEPTIONS
|
||||||
|
OTHERS = 1.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
ii_log->add_success( iv_msg = |Object { is_item-obj_name } assigned to package { is_item-devclass }|
|
||||||
|
is_item = is_item ).
|
||||||
|
ELSE.
|
||||||
|
ii_log->add_error( iv_msg = |Package change of object { is_item-obj_name } failed|
|
||||||
|
is_item = is_item ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD check_duplicates.
|
METHOD check_duplicates.
|
||||||
|
|
||||||
DATA: lt_files TYPE zif_abapgit_definitions=>ty_files_tt,
|
DATA: lt_files TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||||
|
@ -623,6 +649,16 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
lv_path = <ls_result>-path.
|
lv_path = <ls_result>-path.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
IF <ls_result>-packmove = abap_true.
|
||||||
|
" Move object to new package
|
||||||
|
ls_item-devclass = lv_package.
|
||||||
|
change_package_assignments( is_item = ls_item
|
||||||
|
ii_log = ii_log ).
|
||||||
|
" No other changes required
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
" Create or update object
|
||||||
CREATE OBJECT lo_files
|
CREATE OBJECT lo_files
|
||||||
EXPORTING
|
EXPORTING
|
||||||
is_item = ls_item
|
is_item = ls_item
|
||||||
|
|
|
@ -37,6 +37,7 @@ INTERFACE zif_abapgit_objects
|
||||||
overwrite TYPE i VALUE 3,
|
overwrite TYPE i VALUE 3,
|
||||||
delete TYPE i VALUE 4,
|
delete TYPE i VALUE 4,
|
||||||
delete_add TYPE i VALUE 5,
|
delete_add TYPE i VALUE 5,
|
||||||
|
packmove TYPE i VALUE 6,
|
||||||
END OF c_deserialize_action.
|
END OF c_deserialize_action.
|
||||||
|
|
||||||
ENDINTERFACE.
|
ENDINTERFACE.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user