mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 04:36:49 +08:00
CLAS,ENHO: Fix inactive enhancements (#5810)
* CLAS,ENHO: Fix inactive enhancements When pulling a change to an existing class, existing enhancement where inactivated and the enhancement code deleted. This was caused by unnecessarily calling `CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'` in `zcl_abapgit_oo_class->create`, twice. The change avoids the second call if the class properties and attributes have *not* been changed. Interfaces are handled the same way. Tested with CI tests for classes and interfaces: Closes #5809 * Clear Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
3ecf82777c
commit
67093085f6
|
@ -433,14 +433,29 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_oo_object_fnc~create.
|
METHOD zif_abapgit_oo_object_fnc~create.
|
||||||
|
|
||||||
DATA: lt_vseoattrib TYPE seoo_attributes_r.
|
DATA:
|
||||||
FIELD-SYMBOLS: <lv_clsname> TYPE seoclsname.
|
lt_vseoattrib TYPE seoo_attributes_r,
|
||||||
|
ls_class_key TYPE seoclskey,
|
||||||
|
ls_properties TYPE vseoclass,
|
||||||
|
lt_attributes TYPE zif_abapgit_definitions=>ty_obj_attribute_tt.
|
||||||
|
|
||||||
* same as in super class, but with "version = seoc_version_active"
|
FIELD-SYMBOLS: <lv_clsname> TYPE seoclsname.
|
||||||
|
|
||||||
ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE cg_properties TO <lv_clsname>.
|
ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE cg_properties TO <lv_clsname>.
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
" Get existing class properties and attributes and check if the class
|
||||||
|
" needs to be created/updated (or is the same)
|
||||||
|
IF iv_check = abap_true.
|
||||||
|
ls_class_key-clsname = <lv_clsname>.
|
||||||
|
ls_properties = zif_abapgit_oo_object_fnc~get_class_properties( ls_class_key ).
|
||||||
|
lt_attributes = zif_abapgit_oo_object_fnc~read_attributes( <lv_clsname> ).
|
||||||
|
|
||||||
|
IF ls_properties = cg_properties AND lt_attributes = it_attributes.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
lt_vseoattrib = convert_attrib_to_vseoattrib(
|
lt_vseoattrib = convert_attrib_to_vseoattrib(
|
||||||
iv_clsname = <lv_clsname>
|
iv_clsname = <lv_clsname>
|
||||||
it_attributes = it_attributes ).
|
it_attributes = it_attributes ).
|
||||||
|
@ -449,7 +464,7 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
||||||
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
|
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
devclass = iv_package
|
devclass = iv_package
|
||||||
overwrite = iv_overwrite
|
overwrite = abap_true
|
||||||
version = seoc_version_active
|
version = seoc_version_active
|
||||||
suppress_dialog = abap_true " Parameter missing in 702
|
suppress_dialog = abap_true " Parameter missing in 702
|
||||||
CHANGING
|
CHANGING
|
||||||
|
@ -467,7 +482,7 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
||||||
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
|
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
devclass = iv_package
|
devclass = iv_package
|
||||||
overwrite = iv_overwrite
|
overwrite = abap_true
|
||||||
version = seoc_version_active
|
version = seoc_version_active
|
||||||
CHANGING
|
CHANGING
|
||||||
class = cg_properties
|
class = cg_properties
|
||||||
|
@ -685,6 +700,20 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
||||||
ELSEIF sy-subrc <> 0.
|
ELSEIF sy-subrc <> 0.
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
CLEAR:
|
||||||
|
rs_class_properties-uuid,
|
||||||
|
rs_class_properties-author,
|
||||||
|
rs_class_properties-createdon,
|
||||||
|
rs_class_properties-changedby,
|
||||||
|
rs_class_properties-changedon,
|
||||||
|
rs_class_properties-r3release,
|
||||||
|
rs_class_properties-chgdanyby,
|
||||||
|
rs_class_properties-chgdanyon,
|
||||||
|
rs_class_properties-clsfinal,
|
||||||
|
rs_class_properties-clsabstrct,
|
||||||
|
rs_class_properties-exposure,
|
||||||
|
rs_class_properties-version.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -157,12 +157,28 @@ CLASS zcl_abapgit_oo_interface IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_oo_object_fnc~create.
|
METHOD zif_abapgit_oo_object_fnc~create.
|
||||||
DATA: lt_vseoattrib TYPE seoo_attributes_r.
|
|
||||||
|
DATA:
|
||||||
|
lt_vseoattrib TYPE seoo_attributes_r,
|
||||||
|
ls_interface_key TYPE seoclskey,
|
||||||
|
ls_properties TYPE vseointerf.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lv_clsname> TYPE seoclsname.
|
FIELD-SYMBOLS: <lv_clsname> TYPE seoclsname.
|
||||||
|
|
||||||
ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE cg_properties TO <lv_clsname>.
|
ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE cg_properties TO <lv_clsname>.
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
" Get existing interface properties and check if the interface
|
||||||
|
" needs to be created/updated (or is the same)
|
||||||
|
IF iv_check = abap_true.
|
||||||
|
ls_interface_key-clsname = <lv_clsname>.
|
||||||
|
ls_properties = zif_abapgit_oo_object_fnc~get_interface_properties( ls_interface_key ).
|
||||||
|
|
||||||
|
IF ls_properties = cg_properties.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
lt_vseoattrib = convert_attrib_to_vseoattrib(
|
lt_vseoattrib = convert_attrib_to_vseoattrib(
|
||||||
iv_clsname = <lv_clsname>
|
iv_clsname = <lv_clsname>
|
||||||
it_attributes = it_attributes ).
|
it_attributes = it_attributes ).
|
||||||
|
@ -171,7 +187,7 @@ CLASS zcl_abapgit_oo_interface IMPLEMENTATION.
|
||||||
CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE'
|
CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
devclass = iv_package
|
devclass = iv_package
|
||||||
overwrite = iv_overwrite
|
overwrite = abap_true
|
||||||
version = seoc_version_active
|
version = seoc_version_active
|
||||||
suppress_dialog = abap_true " Parameter missing in 702
|
suppress_dialog = abap_true " Parameter missing in 702
|
||||||
CHANGING
|
CHANGING
|
||||||
|
@ -189,7 +205,7 @@ CLASS zcl_abapgit_oo_interface IMPLEMENTATION.
|
||||||
CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE'
|
CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
devclass = iv_package
|
devclass = iv_package
|
||||||
overwrite = iv_overwrite
|
overwrite = abap_true
|
||||||
version = seoc_version_active
|
version = seoc_version_active
|
||||||
CHANGING
|
CHANGING
|
||||||
interface = cg_properties
|
interface = cg_properties
|
||||||
|
@ -206,6 +222,7 @@ CLASS zcl_abapgit_oo_interface IMPLEMENTATION.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -298,5 +315,16 @@ CLASS zcl_abapgit_oo_interface IMPLEMENTATION.
|
||||||
ELSEIF sy-subrc <> 0.
|
ELSEIF sy-subrc <> 0.
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
CLEAR:
|
||||||
|
rs_interface_properties-uuid,
|
||||||
|
rs_interface_properties-author,
|
||||||
|
rs_interface_properties-createdon,
|
||||||
|
rs_interface_properties-changedby,
|
||||||
|
rs_interface_properties-changedon,
|
||||||
|
rs_interface_properties-chgdanyby,
|
||||||
|
rs_interface_properties-chgdanyon,
|
||||||
|
rs_interface_properties-r3release,
|
||||||
|
rs_interface_properties-version.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -21,8 +21,8 @@ INTERFACE zif_abapgit_oo_object_fnc PUBLIC.
|
||||||
METHODS:
|
METHODS:
|
||||||
create
|
create
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
iv_check TYPE abap_bool
|
||||||
iv_package TYPE devclass
|
iv_package TYPE devclass
|
||||||
iv_overwrite TYPE abap_bool DEFAULT abap_true
|
|
||||||
it_attributes TYPE zif_abapgit_definitions=>ty_obj_attribute_tt OPTIONAL
|
it_attributes TYPE zif_abapgit_definitions=>ty_obj_attribute_tt OPTIONAL
|
||||||
CHANGING
|
CHANGING
|
||||||
cg_properties TYPE any
|
cg_properties TYPE any
|
||||||
|
|
|
@ -181,6 +181,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
|
||||||
|
|
||||||
mi_object_oriented_object_fct->create(
|
mi_object_oriented_object_fct->create(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
iv_check = abap_true
|
||||||
iv_package = iv_package
|
iv_package = iv_package
|
||||||
it_attributes = lt_attributes
|
it_attributes = lt_attributes
|
||||||
CHANGING
|
CHANGING
|
||||||
|
@ -279,16 +280,16 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD deserialize_pre_ddic.
|
METHOD deserialize_pre_ddic.
|
||||||
DATA: ls_vseoclass TYPE vseoclass,
|
|
||||||
lt_attributes TYPE zif_abapgit_definitions=>ty_obj_attribute_tt.
|
DATA: ls_vseoclass TYPE vseoclass.
|
||||||
|
|
||||||
ii_xml->read( EXPORTING iv_name = 'VSEOCLASS'
|
ii_xml->read( EXPORTING iv_name = 'VSEOCLASS'
|
||||||
CHANGING cg_data = ls_vseoclass ).
|
CHANGING cg_data = ls_vseoclass ).
|
||||||
|
|
||||||
mi_object_oriented_object_fct->create(
|
mi_object_oriented_object_fct->create(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
iv_check = abap_false
|
||||||
iv_package = iv_package
|
iv_package = iv_package
|
||||||
it_attributes = lt_attributes
|
|
||||||
CHANGING
|
CHANGING
|
||||||
cg_properties = ls_vseoclass ).
|
cg_properties = ls_vseoclass ).
|
||||||
|
|
||||||
|
@ -634,19 +635,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
|
||||||
|
|
||||||
zcl_abapgit_language=>restore_login_language( ).
|
zcl_abapgit_language=>restore_login_language( ).
|
||||||
|
|
||||||
CLEAR: ls_vseoclass-uuid,
|
|
||||||
ls_vseoclass-author,
|
|
||||||
ls_vseoclass-createdon,
|
|
||||||
ls_vseoclass-changedby,
|
|
||||||
ls_vseoclass-changedon,
|
|
||||||
ls_vseoclass-r3release,
|
|
||||||
ls_vseoclass-chgdanyby,
|
|
||||||
ls_vseoclass-chgdanyon,
|
|
||||||
ls_vseoclass-clsfinal,
|
|
||||||
ls_vseoclass-clsabstrct,
|
|
||||||
ls_vseoclass-exposure,
|
|
||||||
ls_vseoclass-version.
|
|
||||||
|
|
||||||
IF mv_skip_testclass = abap_true.
|
IF mv_skip_testclass = abap_true.
|
||||||
CLEAR ls_vseoclass-with_unit_tests.
|
CLEAR ls_vseoclass-with_unit_tests.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
|
@ -185,7 +185,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD deserialize_pre_ddic.
|
METHOD deserialize_pre_ddic.
|
||||||
|
|
||||||
DATA: ls_intf TYPE ty_intf.
|
DATA ls_intf TYPE ty_intf.
|
||||||
|
|
||||||
IF zcl_abapgit_persist_factory=>get_settings( )->read( )->get_experimental_features( ) = abap_true.
|
IF zcl_abapgit_persist_factory=>get_settings( )->read( )->get_experimental_features( ) = abap_true.
|
||||||
ls_intf = read_json( ).
|
ls_intf = read_json( ).
|
||||||
|
@ -196,6 +196,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
||||||
|
|
||||||
mi_object_oriented_object_fct->create(
|
mi_object_oriented_object_fct->create(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
iv_check = abap_false
|
||||||
iv_package = iv_package
|
iv_package = iv_package
|
||||||
CHANGING
|
CHANGING
|
||||||
cg_properties = ls_intf-vseointerf ).
|
cg_properties = ls_intf-vseointerf ).
|
||||||
|
@ -381,16 +382,6 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
||||||
|
|
||||||
ls_intf-vseointerf = mi_object_oriented_object_fct->get_interface_properties( ls_clskey ).
|
ls_intf-vseointerf = mi_object_oriented_object_fct->get_interface_properties( ls_clskey ).
|
||||||
|
|
||||||
CLEAR: ls_intf-vseointerf-uuid,
|
|
||||||
ls_intf-vseointerf-author,
|
|
||||||
ls_intf-vseointerf-createdon,
|
|
||||||
ls_intf-vseointerf-changedby,
|
|
||||||
ls_intf-vseointerf-changedon,
|
|
||||||
ls_intf-vseointerf-chgdanyby,
|
|
||||||
ls_intf-vseointerf-chgdanyon,
|
|
||||||
ls_intf-vseointerf-r3release,
|
|
||||||
ls_intf-vseointerf-version.
|
|
||||||
|
|
||||||
" Select all active translations of documentation
|
" Select all active translations of documentation
|
||||||
" Skip main language - it was already serialized
|
" Skip main language - it was already serialized
|
||||||
SELECT DISTINCT langu
|
SELECT DISTINCT langu
|
||||||
|
@ -527,6 +518,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
||||||
ELSE.
|
ELSE.
|
||||||
mi_object_oriented_object_fct->create(
|
mi_object_oriented_object_fct->create(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
iv_check = abap_true
|
||||||
iv_package = iv_package
|
iv_package = iv_package
|
||||||
CHANGING
|
CHANGING
|
||||||
cg_properties = ls_intf-vseointerf ).
|
cg_properties = ls_intf-vseointerf ).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user