Rangos numéricos propios

lunes, 16 de enero de 2012

Numbers in transport

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.


Parametrización

Transacción: SNUM



  • 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.
  • Guardamos. Nos dará un mensaje advirtiendo que esta numeración no es transportable al sistema productivo y que deberemos reproducirla en nuestro mandante destino también.



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.


La variable v_number nos devuelve la numeración.

Imagen inicial | James Cridland

No hay comentarios:

Publicar un comentario