From dc51247e9b8c0c792193aba857ec31df3a82db4a Mon Sep 17 00:00:00 2001 From: Fabian Lupa Date: Tue, 14 Dec 2021 06:36:00 +0100 Subject: [PATCH] Always use active version for DOCU CL (#5201) * Always use active version for DOCU CL * CLAS/INTF delete documentation on pull Co-authored-by: Lars Hvam --- src/objects/oo/zcl_abapgit_oo_base.clas.abap | 42 +++++++++++++------ .../oo/zif_abapgit_oo_object_fnc.intf.abap | 6 +++ src/objects/zcl_abapgit_object_clas.clas.abap | 7 +++- src/objects/zcl_abapgit_object_intf.clas.abap | 7 +++- 4 files changed, 46 insertions(+), 16 deletions(-) diff --git a/src/objects/oo/zcl_abapgit_oo_base.clas.abap b/src/objects/oo/zcl_abapgit_oo_base.clas.abap index cdf77e7ad..4b081cd6e 100644 --- a/src/objects/oo/zcl_abapgit_oo_base.clas.abap +++ b/src/objects/oo/zcl_abapgit_oo_base.clas.abap @@ -14,8 +14,9 @@ CLASS zcl_abapgit_oo_base DEFINITION RETURNING VALUE(rt_vseoattrib) TYPE seoo_attributes_r. PRIVATE SECTION. - + CONSTANTS c_docu_state_active TYPE dokstate VALUE 'A'. " See include SDOC_CONSTANTS DATA mv_skip_test_classes TYPE abap_bool . + ENDCLASS. @@ -54,6 +55,7 @@ CLASS zcl_abapgit_oo_base IMPLEMENTATION. langu = iv_language object = iv_object_name no_masterlang = iv_no_masterlang + state = c_docu_state_active TABLES line = it_lines EXCEPTIONS @@ -64,6 +66,21 @@ CLASS zcl_abapgit_oo_base IMPLEMENTATION. ENDIF. ENDMETHOD. + METHOD zif_abapgit_oo_object_fnc~delete_documentation. + CALL FUNCTION 'DOCU_DEL' + EXPORTING + id = 'CL' + langu = iv_language + object = iv_object_name + typ = 'E' + EXCEPTIONS + ret_code = 1 + OTHERS = 2. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'Error from DOCU_DEL' ). + ENDIF. + ENDMETHOD. + METHOD zif_abapgit_oo_object_fnc~create_sotr. ASSERT 0 = 1. "Subclass responsibility @@ -153,20 +170,21 @@ CLASS zcl_abapgit_oo_base IMPLEMENTATION. CALL FUNCTION 'DOCU_GET' EXPORTING - id = 'CL' - langu = iv_language - object = lv_object + id = 'CL' + langu = iv_language + object = lv_object + version_active_or_last = space " retrieve active version IMPORTING - dokstate = lv_state + dokstate = lv_state TABLES - line = lt_lines + line = lt_lines EXCEPTIONS - no_docu_on_screen = 1 - no_docu_self_def = 2 - no_docu_temp = 3 - ret_code = 4 - OTHERS = 5. - IF sy-subrc = 0 AND lv_state = 'R'. + no_docu_on_screen = 1 + no_docu_self_def = 2 + no_docu_temp = 3 + ret_code = 4 + OTHERS = 5. + IF sy-subrc = 0 AND lv_state = c_docu_state_active. rt_lines = lt_lines. ELSE. CLEAR rt_lines. diff --git a/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap b/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap index bb6e3a3e2..6bec72992 100644 --- a/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap +++ b/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap @@ -74,6 +74,12 @@ INTERFACE zif_abapgit_oo_object_fnc PUBLIC. iv_no_masterlang TYPE abap_bool OPTIONAL RAISING zcx_abapgit_exception, + delete_documentation + IMPORTING + iv_object_name TYPE dokhl-object + iv_language TYPE spras + RAISING + zcx_abapgit_exception, get_includes IMPORTING iv_object_name TYPE sobj_name diff --git a/src/objects/zcl_abapgit_object_clas.clas.abap b/src/objects/zcl_abapgit_object_clas.clas.abap index 0d9fab331..d74a98dfb 100644 --- a/src/objects/zcl_abapgit_object_clas.clas.abap +++ b/src/objects/zcl_abapgit_object_clas.clas.abap @@ -188,12 +188,15 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. ii_xml->read( EXPORTING iv_name = 'LINES' CHANGING cg_data = lt_lines ). + lv_object = ms_item-obj_name. + IF lines( lt_lines ) = 0. + mi_object_oriented_object_fct->delete_documentation( + iv_object_name = lv_object + iv_language = mv_language ). RETURN. ENDIF. - lv_object = ms_item-obj_name. - mi_object_oriented_object_fct->create_documentation( it_lines = lt_lines iv_object_name = lv_object diff --git a/src/objects/zcl_abapgit_object_intf.clas.abap b/src/objects/zcl_abapgit_object_intf.clas.abap index 643be20ce..f032e0aa2 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.abap @@ -87,12 +87,15 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. ii_xml->read( EXPORTING iv_name = 'LINES' CHANGING cg_data = lt_lines ). + lv_object = ms_item-obj_name. + IF lines( lt_lines ) = 0. + mi_object_oriented_object_fct->delete_documentation( + iv_object_name = lv_object + iv_language = mv_language ). RETURN. ENDIF. - lv_object = ms_item-obj_name. - mi_object_oriented_object_fct->create_documentation( it_lines = lt_lines iv_object_name = lv_object