mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +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
|
||||
!iv_structure_id TYPE hier_guid .
|
||||
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
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS jump_sbach04
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS clear_fields
|
||||
CHANGING cs_head TYPE ttree
|
||||
ct_nodes TYPE hier_iface_t.
|
||||
|
||||
CHANGING
|
||||
!cs_head TYPE ttree
|
||||
!ct_nodes TYPE hier_iface_t.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -93,6 +99,53 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION.
|
|||
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.
|
||||
|
||||
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.
|
||||
IF sy-subrc <> 0.
|
||||
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.
|
||||
|
||||
" 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.
|
||||
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.
|
||||
|
||||
|
||||
|
@ -338,7 +400,6 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION.
|
|||
lt_nodes TYPE TABLE OF hier_iface,
|
||||
lt_texts TYPE TABLE OF hier_texts,
|
||||
lt_refs TYPE TABLE OF hier_ref,
|
||||
lv_language TYPE spras,
|
||||
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.
|
||||
lv_all_languages = abap_true.
|
||||
ELSE.
|
||||
lv_language = mv_language.
|
||||
DELETE lt_titles WHERE spras <> lv_language.
|
||||
DELETE lt_titles WHERE spras <> mv_language.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'STREE_HIERARCHY_READ'
|
||||
EXPORTING
|
||||
structure_id = mv_tree_id
|
||||
read_also_texts = 'X'
|
||||
read_also_texts = abap_true
|
||||
all_languages = lv_all_languages
|
||||
language = lv_language
|
||||
language = mv_language
|
||||
IMPORTING
|
||||
message = ls_msg
|
||||
TABLES
|
||||
|
|
|
@ -43,22 +43,86 @@ CLASS zcl_abapgit_object_shi5 IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
DATA: ls_message TYPE hier_mess,
|
||||
lv_deletion_successful TYPE hier_yesno.
|
||||
DATA:
|
||||
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'
|
||||
EXPORTING
|
||||
extension = mv_extension
|
||||
ls_check_extensions-extension = mv_extension.
|
||||
INSERT ls_check_extensions INTO TABLE lt_check_extensions.
|
||||
|
||||
CALL FUNCTION 'STREE_CHECK_EXTENSION'
|
||||
IMPORTING
|
||||
message = ls_message
|
||||
deletion_successful = lv_deletion_successful.
|
||||
message = ls_msg
|
||||
TABLES
|
||||
check_extension = lt_check_extensions.
|
||||
|
||||
IF lv_deletion_successful = abap_false.
|
||||
zcx_abapgit_exception=>raise( ls_message-msgtxt ).
|
||||
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
|
||||
extension = mv_extension
|
||||
no_display = abap_true
|
||||
IMPORTING
|
||||
message = ls_msg
|
||||
extension_is_used = lv_found_users.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user