O objeto FND_MESSAGE fornece uma série de APIs para que você possa trabalhar com o dicionário de mensagens do Oracle EBS em programas PL/SQL.
Podemos utilizar essas APIs também para mostrar mensagens em forms e store procedures.
Elas fornecem uma grande variedade de formatos e opções de mensagens, podemos mostrar mensagens de depuração, mensagens com perguntas para o usuário tomar uma ação, mensagens com texto dinâmico, etc.
Se você quer aprender mais sobre o FND_MESSAGE, continue lendo esse artigo. Você vai saber mais sobre:
- Dicionário de mensagens do EBS
- FND_MESSAGE.CLEAR
- FND_MESSAGE.DEBUG
- FND_MESSAGE.ERASE
- FND_MESSAGE.ERROR
- FND_MESSAGE.GET
- FND_MESSAGE.HINT
- FND_MESSAGE.QUESTION
- FND_MESSAGE.RETRIEVE
- FND_MESSAGE.SET_NAME
- FND_MESSAGE.SET_STRING
- FND_MESSAGE.SET_TOKEN
- FND_MESSAGE.SHOW
- FND_MESSAGE.WARN
Dicionário de mensagens do EBS
No EBS nós podemos ter mensagens previamente cadastradas para utilizar em nossos programas (Saiba como cadastrar mensagens no Oracle EBS).
Elas podem ser cadastradas em vários idiomas e utilizando tokens, para que possamos mostrar conteúdo dinâmico.
Os tokens são representados por uma palavra que contém na frente o símbolo “&”:
Então depois em nosso programa basta informar o token e o texto que desejamos colocar no lugar dele para mostrar na mensagem.
Para utilizar essas mensagens é necessário primeiramente colocá-las numa “pilha”, como veremos logo abaixo.
Agora que o conceito de mensagens foi apresentado, vamos conhecer as APIs.
FND_MESSAGE.CLEAR
A procedure FND_MESSAGE.CLEAR está disponível na biblioteca FNDSQF e também no banco de dados.
Ela não possui parâmetros e serve para limpar a pilha de mensagens:
FND_MESSAGE.CLEAR; |
FND_MESSAGE.DEBUG
A procedure FND_MESSAGE.DEBUG está disponível na biblioteca FNDSQF.
Ela tem apenas o propósito de mostrar mensagens para depuração, não sendo visível ao usuário final.
Essa procedure não tem a necessidade de cadastrar a mensagem previamente na tela mensagens, basta passar o texto desejado diretamente como parâmetro:
FND_MESSAGE.DEBUG('Mensagem de depuração'); |
FND_MESSAGE.ERASE
A procedure FND_MESSAGE.ERASE está disponível na biblioteca FNDSQF.
Ela serve para limpar o texto na barra de status do form.
Não tem parâmetros:
FND_MESSAGE.ERASE; |
FND_MESSAGE.ERROR
A procedure FND_MESSAGE.ERROR está disponível na biblioteca FNDSQF.
Ela mostra uma mensagem de erro numa janela modal do form.
Essa procedure busca a mensagem na pilha de mensagens, mostra para o usuário e depois limpa todas as mensagens da pilha.
FND_MESSAGE.SET_STRING('Mensagem de erro'); FND_MESSAGE.ERROR; |
FND_MESSAGE.GET
A procedure FND_MESSAGE.GET está disponível na biblioteca FNDSQF e no banco de dados.
Ela retorna a mensagem da pilha de mensagens e depois limpa essa mensagem da pilha:
l_return := FND_MESSAGE.GET; |
FND_MESSAGE.HINT
A procedure FND_MESSAGE.HINT está disponível na biblioteca FNDSQF.
Ela mostra uma mensagem na barra de status do Forms.
Como não tem parâmetros, a mensagem deve ser colocada previamente na pilha:
FND_MESSAGE.SET_STRING('Mensagem que aparece na barra de status'); FND_MESSAGE.HINT; |
FND_MESSAGE.QUESTION
A procedure FND_MESSAGE.QUESTION está disponível na biblioteca FNDSQF.
Ela mostra uma mensagem com até três botões numa janela modal do Forms.
Essa procedure recupera a mensagem da pilha e depois limpa essa mensagem.
Ela retorna um número de acordo com o botão pressionado.
Além de poder utilizar uma mensagem cadastrada para o texto da mensagem, você também pode utilizar uma mensagem para personalizar o texto de cada botão.
Segue abaixo a estrutura da FND_MESSAGE.QUESTION:
( button1 IN VARCHAR2 DEFAULT 'YES' , button2 IN VARCHAR2 DEFAULT 'NO' , button3 IN VARCHAR2 DEFAULT 'CANCEL' , DEFAULT_btn IN NUMBER DEFAULT 1 , cancel_btn IN NUMBER DEFAULT 3 , icon IN VARCHAR2 DEFAULT 'question' ) RETURN NUMBER; |
Exemplo:
-- Mostra uma mensagem com 2 botões FND_MESSAGE.SET_NAME('FND', 'REALLY'); FND_MESSAGE.QUESTION('YES', 'NO', NULL); |
FND_MESSAGE.RETRIEVE
A procedure FND_MESSAGE.RETRIEVE está disponível na biblioteca FNDSQF.
Essa procedure não tem parâmetros.
Ela retorna a mensagem do servidor do banco de dados, traduz, substitui os tokens e coloca a mensagem na pilha.
FND_MESSAGE.RETRIEVE; |
FND_MESSAGE.SET_NAME
A procedure FND_MESSAGE.SET_NAME está disponível na biblioteca FNDSQF e no banco de dados.
Ela retorna a mensagem do dicionário e coloca na pilha de mensagens.
Os parâmetros são:
- application: É o short name da aplicação associada à mensagem cadastrada, ex.: FND, INV, etc
- name: É o nome da mensagem cadastrada na tela de mensagens
FND_MESSAGE.SET_NAME('FND', 'MESSAGE_NAME'); |
FND_MESSAGE.SET_STRING
A procedure FND_MESSAGE.STRING está disponível na biblioteca FNDSQF.
Ela pega um texto que você passa como parâmetro e coloca diretamente na pilha de mensagens.
Útil quando você não acha necessário ter uma mensagem cadastrada e só quer mostrar uma mensagem de texto simples:
FND_MESSAGE.SET_STRING('Mensagem de teste simples'); |
FND_MESSAGE.SET_TOKEN
A procedure FND_MESSAGE.TOKEN está disponível na biblioteca FNDSQF e no banco de dados.
Essa procedure é a responsável por fazer a troca do token pelo texto desejado.
Parâmetros:
- token: É o token utilizado no cadastrado da mensagem. Aqui não é para utilizar o “&”
- value: O texto que será colocado no lugar do token ou o nome de uma mensagem cadastrada
- translate: Se passar TRUE, você indica que está passando uma mensagem como troca e ela será traduzida para o idioma corrente
FND_MESSAGE.SET_TOKEN('TOKEN_NAME', 'Novo Texto'); |
FND_MESSAGE.SHOW
A procedure FND_MESSAGE.SHOW está disponível na biblioteca FNDSQF.
Ela mostra uma mensagem informativa retornada da pilha de mensagens, depois apaga essa mensagem:
FND_MESSAGE.SHOW; |
FND_MESSAGE.WARN
A procedure FND_MESSAGE.WARN está disponível na biblioteca FNDSQF.
Ela mostra uma mensagem de advertência e permite que o usuário aceite ou cancele a operação.
Essa procedure retorna TRUE se o usuário aceitou a mensagem (Clicou em OK) ou FALSE se cancelou.
Ela retorna a mensagem da pilha, mostra e apaga essa mensagem em seguida.
FND_MESSAGE.WARN; |
Conclusão
Algumas procedures podem parecer confusas em um primeiro momento, mas depois que você aprende bem elas verá que é bem simples de usar.
Elas são bem poderosas, o bom uso delas levará seus programas para um próximo nível de qualidade.
Se ficou com alguma dúvida é só deixar um comentário aqui logo abaixo que responderei com o maior prazer.
Caso tenha gostado desse artigo, não esqueça de compartilhar com a sua rede de contatos.