From 5182ed6213522a6429930baf8a69884803476d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Thu, 23 Jan 2025 12:10:56 +0100 Subject: [PATCH 1/7] Patch: fix 'invalid filename' error if filename is empty (#7126) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/ui/pages/zcl_abapgit_gui_page_patch.clas.abap | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ui/pages/zcl_abapgit_gui_page_patch.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_patch.clas.abap index 9391f8a5a..922f9e049 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_patch.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_patch.clas.abap @@ -528,7 +528,10 @@ CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION. lv_patched TYPE abap_bool, lv_is_patch_possible TYPE abap_bool. - lv_patched = get_diff_object( iv_filename )->is_line_patched( iv_index ). + " In case an object is falsely detected as changed, filename is empty and there's no diff object + IF iv_filename IS NOT INITIAL. + lv_patched = get_diff_object( iv_filename )->is_line_patched( iv_index ). + ENDIF. lv_is_patch_possible = is_patch_line_possible( is_diff_line ). From c08d33bb4a643e5022b2b2c0192379715a8ffd24 Mon Sep 17 00:00:00 2001 From: Fabian Lupa Date: Thu, 23 Jan 2025 21:23:25 +0100 Subject: [PATCH 2/7] Enable ABAP Language Version support for DDLS (#7134) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/objects/zcl_abapgit_object_ddls.clas.abap | 59 +++++++++++++------ 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/src/objects/zcl_abapgit_object_ddls.clas.abap b/src/objects/zcl_abapgit_object_ddls.clas.abap index e91b09de8..063a003a4 100644 --- a/src/objects/zcl_abapgit_object_ddls.clas.abap +++ b/src/objects/zcl_abapgit_object_ddls.clas.abap @@ -276,11 +276,12 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. lx_error TYPE REF TO cx_root. FIELD-SYMBOLS: - TYPE any, - TYPE any, - TYPE any, - TYPE any, - TYPE any. + TYPE any, + TYPE any, + TYPE any, + TYPE any, + TYPE any, + TYPE any. TRY. CREATE DATA lr_data TYPE ('DDDDLSRCV'). @@ -293,6 +294,11 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. ASSERT sy-subrc = 0. = mo_files->read_string( 'asddls' ). + ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE TO . + IF sy-subrc = 0. + set_abap_language_version( CHANGING cv_abap_language_version = ). + ENDIF. + CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') RECEIVING handler = lo_ddl. @@ -310,12 +316,22 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. ASSERT sy-subrc = 0. = ms_item-obj_name. - CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE') - EXPORTING - name = ms_item-obj_name - put_state = 'N' - ddddlsrcv_wa = - baseinfo_string = . + TRY. + CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE') + EXPORTING + name = ms_item-obj_name + put_state = 'N' + ddddlsrcv_wa = + baseinfo_string = + save_language_version = abap_true. + CATCH cx_sy_dyn_call_param_not_found. + CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE') + EXPORTING + name = ms_item-obj_name + put_state = 'N' + ddddlsrcv_wa = + baseinfo_string = . + ENDTRY. ELSE. CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE') EXPORTING @@ -447,13 +463,14 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION. 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. + FIELD-SYMBOLS: TYPE any, + TYPE any, + LIKE LINE OF lt_clr_comps, + TYPE ANY TABLE, + TYPE any, + TYPE any, + TYPE any, + TYPE any. TRY. @@ -506,12 +523,16 @@ 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_LANGUAGE_VERSION' TO lt_clr_comps. APPEND 'ABAP_LANGU_VERSION' TO lt_clr_comps. LOOP AT lt_clr_comps ASSIGNING . From 99fe0f52403c71f1e56cab7406e56878617cb80f Mon Sep 17 00:00:00 2001 From: Fabian Lupa Date: Thu, 23 Jan 2025 21:29:14 +0100 Subject: [PATCH 3/7] Enable ABAP Language Version support for DCLS (#7135) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/objects/zcl_abapgit_object_dcls.clas.abap | 40 ++++++++++++++----- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/src/objects/zcl_abapgit_object_dcls.clas.abap b/src/objects/zcl_abapgit_object_dcls.clas.abap index 74addfb1c..ec71a8a97 100644 --- a/src/objects/zcl_abapgit_object_dcls.clas.abap +++ b/src/objects/zcl_abapgit_object_dcls.clas.abap @@ -70,9 +70,10 @@ 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. + 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. FIELD-SYMBOLS: TYPE any, TYPE any. @@ -91,6 +92,12 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. ASSERT sy-subrc = 0. = mo_files->read_string( 'asdcls' ). + ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE TO . + IF sy-subrc = 0. + lv_abap_language_version = . + set_abap_language_version( CHANGING cv_abap_language_version = lv_abap_language_version ). + ENDIF. + TRY. tadir_insert( iv_package ). @@ -98,13 +105,24 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. RECEIVING ro_handler = lo_dcl. - CALL METHOD lo_dcl->('SAVE') - EXPORTING - iv_dclname = ms_item-obj_name - iv_put_state = 'I' - is_dclsrc = - iv_devclass = iv_package - iv_access_mode = 'INSERT'. + TRY. + CALL METHOD lo_dcl->('SAVE') + EXPORTING + iv_dclname = ms_item-obj_name + iv_put_state = 'I' + is_dclsrc = + iv_devclass = iv_package + 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') + EXPORTING + iv_dclname = ms_item-obj_name + iv_put_state = 'I' + is_dclsrc = + iv_devclass = iv_package + iv_access_mode = 'INSERT'. + ENDTRY. CATCH cx_root INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). @@ -236,7 +254,7 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION. ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE TO . IF sy-subrc = 0. - CLEAR . + clear_abap_language_version( CHANGING cv_abap_language_version = ). ENDIF. ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . From 527d512409afd062d97b3d4484ee08c5e576ea71 Mon Sep 17 00:00:00 2001 From: Fabian Lupa Date: Thu, 23 Jan 2025 21:31:02 +0100 Subject: [PATCH 4/7] Enable ABAP Language Version support for DDLX (#7136) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/objects/zcl_abapgit_object_ddlx.clas.abap | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/objects/zcl_abapgit_object_ddlx.clas.abap b/src/objects/zcl_abapgit_object_ddlx.clas.abap index d48fb6668..e543dcaab 100644 --- a/src/objects/zcl_abapgit_object_ddlx.clas.abap +++ b/src/objects/zcl_abapgit_object_ddlx.clas.abap @@ -80,8 +80,6 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. clear_field( EXPORTING iv_fieldname = 'ABAP_LANGUAGE_VERSION' CHANGING cg_metadata = ). - clear_field( EXPORTING iv_fieldname = 'ABAP_LANGU_VERSION' - CHANGING cg_metadata = ). ENDMETHOD. @@ -179,12 +177,13 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. lr_data TYPE REF TO data, lx_error TYPE REF TO cx_root. - FIELD-SYMBOLS: TYPE any, - TYPE data, - TYPE data, - TYPE data, - TYPE syuname, - TYPE xsddatetime_z. + FIELD-SYMBOLS: TYPE any, + TYPE data, + TYPE data, + TYPE data, + TYPE syuname, + TYPE xsddatetime_z, + TYPE data. TRY. CREATE DATA lr_data @@ -197,6 +196,11 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. 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. @@ -367,6 +371,11 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. 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 . From f6683582d15557b94a105374ea4321ce4a5e5da0 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Wed, 5 Feb 2025 23:40:51 +0100 Subject: [PATCH 5/7] Remove unused exceptions (#7145) --- src/objects/sap/zif_abapgit_sap_package.intf.abap | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/objects/sap/zif_abapgit_sap_package.intf.abap b/src/objects/sap/zif_abapgit_sap_package.intf.abap index 0cb7fc4df..52c2c33fa 100644 --- a/src/objects/sap/zif_abapgit_sap_package.intf.abap +++ b/src/objects/sap/zif_abapgit_sap_package.intf.abap @@ -41,14 +41,10 @@ INTERFACE zif_abapgit_sap_package zcx_abapgit_exception . METHODS read_description RETURNING - VALUE(rv_description) TYPE string - RAISING - zcx_abapgit_exception . + VALUE(rv_description) TYPE string. METHODS read_responsible RETURNING - VALUE(rv_responsible) TYPE usnam - RAISING - zcx_abapgit_exception . + VALUE(rv_responsible) TYPE usnam. METHODS create_child IMPORTING !iv_child TYPE devclass From 160f10c38b65aff09c6d6bc5d7f351e312a6b312 Mon Sep 17 00:00:00 2001 From: Florian Dupret <67047285+fdupret@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:44:14 +0100 Subject: [PATCH 6/7] Execute WDCC after import method (#7140) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/objects/zcl_abapgit_object_wdcc.clas.abap | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/objects/zcl_abapgit_object_wdcc.clas.abap b/src/objects/zcl_abapgit_object_wdcc.clas.abap index 7ce5617de..cfd73b8da 100644 --- a/src/objects/zcl_abapgit_object_wdcc.clas.abap +++ b/src/objects/zcl_abapgit_object_wdcc.clas.abap @@ -8,6 +8,9 @@ CLASS zcl_abapgit_object_wdcc DEFINITION INTERFACES zif_abapgit_object . PROTECTED SECTION. + METHODS after_import + RAISING + zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. @@ -230,10 +233,33 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. tadir_insert( iv_package ). + after_import( ). + corr_insert( iv_package ). ENDMETHOD. + METHOD after_import. + + DATA: lt_cts_object_entry TYPE STANDARD TABLE OF e071 WITH DEFAULT KEY, + ls_cts_object_entry LIKE LINE OF lt_cts_object_entry, + lt_cts_key TYPE STANDARD TABLE OF e071k WITH DEFAULT KEY. + + ls_cts_object_entry-pgmid = 'R3TR'. + ls_cts_object_entry-object = ms_item-obj_type. + ls_cts_object_entry-obj_name = ms_item-obj_name. + INSERT ls_cts_object_entry INTO TABLE lt_cts_object_entry. + + CALL FUNCTION 'WDR_CFG_AFTER_IMPORT' + EXPORTING + iv_tarclient = sy-mandt + iv_is_upgrade = abap_false + TABLES + tt_e071 = lt_cts_object_entry + tt_e071k = lt_cts_key. + + ENDMETHOD. + METHOD zif_abapgit_object~exists. From f45425f665aab65099c97bd8eaa981e6b0666050 Mon Sep 17 00:00:00 2001 From: Ben9ka Date: Thu, 6 Feb 2025 14:27:50 +0100 Subject: [PATCH 7/7] Added support for COTA - Communication Target (#7143) --- .../aff/zcl_abapgit_aff_registry.clas.abap | 1 + .../aff/zcl_abapgit_object_cota.clas.abap | 46 +++++++++++++++++++ .../aff/zcl_abapgit_object_cota.clas.xml | 16 +++++++ 3 files changed, 63 insertions(+) create mode 100644 src/objects/aff/zcl_abapgit_object_cota.clas.abap create mode 100644 src/objects/aff/zcl_abapgit_object_cota.clas.xml diff --git a/src/objects/aff/zcl_abapgit_aff_registry.clas.abap b/src/objects/aff/zcl_abapgit_aff_registry.clas.abap index 589441013..ed87d94f0 100644 --- a/src/objects/aff/zcl_abapgit_aff_registry.clas.abap +++ b/src/objects/aff/zcl_abapgit_aff_registry.clas.abap @@ -52,6 +52,7 @@ CLASS ZCL_ABAPGIT_AFF_REGISTRY IMPLEMENTATION. register( 'CHKC' ). register( 'CHKO' ). register( 'CHKV' ). + register( 'COTA' ). register( 'DRTY' ). register( 'DTEB' ). register( 'DSFI' ). diff --git a/src/objects/aff/zcl_abapgit_object_cota.clas.abap b/src/objects/aff/zcl_abapgit_object_cota.clas.abap new file mode 100644 index 000000000..35ecc5516 --- /dev/null +++ b/src/objects/aff/zcl_abapgit_object_cota.clas.abap @@ -0,0 +1,46 @@ +CLASS zcl_abapgit_object_cota DEFINITION + PUBLIC + INHERITING FROM zcl_abapgit_object_common_aff + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + METHODS zif_abapgit_object~changed_by REDEFINITION. + METHODS zif_abapgit_object~delete REDEFINITION. + PROTECTED SECTION. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS zcl_abapgit_object_cota IMPLEMENTATION. + + METHOD zif_abapgit_object~changed_by. + DATA lx_error TYPE REF TO cx_root. + TRY. + SELECT SINGLE changedby FROM ('sapcontargethead') INTO rv_user + WHERE id = ms_item-obj_name AND version = 'I'. + + IF rv_user IS INITIAL. + SELECT SINGLE changedby FROM ('sapcontargethead') INTO rv_user + WHERE id = ms_item-obj_name AND version = 'A'. + ENDIF. + CATCH cx_root INTO lx_error. + zcx_abapgit_exception=>raise_with_text( lx_error ). + ENDTRY. + ENDMETHOD. + + METHOD zif_abapgit_object~delete. + DATA lx_error TYPE REF TO cx_root. + DATA lv_cota_name TYPE c LENGTH 30. + TRY. + lv_cota_name = ms_item-obj_name. + CALL METHOD ('CL_COTA_FACTORY')=>('DELETE_COTA') + EXPORTING + cota_name = lv_cota_name + korrnum = iv_transport. + CATCH cx_root INTO lx_error. + zcx_abapgit_exception=>raise_with_text( lx_error ). + ENDTRY. + ENDMETHOD. +ENDCLASS. diff --git a/src/objects/aff/zcl_abapgit_object_cota.clas.xml b/src/objects/aff/zcl_abapgit_object_cota.clas.xml new file mode 100644 index 000000000..3e4f0b0a3 --- /dev/null +++ b/src/objects/aff/zcl_abapgit_object_cota.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_OBJECT_COTA + E + abapGit - COTA - Communication Target + 1 + X + X + X + + + +