Usar un rango de números en código (ABAP)

En SAP disponemos de la creación de rangos de números, los cuales pueden ser empleados en los programas para generar registros o archivos con un número único asignado de acuerdo a un rango establecido en su configuración. El empleo de dichos rangos suele acontencer cuando se necesita seguir una numeración a la generación, cambio u eliminación de registros, como por ejemplo la creación de una factura.

En el siguiente ejemplo vamos a emplear un rango Z creado en la transacción SNRO, en el cual se ve que el rango de números va de 100001 hasta 199999, teniendo como último registrado el valor de 100011 (columna Cont. rango números)

29-Ago-2013 03-28-42 p-m-

En nuestro código para obtener el número siguiente al último realizado e ir aumentando de 1 en 1 (o según lo indicado en la configuración del rango) vamos a emplear las funciones:

– NUMBER_RANGE_ENQUEUE : En está función hemos de proceder a indicar el nombre del rango creado y bloquearlo para que ningún otro programa o usuario tenga acceso de esté durante la ejecución de la obtención del número.

– NUMBER_GET_NEXT : Esta función devuelve el valor siguiente correspondiente, de acuerdo al nombre y posición del rango.

– NUMBER_RANGE_DEQUEUE : Una vez culminado la obtención del rango se procede a desbloquearlo y el rango recien puede pasar a ser usado en otros programas.

Ejemplo

Con el rango indicado en la parte superior vamos a proceder a llamar al siguiente número que le corresponde (siguiendo las imagenes veremos que el número a obtener debe ser 100012), para ello hacemos uso de las funciones que convocan al rango:

DATA: LV_CONT TYPE I.

CALL FUNCTION ‘NUMBER_RANGE_ENQUEUE’
  EXPORTING
    OBJECT                 = ‘ZSDLOTE’.

CALL FUNCTION ‘NUMBER_GET_NEXT’
  EXPORTING
    NR_RANGE_NR                   = ’01’
    OBJECT                        = ‘ZSDLOTE’
  IMPORTING
    NUMBER                        = LV_CONT.

CALL FUNCTION ‘NUMBER_RANGE_DEQUEUE’
  EXPORTING
    OBJECT                 = ‘ZSDLOTE’.

 

Al ejecutar el desarrollo y por debug comprobamos que ha obtenido el valor siguiente al último que tenia (el valor previo a ejecutar el programa era de 100011, una vez ejecutado a aumentado 1 convirtiendose ahora en 100012).

29-Ago-2013 03-36-55 p-m-

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s