Вы находитесь на странице: 1из 6

Truco 69. Numeracin de Facturas Personalizada.

Compras (MIRO) y Ventas (VF01/VF04).


Hoy estamos de celebracin por varios motivos. Por un lado, empiezo las vacaciones
despus de un ao de mucho trabajo y muchos cambios. Pero orgulloso del camino
andado. Por otro lado, estamos de cumpleaos, pues este post cumple el nmero
CIEN desde que en noviembre de 2010 empece con el blog Saptricks como un lugar
de trabajo personal donde documentar tantas y tantas cosas de Sap imposibles de
recordar en detalle sin mas y otros temas que tena que investigar en un momento dado
y de las que quera dejar constancia.
Y la vez que llegamos a la publicacin cien, estamos a punto de llegar al milln de
visitas (en unos das estaremos ah), en el orden de 40 mil al mes. Toda una alegra y un
reto, no es fcil dedicarle el tiempo que a uno le gustara, a escribir cosas (tengo mil
ideas en la cabeza), a contestar a todas vuestras preguntas. Se hace lo que se puede.
Como os digo, todo un placer, gracias a los ms de 1.100 seguidores por vuestro inters.
Y lo ms curioso, en mi vida profesional he conocido este ao a unas cuantas
personas que eran seguidores de mi blog, y nos hemos desvirtualizado.
En nuestro truco de hoy vamos a hablar de un problema frecuente que suele surgir en
los proyectos de Sap: la numeracin de documentos de factura por estndar es
bastante limitada, tanto en la parte de compras (MIRO), como en la de ventas
(VF01/VF04). Pero, al menos, Sap nos deja la puerta abierta con las exits para
personalizar el sistema y adaptarlo a lo que nos pida nuestro cliente.

Numeracin de facturas en Compras.


Por estndar, en el registro de facturas de compras solo podemos utilizar dos rangos
de numeracin. Uno para el registro de facturas manual (MIRO) y otro para el registro
de facturas automtico (que incluye la anulacin de facturas, autofacturacin,
liquidacin del plan de facturas o recepcin de facturas por EDI).

La configuracin de los rangos de nmeros la realizamos en la transaccin OMRJ. A


continuacin, asignamos los rangos por la actividad que hemos indicado (ruta de
customizing Gestin de materiales > Compras > Verificacin de facturas de logstica
> Facturas recibida > Asignacin de nmeros > Asignacin de nmeros para
documentos de logstica > Asignar rango de nmeros a actividad).

Como veis, esto da pocas posiblidades para realizar, por ejemplo, una numeracin por
Sociedad (podra ser el criterio habitual ms solicitado) o por tipo de factura (factura,
abono, carga posterior o descargo posterior; o diferenciada por proceso).
Para solucionar esto, Sap nos deja la puerta abierta con la ampliacin LMR1M003,
que gestionaremos con un proyecto de ampliacin de la forma habitual con la
transaccin CMOD. En este post anterior tenes un ejemplo de todos los pasos
necesarios para crear un proyecto de ampliacin por si los desconocis.
La exit usa el mdulo de funcin EXIT_SAPLMRME_003 y podemos incluir nuestro
propio cdigo en el include ZXM08U14. Tenemos disponibles la mayora de campos
de la cabecera de la factura para determinar nuestro lgica de numeracin (Sociedad,
Transaccin, Operacin, Fechas, Proveedor, etc), as como la informacin de las
posiciones por si fuera necesario analizarlas.
La configuracin sera la siguiente:

1) Habremos de definir los rangos de nmeros a utilizar con la transaccin OMRJ.

2) Posteriormente, en el cdigo abap de la exit devolveremos en el


parmetro E_NUMKR el rango de nmeros a utilizar (de los que acabamos de definir).

En mi ejemplo, he creado una tabla Z donde el usuario asigna, por sociedad, el


rango de nmeros a utilizar. Posteriormente, en el cdigo de la exit leemos la
sociedad de a factura, recuperamos el rango de nmeros. Requerimiento cumplido.

Como podis ver, una forma sencilla de personalizar el comportamiento de la


numeracin. Tener en cuenta que la numeracin afecta tanto a la grabacin de las
facturas, como las preliminares o los documentos retenidos.
El cdigo Abap introducido en la exit sera el siguiente:

Numeracin de facturas en Ventas.


En la numeracin de las facturas de ventas nos ocurre algo parecido. Los rangos de
nmeros se definen con la transaccin VN01. Posteriormente, estos rangos se asocian
por Clase de Documento de Factura, parametrizacin que se realiza en la transaccin
VOFA.

En este caso, tenemos igualmente una puerta abierta para personalizar la numeracin
con la exits de ventas. Aqu no se utilizan los proyectos de ampliacin, sino unos

incudes estandar que Sap nos deja preparados para introducir nuestro cdigo.
Realmente son una modificacin del estandar. En nuestro caso, usaremos el
include RV60AFZZ, en el form USEREXIT_NUMBER_RANGE.
En este caso, la lgica a aplicar sera la misma. En primer lugar, crearamos los rangos
de nmeros a utilizar de la forma usual, con la transaccin VN01. A continuacin, en la
exit determinaramos la programacin para determinar el rango a utilizar segn la
informacin de la factura a crear (Sociedad, Organizacin de Ventas, etc), y
devolveremos el valor del rango de nmeros a utilizar en la
variable US_RANGE_INTERN.
Es usual utilizar esta misma exit para realizar controles de la fecha de facturacin.
Por ejemplo, por temas legales, en Espaa un nmero de factura no puede tener una
fecha de factura anterior a una factura emitida previamente.

En la exit se podra controlar este aspecto y otros similares a travs de tablas Z: una
tabla Z para definir el rango de nmeros a usar (por Sociedad, Organizacin de Ventas,
o por el criterio deseado) y otra tabla Z donde ir guardndonos la fecha de la ltima
factura por rango de numeracin para ir realizando el control, generando un mensaje de
error desde el mismo include.

TIP: podemos tener la misma problemtica para la numeracin de pedidos de ventas.


En este caso, la asignacin a las clases de documento se realiza con la transaccin
VOV8. Podemos personalizar igualmente su funcionamiento utilizando el
include MV45AFZZ y el form USEREXIT_NUMBER_RANGE. Recordar que
tanto los nmeros de pedidos de ventas como de facturas comparten los rangos de
nmeros (que definimos como ya comentamos con la transaccin VN01). Habremos de
tener en cuenta este aspecto a la hora de definir los rangos y la disponibilidad de
intervalos de cada uno de ellos.
Buen verano y feliz MILLON!!!

Вам также может понравиться