Ouvrez SQL & SQL natif dans SAP ABAP

Table des matières:

Anonim
Le but de ce didacticiel n'est pas de vous apprendre les concepts de SQL ou de base de données, mais de vous présenter la diversité SQL dans ABAP

Dans le langage de programmation ABAP / 4, deux types de SQL sont utilisés.

  1. SQL NATIF
  2. OUVRIR SQL.
Open SQL vous permet d'accéder aux tables de base de données déclarées dans le dictionnaire ABAP quelle que soit la plate-forme de base de données utilisée par le système R / 3.

Le SQL natif vous permet d'utiliser des instructions SQL spécifiques à une base de données dans un programme ABAP / 4. Cela signifie que vous pouvez utiliser des tables de base de données qui ne sont pas administrées par le dictionnaire ABAP, et donc intégrer des données qui ne font pas partie du système R / 3.

Open SQL se compose d'un ensemble d'instructions ABAP qui effectuent des opérations sur la base de données centrale du système R / 3. Les résultats des opérations et les éventuels messages d'erreur sont indépendants du système de base de données utilisé. Open SQL fournit ainsi une syntaxe et une sémantique uniformes pour tous les systèmes de base de données pris en charge par SAP. Les programmes ABAP qui n'utilisent que des instructions Open SQL fonctionneront dans n'importe quel système R / 3, quel que soit le système de base de données utilisé. Les instructions Open SQL ne peuvent fonctionner qu'avec des tables de base de données qui ont été créées dans le dictionnaire ABAP.

Commandes Open SQL de base

  • SÉLECTIONNER
  • INSÉRER
  • METTRE À JOUR
  • MODIFIER
  • EFFACER
  • OUVRIR LE CURSEUR,? FETCH,? FERMER LE CURSEUR
Exemple
TABLES SBOOK.CURSEUR DE TYPE DATA C,WA COMME SBOOK.OUVRIR LE CURSEUR C POUR SELECT * FROM SBOOK WHERE CARRID = 'LH'ET CONNID = '0400'ET FLDATE = '19950228'COMMANDEZ PAR CLÉ PRIMAIRE.FAIS.RECHERCHEZ LE CURSEUR SUIVANT C DANS WA.SI SY-SUBRC <> 0.FERMER LE CURSEUR C.SORTIR.FIN SI.ÉCRIRE: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-INVOICE.ENDDO.

Sortie de la liste des passagers du vol Lufthansa 0400 le 28-02.1995:

Ouvrir les codes de retour SQL

Toutes les instructions Open SQL remplissent les deux champs système suivants avec des codes de retour.

SY-SUBRC

Après chaque instruction Open SQL, le champ système SY-SUBRC contient la valeur 0 si l'opération a réussi, une valeur différente de 0 dans le cas contraire.

SY-DBCNT

Après une instruction Open SQL, le champ système SY-DBCNT contient le nombre de lignes de base de données traitées.

SQL natif

Comme déjà mentionné, Native SQL vous permet d'utiliser des instructions SQL spécifiques à une base de données dans un programme ABAP.

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

Syntaxe

EXEC SQL [PERFORMING 
].ENDEXEC.
Il n'y a pas de période après les instructions Native SQL. De plus, l'utilisation de virgules inversées (") ou d'un astérisque (*) au début d'une ligne dans une instruction SQL native n'introduit pas de commentaire comme dans la syntaxe ABAP normale. Vous devez savoir si les noms de table et de champ sont à la casse. sensible dans votre base de données choisie.

Dans les instructions Native SQL, les données sont transportées entre la table de base de données et le programme ABAP à l'aide de variables hôtes. Ceux-ci sont déclarés dans le programme ABAP et précédés dans l'instruction Native SQL par un signe deux-points (:). Vous pouvez utiliser des structures élémentaires comme variables hôtes. Exceptionnellement, les structures d'une clause INTO sont traitées comme si tous leurs champs étaient répertoriés individuellement.

Comme dans Open SQL, après l'instruction ENDEXEC, SY-DBCNT contient le nombre de lignes traitées. Dans presque tous les cas, SY-SUBRC contient la valeur 0 après l'instruction ENDEXEC.

Open SQL - Règles de performances

Pour améliorer les performances du SQL et à son tour du programme ABAP, il convient de respecter les règles suivantes:

Gardez le jeu de résultats petit

  • Utilisation de la clause where
  • Si un seul enregistrement est requis dans la base de données, utilisez SELECT SINGLE autant que possible.
Minimisez la quantité de données transférées
  • Restreindre le nombre de lignes
  • Si seuls certains champs sont requis dans une table, utilisez l'instruction SELECT INTO…
  • Restreindre le nombre de colonnes
  • Utiliser les fonctions d'agrégation
Minimisez le nombre de transferts de données
  • Évitez les boucles de sélection imbriquées
  • Une autre option consiste à utiliser l'instruction SELECT… FOR ALL ENTRIES. Cette instruction peut souvent être beaucoup plus efficace que l'exécution d'un grand nombre d'instructions SELECT ou SELECT SINGLE pendant une boucle d'une table interne.
  • Utiliser les vues de dictionnaire
  • Utiliser des jointures dans la clause FROM
  • Utiliser des sous-requêtes dans la clause where
Minimiser la surcharge de recherche
  • Utiliser les champs d'index dans la clause where
  • Lors de l'accès aux bases de données, assurez-vous toujours que l'index correct est utilisé.
Réduisez la charge de la base de données
  • Tampon
  • Bases de données logiques
  • Évitez les accès répétés à la base de données
Utilisation de tables internes pour mettre en mémoire tampon des enregistrements
  • Pour éviter d'exécuter le même SELECT plusieurs fois (et donc avoir des sélections en double), une table interne de type HASHED peut être utilisée pour améliorer les performances.