SAP ABAP - Présentation de Native SQL

Le terme «SQL natif» fait référence à toutes les instructions qui peuvent être transférées statiquement vers l'interface Native SQL de l'interface de base de données. Les instructions SQL natives n'entrent pas dans la portée du langage d'ABAP et ne suivent pas la syntaxe ABAP. ABAP contient simplement des instructions pour isoler les sections de programme dans lesquelles les instructions Native SQL peuvent être répertoriées.

En SQL natif, des instructions SQL spécifiques à la base de données peuvent être utilisées. Celles-ci sont transférées telles quelles de l'interface SQL native vers un système de base de données et exécutées. La portée complète du langage SQL de la base de données concernée peut être utilisée et les tables de base de données adressées n'ont pas à être déclarées dans le dictionnaire ABAP. Il existe également un petit ensemble d'instructions SQL natives spécifiques à SAP qui sont gérées d'une manière spécifique par l'interface SQL native.

Pour utiliser une instruction Native SQL, vous devez la précéder de l'instruction SQL EXEC et la terminer par l'instruction ENDEXEC.

Voici la syntaxe -

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

Ces instructions définissent une zone dans un programme ABAP dans laquelle une ou plusieurs instructions Native SQL peuvent être répertoriées. Les instructions saisies sont transmises à l'interface Native SQL puis traitées comme suit -

  • Toutes les instructions SQL valides pour l'interface programme du système de base de données adressé peuvent être répertoriées entre EXEC et ENDEXEC, en particulier les instructions DDL (langage de définition de données).

  • Ces instructions SQL sont transmises de l'interface Native SQL au système de base de données en grande partie inchangées. Les règles de syntaxe sont spécifiées par le système de base de données, en particulier les règles de respect de la casse pour les objets de base de données.

  • Si la syntaxe autorise un séparateur entre les instructions individuelles, vous pouvez inclure de nombreuses instructions SQL natives entre EXEC et ENDEXEC.

  • Des éléments de langage Native SQL spécifiques à SAP peuvent être spécifiés entre EXEC et ENDEXEC. Ces instructions ne sont pas transmises directement de l'interface Native SQL à la base de données, mais elles sont transformées de manière appropriée.

Exemple

SPFLI est une table SAP standard utilisée pour stocker les informations sur les horaires de vol. Ceci est disponible dans les systèmes SAP R / 3 en fonction de la version et du niveau de version. Vous pouvez afficher ces informations lorsque vous saisissez le nom de table SPFLI dans la transaction SAP appropriée, telle que SE11 ou SE80. Vous pouvez également afficher les données contenues dans cette table de base de données en utilisant ces deux transactions.

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.

Le code ci-dessus produit la sortie suivante -

0400  FRANKFURT  NEW YORK 
2402  FRANKFURT  BERLIN 
0402  FRANKFURT  NEW YORK