quarta-feira, 17 de junho de 2009

Tabelas Temporárias

E ai galera!!!! Beleza???

Utilizem o comando abaixo para criarem tabelas temporárias, ou seja, tabelas para manterem dados de cálculos ou para seleção e que depois podem ser excluídos.

Esse comando já define a tabela como temporária e seus dados são excluídos automaticamente após encerrar a sessão ou a transação.

CREATE GLOBAL TEMPORARY
TABLE nome_tabela ( definicao_campos....)
ON COMMIT DELETE ROWS -- exclui registros ao término da transação
-- ou
ON COMMIT PRESERVE ROWS -- exclui registros ao término da sessão

Vantagens das tabelas temporárias:
* São bem mais rápidas, pois não geram redo-logs e uma série de outras coisas.
* Os dados são vistos apenas pela sessão que inseriu os dados. Exemplo: Se alguém inserir dados dentro dela e comitar,ninguém vai ver o que tem na tabela, apenas será visto pela sessão que inseriu os dados. (cada sessão só enxerga o que é seu).
* Você não precisa se preocupar em apagar as informações, assim que a sessão ou transação (depende de como for criada a tabela temporária) terminar as informações da tabela se apagam automaticamente.


Colaboração Thiago Esmerine (Tripa).


Flw pessoal!!!

quarta-feira, 3 de junho de 2009

Estornar Lançamento Contábil do GL usando PL/SQL

E ai galera, belezeria???

Depois um tempo sem postar nada, estou de volta!!! Hoje vou dar uma dica sobre como fazer um estorno de um lançamento contábil do GL vai PL/SQL.

Em primeiro lugar temos que atualizar o ACCRUAL_REV_FLAG da GL_JE_HEADERS, para fazer isso estou usando uma API conforme abaixo

gl_je_headers_pkg.update_row( x_rowid => l_rowid -- ROWID da linha a ser atualizada
, x_je_header_id => r_gl_je_headers.je_header_id
, x_last_update_date => r_gl_je_headers.last_update_date
, x_last_updated_by => r_gl_je_headers.last_updated_by
, x_ledger_id => r_gl_je_headers.ledger_id
, x_je_category => r_gl_je_headers.je_category
, x_je_source => r_gl_je_headers.je_source
, x_period_name => r_gl_je_headers.period_name
, x_name => r_gl_je_headers.NAME
, x_currency_code => r_gl_je_headers.currency_code
, x_status => r_gl_je_headers.status
, x_date_created => r_gl_je_headers.date_created
, x_accrual_rev_flag => 'Y' --Flag que atualiza os dados para Y confirmando o estorno
, x_multi_bal_seg_flag => r_gl_je_headers.multi_bal_seg_flag
, x_actual_flag => r_gl_je_headers.actual_flag
, x_default_effective_date => r_gl_je_headers.default_effective_date
, x_conversion_flag => r_gl_je_headers.conversion_flag
, x_last_update_login => r_gl_je_headers.last_update_login
, x_encumbrance_type_id => r_gl_je_headers.encumbrance_type_id
, x_budget_version_id => r_gl_je_headers.budget_version_id
, x_balanced_je_flag => r_gl_je_headers.balanced_je_flag
, x_balancing_segment_value => r_gl_je_headers.balancing_segment_value
, x_je_batch_id => r_gl_je_headers.je_batch_id
, x_from_recurring_header_id => r_gl_je_headers.from_recurring_header_id
, x_unique_date => r_gl_je_headers.unique_date
, x_earliest_postable_date => r_gl_je_headers.earliest_postable_date
, x_posted_date => r_gl_je_headers.posted_date
, x_accrual_rev_effective_date => r_gl_je_headers.accrual_rev_effective_date
, x_accrual_rev_period_name => r_gl_je_headers.period_name
, x_accrual_rev_status => r_gl_je_headers.accrual_rev_status
, x_accrual_rev_je_header_id => r_gl_je_headers.accrual_rev_je_header_id
, x_accrual_rev_change_sign_flag => r_gl_je_headers.accrual_rev_change_sign_flag
, x_description => r_gl_je_headers.description
, x_tax_status_code => r_gl_je_headers.tax_status_code
, x_control_total => r_gl_je_headers.control_total
, x_running_total_dr => r_gl_je_headers.running_total_dr
, x_running_total_cr => r_gl_je_headers.running_total_cr
, x_running_total_accounted_dr => r_gl_je_headers.running_total_accounted_dr
, x_running_total_accounted_cr => r_gl_je_headers.running_total_accounted_cr
, x_currency_conversion_rate => r_gl_je_headers.currency_conversion_rate
, x_currency_conversion_type => r_gl_je_headers.currency_conversion_type
, x_currency_conversion_date => r_gl_je_headers.currency_conversion_date
, x_external_reference => r_gl_je_headers.external_reference
, x_attribute1 => r_gl_je_headers.attribute1
, x_attribute2 => r_gl_je_headers.attribute2
, x_attribute3 => r_gl_je_headers.attribute3
, x_attribute4 => r_gl_je_headers.attribute4
, x_attribute5 => r_gl_je_headers.attribute5
, x_attribute6 => r_gl_je_headers.attribute6
, x_attribute7 => r_gl_je_headers.attribute7
, x_attribute8 => r_gl_je_headers.attribute8
, x_attribute9 => r_gl_je_headers.attribute9
, x_attribute10 => r_gl_je_headers.attribute10
, x_context => r_gl_je_headers.CONTEXT
, x_ussgl_transaction_code => r_gl_je_headers.ussgl_transaction_code
, x_context2 => r_gl_je_headers.context2
, x_doc_sequence_id => r_gl_je_headers.doc_sequence_id
, x_doc_sequence_value => r_gl_je_headers.doc_sequence_value
);

COMMIT; --Commit no processamento da API que atualiza os dados do cabeçalho dos lançamentos contábeis

Depois da atualização pego o IMPLICIT_ACCESS_SET_ID do livro contábil, esse valor será usado como parâmetro para submeter o concurrent de estorno.

SELECT implicit_access_set_id
INTO l_implicit_access_set_id
FROM gl_ledgers
WHERE ledger_id = r_gl_je_headers.ledger_id;

O próximo e ultimo passo seria chamar o concurrent que estorna os lançamentos (GLPREV) passando como parametros o IMPLICIT_ACCESS_SET_ID e o ID do lote (JE_HEADER_ID da GL_JE_HEADERS).


l_n_request_id := fnd_request.submit_request( application => 'SQLGL'
, program => 'GLPREV'
, description => 'Estornar Lancamentos'
, argument1 => l_implicit_access_set_id
, argument2 => r_gl_je_headers.je_header_id
);

COMMIT; --Commit no processamento do Concorrente


Bom, aqui isso ta funcionando... os lançamentos estão sendo estornados.


Absss