From 9c053763b7f73f59609028f9294b808c4792d27f Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 8 Oct 2016 14:59:34 +0000 Subject: [PATCH] NROB: delete intervals, close #378 --- src/zabapgit_object_nrob.prog.abap | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/zabapgit_object_nrob.prog.abap b/src/zabapgit_object_nrob.prog.abap index d40c52598..8e98d6ba9 100644 --- a/src/zabapgit_object_nrob.prog.abap +++ b/src/zabapgit_object_nrob.prog.abap @@ -13,6 +13,11 @@ CLASS lcl_object_nrob DEFINITION INHERITING FROM lcl_objects_super FINAL. INTERFACES lif_object. ALIASES mo_files FOR lif_object~mo_files. + PRIVATE SECTION. + METHODS: + delete_intervals IMPORTING iv_object TYPE inri-object + RAISING lcx_exception. + ENDCLASS. "lcl_object_nrob DEFINITION *----------------------------------------------------------------------* @@ -165,6 +170,73 @@ CLASS lcl_object_nrob IMPLEMENTATION. ENDMETHOD. "deserialize + METHOD delete_intervals. + + DATA: lv_error TYPE c LENGTH 1, + ls_error TYPE inrer, + lt_list TYPE STANDARD TABLE OF inriv WITH DEFAULT KEY, + lt_error_iv TYPE STANDARD TABLE OF inriv WITH DEFAULT KEY. + + FIELD-SYMBOLS: LIKE LINE OF lt_list. + + + CALL FUNCTION 'NUMBER_RANGE_INTERVAL_LIST' + EXPORTING + object = iv_object + TABLES + interval = lt_list + EXCEPTIONS + nr_range_nr1_not_found = 1 + nr_range_nr1_not_intern = 2 + nr_range_nr2_must_be_space = 3 + nr_range_nr2_not_extern = 4 + nr_range_nr2_not_found = 5 + object_not_found = 6 + subobject_must_be_space = 7 + subobject_not_found = 8 + OTHERS = 9. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from NUMBER_RANGE_INTERVAL_LIST' ). + ENDIF. + + IF lines( lt_list ) = 0. + RETURN. + ENDIF. + + LOOP AT lt_list ASSIGNING . + CLEAR -nrlevel. + -procind = 'D'. + ENDLOOP. + + CALL FUNCTION 'NUMBER_RANGE_INTERVAL_UPDATE' + EXPORTING + object = iv_object + IMPORTING + error = ls_error + error_occured = lv_error + TABLES + error_iv = lt_error_iv + interval = lt_list + EXCEPTIONS + object_not_found = 1 + OTHERS = 2. + IF sy-subrc <> 0 OR lv_error = abap_true. + lcx_exception=>raise( 'error from NUMBER_RANGE_INTERVAL_UPDATE' ). + ENDIF. + + CALL FUNCTION 'NUMBER_RANGE_UPDATE_CLOSE' + EXPORTING + object = iv_object + EXCEPTIONS + no_changes_made = 1 + object_not_initialized = 2 + OTHERS = 3. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from NUMBER_RANGE_UPDATE_CLOSE' ). + ENDIF. + + ENDMETHOD. + METHOD lif_object~delete. DATA: lv_object TYPE tnro-object. @@ -172,6 +244,8 @@ CLASS lcl_object_nrob IMPLEMENTATION. lv_object = ms_item-obj_name. + delete_intervals( lv_object ). + CALL FUNCTION 'NUMBER_RANGE_OBJECT_DELETE' EXPORTING language = mv_language