Programa para importação de extrato bancario

Perguntas relacionadas a questões técnicas do Oracle EBS. Criação de Concorrentes, Value Sets, Alerts, Forms Personalizations, Configurações, etc
Responder
ceess_1
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 10 Ago 2009 3:15 pm
Localização: São Paulo - SP

Olá senhores,
Estou necessitando de uma ajuda de vocês.
Necessito criar um programa que fique no Unix verificando um diretório aonde o usuário vai disponibilizar os extratos bancarios, quando um arquivo for disponibilizado o programa deve chamar a rotina core de importação e apagar os arquivos do UNiX.
Alguém já fez algo parecido?
Agradeço desde já.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá ceess_1,

Eu acho que você poderia desenvolver uma rotina PL/SQL (ou java stored prodedure) que consultaria o diretório e verificaria a existência de algum arquivo no mesmo.

Acho que você poderia então criar um concorrente no EBS que chamaria esta rotina de tempos em tempos, desta forma garantindo que o log da operação fosse registrado nas tabelas do EBS.

Você poderia para isso, usar recursos em PL/SQL como o ULT_FILE, para processamento dos arquivos texto. Só que neste caso, o diretório onde os arquivos de extrato vão ser gravados deve se localizar obrigatoriamente no servidor onde se encontra o banco de dados do EBS (DB_TIER). Se houver algum impeditivo de segurança para gravação de arquivos no servidor de banco, você vai provavelmente necessitar que criem um diretório NFS, que seja compartilhado pelo servidor do banco.

Uma vez definido o seu programa PL/SQL de leitura/processamento de arquivos (veja exemplos sobre UTL_FILE na documentação ORACLE), você vai precisar adicionar alguns parâmetros adicionais da rotina PL/SQL, que permitirão ao programa PL/SQL se comunicar com o programa de CONCURRENTS do EBS.

Você pode ainda utilizar packages do EBS que permitirão gerar um LOG de execução bem legal que poderá ser consultado nas telas de gerenciamento de concorrentes do EBS.

Seguem alguns links onde você poderia obter maiores informações sobre como adaptar uma rotina PL/SQL para ser acessada pelos concorrentes de EBS:

http://docs.oracle.com/cd/E18727_01/doc ... 458258.htm

http://my.safaribooksonline.com/book/da ... ZxdWVyeT0=

http://getappstraining.blogspot.com.br/ ... rrent.html

http://prasanthapps.blogspot.com.br/201 ... rs-in.html

http://docs.oracle.com/cd/E18727_01/doc ... _cpplsqlio

Abraços,

Sergio Coutinho
ceess_1
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 10 Ago 2009 3:15 pm
Localização: São Paulo - SP

Olá Sergio
Eu já criei um conjunto de solicitações que fica agendado no EBS. O meu problema esta sendo na hora de pegar o nome do arquivo e passar esse nome como parametro, pois no diretório vou ter varios arquivos.Um dos objetos do meu conjuto de solicitações utiliza o comando fnd_request.submit_request, aonde informo o nome do concurrente e os parametros para execução, mas como não estou conseguindo pegar o nome do arquivo e nem deletar o que já foi processado.
Vou analisar os links que você enviou, muito obrigado.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Oi ceess_1,

Neste caso, talvez fosse interessante desenvolver uma JAVA STORED PROCEDURE, que lhe permitiria executar comandos no sistema operacional do servidor de banco de dados do seu EBS.

Esta JAVA STORED PROCEDURE poderia ser chamada a partir de sua rotina PL/SQL. Desta forma, algumas operações seriam executadas pelo PL/SQL e outras pelo JAVA.

Você poderia obter uma lista dos arquivos existentes, avaliar a data de geração deles, efetuar a remoção dos arquivos processados, etc. Talvez fosse interessante criar uma pasta de ENTRADA (onde os arquivos novos seriam gravados) e uma pasta de PROCESSADOS (para onde todos os arquivos da ENTRADA seriam movidos após o seu processamento).

Como você vai acessar o sistema operacional, por segurança você vai precisar configurar uma série de permissões dentro do ORACLE, de forma a liberar a execução de alguns comandos do sistema operacional. Tome cuidado nesta configuração para evitar que o JAVA tenha muita liberdade dentro do seu SO (imagina se sua rotina consegue remover arquivos de datafile do oracle - rss).

Nos links abaixo, os autores explicam em detalhes como elaborar uma JAVA STORED PROCEDURE e configurar o banco para que esta rotina execute operações no sistema operacional. Só que você precisaria adaptar as mesmas para o UNIX/LINUX:

http://technology.amis.nl/2005/02/11/st ... y-listing/

http://www.oracle-base.com/articles/8i/ ... -plsql.php

Este artigo do BURLESSON mostra uma forma de desenvolver uma rotina java que considere o sistema operacional onde a mesma é executada:

http://www.dba-oracle.com/t_execute_ope ... oracle.htm

Espero que tenha subsídios para conseguir desenvolver sua rotina.

Abraços,

Sergio Coutinho
ceess_1
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 10 Ago 2009 3:15 pm
Localização: São Paulo - SP

Muito Obrigado Sergio,

Esse material está bem elaborado, vou estudá-lo e assim que terminar o desenvolvimento posto aqui para quem precise.

Att.
Carlos.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes