mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 04:36:49 +08:00
SHIx: Fix application component hierarchy issues (#6065)
This commit is contained in:
parent
db7e5ac19f
commit
1ca9a40d67
|
@ -25,18 +25,24 @@ CLASS zcl_abapgit_object_shi3 DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_structure_id TYPE hier_guid .
|
!iv_structure_id TYPE hier_guid .
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA: mv_tree_id TYPE ttree-id.
|
|
||||||
|
|
||||||
|
DATA mv_tree_id TYPE ttree-id.
|
||||||
|
|
||||||
|
METHODS insert_transport
|
||||||
|
IMPORTING
|
||||||
|
!iv_transport TYPE trkorr
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
METHODS jump_se43
|
METHODS jump_se43
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
METHODS jump_sbach04
|
METHODS jump_sbach04
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
METHODS clear_fields
|
METHODS clear_fields
|
||||||
CHANGING cs_head TYPE ttree
|
CHANGING
|
||||||
ct_nodes TYPE hier_iface_t.
|
!cs_head TYPE ttree
|
||||||
|
!ct_nodes TYPE hier_iface_t.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -93,6 +99,53 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD insert_transport.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
ls_msg TYPE hier_mess,
|
||||||
|
ls_object TYPE e071,
|
||||||
|
lt_objects TYPE TABLE OF e071,
|
||||||
|
lt_keys TYPE TABLE OF e071k,
|
||||||
|
ls_ko200 TYPE ko200,
|
||||||
|
lt_ko200 TYPE TABLE OF ko200.
|
||||||
|
|
||||||
|
" This function shows a popup so get objects and keys and insert
|
||||||
|
" them into transport below
|
||||||
|
CALL FUNCTION 'STREE_INSERT_ALL_IN_TRANSPORT'
|
||||||
|
EXPORTING
|
||||||
|
structure_id = mv_tree_id
|
||||||
|
iv_return_objects_and_keys = abap_true
|
||||||
|
IMPORTING
|
||||||
|
message = ls_msg
|
||||||
|
TABLES
|
||||||
|
et_objects = lt_objects
|
||||||
|
et_keys = lt_keys.
|
||||||
|
IF ls_msg-msgty = 'E'.
|
||||||
|
MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno
|
||||||
|
WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO zcx_abapgit_exception=>null.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
LOOP AT lt_objects INTO ls_object.
|
||||||
|
MOVE-CORRESPONDING ls_object TO ls_ko200.
|
||||||
|
INSERT ls_ko200 INTO TABLE lt_ko200.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
CALL FUNCTION 'TR_RECORD_OBJ_CHANGE_TO_REQ'
|
||||||
|
EXPORTING
|
||||||
|
iv_request = iv_transport
|
||||||
|
it_objects = lt_ko200
|
||||||
|
it_keys = lt_keys
|
||||||
|
EXCEPTIONS
|
||||||
|
cancel = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD is_used.
|
METHOD is_used.
|
||||||
|
|
||||||
DATA: lt_used_in_structures TYPE STANDARD TABLE OF ttree WITH DEFAULT KEY.
|
DATA: lt_used_in_structures TYPE STANDARD TABLE OF ttree WITH DEFAULT KEY.
|
||||||
|
@ -247,6 +300,10 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION.
|
||||||
OTHERS = 2.
|
OTHERS = 2.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ELSEIF ls_msg-msgty = 'E'.
|
||||||
|
MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno
|
||||||
|
WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO zcx_abapgit_exception=>null.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
" Set buffer mode for menus (see function BMENU_CREATE_TREE)
|
" Set buffer mode for menus (see function BMENU_CREATE_TREE)
|
||||||
|
@ -258,6 +315,11 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION.
|
||||||
MODIFY ttree FROM ls_ttree.
|
MODIFY ttree FROM ls_ttree.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
IF zcl_abapgit_factory=>get_sap_package( iv_package )->are_changes_recorded_in_tr_req( ) = abap_true.
|
||||||
|
" Add necessary SHI6, SHI7, and TABU entries to transport (SAP Note 455542)
|
||||||
|
insert_transport( iv_transport ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -338,7 +400,6 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION.
|
||||||
lt_nodes TYPE TABLE OF hier_iface,
|
lt_nodes TYPE TABLE OF hier_iface,
|
||||||
lt_texts TYPE TABLE OF hier_texts,
|
lt_texts TYPE TABLE OF hier_texts,
|
||||||
lt_refs TYPE TABLE OF hier_ref,
|
lt_refs TYPE TABLE OF hier_ref,
|
||||||
lv_language TYPE spras,
|
|
||||||
lv_all_languages TYPE abap_bool.
|
lv_all_languages TYPE abap_bool.
|
||||||
|
|
||||||
|
|
||||||
|
@ -356,16 +417,15 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION.
|
||||||
IF io_xml->i18n_params( )-main_language_only = abap_false.
|
IF io_xml->i18n_params( )-main_language_only = abap_false.
|
||||||
lv_all_languages = abap_true.
|
lv_all_languages = abap_true.
|
||||||
ELSE.
|
ELSE.
|
||||||
lv_language = mv_language.
|
DELETE lt_titles WHERE spras <> mv_language.
|
||||||
DELETE lt_titles WHERE spras <> lv_language.
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
CALL FUNCTION 'STREE_HIERARCHY_READ'
|
CALL FUNCTION 'STREE_HIERARCHY_READ'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
structure_id = mv_tree_id
|
structure_id = mv_tree_id
|
||||||
read_also_texts = 'X'
|
read_also_texts = abap_true
|
||||||
all_languages = lv_all_languages
|
all_languages = lv_all_languages
|
||||||
language = lv_language
|
language = mv_language
|
||||||
IMPORTING
|
IMPORTING
|
||||||
message = ls_msg
|
message = ls_msg
|
||||||
TABLES
|
TABLES
|
||||||
|
|
|
@ -43,22 +43,86 @@ CLASS zcl_abapgit_object_shi5 IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
DATA: ls_message TYPE hier_mess,
|
DATA:
|
||||||
lv_deletion_successful TYPE hier_yesno.
|
ls_msg TYPE hier_mess,
|
||||||
|
lv_found_users TYPE hier_yesno,
|
||||||
|
ls_check_extensions TYPE treenamesp,
|
||||||
|
lt_check_extensions TYPE TABLE OF treenamesp,
|
||||||
|
lv_obj_name TYPE ko200-obj_name.
|
||||||
|
|
||||||
corr_insert( iv_package ).
|
" STREE_EXTENSION_DELETE shows a popup so do the same here
|
||||||
|
|
||||||
CALL FUNCTION 'STREE_EXTENSION_DELETE'
|
ls_check_extensions-extension = mv_extension.
|
||||||
|
INSERT ls_check_extensions INTO TABLE lt_check_extensions.
|
||||||
|
|
||||||
|
CALL FUNCTION 'STREE_CHECK_EXTENSION'
|
||||||
|
IMPORTING
|
||||||
|
message = ls_msg
|
||||||
|
TABLES
|
||||||
|
check_extension = lt_check_extensions.
|
||||||
|
|
||||||
|
READ TABLE lt_check_extensions INTO ls_check_extensions INDEX 1.
|
||||||
|
IF ls_check_extensions-original = abap_false.
|
||||||
|
zcx_abapgit_exception=>raise( 'Delete enhancement ID in your source system' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lv_obj_name = mv_extension.
|
||||||
|
|
||||||
|
CALL FUNCTION 'STREE_TRANSPORT_CHECK'
|
||||||
|
EXPORTING
|
||||||
|
object = 'SHI5'
|
||||||
|
obj_name = lv_obj_name
|
||||||
|
IMPORTING
|
||||||
|
message = ls_msg.
|
||||||
|
|
||||||
|
IF ls_msg-msgty = 'E'.
|
||||||
|
MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno
|
||||||
|
WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO zcx_abapgit_exception=>null.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CALL FUNCTION 'STREE_EXTENSION_USAGE'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
extension = mv_extension
|
extension = mv_extension
|
||||||
|
no_display = abap_true
|
||||||
IMPORTING
|
IMPORTING
|
||||||
message = ls_message
|
message = ls_msg
|
||||||
deletion_successful = lv_deletion_successful.
|
extension_is_used = lv_found_users.
|
||||||
|
|
||||||
IF lv_deletion_successful = abap_false.
|
IF ls_msg-msgty = 'E'.
|
||||||
zcx_abapgit_exception=>raise( ls_message-msgtxt ).
|
MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno
|
||||||
|
WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO zcx_abapgit_exception=>null.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
IF lv_found_users = abap_true.
|
||||||
|
zcx_abapgit_exception=>raise( 'Enhancement ID is still used' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CALL FUNCTION 'STREE_TRANSPORT_INSERT'
|
||||||
|
EXPORTING
|
||||||
|
object = 'SHI5'
|
||||||
|
obj_name = lv_obj_name
|
||||||
|
IMPORTING
|
||||||
|
message = ls_msg.
|
||||||
|
|
||||||
|
IF ls_msg-msgty = 'E'.
|
||||||
|
MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno
|
||||||
|
WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO zcx_abapgit_exception=>null.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
DELETE FROM ttree_ext WHERE extension = mv_extension.
|
||||||
|
DELETE FROM ttree_extt WHERE extension = mv_extension.
|
||||||
|
|
||||||
|
IF ls_check_extensions-transport = abap_false.
|
||||||
|
" no transportable Devclass -> delete TADIR
|
||||||
|
tadir_delete( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
" reset some internal tables
|
||||||
|
CALL FUNCTION 'STREE_RESET_FUGR_SHI5_TABLES'.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user