Este proyecto automatiza el proceso de integración de datos entre SAP y Siclo (una base de datos SQL), utilizando scripts en Python para descargar información desde una transacción específica en SAP, cruzar esta información con datos de despacho, y actualizar una hoja de cálculo en Google Sheets. Posteriormente, esta hoja de cálculo alimenta un dashboard en Looker Studio, que se actualiza automáticamente para proporcionar visualizaciones en tiempo real.
El objetivo principal de este proyecto es optimizar y automatizar el flujo de trabajo que involucra la extracción de datos desde SAP, su integración con datos almacenados en Siclo, y la actualización de un dashboard en Looker Studio. Esto permite a los usuarios acceder a informes actualizados y visualizaciones de datos en tiempo real sin intervención manual, mejorando la eficiencia y la precisión del proceso.
Esto se realiza con el fin de obtener las credenciales necesarias para acceder a la hoja de cálculo, en la que se actualizará la información obtenida por el script.
En el siguiente vídeo se observa como se obtiene el archivo:
- credentials.json
Tener en cuenta que el "robot" creado en este paso debe tener acceso al archivo o archivos de Google Sheets a actualizar.
En el archivo scripts.py se deben modificar los siguientes campos:
- sap_user (Usuario de SAP que tenga acceso a la transacción Y_CSD_80000073).
- sap_password (Contraseña respectiva).
- server, database, username y password para poder acceder a Siclo.
Esto con el fin de poder acceder a SAP y Siclo y obtener la información de cada uno.
La spreadsheet debe contar con el nombre que tiene en el código así como las hojas para que el código no genere error al no encontrar dónde guardar los datos.
Teniendo la spreadsheet con los datos podemos crear el dashboard para mejorar la visualización de la información.
En el siguiente link se puede observar como se realiza la conexión Conexión hoja de cálculo - Looker Studio
A continuación un ejemplo de lo que se puede realizar con los datos en Looker Studio:
![Tablero_1](https://private-user-images.githubusercontent.com/160264615/357514484-a310923e-ffa8-4375-a14b-8e4a9106c87e.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMTk5MjUsIm5iZiI6MTczOTExOTYyNSwicGF0aCI6Ii8xNjAyNjQ2MTUvMzU3NTE0NDg0LWEzMTA5MjNlLWZmYTgtNDM3NS1hMTRiLThlNGE5MTA2Yzg3ZS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwOVQxNjQ3MDVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02Nzg1ZDVhNjg0YjBjNzM0OTYwNmFhZDE3YTdlN2VkNjRiZjg1ODZhMmM3ODZmM2I3YjA2MjNkYWQ4ODRhNDc0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.4-t-B1O9YqYZow0afeZyYcUOrjrlBtD2O92UlFV3H78)
![Tablero_2](https://private-user-images.githubusercontent.com/160264615/357514496-e10d1c01-6f96-4a18-913f-cdc74759dfa8.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMTk5MjUsIm5iZiI6MTczOTExOTYyNSwicGF0aCI6Ii8xNjAyNjQ2MTUvMzU3NTE0NDk2LWUxMGQxYzAxLTZmOTYtNGExOC05MTNmLWNkYzc0NzU5ZGZhOC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwOVQxNjQ3MDVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01NzBhYzYzNjFiMTE5NDAyYWRjMjMxZjFhMWFmYWNhN2JlODYyYTZmMDBjNzBjNmQyNjczOWQzNDlmODI0YTBhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.8lJGPwPUYfurLgNJmzBnzEQqxnCVNUhpqeLJkKxzhf8)
Este dashboard se envía periodicamente al terminar turno mediante la opción de Programar envío de Looker Studio.
Con el fin de evitar la intervención manual en el proceso de actualización del dashboard y los datos, el código se ejecuta de la siguiente manera en Acciones:
También se puede utilizar el siguinte código xml, guardarlo e importar la tarea:
Ver código XML
<Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task" version="1.2">
<RegistrationInfo>
<Date>2024-03-01T13:48:05.6705751</Date>
<Author>CO\jacostae</Author>
<Description>Código para actualizar información SAP y Siclo</Description>
<URI>\Código_actualización</URI>
</RegistrationInfo>
<Triggers>
<TimeTrigger>
<Repetition>
<Interval>PT4H</Interval>
<StopAtDurationEnd>false</StopAtDurationEnd>
</Repetition>
<StartBoundary>2024-03-27T10:59:00-05:00</StartBoundary>
<Enabled>true</Enabled>
</TimeTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-21-4221797372-3623916711-2686236536-24058</UserId>
<LogonType>InteractiveToken</LogonType>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>true</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
<Priority>7</Priority>
<RestartOnFailure>
<Interval>PT1M</Interval>
<Count>2</Count>
</RestartOnFailure>
</Settings>
<Actions Context="Author">
<Exec>
<Command>C:\ProgramData\anaconda3\python.exe</Command>
<Arguments>main.py</Arguments>
<WorkingDirectory>C:\Users\jacostae\Desktop\Daily_update</WorkingDirectory>
</Exec>
</Actions>
</Task>