Who Columns: Conheça as colunas de controle das tabelas do Oracle EBS

Who Columns

As chamadas “Who Columns” são colunas específicas existentes nas tabelas nativas do Oracle EBS para controle e rastreamento de alterações.

Essas colunas são preenchidas quando novos registros são inseridos ou quando registros existentes são atualizados.

São as informações dessas colunas que aparecem no EBS quando pedimos pra ver o histórico de alterações de algum registro, seja Form ou tela OAF/WEB (Inclusive eu mostro nesse artigo aqui como ver esse histórico em telas OAF/WEB).

É uma boa prática adicionar essas colunas em tabelas customizadas também, assim conseguimos identificar a origem de novos registros e/ou alterações em registros existentes.

Fica aqui comigo pois nesse artigo vou abordar:

  • Colunas padrões para rastreamento
  • Colunas para rastreamento específicas para programas concorrentes
  • Como preencher essas colunas

Vamos lá?

Colunas Padrões Para Rastreamento

As colunas básicas que toda tabela deve ter são:

LAST_UPDATED_BY

Nessa coluna fica armazenado o ID do último usuário que efetuou uma alteração no registro.

LAST_UPDATE_DATE

Aqui é armazenada a data da última alteração no registro.

LAST_UPDATE_LOGIN

No LAST_UPDATE_LOGIN é armazenado o ID do último login onde o registro foi modificado.

CREATED_BY

Nessa coluna é a identificação de quem criou o registro, ou seja, fica armazenado o ID do usuário responsável pelo registro.

CREATION_DATE

E por último, a coluna CREATION_DATE armazena a data em que o registro foi criado.

Essas foram as colunas essenciais, que podem ser atualizadas por um Form, por um concurrent, por um script, etc.

Colunas para rastreamento em programas concorrentes

Para concurrents temos algumas colunas adicionais que vão ajudar ainda mais no rastreamento.

Essas colunas devem permitir NULO, já que só serão preenchidas de dentro de programas concorrentes.

REQUEST_ID

O ID da solicitação do programa concorrente, ou seja, o ID de execução.

PROGRAM_APPLICATION_ID

O ID da aplicação associada ao programa concorrente.

PROGRAM_ID

O ID do programa concorrente.

PROGRAM_UPDATE_DATE

A data de atualização no programa concorrente.

Como preencher essas colunas

Agora vamos falar do preenchimento dessas colunas, que pode variar conforme a origem do programa que está modificando o registro.

Em um Form

Para o form temos uma rotina pronta, basta chamar a API FND_STANDARD.SET_WHO nas triggers PRE-INSERT e PRE-UPDATE que ela se encarregará de preencher todos os campos necessários.

Caso deseje preencher manualmente, é só utilizar a API FND_PROFILE para obter os valores.

Em um Objeto de Banco de Dados

Para preencher essas colunas em objetos de banco (ex: package, procedure, concurrent, etc), buscamos as informações com a ajuda da API FND_GLOBAL:

LAST_UPDATED_BY: FND_GLOBAL.USER_ID

LAST_UPDATE_DATE: Aqui é só preencher com SYSDATE

LAST_UPDATE_LOGIN: FND_GLOBAL.LOGIN_ID

CREATED_BY: FND_GLOBAL.USER_ID

CREATION_DATE: Também é só preencher com SYSDATE

E para os concurrents:

REQUEST_ID: FND_GLOBAL.CONC_REQUEST_ID

PROGRAM_APPLICATION_ID: FND_GLOBAL.PROG_APPL_ID

PROGRAM_ID: FND_GLOBAL.CONC_PROGRAM_ID

PROGRAM_UPDATE_DATE: Aqui é só preencher com SYSDATE

Conclusão

Um bom desenvolvedor deve sempre ter a atenção e o cuidado de preencher essas colunas, sempre que possível.

Analistas e consultores também devem exigir a utilização correta dessas colunas para facilitar o rastreamento de alterações futuramente.

Bom, seria isso sobre as “Who Columns”, espero que tenha sido útil.

Qualquer dúvida é só deixar um comentário abaixo.

E se gostou desse artigo, não esqueça de compartilhar com a sua rede de contatos.

Deixe um comentário

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