Como utilizar a API FND_GLOBAL

FND_GLOBAL

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.

FND_LOAD

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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *