quinta-feira, 8 de setembro de 2011

Tabelas Temporárias no Banco de Dados Oracle


DEFINIÇÃO
Uma tabela temporária é uma tabela com vida útil de uma sessão ou transação. Ela está vazia quando a sessão ou transação começa e descarta os dados ao fim da sessão ou transação. Uma tabela temporária é associada à transação. Isto significa que ao término da transação os dados da tabela são perdidos, porém sua descrição permanece gravada no banco de dados mesmo após a mudança de sessão.

Nesta solução, o que é temporário é o armazenamento dos dados. Com este tipo de tabela não temos necessidade de remover os dados ao término da transação. Podem ser muito úteis na geração de dados de trabalho temporários. A seguir serão mostrados dois exemplos: 
O primeiro(Listagem 1) de uma tabela temporária que é associada à transação e o segundo (Listagem 2), de uma tabela temporária que é associada à sessão.


SQL> create global temporary table TEMP_PROD
2 (cod_prod number(5),
3 desc_prod varchar2(30),
4 dat_cadas date);
Table created.
SQL> insert into TEMP_PROD
2 values (1,'Mesa',sysdate);
1 row created.
SQL> select * from TEMP_PROD;
COD_PROD DESC_PROD DAT_CADAS
---------- ------------------------------ ---------
1 Mesa 18-MAR-05

SQL> commit;
Commit complete.

SQL> select * from TEMP_PROD;
no rows selected

SQL> desc TEMP_PROD;
Name Null? Type
------------------------------- -------- ----
COD_PROD NUMBER(5)
DESC_PROD VARCHAR2(30)
DAT_CADAS DATE
SQL>
Listagem 1. Tabela temporária por transação

Neste primeiro exemplo foi criada uma tabela temporária associada à transação. Isto significa que ao término da transação (commit ou rollback) os dados da tabela são perdidos. No exemplo, utilizamos o comando commit para finalizar a transação. Note que após executar o comando commit, o select seguinte não retorna nenhum registro, porém a estrutura da tabela permanece gravada no banco de dados mesmo após a mudança de sessão.

SQL> create global temporary table TEMP_PROD
2 (cod_prod number(5),
3 desc_prod varchar2(30),
4 dat_cadas date) on commit preserve rows;
Table created.
SQL> insert into TEMP_PROD
2 values (100,'Computador',sysdate);
1 row created.

SQL> select * from TEMP_PROD;
COD_PROD DESC_PROD DAT_CADAS
---------- ------------------------------ ---------
100 Computador 18-MAR-05
SQL> commit;
Commit complete.

SQL> select * from TEMP_PROD;
COD_PROD DESC_PROD DAT_CADAS
---------- ------------------------------ ---------
100 Computador 18-MAR-05
SQL> connect dados@data1w
Enter password: *****
Connected.

SQL> select * from TEMP_PROD;
no rows selected
SQL> desc TEMP_PROD;
Name Null? Type
------------------------------- -------- ----
COD_PROD NUMBER(5)
DESC_PROD VARCHAR2(30)
DAT_CADAS DATE


Listagem 2. 
Tabela temporária por sessão

Neste segundo exemplo, a tabela foi criada com a indicação de que após o término da transação os dados deverão ser mantidos, ou seja, a tabela é temporária, porém seus dados ficam disponíveis por toda a sessão independente de transação. Quando ocorre o fim da sessão (disconnect e connect), os dados são removidos (ou liberados). Note que no exemplo acima, após executar o comando connect, os dados da tabela foram removidos, porém a estrutura da tabela permanece gravada no banco de dados mesmo após a mudança de sessão.

CARACTERÍSTICAS
As tabelas temporárias possuem as seguintes características:
• Sua definição é visível para todas as sessões, mas seus dados são visíveis e acessíveis somente pela sessão que os inclui.

• O comando LOCK não tem efeito em tabelas temporárias uma vez que cada sessão tem acesso exclusivo a seus dados.

• Um comando TRUNCATE trunca somente os dados referentes à sessão do usuário.
• Os dados são criados na tablespace temporária do usuário.

• Operações de Rollback to Savepoint são suportadas, mas os dados não são recuperáveis caso ocorra um “crash” porque as modificações não são logadas (gravadas no REDO LOG).

• Podemos criar índices para uma tabela temporária usando o comando CREATE INDEX. Estes índices também são temporários.

• Podemos criar triggers para tabelas temporárias assim como views que utilizem simultaneamente tabelas temporárias e permanentes.

• Os utilitários IMPORT e EXPORT podem exportar e importar a definição de uma tabela temporária, porém nenhum dado é exportado.

• Da mesma forma, podemos replicar a definição de uma tabela temporária, mas não podemos replicar seus dados.

• Só podemos executar operações de DDL (ALTER TABLE, DROP TABLE, CREATE INDEX, etc.) para a tabela temporária se não houver nenhuma tabela fazendo acesso a ela.

• Uma tabela temporária associada à transação é acessível por uma determinada transação e suas transações filha. Porém, uma tabela temporária associada à transação não é acessível por duas transações simultâneas na mesma sessão, apesar de poder ser usada por transações em diferentes sessões.

• Se uma transação do usuário faz um INSERT em uma tabela temporária, então nenhuma de suas transações filhas pode usar a tabela temporária após isto.

• Se uma transação filha faz um INSERT em uma tabela temporária, ao fim da transação filha, o dado associado com a tabela temporária é removido. Após isto, tanto a transação do usuário quanto qualquer outra transação podem fazer acesso à tabela temporária.

Conclusões
Vimos neste artigo que o uso da tabelas temporárias é muito interessante, o uso deste mecanismo por transação ou sessão deverá ser analisado em cada caso. Isto pode evitar o problema de se manter tabelas temporárias com volumes grandes armazenados no banco de dados sem real necessidade.

Referências 
http://www.oracle.com.br– site da Oracle
http://metalink.oracle.com– Site da Oracle de pesquisa técnica.

segunda-feira, 23 de maio de 2011

código de transação SNRO SAP - Criar e manter faixas de número de ABAP

A SAP SNRO código de transação permite criar e manter faixas de número para você programas ABAP. Abaixo mostra-lhe os passos necessários para criar um intervalo de números. Em ordem para acessar o próximo número na faixa de dentro de seu código ABAP simplesmente chamar a função módulo NUMBER_GET_NEXT com os detalhes relevantes. 

Passo 1 - SAP transação intervalo de números 
Execute SNRO Tcode e digite um nome para o seu novo número de série (ou seja, ZNRANGE) 


Passo 2 - objeto detalhes da gama de números 
Pressione o botão Criar e preencha o intervalo da tela objeto número de detalhes, agora pressione salvar. Leia a mensagem pop-up e clique em sim se feliz com o método selecionado de buffering. 


Número de intervalos reais 3 - Etapa 
Agora pressione o botão 'Número intervalos "para manter os intervalos associados a este objeto. 


Passo 4 - Número intervalo de variação (s) 
Pressione o botão Alterar intervalos (lápis) para criar um novo intervalo e manter qualquer existentes 


Passo 5 - Dê intervalo de variação número 
Pressione o botão intervalo de + para adicionar um novo número de série para o seu objeto. 


Preencha os detalhes adequados, tais como o de e para o número, pressione o botão de inserção (+) para adicionar o intervalo para o objeto de intervalo de números 

Passo 6 - Criado intervalo 
O intervalo de variação número agora deve ter sido adicionado. Pressione salvar, ler a mensagem de informação e, em seguida, pressione o sinal verde. Sua gama de números foi agora criado. 


Use a função módulo NUMBER_GET_NEXT em seu código ABAP para obter o próximo número na sua faixa de número


Source: http://www.sapdev.co.uk/tcodes/snro.htm

Usando STVARV para manter Variáveis ​​TVARV para SAP

A SAP tem uma STVARV transação para manter a sua própria seleção de variáveis ​​variantes relatório.
Isto significa que você pode ter chamado variáveis ​​para a sua variantes salvos por isso, se um conjunto de parâmetros comuns ou alterar as opções de seleção você não tem que mudar um monte de variantes que apenas manter a variável chamada no TVARV tabela.
Onde você aplica de seleção de variáveis ​​em variantes?
Sempre que você cria uma variante que você veja a tela com uma matriz de caixas em fileiras ao lado de sua seleção nomes dos campos da tela, se você marcar a caixa na coluna de "L" que corresponde ao campo que deseja usar como padrão e clique no botão "Seleção botão Variáveis ​​"você obterá uma tela onde você pode aplicar o TVARV valores definidos.


Source : http://saptopic.blogspot.com/search?updated-min=2005-01-01T00:00:00-08:00&updated-max=2006-01-01T00:00:00-08:00&max-results=3

quarta-feira, 9 de fevereiro de 2011

SAP ABAP - Como alterar dados através da SE16N quando o &SAP_EDIT não funciona

Em alguns ambientes o "truque" de utilizar '&SAP_EDIT' na SE16N não funciona mais.
Para poder fazer a alteração, aqui vai a solução.

a. Entre na transação SE16N;
b. Informe a tabela e os filtros desejados;
c. Ative o debugging "/h" e execute a pesquisa "F8";
d. Marque as variáveis mostradas na figura a seguir com um "X"  e avance normalmente com "F8";

                               GD-EDIT                X
                               GD-SAPEDIT         X