From d82b9daf0ecdaa9c23df174c4bd4036ab89361c5 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 1 Nov 2018 06:20:04 +0100 Subject: [PATCH] SSFO: do not use STTY_SR_STRING_RANGE --- src/objects/zcl_abapgit_object_ssfo.clas.abap | 137 +++++++++--------- 1 file changed, 71 insertions(+), 66 deletions(-) diff --git a/src/objects/zcl_abapgit_object_ssfo.clas.abap b/src/objects/zcl_abapgit_object_ssfo.clas.abap index bd8219015..f62eae643 100644 --- a/src/objects/zcl_abapgit_object_ssfo.clas.abap +++ b/src/objects/zcl_abapgit_object_ssfo.clas.abap @@ -5,7 +5,9 @@ CLASS zcl_abapgit_object_ssfo DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje ALIASES mo_files FOR zif_abapgit_object~mo_files. PRIVATE SECTION. - CLASS-DATA: range_node_codes TYPE stty_sr_string_range. + TYPES: ty_string_range TYPE RANGE OF string. + + CLASS-DATA: range_node_codes TYPE ty_string_range. CONSTANTS: attrib_abapgit_leadig_spaces TYPE string VALUE 'abapgit-leadig-spaces' ##NO_TEXT. METHODS fix_ids IMPORTING ii_xml_doc TYPE REF TO if_ixml_document. @@ -15,7 +17,7 @@ CLASS zcl_abapgit_object_ssfo DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje METHODS handle_attrib_leading_spaces IMPORTING i_name TYPE string i_node TYPE REF TO if_ixml_node CHANGING c_within_code_section TYPE abap_bool. - METHODS get_range_node_codes RETURNING VALUE(e_range_node_codes) TYPE stty_sr_string_range. + METHODS get_range_node_codes RETURNING VALUE(e_range_node_codes) TYPE ty_string_range. METHODS code_item_section_handling IMPORTING i_name TYPE string i_node TYPE REF TO if_ixml_node EXPORTING e_code_item_element TYPE REF TO if_ixml_element @@ -25,7 +27,36 @@ CLASS zcl_abapgit_object_ssfo DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje ENDCLASS. -CLASS zcl_abapgit_object_ssfo IMPLEMENTATION. + +CLASS ZCL_ABAPGIT_OBJECT_SSFO IMPLEMENTATION. + + + METHOD code_item_section_handling. + CONSTANTS: node_item TYPE string VALUE 'item' ##NO_TEXT. + CONSTANTS: node_text TYPE string VALUE '#text' ##NO_TEXT. + + IF i_name IN get_range_node_codes( ). + c_within_code_section = abap_true. + ENDIF. + + IF c_within_code_section = abap_true. + IF i_name = node_item. + TRY. + e_code_item_element ?= i_node. + RETURN. + CATCH cx_sy_move_cast_error ##no_handler. + ENDTRY. + + ELSEIF i_name NOT IN get_range_node_codes( ) AND + i_name <> node_text. + c_within_code_section = abap_false. + ENDIF. + ENDIF. + + RAISE EXCEPTION TYPE zcx_abapgit_exception. + + ENDMETHOD. + METHOD fix_ids. @@ -100,6 +131,28 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION. ENDMETHOD. + METHOD get_range_node_codes. + + DATA: range_node_code TYPE sstr_sr_string_range. + + IF me->range_node_codes IS INITIAL. + range_node_code-sign = 'I'. + range_node_code-option = 'EQ'. + range_node_code-low = 'CODE'. + INSERT range_node_code INTO TABLE me->range_node_codes. + range_node_code-low = 'GTYPES'. + INSERT range_node_code INTO TABLE me->range_node_codes. + range_node_code-low = 'GCODING'. + INSERT range_node_code INTO TABLE me->range_node_codes. + range_node_code-low = 'FCODING'. + INSERT range_node_code INTO TABLE me->range_node_codes. + ENDIF. + + e_range_node_codes = me->range_node_codes. + + ENDMETHOD. + + METHOD handle_attrib_leading_spaces. DATA element TYPE REF TO if_ixml_element. @@ -153,32 +206,6 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION. ENDMETHOD. - METHOD code_item_section_handling. - CONSTANTS: node_item TYPE string VALUE 'item' ##NO_TEXT. - CONSTANTS: node_text TYPE string VALUE '#text' ##NO_TEXT. - - IF i_name IN get_range_node_codes( ). - c_within_code_section = abap_true. - ENDIF. - - IF c_within_code_section = abap_true. - IF i_name = node_item. - TRY. - e_code_item_element ?= i_node. - RETURN. - CATCH cx_sy_move_cast_error ##no_handler. - ENDTRY. - - ELSEIF i_name NOT IN get_range_node_codes( ) AND - i_name <> node_text. - c_within_code_section = abap_false. - ENDIF. - ENDIF. - - RAISE EXCEPTION TYPE zcx_abapgit_exception. - - ENDMETHOD. - METHOD zif_abapgit_object~changed_by. SELECT SINGLE lastuser FROM stxfadm INTO rv_user @@ -306,6 +333,21 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~is_active. + + DATA: ssfo_formname TYPE tdsfname. + + ssfo_formname = ms_item-obj_name. + CALL FUNCTION 'SSF_STATUS_INFO' + EXPORTING + i_formname = ssfo_formname + IMPORTING + o_inactive = ms_item-inactive. + + rv_active = boolc( ms_item-inactive = abap_false ). + ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'E_SMFORM' @@ -438,41 +480,4 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION. io_xml->set_raw( li_xml_doc->get_root_element( ) ). ENDMETHOD. - - - METHOD get_range_node_codes. - - DATA: range_node_code TYPE sstr_sr_string_range. - - IF me->range_node_codes IS INITIAL. - range_node_code-sign = 'I'. - range_node_code-option = 'EQ'. - range_node_code-low = 'CODE'. - INSERT range_node_code INTO TABLE me->range_node_codes. - range_node_code-low = 'GTYPES'. - INSERT range_node_code INTO TABLE me->range_node_codes. - range_node_code-low = 'GCODING'. - INSERT range_node_code INTO TABLE me->range_node_codes. - range_node_code-low = 'FCODING'. - INSERT range_node_code INTO TABLE me->range_node_codes. - ENDIF. - - e_range_node_codes = me->range_node_codes. - - ENDMETHOD. - - - METHOD zif_abapgit_object~is_active. - - DATA: ssfo_formname TYPE tdsfname. - - ssfo_formname = ms_item-obj_name. - CALL FUNCTION 'SSF_STATUS_INFO' - EXPORTING - i_formname = ssfo_formname - IMPORTING - o_inactive = ms_item-inactive. - - rv_active = boolc( ms_item-inactive = abap_false ). - ENDMETHOD. ENDCLASS.