Consulta:
¿Cómo se puede agregar una nueva columna a un Informe / storeprocedure?
Respuesta:
Para resolver esto es requisito saber manipular DB Manager, comprender el funcionamiento de los storeprocedure dentro de Finnegans y tener una base mínima de SQL.
En esta entrada se va a explicar un caso concreto y simple para poder agregar una nueva columna a un informe, orientado para que analistas funcionales y consultores puedan realizarlos sin recurrir a la Software Factory.
En esta guía se verán las buenas prácticas a implementar, los pasos a seguir y el resultado final.
Introducción: Se tomará como ejemplo el caso de un atributo adicional “Nro Pedido” alojado en la cabecera de un Remito de Venta, el cual el cliente necesita poder visualizar en el informe de Análisis de Despachos.
Pasos a seguir:
Modificación Store-procedure
- Primero se necesita recuperar el nombre real del campo adicional. Si el campo está creado en la cabecera del documento, lo más probable es que esté creado dentro de la tabla BSOperacion.
Para corroborar esto nos debemos dirigir al Diccionario de Datos en Menú > Configuración > Diseño del espacio de trabajo > Diccionarios > Datos.
Una vez dentro debemos buscar el diccionario OperacionVO > Solapa Atributos adicionales
Aquí encontraremos todos los campos adicionales creados en la tabla, en este caso nuestro campo se llama “USR_NroPedidoREM”.
Generalmente, los campos adicionales comienzan con la sigla a"USR_" para diferenciarse visualmente de los campos estándar. Y luego de la sigla, el nombre del campo, el cual indica aproximadamente su sentido.
Para corroborar que el campo encontrado en la tabla es el mismo que está en el Remito de Venta, debemos realizar lo siguiente:
a. Ingresar a un Remito de Venta previamente creado.
b. Ir a Formato > Edición manual > XML de particularización. Aquí buscaremos la parte que dice serverAttribute=
.
Aquí veremos que el nombre del campo adicional es tal cual el que aparecía en el Diccionario de Datos. Con esto confirmaremos que ese es el Nombre real del campo.
- Una vez que tenemos recuperado el nombre de nuestro campo, debemos buscar el store-procedure que utiliza el informe de Análisis de Despachos.
Para esto nos dirigimos a Menú > Configuración > Diseño del espacio de trabajo > Diccionarios > Viewers.
Aquí dentro buscaremos el informe en cuestión y una vez dentro, debemos copiar el valor ubicado en el campo Stored Procedure. Este es el Nombre del SP utilizado por el informe.
En este caso es: P_BS_OP_0010
- El siguiente paso es ingresar a DB Manager, desde Menú > Configuración > Diseño del espacio de trabajo > Diccionarios > DB Manager.
Aquí haremos clic en el botón “Explorar” para que se abra el explorador de la base de datos. Una vez que cargó debemos hacer clic en la única carpeta existente y luego en la opción “Procedimientos almacenados”.
Luego, con Ctrl + F debemos pegar el nombre del SP y hacer clic en el cuando el buscador lo encuentre.
- Al hacer clic, se abre el SP en el cual necesitamos agregar nuestra nueva columna.
Lo primero que debemos como buena práctica es crear un nuevo SP. Para esto debemos dirigirnos al primer comando que aparece “CREATE PROCEDURE [dbo].[P_BS_OP_0010]
” y modificar el nombre por P_BS_OP_0010_PRUEBA
.
Esto es importante, ya que es un nivel de control y nos aseguramos que cualquier modificación que hagamos dentro de DB Manager no afectará al SP estándar ni a la operatoria del informe.
- Una vez que modificamos el nombre, vamos a proceder a agregar la nueva columna. Para esto debemos dirigirnos al primer SELECT que encontremos. Los SELECT son la selección de columnas que muestra el informe.
Aquí agregaremos, despues del campo “DocNroInterno”, nuestra nueva columna. La ubicación del campo es importante, lo ideal es hacerlo donde estén ubicados los campos de la cabecera de la transacción. Se deben respetar las comillas simples ’ ', el =, los puntos y la coma final.
La estructura es:
• Rojo: Nombre de la columna.
• Azul: Nombre de la Tabla.
• Verde: Nombre del campo en la Tabla.
'NroPedido' = BSOperacion.USR_NroPedidoREM,
En este SLEECT, vemos que la Tabla es #ResultadoParcial. Esto es una tabla intermedia que se crea dentro del SP, lo que debemos hacer es copiar el nombre y armar la misma estructura de la columna pero reemplazando el nombre de la tabla BSOperacion por #ResultadoParcial.
'NroPedido' = #ResultadoParcial.USR_NroPedidoREM,
Una vez agregada la columna en todos los SELECT se debe apretar el botón Ejecutar. La respuesta de la base de datos debe ser “Comandos completados correctamente”.
Con esto finalizamos la modificación de nuestro SP.