viernes, enero 05, 2007

Creación de un rango

Hola, algunos os preguntareis ¿Qué es un rango? Es muy fácil : es un contador. La mejor manera de explicarlo es poner un caso que en que es necesario utilizarlo.

Imagina os que hacéis un report que se va a ejecutar varias veces y que en cada ejecución creáis un fichero:
1º Ejecución fichero_1,
2º Ejecución fichero_2
...
nº Ejecución fichero_n.

¿Como podemos enumerar los fichero de manera secuencial (1,2,,,n)? ¿Lo guardamos en una tabla del diccionario?
Aquí es donde surge la necesidad de crear un rango. Mediante la transacción SNUM creamos un rango.Internamente funciona como tener un campo en el diccionario de SAP donde se guarda el contador.

Después se debe crear un intervalo donde hay que indicar:

-Núm. intervalo (identificador).
-Cota inferior.
-Cota superior.
-Núm. actual del contador.

Una vez creado el rango con un intervalo realizamos la llamadas en el programa de control:

1) Bloquear el rango para nuestra utilización,
CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'.
2) Obtener el siguiente número del rango,
CALL FUNCTION 'NUMBER_GET_NEXT'
3) Desbloquear rango,
CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'

Ojo!!! Los intervalos son independientes de mandante.

Además existe otro módulo de función para recuperar el rango sin incrementarlo:
NUMBER_GET_INFO