Introduce ABAP Language Version base functionality (#6346)

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
This commit is contained in:
ThomasPloski 2023-07-23 15:03:46 +02:00 committed by GitHub
parent 83b554f75e
commit e177147f10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 333 additions and 119 deletions

View File

@ -351,7 +351,7 @@
"max_one_statement": true, "max_one_statement": true,
"message_exists": false, "message_exists": false,
"method_length": { "method_length": {
"statements": 105, "statements": 110,
"checkForms": true, "checkForms": true,
"ignoreTestClasses": false, "ignoreTestClasses": false,
"errorWhenEmpty": false "errorWhenEmpty": false

View File

@ -628,6 +628,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
DATA lo_folder_logic TYPE REF TO zcl_abapgit_folder_logic. DATA lo_folder_logic TYPE REF TO zcl_abapgit_folder_logic.
DATA lo_i18n_params TYPE REF TO zcl_abapgit_i18n_params. DATA lo_i18n_params TYPE REF TO zcl_abapgit_i18n_params.
DATA lo_timer TYPE REF TO zcl_abapgit_timer. DATA lo_timer TYPE REF TO zcl_abapgit_timer.
DATA lo_abap_language_vers TYPE REF TO zcl_abapgit_abap_language_vers.
FIELD-SYMBOLS: <ls_result> TYPE zif_abapgit_definitions=>ty_result, FIELD-SYMBOLS: <ls_result> TYPE zif_abapgit_definitions=>ty_result,
<lv_step_id> TYPE LINE OF zif_abapgit_definitions=>ty_deserialization_step_tt, <lv_step_id> 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| ). ii_log->add_info( |>>> Deserializing { lines( lt_items ) } objects| ).
ENDIF. ENDIF.
CREATE OBJECT lo_abap_language_vers.
lo_folder_logic = zcl_abapgit_folder_logic=>get_instance( ). lo_folder_logic = zcl_abapgit_folder_logic=>get_instance( ).
LOOP AT lt_results ASSIGNING <ls_result>. LOOP AT lt_results ASSIGNING <ls_result>.
li_progress->show( iv_current = sy-tabix li_progress->show( iv_current = sy-tabix
@ -714,6 +717,9 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
ENDIF. ENDIF.
ls_item-devclass = lv_package. 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 <ls_result>-packmove = abap_true. IF <ls_result>-packmove = abap_true.
" Move object to new package " Move object to new package

View File

@ -26,7 +26,7 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
RETURNING RETURNING
VALUE(rs_file) TYPE zif_abapgit_git_definitions=>ty_file VALUE(rs_file) TYPE zif_abapgit_git_definitions=>ty_file
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
METHODS get_data METHODS get_data
RETURNING RETURNING
VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit . VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit .
@ -76,9 +76,9 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS use_lxe METHODS use_lxe
IMPORTING IMPORTING
iv_yes TYPE abap_bool DEFAULT abap_undefined !iv_yes TYPE abap_bool DEFAULT abap_undefined
RETURNING RETURNING
VALUE(rv_yes) TYPE abap_bool. VALUE(rv_yes) TYPE abap_bool .
METHODS get_requirements METHODS get_requirements
RETURNING RETURNING
VALUE(rt_requirements) TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt . VALUE(rt_requirements) TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt .
@ -86,22 +86,34 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
IMPORTING IMPORTING
!it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt . !it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt .
METHODS get_version_constant METHODS get_version_constant
RETURNING VALUE(rv_version_constant) TYPE string. RETURNING
VALUE(rv_version_constant) TYPE string .
METHODS set_version_constant 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. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
DATA: ms_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit.
CLASS-METHODS: DATA ms_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit .
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.
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. ENDCLASS.
@ -355,4 +367,14 @@ CLASS ZCL_ABAPGIT_DOT_ABAPGIT IMPLEMENTATION.
rv_yes = ms_data-use_lxe. rv_yes = ms_data-use_lxe.
ENDMETHOD. 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. ENDCLASS.

View File

@ -5,48 +5,96 @@ CLASS zcl_abapgit_repo DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_repo. INTERFACES zif_abapgit_repo .
ALIASES ms_data FOR zif_abapgit_repo~ms_data. ALIASES ms_data
ALIASES: FOR zif_abapgit_repo~ms_data .
get_key FOR zif_abapgit_repo~get_key, ALIASES deserialize
get_name FOR zif_abapgit_repo~get_name, FOR zif_abapgit_repo~deserialize .
is_offline FOR zif_abapgit_repo~is_offline, ALIASES deserialize_checks
get_package FOR zif_abapgit_repo~get_package, FOR zif_abapgit_repo~deserialize_checks .
get_files_local FOR zif_abapgit_repo~get_files_local, ALIASES get_dot_abapgit
get_files_remote FOR zif_abapgit_repo~get_files_remote, FOR zif_abapgit_repo~get_dot_abapgit .
get_local_settings FOR zif_abapgit_repo~get_local_settings, ALIASES get_files_local
refresh FOR zif_abapgit_repo~refresh, FOR zif_abapgit_repo~get_files_local .
get_dot_abapgit FOR zif_abapgit_repo~get_dot_abapgit, ALIASES get_files_remote
set_dot_abapgit FOR zif_abapgit_repo~set_dot_abapgit, FOR zif_abapgit_repo~get_files_remote .
deserialize FOR zif_abapgit_repo~deserialize, ALIASES get_key
deserialize_checks FOR zif_abapgit_repo~deserialize_checks. FOR zif_abapgit_repo~get_key .
ALIASES get_local_settings
METHODS constructor FOR zif_abapgit_repo~get_local_settings .
IMPORTING ALIASES get_name
!is_data TYPE zif_abapgit_persistence=>ty_repo . 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 METHODS bind_listener
IMPORTING IMPORTING
!ii_listener TYPE REF TO zif_abapgit_repo_listener . !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 METHODS delete_checks
RETURNING RETURNING
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_delete_checks VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_delete_checks
RAISING RAISING
zcx_abapgit_exception . 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 METHODS find_remote_dot_abapgit
RETURNING RETURNING
VALUE(ro_dot) TYPE REF TO zcl_abapgit_dot_abapgit VALUE(ro_dot) TYPE REF TO zcl_abapgit_dot_abapgit
RAISING RAISING
zcx_abapgit_exception . 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 METHODS set_files_remote
IMPORTING IMPORTING
!it_files TYPE zif_abapgit_git_definitions=>ty_files_tt . !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 !is_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS has_remote_source
ABSTRACT
RETURNING
VALUE(rv_yes) TYPE abap_bool .
METHODS status METHODS status
IMPORTING IMPORTING
!ii_log TYPE REF TO zif_abapgit_log OPTIONAL !ii_log TYPE REF TO zif_abapgit_log OPTIONAL
@ -71,39 +115,6 @@ CLASS zcl_abapgit_repo DEFINITION
!iv_offline TYPE abap_bool !iv_offline TYPE abap_bool
RAISING RAISING
zcx_abapgit_exception . 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. PROTECTED SECTION.
DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt . 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 VALUE(ro_dot) TYPE REF TO zcl_abapgit_apack_reader
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS set_dot_apack METHODS reset_remote .
IMPORTING
!io_dot_apack TYPE REF TO zcl_abapgit_apack_reader
RAISING
zcx_abapgit_exception .
METHODS set METHODS set
IMPORTING IMPORTING
!iv_url TYPE zif_abapgit_persistence=>ty_repo-url OPTIONAL !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 !iv_switched_origin TYPE zif_abapgit_persistence=>ty_repo-switched_origin OPTIONAL
RAISING RAISING
zcx_abapgit_exception . 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. 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 METHODS deserialize_dot_abapgit
CHANGING CHANGING
ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
METHODS deserialize_objects METHODS deserialize_objects
IMPORTING IMPORTING
!is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks
!ii_log TYPE REF TO zif_abapgit_log !ii_log TYPE REF TO zif_abapgit_log
CHANGING CHANGING
ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
METHODS normalize_local_settings
METHODS deserialize_data
IMPORTING
!is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks
CHANGING CHANGING
ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt !cs_local_settings TYPE zif_abapgit_persistence=>ty_local_settings .
RAISING
zcx_abapgit_exception.
METHODS notify_listener METHODS notify_listener
IMPORTING IMPORTING
!is_change_mask TYPE zif_abapgit_persistence=>ty_repo_meta_mask !is_change_mask TYPE zif_abapgit_persistence=>ty_repo_meta_mask
@ -174,21 +192,14 @@ CLASS zcl_abapgit_repo DEFINITION
METHODS update_last_deserialize METHODS update_last_deserialize
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS check_for_restart . METHODS check_abap_language_version
METHODS check_write_protect
RAISING RAISING
zcx_abapgit_exception . 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. ENDCLASS.
CLASS zcl_abapgit_repo IMPLEMENTATION. CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
METHOD bind_listener. METHOD bind_listener.
@ -782,6 +793,7 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
check_write_protect( ). check_write_protect( ).
check_language( ). check_language( ).
check_abap_language_version( ).
rs_checks = zcl_abapgit_objects=>deserialize_checks( me ). rs_checks = zcl_abapgit_objects=>deserialize_checks( me ).
@ -910,4 +922,19 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
METHOD zif_abapgit_repo~set_dot_abapgit. METHOD zif_abapgit_repo~set_dot_abapgit.
set( is_dot_abapgit = io_dot_abapgit->get_data( ) ). set( is_dot_abapgit = io_dot_abapgit->get_data( ) ).
ENDMETHOD. 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. ENDCLASS.

View File

@ -11,14 +11,15 @@ INTERFACE zif_abapgit_dot_abapgit PUBLIC.
TYPES: TYPES:
BEGIN OF ty_dot_abapgit, BEGIN OF ty_dot_abapgit,
master_language TYPE spras, master_language TYPE spras,
i18n_languages TYPE zif_abapgit_definitions=>ty_languages, i18n_languages TYPE zif_abapgit_definitions=>ty_languages,
use_lxe TYPE abap_bool, use_lxe TYPE abap_bool,
starting_folder TYPE string, starting_folder TYPE string,
folder_logic TYPE string, folder_logic TYPE string,
ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY, ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
requirements TYPE ty_requirement_tt, requirements TYPE ty_requirement_tt,
version_constant TYPE string, version_constant TYPE string,
abap_language_version TYPE string,
END OF ty_dot_abapgit . END OF ty_dot_abapgit .
CONSTANTS: CONSTANTS:
@ -26,6 +27,13 @@ INTERFACE zif_abapgit_dot_abapgit PUBLIC.
prefix TYPE string VALUE 'PREFIX', prefix TYPE string VALUE 'PREFIX',
full TYPE string VALUE 'FULL', full TYPE string VALUE 'FULL',
mixed TYPE string VALUE 'MIXED', 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. ENDINTERFACE.

View File

@ -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.

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_ABAP_LANGUAGE_VERS</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - ABAP Language Version</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -13,9 +13,10 @@ INTERFACE zif_abapgit_definitions
BEGIN OF ty_item. BEGIN OF ty_item.
INCLUDE TYPE ty_item_signature. INCLUDE TYPE ty_item_signature.
TYPES: TYPES:
srcsystem TYPE tadir-srcsystem, srcsystem TYPE tadir-srcsystem,
origlang TYPE tadir-masterlang, origlang TYPE tadir-masterlang,
inactive TYPE abap_bool, inactive TYPE abap_bool,
abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version,
END OF ty_item . END OF ty_item .
TYPES: TYPES:
ty_items_tt TYPE STANDARD TABLE OF ty_item WITH DEFAULT KEY . 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 '?', skip TYPE ty_method VALUE '?',
END OF c_method . 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: TYPES:
ty_sap_langu_tab TYPE STANDARD TABLE OF langu WITH DEFAULT KEY. ty_sap_langu_tab TYPE STANDARD TABLE OF langu WITH DEFAULT KEY.
TYPES: TYPES: