From bf5199b8d2284fa7c664884d5c54c239cd0b9210 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Sat, 3 Apr 2021 08:59:44 +0200 Subject: [PATCH] APACK: Replace interface name with constant (#4684) * APACK: Replace interface name with constant Closes #4248 * Lint Co-authored-by: Lars Hvam --- src/apack/zcl_abapgit_apack_helper.clas.abap | 5 +- .../zcl_abapgit_apack_migration.clas.abap | 124 ++++++++++-------- src/apack/zcl_abapgit_apack_reader.clas.abap | 17 ++- .../zif_abapgit_apack_definitions.intf.abap | 7 +- src/objects/zcl_abapgit_object_clas.clas.abap | 12 +- 5 files changed, 93 insertions(+), 72 deletions(-) diff --git a/src/apack/zcl_abapgit_apack_helper.clas.abap b/src/apack/zcl_abapgit_apack_helper.clas.abap index cd38a427b..4536e8935 100644 --- a/src/apack/zcl_abapgit_apack_helper.clas.abap +++ b/src/apack/zcl_abapgit_apack_helper.clas.abap @@ -63,7 +63,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_APACK_HELPER IMPLEMENTATION. +CLASS zcl_abapgit_apack_helper IMPLEMENTATION. METHOD are_dependencies_met. @@ -155,7 +155,8 @@ CLASS ZCL_ABAPGIT_APACK_HELPER IMPLEMENTATION. WHERE tadir~pgmid = 'R3TR' AND tadir~object = 'CLAS' AND seometarel~version = '1' - AND ( seometarel~refclsname = 'ZIF_APACK_MANIFEST' OR seometarel~refclsname = 'IF_APACK_MANIFEST' ). + AND ( seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_cust + OR seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_sap ). LOOP AT lt_manifest_implementation INTO ls_manifest_implementation. CLEAR: lo_manifest_provider, lo_apack_reader. diff --git a/src/apack/zcl_abapgit_apack_migration.clas.abap b/src/apack/zcl_abapgit_apack_migration.clas.abap index 2a8ace56b..adfa36f1a 100644 --- a/src/apack/zcl_abapgit_apack_migration.clas.abap +++ b/src/apack/zcl_abapgit_apack_migration.clas.abap @@ -10,18 +10,31 @@ CLASS zcl_abapgit_apack_migration DEFINITION PROTECTED SECTION. PRIVATE SECTION. - CONSTANTS: c_interface_name TYPE seoclsname VALUE 'ZIF_APACK_MANIFEST' ##NO_TEXT. - - METHODS: - interface_exists RETURNING VALUE(rv_interface_exists) TYPE abap_bool, - interface_valid RETURNING VALUE(rv_interface_valid) TYPE abap_bool, - create_interface RAISING zcx_abapgit_exception, - add_interface_source_classic IMPORTING is_clskey TYPE seoclskey - RAISING zcx_abapgit_exception, - add_interface_source IMPORTING is_clskey TYPE seoclskey - RAISING zcx_abapgit_exception, - get_interface_source RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt, - add_intf_source_and_activate RAISING zcx_abapgit_exception. + METHODS interface_exists + RETURNING + VALUE(rv_interface_exists) TYPE abap_bool . + METHODS interface_valid + RETURNING + VALUE(rv_interface_valid) TYPE abap_bool . + METHODS create_interface + RAISING + zcx_abapgit_exception . + METHODS add_interface_source_classic + IMPORTING + !is_clskey TYPE seoclskey + RAISING + zcx_abapgit_exception . + METHODS add_interface_source + IMPORTING + !is_clskey TYPE seoclskey + RAISING + zcx_abapgit_exception . + METHODS get_interface_source + RETURNING + VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt . + METHODS add_intf_source_and_activate + RAISING + zcx_abapgit_exception . ENDCLASS. @@ -103,11 +116,41 @@ CLASS zcl_abapgit_apack_migration IMPLEMENTATION. ENDMETHOD. + METHOD add_intf_source_and_activate. + + DATA: ls_clskey TYPE seoclskey, + ls_inactive_object TYPE dwinactiv, + lt_inactive_objects TYPE TABLE OF dwinactiv. + + ls_clskey-clsname = zif_abapgit_apack_definitions=>c_apack_interface_cust. + + add_interface_source( ls_clskey ). + + ls_inactive_object-object = 'INTF'. + ls_inactive_object-obj_name = zif_abapgit_apack_definitions=>c_apack_interface_cust. + INSERT ls_inactive_object INTO TABLE lt_inactive_objects. + + CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' + TABLES + objects = lt_inactive_objects + EXCEPTIONS + excecution_error = 1 + cancelled = 2 + insert_into_corr_error = 3 + OTHERS = 4. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD create_interface. DATA: ls_interface_properties TYPE vseointerf. - ls_interface_properties-clsname = c_interface_name. + ls_interface_properties-clsname = zif_abapgit_apack_definitions=>c_apack_interface_cust. ls_interface_properties-version = '1'. ls_interface_properties-langu = 'E'. ls_interface_properties-descript = 'APACK: Manifest interface'. @@ -193,12 +236,24 @@ CLASS zcl_abapgit_apack_migration IMPLEMENTATION. DATA: lv_interface_name TYPE seoclsname. - SELECT SINGLE clsname FROM seoclass INTO lv_interface_name WHERE clsname = c_interface_name. + SELECT SINGLE clsname FROM seoclass INTO lv_interface_name + WHERE clsname = zif_abapgit_apack_definitions=>c_apack_interface_cust. rv_interface_exists = boolc( sy-subrc = 0 ). ENDMETHOD. + METHOD interface_valid. + + FIELD-SYMBOLS: TYPE i. + + ASSIGN (zif_abapgit_apack_definitions=>c_apack_interface_cust)=>('CO_INTERFACE_VERSION') TO . + rv_interface_valid = boolc( IS ASSIGNED + AND >= c_apack_interface_version ). + + ENDMETHOD. + + METHOD perform_migration. IF interface_exists( ) = abap_false. @@ -218,45 +273,4 @@ CLASS zcl_abapgit_apack_migration IMPLEMENTATION. lo_apack_migration->perform_migration( ). ENDMETHOD. - - METHOD interface_valid. - - FIELD-SYMBOLS: TYPE i. - - ASSIGN ('ZIF_APACK_MANIFEST')=>('CO_INTERFACE_VERSION') TO . - rv_interface_valid = boolc( IS ASSIGNED - AND >= c_apack_interface_version ). - - ENDMETHOD. - - - METHOD add_intf_source_and_activate. - - DATA: ls_clskey TYPE seoclskey, - ls_inactive_object TYPE dwinactiv, - lt_inactive_objects TYPE TABLE OF dwinactiv. - - ls_clskey-clsname = c_interface_name. - - add_interface_source( ls_clskey ). - - ls_inactive_object-object = 'INTF'. - ls_inactive_object-obj_name = c_interface_name. - INSERT ls_inactive_object INTO TABLE lt_inactive_objects. - - CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' - TABLES - objects = lt_inactive_objects - EXCEPTIONS - excecution_error = 1 - cancelled = 2 - insert_into_corr_error = 3 - OTHERS = 4. - - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise_t100( ). - ENDIF. - - ENDMETHOD. - ENDCLASS. diff --git a/src/apack/zcl_abapgit_apack_reader.clas.abap b/src/apack/zcl_abapgit_apack_reader.clas.abap index 71bb13c71..78e3ab583 100644 --- a/src/apack/zcl_abapgit_apack_reader.clas.abap +++ b/src/apack/zcl_abapgit_apack_reader.clas.abap @@ -70,7 +70,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_APACK_READER IMPLEMENTATION. +CLASS zcl_abapgit_apack_reader IMPLEMENTATION. METHOD constructor. @@ -82,15 +82,20 @@ CLASS ZCL_ABAPGIT_APACK_READER IMPLEMENTATION. DATA: ls_my_manifest_wo_deps TYPE zif_abapgit_apack_definitions=>ty_descriptor_wo_dependencies, ls_my_dependency TYPE zif_abapgit_apack_definitions=>ty_dependency, - ls_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor. + ls_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor, + lv_descriptor_cust TYPE string, + lv_descriptor_sap TYPE string. FIELD-SYMBOLS: TYPE any, TYPE ANY TABLE, TYPE any. - ASSIGN io_manifest_provider->('ZIF_APACK_MANIFEST~DESCRIPTOR') TO . + lv_descriptor_cust = zif_abapgit_apack_definitions=>c_apack_interface_cust && '~DESCRIPTOR'. + lv_descriptor_sap = zif_abapgit_apack_definitions=>c_apack_interface_sap && '~DESCRIPTOR'. + + ASSIGN io_manifest_provider->(lv_descriptor_cust) TO . IF IS NOT ASSIGNED. - ASSIGN io_manifest_provider->('IF_APACK_MANIFEST~DESCRIPTOR') TO . + ASSIGN io_manifest_provider->(lv_descriptor_sap) TO . ENDIF. IF IS ASSIGNED. " A little more complex than a normal MOVE-CORRSPONDING @@ -175,7 +180,7 @@ CLASS ZCL_ABAPGIT_APACK_READER IMPLEMENTATION. WHERE tadir~pgmid = 'R3TR' AND tadir~object = 'CLAS' AND seometarel~version = '1' AND - seometarel~refclsname = 'ZIF_APACK_MANIFEST' AND + seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_cust AND tadir~devclass = mv_package_name. IF ls_manifest_implementation IS INITIAL. SELECT SINGLE seometarel~clsname tadir~devclass FROM seometarel "#EC CI_NOORDER @@ -184,7 +189,7 @@ CLASS ZCL_ABAPGIT_APACK_READER IMPLEMENTATION. WHERE tadir~pgmid = 'R3TR' AND tadir~object = 'CLAS' AND seometarel~version = '1' AND - seometarel~refclsname = 'IF_APACK_MANIFEST' AND + seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_sap AND tadir~devclass = mv_package_name. ENDIF. IF ls_manifest_implementation IS NOT INITIAL. diff --git a/src/apack/zif_abapgit_apack_definitions.intf.abap b/src/apack/zif_abapgit_apack_definitions.intf.abap index f5eb22318..040222c6b 100644 --- a/src/apack/zif_abapgit_apack_definitions.intf.abap +++ b/src/apack/zif_abapgit_apack_definitions.intf.abap @@ -1,4 +1,5 @@ -INTERFACE zif_abapgit_apack_definitions PUBLIC. +INTERFACE zif_abapgit_apack_definitions PUBLIC . + TYPES: BEGIN OF ty_dependency, @@ -9,7 +10,6 @@ INTERFACE zif_abapgit_apack_definitions PUBLIC. git_url TYPE string, target_package TYPE devclass, END OF ty_dependency, - ty_dependencies TYPE STANDARD TABLE OF ty_dependency WITH NON-UNIQUE DEFAULT KEY, @@ -34,5 +34,6 @@ INTERFACE zif_abapgit_apack_definitions PUBLIC. CONSTANTS c_dot_apack_manifest TYPE string VALUE '.apack-manifest.xml' ##NO_TEXT. CONSTANTS c_repository_type_abapgit TYPE ty_repository_type VALUE 'abapGit' ##NO_TEXT. - + CONSTANTS c_apack_interface_sap TYPE seoclsname VALUE 'IF_APACK_MANIFEST' ##NO_TEXT. + CONSTANTS c_apack_interface_cust TYPE seoclsname VALUE 'ZIF_APACK_MANIFEST' ##NO_TEXT. ENDINTERFACE. diff --git a/src/objects/zcl_abapgit_object_clas.clas.abap b/src/objects/zcl_abapgit_object_clas.clas.abap index 2f674117a..7b535ca54 100644 --- a/src/objects/zcl_abapgit_object_clas.clas.abap +++ b/src/objects/zcl_abapgit_object_clas.clas.abap @@ -303,7 +303,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. " Check if SAP-version of APACK manifest exists SELECT SINGLE clsname INTO lv_apack FROM seoclass - WHERE clsname = 'IF_APACK_MANIFEST'. + WHERE clsname = zif_abapgit_apack_definitions=>c_apack_interface_sap. IF sy-subrc = 0. RETURN. ENDIF. @@ -311,8 +311,8 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. " If not, replace with abapGit version interface_replacement( EXPORTING - iv_from_interface = 'if_apack_manifest' - iv_to_interface = 'zif_apack_manifest' + iv_from_interface = to_lower( zif_abapgit_apack_definitions=>c_apack_interface_sap ) + iv_to_interface = to_lower( zif_abapgit_apack_definitions=>c_apack_interface_cust ) CHANGING ct_source = ct_source ). @@ -524,7 +524,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. SELECT SINGLE clsname INTO lv_clsname FROM seometarel WHERE clsname = ms_item-obj_name - AND refclsname = 'ZIF_APACK_MANIFEST' + AND refclsname = zif_abapgit_apack_definitions=>c_apack_interface_cust AND version = '1'. IF sy-subrc <> 0. RETURN. @@ -533,8 +533,8 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. " If yes, replace with SAP-version interface_replacement( EXPORTING - iv_from_interface = 'zif_apack_manifest' - iv_to_interface = 'if_apack_manifest' + iv_from_interface = to_lower( zif_abapgit_apack_definitions=>c_apack_interface_cust ) + iv_to_interface = to_lower( zif_abapgit_apack_definitions=>c_apack_interface_sap ) CHANGING ct_source = ct_source ).