Como Integrar o ERP SAP Business One com Power BI usando AWS Aurora

28 de julho de 20267 min de leitura
SAPPower BIAWSSQL ServerAurora

Introdução

O SAP Business One (S1B) é um ERP extremamente popular para PMEs de crescimento acelerado. Contudo, gerar relatórios de Business Intelligence diretamente em sua base de produção (seja ela SQL Server ou SAP HANA) pode degradar a performance e travar o faturamento.

Neste artigo, veremos como arquitetar uma solução moderna e segura que sincroniza dados do SAP B1 local para uma réplica de leitura no AWS Aurora (PostgreSQL), servindo de fonte otimizada para dashboards dinâmicos no Power BI.


O Desafio Tecnológico

Normalmente, o Power BI faz consultas complexas e pesadas. Se o banco de dados principal do ERP for acessado diretamente para cada refresh de dashboard, a performance de transações diárias (emissão de notas, baixas de estoque) cai drasticamente.

A solução arquitetural proposta baseia-se em: 1. Origem (Local/On-Premise): Servidor SAP Business One. 2. Camada de Sincronização (CDC/Processo Batch): Script de integração que extrai apenas tabelas financeiras e de faturamento chaves (OINV, INV1, OOCR, OCR1). 3. Destino (AWS Cloud): Banco de dados relacional Aurora Serverless. 4. Visualização: Gateway do Power BI conectando na AWS para relatórios agregados sem sobrecarga no ERP.

+------------+        +---------------+        +---------------+        +------------+
|  SAP B1    |  --->  | Integration   |  --->  |  AWS Aurora   |  --->  |  Power BI  |
|  (On-Prem) |        | Script (TS)   |        |  (PostgreSQL) |        |  Dashboard |
+------------+        +---------------+        +---------------+        +------------+

Passos para Implementação

1. Modelagem das Tabelas Chave do SAP B1

Para dashboards financeiros, focamos nas tabelas de notas fiscais de saída: OINV: Cabeçalho dos Documentos de Saída (Contém Data de Lançamento, Total da Nota, Código do Cliente). INV1: Linhas dos Documentos de Saída (Contém Código do Item, Quantidade, Preço Unitário, CFOP).

2. O Script de Sincronização (Node.js & TypeScript)

Abaixo, um exemplo de rotina em Node.js rodando em uma tarefa agendada (Cron ou AWS ECS Task) que consulta os dados alterados no último dia e insere no PostgreSQL na AWS.
import { Client } from 'pg';
import sql from 'mssql';

// Configurações de Conexão const sqlConfig = { user: process.env.SAP_DB_USER, password: process.env.SAP_DB_PASSWORD, server: process.env.SAP_DB_SERVER, database: 'SBO_PROD', options: { encrypt: true, trustServerCertificate: true } };

const pgConfig = { connectionString: process.env.AWS_AURORA_URL, };

async function syncSAPToAWS() { const mssqlPool = await sql.connect(sqlConfig); const pgClient = new Client(pgConfig); await pgClient.connect();

console.log("Iniciando sincronização SAP -> AWS Aurora...");

// 1. Extração incremental (últimas 24 horas) const query = SELECT DocEntry, DocNum, DocDate, DocTotal, CardCode FROM OINV WHERE UpdateDate >= DATEADD(day, -1, GETDATE()) ; const result = await mssqlPool.request().query(query);

// 2. Carga (Upsert) no Postgres AWS Aurora for (const row of result.recordset) { const upsertQuery = INSERT INTO aws_sales_stage (doc_entry, doc_num, doc_date, doc_total, card_code) VALUES ($1, $2, $3, $4, $5) ON CONFLICT (doc_entry) DO UPDATE SET doc_total = EXCLUDED.doc_total, doc_date = EXCLUDED.doc_date; ; await pgClient.query(upsertQuery, [ row.DocEntry, row.DocNum, row.DocDate, row.DocTotal, row.CardCode ]); }

console.log(Sucesso: ${result.recordset.length} registros sincronizados.); await mssqlPool.close(); await pgClient.end(); }

syncSAPToAWS().catch(console.error);


Otimizações de FinOps e Performance

Particionamento de Tabelas: Na AWS, particione a tabela aws_sales_stage por ano ou mês para acelerar filtros de data no Power BI. Tamanhos e Custos: Use o Aurora Serverless v2 para dimensionar a capacidade sob demanda, reduzindo a zero nos fins de semana e madrugadas quando ninguém lê os relatórios.

Conclusão

Ao desacoplar a base de relatórios da base transacional utilizando a AWS, garantimos segurança, escalabilidade para o Power BI e alta disponibilidade para o faturamento físico da empresa. Essa arquitetura robusta resolve o gargalo de performance de forma limpa.

Quer saber mais sobre integração de ERPs e Cloud Architecture? Deixe seu comentário no meu LinkedIn!