Artículos etiquetados con: Bases de datos

Uso básico de tablas dinámicas Excel y SAP Business One (Parte 2)

En el primer post de esta temática, vimos cómo podemos crear una tabla dinámica Excel a partir de una consulta SQL que nos extraiga la información relativa a ventas de nuestra empresa. 

En este nuevo post veremos qué posibilidades tenemos con dicha tabla dinámica. Una vez que hemos creado nuestra tabla dinámica asociándole la información procedente de la consulta generada por nosotros, tendremos una hoja de cálculo con el siguiente aspecto:


En la parte derecha, veremos todos los campos que devuelve nuestra consulta SQL. Además vemos cuatro posibles secciones/áreas en las que podemos ubicar dichos campos.

En función de dónde arrastremos los campos obtenidos de la consulta, nuestra tabla dinámica cambiará. Veamos cómo funciona con algunos ejemplos.

Podemos tener un primer informe básico de ventas por artículo arrastrando el campo “IMPORTE” al área “Valores” y el campo ITEMNAME al área “Etiquetas de fila”. Con esto obtendremos el total de ventas de cada artículo:
                                                               

Posiblemente sea interesante tener en cuenta el tiempo en esta información, es decir, saber cómo han sido las ventas de los artículos en función de las fechas.

Esto lo podemos conseguir arrastrando el campo “FECHA” al área “Etiquetas de columnas”; Una vez hecho esto, observamos que se nos muestra la información de ventas de cada artículo a lo largo del tiempo, para cada día de manera individual:  

                                   

Podemos modificar cómo queremos que aparezca la información a través del tiempo de forma sencilla del siguiente modo:

  1. Sobre cualquier valor de columna, botón derecho y seleccionar agrupar

                       

2.  Seleccionamos cómo queremos que se realice la agrupación y entre qué periodo de fechas queremos ver nuestro informe. En el ejemplo actual mostraré las ventas por meses, agrupadas a su vez por años:  

                   

Una vez hecho esto nuestro informe aparecerá mostrando la información de ventas para cada mes y para cada año.

Podemos contraer la información de años anteriores y ver la información por meses expandida del año actual. En nuestro ejemplo obtenemos lo siguiente:
 
Tenemos un informe totalizado por meses y por años en el que puede desplegarse o contraerse cada uno de los años en función de lo que necesitemos ver y  además totalizado por venta de cada producto.

Es posible que además nos interese tener en cuenta los grupos de artículos o categorías a las que pertenecen nuestros productos, de forma que podamos tener el mismo informe pero agrupado por grupo de artículos.

Para lograr esto, simplemente arrastraremos el campo “ITMSGRPNAM” al área “Etiquetas de columnas” sobre el campo “ITEMNAME”. Haciendo esto logramos que las filas se agrupen por grupo de artículos y luego por artículos:

                                                           

Observamos que para cada grupo de artículos tenemos totalizado su importe de ventas a  lo largo del tiempo y además mantenemos la opción de ver el detalle por artículo.

Obviamente podemos realizar modificaciones en la configuración de la tabla dinámica y obtener en cada caso un listado diferente, teniendo en cuenta comerciales,  proveedores por defecto del artículo, clientes, … Esta flexibilidad y dinamismo nos permite dar el primer paso hacia la inteligencia de negocios  teniendo multitud de informes a nuestro alcance configurando adecuadamente una tabla dinámica.

Obviamente es posible introducir mejoras en todo esto, como por ejemplo, montar la tabla dinámica a partir de un cubo OLAP (optimizado para consultas de extracción de datos), configurar nuestra hoja de cálculo para que se actualice cuando consideremos más oportuno, etc…

Espero que esto pueda servir de ayuda a alguien, o que ayude a tomar un camino que pueda aportarles valor.

Uso básico de tablas dinámicas Excel y SAP Business One (Parte 1)

SAP Business One cuenta con multitud de informes, de manera estándar, que permiten visualizar de forma sencilla cualquier información sobre nuestro negocio que necesitemos obtener.

Además de este extenso paquete de informes, también contamos con la potente funcionalidad “Arrastrar y vincular” para generar consultas de forma muy intuitiva, el propio generador de consultas incrustado en el cliente SAP Business One y el “Query manager”, que nos permite mantener organizadas estas consultas para poder ejecutarlas cuando necesitemos.

Aun así, en ocasiones, es necesario desarrollar algún informe a medida y para ello SAP Business One cuenta con las herramientas PLD (Print Layout Designer) y Crystal Reports (ésta última, en mi opinión, es la alternativa más adecuada frente al PLD cada vez más en desuso).

Este tipo de herramientas de generación de informes, dan como resultado un documento que extrae la información deseada de la base de datos (usando una consulta SQL), presentándola de forma amigable al usuario (según sus requisitos) y permitiendo determinadas capacidades de filtrado (ejemplo: poder ver las ventas entre una fecha de inicio y fin determinadas, o las ventas de un comercial determinado, o las ventas de un grupo de artículos, etc …).

Los informes (Crystarl Rerport o PLD) constituirían el paso anterior a lo que se conoce como inteligencia de negocios (business inteligence) y son apropiados cuando el cliente necesita poder consultar su información de forma estática.

Me explico, es posible que nuestro cliente necesite poder consultar la información de ventas de su negocio en un rango de fechas, agrupando sus artículos y totalizando, agrupando por comercial, agrupando por proveedor por defecto del artículo, agrupando por almacén, etc… SAP Business One cuenta con el informe “Análisis de volumen de negocios” que puede encajar perfectamente en la mayoría de nuestros clientes, pero en ocasiones es posible que sea necesario poder aportar mayor dinamismo a la forma en que se presenta la información al usuario final.

En este escenario una alternativa válida podría ser el uso de tablas dinámicas en Excel alimentadas por la base de datos SAP Business One.

Veamos un ejemplo de lo que podríamos conseguir:

Supongamos que nuestro cliente, que tiene SAP Business One implantado en su empresa, desea un informe de ventas que le permita agrupar su información por grupo de artículos, comercial, proveedor por defecto.

Esta información debe visualizarse por meses, trimestres y años de forma flexible.

• Paso 1. Nos preocuparemos de crear la consulta SQL adecuada que alimente nuestro informe de tabla dinámica.

En este caso concreto necesitaremos extraer la información de ventas de las líneas de nuestras facturas teniendo en cuenta que deberemos restar las líneas correspondientes de nuestros abonos.

             

 

• Paso 2. Creamos una nueva hoja de cálculo Excel que será alimentada por la información procedente de la consulta del Paso 1. Para ello : o Crearemos una nueva hoja y seleccionaremos que debe alimentarse desde Microsoft Query:

                     

o Seleccionamos el origen de datos con el que queremos conectar. En mi caso selecciono una conexión ODBC llamada SAPBO

               

o Incluyo cualquier tabla para que el asistente me permita continuar. Posteriormente sobrescribiremos la consulta que nos genere este asistente con la consulta que desarrollamos en el paso 1.

                  
o Continuamos con el asistente pulsando “Siguiente” hasta llegar al último paso donde seleccionaremos “Ver datos o modificar consulta en Microsoft Query”:

                   

o Posteriormente podremos ver que el resultado del asistente es una consulta básica que contempla la información de los pasos seguidos hasta el momento. Podremos modificar la consulta pulsando el botón SQL y sobrescribiendo la consulta que desarrollamos en el paso 1.

 
o Una vez que sustituimos la consulta y pulsamos en aceptar seleccionaremos “Archivo”, “Devolver datos a Microsoft Excel”:

 
o Seleccionamos que queremos el resultado en una tabla dinámica Excel

l                

Con esto devolveremos toda la información de la consulta a una tabla dinámica Excel.

En el próximo post explicaré cómo podemos usar la tabla dinámica para cambiar fácilmente la forma en que se nos muestra la información y cómo integrarla en SAP Business One de forma sencilla. Cualquier comentario será bienvenido. 

Uso básico de índices en Microsoft SQL Server y SAP Business One

Cuando las tablas de una base de datos comienzan a contar con un gran número de registros, se hace necesario disponer de estructuras que nos permitan acelerar nuestras consultas.

Es posible optimizar consultas relacionadas con SAP Business One creando los índices oportunos y respetando las reglas marcadas por SAP en este sentido. 

Para conocer en detalle estas reglas te remito a las notas oficiales del producto:  896891 y 1376447. Según la segunda nota, podemos crear índices en SAP Business One, previa aprobación de personal de soporte del producto y teniendo en cuenta que en cada actualización de versión los índices creados serán eliminados por el proceso de “upgrade” de la sociedad.

Por lo tanto, recomiendo que si necesitas crear uno o varios índices y cumples con las reglas marcadas por SAP, cuentes con dos scripts:

  1. Script 1: Eliminaría todos los índices creados por ti en la base de datos. A usar antes de un “upgrade” de una base de datos perteneciente a una sociedad SAP Business One.
  2. Script 2: Crearía los índices en la base de datos una vez se haya completado el “upgrade” de tal base de datos.

Veamos un ejemplo sencillo donde se aprecia cómo un índice puede ayudarnos a mejorar la experiencia del usuario. Contamos con una tabla definida por el usuario (UDT) que tiene  163640 registros

Esta cantidad de registros puede influir negativamente en todas las consultas en las que aparece la tabla. Al margen de su significado, esta tabla contiene un campo de fecha llamado U_Fecha

Necesitamos saber cuál es el máximo valor del campo U_Fecha en nuestra tabla. Escribiríamos esta sencilla consulta:

El mapa de ejecución de dicha consulta nos muestra la siguiente información:

El número de filas estimado es de 163640, es decir, se recorren todas las filas de la tabla para obtener el mayor valor del campo fecha.  A la vista de la consulta y de la tabla, crearemos un índice noncluster para el campo U_Fecha:

 

Una vez creado el índice, lanzamos de nuevo nuestro mapa estimado de ejecución de la consulta usada en el ejemplo:

Observamos que el número de filas estimadas a recorrer se ha reducido a 1, gracias al uso del índice [@ITOP_P05].[IDXP05_FECHA]. Una mejora notable…   Cualquier comentario será bienvenido.