You are on page 1of 10

SAP Tutorial for ABAP Developers - Create

Number Range Object using SAP Transaction


Code SNRO
ABAP developers and SA professionals require an auto number field especially
in the key fields of a database table during ABAP coding in their SAP
applications.
Actually an auto incrementa field is a general requirement for al developers in all
development environments and platforms
In SAP environment the solution is creating to create number range object and
use number range object in ABAP codes for ABAP developers
Actually, database providers like Microsoft SQL Server and Oracle have more
advanced solutions for such requirements that does not require maintanence and
so much steps in number range creation process.
Let's start our task in this SAP tutorial, number range creation using SNRO SAP
Transaction code.

Step by step Number Range Creation using SNRO SAP Transaction


In SAP Easy Access screen, call SAP transaction code SNRO

Enter Number Range name in the Number Range Object input text field.

Enter Short Text and Long Text descriptive texts for Number Range Object.
Enter a number length domain for the number range object
If you want a warning define an integer smaller than 100 in the Warning % field.
You can enter 5 or 10 as common warning percentage values.

Click on the Save button

to save the number range definition.

Click on Yes button to continue.


The next screen displayed is Create Object Directory Entry screen.

I select Local Object


Now the Change documents and Number ranges buttons are displayed in the
Number Range Object : Change SAP screen.
Click on "Number ranges" button.

Click on Change Intervals buttons.

Click on "Add Interval" button

Enter an integer number like 1 at interval number and a range of numbers with
integer values identifying from number and to number. If you have entered
required fields press Enter button.

Click on "Save" button. And the number range interval you have just declared will
be listed in the Number Range object 's number intervals list.

The following "Transport number range intervals" warning screen is displayed.

The number range intervals are not included in automatic recording of


customizing changes. Transport of all the changes made within number range
interval maintenance must be triggered manually.
In the initial screen for number range interval maintenance choose the function
Interval -> Transport.
Please note the information that you get when transporting number range
intervals.

Here is the display screen of the Number Range object.

SAP professionals and ABAP developers have seen how to create Number
Range Object till this point in this SAP tutorial.
Now ABAP developers are readyto go further and learn how to use number
range objects in ABAP code.
Key ABAP function for implementing and using a number range in ABAP codes
isNUMBER_GET_NEXT ABAP function.
In order to use a number range for auto increment column numbers safely in
SAP,NUMBER_GET_NEXT ABAP function is used
with NUMBER_RANGE_ENQUEUE andNUMBER_RANGE_DEQUEUE.
ABAP developers can copy and paste the following ABAP report source code
and execute the ABAP program in their development and test environments.
The sample ABAP report reads the next number in an SAP Number Range
Object and displays the auto number value on the screen.
The ABAP NUMBER_RANGE_ENQUEUE function sets a lock on the number
range object.
If the lock is successfully set on the SAP number range,
using NUMBER_GET_NEXT function call the next number in the number range
interval is read and passed into an ABAP variable.
The last step is calling NUMBER_RANGE_DEQUEUE function and removing the
loc on the relate SAP number range object.

REPORT ztreenodes .
" INRI : Number ranges function module interface structure
CONSTANTS :
" Name of number range object - CHAR 10
c_rangeobj LIKE inri-object VALUE 'Z_TREENODE',
" Number range number - CHAR 2
c_rangeno LIKE inri-nrrangenr VALUE '1'.
DATA : " NodeId from Number Generator Object
gv_nodeid TYPE i.
START-OF-SELECTION.
PERFORM nextnum USING gv_nodeid c_rangeobj c_rangeno.
WRITE gv_nodeid.
END-OF-SELECTION.
FORM nextnum USING
le_nextnum TYPE i
le_rangeobj LIKE inri-object
le_rangeno LIKE inri-nrrangenr.
DATA :
lv_nextnum TYPE i.
CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
EXPORTING
object = le_rangeobj
EXCEPTIONS
foreign_lock = 1
object_not_found = 2
system_failure = 3
OTHERS = 4.
IF sy-subrc NE 0.
* message e086 with 'Lock error' sy-subrc.
ENDIF.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = le_rangeno
object = le_rangeobj
* QUANTITY = '1'
* SUBOBJECT = ' '
* TOYEAR = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
number = lv_nextnum " Number generated by Range Generator Object
* QUANTITY =
* RETURNCODE = lv_returncode
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3

quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
EXPORTING
object = le_rangeobj.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
le_nextnum = lv_nextnum.
ENDFORM. " NEXTNUM

I hope ABAP developers will fing this number range and NUMBER_GET_NEXT
function call implementation useful.

You might also like