Este post trata de cómo crear objetos de rangos numéricos específicos de cliente para poder utilizar luego en nuestros programas SAP. Por ejemplo, queremos crear una numeración específica de nuestros empleados que guardaremos en una tabla Z* a través de un programa Z*.
Para información más específica sobre rangos numéricos que
proporciona de forma estándar SAP podéis referiros a un post anterior.
- Objeto: damos un nombre a nuestro rango.
-
Elemento datos objeto inferior: nuestro rango va a depender del centro de trabajo del empleado. Los empleados del centro “0310” tendrán un código que empiece por “3”; los del centro “0610” tendrán código que empiece por “6”, etc. Aquí indicaremos pues el elemento de datos de centro “WERKS_D”.
-
Indicador hasta ejercicio: si quisiéramos cambiar la numeración de ejercicio en ejercicio, marcaríamos este campo. No es el caso de este ejemplo.
-
Dominio longitud número: en este campo indicamos de qué longitud será la numeración. Para eso introducimos un dominio con la longitud prevista (ya sea creando un nuevo dominio ya sea utilizando uno que exista de forma estándar en SAP). Voy a utilizar la longitud del campo "numero de personal" estándar de SAP (dominio "PERNR").
-
Porcentaje advertencia: al llenar este campo le estamos diciendo a SAP que nos avise si en nuestro rango los números disponibles son inferiores a este porcentaje.
Una vez tenemos todo esto grabamos, nos aparecerá un mensaje de
advertencia. Aceptamos.
Actualización del rango
Ya tenemos creado nuestro rango numérico. Ahora debemos
informar nuestras numeraciones dependientes de centro.
-
Presionamos el botón "Rangos números”.
-
Indicamos el centro.
-
Presionamos “Intervalos”.
-
+Intervalo.
Utilización
Y ahora sólo falta utilizarlo en un programa que diseñemos ya
que este objeto no está asociado de forma estándar en ninguna transacción SAP.
Para hacerlo tenemos que llamar al objeto directamente en nuestro programa ABAP
mediante el módulo de funciones “NUMBER_GET_NEXT“. Por ejemplo, para empleados del centro '0310' sería del siguiente modo.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object = 'ZEMPLEADOS'
subobject = '0310'
IMPORTING
number = v_number
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.
ENDIF.
No hay comentarios:
Publicar un comentario