O Estudo de caso de hoje tem a inteno de demonstrar como exportar os dados do Arquivo
de Log gerado no SXP em tabelas ISAM (dbf, Btrieve ou ctree) para uma base em SQL
(Oracle, MsSql, MySql, PostGreSql, dentre outras suportadas pelo TopConnect) e de como
deixar esse processo automtico fazendo uso das funes genricas dos mdulos do
Protheus.
Esse estudo de caso surgiu em virtude da seguinte necessidade: Aps termos configurado o
Log para gravao das Incluses, Alteraes e Excluses no SXP, atravs da rotina
"Configurao de Log" programa CFGX052, verificamos que o arquivo ISAM, utilizado para
armazenar o Log, em principio dbf e, posteriormente, ctree gerava uma sria problemtica.
Uma era o tamanho do tabela crescer muito forando-nos a renome-la sempre que esta
atingisse um certo tamanho, a outra era que, em funo desse crescimento, a abertura dos
mdulos do Protheus tornava-se insuportavelmente lenta e, quando a tabela era ctree,
gerava vrias inconsistncias no sistema.
A soluo foi exportar os dados que estavam gravados na Tabela SXP ISAM para uma
Tabela SXP em uma base SQL, e, para facilitar a consulta (pois mesmo em um Banco SQL
os dados da tabela eram muitos), essa Tabela teria que ser criada automaticamente pelo
sistema a cada virada de ms. Ou seja, teriamos uma Tabela de Log para cada ms do ano.
Os Logs, aps a exportao do SXP ISAM para SXP SQL, deveram ser gravados
automaticamente nesse ltimo.
Esse processo poderia ser habilitado ou desabilitado atravs de uma chave no .ini do
Protheus Server.
Para que isso fosse possvel, todos os mdulos do sistema deveriam estar configurados de
forma trabalhar nesse novo esquema. Usamos ento o que conhecido como "Ponto de
Entrada Genrico dos Mdulos". O Ponto de Entrada genrico de um mdulo do Protheus
tem as seguintes caractersticas:
1. Faz-se necessrio criar uma User Function com o nome do Mdulo;
2. Sempre ser executado durante a rotina de "Abertura" do sistema;
3. Sempre ser executado assim que a rotina, chamada partir do Menu Principal do
Mdulo, voltar para esse Menu.
O programa u_Modulos.prg contm a declarao de todas as User Function relacionadas
aos Mdulos do Protheus e em conjunto com o programa u_EspSxp.prg ir fazer com que o
Protheus passe a gravar os Logs configurados para o SXP em Tabelas mensais criadas na
base SQL para essa finalidade.
Recomendo que o teste seja efetuado em um ambiente novo, sem nenhuma User Function,
para que no ocorra conflitos entre as User Functions declaradas nos programas disponveis
para Download e as User Function em Produo.
Primeiro Passo:
Incluir a seguinte configurao no .ini do Protheus Server
[SXPTOP]
; (habilita ou desabilita o uso: 1 Enable 0 Disable)
EnableSXPTop=1
; (ip ou nome do servidor Top para acesso as tabelas SXP)
SxpTopServer=localhot