A API FND_GLOBAL é uma package “server-side” armazenada no banco de dados muito utilizada por profissionais Oracle EBS.
Suas principais utilidades são retornar o conteúdo de globais de sistema e inicializar o contexto de segurança numa sessão de banco de dados, assim é possível simular uma sessão EBS diretamente no banco de dados.
Essas variáveis são muito utilizadas para auditoria e controle, assim é possível identificar com facilidade os responsáveis por determinadas ações ou transações.
Nesse artigo vou abordar:
- FND_GLOBAL.USER_ID
- FND_GLOBAL.LOGIN
- FND_GLOBAL.RESP_ID
- FND_GLOBAL.RESP_APPL_ID
- FND_GLOBAL.CONC_LOGIN_ID
- FND_GLOBAL.PROG_APPL_ID
- FND_GLOBAL.CONC_PROGRAM_ID
- FND_GLOBAL.CONC_REQUEST_ID
- FND_GLOBAL.ORG_ID
- FND_GLOBAL.APPS_INITIALIZE
Se você já trabalha com EBS ou pretende trabalhar, é fundamental conhecer a API FND_GLOBAL.
Então acompanhe esse artigo até o fim que vou detalhar cada componente e fornecer alguns exemplos.
FND_GLOBAL.USER_ID
Quando você precisar retornar o ID do usuário corrente, basta usar a FND_GLOBAL.USER_ID.
É uma função que retorna o conteúdo do campo USER_ID da tabela FND_USER do usuário que está conectado na sessão atual:
SELECT FND_GLOBAL.USER_ID FROM DUAL; |
Um exemplo de uso para esse ID é para preencher o campo CREATED_BY e LAST_UPDATED_BY das tabelas de controle do EBS (WHO Columns), assim conseguimos identificar quem criou e/ou atualizou determinado registro.
FND_GLOBAL.LOGIN_ID
Toda vez que você se conecta no EBS, um ID único de login é criado.
Assim como o USER_ID, o LOGIN_ID também pode ser utilizado para controle e auditoria, ou seja, seu conteúdo é armazenado no campo LAST_UPDATE_LOGIN das tabelas e assim conseguimos identificar o ID do Login que criou e/ou atualizou determinado registro.
SELECT FND_GLOBAL.LOGIN_ID FROM DUAL; |
FND_GLOBAL.RESP_ID
A função RESP_ID retorna o ID da responsabilidade corrente.
SELECT FND_GLOBAL.RESP_ID FROM DUAL; |
FND_GLOBAL.RESP_APPL_ID
Cada responsabilidade no e-Business Suite está associada a uma aplicação, por exemplo: Order Management, Receivables, Inventory, etc.
Então quando você precisa retornar o ID da aplicação para a responsabilidade corrente, basta usar a RESP_APPL_ID.
SELECT FND_GLOBAL.RESP_APPL_ID FROM DUAL; |
FND_GLOBAL.CONC_LOGIN_ID
O CONC_LOGIN_ID tem basicamente a mesma função do LOGIN_ID, só que para concurrents.
Se você precisar obter o LOGIN_ID associado ao concurrent que está sendo executado, deve utilizar o CONC_LOGIN_ID.
SELECT FND_GLOBAL.CONC_LOGIN_ID FROM DUAL; |
FND_GLOBAL.PROG_APPL_ID
Assim como as responsabilidades, os concurrents também estão associados a uma aplicação.
Essa é a finalidade do PROG_APPL_ID, retornar o ID da aplicação de um programa concorrente.
SELECT FND_GLOBAL.PROG_APPL_ID FROM DUAL; |
FND_GLOBAL.CONC_PROGRAM_ID
Quando precisar do ID de um programa concorrente, é só chamar a função CONC_PROGRAM_ID.
SELECT FND_GLOBAL.CONC_PROGRAM_ID FROM DUAL; |
FND_GLOBAL.CONC_REQUEST_ID
Quando um concurrent é executado, é gerado um REQUEST_ID, ou seja, um ID de solicitação.
Para recuperar esse valor, basta chamar a CONC_REQUEST_ID.
SELECT FND_GLOBAL.CONC_REQUEST_ID FROM DUAL; |
FND_GLOBAL.ORG_ID
Essa função é para retornar o ID da organização corrente (empresa, não é a organização de inventário), também chamada de unidade operacional.
SELECT FND_GLOBAL.ORG_ID FROM DUAL; |
FND_GLOBAL.APPS_INITIALIZE
Até agora falei apenas sobre funções, ou seja, objetos que retornam algum valor.
A APPS_INITIALIZE serve para inicializar uma sessão no banco de dados como se fosse uma sessão dentro do EBS.
Assim podemos, por exemplo, testar algum programa do EBS diretamente do SQL.
Por isso que essa procedure precisa de três parâmetros “chave” para poder simular uma sessão no EBS, que são:
- USER_ID: O ID do usuário
- RESP_ID: O ID da responsabilidade
- RESP_APPL_ID: O ID da aplicação da responsabilidade
Vamos ao exemplo:
Digamos que você precise simular uma sessão para o seu usuário, dentro da responsabilidade OM_GERENTE (nome fictício) que está associada à aplicação Order Management.
A chamada ficaria assim (Valores apenas de exemplo):
BEGIN FND_GLOBAL.APPS_INITIALIZE ( user_id => 101 , resp_id => 123 , resp_appl_id => 234 ); END; |
Esses valores você consegue utilizando algumas das funções acima, respectivamente:
- FND_GLOBAL.USER_ID
- FND_GLOBAL.RESP_ID
- FND_GLOBAL.RESP_APPL_ID
Ou ainda, diretamente pelo item de menu Examinar da área de Diagnósticos:
Conclusão
Segundo o developer guide da Oracle, como a FND_GLOBAL é “server-side”, ela deve ser utilizada somente em código PL/SQL de objetos de banco de dados, como stored procedures.
Para obter esses mesmos valores dentro de um Form, é recomendado utilizar a FND_PROFILE.
Ainda existem outros objetos da package FND_GLOBAL, mas esses são os mais utilizados e já ajudarão bastante.
Caso sinta falta de algum em específico, não deixe de colocar nos comentários aqui logo abaixo.
Se gostou desse artigo e considerou útil, não deixe de compartilhar com seus amigos.