Pergunta 2:
O que é Open SQL vs Native SQL?
Pergunta 3:
O que faz uma declaração EXEC SQL em ABAP? Qual é a desvantagem de usá-la?
Se você está desenvolvendo um aplicativo empresarial, sempre haverá um banco de dados no backend. Portanto, o SAP R/3 também utiliza um banco de dados. É um banco de dados especial? Não. A SAP utiliza bancos de dados padrão como Oracle, IBM DB2, MS SQL Server, etc. Se você tem um banco de dados no backend, é inevitável que você precise usar SQL. A SAP utiliza SQL para selecionar, inserir e atualizar dados dentro do banco de dados. No entanto, o problema é que se você usar diferentes bancos de dados, seu código, seja em ABAP ou não, pode variar em SQL. Nessa situação, embora os programadores tendam a usar SQL padrão que seja válido para todos os bancos de dados, às vezes surgem problemas ao mudar de um banco de dados para outro. O que estou tentando dizer é que a SAP inventou uma nova maneira de resolver esse problema:
Open SQL
Open SQL
Open SQL consiste em um conjunto de declarações ABAP que realizam operações no banco de dados central no Sistema R/3. Os resultados das operações e quaisquer mensagens de erro são independentes do sistema de banco de dados em uso. Portanto, o Open SQL fornece uma sintaxe e semântica uniforme para todos os sistemas de banco de dados suportados pela SAP. Os programas ABAP que usam apenas declarações Open SQL funcionarão em qualquer Sistema SAP R/3, independentemente do sistema de banco de dados em uso. As declarações Open SQL podem trabalhar com tabelas de banco de dados que foram criadas no Dicionário ABAP.
O método é realmente simples, quando um programador escreve um programa ABAP com declarações Open SQL, os programas kernel da SAP convertem as declarações Open SQL em declarações SQL reais / nativas para o banco de dados em uso. Assim, você escreve uma vez, executa para todos os bancos de dados e até mesmo para todos os sistemas operacionais. Assim como no Java "
Escreva uma vez. Execute em qualquer lugar
". Pense no Java, até o Java utiliza o mesmo princípio que é
Máquina Virtual Java
que se assemelha aos programas kernel da SAP. Certo? :smile: Podemos dizer que a SAP fez "
Escreva uma vez. Execute em qualquer lugar
" antes do Java?
O Open SQL contém as seguintes palavras-chave:
-
SELECT
- Lê dados de tabelas de banco de dados.
-
INSERT
- Adiciona linhas a tabelas de banco de dados.
-
UPDATE
- Altera o conteúdo das linhas das tabelas de banco de dados.
-
MODIFY
- Insere linhas em tabelas de banco de dados ou altera o conteúdo das linhas existentes.
-
DELETE
- Exclui linhas de tabelas de banco de dados.
-
OPEN CURSOR, FETCH, CLOSE CURSOR
- Lê linhas de tabelas de banco de dados usando o cursor.
-
Todas as declarações Open SQL preenchem os seguintes dois campos do sistema com códigos de retorno:
-
SY-SUBRC
Após cada declaração Open SQL, o campo do sistema SY-SUBRC contém 0 se a operação foi bem-sucedida, um valor diferente de 0 se não.
-
SY-DBCNT
Após uma declaração OPEN SQL, o campo do sistema SY-DBCNT contém o número de linhas de banco de dados processadas.
Native SQL
Native SQL é o SQL real para o banco de dados em uso. Isso significa que, além do OPEN SQL, se necessário, você pode usar o SQL nativo para bancos de dados. O Native SQL permite que você use declarações SQL específicas do banco de dados em um programa ABAP. Isso significa que você pode utilizar tabelas de banco de dados que não são gerenciadas pelo Dicionário ABAP e integrar dados que não fazem parte do Sistema R/3.
Em geral, um programa ABAP que contém declarações SQL específicas do banco de dados não será executado em diferentes sistemas de banco de dados. Se seu programa será utilizado em mais de uma plataforma de banco de dados, use apenas declarações Open SQL.
Nunca utilizei Native SQL em minhas experiências de mais de 6 anos em programação ABAP. Eu tentei, pode ter certeza de que funciona. Todos os programas ABAP no Sistema SAP R/3 foram escritos com Open SQL. Mas a