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
+
+
+
+
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
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 .
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 .
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 .
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.
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 ).