mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
PINF: Fix error when changing packages (#5560)
- Set parent package for package interface elements - Raise error in case of mismatched packages
This commit is contained in:
parent
eaeba0f1cb
commit
6a84341a27
|
@ -36,8 +36,9 @@ CLASS zcl_abapgit_object_pinf DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
|||
zcx_abapgit_exception .
|
||||
METHODS update_elements
|
||||
IMPORTING
|
||||
is_pinf TYPE ty_pinf
|
||||
ii_interface TYPE REF TO lif_package_interface_facade
|
||||
!iv_package TYPE devclass
|
||||
!is_pinf TYPE ty_pinf
|
||||
!ii_interface TYPE REF TO lif_package_interface_facade
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS load
|
||||
|
@ -185,33 +186,34 @@ CLASS zcl_abapgit_object_pinf IMPLEMENTATION.
|
|||
METHOD update_elements.
|
||||
|
||||
DATA: lt_existing TYPE ty_elements,
|
||||
ls_element LIKE LINE OF is_pinf-elements,
|
||||
lt_add TYPE scomeldata,
|
||||
lv_index TYPE i,
|
||||
lv_found TYPE abap_bool,
|
||||
ls_attr TYPE scomeldtln.
|
||||
|
||||
FIELD-SYMBOLS: <li_element> LIKE LINE OF lt_existing,
|
||||
<ls_element> LIKE LINE OF is_pinf-elements.
|
||||
FIELD-SYMBOLS <li_element> LIKE LINE OF lt_existing.
|
||||
|
||||
ii_interface->set_elements_changeable( abap_true ).
|
||||
|
||||
lt_existing = ii_interface->get_elements( ).
|
||||
|
||||
LOOP AT is_pinf-elements ASSIGNING <ls_element>.
|
||||
LOOP AT is_pinf-elements INTO ls_element.
|
||||
|
||||
lv_found = abap_false.
|
||||
LOOP AT lt_existing ASSIGNING <li_element>.
|
||||
lv_index = sy-tabix.
|
||||
<li_element>->get_all_attributes( IMPORTING e_element_data = ls_attr ).
|
||||
IF <ls_element>-elem_type = ls_attr-elem_type
|
||||
AND <ls_element>-elem_key = ls_attr-elem_key.
|
||||
IF ls_element-elem_type = ls_attr-elem_type
|
||||
AND ls_element-elem_key = ls_attr-elem_key.
|
||||
DELETE lt_existing INDEX lv_index.
|
||||
CONTINUE. " current loop
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
IF lv_found = abap_false.
|
||||
APPEND <ls_element> TO lt_add.
|
||||
ls_element-elem_pack = iv_package.
|
||||
APPEND ls_element TO lt_add.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
|
@ -280,6 +282,7 @@ CLASS zcl_abapgit_object_pinf IMPLEMENTATION.
|
|||
ii_interface = li_interface ).
|
||||
|
||||
update_elements(
|
||||
iv_package = iv_package
|
||||
is_pinf = ls_pinf
|
||||
ii_interface = li_interface ).
|
||||
|
||||
|
@ -358,7 +361,8 @@ CLASS zcl_abapgit_object_pinf IMPLEMENTATION.
|
|||
ls_pinf-attributes = li_interface->get_all_attributes( ).
|
||||
|
||||
"Delete the package name if it comes from the same package
|
||||
IF ls_pinf-attributes-tadir_devc = ls_pinf-attributes-pack_name.
|
||||
IF ls_pinf-attributes-tadir_devc = ls_pinf-attributes-pack_name OR
|
||||
ms_item-devclass = ls_pinf-attributes-pack_name.
|
||||
CLEAR ls_pinf-attributes-pack_name.
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -158,9 +158,15 @@ CLASS lcl_package_interface_facade IMPLEMENTATION.
|
|||
|
||||
METHOD lif_package_interface_facade~add_elements.
|
||||
|
||||
DATA:
|
||||
lt_mismatched TYPE scomeldata,
|
||||
ls_mismatched LIKE LINE OF lt_mismatched.
|
||||
|
||||
mi_interface->add_elements(
|
||||
EXPORTING
|
||||
i_elements_data = it_elements_data
|
||||
IMPORTING
|
||||
e_mismatched_elem_data = lt_mismatched
|
||||
EXCEPTIONS
|
||||
object_invalid = 1
|
||||
intern_err = 2
|
||||
|
@ -170,6 +176,11 @@ CLASS lcl_package_interface_facade IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise_t100( ).
|
||||
ENDIF.
|
||||
|
||||
LOOP AT lt_mismatched INTO ls_mismatched.
|
||||
zcx_abapgit_exception=>raise( |Object { ls_mismatched-elem_type } { ls_mismatched-elem_key } | &&
|
||||
|from different package { ls_mismatched-elem_pack }| ).
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_package_interface_facade~set_all_attributes.
|
||||
|
|
Loading…
Reference in New Issue
Block a user