diff --git a/src/objects/oo/zcl_abapgit_oo_class.clas.abap b/src/objects/oo/zcl_abapgit_oo_class.clas.abap index 08b0f9bd4..44085ec09 100644 --- a/src/objects/oo/zcl_abapgit_oo_class.clas.abap +++ b/src/objects/oo/zcl_abapgit_oo_class.clas.abap @@ -44,6 +44,7 @@ CLASS zcl_abapgit_oo_class DEFINITION !iv_program TYPE syrepid !it_source TYPE string_table !iv_package TYPE devclass + !iv_version TYPE uccheck RETURNING VALUE(rv_updated) TYPE abap_bool RAISING @@ -82,6 +83,7 @@ CLASS zcl_abapgit_oo_class DEFINITION !it_source TYPE string_table !it_methods TYPE cl_oo_source_scanner_class=>type_method_implementations !iv_package TYPE devclass + !iv_version TYPE uccheck RAISING zcx_abapgit_exception. CLASS-METHODS create_report @@ -90,8 +92,9 @@ CLASS zcl_abapgit_oo_class DEFINITION !it_source TYPE string_table !iv_extension TYPE ty_char2 !iv_program_type TYPE ty_char1 - !iv_version TYPE r3state + !iv_state TYPE r3state !iv_package TYPE devclass + !iv_version TYPE uccheck RAISING zcx_abapgit_exception. CLASS-METHODS update_cs_number_of_methods @@ -122,7 +125,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. +CLASS zcl_abapgit_oo_class IMPLEMENTATION. METHOD create_report. @@ -130,7 +133,8 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. iv_name = iv_program iv_package = iv_package it_source = it_source - iv_state = iv_version + iv_state = iv_state + iv_version = iv_version iv_program_type = iv_program_type iv_extension_type = iv_extension ). ENDMETHOD. @@ -420,7 +424,8 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. it_source = it_source iv_extension = lc_class_source_extension iv_program_type = lc_include_program_type - iv_version = lc_active_version ). + iv_state = lc_active_version + iv_version = iv_version ). " Assuming that all methods that were scanned are implemented update_cs_number_of_methods( iv_classname = iv_classname @@ -508,6 +513,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. rv_updated = zcl_abapgit_factory=>get_sap_report( )->update_report( iv_name = iv_program iv_package = iv_package + iv_version = iv_version it_source = it_source ). ENDMETHOD. @@ -692,6 +698,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. lv_program = cl_oo_classname_service=>get_pubsec_name( is_key-clsname ). lv_updated = update_report( iv_program = lv_program iv_package = iv_package + iv_version = iv_version it_source = lt_public ). IF lv_updated = abap_true. update_meta( iv_name = is_key-clsname @@ -706,6 +713,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. lv_program = cl_oo_classname_service=>get_prosec_name( is_key-clsname ). lv_updated = update_report( iv_program = lv_program iv_package = iv_package + iv_version = iv_version it_source = lt_source ). IF lv_updated = abap_true. update_meta( iv_name = is_key-clsname @@ -720,6 +728,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. lv_program = cl_oo_classname_service=>get_prisec_name( is_key-clsname ). lv_updated = update_report( iv_program = lv_program iv_package = iv_package + iv_version = iv_version it_source = lt_source ). IF lv_updated = abap_true. update_meta( iv_name = is_key-clsname @@ -746,6 +755,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. update_report( iv_program = lv_program iv_package = iv_package + iv_version = iv_version it_source = lt_source ). " If method was implemented before, remove from list @@ -755,6 +765,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. * full class include update_full_class_include( iv_classname = is_key-clsname iv_package = iv_package + iv_version = iv_version it_source = it_source it_methods = lt_methods ). @@ -795,6 +806,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. lv_program = cl_oo_classname_service=>get_ccdef_name( is_key-clsname ). update_report( iv_program = lv_program iv_package = iv_package + iv_version = iv_version it_source = it_local_definitions ). ENDIF. @@ -802,6 +814,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. lv_program = cl_oo_classname_service=>get_ccimp_name( is_key-clsname ). update_report( iv_program = lv_program iv_package = iv_package + iv_version = iv_version it_source = it_local_implementations ). ENDIF. @@ -809,6 +822,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. lv_program = cl_oo_classname_service=>get_ccmac_name( is_key-clsname ). update_report( iv_program = lv_program iv_package = iv_package + iv_version = iv_version it_source = it_local_macros ). ENDIF. @@ -816,6 +830,7 @@ CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION. IF lines( it_local_test_classes ) > 0. update_report( iv_program = lv_program iv_package = iv_package + iv_version = iv_version it_source = it_local_test_classes ). ELSE. " Drop the include to remove left-over test classes diff --git a/src/objects/oo/zcl_abapgit_oo_interface.clas.abap b/src/objects/oo/zcl_abapgit_oo_interface.clas.abap index b77cf6579..1d76b7ef4 100644 --- a/src/objects/oo/zcl_abapgit_oo_interface.clas.abap +++ b/src/objects/oo/zcl_abapgit_oo_interface.clas.abap @@ -25,6 +25,7 @@ CLASS zcl_abapgit_oo_interface DEFINITION !iv_program TYPE syrepid !it_source TYPE string_table !iv_package TYPE devclass + !iv_version TYPE uccheck RETURNING VALUE(rv_updated) TYPE abap_bool RAISING @@ -146,6 +147,7 @@ CLASS zcl_abapgit_oo_interface IMPLEMENTATION. rv_updated = zcl_abapgit_factory=>get_sap_report( )->update_report( iv_name = iv_program iv_package = iv_package + iv_version = iv_version it_source = it_source ). ENDMETHOD. @@ -265,6 +267,7 @@ CLASS zcl_abapgit_oo_interface IMPLEMENTATION. lv_program = cl_oo_classname_service=>get_intfsec_name( is_key-clsname ). lv_updated = update_report( iv_program = lv_program iv_package = iv_package + iv_version = iv_version it_source = lt_public ). IF lv_updated = abap_true. update_meta( iv_name = is_key-clsname diff --git a/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap b/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap index 3c5ae7429..0a3e17b2b 100644 --- a/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap +++ b/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap @@ -36,6 +36,7 @@ INTERFACE zif_abapgit_oo_object_fnc PUBLIC. it_local_macros TYPE seop_source_string OPTIONAL it_local_test_classes TYPE seop_source_string OPTIONAL iv_package TYPE devclass + iv_version TYPE uccheck RAISING zcx_abapgit_exception, deserialize_source @@ -43,6 +44,7 @@ INTERFACE zif_abapgit_oo_object_fnc PUBLIC. is_key TYPE seoclskey it_source TYPE zif_abapgit_definitions=>ty_string_tt iv_package TYPE devclass + iv_version TYPE uccheck RAISING zcx_abapgit_exception cx_sy_dyn_call_error, diff --git a/src/objects/sap/zcl_abapgit_sap_report.clas.abap b/src/objects/sap/zcl_abapgit_sap_report.clas.abap index ba57db880..ccb6d94e4 100644 --- a/src/objects/sap/zcl_abapgit_sap_report.clas.abap +++ b/src/objects/sap/zcl_abapgit_sap_report.clas.abap @@ -10,12 +10,6 @@ CLASS zcl_abapgit_sap_report DEFINITION PROTECTED SECTION. PRIVATE SECTION. - METHODS get_language_version - IMPORTING - iv_package TYPE devclass - RETURNING - VALUE(rv_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version. - METHODS authorization_check IMPORTING iv_mode TYPE csequence @@ -83,21 +77,6 @@ CLASS zcl_abapgit_sap_report IMPLEMENTATION. ENDMETHOD. - METHOD get_language_version. - - " TODO: Determine ABAP Language Version - " https://github.com/abapGit/abapGit/issues/6154#issuecomment-1503566920) - - " For now, use default for ABAP source code - IF zcl_abapgit_factory=>get_environment( )->is_sap_cloud_platform( ) = abap_true. - rv_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-cloud_development. - ELSE. - rv_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard. - ENDIF. - - ENDMETHOD. - - METHOD zif_abapgit_sap_report~delete_report. authorization_check( @@ -115,14 +94,9 @@ CLASS zcl_abapgit_sap_report IMPLEMENTATION. METHOD zif_abapgit_sap_report~insert_report. - DATA lv_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version. - DATA lv_obj_name TYPE e071-obj_name. - ASSERT iv_state CA ' AI'. ASSERT iv_program_type CA ' 1FIJKMST'. - lv_version = get_language_version( iv_package ). - authorization_check( iv_mode = 'MODIFY' is_item = is_item ). @@ -131,7 +105,7 @@ CLASS zcl_abapgit_sap_report IMPLEMENTATION. INSERT REPORT iv_name FROM it_source. ELSEIF iv_program_type IS INITIAL AND iv_extension_type IS INITIAL. INSERT REPORT iv_name FROM it_source - STATE iv_state. + STATE iv_state. ELSEIF iv_extension_type IS INITIAL. INSERT REPORT iv_name FROM it_source STATE iv_state @@ -149,7 +123,7 @@ CLASS zcl_abapgit_sap_report IMPLEMENTATION. " In lower releases, INSERT REPORT does not support setting ABAP Language version (VERSION) " Therefore, update the flag directly - UPDATE progdir SET uccheck = lv_version WHERE name = iv_name AND state = iv_state. + UPDATE progdir SET uccheck = iv_version WHERE name = iv_name AND state = iv_state. ENDMETHOD. @@ -276,6 +250,7 @@ CLASS zcl_abapgit_sap_report IMPLEMENTATION. iv_program_type = iv_program_type iv_extension_type = iv_extension_type iv_package = iv_package + iv_version = iv_version is_item = is_item ). rv_updated = abap_true. diff --git a/src/objects/sap/zif_abapgit_sap_report.intf.abap b/src/objects/sap/zif_abapgit_sap_report.intf.abap index c28fe6f93..56bf071a9 100644 --- a/src/objects/sap/zif_abapgit_sap_report.intf.abap +++ b/src/objects/sap/zif_abapgit_sap_report.intf.abap @@ -53,6 +53,7 @@ INTERFACE zif_abapgit_sap_report iv_program_type TYPE c OPTIONAL iv_extension_type TYPE c OPTIONAL iv_package TYPE devclass + iv_version TYPE uccheck is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL RAISING zcx_abapgit_exception. @@ -65,6 +66,7 @@ INTERFACE zif_abapgit_sap_report iv_program_type TYPE c OPTIONAL iv_extension_type TYPE c OPTIONAL iv_package TYPE devclass + iv_version TYPE uccheck is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL RETURNING VALUE(rv_updated) TYPE abap_bool diff --git a/src/objects/zcl_abapgit_object_clas.clas.abap b/src/objects/zcl_abapgit_object_clas.clas.abap index 04b62a717..81a73dfda 100644 --- a/src/objects/zcl_abapgit_object_clas.clas.abap +++ b/src/objects/zcl_abapgit_object_clas.clas.abap @@ -135,7 +135,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION. +CLASS zcl_abapgit_object_clas IMPLEMENTATION. METHOD constructor. @@ -186,6 +186,8 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION. ii_xml->read( EXPORTING iv_name = 'VSEOCLASS' CHANGING cg_data = ls_vseoclass ). + set_abap_language_version( CHANGING cv_abap_language_version = ls_vseoclass-unicode ). + ii_xml->read( EXPORTING iv_name = 'ATTRIBUTES' CHANGING cg_data = lt_attributes ). @@ -205,15 +207,18 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION. mi_object_oriented_object_fct->generate_locals( is_key = ls_class_key iv_package = iv_package + iv_version = ls_vseoclass-unicode it_local_definitions = lt_local_definitions it_local_implementations = lt_local_implementations it_local_macros = lt_local_macros it_local_test_classes = lt_test_classes ). repo_apack_replacement( CHANGING ct_source = lt_source ). + mi_object_oriented_object_fct->deserialize_source( is_key = ls_class_key iv_package = iv_package + iv_version = ls_vseoclass-unicode it_source = lt_source ). ii_xml->read( EXPORTING iv_name = 'DESCRIPTIONS' @@ -303,6 +308,8 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION. ii_xml->read( EXPORTING iv_name = 'VSEOCLASS' CHANGING cg_data = ls_vseoclass ). + set_abap_language_version( CHANGING cv_abap_language_version = ls_vseoclass-unicode ). + mi_object_oriented_object_fct->create( EXPORTING iv_check = abap_false @@ -671,6 +678,8 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION. TRY. ls_vseoclass = mi_object_oriented_object_fct->get_class_properties( ls_clskey ). + clear_abap_language_version( CHANGING cv_abap_language_version = ls_vseoclass-unicode ). + CLEANUP. zcl_abapgit_language=>restore_login_language( ). diff --git a/src/objects/zcl_abapgit_object_devc.clas.abap b/src/objects/zcl_abapgit_object_devc.clas.abap index 6c347f0f3..8abd30247 100644 --- a/src/objects/zcl_abapgit_object_devc.clas.abap +++ b/src/objects/zcl_abapgit_object_devc.clas.abap @@ -495,6 +495,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION. METHOD zif_abapgit_object~deserialize. + DATA: li_package TYPE REF TO if_package, ls_package_data TYPE scompkdtln, ls_data_sign TYPE scompksign, @@ -502,7 +503,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION. ls_save_sign TYPE paksavsign. FIELD-SYMBOLS: TYPE scomppdtln. - + FIELD-SYMBOLS: TYPE any. mv_local_devclass = iv_package. @@ -540,6 +541,15 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION. " the hierarchy before. CLEAR ls_package_data-parentcl. + ASSIGN COMPONENT 'PACKKIND' OF STRUCTURE ls_package_data TO . + IF sy-subrc = 0. + set_abap_language_version( CHANGING cv_abap_language_version = ). + ENDIF. + ASSIGN COMPONENT 'PACKKIND' OF STRUCTURE ls_data_sign TO . + IF sy-subrc = 0. + = abap_true. + ENDIF. + * Fields not set: * korrflag * dlvunit @@ -656,10 +666,11 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION. update_pinf_usages( ii_package = li_package it_usage_data = lt_usage_data ). - ls_save_sign-pack = abap_true. + ls_save_sign-pack = abap_true. ls_save_sign-permis = abap_true. - ls_save_sign-elems = abap_true. + ls_save_sign-elems = abap_true. ls_save_sign-interf = abap_true. + li_package->save_generic( EXPORTING i_save_sign = ls_save_sign @@ -855,6 +866,11 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION. CLEAR: ls_package_data-korrflag. + ASSIGN COMPONENT 'PACKKIND' OF STRUCTURE ls_package_data TO . + IF sy-subrc = 0. + clear_abap_language_version( CHANGING cv_abap_language_version = ). + ENDIF. + io_xml->add( iv_name = 'DEVC' ig_data = ls_package_data ). diff --git a/src/objects/zcl_abapgit_object_fugr.clas.abap b/src/objects/zcl_abapgit_object_fugr.clas.abap index 5cf47222f..93bcfbebf 100644 --- a/src/objects/zcl_abapgit_object_fugr.clas.abap +++ b/src/objects/zcl_abapgit_object_fugr.clas.abap @@ -324,6 +324,7 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION. zcl_abapgit_factory=>get_sap_report( )->insert_report( iv_name = lv_include iv_package = iv_package + iv_version = iv_version it_source = lt_source ). ii_log->add_success( iv_msg = |Function module { -funcname } imported| @@ -396,6 +397,8 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION. lo_xml->read( EXPORTING iv_name = 'PROGDIR' CHANGING cg_data = ls_progdir ). + set_abap_language_version( CHANGING cv_abap_language_version = ls_progdir-uccheck ). + lo_xml->read( EXPORTING iv_name = 'TPOOL' CHANGING cg_data = lt_tpool_ext ). lt_tpool = read_tpool( lt_tpool_ext ). @@ -575,7 +578,7 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION. ENDLOOP. IF rv_abap_version IS INITIAL. - rv_abap_version = 'X'. + set_abap_language_version( CHANGING cv_abap_language_version = rv_abap_version ). ENDIF. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_intf.clas.abap b/src/objects/zcl_abapgit_object_intf.clas.abap index 19d74786c..8b5a7be8c 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.abap @@ -198,6 +198,8 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. CHANGING cg_data = ls_intf-vseointerf ). ENDIF. + set_abap_language_version( CHANGING cv_abap_language_version = ls_intf-vseointerf-unicode ). + mi_object_oriented_object_fct->create( EXPORTING iv_check = abap_false @@ -386,6 +388,8 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. ls_intf-vseointerf = mi_object_oriented_object_fct->get_interface_properties( ls_clskey ). + clear_abap_language_version( CHANGING cv_abap_language_version = ls_intf-vseointerf-unicode ). + " Select all active translations of documentation " Skip main language - it was already serialized SELECT DISTINCT langu @@ -512,6 +516,8 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. ls_intf = read_xml( io_xml ). ENDIF. + set_abap_language_version( CHANGING cv_abap_language_version = ls_intf-vseointerf-unicode ). + IF ls_intf-vseointerf-clsproxy = abap_true. " Proxy interfaces are managed via SPRX deserialize_proxy( iv_transport ). @@ -526,9 +532,11 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. ls_clskey-clsname = ms_item-obj_name. lt_source = zif_abapgit_object~mo_files->read_abap( ). + mi_object_oriented_object_fct->deserialize_source( is_key = ls_clskey iv_package = iv_package + iv_version = ls_intf-vseointerf-unicode it_source = lt_source ). deserialize_descriptions( it_description = ls_intf-description ). @@ -668,5 +676,6 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. zif_abapgit_object~mo_files->add_abap( lt_source ). serialize_xml( io_xml ). + ENDMETHOD. ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_intf.clas.testclasses.abap b/src/objects/zcl_abapgit_object_intf.clas.testclasses.abap index db4540204..9ca34e9cf 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.testclasses.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.testclasses.abap @@ -135,6 +135,7 @@ CLASS ltcl_unit_test IMPLEMENTATION. ms_item-obj_name = 'ZIF_ABAPGIT_TEST_INTF'. ms_item-obj_type = 'INTF'. + ms_item-abap_language_version = 'X'. " assume standard ABAP CREATE OBJECT lo_cut EXPORTING @@ -192,8 +193,6 @@ CLASS ltcl_unit_test IMPLEMENTATION. ls_expected_clskey-clsname = 'ZIF_ABAPGIT_TEST_INTF'. cl_abap_unit_assert=>assert_equals( exp = ls_expected_clskey act = mo_object_fnc->ms_deserialize_key ). - cl_abap_unit_assert=>assert_equals( exp = ls_expected_clskey - act = mo_object_fnc->ms_deserialize_key ). cl_abap_unit_assert=>assert_equals( exp = ls_expected_clskey act = mo_object_fnc->ms_descriptions_key ). diff --git a/src/objects/zcl_abapgit_object_prog.clas.abap b/src/objects/zcl_abapgit_object_prog.clas.abap index 2c88aef8f..4914fc6ac 100644 --- a/src/objects/zcl_abapgit_object_prog.clas.abap +++ b/src/objects/zcl_abapgit_object_prog.clas.abap @@ -78,6 +78,7 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION. iv_package = iv_package it_source = it_source iv_state = 'I' + iv_version = is_progdir-uccheck iv_program_type = is_progdir-subc iv_extension_type = is_progdir-name+30 ). @@ -227,6 +228,8 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION. io_xml->read( EXPORTING iv_name = 'PROGDIR' CHANGING cg_data = ls_progdir ). + set_abap_language_version( CHANGING cv_abap_language_version = ls_progdir-uccheck ). + IF strlen( lv_program_name ) > 30. " Objects with extension for example transportable Code Inspector variants (ending with ===VC) diff --git a/src/objects/zcl_abapgit_object_type.clas.abap b/src/objects/zcl_abapgit_object_type.clas.abap index 57f6c0265..64608e92f 100644 --- a/src/objects/zcl_abapgit_object_type.clas.abap +++ b/src/objects/zcl_abapgit_object_type.clas.abap @@ -52,7 +52,7 @@ CLASS zcl_abapgit_object_type IMPLEMENTATION. ENDIF. CONCATENATE c_prefix lv_typegroup INTO lv_progname. - UPDATE progdir SET uccheck = abap_true + UPDATE progdir SET uccheck = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard WHERE name = lv_progname. IF sy-subrc <> 0. zcx_abapgit_exception=>raise( 'error setting uccheck' ). @@ -143,6 +143,7 @@ CLASS zcl_abapgit_object_type IMPLEMENTATION. zcl_abapgit_factory=>get_sap_report( )->insert_report( iv_name = lv_progname iv_package = iv_package + iv_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard it_source = lt_source ). ENDIF. diff --git a/src/objects/zcl_abapgit_objects_program.clas.abap b/src/objects/zcl_abapgit_objects_program.clas.abap index 437d74b3a..c1fcd6af3 100644 --- a/src/objects/zcl_abapgit_objects_program.clas.abap +++ b/src/objects/zcl_abapgit_objects_program.clas.abap @@ -538,22 +538,42 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION. METHOD insert_program. - CALL FUNCTION 'RPY_PROGRAM_INSERT' - EXPORTING - development_class = iv_package - program_name = is_progdir-name - program_type = is_progdir-subc - title_string = iv_title - save_inactive = 'I' - suppress_dialog = abap_true - TABLES - source_extended = it_source - EXCEPTIONS - already_exists = 1 - cancelled = 2 - name_not_allowed = 3 - permission_error = 4 - OTHERS = 5. + TRY. + CALL FUNCTION 'RPY_PROGRAM_INSERT' + EXPORTING + development_class = iv_package + program_name = is_progdir-name + program_type = is_progdir-subc + title_string = iv_title + save_inactive = 'I' + suppress_dialog = abap_true + uccheck = is_progdir-uccheck " does not exist on lower releases + TABLES + source_extended = it_source + EXCEPTIONS + already_exists = 1 + cancelled = 2 + name_not_allowed = 3 + permission_error = 4 + OTHERS = 5. + CATCH cx_sy_dyn_call_param_not_found. + CALL FUNCTION 'RPY_PROGRAM_INSERT' + EXPORTING + development_class = iv_package + program_name = is_progdir-name + program_type = is_progdir-subc + title_string = iv_title + save_inactive = 'I' + suppress_dialog = abap_true + TABLES + source_extended = it_source + EXCEPTIONS + already_exists = 1 + cancelled = 2 + name_not_allowed = 3 + permission_error = 4 + OTHERS = 5. + ENDTRY. IF sy-subrc = 3. " For cases that standard function does not handle (like FUGR), @@ -564,6 +584,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION. iv_package = iv_package it_source = it_source iv_state = 'A' + iv_version = is_progdir-uccheck iv_program_type = is_progdir-subc ). zcl_abapgit_factory=>get_sap_report( )->insert_report( @@ -571,6 +592,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION. iv_package = iv_package it_source = it_source iv_state = 'I' + iv_version = is_progdir-uccheck iv_program_type = is_progdir-subc ). ELSEIF sy-subrc > 0. @@ -849,6 +871,8 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION. ls_progdir = zcl_abapgit_factory=>get_sap_report( )->read_progdir( lv_program_name ). + clear_abap_language_version( CHANGING cv_abap_language_version = ls_progdir-uccheck ). + IF io_xml IS BOUND. li_xml = io_xml. ELSE. diff --git a/src/objects/zcl_abapgit_objects_super.clas.abap b/src/objects/zcl_abapgit_objects_super.clas.abap index 604184c30..74326b75b 100644 --- a/src/objects/zcl_abapgit_objects_super.clas.abap +++ b/src/objects/zcl_abapgit_objects_super.clas.abap @@ -82,13 +82,29 @@ CLASS zcl_abapgit_objects_super DEFINITION VALUE(iv_no_ask_delete_append) TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception . - + METHODS set_abap_language_version + CHANGING + !cv_abap_language_version TYPE uccheck. + METHODS clear_abap_language_version + CHANGING + !cv_abap_language_version TYPE uccheck. PRIVATE SECTION. ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION. +CLASS zcl_abapgit_objects_super IMPLEMENTATION. + + + METHOD clear_abap_language_version. + + " Used during serializing of objects + IF ms_item-abap_language_version <> zcl_abapgit_abap_language_vers=>c_any_abap_language_version. + " ABAP language is defined in repo setting so there's no need to serialize it + CLEAR cv_abap_language_version. + ENDIF. + + ENDMETHOD. METHOD constructor. @@ -282,6 +298,17 @@ CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION. ENDMETHOD. + METHOD set_abap_language_version. + + " Used during deserializing of objects + IF ms_item-abap_language_version <> zcl_abapgit_abap_language_vers=>c_any_abap_language_version. + " ABAP language is defined in repo setting so set it accordingly + cv_abap_language_version = ms_item-abap_language_version. + ENDIF. + + ENDMETHOD. + + METHOD set_default_package. " In certain cases we need to set the package via ABAP memory