SAP ABAP - Présentation d'Open SQL

Open SQL indique le sous-ensemble d'instructions ABAP qui permettent un accès direct aux données de la base de données centrale de l'AS ABAP actuel. Les instructions Open SQL mappent la fonctionnalité Data Manipulation Language de SQL dans ABAP qui est prise en charge par tous les systèmes de base de données.

Les instructions d'Open SQL sont converties en SQL spécifique à la base de données dans l'interface Open SQL de l'interface de base de données. Ils sont ensuite transférés vers le système de base de données et exécutés. Les instructions Open SQL peuvent être utilisées pour accéder aux tables de base de données déclarées dans le dictionnaire ABAP. La base de données centrale d'AS ABAP est accessible par défaut et l'accès à d'autres bases de données est également possible via des connexions de base de données secondaires.

Chaque fois que l'une de ces instructions est utilisée dans un programme ABAP, il est important de vérifier si l'action exécutée a réussi. Si l'on essaie d'insérer un enregistrement dans une table de base de données et qu'il n'est pas inséré correctement, il est très important de le savoir afin que l'action appropriée puisse être prise dans le programme. Cela peut être fait en utilisant un champ système qui a déjà été utilisé, à savoir SY-SUBRC. Lorsqu'une instruction est exécutée avec succès, le champ SY-SUBRC contiendra une valeur de 0, donc cela peut être vérifié et on peut continuer avec le programme s'il apparaît.

L'instruction DATA est utilisée pour déclarer une zone de travail. Donnons à cela le nom «wa_customers1». Plutôt que de déclarer un type de données pour cela, plusieurs champs qui composent la table peuvent être déclarés. Le moyen le plus simple de procéder consiste à utiliser l'instruction LIKE.

Instruction INSERT

L'espace de travail wa_customers1 est déclaré ici COMME la table ZCUSTOMERS1, prenant la même structure sans devenir une table elle-même. Cette zone de travail ne peut stocker qu'un seul enregistrement. Une fois déclarée, l'instruction INSERT peut être utilisée pour insérer la zone de travail et l'enregistrement qu'elle contient dans la table. Le code ici se lira comme 'INSÉRER ZCUSTOMERS1 FROM wa_customers1'.

La zone de travail doit être remplie de quelques données. Utilisez les noms de champ de la table ZCUSTOMERS1. Cela peut être fait par navigation vers l'avant, double-cliquant sur le nom de la table dans le code ou en ouvrant une nouvelle session et en utilisant la transaction SE11. Les champs de la table peuvent ensuite être copiés et collés dans l'éditeur ABAP.

Voici l'extrait de code -

DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100006'. 
wa_customers1-name = 'DAVE'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19931017'. 
INSERT ZCUSTOMERS1 FROM wa_customers1.

L'instruction CHECK peut ensuite être utilisée comme suit. Cela signifie que si l'enregistrement est inséré correctement, le système l'indiquera. Sinon, le code SY-SUBRC qui ne sera pas égal à zéro sera affiché. Voici l'extrait de code -

IF SY-SUBRC = 0. 
   WRITE 'Record Inserted Successfully'.  
ELSE. 
   WRITE: 'The return code is ', SY-SUBRC. 
ENDIF.

Vérifiez le programme, enregistrez, activez le code, puis testez-le. La fenêtre de sortie devrait s'afficher comme «Enregistrement inséré avec succès».

Déclaration CLEAR

L'instruction CLEAR permet d'effacer un champ ou une variable pour l'insertion de nouvelles données à sa place, ce qui lui permet d'être réutilisé. L'instruction CLEAR est généralement utilisée dans les programmes et permet aux champs existants d'être utilisés plusieurs fois.

Dans l'extrait de code précédent, la structure de la zone de travail a été remplie avec des données pour créer un nouvel enregistrement à insérer dans la table ZCUSTOMERS1, puis un contrôle de validation est effectué. Si nous voulons insérer un nouvel enregistrement, l'instruction CLEAR doit être utilisée afin qu'elle puisse ensuite être remplie à nouveau avec les nouvelles données.

Déclaration UPDATE

Si vous souhaitez mettre à jour un ou plusieurs enregistrements existants dans une table en même temps, utilisez l'instruction UPDATE. Similaire à l'instruction INSERT, une zone de travail est déclarée, remplie des nouvelles données qui sont ensuite placées dans l'enregistrement pendant l'exécution du programme. L'enregistrement précédemment créé avec l'instruction INSERT sera mis à jour ici. Modifiez simplement le texte stocké dans les champs NAME et TITLE. Ensuite, sur une nouvelle ligne, la même structure que pour l'instruction INSERT est utilisée, et cette fois en utilisant l'instruction UPDATE comme indiqué dans l'extrait de code suivant -

DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100006'. 
wa_customers1-name = 'RICHARD'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19931017'. 
UPDATE ZCUSTOMERS1 FROM wa_customers1.

Lorsque l'instruction UPDATE est exécutée, vous pouvez afficher le navigateur de données dans le dictionnaire ABAP pour voir que l'enregistrement a été mis à jour avec succès.

Instruction MODIFY

L'instruction MODIFY peut être considérée comme une combinaison des instructions INSERT et UPDATE. Il peut être utilisé pour insérer un nouvel enregistrement ou pour modifier un enregistrement existant. Il suit une syntaxe similaire aux deux instructions précédentes pour modifier l'enregistrement à partir des données entrées dans une zone de travail.

Lorsque cette instruction est exécutée, les champs clés impliqués seront comparés à ceux de la table. Si un enregistrement avec ces valeurs de champ clé existe déjà, il sera mis à jour. Sinon, un nouvel enregistrement sera créé.

Voici l'extrait de code pour créer un nouvel enregistrement -

CLEAR wa_customers1.
 
DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100007'. 
wa_customers1-name = 'RALPH'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19910921'. 
MODIFY ZCUSTOMERS1 FROM wa_customers1.

Dans cet exemple, l'instruction CLEAR est utilisée pour qu'une nouvelle entrée puisse être placée dans la zone de travail, puis le client (numéro) 100007 est ajouté. Puisqu'il s'agit d'une nouvelle valeur de champ clé unique, un nouvel enregistrement sera inséré et un autre contrôle de validation sera exécuté.

Lorsque cela est exécuté et que les données sont visualisées dans le navigateur de données, un nouvel enregistrement aura été créé pour le numéro de client 100007 (RALPH).

Le code ci-dessus produit la sortie suivante (contenu de la table) -