If you need a unique key in a table or a sequential number for any other purpose, you can use a range object .
Ranges are maintained in transaction SNRO
After maintaining the first screen you have to maintain the intervals by clicking the button "number ranges"
This information is stored in tables :
- TNRO Definition of number range objects
- NRIV Number range intervals. Note: Field NRLEVEL Contains the last assigned number.
In your program you read the next number by using the function NUMBER_GET_NEXT
- Code: Select all
DATA l_number TYPE i.
CALL FUNCTION 'NUMBER_GET_NEXT'
nr_range_nr = '01'
object = 'ZTEST'
quantity = '1'
number = l_number
* quantity = ' '
* RETURNCODE =
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
OTHERS = 7.
Each time you call NUMBER_GET_RANGE the number is automatically increased.
You can also create the number range in your program instead of using SNRO with the functions:
- NUMBER_RANGE_INTERVAL_LIST : verify if a number range already exist
NUMBER_RANGE_ENQUEUE : lock the specifier number range
NUMBER_RANGE_INTERVAL_UPDATE : create the number range
NUMBER_RANGE_UPDATE_CLOSE : commit changes
NUMBER_RANGE_DEQUEUE : unlock
(Courtesy Dany Charbonneau)