Estoy iniciando en este mundo de SAP Business One,
tengo una tabla definida por usuario [@PS_CarguesLocal] y un reporte en crystal reports que muestra información de esta tabla, por necesidades de negocio quiero controlar el número de impresiones de dicho reporte, ya tengo creado un campo de usuario llamado U_NumImpreso el cual quiero que aumente en 1 cada vez que se imprimar el informe desde el cliente de SAP.
Me pueden por favor indicar que proceso realizar para controlar este conteo,
Le recomiendo iniciar su participación en el foro con su presentación Presentaciones
esto incrementa sus posibilidades de recibir ideas o propuestas mejor estructuradas en base a su experiencia, perfil, permisos en su sistema y versión, por ejemplo SQL o HANA.
Lo que quiere hacer ¿es posible? Sí, pero debe considerar primero que las impresiones de Crystal no escriben en la base de datos, son de lectura, es decir, para saber cuantas impresiones se han hecho o limitarlas, lo ideal es usar el Transaction Notification.
SAP incrementa de forma estándar el campo printed, si el reporte está asignado como el Layout por defecto, cada vez que le da “Imprimir”, SAP realiza una actualización interna en la UDO para registrar que fue enviado a la impresora. Tiene que aprovechar ese evento de actualización para sumar +1 a su campo U_NumImpreso.
Algo así en SQL:
IF @object_type = 'PS_CarguesLocal' AND @transaction_type = 'U'
BEGIN
UPDATE [@PS_CarguesLocal]
SET U_NumImpreso = ISNULL(U_NumImpreso, 0) + 1
WHERE DocEntry = @list_of_cols_val_tab_del
END
AHORA!!! Si por alguna causa su crystal no está cargado en su SAP y el usuario lo ejecuta como un .rtp externo, su TN no lo detectará. Entonces una opción sería hacerle un subinforme con un comando de procedimiento almacenado que reciba el DocEntry como parámetro para que actualice el update al [@PS_CarguesLocal] SET U_NumImpreso = con la desventaja que cada que lo abran contará como impreso.
Por otro lado, nada de lo anterior puede ser funcional si usted no menciona los límites, es decir, más de “tantas” veces para un mismo registro o cuantas veces por mes. En ese caso el TN será su única opción.
Una idea más “limpia” ¿Qué pasa si la impresora falla y necesita reimprimir? Para casos tan comunes como lo anterior lo recomendable es no limitar las impresiones, sólo tiene que marcarlas para diferenciar el ORIGINAL de las copias, incluso puede llegar a marcar: Copia1, Copia2, Copia3… Etc.