Banco de Dados - Oracle

Oracle E-Business Suite - Dicas para construção de relatórios usando o Oracle Report Builder

O Oracle Report Builder é a ferramenta mais utilizada para a construção dos relatórios nativos do Oracle Applications. O objetivo deste artigo é comentar dois pontos importantes na utilização desta ferramenta para a criação de relatórios customizados que estendam as funcionalidades do Oracle Applications.

por Sandro Marques



O Oracle Report Builder é a ferramenta mais utilizada para a construção dos relatórios nativos do Oracle Applications. O objetivo deste artigo é comentar dois pontos importantes na utilização desta ferramenta para a criação de relatórios customizados que estendam as funcionalidades do Oracle Applications:

1) Parâmetro obrigatório do relatório

Deve ser criado um parâmetro de relatório, no Report Builder, chamado P_CONC_REQUEST_ID com o tipo "Number". Através deste parâmetro o gerenciador de processos concorrentes do Oracle Applications passará o ID do processo executado para o programa escrito no Oracle Report.

2) Chamadas de função obrigatórias

Para que o relatório construído possa ser executado como um processo concorrente no Oracle Applications, é necessário que seja chamada a função SRW.USER_EXIT("FND SRWINIT") no início do relatório, e a mesma função com o parâmetro "FND SRWEXIT" no final do relatório A função SRW.USER_EXIT("FND SRWINIT") inicializa os valores das opções do perfil do usuário e permite ao Oracle Application Object Library detectar que as funções de saída para o usuário serão chamadas de um programa do Oracle Report. Esta função deve ser chamada no gatilho de relatório "BEFORE REPORT" através do seguinte código:

SRW.USER_EXIT("FND SRWINIT");

A chamada desta função da forma acima descrita funciona quando o relatório é executado dentro do ambiente do Oracle Applications, mas gera o erro REP-1415 caso o relatório seja executado dentro do ambiente do Report Builder. Por essa razão, quando o relatório é executado no ambiente do Oracle Report Builder (para teste, por exemplo) esta chamada deve ser omitida e antes da geração da versão final a ser instalada no Applications, esta chamada de função deve ser recolocada.

Uma forma de evitar que este problema aconteça é inserir um novo parâmetro no relatório para que omita essa chamada automaticamente. O código abaixo é uma alternativa a essa implementação, que considera a criação de um parâmetro chamado "P_APPS_ENV". Quando o relatório é executado dentro do ambiente do Report Builder o valor informado para o parâmetro deve ser nulo ou diferente de "Y". No caso do relatório ser executado de dentro do ambiente do Applications, o valor do parâmetro deve ser igual a "Y" (neste caso, pode-se cadastrar um parâmetro no Applications com valor default igual a "Y"). Para esta solução, o seguinte código poderia ser utilizado, considerando inclusive o tratamento de exceção:

BEGIN 
    IF NVL(:P_APPS_ENV,"Y") = "Y" THEN 
        :P_APPS_ENV := "Y"; 
        SRW.USER_EXIT("FND SRWINIT"); 
    ELSE 
        :P_APPS_ENV := "N"; 
    END IF; 
EXCEPTION
    WHEN SRW.USER_EXIT_FAILURE THEN
        SRW.MESSAGE (1000,"Failed in BEFORE REPORT trigger");
    RETURN (FALSE);
END;
 

A chamada da função SRW.USER_EXIT("FND SRWEXIT") ao final da execução do relatório garante que toda a memória alocada pela Oracle Application Object Library para a saída do usuário seja liberada apropriadamente. Esta função deve ser chamada no gatilho de relatório "After Report" com o seguinte código e respectivo tratamento de exceção:

BEGIN 
    SRW.USER_EXIT("FND SRWEXIT");
EXCEPTION
    WHEN SRW.USER_EXIT_FAILURE THEN
        SRW.MESSAGE(1,"FAILED IN AFTER REPORT TRIGGER");
    RETURN (FALSE);
END;
 

Caso sua empresa precise desenvolver relatórios customizados para o Oracle E-Business Suite, os dois pontos citados acima devem ser considerados. Considere a alternativa de utilização de nossa fábrica de software. Utilizamos processo padrão, baseado em um método de previsibilidade aberto e de fácil entendimento. Adequamos, com agilidade, o processo às necessidades da empresa cliente, com previsibilidade, comprometimento de prazos e custos e garantia da qualidade.

Sandro Marques

Sandro Marques - Consultor em ERP para a Divisão Latino América da Grupo Alba Spectrum Technology (http://www.albaspectrum.com).