From becfe9bb080e9fc15ab75577c2b7357e60714f8a Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Mon, 21 Apr 2025 16:27:32 +0200 Subject: [PATCH 1/8] bugfix: offline repo pull `/data/` (#7216) --- src/repo/zcl_abapgit_repo.clas.abap | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/repo/zcl_abapgit_repo.clas.abap b/src/repo/zcl_abapgit_repo.clas.abap index 3c952b3f9..578e5eff1 100644 --- a/src/repo/zcl_abapgit_repo.clas.abap +++ b/src/repo/zcl_abapgit_repo.clas.abap @@ -312,9 +312,7 @@ CLASS zcl_abapgit_repo IMPLEMENTATION. ENDIF. CREATE OBJECT ri_config TYPE zcl_abapgit_data_config. - mi_data_config = ri_config. - " Assume remote data has been loaded already READ TABLE mt_remote ASSIGNING WITH KEY file_path COMPONENTS path = zif_abapgit_data_config=>c_default_path. @@ -322,6 +320,12 @@ CLASS zcl_abapgit_repo IMPLEMENTATION. ri_config->from_json( mt_remote ). ENDIF. +* offline repos does not have the remote files before the zip is choosen +* so make sure the json is read after zip file is loaded + IF lines( mt_remote ) > 0. + mi_data_config = ri_config. + ENDIF. + ENDMETHOD. From cc414d26e03d01e1582d68d9102b0caab01d3c64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Tue, 22 Apr 2025 06:43:52 +0200 Subject: [PATCH 2/8] New error handling for not supported object types (#7215) Co-authored-by: Lars Hvam --- .../zcl_abapgit_object_common_aff.clas.abap | 4 +- .../aff/zcl_abapgit_object_smbc.clas.abap | 48 ++++- .../aff/zcl_abapgit_object_uiad.clas.abap | 50 +++-- .../aff/zcl_abapgit_object_uipg.clas.abap | 33 ++- .../aff/zcl_abapgit_object_uist.clas.abap | 31 ++- src/objects/zcl_abapgit_object_aifc.clas.abap | 84 ++------ src/objects/zcl_abapgit_object_amsd.clas.abap | 4 +- src/objects/zcl_abapgit_object_apis.clas.abap | 4 +- src/objects/zcl_abapgit_object_bdef.clas.abap | 4 +- src/objects/zcl_abapgit_object_cmpt.clas.abap | 202 ++++++++---------- src/objects/zcl_abapgit_object_dcls.clas.abap | 29 +++ src/objects/zcl_abapgit_object_ddls.clas.abap | 4 +- src/objects/zcl_abapgit_object_ddlx.clas.abap | 24 +++ src/objects/zcl_abapgit_object_drul.clas.abap | 4 +- src/objects/zcl_abapgit_object_dtdc.clas.abap | 4 +- src/objects/zcl_abapgit_object_ftgl.clas.abap | 4 +- src/objects/zcl_abapgit_object_http.clas.abap | 37 ++-- src/objects/zcl_abapgit_object_iobj.clas.abap | 87 ++++---- src/objects/zcl_abapgit_object_jobd.clas.abap | 41 +++- src/objects/zcl_abapgit_object_odso.clas.abap | 66 +++--- src/objects/zcl_abapgit_object_samc.clas.abap | 20 ++ src/objects/zcl_abapgit_object_sapc.clas.abap | 20 ++ .../zcl_abapgit_object_saxx_super.clas.abap | 54 ++--- src/objects/zcl_abapgit_object_sktd.clas.abap | 4 +- src/objects/zcl_abapgit_object_smtg.clas.abap | 3 +- src/objects/zcl_abapgit_object_sod1.clas.abap | 4 +- src/objects/zcl_abapgit_object_sod2.clas.abap | 4 +- src/objects/zcl_abapgit_object_sqsc.clas.abap | 4 +- src/objects/zcl_abapgit_object_srfc.clas.abap | 4 +- src/objects/zcl_abapgit_object_srvb.clas.abap | 4 +- src/objects/zcl_abapgit_object_srvd.clas.abap | 4 +- src/objects/zcl_abapgit_object_sush.clas.abap | 2 +- src/objects/zcl_abapgit_object_wdcc.clas.abap | 57 +++-- src/objects/zcl_abapgit_objects.clas.abap | 45 ++-- .../zcl_abapgit_objects_bridge.clas.abap | 3 +- .../zcl_abapgit_objects_generic.clas.abap | 2 +- src/zcx_abapgit_type_not_supported.clas.abap | 51 +++++ src/zcx_abapgit_type_not_supported.clas.xml | 17 ++ 38 files changed, 645 insertions(+), 421 deletions(-) create mode 100644 src/zcx_abapgit_type_not_supported.clas.abap create mode 100644 src/zcx_abapgit_type_not_supported.clas.xml diff --git a/src/objects/aff/zcl_abapgit_object_common_aff.clas.abap b/src/objects/aff/zcl_abapgit_object_common_aff.clas.abap index e7e6f7a3b..5a892810d 100644 --- a/src/objects/aff/zcl_abapgit_object_common_aff.clas.abap +++ b/src/objects/aff/zcl_abapgit_object_common_aff.clas.abap @@ -30,7 +30,7 @@ CLASS zcl_abapgit_object_common_aff DEFINITION !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. TYPES: BEGIN OF ty_extension_mapper_pair, @@ -106,7 +106,7 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION. ENDTRY. IF lv_is_supported IS INITIAL. - zcx_abapgit_exception=>raise( |Object type { is_item-obj_type } is not supported by this system| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDIF. ENDMETHOD. diff --git a/src/objects/aff/zcl_abapgit_object_smbc.clas.abap b/src/objects/aff/zcl_abapgit_object_smbc.clas.abap index ca1b7d606..8bfa3f5d4 100644 --- a/src/objects/aff/zcl_abapgit_object_smbc.clas.abap +++ b/src/objects/aff/zcl_abapgit_object_smbc.clas.abap @@ -6,13 +6,44 @@ CLASS zcl_abapgit_object_smbc DEFINITION PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_SMBC IMPLEMENTATION. +CLASS zcl_abapgit_object_smbc IMPLEMENTATION. + + METHOD constructor. + + DATA: lo_handler TYPE REF TO object, + lo_db_api TYPE REF TO object, + lr_data TYPE REF TO data. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + TRY. + CREATE OBJECT lo_handler TYPE ('CL_SMBC_AFF_OBJECT_HANDLER'). + CREATE OBJECT lo_db_api TYPE ('CL_MBC_BUSINESS_CONFIG_DB'). + CREATE DATA lr_data TYPE ('SMBC_CONFIG'). + CATCH cx_sy_create_object_error + cx_sy_create_data_error. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. + + ENDMETHOD. METHOD zif_abapgit_object~changed_by. @@ -24,15 +55,12 @@ CLASS ZCL_ABAPGIT_OBJECT_SMBC IMPLEMENTATION. FIELD-SYMBOLS: TYPE any, TYPE any. - TRY. - CREATE OBJECT lo_handler TYPE ('CL_SMBC_AFF_OBJECT_HANDLER'). - CREATE OBJECT lo_db_api TYPE ('CL_MBC_BUSINESS_CONFIG_DB'). - CREATE DATA lr_data TYPE ('SMBC_CONFIG'). - ASSIGN lr_data->* TO . - CATCH cx_sy_create_object_error - cx_sy_create_data_error. - zcx_abapgit_exception=>raise( 'SMBC not supported' ). - ENDTRY. + + CREATE OBJECT lo_handler TYPE ('CL_SMBC_AFF_OBJECT_HANDLER'). + CREATE OBJECT lo_db_api TYPE ('CL_MBC_BUSINESS_CONFIG_DB'). + CREATE DATA lr_data TYPE ('SMBC_CONFIG'). + ASSIGN lr_data->* TO . + lv_technical_id = ms_item-obj_name. CALL METHOD lo_db_api->('IF_MBC_BUSINESS_CONFIG_DB~READ') EXPORTING diff --git a/src/objects/aff/zcl_abapgit_object_uiad.clas.abap b/src/objects/aff/zcl_abapgit_object_uiad.clas.abap index 528d3eb9b..57abd331c 100644 --- a/src/objects/aff/zcl_abapgit_object_uiad.clas.abap +++ b/src/objects/aff/zcl_abapgit_object_uiad.clas.abap @@ -8,13 +8,44 @@ CLASS zcl_abapgit_object_uiad DEFINITION METHODS zif_abapgit_object~changed_by REDEFINITION . + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_UIAD IMPLEMENTATION. +CLASS zcl_abapgit_object_uiad IMPLEMENTATION. + + METHOD constructor. + + DATA: lo_db_api TYPE REF TO object, + lr_data TYPE REF TO data. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + TRY. + CALL METHOD ('CL_SUI_UIAD_DB_ACCESS')=>('GET_INSTANCE') + RECEIVING + ro_instance = lo_db_api. + CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA'). + CATCH cx_sy_dyn_call_error + cx_sy_create_data_error. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. + + ENDMETHOD. METHOD zif_abapgit_object~changed_by. @@ -27,16 +58,11 @@ CLASS ZCL_ABAPGIT_OBJECT_UIAD IMPLEMENTATION. FIELD-SYMBOLS: TYPE any, TYPE any. - TRY. - CALL METHOD ('CL_SUI_UIAD_DB_ACCESS')=>('GET_INSTANCE') - RECEIVING - ro_instance = lo_db_api. - CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA'). - ASSIGN lr_data->* TO . - CATCH cx_sy_create_object_error - cx_sy_create_data_error. - zcx_abapgit_exception=>raise( 'Object UIAD not supported' ). - ENDTRY. + CALL METHOD ('CL_SUI_UIAD_DB_ACCESS')=>('GET_INSTANCE') + RECEIVING + ro_instance = lo_db_api. + CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA'). + ASSIGN lr_data->* TO . TRY. lv_object_key = ms_item-obj_name. @@ -46,7 +72,7 @@ CLASS ZCL_ABAPGIT_OBJECT_UIAD IMPLEMENTATION. iv_version = 'A' iv_language = mv_language RECEIVING - rs_metadata = . + rs_metadata = . ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . rv_user = . diff --git a/src/objects/aff/zcl_abapgit_object_uipg.clas.abap b/src/objects/aff/zcl_abapgit_object_uipg.clas.abap index f7611d9c9..d69ceaaea 100644 --- a/src/objects/aff/zcl_abapgit_object_uipg.clas.abap +++ b/src/objects/aff/zcl_abapgit_object_uipg.clas.abap @@ -8,13 +8,44 @@ CLASS zcl_abapgit_object_uipg DEFINITION METHODS zif_abapgit_object~changed_by REDEFINITION . + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_UIPG IMPLEMENTATION. +CLASS zcl_abapgit_object_uipg IMPLEMENTATION. + + METHOD constructor. + + DATA: lo_db_api TYPE REF TO object, + lr_data TYPE REF TO data. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + TRY. + CALL METHOD ('/UI2/CL_UIPG_DB_ACCESS')=>('GET_INSTANCE') + RECEIVING + ro_instance = lo_db_api. + CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA'). + CATCH cx_sy_dyn_call_error + cx_sy_create_data_error. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. + + ENDMETHOD. METHOD zif_abapgit_object~changed_by. diff --git a/src/objects/aff/zcl_abapgit_object_uist.clas.abap b/src/objects/aff/zcl_abapgit_object_uist.clas.abap index dd41d5e2c..dbb1a1e52 100644 --- a/src/objects/aff/zcl_abapgit_object_uist.clas.abap +++ b/src/objects/aff/zcl_abapgit_object_uist.clas.abap @@ -8,13 +8,42 @@ CLASS zcl_abapgit_object_uist DEFINITION METHODS zif_abapgit_object~changed_by REDEFINITION . + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_UIST IMPLEMENTATION. +CLASS zcl_abapgit_object_uist IMPLEMENTATION. + + METHOD constructor. + + DATA: lo_db_api TYPE REF TO object, + lr_data TYPE REF TO data. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + TRY. + CREATE OBJECT lo_db_api TYPE ('/UI2/CL_UIST_SVAL_SQL'). + CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA'). + CATCH cx_sy_create_object_error + cx_sy_create_data_error. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. + + ENDMETHOD. METHOD zif_abapgit_object~changed_by. diff --git a/src/objects/zcl_abapgit_object_aifc.clas.abap b/src/objects/zcl_abapgit_object_aifc.clas.abap index 55dc58237..f466b45e0 100644 --- a/src/objects/zcl_abapgit_object_aifc.clas.abap +++ b/src/objects/zcl_abapgit_object_aifc.clas.abap @@ -15,7 +15,7 @@ CLASS zcl_abapgit_object_aifc DEFINITION !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. TYPES: @@ -112,7 +112,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. METHOD authorization_check. - DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error. DATA: lx_root TYPE REF TO cx_root. rv_success = abap_false. @@ -121,9 +120,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. RECEIVING rv_success = rv_success. - CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error. - zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported' - ix_previous = lx_dyn_call_error ). CATCH cx_root INTO lx_root. zcx_abapgit_exception=>raise_with_text( lx_root ). ENDTRY. @@ -147,7 +143,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. METHOD compress_interface. - DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error. DATA: lx_root TYPE REF TO cx_root. TRY. @@ -157,9 +152,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. RECEIVING rv_success = rv_success. - CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error. - zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported' - ix_previous = lx_dyn_call_error ). CATCH cx_root INTO lx_root. zcx_abapgit_exception=>raise_with_text( lx_root ). ENDTRY. @@ -183,7 +175,7 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. rr_abapgit_aifc_util = mo_abapgit_util. CATCH cx_sy_dyn_call_error INTO lx_exc_ref. - zcx_abapgit_exception=>raise( 'AIFC not supported' ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. @@ -198,7 +190,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS: TYPE any. - DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error. DATA: lx_root TYPE REF TO cx_root. lr_structdescr ?= cl_abap_typedescr=>describe_by_name( p_name = '/AIF/T_FINF' ). @@ -241,9 +232,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. rv_success = rv_success. ENDIF. - CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error. - zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported' - ix_previous = lx_dyn_call_error ). CATCH cx_root INTO lx_root. zcx_abapgit_exception=>raise_with_text( lx_root ). ENDTRY. @@ -251,7 +239,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. METHOD get_content_compress. - DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error. DATA: lx_root TYPE REF TO cx_root. DATA: lo_log TYPE REF TO object. @@ -267,9 +254,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. iv_package = iv_package iv_depl_id = ms_icd_data_key-depl_scenario. - CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error. - zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported' - ix_previous = lx_dyn_call_error ). CATCH cx_root INTO lx_root. zcx_abapgit_exception=>raise_with_text( lx_root ). ENDTRY. @@ -277,7 +261,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. METHOD handle_table_data. - DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error. DATA: lx_root TYPE REF TO cx_root. TRY. @@ -286,9 +269,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. iv_tabname = iv_tabname it_data = it_data. - CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error. - zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported' - ix_previous = lx_dyn_call_error ). CATCH cx_root INTO lx_root. zcx_abapgit_exception=>raise_with_text( lx_root ). ENDTRY. @@ -296,7 +276,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. METHOD validate_interface. - DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error. DATA: lx_root TYPE REF TO cx_root. rv_success = abap_false. @@ -307,9 +286,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. RECEIVING rv_success = rv_success. - CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error. - zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported' - ix_previous = lx_dyn_call_error ). CATCH cx_root INTO lx_root. zcx_abapgit_exception=>raise_with_text( lx_root ). ENDTRY. @@ -317,25 +293,18 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - DATA lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error. - DATA ls_icd_data_key TYPE ty_icd_data_key. ls_icd_data_key-depl_scenario = ms_icd_data_key-depl_scenario. ls_icd_data_key-ns = ms_icd_data_key-ns. ls_icd_data_key-ifname = ms_icd_data_key-ifname. ls_icd_data_key-ifver2 = ms_icd_data_key-ifver2. - TRY. - CALL METHOD mo_abapgit_util->('/AIF/IF_ABAPGIT_AIFC_UTIL~CHANGED_BY') - EXPORTING - is_key = ls_icd_data_key - RECEIVING - rv_user = rv_user. + CALL METHOD mo_abapgit_util->('/AIF/IF_ABAPGIT_AIFC_UTIL~CHANGED_BY') + EXPORTING + is_key = ls_icd_data_key + RECEIVING + rv_user = rv_user. - CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error. - zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported' - ix_previous = lx_dyn_call_error ). - ENDTRY. ENDMETHOD. @@ -458,8 +427,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. METHOD zif_abapgit_object~exists. - DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error. - DATA ls_icd_data_key TYPE ty_icd_data_key. ls_icd_data_key-depl_scenario = ms_icd_data_key-depl_scenario. @@ -469,17 +436,12 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. rv_bool = abap_false. - TRY. - CALL METHOD mo_abapgit_util->('/AIF/IF_ABAPGIT_AIFC_UTIL~EXISTS') - EXPORTING - is_key = ls_icd_data_key - RECEIVING - rv_bool = rv_bool. + CALL METHOD mo_abapgit_util->('/AIF/IF_ABAPGIT_AIFC_UTIL~EXISTS') + EXPORTING + is_key = ls_icd_data_key + RECEIVING + rv_bool = rv_bool. - CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error. - zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported' - ix_previous = lx_dyn_call_error ). - ENDTRY. ENDMETHOD. @@ -549,9 +511,7 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. METHOD zif_abapgit_object~serialize. - DATA: lx_root TYPE REF TO cx_root. - DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error. - + DATA lx_root TYPE REF TO cx_root. DATA ls_icd_data_key TYPE ty_icd_data_key. DATA lt_ifdata TYPE ty_table_data_t. @@ -575,17 +535,11 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. ls_icd_data_key-ifname = ms_icd_data_key-ifname. ls_icd_data_key-ifver2 = ms_icd_data_key-ifver2. - TRY. - CALL METHOD mo_abapgit_util->('/AIF/IF_ABAPGIT_AIFC_UTIL~GET_IF_DATA') - EXPORTING - is_key = ls_icd_data_key - RECEIVING - rt_ifdata = lt_ifdata. - - CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error. - zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported' - ix_previous = lx_dyn_call_error ). - ENDTRY. + CALL METHOD mo_abapgit_util->('/AIF/IF_ABAPGIT_AIFC_UTIL~GET_IF_DATA') + EXPORTING + is_key = ls_icd_data_key + RECEIVING + rt_ifdata = lt_ifdata. LOOP AT lt_ifdata REFERENCE INTO lr_ifdata. @@ -610,7 +564,7 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION. CATCH cx_root INTO lx_root. zcx_abapgit_exception=>raise( iv_text = 'Serialize not possible' - ix_previous = lx_dyn_call_error ). + ix_previous = lx_root ). ENDTRY. ENDMETHOD. ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_amsd.clas.abap b/src/objects/zcl_abapgit_object_amsd.clas.abap index 08b001492..2de35c92e 100644 --- a/src/objects/zcl_abapgit_object_amsd.clas.abap +++ b/src/objects/zcl_abapgit_object_amsd.clas.abap @@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_amsd DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -106,7 +106,7 @@ CLASS zcl_abapgit_object_amsd IMPLEMENTATION. CREATE OBJECT mi_persistence TYPE ('CL_AMDP_SCHEMA_OBJECT_PERSIST'). CATCH cx_sy_create_error. - zcx_abapgit_exception=>raise( |AMSD not supported by your NW release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_apis.clas.abap b/src/objects/zcl_abapgit_object_apis.clas.abap index a367dd248..b754beb19 100644 --- a/src/objects/zcl_abapgit_object_apis.clas.abap +++ b/src/objects/zcl_abapgit_object_apis.clas.abap @@ -15,7 +15,7 @@ CLASS zcl_abapgit_object_apis DEFINITION !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -42,7 +42,7 @@ CLASS zcl_abapgit_object_apis IMPLEMENTATION. TRY. CREATE DATA lr_data TYPE (c_model). CATCH cx_sy_create_error. - zcx_abapgit_exception=>raise( |APIS not supported by your NW release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_bdef.clas.abap b/src/objects/zcl_abapgit_object_bdef.clas.abap index 6b5c98f13..7c9cc7acc 100644 --- a/src/objects/zcl_abapgit_object_bdef.clas.abap +++ b/src/objects/zcl_abapgit_object_bdef.clas.abap @@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_bdef DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -208,7 +208,7 @@ CLASS zcl_abapgit_object_bdef IMPLEMENTATION. CREATE OBJECT mi_persistence TYPE ('CL_BDEF_OBJECT_PERSIST'). CATCH cx_sy_create_error. - zcx_abapgit_exception=>raise( |BDEF not supported by your NW release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_cmpt.clas.abap b/src/objects/zcl_abapgit_object_cmpt.clas.abap index a20b5cc56..7fa9bea69 100644 --- a/src/objects/zcl_abapgit_object_cmpt.clas.abap +++ b/src/objects/zcl_abapgit_object_cmpt.clas.abap @@ -9,7 +9,7 @@ CLASS zcl_abapgit_object_cmpt DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. INTERFACES zif_abapgit_object. PROTECTED SECTION. @@ -38,7 +38,7 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION. r_ref_db_access = mo_cmp_db. CATCH cx_root. - zcx_abapgit_exception=>raise( 'CMPT not supported' ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. mv_name = ms_item-obj_name. @@ -50,21 +50,16 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION. DATA: lo_cmp_template TYPE REF TO object. - TRY. - CALL METHOD ('CL_CMP_TEMPLATE')=>('S_CREATE_FROM_DB') - EXPORTING - i_name = mv_name - i_version = 'A' - RECEIVING - r_ref_template = lo_cmp_template. + CALL METHOD ('CL_CMP_TEMPLATE')=>('S_CREATE_FROM_DB') + EXPORTING + i_name = mv_name + i_version = 'A' + RECEIVING + r_ref_template = lo_cmp_template. - CALL METHOD lo_cmp_template->('IF_CMP_TEMPLATE_EDIT~GET_CHANGE_USER') - RECEIVING - r_user = rv_user. - - CATCH cx_root. - zcx_abapgit_exception=>raise( 'CMPT not supported' ). - ENDTRY. + CALL METHOD lo_cmp_template->('IF_CMP_TEMPLATE_EDIT~GET_CHANGE_USER') + RECEIVING + r_user = rv_user. ENDMETHOD. @@ -73,19 +68,14 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION. DATA: lv_deleted TYPE abap_bool. - TRY. - CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~DELETE_TEMPLATE') - EXPORTING - i_name = mv_name - i_version = 'A' - i_flg_header = abap_true - i_flg_lines = abap_true - RECEIVING - r_flg_deleted = lv_deleted. - - CATCH cx_root. - zcx_abapgit_exception=>raise( 'CMPT not supported' ). - ENDTRY. + CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~DELETE_TEMPLATE') + EXPORTING + i_name = mv_name + i_version = 'A' + i_flg_header = abap_true + i_flg_lines = abap_true + RECEIVING + r_flg_deleted = lv_deleted. IF lv_deleted = abap_false. zcx_abapgit_exception=>raise( |Error deleting CMPT { ms_item-obj_name }| ). @@ -103,37 +93,32 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION. TYPE any, TYPE any. - TRY. - CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE'). - ASSIGN lr_template->* TO . + CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE'). + ASSIGN lr_template->* TO . - io_xml->read( - EXPORTING - iv_name = 'CMPT' - CHANGING - cg_data = ). + io_xml->read( + EXPORTING + iv_name = 'CMPT' + CHANGING + cg_data = ). - ASSIGN COMPONENT 'STR_HEADER' OF STRUCTURE TO . - IF sy-subrc = 0. - ASSIGN COMPONENT 'NAME' OF STRUCTURE TO . - IF sy-subrc = 0. - = ms_item-obj_name. - ENDIF. - ASSIGN COMPONENT 'VERSION' OF STRUCTURE TO . - IF sy-subrc = 0. - = 'A'. - ENDIF. - ENDIF. + ASSIGN COMPONENT 'STR_HEADER' OF STRUCTURE TO . + IF sy-subrc = 0. + ASSIGN COMPONENT 'NAME' OF STRUCTURE TO . + IF sy-subrc = 0. + = ms_item-obj_name. + ENDIF. + ASSIGN COMPONENT 'VERSION' OF STRUCTURE TO . + IF sy-subrc = 0. + = 'A'. + ENDIF. + ENDIF. - CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~SAVE_TEMPLATE') - EXPORTING - i_template_db = - i_flg_header = abap_true - i_flg_lines = abap_true. - - CATCH cx_root. - zcx_abapgit_exception=>raise( 'CMPT not supported' ). - ENDTRY. + CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~SAVE_TEMPLATE') + EXPORTING + i_template_db = + i_flg_header = abap_true + i_flg_lines = abap_true. corr_insert( iv_package ). @@ -142,24 +127,20 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION. METHOD zif_abapgit_object~exists. - TRY. - CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS') - EXPORTING - i_name = mv_name - i_version = 'A' - RECEIVING - r_flg_exists = rv_bool. - IF rv_bool = abap_false. - CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS') - EXPORTING - i_name = mv_name - i_version = 'I' - RECEIVING - r_flg_exists = rv_bool. - ENDIF. - CATCH cx_root. - zcx_abapgit_exception=>raise( 'CMPT not supported' ). - ENDTRY. + CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS') + EXPORTING + i_name = mv_name + i_version = 'A' + RECEIVING + r_flg_exists = rv_bool. + IF rv_bool = abap_false. + CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS') + EXPORTING + i_name = mv_name + i_version = 'I' + RECEIVING + r_flg_exists = rv_bool. + ENDIF. ENDMETHOD. @@ -218,47 +199,42 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION. TYPE any, TYPE any. - TRY. - CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE'). - ASSIGN lr_template->* TO . + CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE'). + ASSIGN lr_template->* TO . - CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~READ_TEMPLATE') - EXPORTING - i_name = |{ ms_item-obj_name }| - i_version = 'A' - RECEIVING - r_template = . + CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~READ_TEMPLATE') + EXPORTING + i_name = |{ ms_item-obj_name }| + i_version = 'A' + RECEIVING + r_template = . - ASSIGN COMPONENT 'STR_HEADER' OF STRUCTURE TO . - IF sy-subrc = 0. - ASSIGN COMPONENT 'NAME' OF STRUCTURE TO . - IF sy-subrc = 0. - CLEAR . - ENDIF. - ASSIGN COMPONENT 'VERSION' OF STRUCTURE TO . - IF sy-subrc = 0. - CLEAR . - ENDIF. - ASSIGN COMPONENT 'CHANGED_ON' OF STRUCTURE TO . - IF sy-subrc = 0. - CLEAR . - ENDIF. - ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . - IF sy-subrc = 0. - CLEAR . - ENDIF. - ASSIGN COMPONENT 'CHANGED_TS' OF STRUCTURE TO . - IF sy-subrc = 0. - CLEAR . - ENDIF. - ENDIF. + ASSIGN COMPONENT 'STR_HEADER' OF STRUCTURE TO . + IF sy-subrc = 0. + ASSIGN COMPONENT 'NAME' OF STRUCTURE TO . + IF sy-subrc = 0. + CLEAR . + ENDIF. + ASSIGN COMPONENT 'VERSION' OF STRUCTURE TO . + IF sy-subrc = 0. + CLEAR . + ENDIF. + ASSIGN COMPONENT 'CHANGED_ON' OF STRUCTURE TO . + IF sy-subrc = 0. + CLEAR . + ENDIF. + ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . + IF sy-subrc = 0. + CLEAR . + ENDIF. + ASSIGN COMPONENT 'CHANGED_TS' OF STRUCTURE TO . + IF sy-subrc = 0. + CLEAR . + ENDIF. + ENDIF. - io_xml->add( iv_name = 'CMPT' - ig_data = ). - - CATCH cx_root. - zcx_abapgit_exception=>raise( 'CMPT not supported' ). - ENDTRY. + io_xml->add( iv_name = 'CMPT' + ig_data = ). ENDMETHOD. ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_dcls.clas.abap b/src/objects/zcl_abapgit_object_dcls.clas.abap index ec71a8a97..830e5a4c9 100644 --- a/src/objects/zcl_abapgit_object_dcls.clas.abap +++ b/src/objects/zcl_abapgit_object_dcls.clas.abap @@ -2,6 +2,14 @@ CLASS zcl_abapgit_object_dcls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje PUBLIC SECTION. INTERFACES zif_abapgit_object. + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. @@ -10,6 +18,27 @@ ENDCLASS. CLASS zcl_abapgit_object_dcls IMPLEMENTATION. + METHOD constructor. + + DATA: lo_dcl TYPE REF TO object. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + TRY. + CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') + RECEIVING + ro_handler = lo_dcl. + + CATCH cx_sy_ref_creation. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. + + ENDMETHOD. + METHOD zif_abapgit_object~changed_by. DATA: lr_data TYPE REF TO data, diff --git a/src/objects/zcl_abapgit_object_ddls.clas.abap b/src/objects/zcl_abapgit_object_ddls.clas.abap index 063a003a4..618c7d602 100644 --- a/src/objects/zcl_abapgit_object_ddls.clas.abap +++ b/src/objects/zcl_abapgit_object_ddls.clas.abap @@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_ddls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. METHODS open_adt_stob @@ -51,7 +51,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. RECEIVING handler = lo_ddl. CATCH cx_root. - zcx_abapgit_exception=>raise( 'Object type DDLS is not supported by this system' ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_ddlx.clas.abap b/src/objects/zcl_abapgit_object_ddlx.clas.abap index e543dcaab..392093782 100644 --- a/src/objects/zcl_abapgit_object_ddlx.clas.abap +++ b/src/objects/zcl_abapgit_object_ddlx.clas.abap @@ -2,6 +2,14 @@ CLASS zcl_abapgit_object_ddlx DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje PUBLIC SECTION. INTERFACES zif_abapgit_object. + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. DATA mi_persistence TYPE REF TO if_wb_object_persist . @@ -24,6 +32,22 @@ ENDCLASS. CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. + METHOD constructor. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + TRY. + get_persistence( ). + CATCH zcx_abapgit_exception. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. + + ENDMETHOD. + METHOD clear_field. diff --git a/src/objects/zcl_abapgit_object_drul.clas.abap b/src/objects/zcl_abapgit_object_drul.clas.abap index a893245fc..b877cb5c0 100644 --- a/src/objects/zcl_abapgit_object_drul.clas.abap +++ b/src/objects/zcl_abapgit_object_drul.clas.abap @@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_drul DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -130,7 +130,7 @@ CLASS zcl_abapgit_object_drul IMPLEMENTATION. CREATE OBJECT mi_persistence TYPE ('CL_DRUL_WB_OBJECT_PERSIST'). CATCH cx_sy_create_error. - zcx_abapgit_exception=>raise( |DRUL not supported by your NW release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_dtdc.clas.abap b/src/objects/zcl_abapgit_object_dtdc.clas.abap index ebb01db14..809b850e8 100644 --- a/src/objects/zcl_abapgit_object_dtdc.clas.abap +++ b/src/objects/zcl_abapgit_object_dtdc.clas.abap @@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_dtdc DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -151,7 +151,7 @@ CLASS zcl_abapgit_object_dtdc IMPLEMENTATION. CREATE OBJECT mi_persistence TYPE ('CL_DTDC_OBJECT_PERSIST'). CATCH cx_sy_create_error. - zcx_abapgit_exception=>raise( |DTDC not supported by your NW release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_ftgl.clas.abap b/src/objects/zcl_abapgit_object_ftgl.clas.abap index 59cdf46ed..4047c3fd2 100644 --- a/src/objects/zcl_abapgit_object_ftgl.clas.abap +++ b/src/objects/zcl_abapgit_object_ftgl.clas.abap @@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_ftgl DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -60,7 +60,7 @@ CLASS zcl_abapgit_object_ftgl IMPLEMENTATION. TRY. CREATE DATA mr_toggle TYPE ('FTGL_S_WB_FEATURE_TOGGLE'). CATCH cx_root. - zcx_abapgit_exception=>raise( |FTGL not supported in your NW release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_http.clas.abap b/src/objects/zcl_abapgit_object_http.clas.abap index 3824833cf..b6569ea12 100644 --- a/src/objects/zcl_abapgit_object_http.clas.abap +++ b/src/objects/zcl_abapgit_object_http.clas.abap @@ -14,7 +14,7 @@ CLASS zcl_abapgit_object_http DEFINITION io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -66,7 +66,7 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION. TRY. CREATE DATA lr_dummy TYPE ('UCONHTTPSERVHEAD'). CATCH cx_root. - zcx_abapgit_exception=>raise( 'HTTP not supported' ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. @@ -74,14 +74,10 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - TRY. - SELECT SINGLE changedby FROM ('UCONHTTPSERVHEAD') INTO rv_user WHERE id = ms_item-obj_name. - IF sy-subrc <> 0. - rv_user = c_user_unknown. - ENDIF. - CATCH cx_root. - zcx_abapgit_exception=>raise( 'HTTP not supported' ). - ENDTRY. + SELECT SINGLE changedby FROM ('UCONHTTPSERVHEAD') INTO rv_user WHERE id = ms_item-obj_name. + IF sy-subrc <> 0. + rv_user = c_user_unknown. + ENDIF. ENDMETHOD. @@ -91,14 +87,11 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION. DATA lv_name TYPE c LENGTH 30. lv_name = ms_item-obj_name. - TRY. - CALL METHOD ('CL_UCON_API_FACTORY')=>('DELETE_HTTP_SERVICE') - EXPORTING - name = lv_name - devclass = iv_package. - CATCH cx_root. - zcx_abapgit_exception=>raise( 'HTTP not supported' ). - ENDTRY. + + CALL METHOD ('CL_UCON_API_FACTORY')=>('DELETE_HTTP_SERVICE') + EXPORTING + name = lv_name + devclass = iv_package. ENDMETHOD. @@ -211,12 +204,8 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION. DATA lv_id TYPE c LENGTH 30. - TRY. - SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = ms_item-obj_name AND version = 'A'. - rv_bool = boolc( sy-subrc = 0 ). - CATCH cx_root. - zcx_abapgit_exception=>raise( 'HTTP not supported' ). - ENDTRY. + SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = ms_item-obj_name AND version = 'A'. + rv_bool = boolc( sy-subrc = 0 ). ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iobj.clas.abap b/src/objects/zcl_abapgit_object_iobj.clas.abap index ed1d4f4da..7fa607297 100644 --- a/src/objects/zcl_abapgit_object_iobj.clas.abap +++ b/src/objects/zcl_abapgit_object_iobj.clas.abap @@ -2,6 +2,14 @@ CLASS zcl_abapgit_object_iobj DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje PUBLIC SECTION. INTERFACES zif_abapgit_object. + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. METHODS: @@ -17,6 +25,24 @@ ENDCLASS. CLASS zcl_abapgit_object_iobj IMPLEMENTATION. + METHOD constructor. + + DATA lr_viobj TYPE REF TO data. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + TRY. + CREATE DATA lr_viobj TYPE ('RSD_S_VIOBJ'). + CATCH cx_sy_create_data_error. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. + + ENDMETHOD. + METHOD clear_field. @@ -43,12 +69,7 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION. lv_objna = ms_item-obj_name. - TRY. - CREATE DATA lr_viobj TYPE ('RSD_S_VIOBJ'). - CATCH cx_sy_create_data_error. - zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ). - ENDTRY. - + CREATE DATA lr_viobj TYPE ('RSD_S_VIOBJ'). ASSIGN lr_viobj->* TO . CALL FUNCTION 'RSD_IOBJ_GET' @@ -61,7 +82,7 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION. iobj_not_found = 1 illegal_input = 2 bct_comp_invalid = 3 -* not_authorized = 4 " not in lower releases +* not_authorized = 4 " not in lower releases OTHERS = 5. IF sy-subrc = 0. ASSIGN COMPONENT 'TSTPNM' OF STRUCTURE TO . @@ -134,20 +155,16 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION. TYPE data, TYPE STANDARD TABLE. - TRY. - CREATE DATA lr_details TYPE ('BAPI6108'). - CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM'). - CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT'). - CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN'). - CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP'). - CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC'). - CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE'). - CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP'). - CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL'). - CREATE DATA lr_infoobj TYPE STANDARD TABLE OF ('BAPI6108'). - CATCH cx_sy_create_data_error. - zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ). - ENDTRY. + CREATE DATA lr_details TYPE ('BAPI6108'). + CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM'). + CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT'). + CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN'). + CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP'). + CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC'). + CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE'). + CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP'). + CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL'). + CREATE DATA lr_infoobj TYPE STANDARD TABLE OF ('BAPI6108'). ASSIGN lr_details->* TO . ASSIGN lr_compounds->* TO . @@ -335,11 +352,7 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION. lv_objna = ms_item-obj_name. - TRY. - CREATE DATA lr_viobj TYPE ('RSD_S_VIOBJ'). - CATCH cx_sy_create_data_error. - zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ). - ENDTRY. + CREATE DATA lr_viobj TYPE ('RSD_S_VIOBJ'). ASSIGN lr_viobj->* TO . @@ -414,19 +427,15 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION. TYPE STANDARD TABLE, TYPE STANDARD TABLE. - TRY. - CREATE DATA lr_details TYPE ('BAPI6108'). - CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM'). - CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT'). - CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN'). - CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP'). - CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC'). - CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE'). - CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP'). - CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL'). - CATCH cx_sy_create_data_error. - zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ). - ENDTRY. + CREATE DATA lr_details TYPE ('BAPI6108'). + CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM'). + CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT'). + CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN'). + CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP'). + CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC'). + CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE'). + CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP'). + CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL'). ASSIGN lr_details->* TO . ASSIGN lr_compounds->* TO . diff --git a/src/objects/zcl_abapgit_object_jobd.clas.abap b/src/objects/zcl_abapgit_object_jobd.clas.abap index 04945ceac..95fce732e 100644 --- a/src/objects/zcl_abapgit_object_jobd.clas.abap +++ b/src/objects/zcl_abapgit_object_jobd.clas.abap @@ -2,6 +2,14 @@ CLASS zcl_abapgit_object_jobd DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje PUBLIC SECTION. INTERFACES zif_abapgit_object. + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -13,6 +21,24 @@ ENDCLASS. CLASS zcl_abapgit_object_jobd IMPLEMENTATION. + METHOD constructor. + + DATA: lr_job_definition TYPE REF TO data. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + TRY. + CREATE DATA lr_job_definition TYPE ('CL_JR_JOB_DEFINITION=>TY_JOB_DEFINITION'). + CATCH cx_sy_ref_creation. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. + + ENDMETHOD. + METHOD zif_abapgit_object~changed_by. @@ -121,16 +147,11 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION. lv_name = ms_item-obj_name. - TRY. - CALL METHOD ('CL_JR_JD_MANAGER')=>('CHECK_JD_EXISTENCE') - EXPORTING - im_jd_name = lv_name - IMPORTING - ex_is_existing = rv_bool. - - CATCH cx_root. - zcx_abapgit_exception=>raise( |JOBD not supported| ). - ENDTRY. + CALL METHOD ('CL_JR_JD_MANAGER')=>('CHECK_JD_EXISTENCE') + EXPORTING + im_jd_name = lv_name + IMPORTING + ex_is_existing = rv_bool. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_odso.clas.abap b/src/objects/zcl_abapgit_object_odso.clas.abap index 1eded78d9..81698e2ed 100644 --- a/src/objects/zcl_abapgit_object_odso.clas.abap +++ b/src/objects/zcl_abapgit_object_odso.clas.abap @@ -7,6 +7,14 @@ CLASS zcl_abapgit_object_odso DEFINITION PUBLIC SECTION. INTERFACES zif_abapgit_object . + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -22,6 +30,24 @@ ENDCLASS. CLASS zcl_abapgit_object_odso IMPLEMENTATION. + METHOD constructor. + + DATA: lr_details TYPE REF TO data. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + TRY. + CREATE DATA lr_details TYPE ('BAPI6116'). + CATCH cx_sy_create_data_error. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. + + ENDMETHOD. + METHOD clear_field. @@ -46,11 +72,7 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION. FIELD-SYMBOLS: TYPE any, TYPE any. - TRY. - CREATE DATA lr_details TYPE ('BAPI6116'). - CATCH cx_sy_create_data_error. - zcx_abapgit_exception=>raise( |ODSO is not supported on this system| ). - ENDTRY. + CREATE DATA lr_details TYPE ('BAPI6116'). ASSIGN lr_details->* TO . @@ -82,11 +104,7 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION. lt_msg TYPE STANDARD TABLE OF bal_s_msg, ls_msg TYPE bal_s_msg. - TRY. - CREATE OBJECT lo_collection TYPE ('CL_RSD_ODSO_COLLECTION'). - CATCH cx_sy_create_data_error. - zcx_abapgit_exception=>raise( |ODSO is not supported on this system| ). - ENDTRY. + CREATE OBJECT lo_collection TYPE ('CL_RSD_ODSO_COLLECTION'). lv_odsonam = ms_item-obj_name. lv_objname = ms_item-obj_name. @@ -136,15 +154,11 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION. TYPE STANDARD TABLE, TYPE STANDARD TABLE. - TRY. - CREATE DATA lr_details TYPE ('BAPI6116'). - CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO'). - CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA'). - CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN'). - CREATE DATA lr_index_iobj TYPE STANDARD TABLE OF ('BAPI6116II'). - CATCH cx_sy_create_data_error. - zcx_abapgit_exception=>raise( |ODSO is not supported on this system| ). - ENDTRY. + CREATE DATA lr_details TYPE ('BAPI6116'). + CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO'). + CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA'). + CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN'). + CREATE DATA lr_index_iobj TYPE STANDARD TABLE OF ('BAPI6116II'). ASSIGN lr_details->* TO . ASSIGN lr_infoobjects->* TO . @@ -326,15 +340,11 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION. TYPE STANDARD TABLE, TYPE STANDARD TABLE. - TRY. - CREATE DATA lr_details TYPE ('BAPI6116'). - CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO'). - CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA'). - CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN'). - CREATE DATA lr_index_iobj TYPE STANDARD TABLE OF ('BAPI6116II'). - CATCH cx_sy_create_data_error. - zcx_abapgit_exception=>raise( |ODSO is not supported on this system| ). - ENDTRY. + CREATE DATA lr_details TYPE ('BAPI6116'). + CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO'). + CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA'). + CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN'). + CREATE DATA lr_index_iobj TYPE STANDARD TABLE OF ('BAPI6116II'). ASSIGN lr_details->* TO . ASSIGN lr_infoobjects->* TO . diff --git a/src/objects/zcl_abapgit_object_samc.clas.abap b/src/objects/zcl_abapgit_object_samc.clas.abap index 1eb462b2b..a1455bc8b 100644 --- a/src/objects/zcl_abapgit_object_samc.clas.abap +++ b/src/objects/zcl_abapgit_object_samc.clas.abap @@ -5,6 +5,14 @@ CLASS zcl_abapgit_object_samc DEFINITION CREATE PUBLIC . PUBLIC SECTION. + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. METHODS get_data_class_name @@ -20,6 +28,18 @@ ENDCLASS. CLASS zcl_abapgit_object_samc IMPLEMENTATION. + METHOD constructor. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + create_channel_objects( ). + + ENDMETHOD. + METHOD get_data_class_name. diff --git a/src/objects/zcl_abapgit_object_sapc.clas.abap b/src/objects/zcl_abapgit_object_sapc.clas.abap index 438bd287c..c3673c766 100644 --- a/src/objects/zcl_abapgit_object_sapc.clas.abap +++ b/src/objects/zcl_abapgit_object_sapc.clas.abap @@ -5,6 +5,14 @@ CLASS zcl_abapgit_object_sapc DEFINITION CREATE PUBLIC . PUBLIC SECTION. + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. METHODS get_data_class_name @@ -20,6 +28,18 @@ ENDCLASS. CLASS zcl_abapgit_object_sapc IMPLEMENTATION. + METHOD constructor. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + create_channel_objects( ). + + ENDMETHOD. + METHOD get_data_class_name. diff --git a/src/objects/zcl_abapgit_object_saxx_super.clas.abap b/src/objects/zcl_abapgit_object_saxx_super.clas.abap index ba636d6c2..d015562db 100644 --- a/src/objects/zcl_abapgit_object_saxx_super.clas.abap +++ b/src/objects/zcl_abapgit_object_saxx_super.clas.abap @@ -23,6 +23,9 @@ CLASS zcl_abapgit_object_saxx_super DEFINITION ABSTRACT RETURNING VALUE(rv_data_structure_name) TYPE string . + METHODS create_channel_objects + RAISING + zcx_abapgit_type_not_supported . PRIVATE SECTION. @@ -32,9 +35,6 @@ CLASS zcl_abapgit_object_saxx_super DEFINITION DATA mv_appl_obj_cls_name TYPE seoclsname . DATA mv_persistence_cls_name TYPE seoclsname . - METHODS create_channel_objects - RAISING - zcx_abapgit_exception . METHODS get_data EXPORTING !eg_data TYPE any @@ -53,7 +53,6 @@ ENDCLASS. CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. - METHOD create_channel_objects. get_names( ). @@ -68,7 +67,7 @@ CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. ENDIF. CATCH cx_root. - zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = ms_item-obj_type. ENDTRY. ENDMETHOD. @@ -76,7 +75,8 @@ CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. METHOD get_data. - DATA: lv_object_key TYPE seu_objkey. + DATA: lv_object_key TYPE seu_objkey, + lx_error TYPE REF TO cx_root. lv_object_key = ms_item-obj_name. @@ -88,8 +88,8 @@ CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. CHANGING p_object_data = mi_appl_obj_data ). - CATCH cx_root. - zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ). + CATCH cx_root INTO lx_error. + zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. mi_appl_obj_data->get_data( IMPORTING p_data = eg_data ). @@ -120,7 +120,6 @@ CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. lv_object_key TYPE seu_objkey, lv_objtype TYPE trobjtype. - lv_objname = ms_item-obj_name. lv_object_key = ms_item-obj_name. lv_objtype = ms_item-obj_type. @@ -167,15 +166,8 @@ CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. TYPE any, TYPE any. - create_channel_objects( ). - - TRY. - CREATE DATA lr_data TYPE (mv_data_structure_name). - ASSIGN lr_data->* TO . - - CATCH cx_root. - zcx_abapgit_exception=>raise( |{ ms_item-obj_name } not supported| ). - ENDTRY. + CREATE DATA lr_data TYPE (mv_data_structure_name). + ASSIGN lr_data->* TO . get_data( IMPORTING eg_data = ). @@ -197,8 +189,6 @@ CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. DATA: lv_object_key TYPE seu_objkey. - create_channel_objects( ). - lv_object_key = ms_item-obj_name. TRY. @@ -223,15 +213,8 @@ CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. FIELD-SYMBOLS: TYPE any. - create_channel_objects( ). - - TRY. - CREATE DATA lr_data TYPE (mv_data_structure_name). - ASSIGN lr_data->* TO . - - CATCH cx_root. - zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ). - ENDTRY. + CREATE DATA lr_data TYPE (mv_data_structure_name). + ASSIGN lr_data->* TO . io_xml->read( EXPORTING @@ -266,8 +249,6 @@ CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. DATA: lv_object_key TYPE seu_objkey. - create_channel_objects( ). - lv_object_key = ms_item-obj_name. TRY. @@ -340,15 +321,8 @@ CLASS zcl_abapgit_object_saxx_super IMPLEMENTATION. TYPE any, TYPE any. - create_channel_objects( ). - - TRY. - CREATE DATA lr_data TYPE (mv_data_structure_name). - ASSIGN lr_data->* TO . - - CATCH cx_root. - zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ). - ENDTRY. + CREATE DATA lr_data TYPE (mv_data_structure_name). + ASSIGN lr_data->* TO . get_data( IMPORTING eg_data = ). diff --git a/src/objects/zcl_abapgit_object_sktd.clas.abap b/src/objects/zcl_abapgit_object_sktd.clas.abap index 5d06c9db7..a165b9d3f 100644 --- a/src/objects/zcl_abapgit_object_sktd.clas.abap +++ b/src/objects/zcl_abapgit_object_sktd.clas.abap @@ -15,7 +15,7 @@ CLASS zcl_abapgit_object_sktd DEFINITION !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -161,7 +161,7 @@ CLASS zcl_abapgit_object_sktd IMPLEMENTATION. CREATE OBJECT mi_persistence TYPE ('CL_KTD_OBJECT_PERSIST'). CATCH cx_sy_create_error. - zcx_abapgit_exception=>raise( |SKTD not supported by your NW release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_smtg.clas.abap b/src/objects/zcl_abapgit_object_smtg.clas.abap index 9c6b704bb..c237f382a 100644 --- a/src/objects/zcl_abapgit_object_smtg.clas.abap +++ b/src/objects/zcl_abapgit_object_smtg.clas.abap @@ -67,9 +67,8 @@ CLASS zcl_abapgit_object_smtg IMPLEMENTATION. EXCEPTIONS type_not_found = 1 OTHERS = 2 ). - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( |SMTG not supported| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = ms_item-obj_type. ENDIF. ls_component-name = iv_fielname. diff --git a/src/objects/zcl_abapgit_object_sod1.clas.abap b/src/objects/zcl_abapgit_object_sod1.clas.abap index 5a8bcb956..4829a98ac 100644 --- a/src/objects/zcl_abapgit_object_sod1.clas.abap +++ b/src/objects/zcl_abapgit_object_sod1.clas.abap @@ -15,7 +15,7 @@ CLASS zcl_abapgit_object_sod1 DEFINITION !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -191,7 +191,7 @@ CLASS zcl_abapgit_object_sod1 IMPLEMENTATION. TRY. CREATE OBJECT lo_data_model TYPE (c_data_model_class_name). CATCH cx_root. - zcx_abapgit_exception=>raise( |Object type { is_item-obj_type } is not supported by this system| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_sod2.clas.abap b/src/objects/zcl_abapgit_object_sod2.clas.abap index 6b1087d0a..a6b06f622 100644 --- a/src/objects/zcl_abapgit_object_sod2.clas.abap +++ b/src/objects/zcl_abapgit_object_sod2.clas.abap @@ -15,7 +15,7 @@ CLASS zcl_abapgit_object_sod2 DEFINITION !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -191,7 +191,7 @@ CLASS zcl_abapgit_object_sod2 IMPLEMENTATION. TRY. CREATE OBJECT lo_data_model TYPE (c_data_model_class_name). CATCH cx_root. - zcx_abapgit_exception=>raise( |Object type { is_item-obj_type } is not supported by this system| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_sqsc.clas.abap b/src/objects/zcl_abapgit_object_sqsc.clas.abap index 1e1189db1..c65892e0c 100644 --- a/src/objects/zcl_abapgit_object_sqsc.clas.abap +++ b/src/objects/zcl_abapgit_object_sqsc.clas.abap @@ -14,7 +14,7 @@ CLASS zcl_abapgit_object_sqsc DEFINITION !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -134,7 +134,7 @@ CLASS zcl_abapgit_object_sqsc IMPLEMENTATION. ASSERT sy-subrc = 0. CATCH cx_root. - zcx_abapgit_exception=>raise( |SQSC not supported| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. = ms_item-obj_name. diff --git a/src/objects/zcl_abapgit_object_srfc.clas.abap b/src/objects/zcl_abapgit_object_srfc.clas.abap index ab2f9eb3f..1ee6c07f2 100644 --- a/src/objects/zcl_abapgit_object_srfc.clas.abap +++ b/src/objects/zcl_abapgit_object_srfc.clas.abap @@ -15,7 +15,7 @@ CLASS zcl_abapgit_object_srfc DEFINITION !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -39,7 +39,7 @@ CLASS zcl_abapgit_object_srfc IMPLEMENTATION. TRY. CREATE OBJECT li_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). CATCH cx_root. - zcx_abapgit_exception=>raise( 'Object type SRFC is not supported by this system' ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_srvb.clas.abap b/src/objects/zcl_abapgit_object_srvb.clas.abap index 85c5ca8fe..7ef79217a 100644 --- a/src/objects/zcl_abapgit_object_srvb.clas.abap +++ b/src/objects/zcl_abapgit_object_srvb.clas.abap @@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_srvb DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. @@ -159,7 +159,7 @@ CLASS zcl_abapgit_object_srvb IMPLEMENTATION. CREATE OBJECT mi_persistence TYPE ('CL_SRVB_OBJECT_PERSIST'). CATCH cx_sy_create_error. - zcx_abapgit_exception=>raise( |SRVB not supported by your NW release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. mv_is_inactive_supported = is_ai_supported( ). diff --git a/src/objects/zcl_abapgit_object_srvd.clas.abap b/src/objects/zcl_abapgit_object_srvd.clas.abap index ef6da47cb..a48d9b583 100644 --- a/src/objects/zcl_abapgit_object_srvd.clas.abap +++ b/src/objects/zcl_abapgit_object_srvd.clas.abap @@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_srvd DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - zcx_abapgit_exception. + zcx_abapgit_type_not_supported. PROTECTED SECTION. @@ -158,7 +158,7 @@ CLASS zcl_abapgit_object_srvd IMPLEMENTATION. CREATE DATA mr_service_definition TYPE ('CL_SRVD_WB_OBJECT_DATA=>TY_SRVD_OBJECT_DATA'). CATCH cx_sy_create_error. - zcx_abapgit_exception=>raise( |SRVD not supported by your NW release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_sush.clas.abap b/src/objects/zcl_abapgit_object_sush.clas.abap index 974a94250..36247d7cf 100644 --- a/src/objects/zcl_abapgit_object_sush.clas.abap +++ b/src/objects/zcl_abapgit_object_sush.clas.abap @@ -88,7 +88,7 @@ CLASS zcl_abapgit_object_sush IMPLEMENTATION. CREATE DATA lr_data_head TYPE ('IF_SU22_ADT_OBJECT=>TS_SU2X_HEAD'). CATCH cx_sy_create_data_error. - zcx_abapgit_exception=>raise( |SUSH is not supported in your SAP release| ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_wdcc.clas.abap b/src/objects/zcl_abapgit_object_wdcc.clas.abap index cfd73b8da..a5ca7b124 100644 --- a/src/objects/zcl_abapgit_object_wdcc.clas.abap +++ b/src/objects/zcl_abapgit_object_wdcc.clas.abap @@ -7,6 +7,14 @@ CLASS zcl_abapgit_object_wdcc DEFINITION PUBLIC SECTION. INTERFACES zif_abapgit_object . + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL + io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL + RAISING + zcx_abapgit_type_not_supported. PROTECTED SECTION. METHODS after_import RAISING @@ -18,6 +26,27 @@ ENDCLASS. CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. + METHOD constructor. + + DATA: + ls_orig_config TYPE wdy_config_data. + + FIELD-SYMBOLS: + TYPE data. + + super->constructor( + is_item = is_item + iv_language = iv_language + io_files = io_files + io_i18n_params = io_i18n_params ). + + ASSIGN COMPONENT 'CONFIG_IDPAR' OF STRUCTURE ls_orig_config TO . + IF sy-subrc <> 0. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDIF. + + ENDMETHOD. + METHOD zif_abapgit_object~changed_by. @@ -51,19 +80,15 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. ls_config_key-config_type = ms_item-obj_name+32(2). ls_config_key-config_var = ms_item-obj_name+34(6). - TRY. - " does not exist in 702 - CALL METHOD cl_wdr_cfg_persistence_utils=>('DELETE_CONFIGURATION') - EXPORTING - config_key = ls_config_key - RECEIVING - subrc = lv_subrc. - IF lv_subrc <> 0. - zcx_abapgit_exception=>raise( 'Error deleting WDCC: ' && ms_item-obj_name ). - ENDIF. - CATCH cx_root. - zcx_abapgit_exception=>raise( 'Object type WDCC not supported for this release' ). - ENDTRY. + " does not exist in 702 + CALL METHOD cl_wdr_cfg_persistence_utils=>('DELETE_CONFIGURATION') + EXPORTING + config_key = ls_config_key + RECEIVING + subrc = lv_subrc. + IF lv_subrc <> 0. + zcx_abapgit_exception=>raise( 'Error deleting WDCC: ' && ms_item-obj_name ). + ENDIF. corr_insert( iv_package ). @@ -100,10 +125,6 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. IF sy-subrc = 0. io_xml->read( EXPORTING iv_name = 'CONFIG_IDPAR' CHANGING cg_data = ). - ELSE. - ii_log->add_error( iv_msg = |Object type WDCC not supported for this release| - is_item = ms_item ). - RETURN. ENDIF. ASSIGN COMPONENT 'CONFIG_TYPEPAR' OF STRUCTURE ls_orig_config TO . @@ -386,8 +407,6 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. CATCH cx_static_check. zcx_abapgit_exception=>raise( 'Error Reading Component Config from DB: ' && ms_item-obj_name ). - CATCH cx_root. - zcx_abapgit_exception=>raise( 'Object type WDCC not supported for this release' ). ENDTRY. io_xml->add( iv_name = 'CONFIG_ID' diff --git a/src/objects/zcl_abapgit_objects.clas.abap b/src/objects/zcl_abapgit_objects.clas.abap index f7c8a0dab..de2088479 100644 --- a/src/objects/zcl_abapgit_objects.clas.abap +++ b/src/objects/zcl_abapgit_objects.clas.abap @@ -177,7 +177,7 @@ CLASS zcl_abapgit_objects DEFINITION RETURNING VALUE(ri_obj) TYPE REF TO zif_abapgit_object RAISING - zcx_abapgit_exception . + zcx_abapgit_type_not_supported . CLASS-METHODS map_tadir_to_items IMPORTING @@ -462,8 +462,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. METHOD create_object. - DATA: lv_message TYPE string, - lv_class_name TYPE string, + DATA: lv_class_name TYPE string, ls_obj_serializer_map LIKE LINE OF gt_obj_serializer_map. " serialize & deserialize require files and i18n parameters, @@ -510,26 +509,26 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. iv_language = zif_abapgit_definitions=>c_english. ENDIF. CATCH cx_sy_create_object_error. - lv_message = |Object type { is_item-obj_type } is not supported by this system|. - IF iv_native_only = abap_false. - TRY. " 2nd step, try looking for plugins - IF io_files IS BOUND AND io_i18n_params IS BOUND. - CREATE OBJECT ri_obj TYPE zcl_abapgit_objects_bridge - EXPORTING - is_item = is_item - io_files = io_files - io_i18n_params = io_i18n_params. - ELSE. - CREATE OBJECT ri_obj TYPE zcl_abapgit_objects_bridge - EXPORTING - is_item = is_item. - ENDIF. - CATCH cx_sy_create_object_error. - zcx_abapgit_exception=>raise( lv_message ). - ENDTRY. - ELSE. " No native support? -> fail - zcx_abapgit_exception=>raise( lv_message ). + IF iv_native_only = abap_true. + " No native support? -> fail + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDIF. + + TRY. " 2nd step, try looking for plugins + IF io_files IS BOUND AND io_i18n_params IS BOUND. + CREATE OBJECT ri_obj TYPE zcl_abapgit_objects_bridge + EXPORTING + is_item = is_item + io_files = io_files + io_i18n_params = io_i18n_params. + ELSE. + CREATE OBJECT ri_obj TYPE zcl_abapgit_objects_bridge + EXPORTING + is_item = is_item. + ENDIF. + CATCH cx_sy_create_object_error. + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. + ENDTRY. ENDTRY. ENDMETHOD. @@ -1084,7 +1083,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. is_item = is_item iv_native_only = iv_native_only ). rv_bool = abap_true. - CATCH zcx_abapgit_exception. + CATCH zcx_abapgit_type_not_supported. rv_bool = abap_false. ENDTRY. diff --git a/src/objects/zcl_abapgit_objects_bridge.clas.abap b/src/objects/zcl_abapgit_objects_bridge.clas.abap index 9d8b520b0..6cd800177 100644 --- a/src/objects/zcl_abapgit_objects_bridge.clas.abap +++ b/src/objects/zcl_abapgit_objects_bridge.clas.abap @@ -8,8 +8,7 @@ CLASS zcl_abapgit_objects_bridge DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITIN !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING - cx_sy_create_object_error - zcx_abapgit_exception. + cx_sy_create_object_error. INTERFACES zif_abapgit_object. PROTECTED SECTION. diff --git a/src/objects/zcl_abapgit_objects_generic.clas.abap b/src/objects/zcl_abapgit_objects_generic.clas.abap index 1106374f3..e609174ed 100644 --- a/src/objects/zcl_abapgit_objects_generic.clas.abap +++ b/src/objects/zcl_abapgit_objects_generic.clas.abap @@ -225,7 +225,7 @@ CLASS zcl_abapgit_objects_generic IMPLEMENTATION. WHERE objectname = is_item-obj_type AND objecttype = lc_logical_transport_object. IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'Not found in OBJH, or not supported' ). + RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDIF. " object tables diff --git a/src/zcx_abapgit_type_not_supported.clas.abap b/src/zcx_abapgit_type_not_supported.clas.abap new file mode 100644 index 000000000..8b8a367f3 --- /dev/null +++ b/src/zcx_abapgit_type_not_supported.clas.abap @@ -0,0 +1,51 @@ +CLASS zcx_abapgit_type_not_supported DEFINITION + PUBLIC + INHERITING FROM zcx_abapgit_exception + CREATE PUBLIC . + + PUBLIC SECTION. + METHODS constructor + IMPORTING + textid LIKE if_t100_message=>t100key OPTIONAL + previous LIKE previous OPTIONAL + log TYPE REF TO zif_abapgit_log OPTIONAL + msgv1 TYPE symsgv OPTIONAL + msgv2 TYPE symsgv OPTIONAL + msgv3 TYPE symsgv OPTIONAL + msgv4 TYPE symsgv OPTIONAL + longtext TYPE csequence OPTIONAL + obj_type TYPE trobjtype. + + METHODS get_text REDEFINITION. + + PROTECTED SECTION. + PRIVATE SECTION. + DATA mv_obj_type TYPE trobjtype. +ENDCLASS. + + + +CLASS zcx_abapgit_type_not_supported IMPLEMENTATION. + + METHOD constructor ##ADT_SUPPRESS_GENERATION. + + super->constructor( + textid = textid + previous = previous + log = log + msgv1 = msgv1 + msgv2 = msgv2 + msgv3 = msgv3 + msgv4 = msgv4 + longtext = longtext ). + + mv_obj_type = obj_type. + + ENDMETHOD. + + + METHOD get_text. + result = |Object type { mv_obj_type } is not supported by this system|. + ENDMETHOD. + +ENDCLASS. diff --git a/src/zcx_abapgit_type_not_supported.clas.xml b/src/zcx_abapgit_type_not_supported.clas.xml new file mode 100644 index 000000000..9b26fb0fd --- /dev/null +++ b/src/zcx_abapgit_type_not_supported.clas.xml @@ -0,0 +1,17 @@ + + + + + + ZCX_ABAPGIT_TYPE_NOT_SUPPORTED + E + Object type not supported + 40 + 1 + X + X + X + + + + From b9389bde3321c04685afde30c8f26ee7202870ed Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Tue, 22 Apr 2025 08:20:12 +0200 Subject: [PATCH 3/8] Add support for ABAP Language Version for generic (#7218) Co-authored-by: Lars Hvam --- .../rules/zcl_abapgit_field_rules.clas.abap | 19 +++++++--- ..._abapgit_field_rules.clas.testclasses.abap | 37 ++++++++++++++----- .../rules/zif_abapgit_field_rules.intf.abap | 28 ++++++++------ src/objects/zcl_abapgit_object_g4ba.clas.abap | 7 ++++ src/objects/zcl_abapgit_object_g4bs.clas.abap | 7 ++++ src/objects/zcl_abapgit_object_iwmo.clas.abap | 8 ++++ src/objects/zcl_abapgit_object_iwom.clas.abap | 8 ++++ src/objects/zcl_abapgit_object_iwsg.clas.abap | 7 ++++ src/objects/zcl_abapgit_object_iwsv.clas.abap | 8 ++++ src/objects/zcl_abapgit_object_iwvb.clas.abap | 8 ++++ 10 files changed, 111 insertions(+), 26 deletions(-) diff --git a/src/objects/rules/zcl_abapgit_field_rules.clas.abap b/src/objects/rules/zcl_abapgit_field_rules.clas.abap index 784fb3b48..024b8cdb3 100644 --- a/src/objects/rules/zcl_abapgit_field_rules.clas.abap +++ b/src/objects/rules/zcl_abapgit_field_rules.clas.abap @@ -10,8 +10,10 @@ CLASS zcl_abapgit_field_rules DEFINITION CLASS-METHODS create RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. + PROTECTED SECTION. PRIVATE SECTION. + TYPES: BEGIN OF ty_item, tabname TYPE tabname, @@ -24,10 +26,12 @@ CLASS zcl_abapgit_field_rules DEFINITION METHODS fill_value IMPORTING - iv_rule TYPE zif_abapgit_field_rules=>ty_fill_rule - iv_package TYPE devclass + iv_rule TYPE zif_abapgit_field_rules=>ty_fill_rule + iv_package TYPE devclass + iv_abap_language_version TYPE uccheck OPTIONAL CHANGING - cv_value TYPE any. + cv_value TYPE any. + ENDCLASS. @@ -56,6 +60,8 @@ CLASS zcl_abapgit_field_rules IMPLEMENTATION. cv_value = sy-mandt. WHEN zif_abapgit_field_rules=>c_fill_rule-package. cv_value = iv_package. + WHEN zif_abapgit_field_rules=>c_fill_rule-abap_language_version. + cv_value = iv_abap_language_version. ENDCASE. ENDMETHOD. @@ -109,10 +115,11 @@ CLASS zcl_abapgit_field_rules IMPLEMENTATION. IF sy-subrc = 0. fill_value( EXPORTING - iv_rule = ls_item-fill_rule - iv_package = iv_package + iv_rule = ls_item-fill_rule + iv_package = iv_package + iv_abap_language_version = iv_abap_language_version CHANGING - cv_value = ). + cv_value = ). ENDIF. ENDLOOP. ENDLOOP. diff --git a/src/objects/rules/zcl_abapgit_field_rules.clas.testclasses.abap b/src/objects/rules/zcl_abapgit_field_rules.clas.testclasses.abap index 43a72f230..fa0b6c26e 100644 --- a/src/objects/rules/zcl_abapgit_field_rules.clas.testclasses.abap +++ b/src/objects/rules/zcl_abapgit_field_rules.clas.testclasses.abap @@ -4,8 +4,9 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS PRIVATE SECTION. CONSTANTS: - c_package TYPE devclass VALUE '$TMP', - c_table TYPE tabname VALUE 'ZTEST'. + c_abap_cloud TYPE uccheck VALUE '5', + c_package TYPE devclass VALUE '$TMP', + c_table TYPE tabname VALUE 'ZTEST'. TYPES: BEGIN OF ty_test, @@ -15,6 +16,7 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS time TYPE t, ts TYPE timestamp, tl TYPE timestampl, + alav TYPE uccheck, END OF ty_test. DATA mo_cut TYPE REF TO zcl_abapgit_field_rules. @@ -33,6 +35,7 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS fill5 FOR TESTING, fill6 FOR TESTING, fill7 FOR TESTING, + fill8 FOR TESTING, get_rules RETURNING VALUE(ri_rules) TYPE REF TO zif_abapgit_field_rules, @@ -55,10 +58,11 @@ CLASS ltcl_field_rules IMPLEMENTATION. mo_cut->fill_value( EXPORTING - iv_rule = iv_rule - iv_package = c_package + iv_rule = iv_rule + iv_package = c_package + iv_abap_language_version = c_abap_cloud CHANGING - cv_value = lv_act ). + cv_value = lv_act ). IF iv_len IS NOT INITIAL. lv_act = lv_act(iv_len). @@ -116,6 +120,12 @@ CLASS ltcl_field_rules IMPLEMENTATION. iv_exp = '' ). ENDMETHOD. + METHOD fill8. + fill_value( + iv_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version + iv_exp = |{ c_abap_cloud }| ). + ENDMETHOD. + METHOD get_rules. ri_rules = zcl_abapgit_field_rules=>create( )->add( @@ -137,7 +147,11 @@ CLASS ltcl_field_rules IMPLEMENTATION. )->add( iv_table = c_table iv_field = 'TL' - iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). + iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp + )->add( + iv_table = c_table + iv_field = 'ALAV' + iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ). ENDMETHOD. @@ -159,6 +173,7 @@ CLASS ltcl_field_rules IMPLEMENTATION. ls_act-user = 'FRANK'. ls_act-date = '20230101'. ls_act-time = '000001'. + ls_act-alav = '5'. " ABAP Cloud INSERT ls_act INTO TABLE lt_act. li_rules = get_rules( ). @@ -216,10 +231,11 @@ CLASS ltcl_field_rules IMPLEMENTATION. li_rules->apply_fill_logic( EXPORTING - iv_table = c_table - iv_package = c_package + iv_table = c_table + iv_package = c_package + iv_abap_language_version = c_abap_cloud CHANGING - ct_data = lt_act ). + ct_data = lt_act ). cl_abap_unit_assert=>assert_equals( act = lines( lt_act ) @@ -265,6 +281,9 @@ CLASS ltcl_field_rules IMPLEMENTATION. cl_abap_unit_assert=>assert_equals( act = ls_act-time(4) exp = sy-uzeit(4) ). " avoid comparing seconds + cl_abap_unit_assert=>assert_equals( + act = ls_act-alav + exp = c_abap_cloud ). ENDMETHOD. ENDCLASS. diff --git a/src/objects/rules/zif_abapgit_field_rules.intf.abap b/src/objects/rules/zif_abapgit_field_rules.intf.abap index f6403336a..3aee43702 100644 --- a/src/objects/rules/zif_abapgit_field_rules.intf.abap +++ b/src/objects/rules/zif_abapgit_field_rules.intf.abap @@ -1,14 +1,16 @@ -INTERFACE zif_abapgit_field_rules - PUBLIC . +INTERFACE zif_abapgit_field_rules PUBLIC. + TYPES ty_fill_rule TYPE c LENGTH 2. + CONSTANTS: BEGIN OF c_fill_rule, - date TYPE ty_fill_rule VALUE 'DT', - time TYPE ty_fill_rule VALUE 'TM', - timestamp TYPE ty_fill_rule VALUE 'TS', - user TYPE ty_fill_rule VALUE 'UR', - client TYPE ty_fill_rule VALUE 'CT', - package TYPE ty_fill_rule VALUE 'PK', + date TYPE ty_fill_rule VALUE 'DT', + time TYPE ty_fill_rule VALUE 'TM', + timestamp TYPE ty_fill_rule VALUE 'TS', + user TYPE ty_fill_rule VALUE 'UR', + client TYPE ty_fill_rule VALUE 'CT', + package TYPE ty_fill_rule VALUE 'PK', + abap_language_version TYPE ty_fill_rule VALUE 'AL', END OF c_fill_rule. METHODS add @@ -18,15 +20,19 @@ INTERFACE zif_abapgit_field_rules iv_fill_rule TYPE ty_fill_rule RETURNING VALUE(ro_self) TYPE REF TO zif_abapgit_field_rules. + METHODS apply_clear_logic IMPORTING iv_table TYPE tabname CHANGING ct_data TYPE STANDARD TABLE. + METHODS apply_fill_logic IMPORTING - iv_table TYPE tabname - iv_package TYPE devclass + iv_table TYPE tabname + iv_package TYPE devclass + iv_abap_language_version TYPE uccheck OPTIONAL CHANGING - ct_data TYPE STANDARD TABLE. + ct_data TYPE STANDARD TABLE. + ENDINTERFACE. diff --git a/src/objects/zcl_abapgit_object_g4ba.clas.abap b/src/objects/zcl_abapgit_object_g4ba.clas.abap index 54af7e9f5..1b37dac49 100644 --- a/src/objects/zcl_abapgit_object_g4ba.clas.abap +++ b/src/objects/zcl_abapgit_object_g4ba.clas.abap @@ -60,6 +60,13 @@ CLASS zcl_abapgit_object_g4ba IMPLEMENTATION. iv_field = 'CHANGED_TS' iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). + IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version. + ro_result->add( + iv_table = '/IWBEP/I_V4_MSGR' + iv_field = 'ABAP_LANGUAGE_VERSION' + iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ). + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_g4bs.clas.abap b/src/objects/zcl_abapgit_object_g4bs.clas.abap index 108d0555d..11041671b 100644 --- a/src/objects/zcl_abapgit_object_g4bs.clas.abap +++ b/src/objects/zcl_abapgit_object_g4bs.clas.abap @@ -60,6 +60,13 @@ CLASS zcl_abapgit_object_g4bs IMPLEMENTATION. iv_field = 'CHANGED_TS' iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). + IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version. + ro_result->add( + iv_table = '/IWBEP/I_V4_MSRV' + iv_field = 'ABAP_LANGUAGE_VERSION' + iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ). + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iwmo.clas.abap b/src/objects/zcl_abapgit_object_iwmo.clas.abap index c72ae8f2f..86defa74d 100644 --- a/src/objects/zcl_abapgit_object_iwmo.clas.abap +++ b/src/objects/zcl_abapgit_object_iwmo.clas.abap @@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwmo IMPLEMENTATION. iv_table = '/IWBEP/I_MGW_OHD' iv_field = 'CHANGED_TIMESTMP' iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). + + IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version. + ro_result->add( + iv_table = '/IWBEP/I_MGW_OHD' + iv_field = 'ABAP_LANGUAGE_VERSION' + iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ). + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iwom.clas.abap b/src/objects/zcl_abapgit_object_iwom.clas.abap index bdabf98ed..a18082768 100644 --- a/src/objects/zcl_abapgit_object_iwom.clas.abap +++ b/src/objects/zcl_abapgit_object_iwom.clas.abap @@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwom IMPLEMENTATION. iv_table = '/IWFND/I_MED_OHD' iv_field = 'CHANGED_TIMESTMP' iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). + + IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version. + ro_result->add( + iv_table = '/IWFND/I_MED_OHD' + iv_field = 'ABAP_LANGUAGE_VERSION' + iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ). + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iwsg.clas.abap b/src/objects/zcl_abapgit_object_iwsg.clas.abap index 9f2646964..436bf3ab0 100644 --- a/src/objects/zcl_abapgit_object_iwsg.clas.abap +++ b/src/objects/zcl_abapgit_object_iwsg.clas.abap @@ -44,6 +44,13 @@ CLASS zcl_abapgit_object_iwsg IMPLEMENTATION. iv_field = 'CHANGED_TIMESTMP' iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). + IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version. + ro_result->add( + iv_table = '/IWFND/I_MED_SRH' + iv_field = 'ABAP_LANGUAGE_VERSION' + iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ). + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iwsv.clas.abap b/src/objects/zcl_abapgit_object_iwsv.clas.abap index 9e53ba0a2..56b21af90 100644 --- a/src/objects/zcl_abapgit_object_iwsv.clas.abap +++ b/src/objects/zcl_abapgit_object_iwsv.clas.abap @@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwsv IMPLEMENTATION. iv_table = '/IWBEP/I_MGW_SRH' iv_field = 'CHANGED_TIMESTMP' iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). + + IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version. + ro_result->add( + iv_table = '/IWBEP/I_MGW_SRH' + iv_field = 'ABAP_LANGUAGE_VERSION' + iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ). + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iwvb.clas.abap b/src/objects/zcl_abapgit_object_iwvb.clas.abap index e2405e71a..2a689ce08 100644 --- a/src/objects/zcl_abapgit_object_iwvb.clas.abap +++ b/src/objects/zcl_abapgit_object_iwvb.clas.abap @@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwvb IMPLEMENTATION. iv_table = '/IWBEP/I_MGW_VAH' iv_field = 'CHANGED_TIMESTMP' iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). + + IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version. + ro_result->add( + iv_table = '/IWBEP/I_MGW_VAH' + iv_field = 'ABAP_LANGUAGE_VERSION' + iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ). + ENDIF. + ENDMETHOD. From 3f673ebe8c1442e093355fc1b3ed81d2441ec5a4 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Tue, 22 Apr 2025 13:12:33 +0200 Subject: [PATCH 4/8] update npm deps + `E0*` deps + back button on flow page (#7217) --- deps/e070.tabl.xml | 105 ++++++++++++ deps/e071.tabl.xml | 116 +++++++++++++ deps/e071k.tabl.xml | 158 ++++++++++++++++++ deps/e07t.tabl.xml | 54 ++++++ package.json | 4 +- .../flow/zcl_abapgit_gui_page_flow.clas.abap | 4 + test/src/web/zcl_abapgit_web.clas.abap | 39 +---- .../web/zcl_abapgit_web_inject_fm.clas.abap | 1 + test/src/web/zcl_abapgit_web_setup.clas.abap | 27 +++ test/src/web/zcl_abapgit_web_setup.clas.xml | 16 ++ .../web/zcl_abapgit_web_user_record.clas.abap | 20 +++ .../web/zcl_abapgit_web_user_record.clas.xml | 16 ++ 12 files changed, 528 insertions(+), 32 deletions(-) create mode 100644 deps/e070.tabl.xml create mode 100644 deps/e071.tabl.xml create mode 100644 deps/e071k.tabl.xml create mode 100644 deps/e07t.tabl.xml create mode 100644 test/src/web/zcl_abapgit_web_setup.clas.abap create mode 100644 test/src/web/zcl_abapgit_web_setup.clas.xml create mode 100644 test/src/web/zcl_abapgit_web_user_record.clas.abap create mode 100644 test/src/web/zcl_abapgit_web_user_record.clas.xml diff --git a/deps/e070.tabl.xml b/deps/e070.tabl.xml new file mode 100644 index 000000000..c07db18be --- /dev/null +++ b/deps/e070.tabl.xml @@ -0,0 +1,105 @@ + + + + + + E070 + E + TRANSP + E070 + A + 1 + + + ZE070 + A + 0 + APPL0 + N + + + + TRKORR + X + TRKORR + 0 + X + E + + + TRFUNCTION + TRFUNCTION + 0 + X + F + E + + + TRSTATUS + 0 + C + 000002 + CHAR + 000001 + CHAR + + + TARSYSTEM + 0 + C + 000020 + CHAR + 000010 + CHAR + + + KORRDEV + 0 + C + 000008 + CHAR + 000004 + CHAR + + + AS4USER + 0 + C + 000024 + CHAR + 000012 + CHAR + + + AS4DATE + 0 + D + 000016 + DATS + 000008 + DATS + T + + + AS4TIME + 0 + T + 000012 + TIMS + 000006 + TIMS + T + + + STRKORR + 0 + C + 000040 + CHAR + 000020 + CHAR + + + + + diff --git a/deps/e071.tabl.xml b/deps/e071.tabl.xml new file mode 100644 index 000000000..428375eca --- /dev/null +++ b/deps/e071.tabl.xml @@ -0,0 +1,116 @@ + + + + + + E071 + E + TRANSP + E071 + A + 1 + + + ZE071 + A + 0 + APPL0 + N + + + + TRKORR + X + TRKORR + 0 + X + E + + + AS4POS + X + 0 + N + 000012 + X + NUMC + 000006 + NUMC + + + PGMID + 0 + C + 000008 + CHAR + 000004 + CHAR + + + OBJECT + 0 + C + 000008 + CHAR + 000004 + CHAR + + + OBJ_NAME + 0 + C + 000240 + CHAR + 000120 + CHAR + + + OBJFUNC + 0 + C + 000002 + CHAR + 000001 + CHAR + + + LOCKFLAG + 0 + C + 000002 + CHAR + 000001 + CHAR + + + GENNUM + 0 + C + 000006 + CHAR + 000003 + CHAR + + + LANG + 0 + C + 000002 + LANG + 000001 + LANG + X + + + ACTIVITY + 0 + C + 000040 + CHAR + 000020 + CHAR + + + + + diff --git a/deps/e071k.tabl.xml b/deps/e071k.tabl.xml new file mode 100644 index 000000000..f2313b631 --- /dev/null +++ b/deps/e071k.tabl.xml @@ -0,0 +1,158 @@ + + + + + + E071K + E + TRANSP + E071K + A + 1 + + + ZE071K + A + 0 + APPL0 + N + + + + TRKORR + X + TRKORR + 0 + X + E + + + PGMID + X + 0 + C + 000008 + X + CHAR + 000004 + CHAR + + + OBJECT + X + 0 + C + 000008 + X + CHAR + 000004 + CHAR + + + OBJNAME + X + 0 + C + 000060 + X + CHAR + 000030 + CHAR + + + AS4POS + X + 0 + N + 000012 + X + NUMC + 000006 + NUMC + + + MASTERTYPE + 0 + C + 000008 + CHAR + 000004 + CHAR + + + MASTERNAME + 0 + C + 000080 + CHAR + 000040 + CHAR + + + VIEWNAME + 0 + C + 000060 + CHAR + 000030 + CHAR + + + OBJFUNC + 0 + C + 000002 + CHAR + 000001 + CHAR + + + TABKEY + 0 + C + 000240 + CHAR + 000120 + CHAR + + + SORTFLAG + 0 + C + 000002 + CHAR + 000001 + CHAR + + + FLAG + 0 + C + 000002 + CHAR + 000001 + CHAR + + + LANG + 0 + C + 000002 + LANG + 000001 + LANG + X + + + ACTIVITY + 0 + C + 000040 + CHAR + 000020 + CHAR + + + + + diff --git a/deps/e07t.tabl.xml b/deps/e07t.tabl.xml new file mode 100644 index 000000000..2d359dc0e --- /dev/null +++ b/deps/e07t.tabl.xml @@ -0,0 +1,54 @@ + + + + + + E07T + E + TRANSP + E07T + A + 1 + + + ZE07T + A + 0 + APPL0 + N + N + + + + TRKORR + X + TRKORR + 0 + X + E + + + LANGU + X + 0 + C + 000002 + X + LANG + 000001 + LANG + X + + + AS4TEXT + 0 + C + 000120 + CHAR + 000060 + CHAR + + + + + diff --git a/package.json b/package.json index 14a7c2bb5..100ddd4fb 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ ] }, "devDependencies": { - "@abaplint/cli": "^2.113.109", + "@abaplint/cli": "^2.113.110", "@abaplint/database-sqlite": "^2.10.24", "@abaplint/runtime": "^2.10.44", "express": "^4.21.2", @@ -31,6 +31,6 @@ "globals": "^16.0.0", "abapmerge": "^0.16.6", "c8": "^10.1.3", - "eslint": "^9.24.0" + "eslint": "^9.25.1" } } diff --git a/src/ui/flow/zcl_abapgit_gui_page_flow.clas.abap b/src/ui/flow/zcl_abapgit_gui_page_flow.clas.abap index e044b3856..c8743e1c9 100644 --- a/src/ui/flow/zcl_abapgit_gui_page_flow.clas.abap +++ b/src/ui/flow/zcl_abapgit_gui_page_flow.clas.abap @@ -288,6 +288,10 @@ CLASS zcl_abapgit_gui_page_flow IMPLEMENTATION. iv_txt = zcl_abapgit_gui_buttons=>repo_list( ) iv_act = zif_abapgit_definitions=>c_action-abapgit_home ). + ro_toolbar->add( + iv_txt = 'Back' + iv_act = zif_abapgit_definitions=>c_action-go_back ). + ENDMETHOD. diff --git a/test/src/web/zcl_abapgit_web.clas.abap b/test/src/web/zcl_abapgit_web.clas.abap index 7a812e40d..b11cb9af9 100644 --- a/test/src/web/zcl_abapgit_web.clas.abap +++ b/test/src/web/zcl_abapgit_web.clas.abap @@ -20,9 +20,6 @@ CLASS zcl_abapgit_web DEFINITION CLASS-DATA gi_request TYPE REF TO zif_abapgit_web_request. CLASS-DATA gi_response TYPE REF TO zif_abapgit_web_response. - CLASS-METHODS initialize - RAISING - zcx_abapgit_exception. CLASS-METHODS sapevent. CLASS-METHODS redirect. CLASS-METHODS search_asset @@ -46,7 +43,15 @@ CLASS zcl_abapgit_web IMPLEMENTATION. gi_response = ii_response. IF go_viewer IS INITIAL. - initialize( ). + zcl_abapgit_web_setup=>setup( ). + + CREATE OBJECT go_viewer + EXPORTING + ii_request = ii_request + ii_response = ii_response. + zcl_abapgit_ui_core_injector=>set_html_viewer( go_viewer ). + + go_gui = zcl_abapgit_ui_factory=>get_gui( ). ENDIF. lv_found = search_asset( ). @@ -70,32 +75,6 @@ CLASS zcl_abapgit_web IMPLEMENTATION. ENDMETHOD. - - METHOD initialize. - - DATA lo_environment TYPE REF TO zcl_abapgit_web_environment. - DATA lo_cts_api TYPE REF TO zcl_abapgit_web_cts_api. - - zcl_abapgit_web_inject_fm=>inject( ). - - CREATE OBJECT lo_environment. - zcl_abapgit_injector=>set_environment( lo_environment ). - - CREATE OBJECT lo_cts_api. - zcl_abapgit_injector=>set_cts_api( lo_cts_api ). - - CREATE OBJECT go_viewer - EXPORTING - ii_request = gi_request - ii_response = gi_response. - zcl_abapgit_ui_core_injector=>set_html_viewer( go_viewer ). - - - go_gui = zcl_abapgit_ui_factory=>get_gui( ). - - ENDMETHOD. - - METHOD redirect. DATA lv_html TYPE string. diff --git a/test/src/web/zcl_abapgit_web_inject_fm.clas.abap b/test/src/web/zcl_abapgit_web_inject_fm.clas.abap index 60767a6f2..7ab46ec03 100644 --- a/test/src/web/zcl_abapgit_web_inject_fm.clas.abap +++ b/test/src/web/zcl_abapgit_web_inject_fm.clas.abap @@ -21,6 +21,7 @@ CLASS zcl_abapgit_web_inject_fm IMPLEMENTATION. INSERT 'DEQUEUE_EZABAPGIT' INTO TABLE lt_deps. INSERT 'SAPGUI_PROGRESS_INDICATOR' INTO TABLE lt_deps. INSERT 'TR_OBJECT_TABLE' INTO TABLE lt_deps. + INSERT 'SEO_INTERFACE_IMPLEM_GET_ALL' INTO TABLE lt_deps. li_env = cl_function_test_environment=>create( lt_deps ). CREATE OBJECT lo_handler. diff --git a/test/src/web/zcl_abapgit_web_setup.clas.abap b/test/src/web/zcl_abapgit_web_setup.clas.abap new file mode 100644 index 000000000..61c77d6d0 --- /dev/null +++ b/test/src/web/zcl_abapgit_web_setup.clas.abap @@ -0,0 +1,27 @@ +CLASS zcl_abapgit_web_setup DEFINITION PUBLIC. + PUBLIC SECTION. + CLASS-METHODS setup + RAISING + zcx_abapgit_exception. +ENDCLASS. + +CLASS zcl_abapgit_web_setup IMPLEMENTATION. + METHOD setup. + + DATA lo_environment TYPE REF TO zcl_abapgit_web_environment. + DATA lo_cts_api TYPE REF TO zcl_abapgit_web_cts_api. + DATA lo_user_record TYPE REF TO zcl_abapgit_web_user_record. + + zcl_abapgit_web_inject_fm=>inject( ). + + CREATE OBJECT lo_environment. + zcl_abapgit_injector=>set_environment( lo_environment ). + + CREATE OBJECT lo_cts_api. + zcl_abapgit_injector=>set_cts_api( lo_cts_api ). + + CREATE OBJECT lo_user_record. + zcl_abapgit_env_injector=>set_user_record( lo_user_record ). + + ENDMETHOD. +ENDCLASS. diff --git a/test/src/web/zcl_abapgit_web_setup.clas.xml b/test/src/web/zcl_abapgit_web_setup.clas.xml new file mode 100644 index 000000000..dfd8f6513 --- /dev/null +++ b/test/src/web/zcl_abapgit_web_setup.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_WEB_SETUP + E + ZCL_ABAPGIT_WEB_SETUP + 1 + X + X + X + + + + \ No newline at end of file diff --git a/test/src/web/zcl_abapgit_web_user_record.clas.abap b/test/src/web/zcl_abapgit_web_user_record.clas.abap new file mode 100644 index 000000000..ebcf90203 --- /dev/null +++ b/test/src/web/zcl_abapgit_web_user_record.clas.abap @@ -0,0 +1,20 @@ +CLASS zcl_abapgit_web_user_record DEFINITION PUBLIC. + PUBLIC SECTION. + INTERFACES zif_abapgit_user_record. +ENDCLASS. + +CLASS zcl_abapgit_web_user_record IMPLEMENTATION. + + METHOD zif_abapgit_user_record~get_name. + RETURN. " todo, implement method + ENDMETHOD. + + METHOD zif_abapgit_user_record~get_email. + RETURN. " todo, implement method + ENDMETHOD. + + METHOD zif_abapgit_user_record~get_title. + RETURN. " todo, implement method + ENDMETHOD. + +ENDCLASS. diff --git a/test/src/web/zcl_abapgit_web_user_record.clas.xml b/test/src/web/zcl_abapgit_web_user_record.clas.xml new file mode 100644 index 000000000..bbb4d52f4 --- /dev/null +++ b/test/src/web/zcl_abapgit_web_user_record.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_WEB_USER_RECORD + E + ZCL_ABAPGIT_WEB_USER_RECORD + 1 + X + X + X + + + + \ No newline at end of file From 2b0f4e74d9e7a4df4b92a4b74a9b127735b7579c Mon Sep 17 00:00:00 2001 From: Lennart Emmerich <45996424+leem53@users.noreply.github.com> Date: Thu, 24 Apr 2025 12:07:17 +0200 Subject: [PATCH 5/8] SCVI: Fix unstable diff when `shdsvfvci` or `shdguixt` are not initial (#7222) --- src/objects/zcl_abapgit_object_scvi.clas.abap | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/objects/zcl_abapgit_object_scvi.clas.abap b/src/objects/zcl_abapgit_object_scvi.clas.abap index 93efe4992..284a91ffc 100644 --- a/src/objects/zcl_abapgit_object_scvi.clas.abap +++ b/src/objects/zcl_abapgit_object_scvi.clas.abap @@ -193,6 +193,9 @@ CLASS zcl_abapgit_object_scvi IMPLEMENTATION. zcx_abapgit_exception=>raise_t100( ). ENDIF. + SORT ls_screen_variant-shdsvfvci ASCENDING. + SORT ls_screen_variant-shdguixt ASCENDING. + * Clear all user details CLEAR: ls_screen_variant-shdsvci-crdate, ls_screen_variant-shdsvci-cruser, From 267c210c5a571fb9f257dfb5748c77a61bd5ae82 Mon Sep 17 00:00:00 2001 From: Lennart Emmerich <45996424+leem53@users.noreply.github.com> Date: Fri, 25 Apr 2025 13:04:37 +0200 Subject: [PATCH 6/8] STVI: Fix unstable diff when shdtvsvciu or shdfvguicu are not initial (#7225) --- src/objects/zcl_abapgit_object_stvi.clas.abap | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/objects/zcl_abapgit_object_stvi.clas.abap b/src/objects/zcl_abapgit_object_stvi.clas.abap index dd174d6e1..73c0fca56 100644 --- a/src/objects/zcl_abapgit_object_stvi.clas.abap +++ b/src/objects/zcl_abapgit_object_stvi.clas.abap @@ -197,6 +197,9 @@ CLASS zcl_abapgit_object_stvi IMPLEMENTATION. zcx_abapgit_exception=>raise_t100( ). ENDIF. + SORT ls_transaction_variant-shdtvsvciu ASCENDING. + SORT ls_transaction_variant-shdfvguicu ASCENDING. + * Clear all user details CLEAR: ls_transaction_variant-shdtvciu-crdate, ls_transaction_variant-shdtvciu-cruser, From 5e087d33c73afdaddead50918663ec643ac7abc2 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Fri, 25 Apr 2025 13:25:56 +0200 Subject: [PATCH 7/8] Fix some class descriptions (#7223) Co-authored-by: Lars Hvam --- src/env/zcl_abapgit_env_factory.clas.xml | 2 +- src/env/zcl_abapgit_env_injector.clas.xml | 2 +- src/env/zif_abapgit_user_record.intf.xml | 2 +- src/test/zcl_abapgit_gui_page_template.clas.xml | 2 +- src/zcx_abapgit_type_not_supported.clas.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/env/zcl_abapgit_env_factory.clas.xml b/src/env/zcl_abapgit_env_factory.clas.xml index b0ec0972c..89cdb36ed 100644 --- a/src/env/zcl_abapgit_env_factory.clas.xml +++ b/src/env/zcl_abapgit_env_factory.clas.xml @@ -5,7 +5,7 @@ ZCL_ABAPGIT_ENV_FACTORY E - ZCL_ABAPGIT_ENV_FACTORY + abapGit - Environment Factory 1 X X diff --git a/src/env/zcl_abapgit_env_injector.clas.xml b/src/env/zcl_abapgit_env_injector.clas.xml index e65678311..13910b06b 100644 --- a/src/env/zcl_abapgit_env_injector.clas.xml +++ b/src/env/zcl_abapgit_env_injector.clas.xml @@ -5,7 +5,7 @@ ZCL_ABAPGIT_ENV_INJECTOR E - ZCL_ABAPGIT_ENV_INJECTOR + abapGit - Environment Injector 1 X X diff --git a/src/env/zif_abapgit_user_record.intf.xml b/src/env/zif_abapgit_user_record.intf.xml index 5bb2af8cc..f5df28508 100644 --- a/src/env/zif_abapgit_user_record.intf.xml +++ b/src/env/zif_abapgit_user_record.intf.xml @@ -5,7 +5,7 @@ ZIF_ABAPGIT_USER_RECORD E - ZIF_ABAPGIT_USER_RECORD + abapGit - User Record 2 1 X diff --git a/src/test/zcl_abapgit_gui_page_template.clas.xml b/src/test/zcl_abapgit_gui_page_template.clas.xml index 9c72c093e..a207ea527 100644 --- a/src/test/zcl_abapgit_gui_page_template.clas.xml +++ b/src/test/zcl_abapgit_gui_page_template.clas.xml @@ -5,7 +5,7 @@ ZCL_ABAPGIT_GUI_PAGE_TEMPLATE E - abapGit GUI page template (for copy/paste) + abapGit - GUI Page Template (for copy/paste) 1 X X diff --git a/src/zcx_abapgit_type_not_supported.clas.xml b/src/zcx_abapgit_type_not_supported.clas.xml index 9b26fb0fd..08f665a16 100644 --- a/src/zcx_abapgit_type_not_supported.clas.xml +++ b/src/zcx_abapgit_type_not_supported.clas.xml @@ -5,7 +5,7 @@ ZCX_ABAPGIT_TYPE_NOT_SUPPORTED E - Object type not supported + abapGit - Object Type Not Supported 40 1 X From 402ec37b3bc2adc722b359f59ea0413250d5b243 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Fri, 25 Apr 2025 13:29:18 +0200 Subject: [PATCH 8/8] refactor DDLS + DDLX + DCLS (#7224) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/objects/zcl_abapgit_object_dcls.clas.abap | 166 ++++---- src/objects/zcl_abapgit_object_ddls.clas.abap | 213 +++++----- src/objects/zcl_abapgit_object_ddlx.clas.abap | 380 +++++++----------- 3 files changed, 313 insertions(+), 446 deletions(-) diff --git a/src/objects/zcl_abapgit_object_dcls.clas.abap b/src/objects/zcl_abapgit_object_dcls.clas.abap index 830e5a4c9..92ba30494 100644 --- a/src/objects/zcl_abapgit_object_dcls.clas.abap +++ b/src/objects/zcl_abapgit_object_dcls.clas.abap @@ -12,6 +12,12 @@ CLASS zcl_abapgit_object_dcls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. + DATA: mo_dcl_handler TYPE REF TO object. " CL_ACM_DCL_HANDLER + METHODS clear_fields + CHANGING + !cg_data TYPE any + RAISING + zcx_abapgit_exception . ENDCLASS. @@ -20,8 +26,6 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. METHOD constructor. - DATA: lo_dcl TYPE REF TO object. - super->constructor( is_item = is_item iv_language = iv_language @@ -31,9 +35,9 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. TRY. CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') RECEIVING - ro_handler = lo_dcl. + ro_handler = mo_dcl_handler. - CATCH cx_sy_ref_creation. + CATCH cx_root. RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. @@ -42,7 +46,6 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. DATA: lr_data TYPE REF TO data, - lo_dcl TYPE REF TO object, lx_error TYPE REF TO cx_root. FIELD-SYMBOLS: TYPE any, @@ -52,39 +55,31 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. ASSIGN lr_data->* TO . TRY. - CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - ro_handler = lo_dcl. - - CALL METHOD lo_dcl->('READ') + CALL METHOD mo_dcl_handler->('READ') EXPORTING iv_dclname = ms_item-obj_name IMPORTING es_dclsrc = . - - ASSIGN COMPONENT 'AS4USER' OF STRUCTURE TO . - IF sy-subrc = 0. - rv_user = . - ELSE. - rv_user = c_user_unknown. - ENDIF. CATCH cx_root INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. + + ASSIGN COMPONENT 'AS4USER' OF STRUCTURE TO . + IF sy-subrc = 0. + rv_user = . + ELSE. + rv_user = c_user_unknown. + ENDIF. + ENDMETHOD. METHOD zif_abapgit_object~delete. - DATA: lo_dcl TYPE REF TO object, - lx_error TYPE REF TO cx_root. + DATA: lx_error TYPE REF TO cx_root. TRY. - CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - ro_handler = lo_dcl. - - CALL METHOD lo_dcl->('DELETE') + CALL METHOD mo_dcl_handler->('DELETE') EXPORTING iv_dclname = ms_item-obj_name. @@ -100,7 +95,6 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. METHOD zif_abapgit_object~deserialize. DATA: lr_data TYPE REF TO data, - lo_dcl TYPE REF TO object, lx_error TYPE REF TO cx_root, lv_abap_language_version TYPE uccheck. @@ -127,15 +121,11 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. set_abap_language_version( CHANGING cv_abap_language_version = lv_abap_language_version ). ENDIF. + tadir_insert( iv_package ). + TRY. - tadir_insert( iv_package ). - - CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - ro_handler = lo_dcl. - TRY. - CALL METHOD lo_dcl->('SAVE') + CALL METHOD mo_dcl_handler->('SAVE') EXPORTING iv_dclname = ms_item-obj_name iv_put_state = 'I' @@ -144,7 +134,7 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. iv_access_mode = 'INSERT' iv_abap_language_version = lv_abap_language_version. CATCH cx_sy_dyn_call_param_not_found. - CALL METHOD lo_dcl->('SAVE') + CALL METHOD mo_dcl_handler->('SAVE') EXPORTING iv_dclname = ms_item-obj_name iv_put_state = 'I' @@ -164,23 +154,11 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. METHOD zif_abapgit_object~exists. - DATA: lo_dcl TYPE REF TO object, - lx_error TYPE REF TO cx_root. - - TRY. - CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - ro_handler = lo_dcl. - - CALL METHOD lo_dcl->('CHECK_EXISTENCE') - EXPORTING - iv_objectname = ms_item-obj_name - RECEIVING - rv_exists = rv_bool. - - CATCH cx_root INTO lx_error. - zcx_abapgit_exception=>raise_with_text( lx_error ). - ENDTRY. + CALL METHOD mo_dcl_handler->('CHECK_EXISTENCE') + EXPORTING + iv_objectname = ms_item-obj_name + RECEIVING + rv_exists = rv_bool. ENDMETHOD. @@ -236,7 +214,6 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. METHOD zif_abapgit_object~serialize. DATA: lr_data TYPE REF TO data, - lo_dcl TYPE REF TO object, lx_error TYPE REF TO cx_root. FIELD-SYMBOLS: TYPE any, @@ -247,60 +224,55 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. ASSIGN lr_data->* TO . TRY. - CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - ro_handler = lo_dcl. - - CALL METHOD lo_dcl->('READ') + CALL METHOD mo_dcl_handler->('READ') EXPORTING iv_dclname = ms_item-obj_name IMPORTING es_dclsrc = . - ASSIGN COMPONENT 'AS4USER' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - CLEAR . - - ASSIGN COMPONENT 'AS4DATE' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - CLEAR . - - ASSIGN COMPONENT 'AS4TIME' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - CLEAR . - - ASSIGN COMPONENT 'CREATED_BY' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - CLEAR . - - ASSIGN COMPONENT 'CREATED_DATE' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - CLEAR . - - ASSIGN COMPONENT 'AS4LOCAL' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - CLEAR . - - ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE TO . - IF sy-subrc = 0. - clear_abap_language_version( CHANGING cv_abap_language_version = ). - ENDIF. - - ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - - mo_files->add_string( - iv_ext = 'asdcls' - iv_string = ). - - CLEAR . - - io_xml->add( iv_name = 'DCLS' - ig_data = ). - CATCH cx_root INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. + clear_fields( CHANGING cg_data = ). + + ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + + mo_files->add_string( + iv_ext = 'asdcls' + iv_string = ). + + CLEAR . + + io_xml->add( iv_name = 'DCLS' + ig_data = ). + ENDMETHOD. + + + METHOD clear_fields. + + DATA: + BEGIN OF ls_fields_to_clear, + as4user TYPE c, + as4date TYPE d, + as4time TYPE t, + created_by TYPE c, + created_date TYPE d, + as4local TYPE c, + END OF ls_fields_to_clear. + + FIELD-SYMBOLS: + TYPE any. + + MOVE-CORRESPONDING ls_fields_to_clear TO cg_data. + + ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE cg_data TO . + IF sy-subrc = 0. + clear_abap_language_version( CHANGING cv_abap_language_version = ). + ENDIF. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ddls.clas.abap b/src/objects/zcl_abapgit_object_ddls.clas.abap index 618c7d602..622a7b6ba 100644 --- a/src/objects/zcl_abapgit_object_ddls.clas.abap +++ b/src/objects/zcl_abapgit_object_ddls.clas.abap @@ -20,6 +20,7 @@ CLASS zcl_abapgit_object_ddls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje zcx_abapgit_exception. PRIVATE SECTION. + DATA mo_ddl_handler TYPE REF TO object. " CL_DD_DDL_HANDLER METHODS is_baseinfo_supported RETURNING VALUE(rv_supported) TYPE abap_bool . @@ -29,6 +30,12 @@ CLASS zcl_abapgit_object_ddls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje METHODS format_source_before_serialize CHANGING cv_string TYPE string. + METHODS clear_fields + CHANGING + !cg_data TYPE any + RAISING + zcx_abapgit_exception . + ENDCLASS. @@ -38,8 +45,6 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. METHOD constructor. - DATA lo_ddl TYPE REF TO object. - super->constructor( is_item = is_item iv_language = iv_language @@ -49,7 +54,8 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. TRY. CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') RECEIVING - handler = lo_ddl. + handler = mo_ddl_handler. + CATCH cx_root. RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. @@ -93,13 +99,12 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. METHOD is_baseinfo_supported. DATA: - lr_data_baseinfo TYPE REF TO data, - lx_error TYPE REF TO cx_root. + lr_data_baseinfo TYPE REF TO data. TRY. CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_S_BASEINFO_STRING_SAVE'). rv_supported = abap_true. - CATCH cx_root INTO lx_error. + CATCH cx_root. rv_supported = abap_false. ENDTRY. @@ -108,9 +113,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. METHOD open_adt_stob. - DATA: lr_data TYPE REF TO data, - lo_ddl TYPE REF TO object, - lx_error TYPE REF TO cx_root. + DATA: lr_data TYPE REF TO data. FIELD-SYMBOLS: TYPE STANDARD TABLE. FIELD-SYMBOLS: TYPE STANDARD TABLE. @@ -120,46 +123,37 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. FIELD-SYMBOLS: TYPE any. - TRY. - CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_DDOBJ'). - ASSIGN lr_data->* TO . + CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_DDOBJ'). + ASSIGN lr_data->* TO . - CREATE DATA lr_data LIKE LINE OF . - ASSIGN lr_data->* TO . + CREATE DATA lr_data LIKE LINE OF . + ASSIGN lr_data->* TO . - CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_ENTITY_OF_VIEW'). - ASSIGN lr_data->* TO . + CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_ENTITY_OF_VIEW'). + ASSIGN lr_data->* TO . - CREATE DATA lr_data LIKE LINE OF . - ASSIGN lr_data->* TO . + CREATE DATA lr_data LIKE LINE OF . + ASSIGN lr_data->* TO . - CLEAR . - ASSIGN COMPONENT 'NAME' OF STRUCTURE TO . - = iv_ddls_name. - INSERT INTO TABLE . + CLEAR . + ASSIGN COMPONENT 'NAME' OF STRUCTURE TO . + = iv_ddls_name. + INSERT INTO TABLE . - CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - handler = lo_ddl. + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~GET_VIEWNAME_FROM_ENTITYNAME') + EXPORTING + ddnames = + IMPORTING + view_of_entity = . - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~GET_VIEWNAME_FROM_ENTITYNAME') - EXPORTING - ddnames = - IMPORTING - view_of_entity = . + READ TABLE ASSIGNING INDEX 1. + IF sy-subrc = 0. + ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE TO . - READ TABLE ASSIGNING INDEX 1. - IF sy-subrc = 0. - ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE TO . + zcl_abapgit_adt_link=>jump( iv_obj_name = + iv_obj_type = 'DDLS' ). - zcl_abapgit_adt_link=>jump( iv_obj_name = - iv_obj_type = 'DDLS' ). - - ENDIF. - - CATCH cx_root INTO lx_error. - zcx_abapgit_exception=>raise_with_text( lx_error ). - ENDTRY. + ENDIF. ENDMETHOD. @@ -180,23 +174,17 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - DATA: lo_ddl TYPE REF TO object, - lr_data TYPE REF TO data, + DATA: lr_data TYPE REF TO data, lx_error TYPE REF TO cx_root. FIELD-SYMBOLS: TYPE any, TYPE any. + CREATE DATA lr_data TYPE ('DDDDLSRCV'). + ASSIGN lr_data->* TO . TRY. - CREATE DATA lr_data TYPE ('DDDDLSRCV'). - ASSIGN lr_data->* TO . - - CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - handler = lo_ddl. - - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ') + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ') EXPORTING name = ms_item-obj_name get_state = 'A' @@ -270,7 +258,6 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. METHOD zif_abapgit_object~deserialize. DATA: - lo_ddl TYPE REF TO object, lr_data TYPE REF TO data, lr_data_baseinfo TYPE REF TO data, lx_error TYPE REF TO cx_root. @@ -283,10 +270,10 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. TYPE any, TYPE any. - TRY. - CREATE DATA lr_data TYPE ('DDDDLSRCV'). - ASSIGN lr_data->* TO . + CREATE DATA lr_data TYPE ('DDDDLSRCV'). + ASSIGN lr_data->* TO . + TRY. io_xml->read( EXPORTING iv_name = 'DDLS' CHANGING cg_data = ). @@ -299,10 +286,6 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. set_abap_language_version( CHANGING cv_abap_language_version = ). ENDIF. - CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - handler = lo_ddl. - IF is_baseinfo_supported( ) = abap_true. CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_S_BASEINFO_STRING_SAVE'). ASSIGN lr_data_baseinfo->* TO . @@ -317,7 +300,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. = ms_item-obj_name. TRY. - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE') + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~SAVE') EXPORTING name = ms_item-obj_name put_state = 'N' @@ -325,7 +308,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. baseinfo_string = save_language_version = abap_true. CATCH cx_sy_dyn_call_param_not_found. - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE') + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~SAVE') EXPORTING name = ms_item-obj_name put_state = 'N' @@ -333,14 +316,14 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. baseinfo_string = . ENDTRY. ELSE. - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE') + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~SAVE') EXPORTING name = ms_item-obj_name put_state = 'N' ddddlsrcv_wa = . ENDIF. - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR') + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~WRITE_TADIR') EXPORTING objectname = ms_item-obj_name devclass = iv_package @@ -349,16 +332,14 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. corr_insert( iv_package ). CATCH cx_root INTO lx_error. - IF lo_ddl IS NOT INITIAL. - " Attempt clean-up but catch error if it doesn't work - TRY. - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~DELETE') - EXPORTING - name = ms_item-obj_name - prid = 0. - CATCH cx_root ##NO_HANDLER. - ENDTRY. - ENDIF. + " Attempt clean-up but catch error if it doesn't work + TRY. + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~DELETE') + EXPORTING + name = ms_item-obj_name + prid = 0. + CATCH cx_root ##NO_HANDLER. + ENDTRY. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. @@ -370,15 +351,10 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. METHOD zif_abapgit_object~exists. - DATA: lv_state TYPE objstate, - lo_ddl TYPE REF TO object. + DATA: lv_state TYPE objstate. TRY. - CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - handler = lo_ddl. - - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ') + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ') EXPORTING name = ms_item-obj_name IMPORTING @@ -457,36 +433,28 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. METHOD zif_abapgit_object~serialize. - DATA: lo_ddl TYPE REF TO object, - lr_data TYPE REF TO data, + DATA: lr_data TYPE REF TO data, lr_data_baseinfo TYPE REF TO data, - lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY, lx_error TYPE REF TO cx_root. - FIELD-SYMBOLS: TYPE any, - TYPE any, - LIKE LINE OF lt_clr_comps, - TYPE ANY TABLE, - TYPE any, - TYPE any, - TYPE any, - TYPE any. + FIELD-SYMBOLS: TYPE any, + TYPE any, + TYPE ANY TABLE, + TYPE any, + TYPE any, + TYPE any. + CREATE DATA lr_data TYPE ('DDDDLSRCV'). + ASSIGN lr_data->* TO . + TRY. - CREATE DATA lr_data TYPE ('DDDDLSRCV'). - ASSIGN lr_data->* TO . - - CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') - RECEIVING - handler = lo_ddl. IF is_baseinfo_supported( ) = abap_true. CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_T_BASEINFO_STRING'). ASSIGN lr_data_baseinfo->* TO . - ASSIGN lr_data_baseinfo->* TO . - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ') + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ') EXPORTING name = ms_item-obj_name get_state = 'A' @@ -511,7 +479,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. ENDIF. ENDLOOP. ELSE. - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ') + CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ') EXPORTING name = ms_item-obj_name get_state = 'A' @@ -523,24 +491,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. - ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE TO . - IF sy-subrc = 0. - clear_abap_language_version( CHANGING cv_abap_language_version = ). - ENDIF. - - APPEND 'AS4USER' TO lt_clr_comps. - APPEND 'AS4DATE' TO lt_clr_comps. - APPEND 'AS4TIME' TO lt_clr_comps. - APPEND 'ACTFLAG' TO lt_clr_comps. - APPEND 'CHGFLAG' TO lt_clr_comps. - APPEND 'ABAP_LANGU_VERSION' TO lt_clr_comps. - - LOOP AT lt_clr_comps ASSIGNING . - ASSIGN COMPONENT OF STRUCTURE TO . - IF sy-subrc = 0. - CLEAR . - ENDIF. - ENDLOOP. + clear_fields( CHANGING cg_data = ). ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . ASSERT sy-subrc = 0. @@ -557,4 +508,30 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. ig_data = ). ENDMETHOD. + + + METHOD clear_fields. + + DATA: + BEGIN OF ls_fields_to_clear, + as4user TYPE c, + as4date TYPE d, + as4time TYPE t, + actflag TYPE c, + chgflag TYPE c, + abap_langu_version TYPE c, + END OF ls_fields_to_clear. + + FIELD-SYMBOLS: + TYPE any. + + MOVE-CORRESPONDING ls_fields_to_clear TO cg_data. + + ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE cg_data TO . + IF sy-subrc = 0. + clear_abap_language_version( CHANGING cv_abap_language_version = ). + ENDIF. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ddlx.clas.abap b/src/objects/zcl_abapgit_object_ddlx.clas.abap index 392093782..b344b0343 100644 --- a/src/objects/zcl_abapgit_object_ddlx.clas.abap +++ b/src/objects/zcl_abapgit_object_ddlx.clas.abap @@ -12,20 +12,15 @@ CLASS zcl_abapgit_object_ddlx DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. - DATA mi_persistence TYPE REF TO if_wb_object_persist . - METHODS get_persistence - RETURNING - VALUE(ri_persistence) TYPE REF TO if_wb_object_persist - RAISING - zcx_abapgit_exception . + DATA mi_persistence TYPE REF TO if_wb_object_persist. + DATA mi_data_model TYPE REF TO if_wb_object_data_model. + DATA mv_object_key TYPE seu_objkey. METHODS clear_fields CHANGING - !cg_data TYPE any . - METHODS clear_field - IMPORTING - !iv_fieldname TYPE csequence - CHANGING - !cg_metadata TYPE any . + !cg_data TYPE any + RAISING + zcx_abapgit_exception . + ENDCLASS. @@ -40,131 +35,47 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. io_files = io_files io_i18n_params = io_i18n_params ). + mv_object_key = ms_item-obj_name. + TRY. - get_persistence( ). - CATCH zcx_abapgit_exception. + CREATE OBJECT mi_persistence + TYPE ('CL_DDLX_ADT_OBJECT_PERSIST'). + + CREATE OBJECT mi_data_model + TYPE ('CL_DDLX_WB_OBJECT_DATA'). + + CATCH cx_sy_create_object_error. RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. - METHOD clear_field. - - FIELD-SYMBOLS: TYPE data. - - ASSIGN COMPONENT iv_fieldname - OF STRUCTURE cg_metadata - TO . - IF sy-subrc = 0. - CLEAR: . - ENDIF. - - ENDMETHOD. - - - METHOD clear_fields. - - FIELD-SYMBOLS: TYPE any. - - ASSIGN COMPONENT 'METADATA' - OF STRUCTURE cg_data - TO . - ASSERT sy-subrc = 0. - - clear_field( EXPORTING iv_fieldname = 'CHANGED_AT' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'CHANGED_BY' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'CREATED_AT' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'CREATED_BY' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'RESPONSIBLE' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'PACKAGE_REF-NAME' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'CONTAINER_REF-PACKAGE_NAME' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'VERSION' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'RESPONSIBLE' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'MASTER_SYSTEM' - CHANGING cg_metadata = ). - - clear_field( EXPORTING iv_fieldname = 'ABAP_LANGUAGE_VERSION' - CHANGING cg_metadata = ). - - ENDMETHOD. - - - METHOD get_persistence. - - DATA: lx_error TYPE REF TO cx_root. - - TRY. - IF mi_persistence IS NOT BOUND. - - CREATE OBJECT mi_persistence - TYPE ('CL_DDLX_ADT_OBJECT_PERSIST'). - - ENDIF. - - CATCH cx_root INTO lx_error. - zcx_abapgit_exception=>raise_with_text( lx_error ). - ENDTRY. - - ri_persistence = mi_persistence. - - ENDMETHOD. - - METHOD zif_abapgit_object~changed_by. - DATA: - lv_object_key TYPE seu_objkey, - li_data_model TYPE REF TO if_wb_object_data_model, - li_persistence TYPE REF TO if_wb_object_persist, - lr_data TYPE REF TO data. + DATA: lr_data TYPE REF TO data. FIELD-SYMBOLS: TYPE any, TYPE data. - lv_object_key = ms_item-obj_name. + CREATE DATA lr_data + TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA'). + ASSIGN lr_data->* TO . TRY. - CREATE DATA lr_data - TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA'). - ASSIGN lr_data->* TO . - - CREATE OBJECT li_data_model - TYPE ('CL_DDLX_WB_OBJECT_DATA'). - - li_persistence = get_persistence( ). - - li_persistence->get( + mi_persistence->get( EXPORTING - p_object_key = lv_object_key + p_object_key = mv_object_key p_version = swbm_version_active CHANGING - p_object_data = li_data_model ). - CATCH cx_root. + p_object_data = mi_data_model ). + CATCH cx_swb_exception. rv_user = c_user_unknown. RETURN. ENDTRY. - li_data_model->get_data( IMPORTING p_data = ). + mi_data_model->get_data( IMPORTING p_data = ). ASSIGN COMPONENT 'METADATA-CHANGED_BY' OF STRUCTURE TO . ASSERT sy-subrc = 0. @@ -175,18 +86,13 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. METHOD zif_abapgit_object~delete. - DATA: lv_object_key TYPE seu_objkey, - lx_error TYPE REF TO cx_root. - - - lv_object_key = ms_item-obj_name. + DATA: lx_error TYPE REF TO cx_swb_exception. TRY. + mi_persistence->delete( p_object_key = mv_object_key + p_version = swbm_version_active ). - get_persistence( )->delete( p_object_key = lv_object_key - p_version = swbm_version_active ). - - CATCH cx_root INTO lx_error. + CATCH cx_swb_exception INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. @@ -197,9 +103,8 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. METHOD zif_abapgit_object~deserialize. - DATA: li_data_model TYPE REF TO if_wb_object_data_model, - lr_data TYPE REF TO data, - lx_error TYPE REF TO cx_root. + DATA: lr_data TYPE REF TO data, + lx_error TYPE REF TO cx_swb_exception. FIELD-SYMBOLS: TYPE any, TYPE data, @@ -209,67 +114,63 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. TYPE xsddatetime_z, TYPE data. + CREATE DATA lr_data + TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA'). + ASSIGN lr_data->* TO . + + io_xml->read( + EXPORTING + iv_name = 'DDLX' + CHANGING + cg_data = ). + + ASSIGN COMPONENT 'METADATA-ABAP_LANGU_VERSION' OF STRUCTURE TO . + IF sy-subrc = 0. + set_abap_language_version( CHANGING cv_abap_language_version = ). + ENDIF. + + ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + TRY. - CREATE DATA lr_data - TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA'). - ASSIGN lr_data->* TO . + " If the file doesn't exist that's ok, because previously + " the source code was stored in the xml. We are downward compatible. + = mo_files->read_string( 'asddlxs' ). + CATCH zcx_abapgit_exception ##NO_HANDLER. + ENDTRY. - io_xml->read( - EXPORTING - iv_name = 'DDLX' - CHANGING - cg_data = ). + ASSIGN COMPONENT 'METADATA-VERSION' OF STRUCTURE TO . + ASSERT sy-subrc = 0. - ASSIGN COMPONENT 'METADATA-ABAP_LANGU_VERSION' OF STRUCTURE TO . - IF sy-subrc = 0. - set_abap_language_version( CHANGING cv_abap_language_version = ). - ENDIF. + " We have to always save as inactive. Standard activation below activates then + " and also creates transport request entry if necessary + = 'inactive'. - ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE TO . - ASSERT sy-subrc = 0. + "package needed to be able to determine ABAP language version + ASSIGN COMPONENT 'METADATA-PACKAGE_REF-NAME' OF STRUCTURE TO . + IF IS ASSIGNED. + = iv_package. + ENDIF. - TRY. - " If the file doesn't exist that's ok, because previously - " the source code was stored in the xml. We are downward compatible. - = mo_files->read_string( 'asddlxs' ). - CATCH zcx_abapgit_exception ##NO_HANDLER. - ENDTRY. + ASSIGN COMPONENT 'METADATA-CHANGED_BY' OF STRUCTURE TO . + IF IS ASSIGNED. + = sy-uname. + ENDIF. + ASSIGN COMPONENT 'METADATA-CHANGED_AT' OF STRUCTURE TO . + IF IS ASSIGNED. + GET TIME STAMP FIELD . + ENDIF. - CREATE OBJECT li_data_model - TYPE ('CL_DDLX_WB_OBJECT_DATA'). + mi_data_model->set_data( ). - ASSIGN COMPONENT 'METADATA-VERSION' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - - " We have to always save as inactive. Standard activation below activates then - " and also creates transport request entry if necessary - = 'inactive'. - - "package needed to be able to determine ABAP language version - ASSIGN COMPONENT 'METADATA-PACKAGE_REF-NAME' OF STRUCTURE TO . - IF IS ASSIGNED. - = iv_package. - ENDIF. - - ASSIGN COMPONENT 'METADATA-CHANGED_BY' OF STRUCTURE TO . - IF IS ASSIGNED. - = sy-uname. - ENDIF. - ASSIGN COMPONENT 'METADATA-CHANGED_AT' OF STRUCTURE TO . - IF IS ASSIGNED. - GET TIME STAMP FIELD . - ENDIF. - - li_data_model->set_data( ). - - get_persistence( )->save( li_data_model ). - - tadir_insert( iv_package ). - - CATCH cx_root INTO lx_error. + TRY. + mi_persistence->save( mi_data_model ). + CATCH cx_swb_exception INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. + tadir_insert( iv_package ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. @@ -277,16 +178,12 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. METHOD zif_abapgit_object~exists. - DATA: lv_object_key TYPE seu_objkey. - - lv_object_key = ms_item-obj_name. - rv_bool = abap_true. TRY. - get_persistence( )->get( p_object_key = lv_object_key - p_version = swbm_version_active - p_existence_check_only = abap_true ). + mi_persistence->get( p_object_key = mv_object_key + p_version = swbm_version_active + p_existence_check_only = abap_true ). CATCH cx_swb_exception. rv_bool = abap_false. @@ -345,78 +242,99 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. METHOD zif_abapgit_object~serialize. - DATA: lv_object_key TYPE seu_objkey, - li_data_model TYPE REF TO if_wb_object_data_model, - li_persistence TYPE REF TO if_wb_object_persist, - lr_data TYPE REF TO data, - lx_error TYPE REF TO cx_root. + DATA: lr_data TYPE REF TO data, + lx_error TYPE REF TO cx_swb_exception. FIELD-SYMBOLS: TYPE any, TYPE data. - lv_object_key = ms_item-obj_name. + + CREATE DATA lr_data + TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA'). + ASSIGN lr_data->* TO . TRY. - CREATE DATA lr_data - TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA'). - ASSIGN lr_data->* TO . - - CREATE OBJECT li_data_model - TYPE ('CL_DDLX_WB_OBJECT_DATA'). - - li_persistence = get_persistence( ). - IF zcl_abapgit_factory=>get_environment( )->compare_with_inactive( ) = abap_true. "Retrieve inactive version - li_persistence->get( + mi_persistence->get( EXPORTING - p_object_key = lv_object_key + p_object_key = mv_object_key p_version = swbm_version_inactive CHANGING - p_object_data = li_data_model ). - IF li_data_model->get_object_name( ) IS INITIAL. + p_object_data = mi_data_model ). + IF mi_data_model->get_object_name( ) IS INITIAL. "Fallback: retrieve active version - li_persistence->get( + mi_persistence->get( EXPORTING - p_object_key = lv_object_key + p_object_key = mv_object_key p_version = swbm_version_active CHANGING - p_object_data = li_data_model ). + p_object_data = mi_data_model ). ENDIF. ELSE. "Retrieve active version - li_persistence->get( + mi_persistence->get( EXPORTING - p_object_key = lv_object_key + p_object_key = mv_object_key p_version = swbm_version_active CHANGING - p_object_data = li_data_model ). + p_object_data = mi_data_model ). ENDIF. - li_data_model->get_data( IMPORTING p_data = ). - - ASSIGN COMPONENT 'METADATA-ABAP_LANGU_VERSION' OF STRUCTURE TO . - IF sy-subrc = 0. - clear_abap_language_version( CHANGING cv_abap_language_version = ). - ENDIF. - - clear_fields( CHANGING cg_data = ). - - ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - - mo_files->add_string( - iv_ext = 'asddlxs' - iv_string = ). - - CLEAR . - - io_xml->add( iv_name = 'DDLX' - ig_data = ). - - CATCH cx_root INTO lx_error. + CATCH cx_swb_exception INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. + mi_data_model->get_data( IMPORTING p_data = ). + + clear_fields( CHANGING cg_data = ). + + ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + + mo_files->add_string( + iv_ext = 'asddlxs' + iv_string = ). + + CLEAR . + + io_xml->add( iv_name = 'DDLX' + ig_data = ). + ENDMETHOD. + + + METHOD clear_fields. + + DATA: + BEGIN OF ls_fields_to_clear, + BEGIN OF metadata, + changed_at TYPE d, + changed_by TYPE c, + created_at TYPE d, + created_by TYPE c, + responsible TYPE c, + BEGIN OF package_ref, + name TYPE c, + END OF package_ref, + BEGIN OF container_ref, + name TYPE c, + END OF container_ref, + version TYPE c, + master_system TYPE c, + END OF metadata, + END OF ls_fields_to_clear. + + FIELD-SYMBOLS: + TYPE any. + + MOVE-CORRESPONDING ls_fields_to_clear TO cg_data. + + ASSIGN COMPONENT 'METADATA-ABAP_LANGUAGE_VERSION' OF STRUCTURE cg_data TO . + IF sy-subrc = 0. + clear_abap_language_version( CHANGING cv_abap_language_version = ). + ENDIF. + + ENDMETHOD. + ENDCLASS.