diff --git a/src/objects/zcl_abapgit_object_acid.clas.abap b/src/objects/zcl_abapgit_object_acid.clas.abap index df68176b8..cf4b328fb 100644 --- a/src/objects/zcl_abapgit_object_acid.clas.abap +++ b/src/objects/zcl_abapgit_object_acid.clas.abap @@ -139,4 +139,10 @@ CLASS zcl_abapgit_object_acid IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_acid IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_auth.clas.abap b/src/objects/zcl_abapgit_object_auth.clas.abap index 4b99d7931..ff36e3d57 100644 --- a/src/objects/zcl_abapgit_object_auth.clas.abap +++ b/src/objects/zcl_abapgit_object_auth.clas.abap @@ -8,7 +8,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_AUTH IMPLEMENTATION. +CLASS zcl_abapgit_object_auth IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. @@ -127,4 +127,11 @@ CLASS ZCL_ABAPGIT_OBJECT_AUTH IMPLEMENTATION. ig_data = ls_authx ). ENDMETHOD. "zif_abapgit_object~serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_clas_old.clas.abap b/src/objects/zcl_abapgit_object_clas_old.clas.abap index 4b898e2e5..192f0f200 100644 --- a/src/objects/zcl_abapgit_object_clas_old.clas.abap +++ b/src/objects/zcl_abapgit_object_clas_old.clas.abap @@ -30,12 +30,17 @@ CLASS zcl_abapgit_object_clas_old DEFINITION PUBLIC INHERITING FROM zcl_abapgit_ serialize_xml IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output RAISING zcx_abapgit_exception. + PRIVATE SECTION. + METHODS: + is_class_locked + RETURNING VALUE(rv_is_class_locked) TYPE abap_bool + RAISING zcx_abapgit_exception. ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION. +CLASS zcl_abapgit_object_clas_old IMPLEMENTATION. METHOD constructor. @@ -408,4 +413,44 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION. serialize_xml( io_xml ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + DATA: lv_classpool TYPE program. + + lv_classpool = cl_oo_classname_service=>get_classpool_name( |{ ms_item-obj_name }| ). + + IF is_class_locked( ) = abap_true + OR is_text_locked( lv_classpool ) = abap_true. + + rv_is_locked = abap_true. + + ENDIF. + + ENDMETHOD. + + + METHOD is_class_locked. + + DATA: lv_clsname TYPE seoclsenq-clsname. + + lv_clsname = ms_item-obj_name. + OVERLAY lv_clsname WITH '=============================='. + + CALL FUNCTION 'ENQUEUE_ESEOCLASS' + EXPORTING + clsname = lv_clsname + EXCEPTIONS + foreign_lock = 1 + system_failure = 2 + OTHERS = 3. + + rv_is_class_locked = boolc( sy-subrc <> 0 ). + + CALL FUNCTION 'DEQUEUE_ESEOCLASS' + EXPORTING + clsname = lv_clsname. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_cmpt.clas.abap b/src/objects/zcl_abapgit_object_cmpt.clas.abap index 78c35ee02..ed24e282b 100644 --- a/src/objects/zcl_abapgit_object_cmpt.clas.abap +++ b/src/objects/zcl_abapgit_object_cmpt.clas.abap @@ -214,6 +214,12 @@ CLASS ZCL_ABAPGIT_OBJECT_CMPT IMPLEMENTATION. zcx_abapgit_exception=>raise( 'CMPT not supported' ). ENDTRY. + ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_cus0.clas.abap b/src/objects/zcl_abapgit_object_cus0.clas.abap index 3a15b2760..c34d00bfa 100644 --- a/src/objects/zcl_abapgit_object_cus0.clas.abap +++ b/src/objects/zcl_abapgit_object_cus0.clas.abap @@ -140,4 +140,10 @@ CLASS zcl_abapgit_object_cus0 IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_cus0 IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_cus1.clas.abap b/src/objects/zcl_abapgit_object_cus1.clas.abap index 616978ad2..88a6a9399 100644 --- a/src/objects/zcl_abapgit_object_cus1.clas.abap +++ b/src/objects/zcl_abapgit_object_cus1.clas.abap @@ -152,4 +152,10 @@ CLASS zcl_abapgit_object_cus1 IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_cus1 IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_cus2.clas.abap b/src/objects/zcl_abapgit_object_cus2.clas.abap index 8ecad1e41..3b83a523c 100644 --- a/src/objects/zcl_abapgit_object_cus2.clas.abap +++ b/src/objects/zcl_abapgit_object_cus2.clas.abap @@ -145,4 +145,10 @@ CLASS zcl_abapgit_object_cus2 IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_cus2 IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_dcls.clas.abap b/src/objects/zcl_abapgit_object_dcls.clas.abap index 14fd22311..f66ab48c1 100644 --- a/src/objects/zcl_abapgit_object_dcls.clas.abap +++ b/src/objects/zcl_abapgit_object_dcls.clas.abap @@ -8,7 +8,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_DCLS IMPLEMENTATION. +CLASS zcl_abapgit_object_dcls IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. @@ -194,4 +194,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DCLS IMPLEMENTATION. ENDTRY. ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'E_ACMDCLSRC' + iv_argument = |{ ms_item-obj_name }| ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ddls.clas.abap b/src/objects/zcl_abapgit_object_ddls.clas.abap index b83ee5df1..0102167ae 100644 --- a/src/objects/zcl_abapgit_object_ddls.clas.abap +++ b/src/objects/zcl_abapgit_object_ddls.clas.abap @@ -300,4 +300,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION. ig_data = ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT' + iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ddlx.clas.abap b/src/objects/zcl_abapgit_object_ddlx.clas.abap index 10abc5bbf..2802671a2 100644 --- a/src/objects/zcl_abapgit_object_ddlx.clas.abap +++ b/src/objects/zcl_abapgit_object_ddlx.clas.abap @@ -28,7 +28,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_DDLX IMPLEMENTATION. +CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. METHOD clear_field. @@ -254,4 +254,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLX IMPLEMENTATION. ENDTRY. ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT' + iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_devc.clas.abap b/src/objects/zcl_abapgit_object_devc.clas.abap index c89ee7e4b..cd5f50025 100644 --- a/src/objects/zcl_abapgit_object_devc.clas.abap +++ b/src/objects/zcl_abapgit_object_devc.clas.abap @@ -544,4 +544,18 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION. io_xml->add( iv_name = 'PERMISSION' ig_data = lt_usage_data ). ENDIF. ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + DATA: lv_object TYPE eqegraarg . + + lv_object = |DV{ ms_item-obj_name }|. + OVERLAY lv_object WITH ' '. + lv_object = lv_object && '*'. + + rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'EEUDB' + iv_argument = lv_object ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_dial.clas.abap b/src/objects/zcl_abapgit_object_dial.clas.abap index 489daaae3..8432ce522 100644 --- a/src/objects/zcl_abapgit_object_dial.clas.abap +++ b/src/objects/zcl_abapgit_object_dial.clas.abap @@ -206,4 +206,11 @@ CLASS ZCL_ABAPGIT_OBJECT_DIAL IMPLEMENTATION. WHERE dnam = lv_dnam. ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_doct.clas.abap b/src/objects/zcl_abapgit_object_doct.clas.abap index 8459a0fa0..122cdd7a8 100644 --- a/src/objects/zcl_abapgit_object_doct.clas.abap +++ b/src/objects/zcl_abapgit_object_doct.clas.abap @@ -191,4 +191,10 @@ CLASS zcl_abapgit_object_doct IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_msag IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_docv.clas.abap b/src/objects/zcl_abapgit_object_docv.clas.abap index 455748b35..2d8720c71 100644 --- a/src/objects/zcl_abapgit_object_docv.clas.abap +++ b/src/objects/zcl_abapgit_object_docv.clas.abap @@ -153,4 +153,10 @@ CLASS zcl_abapgit_object_docv IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_msag IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_doma.clas.abap b/src/objects/zcl_abapgit_object_doma.clas.abap index 77ab42d2c..5e19c3492 100644 --- a/src/objects/zcl_abapgit_object_doma.clas.abap +++ b/src/objects/zcl_abapgit_object_doma.clas.abap @@ -36,7 +36,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION. +CLASS zcl_abapgit_object_doma IMPLEMENTATION. METHOD deserialize_texts. @@ -389,4 +389,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION. serialize_texts( io_xml ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT' + iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_dsys.clas.abap b/src/objects/zcl_abapgit_object_dsys.clas.abap index 96df5b53e..1641bb15c 100644 --- a/src/objects/zcl_abapgit_object_dsys.clas.abap +++ b/src/objects/zcl_abapgit_object_dsys.clas.abap @@ -162,4 +162,10 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_dsys IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_dtel.clas.abap b/src/objects/zcl_abapgit_object_dtel.clas.abap index 045746dc1..d2ff80edd 100644 --- a/src/objects/zcl_abapgit_object_dtel.clas.abap +++ b/src/objects/zcl_abapgit_object_dtel.clas.abap @@ -29,7 +29,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION. +CLASS zcl_abapgit_object_dtel IMPLEMENTATION. METHOD deserialize_texts. @@ -334,4 +334,13 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION. serialize_texts( io_xml ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT' + iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ). + + ENDMETHOD. + + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ecat.clas.abap b/src/objects/zcl_abapgit_object_ecat.clas.abap index ca31dcaac..a9b0b5640 100644 --- a/src/objects/zcl_abapgit_object_ecat.clas.abap +++ b/src/objects/zcl_abapgit_object_ecat.clas.abap @@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecat DEFINITION METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, - get_download REDEFINITION. + get_download REDEFINITION, + get_lock_object REDEFINITION. ENDCLASS. @@ -51,4 +52,10 @@ CLASS zcl_abapgit_object_ecat IMPLEMENTATION. ENDMETHOD. + METHOD get_lock_object. + + rv_lock_object = 'E_ECATT'. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ecatt_super.clas.abap b/src/objects/zcl_abapgit_object_ecatt_super.clas.abap index 473d79b0b..05dd2fdba 100644 --- a/src/objects/zcl_abapgit_object_ecatt_super.clas.abap +++ b/src/objects/zcl_abapgit_object_ecatt_super.clas.abap @@ -28,7 +28,11 @@ CLASS zcl_abapgit_object_ecatt_super DEFINITION get_download ABSTRACT RETURNING - VALUE(ro_download) TYPE REF TO cl_apl_ecatt_download. + VALUE(ro_download) TYPE REF TO cl_apl_ecatt_download, + + get_lock_object ABSTRACT + RETURNING + VALUE(rv_lock_object) TYPE eqeobj. PRIVATE SECTION. TYPES: @@ -628,5 +632,18 @@ CLASS zcl_abapgit_object_ecatt_super IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + DATA: lv_object TYPE seqg3-garg. + + lv_object = ms_item-obj_name. + OVERLAY lv_object WITH ' '. + lv_object = lv_object && '*'. + + rv_is_locked = exists_a_lock_entry_for( iv_lock_object = get_lock_object( ) + iv_argument = lv_object ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ecsd.clas.abap b/src/objects/zcl_abapgit_object_ecsd.clas.abap index 282108b85..d2e128001 100644 --- a/src/objects/zcl_abapgit_object_ecsd.clas.abap +++ b/src/objects/zcl_abapgit_object_ecsd.clas.abap @@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecsd DEFINITION METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, - get_download REDEFINITION. + get_download REDEFINITION, + get_lock_object REDEFINITION. ENDCLASS. @@ -51,4 +52,10 @@ CLASS zcl_abapgit_object_ecsd IMPLEMENTATION. ENDMETHOD. + METHOD get_lock_object. + + rv_lock_object = 'E_ECATT_SD'. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ecsp.clas.abap b/src/objects/zcl_abapgit_object_ecsp.clas.abap index 2e36e72ea..9a921c8ed 100644 --- a/src/objects/zcl_abapgit_object_ecsp.clas.abap +++ b/src/objects/zcl_abapgit_object_ecsp.clas.abap @@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecsp DEFINITION METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, - get_download REDEFINITION. + get_download REDEFINITION, + get_lock_object REDEFINITION. ENDCLASS. @@ -53,4 +54,10 @@ CLASS zcl_abapgit_object_ecsp IMPLEMENTATION. ENDMETHOD. + METHOD get_lock_object. + + rv_lock_object = 'E_ECATT_SP'. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ectc.clas.abap b/src/objects/zcl_abapgit_object_ectc.clas.abap index 6c884ab9e..0041184cc 100644 --- a/src/objects/zcl_abapgit_object_ectc.clas.abap +++ b/src/objects/zcl_abapgit_object_ectc.clas.abap @@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ectc DEFINITION METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, - get_download REDEFINITION. + get_download REDEFINITION, + get_lock_object REDEFINITION. ENDCLASS. @@ -51,4 +52,10 @@ CLASS zcl_abapgit_object_ectc IMPLEMENTATION. ENDMETHOD. + METHOD get_lock_object. + + rv_lock_object = 'E_ECATT_TC'. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ectd.clas.abap b/src/objects/zcl_abapgit_object_ectd.clas.abap index cc2da7979..6691679fc 100644 --- a/src/objects/zcl_abapgit_object_ectd.clas.abap +++ b/src/objects/zcl_abapgit_object_ectd.clas.abap @@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ectd DEFINITION METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, - get_download REDEFINITION. + get_download REDEFINITION, + get_lock_object REDEFINITION. ENDCLASS. @@ -50,4 +51,10 @@ CLASS zcl_abapgit_object_ectd IMPLEMENTATION. ENDMETHOD. + METHOD get_lock_object. + + rv_lock_object = 'E_ECATT_TD'. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ecvo.clas.abap b/src/objects/zcl_abapgit_object_ecvo.clas.abap index e02899116..52d90776b 100644 --- a/src/objects/zcl_abapgit_object_ecvo.clas.abap +++ b/src/objects/zcl_abapgit_object_ecvo.clas.abap @@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecvo DEFINITION METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, - get_download REDEFINITION. + get_download REDEFINITION, + get_lock_object REDEFINITION. ENDCLASS. @@ -53,4 +54,10 @@ CLASS zcl_abapgit_object_ecvo IMPLEMENTATION. ENDMETHOD. + METHOD get_lock_object. + + rv_lock_object = 'E_ECATT_TD'. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_enho.clas.abap b/src/objects/zcl_abapgit_object_enho.clas.abap index 37cb6a774..c604d5456 100644 --- a/src/objects/zcl_abapgit_object_enho.clas.abap +++ b/src/objects/zcl_abapgit_object_enho.clas.abap @@ -211,4 +211,10 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. "zif_abapgit_object~compare_to_remote_version + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_enho IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_enhs.clas.abap b/src/objects/zcl_abapgit_object_enhs.clas.abap index 7401d007d..92a0317fe 100644 --- a/src/objects/zcl_abapgit_object_enhs.clas.abap +++ b/src/objects/zcl_abapgit_object_enhs.clas.abap @@ -179,4 +179,10 @@ CLASS zcl_abapgit_object_enhs IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_enhs diff --git a/src/objects/zcl_abapgit_object_enqu.clas.abap b/src/objects/zcl_abapgit_object_enqu.clas.abap index 1b29a4b48..693aea16d 100644 --- a/src/objects/zcl_abapgit_object_enqu.clas.abap +++ b/src/objects/zcl_abapgit_object_enqu.clas.abap @@ -175,4 +175,10 @@ CLASS zcl_abapgit_object_enqu IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_enqu IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_ensc.clas.abap b/src/objects/zcl_abapgit_object_ensc.clas.abap index d7ff374bd..d35d8f0ff 100644 --- a/src/objects/zcl_abapgit_object_ensc.clas.abap +++ b/src/objects/zcl_abapgit_object_ensc.clas.abap @@ -187,4 +187,10 @@ CLASS zcl_abapgit_object_ensc IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_ensc diff --git a/src/objects/zcl_abapgit_object_form.clas.abap b/src/objects/zcl_abapgit_object_form.clas.abap index d81505bb3..1b971431e 100644 --- a/src/objects/zcl_abapgit_object_form.clas.abap +++ b/src/objects/zcl_abapgit_object_form.clas.abap @@ -434,4 +434,10 @@ CLASS zcl_abapgit_object_form IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_FORM IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_fugr.clas.abap b/src/objects/zcl_abapgit_object_fugr.clas.abap index 53591a7aa..ca8b08242 100644 --- a/src/objects/zcl_abapgit_object_fugr.clas.abap +++ b/src/objects/zcl_abapgit_object_fugr.clas.abap @@ -77,16 +77,34 @@ CLASS zcl_abapgit_object_fugr DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje zcx_abapgit_exception . METHODS are_exceptions_class_based IMPORTING - !iv_function_name TYPE rs38l_fnam + iv_function_name TYPE rs38l_fnam RETURNING - VALUE(rv_return) TYPE abap_bool + VALUE(rv_return) TYPE abap_bool RAISING zcx_abapgit_exception . + METHODS is_function_group_locked + RETURNING + VALUE(rv_is_functions_group_locked) TYPE abap_bool + RAISING + zcx_abapgit_exception. + METHODS is_any_include_locked + RETURNING + VALUE(rv_is_any_include_locked) TYPE abap_bool + RAISING + zcx_abapgit_exception. + METHODS is_any_function_module_locked + RETURNING + VALUE(rv_any_function_module_locked) TYPE abap_bool + RAISING + zcx_abapgit_exception. + + + ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION. +CLASS zcl_abapgit_object_fugr IMPLEMENTATION. METHOD are_exceptions_class_based. @@ -844,4 +862,79 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION. ENDIF. ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + DATA: lv_program TYPE program. + + lv_program = main_name( ). + + IF is_function_group_locked( ) = abap_true + OR is_any_include_locked( ) = abap_true + OR is_any_function_module_locked( ) = abap_true + OR is_any_dynpro_locked( lv_program ) = abap_true + OR is_cua_locked( lv_program ) = abap_true + OR is_text_locked( lv_program ) = abap_true. + + rv_is_locked = abap_true. + + ENDIF. + + ENDMETHOD. + + + METHOD is_function_group_locked. + + DATA: lv_object TYPE eqegraarg . + + lv_object = |FG{ ms_item-obj_name }|. + OVERLAY lv_object WITH ' '. + lv_object = lv_object && '*'. + + rv_is_functions_group_locked = exists_a_lock_entry_for( iv_lock_object = 'EEUDB' + iv_argument = lv_object ). + + ENDMETHOD. + + + METHOD is_any_include_locked. + + DATA: lt_includes TYPE rso_t_objnm. + FIELD-SYMBOLS: TYPE sobj_name. + + lt_includes = includes( ). + + LOOP AT lt_includes ASSIGNING . + + IF exists_a_lock_entry_for( iv_lock_object = 'ESRDIRE' + iv_argument = |{ }| ) = abap_true. + rv_is_any_include_locked = abap_true. + EXIT. + ENDIF. + + ENDLOOP. + + ENDMETHOD. + + + METHOD is_any_function_module_locked. + + DATA: lt_functions TYPE zcl_abapgit_object_fugr=>ty_rs38l_incl_tt. + + FIELD-SYMBOLS: TYPE rs38l_incl. + + lt_functions = functions( ). + + LOOP AT lt_functions ASSIGNING . + + IF exists_a_lock_entry_for( iv_lock_object = 'ESFUNCTION' + iv_argument = |{ -funcname }| ) = abap_true. + rv_any_function_module_locked = abap_true. + EXIT. + ENDIF. + + ENDLOOP. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_iamu.clas.abap b/src/objects/zcl_abapgit_object_iamu.clas.abap index 3396827d3..6d418830c 100644 --- a/src/objects/zcl_abapgit_object_iamu.clas.abap +++ b/src/objects/zcl_abapgit_object_iamu.clas.abap @@ -296,4 +296,10 @@ CLASS zcl_abapgit_object_iamu IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_iarp.clas.abap b/src/objects/zcl_abapgit_object_iarp.clas.abap index db4f01fd9..222e0b1aa 100644 --- a/src/objects/zcl_abapgit_object_iarp.clas.abap +++ b/src/objects/zcl_abapgit_object_iarp.clas.abap @@ -184,4 +184,10 @@ CLASS zcl_abapgit_object_iarp IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_iarp IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_iasp.clas.abap b/src/objects/zcl_abapgit_object_iasp.clas.abap index 9b813efb0..61f65f5d1 100644 --- a/src/objects/zcl_abapgit_object_iasp.clas.abap +++ b/src/objects/zcl_abapgit_object_iasp.clas.abap @@ -184,4 +184,10 @@ CLASS zcl_abapgit_object_iasp IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_iasp IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_iatu.clas.abap b/src/objects/zcl_abapgit_object_iatu.clas.abap index 4d953b96c..378ba88a5 100644 --- a/src/objects/zcl_abapgit_object_iatu.clas.abap +++ b/src/objects/zcl_abapgit_object_iatu.clas.abap @@ -201,4 +201,10 @@ CLASS zcl_abapgit_object_iatu IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_iatu IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_idoc.clas.abap b/src/objects/zcl_abapgit_object_idoc.clas.abap index 7ffc7b4fb..973f3a4f5 100644 --- a/src/objects/zcl_abapgit_object_idoc.clas.abap +++ b/src/objects/zcl_abapgit_object_idoc.clas.abap @@ -225,4 +225,11 @@ CLASS ZCL_ABAPGIT_OBJECT_IDOC IMPLEMENTATION. ig_data = ls_idoc ). ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_iext.clas.abap b/src/objects/zcl_abapgit_object_iext.clas.abap index af3d3b8fa..2da456c40 100644 --- a/src/objects/zcl_abapgit_object_iext.clas.abap +++ b/src/objects/zcl_abapgit_object_iext.clas.abap @@ -222,4 +222,10 @@ CLASS zcl_abapgit_object_iext IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_intf.clas.abap b/src/objects/zcl_abapgit_object_intf.clas.abap index 74377a4e4..0fe224c09 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.abap @@ -265,4 +265,11 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION. serialize_xml( io_xml ). ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_jobd.clas.abap b/src/objects/zcl_abapgit_object_jobd.clas.abap index 0b93f47ae..91f54c5d5 100644 --- a/src/objects/zcl_abapgit_object_jobd.clas.abap +++ b/src/objects/zcl_abapgit_object_jobd.clas.abap @@ -205,4 +205,11 @@ CLASS ZCL_ABAPGIT_OBJECT_JOBD IMPLEMENTATION. ENDTRY. ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_msag.clas.abap b/src/objects/zcl_abapgit_object_msag.clas.abap index aae5bf8c2..63b6fb7cd 100644 --- a/src/objects/zcl_abapgit_object_msag.clas.abap +++ b/src/objects/zcl_abapgit_object_msag.clas.abap @@ -288,4 +288,10 @@ CLASS zcl_abapgit_object_msag IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_msag IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_nrob.clas.abap b/src/objects/zcl_abapgit_object_nrob.clas.abap index dbeae55cd..5a1eacaec 100644 --- a/src/objects/zcl_abapgit_object_nrob.clas.abap +++ b/src/objects/zcl_abapgit_object_nrob.clas.abap @@ -274,4 +274,10 @@ CLASS zcl_abapgit_object_nrob IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_nrob IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_para.clas.abap b/src/objects/zcl_abapgit_object_para.clas.abap index 4d6067d41..29e45fff7 100644 --- a/src/objects/zcl_abapgit_object_para.clas.abap +++ b/src/objects/zcl_abapgit_object_para.clas.abap @@ -134,4 +134,10 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_para IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_pinf.clas.abap b/src/objects/zcl_abapgit_object_pinf.clas.abap index bd1382a49..4afeefaae 100644 --- a/src/objects/zcl_abapgit_object_pinf.clas.abap +++ b/src/objects/zcl_abapgit_object_pinf.clas.abap @@ -345,4 +345,10 @@ CLASS zcl_abapgit_object_pinf IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_PINF IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_prag.clas.abap b/src/objects/zcl_abapgit_object_prag.clas.abap index dba156f86..f7bcce9d7 100644 --- a/src/objects/zcl_abapgit_object_prag.clas.abap +++ b/src/objects/zcl_abapgit_object_prag.clas.abap @@ -182,4 +182,11 @@ CLASS ZCL_ABAPGIT_OBJECT_PRAG IMPLEMENTATION. zcx_abapgit_exception=>raise( |Pragma { ms_item-obj_name } doesn't exist| ). ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_prog.clas.abap b/src/objects/zcl_abapgit_object_prog.clas.abap index 8ca4f4392..dbd8d50d4 100644 --- a/src/objects/zcl_abapgit_object_prog.clas.abap +++ b/src/objects/zcl_abapgit_object_prog.clas.abap @@ -17,13 +17,18 @@ CLASS zcl_abapgit_object_prog DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje RAISING zcx_abapgit_exception, deserialize_texts IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_input - RAISING zcx_abapgit_exception. + RAISING zcx_abapgit_exception, + is_program_locked + RETURNING + VALUE(rv_is_program_locked) TYPE abap_bool + RAISING + zcx_abapgit_exception. ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION. +CLASS zcl_abapgit_object_prog IMPLEMENTATION. METHOD deserialize_texts. @@ -213,4 +218,26 @@ CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION. serialize_texts( io_xml ). ENDMETHOD. "zif_abapgit_serialize~serialize + + METHOD zif_abapgit_object~is_locked. + + IF is_program_locked( ) = abap_true + OR is_any_dynpro_locked( ms_item-obj_name ) = abap_true + OR is_cua_locked( ms_item-obj_name ) = abap_true + OR is_text_locked( ms_item-obj_name ) = abap_true. + + rv_is_locked = abap_true. + + ENDIF. + + ENDMETHOD. + + + METHOD is_program_locked. + + rv_is_program_locked = exists_a_lock_entry_for( iv_lock_object = 'ESRDIRE' + iv_argument = |{ ms_item-obj_name }| ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_sfbf.clas.abap b/src/objects/zcl_abapgit_object_sfbf.clas.abap index c621e545d..049e6fd74 100644 --- a/src/objects/zcl_abapgit_object_sfbf.clas.abap +++ b/src/objects/zcl_abapgit_object_sfbf.clas.abap @@ -176,6 +176,13 @@ CLASS ZCL_ABAPGIT_OBJECT_SFBF IMPLEMENTATION. ENDMETHOD. "zif_abapgit_object~has_changed_since + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + + METHOD zif_abapgit_object~jump. CALL FUNCTION 'RS_TOOL_ACCESS' diff --git a/src/objects/zcl_abapgit_object_sfbs.clas.abap b/src/objects/zcl_abapgit_object_sfbs.clas.abap index 7ccbda572..44aeb470a 100644 --- a/src/objects/zcl_abapgit_object_sfbs.clas.abap +++ b/src/objects/zcl_abapgit_object_sfbs.clas.abap @@ -224,4 +224,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SFBS IMPLEMENTATION. iv_name = 'PARENT_BFS' ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_sfpf.clas.abap b/src/objects/zcl_abapgit_object_sfpf.clas.abap index 5db233ab8..a48ad8d01 100644 --- a/src/objects/zcl_abapgit_object_sfpf.clas.abap +++ b/src/objects/zcl_abapgit_object_sfpf.clas.abap @@ -224,4 +224,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SFPF IMPLEMENTATION. io_xml->set_raw( li_document->get_root_element( ) ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_sfpi.clas.abap b/src/objects/zcl_abapgit_object_sfpi.clas.abap index b842b30ac..16219d2d8 100644 --- a/src/objects/zcl_abapgit_object_sfpi.clas.abap +++ b/src/objects/zcl_abapgit_object_sfpi.clas.abap @@ -157,4 +157,10 @@ CLASS zcl_abapgit_object_sfpi IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_doma IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_sfsw.clas.abap b/src/objects/zcl_abapgit_object_sfsw.clas.abap index 01a2b5a31..3d20e7a86 100644 --- a/src/objects/zcl_abapgit_object_sfsw.clas.abap +++ b/src/objects/zcl_abapgit_object_sfsw.clas.abap @@ -215,4 +215,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SFSW IMPLEMENTATION. iv_name = 'CONFLICTS' ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_shi3.clas.abap b/src/objects/zcl_abapgit_object_shi3.clas.abap index dd65fc8e8..9bb182804 100644 --- a/src/objects/zcl_abapgit_object_shi3.clas.abap +++ b/src/objects/zcl_abapgit_object_shi3.clas.abap @@ -261,4 +261,10 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_shi3 IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_shi5.clas.abap b/src/objects/zcl_abapgit_object_shi5.clas.abap index b294fc52e..f15a19082 100644 --- a/src/objects/zcl_abapgit_object_shi5.clas.abap +++ b/src/objects/zcl_abapgit_object_shi5.clas.abap @@ -126,4 +126,10 @@ CLASS zcl_abapgit_object_shi5 IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_shi5 IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_shi8.clas.abap b/src/objects/zcl_abapgit_object_shi8.clas.abap index c57406721..d52e59193 100644 --- a/src/objects/zcl_abapgit_object_shi8.clas.abap +++ b/src/objects/zcl_abapgit_object_shi8.clas.abap @@ -132,4 +132,10 @@ CLASS zcl_abapgit_object_shi8 IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_shi8 IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_shlp.clas.abap b/src/objects/zcl_abapgit_object_shlp.clas.abap index ef17e7bbb..75a0c0fc7 100644 --- a/src/objects/zcl_abapgit_object_shlp.clas.abap +++ b/src/objects/zcl_abapgit_object_shlp.clas.abap @@ -196,4 +196,10 @@ CLASS zcl_abapgit_object_shlp IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_shlp IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_shma.clas.abap b/src/objects/zcl_abapgit_object_shma.clas.abap index ec247ec77..d95cad78f 100644 --- a/src/objects/zcl_abapgit_object_shma.clas.abap +++ b/src/objects/zcl_abapgit_object_shma.clas.abap @@ -266,4 +266,10 @@ CLASS zcl_abapgit_object_shma IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_sicf.clas.abap b/src/objects/zcl_abapgit_object_sicf.clas.abap index 4d4e8f426..905d2c176 100644 --- a/src/objects/zcl_abapgit_object_sicf.clas.abap +++ b/src/objects/zcl_abapgit_object_sicf.clas.abap @@ -572,4 +572,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SICF IMPLEMENTATION. ig_data = lt_icfhandler ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_smim.clas.abap b/src/objects/zcl_abapgit_object_smim.clas.abap index 6d3f5e870..110805970 100644 --- a/src/objects/zcl_abapgit_object_smim.clas.abap +++ b/src/objects/zcl_abapgit_object_smim.clas.abap @@ -330,4 +330,10 @@ CLASS zcl_abapgit_object_smim IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_smim IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_splo.clas.abap b/src/objects/zcl_abapgit_object_splo.clas.abap index 3c2838322..703b0979e 100644 --- a/src/objects/zcl_abapgit_object_splo.clas.abap +++ b/src/objects/zcl_abapgit_object_splo.clas.abap @@ -109,4 +109,10 @@ CLASS zcl_abapgit_object_splo IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_splo IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_srfc.clas.abap b/src/objects/zcl_abapgit_object_srfc.clas.abap index 46d4f782e..82fa5823c 100644 --- a/src/objects/zcl_abapgit_object_srfc.clas.abap +++ b/src/objects/zcl_abapgit_object_srfc.clas.abap @@ -181,4 +181,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SRFC IMPLEMENTATION. ig_data = ). ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ssfo.clas.abap b/src/objects/zcl_abapgit_object_ssfo.clas.abap index 4b0c589a8..be02fa50e 100644 --- a/src/objects/zcl_abapgit_object_ssfo.clas.abap +++ b/src/objects/zcl_abapgit_object_ssfo.clas.abap @@ -283,4 +283,10 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_ssfo IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_ssst.clas.abap b/src/objects/zcl_abapgit_object_ssst.clas.abap index b58374129..377b10975 100644 --- a/src/objects/zcl_abapgit_object_ssst.clas.abap +++ b/src/objects/zcl_abapgit_object_ssst.clas.abap @@ -261,4 +261,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SSST IMPLEMENTATION. iv_name = 'STXSTAB' ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_styl.clas.abap b/src/objects/zcl_abapgit_object_styl.clas.abap index 3378de8dd..03fac8ef6 100644 --- a/src/objects/zcl_abapgit_object_styl.clas.abap +++ b/src/objects/zcl_abapgit_object_styl.clas.abap @@ -186,4 +186,10 @@ CLASS zcl_abapgit_object_styl IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_styl IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_susc.clas.abap b/src/objects/zcl_abapgit_object_susc.clas.abap index 6c724dbd2..72886dfe3 100644 --- a/src/objects/zcl_abapgit_object_susc.clas.abap +++ b/src/objects/zcl_abapgit_object_susc.clas.abap @@ -111,4 +111,10 @@ CLASS zcl_abapgit_object_susc IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_susc IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_suso.clas.abap b/src/objects/zcl_abapgit_object_suso.clas.abap index 50827885d..4f94f01ec 100644 --- a/src/objects/zcl_abapgit_object_suso.clas.abap +++ b/src/objects/zcl_abapgit_object_suso.clas.abap @@ -162,4 +162,10 @@ CLASS zcl_abapgit_object_suso IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_suso IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_sxci.clas.abap b/src/objects/zcl_abapgit_object_sxci.clas.abap index e0d5362b8..878ac2ccf 100644 --- a/src/objects/zcl_abapgit_object_sxci.clas.abap +++ b/src/objects/zcl_abapgit_object_sxci.clas.abap @@ -276,4 +276,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SXCI IMPLEMENTATION. ig_data = ls_classic_badi_implementation ). ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_tabl.clas.abap b/src/objects/zcl_abapgit_object_tabl.clas.abap index 6fda867cf..7c0e66b31 100644 --- a/src/objects/zcl_abapgit_object_tabl.clas.abap +++ b/src/objects/zcl_abapgit_object_tabl.clas.abap @@ -498,4 +498,12 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION. ig_data = lt_dd36m ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT' + iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_tabl_dialog.clas.abap b/src/objects/zcl_abapgit_object_tabl_dialog.clas.abap index a9c51823a..3a78873de 100644 --- a/src/objects/zcl_abapgit_object_tabl_dialog.clas.abap +++ b/src/objects/zcl_abapgit_object_tabl_dialog.clas.abap @@ -55,4 +55,5 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL_DIALOG IMPLEMENTATION. ENDIF. ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_tobj.clas.abap b/src/objects/zcl_abapgit_object_tobj.clas.abap index 4c638c79f..c5746a6b9 100644 --- a/src/objects/zcl_abapgit_object_tobj.clas.abap +++ b/src/objects/zcl_abapgit_object_tobj.clas.abap @@ -300,4 +300,10 @@ CLASS zcl_abapgit_object_tobj IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_tobj IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_tran.clas.abap b/src/objects/zcl_abapgit_object_tran.clas.abap index ccdb9e16a..979f1d279 100644 --- a/src/objects/zcl_abapgit_object_tran.clas.abap +++ b/src/objects/zcl_abapgit_object_tran.clas.abap @@ -482,4 +482,11 @@ CLASS ZCL_ABAPGIT_OBJECT_TRAN IMPLEMENTATION. serialize_texts( io_xml ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ttyp.clas.abap b/src/objects/zcl_abapgit_object_ttyp.clas.abap index 1d53fd9e7..b66ab7f3a 100644 --- a/src/objects/zcl_abapgit_object_ttyp.clas.abap +++ b/src/objects/zcl_abapgit_object_ttyp.clas.abap @@ -175,4 +175,10 @@ CLASS zcl_abapgit_object_ttyp IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_ttyp IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_type.clas.abap b/src/objects/zcl_abapgit_object_type.clas.abap index fb855e8e0..ed6dab64d 100644 --- a/src/objects/zcl_abapgit_object_type.clas.abap +++ b/src/objects/zcl_abapgit_object_type.clas.abap @@ -201,4 +201,10 @@ CLASS zcl_abapgit_object_type IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_type IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_ucsa.clas.abap b/src/objects/zcl_abapgit_object_ucsa.clas.abap index 8ae62b5be..803abc0ba 100644 --- a/src/objects/zcl_abapgit_object_ucsa.clas.abap +++ b/src/objects/zcl_abapgit_object_ucsa.clas.abap @@ -272,4 +272,11 @@ CLASS ZCL_ABAPGIT_OBJECT_UCSA IMPLEMENTATION. ENDTRY. ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_vcls.clas.abap b/src/objects/zcl_abapgit_object_vcls.clas.abap index c8dfd4862..9d2939062 100644 --- a/src/objects/zcl_abapgit_object_vcls.clas.abap +++ b/src/objects/zcl_abapgit_object_vcls.clas.abap @@ -185,4 +185,10 @@ CLASS zcl_abapgit_object_vcls IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_vcls IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_view.clas.abap b/src/objects/zcl_abapgit_object_view.clas.abap index 85e4a635d..7b3bf694c 100644 --- a/src/objects/zcl_abapgit_object_view.clas.abap +++ b/src/objects/zcl_abapgit_object_view.clas.abap @@ -268,4 +268,11 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION. iv_name = 'DD28V_TABLE' ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_w3super.clas.abap b/src/objects/zcl_abapgit_object_w3super.clas.abap index 91892d841..b254e820b 100644 --- a/src/objects/zcl_abapgit_object_w3super.clas.abap +++ b/src/objects/zcl_abapgit_object_w3super.clas.abap @@ -491,4 +491,11 @@ CLASS ZCL_ABAPGIT_OBJECT_W3SUPER IMPLEMENTATION. iv_ext = get_ext( lt_w3params ) ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_wapa.clas.abap b/src/objects/zcl_abapgit_object_wapa.clas.abap index 7523fe8ee..33bf4c5ba 100644 --- a/src/objects/zcl_abapgit_object_wapa.clas.abap +++ b/src/objects/zcl_abapgit_object_wapa.clas.abap @@ -473,4 +473,10 @@ CLASS zcl_abapgit_object_wapa IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_tran IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_wdya.clas.abap b/src/objects/zcl_abapgit_object_wdya.clas.abap index 1a98fbfa8..af80780a0 100644 --- a/src/objects/zcl_abapgit_object_wdya.clas.abap +++ b/src/objects/zcl_abapgit_object_wdya.clas.abap @@ -225,4 +225,10 @@ CLASS zcl_abapgit_object_wdya IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_wdya IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_object_wdyn.clas.abap b/src/objects/zcl_abapgit_object_wdyn.clas.abap index d67d20998..ed14d6f7a 100644 --- a/src/objects/zcl_abapgit_object_wdyn.clas.abap +++ b/src/objects/zcl_abapgit_object_wdyn.clas.abap @@ -822,4 +822,11 @@ CLASS ZCL_ABAPGIT_OBJECT_WDYN IMPLEMENTATION. iv_name = 'SOURCES' ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_webi.clas.abap b/src/objects/zcl_abapgit_object_webi.clas.abap index defdf81ca..604a8ac60 100644 --- a/src/objects/zcl_abapgit_object_webi.clas.abap +++ b/src/objects/zcl_abapgit_object_webi.clas.abap @@ -462,4 +462,11 @@ CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION. ig_data = ls_webi ). ENDMETHOD. "zif_abapgit_object~serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_xinx.clas.abap b/src/objects/zcl_abapgit_object_xinx.clas.abap index fed10e32f..0bf7b8266 100644 --- a/src/objects/zcl_abapgit_object_xinx.clas.abap +++ b/src/objects/zcl_abapgit_object_xinx.clas.abap @@ -213,4 +213,11 @@ CLASS zcl_abapgit_object_xinx IMPLEMENTATION. ig_data = ls_extension_index ). ENDMETHOD. "serialize + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_xslt.clas.abap b/src/objects/zcl_abapgit_object_xslt.clas.abap index a04554b90..417f25ba5 100644 --- a/src/objects/zcl_abapgit_object_xslt.clas.abap +++ b/src/objects/zcl_abapgit_object_xslt.clas.abap @@ -206,4 +206,10 @@ CLASS zcl_abapgit_object_xslt IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. "zcl_abapgit_object_xslt IMPLEMENTATION diff --git a/src/objects/zcl_abapgit_objects_program.clas.abap b/src/objects/zcl_abapgit_objects_program.clas.abap index 6bf6f5bfa..a4466f775 100644 --- a/src/objects/zcl_abapgit_objects_program.clas.abap +++ b/src/objects/zcl_abapgit_objects_program.clas.abap @@ -114,6 +114,22 @@ CLASS zcl_abapgit_objects_program DEFINITION PUBLIC INHERITING FROM zcl_abapgit_ iv_skip_gui TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_changed) TYPE abap_bool. + METHODS is_any_dynpro_locked + IMPORTING iv_program TYPE programm + RETURNING VALUE(rv_is_any_dynpro_locked) TYPE abap_bool + RAISING zcx_abapgit_exception. + + METHODS is_cua_locked + IMPORTING iv_program TYPE programm + RETURNING VALUE(rv_is_cua_locked) TYPE abap_bool + RAISING zcx_abapgit_exception. + + METHODS is_text_locked + IMPORTING iv_program TYPE programm + RETURNING VALUE(rv_is_text_locked) TYPE abap_bool + RAISING zcx_abapgit_exception. + + CLASS-METHODS: add_tpool IMPORTING it_tpool TYPE textpool_table @@ -137,6 +153,54 @@ ENDCLASS. CLASS zcl_abapgit_objects_program IMPLEMENTATION. + METHOD is_text_locked. + + DATA: lv_object TYPE eqegraarg. + + lv_object = |*{ iv_program }|. + + rv_is_text_locked = exists_a_lock_entry_for( iv_lock_object = 'EABAPTEXTE' + iv_argument = lv_object ). + + ENDMETHOD. + + METHOD is_cua_locked. + + DATA: lv_object TYPE eqegraarg, + ls_cua TYPE zcl_abapgit_objects_program=>ty_cua. + + lv_object = |CU{ iv_program }|. + OVERLAY lv_object WITH ' '. + lv_object = lv_object && '*'. + + rv_is_cua_locked = exists_a_lock_entry_for( iv_lock_object = 'ESCUAPAINT' + iv_argument = lv_object ). + + ENDMETHOD. + + METHOD is_any_dynpro_locked. + + DATA: lt_dynpros TYPE zcl_abapgit_objects_program=>ty_dynpro_tt, + lv_object TYPE seqg3-garg. + + FIELD-SYMBOLS: TYPE zcl_abapgit_objects_program=>ty_dynpro. + + lt_dynpros = serialize_dynpros( iv_program ). + + LOOP AT lt_dynpros ASSIGNING . + + lv_object = |{ -header-screen }{ -header-program }|. + + IF exists_a_lock_entry_for( iv_lock_object = 'ESCRP' + iv_argument = lv_object ) = abap_true. + rv_is_any_dynpro_locked = abap_true. + EXIT. + ENDIF. + + ENDLOOP. + + ENDMETHOD. + METHOD condense_flow. DATA: lv_spaces LIKE LINE OF et_spaces. diff --git a/src/objects/zcl_abapgit_objects_saxx_super.clas.abap b/src/objects/zcl_abapgit_objects_saxx_super.clas.abap index 7a461103b..fda715806 100644 --- a/src/objects/zcl_abapgit_objects_saxx_super.clas.abap +++ b/src/objects/zcl_abapgit_objects_saxx_super.clas.abap @@ -52,7 +52,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECTS_SAXX_SUPER IMPLEMENTATION. +CLASS zcl_abapgit_objects_saxx_super IMPLEMENTATION. METHOD create_channel_objects. @@ -391,4 +391,11 @@ CLASS ZCL_ABAPGIT_OBJECTS_SAXX_SUPER IMPLEMENTATION. ig_data = ). ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_objects_super.clas.abap b/src/objects/zcl_abapgit_objects_super.clas.abap index d93dfcce7..88b3ff90f 100644 --- a/src/objects/zcl_abapgit_objects_super.clas.abap +++ b/src/objects/zcl_abapgit_objects_super.clas.abap @@ -40,6 +40,11 @@ CLASS zcl_abapgit_objects_super DEFINITION PUBLIC ABSTRACT. jump_se11 IMPORTING iv_radio TYPE string iv_field TYPE string + RAISING zcx_abapgit_exception, + exists_a_lock_entry_for + IMPORTING iv_lock_object TYPE string + iv_argument TYPE seqg3-garg OPTIONAL + RETURNING VALUE(rv_exists_a_lock_entry) TYPE abap_bool RAISING zcx_abapgit_exception. PRIVATE SECTION. @@ -55,7 +60,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION. +CLASS zcl_abapgit_objects_super IMPLEMENTATION. METHOD check_timestamp. @@ -116,6 +121,34 @@ CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION. ENDMETHOD. "corr_insert + METHOD exists_a_lock_entry_for. + + DATA: lt_lock_entries TYPE STANDARD TABLE OF seqg3. + + CALL FUNCTION 'ENQUEUE_READ' + EXPORTING + guname = '*' + garg = iv_argument + TABLES + enq = lt_lock_entries + EXCEPTIONS + communication_failure = 1 + system_failure = 2 + OTHERS = 3. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + READ TABLE lt_lock_entries TRANSPORTING NO FIELDS + WITH KEY gobj = iv_lock_object. + IF sy-subrc = 0. + rv_exists_a_lock_entry = abap_true. + ENDIF. + + ENDMETHOD. + + METHOD get_metadata. DATA: lv_class TYPE string. diff --git a/src/objects/zif_abapgit_object.intf.abap b/src/objects/zif_abapgit_object.intf.abap index 6b64bfdf6..ebc0686d7 100644 --- a/src/objects/zif_abapgit_object.intf.abap +++ b/src/objects/zif_abapgit_object.intf.abap @@ -13,6 +13,10 @@ INTERFACE zif_abapgit_object PUBLIC. exists RETURNING VALUE(rv_bool) TYPE abap_bool RAISING zcx_abapgit_exception, + is_locked + RETURNING VALUE(rv_is_locked) type abap_bool + RAISING + zcx_abapgit_exception, changed_by RETURNING VALUE(rv_user) TYPE xubname RAISING zcx_abapgit_exception, diff --git a/src/zcl_abapgit_objects.clas.abap b/src/zcl_abapgit_objects.clas.abap index ea520d233..32430d226 100644 --- a/src/zcl_abapgit_objects.clas.abap +++ b/src/zcl_abapgit_objects.clas.abap @@ -79,7 +79,16 @@ CLASS zcl_abapgit_objects DEFINITION CLASS-METHODS supported_list RETURNING VALUE(rt_types) TYPE ty_types_tt . + PROTECTED SECTION. + PRIVATE SECTION. + TYPES: BEGIN OF ty_obj_serializer_map, + item TYPE zif_abapgit_definitions=>ty_item, + metadata TYPE zif_abapgit_definitions=>ty_metadata, + END OF ty_obj_serializer_map, + tty_obj_serializer_map + TYPE SORTED TABLE OF ty_obj_serializer_map WITH UNIQUE KEY item. + CLASS-DATA st_obj_serializer_map TYPE tty_obj_serializer_map. CLASS-METHODS files_to_deserialize IMPORTING @@ -93,16 +102,7 @@ CLASS zcl_abapgit_objects DEFINITION !it_files TYPE zif_abapgit_definitions=>ty_files_tt RAISING zcx_abapgit_exception . - CLASS-METHODS create_object - IMPORTING - !is_item TYPE zif_abapgit_definitions=>ty_item - !iv_language TYPE spras - !is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL - !iv_native_only TYPE abap_bool DEFAULT abap_false - RETURNING - VALUE(ri_obj) TYPE REF TO zif_abapgit_object - RAISING - zcx_abapgit_exception . + CLASS-METHODS prioritize_deser IMPORTING !it_results TYPE zif_abapgit_definitions=>ty_results_tt @@ -168,18 +168,34 @@ CLASS zcl_abapgit_objects DEFINITION zcx_abapgit_exception . CLASS-METHODS deserialize_objects IMPORTING - !it_objects TYPE ty_deserialization_tt - !iv_ddic TYPE abap_bool DEFAULT abap_false - !iv_descr TYPE string + it_objects TYPE ty_deserialization_tt + iv_ddic TYPE abap_bool DEFAULT abap_false + iv_descr TYPE string CHANGING - !ct_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt + ct_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt + RAISING + zcx_abapgit_exception . + CLASS-METHODS check_objects_locked + IMPORTING + iv_language TYPE spras + it_results TYPE zif_abapgit_definitions=>ty_results_tt + RAISING + zcx_abapgit_exception. + CLASS-METHODS create_object + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL + iv_native_only TYPE abap_bool DEFAULT abap_false + RETURNING + VALUE(ri_obj) TYPE REF TO zif_abapgit_object RAISING zcx_abapgit_exception . ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION. +CLASS zcl_abapgit_objects IMPLEMENTATION. METHOD changed_by. @@ -234,6 +250,29 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION. ENDMETHOD. + METHOD check_objects_locked. + + DATA: li_obj TYPE REF TO zif_abapgit_object, + ls_item TYPE zif_abapgit_definitions=>ty_item. + FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_result. + + LOOP AT it_results ASSIGNING . + + MOVE-CORRESPONDING TO ls_item. + + li_obj = create_object( is_item = ls_item + iv_language = iv_language ). + + IF li_obj->is_locked( ) = abap_true. + zcx_abapgit_exception=>raise( |Object { ls_item-obj_type } { ls_item-obj_name } | + && |is locked. Deserialization not possible.| ). + ENDIF. + + ENDLOOP. + + ENDMETHOD. + + METHOD class_name. CONCATENATE 'ZCL_ABAPGIT_OBJECT_' is_item-obj_type INTO rv_class_name. "#EC NOTEXT @@ -280,14 +319,6 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION. METHOD create_object. - TYPES: BEGIN OF ty_obj_serializer_map, - item LIKE is_item, - metadata LIKE is_metadata, - END OF ty_obj_serializer_map. - - STATICS st_obj_serializer_map - TYPE SORTED TABLE OF ty_obj_serializer_map WITH UNIQUE KEY item. - DATA: lv_message TYPE string, lv_class_name TYPE string, ls_obj_serializer_map LIKE LINE OF st_obj_serializer_map. @@ -441,6 +472,9 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION. EXPORTING iv_total = lines( lt_results ). + check_objects_locked( iv_language = io_repo->get_dot_abapgit( )->get_master_language( ) + it_results = lt_results ). + LOOP AT lt_results ASSIGNING . lo_progress->show( iv_current = sy-tabix iv_text = |Deserialize { -obj_name }| ) ##NO_TEXT. diff --git a/src/zcl_abapgit_objects.clas.testclasses.abap b/src/zcl_abapgit_objects.clas.testclasses.abap index cc400bdbd..c40c9eb13 100644 --- a/src/zcl_abapgit_objects.clas.testclasses.abap +++ b/src/zcl_abapgit_objects.clas.testclasses.abap @@ -356,3 +356,153 @@ CLASS ltcl_serialize IMPLEMENTATION. ENDMETHOD. "check ENDCLASS. "ltcl_serialize IMPLEMENTATION + +CLASS ltd_objcet_ddls_mock DEFINITION FOR TESTING. + + PUBLIC SECTION. + INTERFACES zif_abapgit_object PARTIALLY IMPLEMENTED. + METHODS: + constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras. + + PRIVATE SECTION. + DATA ms_item TYPE zif_abapgit_definitions=>ty_item. + +ENDCLASS. + +CLASS ltd_objcet_ddls_mock IMPLEMENTATION. + + METHOD constructor. + + ms_item = is_item. + + ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + + CASE ms_item-obj_name. + WHEN 'Z_TEST_DDLS'. + + rv_is_locked = abap_true. + + WHEN 'Z_TEST_DDLS2'. + + rv_is_locked = abap_false. + + ENDCASE. + + ENDMETHOD. + +ENDCLASS. + +CLASS ltcl_check_objects_locked DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PRIVATE SECTION. + DATA: + mt_given_results TYPE zif_abapgit_definitions=>ty_results_tt, + mv_exception_text TYPE string. + + METHODS: + throw_excp_if_object_is_locked FOR TESTING RAISING cx_static_check, + no_excp_if_obj_is_not_locked FOR TESTING RAISING cx_static_check, + given_locked_object, + when_check_objects_locked, + then_exception_shd_be_raised, + given_not_locked_object, + then_no_exception_shd_occur, + given_object + IMPORTING + iv_object_name TYPE string. + +ENDCLASS. + +CLASS zcl_abapgit_objects DEFINITION LOCAL FRIENDS ltcl_check_objects_locked. + +CLASS ltcl_check_objects_locked IMPLEMENTATION. + + METHOD throw_excp_if_object_is_locked. + + given_locked_object( ). + when_check_objects_locked( ). + then_exception_shd_be_raised( ). + + ENDMETHOD. + + METHOD no_excp_if_obj_is_not_locked. + + given_not_locked_object( ). + when_check_objects_locked( ). + then_no_exception_shd_occur( ). + + ENDMETHOD. + + METHOD given_locked_object. + + given_object( 'Z_TEST_DDLS' ). + + ENDMETHOD. + + + METHOD when_check_objects_locked. + + DATA: lx_error TYPE REF TO zcx_abapgit_exception. + + TRY. + zcl_abapgit_objects=>check_objects_locked( iv_language = 'E' + it_results = mt_given_results ). + + CATCH zcx_abapgit_exception INTO lx_error. + mv_exception_text = lx_error->get_text( ). + ENDTRY. + + ENDMETHOD. + + + METHOD then_exception_shd_be_raised. + + cl_abap_unit_assert=>assert_equals( + exp = |Object DDLS Z_TEST_DDLS is locked. Deserialization not possible.| + act = mv_exception_text ). + + ENDMETHOD. + + + METHOD given_not_locked_object. + + given_object( 'Z_TEST_DDLS2' ). + + ENDMETHOD. + + + METHOD then_no_exception_shd_occur. + + cl_abap_unit_assert=>assert_initial( mv_exception_text ). + + ENDMETHOD. + + + METHOD given_object. + + CONSTANTS: + co_obj_type TYPE string VALUE 'DDLS'. + + DATA: + ls_result LIKE LINE OF mt_given_results, + ls_obj_serializer_map LIKE LINE OF zcl_abapgit_objects=>st_obj_serializer_map. + + ls_result-obj_type = co_obj_type. + ls_result-obj_name = iv_object_name. + INSERT ls_result INTO TABLE mt_given_results. + + ls_obj_serializer_map-item-obj_type = co_obj_type. + ls_obj_serializer_map-item-obj_name = iv_object_name. + ls_obj_serializer_map-metadata-class = '\CLASS-POOL=ZCL_ABAPGIT_OBJECTS\CLASS=LTD_OBJCET_DDLS_MOCK'. + INSERT ls_obj_serializer_map INTO TABLE zcl_abapgit_objects=>st_obj_serializer_map. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/zcl_abapgit_objects_bridge.clas.abap b/src/zcl_abapgit_objects_bridge.clas.abap index 0c5de88eb..5742db809 100644 --- a/src/zcl_abapgit_objects_bridge.clas.abap +++ b/src/zcl_abapgit_objects_bridge.clas.abap @@ -175,6 +175,13 @@ CLASS ZCL_ABAPGIT_OBJECTS_BRIDGE IMPLEMENTATION. ENDMETHOD. "lif_object~has_changed_since + METHOD zif_abapgit_object~is_locked. + + rv_is_locked = abap_false. + + ENDMETHOD. + + METHOD zif_abapgit_object~jump. CALL METHOD mo_plugin->('ZIF_ABAPGITP_PLUGIN~JUMP'). diff --git a/src/zcl_abapgit_repo.clas.abap b/src/zcl_abapgit_repo.clas.abap index 669c6f3c4..240e2a2d5 100644 --- a/src/zcl_abapgit_repo.clas.abap +++ b/src/zcl_abapgit_repo.clas.abap @@ -120,7 +120,6 @@ CLASS zcl_abapgit_repo DEFINITION RAISING zcx_abapgit_exception . - ENDCLASS. @@ -609,4 +608,7 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION. set( it_checksums = lt_checksums ). ENDMETHOD. " update_local_checksums + + + ENDCLASS.