Você está na página 1de 4

Protheus :: Estudo de Caso II (Log SXP)

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

; (porta do servidor Top para acesso as tabelas SXP)


SxpTopPort=7890
;(nome do BataBase onde as Tabelas SXP estao armazenadas: Oracle, Postgres, MsSql,
etc.)
SxpTopDatabase=postgres
; (Alias do Banco onde as Tabelas SXP esto armazenadas)
SxpTopAlias=msiga
Segundo Passo: Baixar e Compilar os programas u_Modulos.prg e u_EspSxp.prg
Agora, ao entrar em qualquer mdulo do Protheus, quando a chave EnableSXPTop estiver
com o contedo igual a 1(Habilitada), ser verificada a existncia da tabela
SXPEECAAAAMM, onde:
EE Corresponde ao cdigo da Empresa;
C Constante 0 (zero);
AAAA Corresponde ao Ano de Criao da Tabela; e
MM Corresponde ao Ms da Criao da Tabela.
Se o arquivo SXP ISAM tiver contedo esse ser, automaticamente, exportado para a Tabela
criada anteriormente e todos os novos dados passaro a ser gravados nessa nova tabela. A
operao de exportao feita apenas uma vez por dia (quando o primeiro usurio logar no
sistema e se houver informaes a serem exportadas.
Se desejar que a primeira exportao seja manual, execute os seguintes passos:
Execute o "Client" do Protheus e no Programa inicial digite u_ExpSxp, conforme figura
abaixo

Selecione a Empresa da qual deseja Exporta o arquivo de Log SXP

Selecione a Conexo TopConnect para a qual o Log SXP ser exportado


Por padro ser disponibilizada a configurao disponvel em: [SXPTOP]

Exemplo de uma tabela SXP criada no banco PostGreSql


(clique na Imagem para ampli-la)

Read more: http://www.blacktdn.com.br/2008/12/protheus-estudo-de-caso-ii-logsxp.html#ixzz3mEoGIxb3