NROB: delete intervals, close #378

This commit is contained in:
larshp 2016-10-08 14:59:34 +00:00
parent e136414c51
commit 9c053763b7

View File

@ -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: <ls_list> 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 <ls_list>.
CLEAR <ls_list>-nrlevel.
<ls_list>-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