1. Se ingresa a la transacción SNRO. En objeto, se coloca el nombre del mismo. Por ejemplo: ZVIAJE. Presionamos el botón Crear
2. En la pestaña intervalo, seleccionamos los sgtes datos.
3. Luego presionamos el botón intervalo para agregar el
rango de números
En la columna Nro se coloca 01 como primer rango, en la
segunda columna va el primer número de inicio y en la segunda columna se coloca
el último número.
01 3000000001 3099999999
Modo de empleo en programación ABAP
Para hacer uso de los rangos de números disponemos de módulos de función, los siguientes son los módulos de función mas utilizados para la gestión de rangos de números:
1. NUMBER_RANGE_ENQUEUE: Este módulo de función coloca un bloqueo del rango de números, lo usamos cuando queremos bloquearlo para hacer modificaciones sobre él, en cuanto a gestión de intervalos y grupos relacionados con el rango de números, esto se hace para evitar que otras rutinas intenten modificar el rango de números al mismo tiempo.
2. NUMBER_RANGE_INTERVAL_UPDATE: Está función hace modificaciones en los intervalos de un rango de números, ya sea crear uno nuevo o modificar uno existente, esta función coloca el rango de números tal como se indica en la tabla interna, es decir si el rango actualmente tiene 10 intervalos y la tabla interna que se llama tiene 8 al finalizar el rango de números quedaría con 2 intervalos menos, es una eliminación implícita. Siempre antes de usar esta función se debe llamar la función que efectúa el bloque.
3. NUMBER_RANGE_GROUP_UPDATE: Esta función modifica los grupos del rango de números, al igual que la anterior debemos bloquear el rango de números a modificar antes de llamarla.
4. NUMBER_RANGE_UPDATE_CLOSE: Las funciones NUMBER_RANGE_INTERVAL_UPDATE y NUMBER_RANGE_GROUP_UPDATE cuando se ejecutan y si todo es correcto se almacenan los cambios en la memoria intermedia, para que estos se vean reflejados en la base de datos debemos hacer uso de esta función, prácticamente lo que hace es ejecutar un COMMIT.
5. NUMBER_RANGE_DEQUEUE: Después de modificar los rangos de números se debe eliminar el bloqueo para permitir que los rangos puedan modificarse posteriormente.
6. NUMBER_GET_NEXT: Este módulo de función retorna el siguiente número libre de un rango de números, se indica el intervalo del rango de números que deseamos tomar, para nuestro ejemplo basta con usar esta función en nuestro programa.
Después de tener claro las funciones que se usan, ahora vamos a utilizar en el programa la que interesa en nuestro caso, la cual es NUMBER_GET_NEXT, las otras funciones para el ejemplo expuesto no son de interés, pero si quisieramos que en nuestro programa se creara el intervalo de manera automática en caso de que no exista, para este caso debemos hacer uso de los otros módulos de función para crear el intervalo y con esto nuestro programa no presentaría errores al intentar llamar un rango de números para el que no existen intervalos, permitiendo crear los intervalos de manera dinámica, esta parte no la abarcaremos en nuestro ejemplo.
Para llamar la función y genere el correlativo se
realiza lo sgte:
DATA LV_CORRE TYPE CHAR10. CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING NR_RANGE_NR = '01' OBJECT = 'ZVIAJE' IGNORE_BUFFER = 'X' IMPORTING NUMBER = LV_CORRE.Nota. Es necesario generar el rango en todos los mandantes manualmente