3 maneiras de como mostrar uma mensagem com base no retorno de uma função de banco no Form Personalization

função de banco no Form Personalization - post

Já precisou criar uma personalização que dependesse do retorno de uma função de banco no Form Personalization?

Essa é uma dúvida recorrente que recebo, inclusive esse artigo foi escrito com base em e-mails trocados com um dos meus alunos do treinamento Oracle EBS Personalization.

Como não canso de falar aqui no blog, o Form Personalization é muito poderoso. Com ele podemos criar soluções incríveis sem precisar mexer no código-fonte dos programas.

Ele é muito completo e oferece várias possibilidades, mas quando precisamos criar uma personalização com base no retorno de uma função (ou parâmetro de retorno de uma procedure), a solução pode não parecer tão clara.

Nesse artigo vou demonstrar como isso é possível utilizando como exemplo o recurso de mensagens.

Então se você quer saber como personalizar com base no retorno de uma função de banco no Form Personalization, acompanhe esse artigo para saber mais sobre os seguintes pontos:

  • Entendendo o problema
  • Solução #01: Uma regra para cada retorno
  • Solução #02: DECODE
  • Solução #03: CASE

Entendendo o problema

Com o Form Personalization é possível chamar uma procedure pela Builtin “Execute a Procedure”:

função de banco no Form Personalization - builtin procedure

Nela você pode escrever um bloco PL/SQL e chamar uma procedure normalmente.

O problema é quando essa procedure tem parâmetros de retorno (OUT) e você precisa saber o conteúdo desse retorno.

Infelizmente não é possível obter esse retorno por essa builtin, mas podemos contornar esse impasse de outras maneiras.

Como mencionado no começo do artigo, vou utilizar como exemplo para demonstração o recurso de mensagens do personalization, mas você pode utilizar o mesmo conceito e adaptar para as suas necessidades.

Mostrarei mensagens específicas de acordo com o retorno de uma função de banco no Form Personalization, nesse caso não é possível a utilização de procedures.

Solução #01: Uma regra para cada retorno

Como as personalizações são ativadas de acordo com as condições definidas, faremos a verificação do retorno da função na caixa de condições:

funcao-de-banco-no-form-personalization-condition

Essa caixa é muito versátil e permite condições desde as mais simples até as mais complexas, faremos o uso de SQL.

O cenário será o seguinte:

Será chamada uma função onde será passado um parâmetro com o número de uma ordem de venda do OM, a função verificará se o pedido está registrado ou não:

  • Quando a função retornar ‘Y', uma mensagem será mostrada avisando que o pedido está registrado
  • Quando retornar ‘N', uma mensagem avisando que o pedido não está registrado

Para essa solução, será necessário criar duas personalizações:

  • Uma para mostrar a mensagem quando o retorno for ‘Y'
  • Outra quando for ‘N'

O código da função é esse:

CREATE OR REPLACE FUNCTION check_order_f (p_header_id NUMBER) RETURN VARCHAR2 IS
  l_booked_flag oe_order_headers_all.booked_flag%TYPE;
  --
BEGIN
  SELECT OOH.BOOKED_FLAG
  INTO   l_booked_flag
  FROM   oe_order_headers_all OOH
  WHERE  OOH.header_id = p_header_id;
  --
  RETURN l_booked_flag;
  --
END check_order_f;

#01. Primeira personalização: Retorno ‘Y'

Código da condição:

função de banco no Form Personalization - condition code

É feita a validação se o retorno é igual a ‘Y'.

Então para esse cenário, mostramos a mensagem correspondente:

função de banco no Form Personalization - message yes

#02. Segunda personalização: Retorno ‘N'

Código da condição:

função de banco no Form Personalization - message no

Agora a validação verifica se o retorno é igual a ‘N'.

Mensagem é a mesma, exceto pelo “não”:

função de banco no Form Personalization - message no

E está feito.

Criamos uma solução que mostra mensagens com base no retorno de uma função de banco no Form Personalization.

Solução #02: DECODE

Na segunda solução vamos deixar nossa personalização mais inteligente e, consequentemente, reduzir as configurações necessárias.

Será necessário criar apenas uma personalização e sem a necessidade de condições.

A inteligência ficará toda no texto da mensagem, utilizando o comando DECODE:

função de banco no Form Personalization - message decode

Essa caixa é muito flexível e também permite o uso de SQL, assim é possível utilizar o comando DECODE para validar o retorno e mostrar o texto correspondente.

Solução #03: CASE

A terceira solução utiliza o mesmo conceito da anterior, só difere pelo uso do comando CASE (Essa foi a solução sugerida e adotada pelo aluno, eu tinha fornecido os dois exemplos anteriores).

função de banco no Form Personalization - message case

Dependendo da situação, eu até prefiro o CASE no lugar do DECODE.

Conclusão sobre a personalização baseada numa função de banco no Form Personalization

Mais uma vez, o Form Personalization mostrando seu potencial.

Como sempre digo, quando conhecemos apenas o básico de uma ferramenta, fica difícil visualizarmos soluções interessantes para nossos problemas.

Esse foi um dos motivos que me motivaram a criar o curso Oracle EBS Personalization, percebi que muitos profissionais tinham dificuldades com alguns gaps que poderiam ser resolvidos facilmente com personalização.

Se ainda não baixou o eBook gratuito “11 incríveis usos de Oracle EBS Personalization que você precisa conhecer”, fica a dica.