Introduction
Application des techniques et concepts de base
Utilisation des classes locales
Lecture des données de la base de données
Utilisation d'objets de données structurés
Utilisation de tables internes complexes
Implémentation de mises à jour de base de données à l'aide d'objets de gestion
Description du modèle de programmation d'applications ABAP RESTful

Exploration de l'architecture

Objectives

After completing this lesson, you will be able to:
  • Créez une table de base de données.
  • Générez les objets de développement pour un service IU OData.

Création du modèle de données

Exemple de modèle de données

Le modèle de données dans cet exemple est très simple - il existe une table de base de données unique qui contient les détails des liaisons aériennes - une compagnie aérienne, un numéro de vol, des détails sur l'aéroport de départ et la destination.

Remarque

La figure n'inclut pas les zones supplémentaires dont l'exécution a besoin pour gérer le contrôle d'exécution simultanée. Nous les examinerons un peu plus tard.

Création d'une table de base de données

Voyons d'abord comment créer une table de base de données.

Définition d'attributs de table de base

Nous allons maintenant apprendre à définir des attributs de table de base.

Ajout d'une définition de table

La vidéo suivante montre comment ajouter une définition de table.

Si vous n'utilisez pas un type de dictionnaire ABAP intégré pour spécifier le type d'une colonne de table, utilisez plutôt un élément de données. Les éléments de données sont des objets du Dictionnaire ABAP qui définissent le type d'une zone individuelle comme l'UUID ou le code de compagnie aérienne. Les éléments de données contiennent non seulement une description de type technique, mais aussi des informations sémantiques telles que les descripteurs de zone. Si vous utilisez des éléments de données pour définir les types des colonnes de table, le système peut utiliser automatiquement les descripteurs de zone dans l'interface utilisateur générée.

L'élément de données de la figure Élément de données décrit la zone Compagnie aérienne. Il s'agit d'une zone de caractères de longueur 3 ; le système utilise automatiquement les descripteurs de zone dans l'interface utilisateur générée.

Pour créer un nouvel élément de données, sélectionnez FichierNouveauAutre, puis saisissez élément de données dans la zone Texte de filtre. Saisissez un nom de package et le nom de l'élément de données, puis cliquez sur Suivant. Sélectionnez un ordre de transport et cliquez sur Terminer.

Vous devez ensuite indiquer un type de données pour l'élément de données. Il doit s'agir d'un domaine. L'exemple réutilise le domaine existant /DMO/CITY. Notez que les deux éléments de données utilisent le même domaine. Cela signifie que si quelqu'un modifie ultérieurement la longueur du domaine, la modification s'applique à tous les éléments de données qui l'utilisent.

Enfin, vous saisissez des descripteurs de zone courts, moyens et longs, ainsi qu'un descripteur utilisé pour les intitulés de colonne. Par la suite, lorsque vous générerez l'application d'éléments Fiori, le système utilisera ces textes automatiquement.

Chaque table que vous définissez doit avoir une clé primaire. Il s'agit d'une séquence de zones au début de la description de la table qui identifie chaque entrée dans la table de manière unique.

La première zone de la table (et donc la première zone de la définition de clé) doit être la zone de mandant et elle doit avoir le type de données ABAP.CLnt. En outre, il est pratique pour notre exemple d'utiliser un UUID pour la clé unique. Si vous utilisez l'élément de données sysuuid_x16 pour indiquer le type de cette zone, vous pouvez laisser l'exécution affecter automatiquement l'UUID lorsque vous créez un nouvel enregistrement.

Pour des raisons de traçabilité, il est recommandé de stocker certaines informations administratives avec les données, telles que l'utilisateur qui a créé ou modifié les données et les horodatages pour la création et la dernière modification. La table de base de données que vous créez doit contenir les zones affichées dans la figure.

Remarque

Ces zones sont obligatoires pour le générateur que nous utiliserons ultérieurement. Pour que ce générateur fonctionne correctement, les zones doivent également être définies avec les types de données répertoriés ici.

Les zones fieldslocal_last_changed_at et last_changed_at ne sont pas uniquement des zones administratives. Dans le modèle de programmation d'applications ABAP RESTful, ils sont également utilisés pour le contrôle d'exécution simultanée.

Comme les applications RESTful sont sans état, la cohérence des données ne peut pas être assurée par des blocages exclusifs seuls. Le modèle de programmation d'applications ABAP RESTful utilise un mélange de blocages exclusifs et d'ETags pour éviter les incohérences de données. Un ETag est un champ qui modifie sa valeur lorsqu'un ensemble de données est mis à jour. En comparant la valeur de la zone ETag, la structure peut s'assurer qu'un ensemble de données n'a pas été modifié depuis sa dernière lecture. Les horodatages de la dernière modification rendent les zones ETag parfaites.

Lorsque vous activez une table de base de données dans ADT, le système crée la table physique correspondante dans la base de données. Une fois cette opération effectuée, vous pourrez générer automatiquement les objets supplémentaires dont vous avez besoin pour votre application.

Comment créer des éléments de données

Comment créer une table de base de données

Copier une table de base de données

Dans les exercices de ce chapitre, vous allez créer un service IU OData. Ce service d'interface utilisateur constitue la base d'une application qui vous permet de modifier le prix des vols. Tout d'abord, vous créez un package dédié pour les objets de développement requis. Vous copiez ensuite une table de base de données et vous la renseignez avec des données.

Modèle :

  • /LRN/S4D400_APT (table de base de données)
  • /LRN/CL_S4D400_APT_COPY (classe globale)

Solution :

  • /LRN/S4D400AFLGT (table de base de données)
  • /LRN/CL_S4D400_APS_COPY (classe globale)

Tâche 1: Créer un sous-package

Créez un sous-package sous votre propre package ZS4D400_## (## correspondant à votre numéro de groupe).

Le sous-package doit avoir les attributs suivants :

AttributValeur
NomZS4D400_##_RAP, où ## représente votre numéro de groupe
DescriptionObjets pour service IU OData
Ajouter aux packages favorisContrôlé
Package supérieurZS4D400_##, où ## représente votre numéro de groupe

Étapes

  1. Créez un sous-package sous votre propre package ZS4D400_## (où ## représente votre numéro de groupe).

    1. Dans l'explorateur de projets, cliquez avec le bouton droit de la souris sur votre package ABAP ZS4D400_## et sélectionnez Nouveaupackage ABAP.

    2. Saisissez le nom de package ZS4D400_##_RAP, où ## correspond à votre numéro de groupe.

    3. Saisissez la description Objets pour service IU OData.

    4. Cochez la case Ajouter aux packages favoris.

    5. Assurez-vous que la zone Package supérieur contient le nom de votre package existant.

    6. Cliquez sur Next.

    7. Assurez-vous que la composante logicielle est définie sur ZSTUDENTS.

    8. Cliquez sur Next.

    9. Confirmez l'ordre de transport et cliquez sur Terminer.

Tâche 2: Copier table de base de données

Dans le nouveau package, créez une copie de la table de base de données /LRN/S4D400_APT. Nommez la nouvelle table de base de données Z##FLIGHT, ## correspondant à votre numéro de groupe.

Étapes

  1. Copiez la table de base de données /LRN/S4D400_APT dans votre propre package ZS4D400_##_RAP, où ## correspond à votre numéro de groupe.

    1. Ouvrez la définition de la table de base de données /LRN/S4D400_APT.

    2. Liez la vue Explorateur de projets à l'aide de l'éditeur.

    3. Dans la vue Explorateur de projets, cliquez avec le bouton droit de la souris sur la table de base de données /LRN/S4D400_APT pour ouvrir le menu contextuel.

    4. Dans le menu contextuel, sélectionnez Dupliquer....

    5. Saisissez le nom de votre package ZS4D400_##_RAP dans la zone Package. Dans la zone Nom, saisissez Z##VOL, où ## représente votre numéro de groupe.

    6. Cliquez sur Next.

    7. Confirmez l'ordre de transport et cliquez sur Terminer.

  2. Activez la définition de la table de base de données.

    1. Appuyez sur Ctrl + F3 pour activer l'objet de développement.

Tâche 3: Remplir la table de base de données

Dans votre package ZS4D400_##, créez une copie de la classe globale /LRN/CL_S4D400_APT_COPY (nom proposé : ZCL_##_COPY). Dans cette copie, remplacez la valeur de la constante table_name par le nom de votre propre table de base de données. Exécutez ensuite la classe en tant qu'application de console. Cela renseigne votre table de base de données avec des données.

Étapes

  1. Copiez la classe /LRN/CL_S4D400_APT_COPY dans une classe de votre propre package ZS4D400_##.

    1. Ouvrez le code source de la classe globale /LRN/CL_S4D400_APT_COPY.

    2. Si nécessaire, liez la vue Explorateur de projets à l'éditeur.

    3. Dans la vue Explorateur de projets, cliquez avec le bouton droit de la souris sur la classe /LRN/CL_S4D400_APT_COPY pour ouvrir le menu contextuel.

    4. Dans le menu contextuel, sélectionnez Dupliquer....

    5. Saisissez ZS4D400_## dans la zone Package. Dans la zone Nom, saisissez ZCL_##_COPY, où ## représente votre numéro de groupe.

    6. Cliquez sur Next.

    7. Confirmez l'ordre de transport et cliquez sur Terminer.

  2. Dans la copie, adaptez le code source de la méthode IF_OO_ADT_CLASSRUN~MAIN. Remplacez la valeur de la constante nom_table par le nom de votre propre table de base de données.

    1. Assurez-vous que la valeur de la constante est égale au nom de votre table de base de données.

  3. Activez et exécutez la classe en tant qu'application de console.

    1. Appuyez sur Ctrl + F3 pour activer la classe.

    2. Appuyez sur F9 pour exécuter la classe.

    3. Vérifiez la vue Console. La dernière édition doit être : <...> a été renseigné avec des données. Si la sortie lit <...> n'est pas une table du bon type. Assurez-vous qu'une table de base de données de ce nom existe, qu'elle est active et qu'elle est une copie exacte de la table modèle.

Le générateur d'objets

Génération d'objets supplémentaires

Nous venons de définir une table de base de données pour contenir nos données, mais l'application que nous allons créer a besoin de plus d'objets que cette seule table. Nous pouvons générer ces objets à l'aide d'un assistant dans ADT.

Les objets générés contiennent toutes les informations nécessaires pour fournir à une application de travail une fonctionnalité de création, lecture, mise à jour et suppression. Par la suite, nous ajusterons et étendrons également certains de ces objets pour modifier l'apparence de l'interface utilisateur et implémenter certains contrôles et calculs.

Regardez cette vidéo pour savoir comment générer des objets supplémentaires.

Comment générer les objets supplémentaires

Aperçu du service IU OData

Publier et prévisualiser le service

À l'aide de votre table de base de données et du générateur d'objets, vous pouvez générer tous les objets dont vous avez besoin pour obtenir une application Éléments Fiori fonctionnelle. La seule étape manuelle consiste à publier le service.

Vous devez publier le service avant de pouvoir tester l'application. Pour ce faire, ouvrez la liaison de service et sélectionnez Publier. Une fois que vous avez effectué cette opération, l'entité que vous avez créée (dans ce cas, Connexion) apparaît dans la liste des entités. Marquez-le et sélectionnez Aperçu pour tester l'application.

Tester l'application

Lorsque vous sélectionnez Aperçu, une fenêtre de navigateur s'ouvre et vous pouvez créer une nouvelle liaison aérienne. Cependant, l'application n'implémente aucun contrôle autre que les contrôles de type (par exemple, seuls les chiffres sont autorisés dans la zone Numéro de vol).

Générer et afficher un aperçu d'un service IU OData

Dans cet exercice, vous générez les objets du Repository pour un service IU OData et affichez un aperçu du service en tant qu'application SAP Fiori.

Modèle :

  • Aucune

Solution :

  • Les objets de développement générés dans le package /LRN/S4D400_EXERCISE_RAP.

Remarque

Notez que l'implémentation du générateur utilisé peut changer. Par conséquent, les objets de développement générés dans l'exercice peuvent différer de ceux de la solution.

Conditions requises

Vous avez terminé l'exercice précédent. Vous avez créé la table de base de données Z##FLIGHT (où ## est votre numéro de groupe) et la table de base de données contient des données.

Tâche 1: Utilisation du générateur

Utilisez le générateur ABAP RESTful Application Programming ModelOData UI Service pour générer les objets de développement requis dans votre sous-package ZS4D400_##_RAP. Pour ce faire, indiquez les valeurs following​suivantes dans l'assistant :

ZoneValeur
Objet référencégénéralZ##VOL
Nomgénéral du projet<vide>
Préfixe des artefactsgénéraux<vide>
Suffixe des artefactsgénéraux<vide>
  
Nom de l'entité CDSdu modèle de données d'objet de gestionZR_##Vol
Alias d'entité CDSde modèle de donnéesd'objet de gestionVol
Classe d'implémentationdu comportement du comportement de l'objet de gestionZBP_R_##VOL
Comportementd'objet de gestion- Version préliminaire - Nom de tableZ##FLIGHT_D
  
Nom d'entité CDSd'entité d'extrapolation de service de projection de serviceZC_##Vol
Projection de service :classe d'implémentation de comportement de comportement de projection de serviceZBP_C_##VOL
  
Définition de service de gestionDéfinition deservice Nom de définition de serviceZUI_##FLIGHT_O4
Nom dela liaison deservice de service de gestionZUI_##FLIGHT_O4
Type deliaison de liaison de servicede gestionOData V4 - IU

Étapes

  1. Lancez le générateur d'objets pour votre table de base de données Z##FLIGHT (où ## est votre numéro de groupe).

    1. Dans l'explorateur de projets, développez le chemin d'accès suivant : Packages favorisZS4D400_##ZS4D400_##_Tablesde base de donnéesdu dictionnaire RAP (où ## est votre numéro de groupe). Vous pouvez également ouvrir la définition de la table de base de données Z##FLIGHT et, si nécessaire, lier la vue Explorateur de projets à l'éditeur.

    2. Dans la vue Explorateur de projets, cliquez avec le bouton droit de la souris sur la table de base de données Z##FLIGHT pour ouvrir le menu contextuel.

    3. Dans le menu contextuel, sélectionnez Générer objets ABAP Repository....

  2. Dans la boîte de dialogue, sélectionnez le générateur.

    1. Dans la partie gauche de la boîte de dialogue, sélectionnez ABAP RESTful Application Programming ModelOData UI Service.

    2. Cliquez sur Suivant pour passer à l'étape suivante.

  3. Assurez-vous que les objets de développement sont créés dans votre sous-package ZS4D400_##_RAP.

    1. Lorsque la fenêtre affiche Entrer package en haut, assurez-vous que la zone Package contient ZS4D400_##_RAP.

    2. Cliquez sur Suivant pour passer à l'étape suivante.

  4. Configurez le générateur avec les données de la table.

    Attention

    Ne sélectionnez pas Suivant avant d'avoir saisi toutes les données.
    1. Sélectionnez les éléments sur le côté gauche de la boîte de dialogue un par un et renseignez les zones correspondantes dans le volet de droite. Les valeurs requises ​​sont répertoriées dans le tableau ci-dessus.

    2. Après avoir saisi toutes les données, cliquez sur Suivant.

  5. Vérifiez les objets du Repository qui vont être générés et générez-les.

    Remarque

    Soyez patient. La génération des objets prend un certain temps. À la fin du processus de génération, une boîte de dialogue s'affiche pour vous demander si vous voulez ouvrir la liaison de service générée dans l'éditeur. Confirmez cette boîte de dialogue en cliquant sur Ouvrir.
    1. Vérifiez la liste des objets du Repository affichés.

    2. Lorsque vous êtes sûr d'avoir saisi tous les noms correctement, sélectionnez Suivant.

    3. Confirmez l'ordre de transport et cliquez sur Terminer.

    4. Confirmez la boîte de dialogue à la fin du processus de génération en sélectionnant Ouvrir.

  6. Analysez la sortie du générateur dans l'explorateur de projets.

    1. Dans l'explorateur de projets, placez le curseur sur votre sous-package ZS4D400_##_RAP et appuyez sur F5 pour recharger le contenu du package.

    2. Développez tous les sous-nœuds du package pour afficher les noms des objets de développement générés.

Tâche 2: Aperçu de l'application

Publiez le service IU OData et affichez un aperçu du résultat en tant qu'application SAP Fiori.

Étapes

  1. Publiez le point d'extrémité du service local.

    Remarque

    La publication du service peut prendre un certain temps.
    1. Si ce n'est pas déjà fait, ouvrez la liaison de service ZUI_##FLIGHT_O4 générée.

    2. Si la liaison de service est inactive, appuyez sur Ctrl + F3 pour l'activer.

    3. Pour publier le service, sélectionnez Publier au centre de l'éditeur.

  2. Affichez un aperçu du service IU OData en tant qu'application SAP Fiori.

    1. Dans la section Détails de la version de service à droite, sélectionnez Vol, puis Aperçu....

      Résultat

      Une fenêtre de navigateur s'ouvre avec une application SAP Fiori. Si vous y êtes invité, connectez-vous à l'application avec votre utilisateur système ABAP.
  3. Affichez la liste des vols.

    1. Sélectionnez Lancer pour afficher la liste des vols stockés dans votre table de base de données Z##FLIGHT.

  4. Pour l'un des vols, accédez à la vue détaillée.

    1. Sélectionnez l'une des entrées de liste pour accéder à la page d'objet avec les détails de ce vol.

  5. Pour ce vol, passez en mode de modification.

    1. Sélectionnez Traiter.

  6. Saisissez un texte dans la zone Prix du vol, par exemple un.

  7. Saisissez une valeur négative pour le prix du vol.