SAP ABAP - Visão geral do SQL nativo

O termo 'SQL nativo' refere-se a todas as instruções que podem ser transferidas estaticamente para a interface SQL nativa da interface do banco de dados. As instruções SQL nativas não se enquadram no escopo de linguagem do ABAP e não seguem a sintaxe ABAP. ABAP contém apenas instruções para isolar seções do programa nas quais instruções SQL nativas podem ser listadas.

No SQL nativo, principalmente instruções SQL específicas do banco de dados podem ser usadas. Eles são transferidos inalterados da interface SQL nativa para um sistema de banco de dados e executados. O escopo completo da linguagem SQL do banco de dados relevante pode ser usado e as tabelas de banco de dados endereçadas não precisam ser declaradas no dicionário ABAP. Há também um pequeno conjunto de instruções SQL nativas específicas do SAP que são tratadas de maneira específica pela interface SQL nativa.

Para usar uma instrução SQL nativa, você deve precedê-la com a instrução EXEC SQL e terminar com a instrução ENDEXEC.

A seguir está a sintaxe -

EXEC SQL PERFORMING <form>.  
   <Native SQL statement> 
ENDEXEC.

Essas instruções definem uma área em um programa ABAP onde uma ou mais instruções SQL nativas podem ser listadas. As instruções inseridas são passadas para a interface SQL nativa e, em seguida, processadas da seguinte forma -

  • Todas as instruções SQL que são válidas para a interface do programa do sistema de banco de dados endereçado podem ser listadas entre EXEC e ENDEXEC, em particular as instruções DDL (linguagem de definição de dados).

  • Essas instruções SQL são passadas da interface SQL nativa para o sistema de banco de dados praticamente inalterado. As regras de sintaxe são especificadas pelo sistema de banco de dados, especialmente as regras de distinção entre maiúsculas e minúsculas para objetos de banco de dados.

  • Se a sintaxe permitir um separador entre as instruções individuais, você pode incluir muitas instruções SQL nativas entre EXEC e ENDEXEC.

  • Elementos de linguagem Native SQL específicos do SAP podem ser especificados entre EXEC e ENDEXEC. Essas instruções não são transmitidas diretamente da interface SQL nativa para o banco de dados, mas são transformadas de maneira adequada.

Exemplo

SPFLI é uma tabela SAP padrão usada para armazenar informações de programação de voos. Isso está disponível nos sistemas R / 3 SAP, dependendo da versão e do nível de liberação. Você pode visualizar essas informações ao inserir o nome da tabela SPFLI na transação SAP relevante, como SE11 ou SE80. Você também pode visualizar os dados contidos nesta tabela de banco de dados usando essas duas transações.

REPORT ZDEMONATIVE_SQL. 
DATA: BEGIN OF wa,  
      connid  TYPE SPFLI-connid,
      cityfrom TYPE SPFLI-cityfrom,
      cityto  TYPE SPFLI-cityto,  
      END OF wa. 
	
DATA c1 TYPE SPFLI-carrid VALUE 'LH'. 
EXEC SQL PERFORMING loop_output.
   SELECT connid, cityfrom, cityto  
   INTO :wa  
   FROM SPFLI  
   WHERE carrid = :c1 
ENDEXEC. 

FORM loop_output.  
   WRITE: / wa-connid, wa-cityfrom, wa-cityto. 
ENDFORM.

O código acima produz a seguinte saída -

0400  FRANKFURT  NEW YORK 
2402  FRANKFURT  BERLIN 
0402  FRANKFURT  NEW YORK