From e177147f100d1a42f55d5774e6c31618bb0b0ac6 Mon Sep 17 00:00:00 2001 From: ThomasPloski <39330834+ThomasPloski@users.noreply.github.com> Date: Sun, 23 Jul 2023 15:03:46 +0200 Subject: [PATCH] Introduce ABAP Language Version base functionality (#6346) Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> Co-authored-by: Lars Hvam Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- abaplint.json | 2 +- src/objects/zcl_abapgit_objects.clas.abap | 6 + src/repo/zcl_abapgit_dot_abapgit.clas.abap | 50 +++-- src/repo/zcl_abapgit_repo.clas.abap | 211 ++++++++++-------- src/repo/zif_abapgit_dot_abapgit.intf.abap | 26 ++- .../zcl_abapgit_abap_language_vers.clas.abap | 127 +++++++++++ .../zcl_abapgit_abap_language_vers.clas.xml | 16 ++ src/zif_abapgit_definitions.intf.abap | 14 +- 8 files changed, 333 insertions(+), 119 deletions(-) create mode 100644 src/utils/zcl_abapgit_abap_language_vers.clas.abap create mode 100644 src/utils/zcl_abapgit_abap_language_vers.clas.xml diff --git a/abaplint.json b/abaplint.json index 690fe7bdb..ca6c6e4ef 100644 --- a/abaplint.json +++ b/abaplint.json @@ -351,7 +351,7 @@ "max_one_statement": true, "message_exists": false, "method_length": { - "statements": 105, + "statements": 110, "checkForms": true, "ignoreTestClasses": false, "errorWhenEmpty": false diff --git a/src/objects/zcl_abapgit_objects.clas.abap b/src/objects/zcl_abapgit_objects.clas.abap index cb146f2d0..b85a848f9 100644 --- a/src/objects/zcl_abapgit_objects.clas.abap +++ b/src/objects/zcl_abapgit_objects.clas.abap @@ -628,6 +628,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. DATA lo_folder_logic TYPE REF TO zcl_abapgit_folder_logic. DATA lo_i18n_params TYPE REF TO zcl_abapgit_i18n_params. DATA lo_timer TYPE REF TO zcl_abapgit_timer. + DATA lo_abap_language_vers TYPE REF TO zcl_abapgit_abap_language_vers. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_result, TYPE LINE OF zif_abapgit_definitions=>ty_deserialization_step_tt, @@ -684,6 +685,8 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. ii_log->add_info( |>>> Deserializing { lines( lt_items ) } objects| ). ENDIF. + CREATE OBJECT lo_abap_language_vers. + lo_folder_logic = zcl_abapgit_folder_logic=>get_instance( ). LOOP AT lt_results ASSIGNING . li_progress->show( iv_current = sy-tabix @@ -714,6 +717,9 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. ENDIF. ls_item-devclass = lv_package. + ls_item-abap_language_version = lo_abap_language_vers->get_abap_language_vers_by_objt( + iv_object_type = ls_item-obj_type + iv_package = lv_package ). IF -packmove = abap_true. " Move object to new package diff --git a/src/repo/zcl_abapgit_dot_abapgit.clas.abap b/src/repo/zcl_abapgit_dot_abapgit.clas.abap index a431a31db..89ed5d0df 100644 --- a/src/repo/zcl_abapgit_dot_abapgit.clas.abap +++ b/src/repo/zcl_abapgit_dot_abapgit.clas.abap @@ -26,7 +26,7 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION RETURNING VALUE(rs_file) TYPE zif_abapgit_git_definitions=>ty_file RAISING - zcx_abapgit_exception. + zcx_abapgit_exception . METHODS get_data RETURNING VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit . @@ -76,9 +76,9 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION zcx_abapgit_exception . METHODS use_lxe IMPORTING - iv_yes TYPE abap_bool DEFAULT abap_undefined + !iv_yes TYPE abap_bool DEFAULT abap_undefined RETURNING - VALUE(rv_yes) TYPE abap_bool. + VALUE(rv_yes) TYPE abap_bool . METHODS get_requirements RETURNING VALUE(rt_requirements) TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt . @@ -86,22 +86,34 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION IMPORTING !it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt . METHODS get_version_constant - RETURNING VALUE(rv_version_constant) TYPE string. + RETURNING + VALUE(rv_version_constant) TYPE string . METHODS set_version_constant - IMPORTING iv_version_constant TYPE csequence. + IMPORTING + !iv_version_constant TYPE csequence . + METHODS get_abap_language_version + RETURNING + VALUE(rv_abap_language_version) TYPE string . + METHODS set_abap_language_version + IMPORTING + !iv_abap_language_version TYPE string . PROTECTED SECTION. PRIVATE SECTION. - DATA: ms_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit. - CLASS-METHODS: - to_xml - IMPORTING is_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit - RETURNING VALUE(rv_xml) TYPE string - RAISING zcx_abapgit_exception, - from_xml - IMPORTING iv_xml TYPE string - RETURNING VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit. + DATA ms_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit . + CLASS-METHODS to_xml + IMPORTING + !is_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit + RETURNING + VALUE(rv_xml) TYPE string + RAISING + zcx_abapgit_exception . + CLASS-METHODS from_xml + IMPORTING + !iv_xml TYPE string + RETURNING + VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit . ENDCLASS. @@ -355,4 +367,14 @@ CLASS ZCL_ABAPGIT_DOT_ABAPGIT IMPLEMENTATION. rv_yes = ms_data-use_lxe. ENDMETHOD. + + + METHOD get_abap_language_version. + rv_abap_language_version = ms_data-abap_language_version. + ENDMETHOD. + + + METHOD set_abap_language_version. + ms_data-abap_language_version = iv_abap_language_version. + ENDMETHOD. ENDCLASS. diff --git a/src/repo/zcl_abapgit_repo.clas.abap b/src/repo/zcl_abapgit_repo.clas.abap index 26c2014e2..8e9f8efa9 100644 --- a/src/repo/zcl_abapgit_repo.clas.abap +++ b/src/repo/zcl_abapgit_repo.clas.abap @@ -5,48 +5,96 @@ CLASS zcl_abapgit_repo DEFINITION PUBLIC SECTION. - INTERFACES zif_abapgit_repo. + INTERFACES zif_abapgit_repo . - ALIASES ms_data FOR zif_abapgit_repo~ms_data. - ALIASES: - get_key FOR zif_abapgit_repo~get_key, - get_name FOR zif_abapgit_repo~get_name, - is_offline FOR zif_abapgit_repo~is_offline, - get_package FOR zif_abapgit_repo~get_package, - get_files_local FOR zif_abapgit_repo~get_files_local, - get_files_remote FOR zif_abapgit_repo~get_files_remote, - get_local_settings FOR zif_abapgit_repo~get_local_settings, - refresh FOR zif_abapgit_repo~refresh, - get_dot_abapgit FOR zif_abapgit_repo~get_dot_abapgit, - set_dot_abapgit FOR zif_abapgit_repo~set_dot_abapgit, - deserialize FOR zif_abapgit_repo~deserialize, - deserialize_checks FOR zif_abapgit_repo~deserialize_checks. - - METHODS constructor - IMPORTING - !is_data TYPE zif_abapgit_persistence=>ty_repo . + ALIASES ms_data + FOR zif_abapgit_repo~ms_data . + ALIASES deserialize + FOR zif_abapgit_repo~deserialize . + ALIASES deserialize_checks + FOR zif_abapgit_repo~deserialize_checks . + ALIASES get_dot_abapgit + FOR zif_abapgit_repo~get_dot_abapgit . + ALIASES get_files_local + FOR zif_abapgit_repo~get_files_local . + ALIASES get_files_remote + FOR zif_abapgit_repo~get_files_remote . + ALIASES get_key + FOR zif_abapgit_repo~get_key . + ALIASES get_local_settings + FOR zif_abapgit_repo~get_local_settings . + ALIASES get_name + FOR zif_abapgit_repo~get_name . + ALIASES get_package + FOR zif_abapgit_repo~get_package . + ALIASES is_offline + FOR zif_abapgit_repo~is_offline . + ALIASES refresh + FOR zif_abapgit_repo~refresh . + ALIASES set_dot_abapgit + FOR zif_abapgit_repo~set_dot_abapgit . METHODS bind_listener IMPORTING !ii_listener TYPE REF TO zif_abapgit_repo_listener . + METHODS check_and_create_package + IMPORTING + !iv_package TYPE devclass + RAISING + zcx_abapgit_exception . + METHODS constructor + IMPORTING + !is_data TYPE zif_abapgit_persistence=>ty_repo . + METHODS create_new_log + IMPORTING + !iv_title TYPE string OPTIONAL + RETURNING + VALUE(ri_log) TYPE REF TO zif_abapgit_log . METHODS delete_checks RETURNING VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_delete_checks RAISING zcx_abapgit_exception . - METHODS get_dot_apack - RETURNING - VALUE(ro_dot_apack) TYPE REF TO zcl_abapgit_apack_reader . - METHODS get_data_config - RETURNING - VALUE(ri_config) TYPE REF TO zif_abapgit_data_config - RAISING - zcx_abapgit_exception . METHODS find_remote_dot_abapgit RETURNING VALUE(ro_dot) TYPE REF TO zcl_abapgit_dot_abapgit RAISING zcx_abapgit_exception . + METHODS get_data_config + RETURNING + VALUE(ri_config) TYPE REF TO zif_abapgit_data_config + RAISING + zcx_abapgit_exception . + METHODS get_dot_apack + RETURNING + VALUE(ro_dot_apack) TYPE REF TO zcl_abapgit_apack_reader . + METHODS get_log + RETURNING + VALUE(ri_log) TYPE REF TO zif_abapgit_log . + METHODS get_unsupported_objects_local + RETURNING + VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_items_tt + RAISING + zcx_abapgit_exception . + METHODS has_remote_source + ABSTRACT + RETURNING + VALUE(rv_yes) TYPE abap_bool . + METHODS refresh_local_object + IMPORTING + !iv_obj_type TYPE tadir-object + !iv_obj_name TYPE tadir-obj_name + RAISING + zcx_abapgit_exception . + METHODS refresh_local_objects + RAISING + zcx_abapgit_exception . + METHODS remove_ignored_files + CHANGING + !ct_files TYPE zif_abapgit_git_definitions=>ty_files_tt + RAISING + zcx_abapgit_exception . + METHODS reset_status . METHODS set_files_remote IMPORTING !it_files TYPE zif_abapgit_git_definitions=>ty_files_tt . @@ -55,10 +103,6 @@ CLASS zcl_abapgit_repo DEFINITION !is_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings RAISING zcx_abapgit_exception . - METHODS has_remote_source - ABSTRACT - RETURNING - VALUE(rv_yes) TYPE abap_bool . METHODS status IMPORTING !ii_log TYPE REF TO zif_abapgit_log OPTIONAL @@ -71,39 +115,6 @@ CLASS zcl_abapgit_repo DEFINITION !iv_offline TYPE abap_bool RAISING zcx_abapgit_exception . - METHODS create_new_log - IMPORTING - !iv_title TYPE string OPTIONAL - RETURNING - VALUE(ri_log) TYPE REF TO zif_abapgit_log . - METHODS get_log - RETURNING - VALUE(ri_log) TYPE REF TO zif_abapgit_log . - METHODS refresh_local_object - IMPORTING - !iv_obj_type TYPE tadir-object - !iv_obj_name TYPE tadir-obj_name - RAISING - zcx_abapgit_exception . - METHODS refresh_local_objects - RAISING - zcx_abapgit_exception . - METHODS reset_status . - METHODS get_unsupported_objects_local - RETURNING - VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_items_tt - RAISING - zcx_abapgit_exception . - METHODS remove_ignored_files - CHANGING - ct_files TYPE zif_abapgit_git_definitions=>ty_files_tt - RAISING - zcx_abapgit_exception . - METHODS check_and_create_package - IMPORTING - iv_package TYPE devclass - RAISING - zcx_abapgit_exception . PROTECTED SECTION. DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt . @@ -121,11 +132,7 @@ CLASS zcl_abapgit_repo DEFINITION VALUE(ro_dot) TYPE REF TO zcl_abapgit_apack_reader RAISING zcx_abapgit_exception . - METHODS set_dot_apack - IMPORTING - !io_dot_apack TYPE REF TO zcl_abapgit_apack_reader - RAISING - zcx_abapgit_exception . + METHODS reset_remote . METHODS set IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url OPTIONAL @@ -140,32 +147,43 @@ CLASS zcl_abapgit_repo DEFINITION !iv_switched_origin TYPE zif_abapgit_persistence=>ty_repo-switched_origin OPTIONAL RAISING zcx_abapgit_exception . - METHODS reset_remote . + METHODS set_dot_apack + IMPORTING + !io_dot_apack TYPE REF TO zcl_abapgit_apack_reader + RAISING + zcx_abapgit_exception . PRIVATE SECTION. + METHODS check_for_restart . + METHODS check_language + RAISING + zcx_abapgit_exception . + METHODS check_write_protect + RAISING + zcx_abapgit_exception . + METHODS deserialize_data + IMPORTING + !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks + CHANGING + !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt + RAISING + zcx_abapgit_exception . METHODS deserialize_dot_abapgit CHANGING - ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt + !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING - zcx_abapgit_exception. - + zcx_abapgit_exception . METHODS deserialize_objects IMPORTING !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks !ii_log TYPE REF TO zif_abapgit_log CHANGING - ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt + !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING - zcx_abapgit_exception. - - METHODS deserialize_data - IMPORTING - !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks + zcx_abapgit_exception . + METHODS normalize_local_settings CHANGING - ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt - RAISING - zcx_abapgit_exception. - + !cs_local_settings TYPE zif_abapgit_persistence=>ty_local_settings . METHODS notify_listener IMPORTING !is_change_mask TYPE zif_abapgit_persistence=>ty_repo_meta_mask @@ -174,21 +192,14 @@ CLASS zcl_abapgit_repo DEFINITION METHODS update_last_deserialize RAISING zcx_abapgit_exception . - METHODS check_for_restart . - METHODS check_write_protect + METHODS check_abap_language_version RAISING zcx_abapgit_exception . - METHODS check_language - RAISING - zcx_abapgit_exception . - METHODS normalize_local_settings - CHANGING - cs_local_settings TYPE zif_abapgit_persistence=>ty_local_settings. ENDCLASS. -CLASS zcl_abapgit_repo IMPLEMENTATION. +CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION. METHOD bind_listener. @@ -782,6 +793,7 @@ CLASS zcl_abapgit_repo IMPLEMENTATION. check_write_protect( ). check_language( ). + check_abap_language_version( ). rs_checks = zcl_abapgit_objects=>deserialize_checks( me ). @@ -910,4 +922,19 @@ CLASS zcl_abapgit_repo IMPLEMENTATION. METHOD zif_abapgit_repo~set_dot_abapgit. set( is_dot_abapgit = io_dot_abapgit->get_data( ) ). ENDMETHOD. + + + METHOD check_abap_language_version. + + DATA lo_abapgit_abap_language_vers TYPE REF TO zcl_abapgit_abap_language_vers. + DATA lv_text TYPE string. + CREATE OBJECT lo_abapgit_abap_language_vers. + + IF lo_abapgit_abap_language_vers->is_import_allowed( io_repo = me + iv_package = ms_data-package ) = abap_false. + lv_text = |Repository cannot be imported. | && + |ABAP Language Version of linked package is not compatible with repository settings.|. + zcx_abapgit_exception=>raise( iv_text = lv_text ). + ENDIF. + ENDMETHOD. ENDCLASS. diff --git a/src/repo/zif_abapgit_dot_abapgit.intf.abap b/src/repo/zif_abapgit_dot_abapgit.intf.abap index 1bc17783f..88208e6a9 100644 --- a/src/repo/zif_abapgit_dot_abapgit.intf.abap +++ b/src/repo/zif_abapgit_dot_abapgit.intf.abap @@ -11,14 +11,15 @@ INTERFACE zif_abapgit_dot_abapgit PUBLIC. TYPES: BEGIN OF ty_dot_abapgit, - master_language TYPE spras, - i18n_languages TYPE zif_abapgit_definitions=>ty_languages, - use_lxe TYPE abap_bool, - starting_folder TYPE string, - folder_logic TYPE string, - ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY, - requirements TYPE ty_requirement_tt, - version_constant TYPE string, + master_language TYPE spras, + i18n_languages TYPE zif_abapgit_definitions=>ty_languages, + use_lxe TYPE abap_bool, + starting_folder TYPE string, + folder_logic TYPE string, + ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY, + requirements TYPE ty_requirement_tt, + version_constant TYPE string, + abap_language_version TYPE string, END OF ty_dot_abapgit . CONSTANTS: @@ -26,6 +27,13 @@ INTERFACE zif_abapgit_dot_abapgit PUBLIC. prefix TYPE string VALUE 'PREFIX', full TYPE string VALUE 'FULL', mixed TYPE string VALUE 'MIXED', - END OF c_folder_logic . + END OF c_folder_logic, + + BEGIN OF c_abap_language_version, + standard TYPE string VALUE 'standard', + key_user TYPE string VALUE 'keyUser', + cloud_development TYPE string VALUE 'cloudDevelopment', + undefined TYPE string VALUE 'undefined', + END OF c_abap_language_version. ENDINTERFACE. diff --git a/src/utils/zcl_abapgit_abap_language_vers.clas.abap b/src/utils/zcl_abapgit_abap_language_vers.clas.abap new file mode 100644 index 000000000..6a6307d17 --- /dev/null +++ b/src/utils/zcl_abapgit_abap_language_vers.clas.abap @@ -0,0 +1,127 @@ +CLASS zcl_abapgit_abap_language_vers DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + METHODS get_abap_language_vers_by_objt + IMPORTING + !iv_object_type TYPE trobjtype + !iv_package TYPE devclass + RETURNING + VALUE(rv_allowed_abap_langu_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version . + METHODS is_import_allowed + IMPORTING + !io_repo TYPE REF TO zif_abapgit_repo + !iv_package TYPE devclass + RETURNING + VALUE(rv_allowed) TYPE abap_bool . + PROTECTED SECTION. + PRIVATE SECTION. + + METHODS get_abap_language_vers_by_devc + IMPORTING + !iv_package TYPE devclass + RETURNING + VALUE(rv_abap_language_version) TYPE string . + METHODS get_abap_language_vers_by_repo + IMPORTING + !io_repo TYPE REF TO zif_abapgit_repo + RETURNING + VALUE(rv_abap_language_version) TYPE string . +ENDCLASS. + + + +CLASS ZCL_ABAPGIT_ABAP_LANGUAGE_VERS IMPLEMENTATION. + + + METHOD get_abap_language_vers_by_devc. + + DATA lv_abap_lang_version_devc TYPE string. + DATA lo_abap_language_version_cfg TYPE REF TO object. + + TRY. + CREATE OBJECT lo_abap_language_version_cfg TYPE ('IF_ABAP_LANGUAGE_VERSION_CFG'). + + CALL METHOD ('CL_ABAP_LANGUAGE_VERSION_CFG')=>('GET_INSTANCE') + RECEIVING + ro_instance = lo_abap_language_version_cfg. + + CALL METHOD lo_abap_language_version_cfg->('IF_ABAP_LANGUAGE_VERSION_CFG~GET_PACKAGE_DEFAULT_VERSION') + EXPORTING + iv_package_name = iv_package + RECEIVING + rv_default_language_version = lv_abap_lang_version_devc. + + CASE lv_abap_lang_version_devc. + WHEN zif_abapgit_aff_types_v1=>co_abap_language_version-standard. + rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-standard. + WHEN zif_abapgit_aff_types_v1=>co_abap_language_version-key_user. + rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-key_user. + WHEN zif_abapgit_aff_types_v1=>co_abap_language_version-cloud_development. + rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-cloud_development. + WHEN OTHERS. + rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined. + ENDCASE. + CATCH cx_root. + rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined. + ENDTRY. + ENDMETHOD. + + + METHOD get_abap_language_vers_by_objt. + + DATA lo_abap_language_version TYPE REF TO object. + + TRY. + + CREATE OBJECT lo_abap_language_version TYPE ('IF_ABAP_LANGUAGE_VERSION'). + + CALL METHOD ('CL_ABAP_LANGUAGE_VERSION')=>('GET_INSTANCE') + RECEIVING + ro_instance = lo_abap_language_version. + + CALL METHOD lo_abap_language_version->('IF_ABAP_LANGUAGE_VERSION~GET_DEFAULT_VERSION') + EXPORTING + iv_object_type = iv_object_type + iv_package_name = iv_package + RECEIVING + rv_default_version = rv_allowed_abap_langu_version. + + CATCH cx_root. + rv_allowed_abap_langu_version = zif_abapgit_aff_types_v1=>co_abap_language_version-standard. + "to do: here we need to differentiate between source code object and non-source code objects + ENDTRY. + + ENDMETHOD. + + + METHOD get_abap_language_vers_by_repo. + rv_abap_language_version = io_repo->get_dot_abapgit( )->get_abap_language_version( ). + IF rv_abap_language_version IS INITIAL. + rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined. + ENDIF. + ENDMETHOD. + + + METHOD is_import_allowed. + + CASE get_abap_language_vers_by_repo( io_repo ). + WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-undefined. + rv_allowed = abap_true. + WHEN OTHERS. + IF get_abap_language_vers_by_repo( io_repo ) = get_abap_language_vers_by_devc( iv_package ). + rv_allowed = abap_true. + ELSEIF + get_abap_language_vers_by_devc( iv_package ) = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined AND + get_abap_language_vers_by_repo( io_repo ) = zif_abapgit_dot_abapgit=>c_abap_language_version-standard. + rv_allowed = abap_true. + ELSE. + rv_allowed = abap_false. + ENDIF. + ENDCASE. + + ENDMETHOD. +ENDCLASS. diff --git a/src/utils/zcl_abapgit_abap_language_vers.clas.xml b/src/utils/zcl_abapgit_abap_language_vers.clas.xml new file mode 100644 index 000000000..10c1d6b42 --- /dev/null +++ b/src/utils/zcl_abapgit_abap_language_vers.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_ABAP_LANGUAGE_VERS + E + abapGit - ABAP Language Version + 1 + X + X + X + + + + diff --git a/src/zif_abapgit_definitions.intf.abap b/src/zif_abapgit_definitions.intf.abap index f6a1ce4c2..7ffc32c2c 100644 --- a/src/zif_abapgit_definitions.intf.abap +++ b/src/zif_abapgit_definitions.intf.abap @@ -13,9 +13,10 @@ INTERFACE zif_abapgit_definitions BEGIN OF ty_item. INCLUDE TYPE ty_item_signature. TYPES: - srcsystem TYPE tadir-srcsystem, - origlang TYPE tadir-masterlang, - inactive TYPE abap_bool, + srcsystem TYPE tadir-srcsystem, + origlang TYPE tadir-masterlang, + inactive TYPE abap_bool, + abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version, END OF ty_item . TYPES: ty_items_tt TYPE STANDARD TABLE OF ty_item WITH DEFAULT KEY . @@ -470,6 +471,13 @@ INTERFACE zif_abapgit_definitions skip TYPE ty_method VALUE '?', END OF c_method . + CONSTANTS: + BEGIN OF c_abap_language_version, + standard TYPE c VALUE '', + keyuser TYPE c VALUE '2', + clouddevelopment TYPE c VALUE '5', + END OF c_abap_language_version. + TYPES: ty_sap_langu_tab TYPE STANDARD TABLE OF langu WITH DEFAULT KEY. TYPES: