SAP – Database – Native SQL – Abap

Publicado: 24 de junho de 2014 em Abap

Instruções Native SQL permitem utilizar comandos SQL específicos de um banco de dados em um programa ABAP. Isso significa que você pode usar instruções de banco de dados que não são administradas pelo dicionário ABAP, e, portanto, programas criados com instruções SQL nativas não podem ser transportados para qualquer plataforma pois utilizam por exemplo PL/SQL para o banco de dados Oracle ou Transact-SQL para o Microsoft SQL Server e assim por diante.

Instruções SQL nativas permitem uma maior flexibilidade de dados em um programa ABAP por não ter restrições e permitem que você utilize quase todos os recursos da linguagem de cada banco de dados, pois instruções SQL nativas ignoram a interface de banco de dados do R/3. Não há registro de tabelas de log, e não há sincronização com o buffer do banco de dados no servidor de aplicativos. Por esta razão, você deve, sempre que possível, usar o Open SQL para alterar as tabelas de banco de dados declaradas no dicionário ABAP. Em particular, as tabelas declaradas no dicionário ABAP que contêm longas colunas com os tipos LCHR ou LAW e só devem ser abordadas usando o Open SQL, já que as colunas contêm, informação extra e de comprimento específico do banco de dados. O SQL nativo não tem essa informação, e pode,  produzir resultados incorretos. Além disso, o SQL nativo não suporta manuseio automático de cliente. Em vez disso, você deve tratar campos do cliente como qualquer outro.

O Native SQL permite que você execute Stored Procedures, cursores e outros tipos de procedimentos comuns do banco de dados, mas existe algumas ressalvas, o SQL nativo funciona sem os dados administrativos sobre as tabelas armazenadas no dicionário ABAP. Consequentemente, não pode realizar todas as verificações de consistência como o Open SQL. Isto coloca um maior grau de responsabilidade sobre os desenvolvedores de aplicativos em como trabalhar com campos ABAP corretamente. Você deve sempre garantir que o tipo de dado ABAP e o tipo da coluna de banco de dados são idênticos.

Native SQL

Native SQL

Em sua sintaxe, o Native SQL deve começar com uma instrução EXEC SQL e terminar com ENDEXEC, a instrução também permite que você utilize uma instrução FORMPERFORM que é executada automaticamente.

Exemplo:

Neste exemplo escrevemos uma simples instrução SQL nativa que utiliza parâmetros para executar uma instrução SQL para o banco de dados SAP MaxDB.

Abap

*&---------------------------------------------------------------------*
*& Report  ZNATIVESQL
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Abap - Native SQL
*&---------------------------------------------------------------------*

REPORT  ZNATIVESQL.

* Cria tabela interna
DATA: BEGIN OF itabela,
        connid   TYPE spfli-connid,
        cityfrom TYPE spfli-cityfrom,
        airpfrom TYPE spfli-airpfrom,
        cityto   TYPE spfli-cityto,
        airpto   TYPE spfli-airpto,
        deptime  TYPE spfli-deptime,
        arrtime  TYPE spfli-arrtime,
      END OF itabela.

* Cria parametro de pesquisa
DATA parametro TYPE spfli-carrid VALUE 'AZ'.

* Executa Native SQL utilizando um procedimento FORM
EXEC SQL PERFORMING dados.
  SELECT connid, cityfrom, airpfrom, cityto, airpto, deptime, arrtime
  INTO   :itabela
  FROM   spfli
  WHERE  carrid = :parametro
ENDEXEC.

* Pula duas linhas
SKIP 2.

* Retorna a quantidade de linhas afetadas
WRITE: / 'A instrução SQL retornou', SY-DBCNT, ' linhas de dados.'.

* Cria procedimento
FORM dados.
  WRITE: / itabela-connid, itabela-cityfrom, itabela-airpfrom,
           itabela-cityto, itabela-airpto, itabela-deptime, itabela-arrtime.
ENDFORM.
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s