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 Fichier→Nouveau→Autre, 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.
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 :
| Attribut | Valeur |
|---|
| Nom | ZS4D400_##_RAP, où ## représente votre numéro de groupe |
| Description | Objets pour service IU OData |
| Ajouter aux packages favoris | Contrôlé |
| Package supérieur | ZS4D400_##, où ## représente votre numéro de groupe |
Étapes
Créez un sous-package sous votre propre package ZS4D400_## (où ## représente votre numéro de groupe).
Dans l'explorateur de projets, cliquez avec le bouton droit de la souris sur votre package ABAP ZS4D400_## et sélectionnez Nouveau→package ABAP.
Saisissez le nom de package ZS4D400_##_RAP, où ## correspond à votre numéro de groupe.
Saisissez la description Objets pour service IU OData.
Cochez la case Ajouter aux packages favoris.
Assurez-vous que la zone Package supérieur contient le nom de votre package existant.
Cliquez sur Next.
Assurez-vous que la composante logicielle est définie sur ZSTUDENTS.
Cliquez sur Next.
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
Copiez la table de base de données /LRN/S4D400_APT dans votre propre package ZS4D400_##_RAP, où ## correspond à votre numéro de groupe.
Ouvrez la définition de la table de base de données /LRN/S4D400_APT.
Liez la vue Explorateur de projets à l'aide de l'éditeur.
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.
Dans le menu contextuel, sélectionnez Dupliquer....
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.
Cliquez sur Next.
Confirmez l'ordre de transport et cliquez sur Terminer.
Activez la définition de la table de base de données.
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
Copiez la classe /LRN/CL_S4D400_APT_COPY dans une classe de votre propre package ZS4D400_##.
Ouvrez le code source de la classe globale /LRN/CL_S4D400_APT_COPY.
Si nécessaire, liez la vue Explorateur de projets à l'éditeur.
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.
Dans le menu contextuel, sélectionnez Dupliquer....
Saisissez ZS4D400_## dans la zone Package. Dans la zone Nom, saisissez ZCL_##_COPY, où ## représente votre numéro de groupe.
Cliquez sur Next.
Confirmez l'ordre de transport et cliquez sur Terminer.
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.
Assurez-vous que la valeur de la constante est égale au nom de votre table de base de données.
Activez et exécutez la classe en tant qu'application de console.
Appuyez sur Ctrl + F3 pour activer la classe.
Appuyez sur F9 pour exécuter la classe.
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.
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 Model→OData UI Service pour générer les objets de développement requis dans votre sous-package ZS4D400_##_RAP. Pour ce faire, indiquez les valeurs followingsuivantes dans l'assistant :
| Zone | Valeur |
|---|
| Objet référencé→général | Z##VOL |
| Nom→général du projet | <vide> |
| Préfixe des artefacts→généraux | <vide> |
| Suffixe des artefacts→généraux | <vide> |
| | |
| Nom de l'→entité CDS→du modèle de données d'objet de gestion | ZR_##Vol |
| Alias d'entité CDS→de modèle de données→d'objet de gestion | Vol |
| Classe d'→implémentation→du comportement du comportement de l'objet de gestion | ZBP_R_##VOL |
| Comportement→d'objet de gestion→- Version préliminaire - Nom de table | Z##FLIGHT_D |
| | |
| Nom d'→entité CDS→d'entité d'extrapolation de service de projection de service | ZC_##Vol |
| Projection de service :→classe d→'implémentation de comportement de comportement de projection de service | ZBP_C_##VOL |
| | |
| Définition de service de gestion→Définition de→service Nom de définition de service | ZUI_##FLIGHT_O4 |
| Nom de→la liaison de→service de service de gestion | ZUI_##FLIGHT_O4 |
| Type de→liaison de liaison de service→de gestion | OData V4 - IU |
Étapes
Lancez le générateur d'objets pour votre table de base de données Z##FLIGHT (où ## est votre numéro de groupe).
Dans l'explorateur de projets, développez le chemin d'accès suivant : Packages favoris→ZS4D400_##→ZS4D400_##_Tables→de base de données→du 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.
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.
Dans le menu contextuel, sélectionnez Générer objets ABAP Repository....
Dans la boîte de dialogue, sélectionnez le générateur.
Dans la partie gauche de la boîte de dialogue, sélectionnez ABAP RESTful Application Programming Model→OData UI Service.
Cliquez sur Suivant pour passer à l'étape suivante.
Assurez-vous que les objets de développement sont créés dans votre sous-package ZS4D400_##_RAP.
Lorsque la fenêtre affiche Entrer package en haut, assurez-vous que la zone Package contient ZS4D400_##_RAP.
Cliquez sur Suivant pour passer à l'étape suivante.
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.
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.
Après avoir saisi toutes les données, cliquez sur Suivant.
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.
Vérifiez la liste des objets du Repository affichés.
Lorsque vous êtes sûr d'avoir saisi tous les noms correctement, sélectionnez Suivant.
Confirmez l'ordre de transport et cliquez sur Terminer.
Confirmez la boîte de dialogue à la fin du processus de génération en sélectionnant Ouvrir.
Analysez la sortie du générateur dans l'explorateur de projets.
Dans l'explorateur de projets, placez le curseur sur votre sous-package ZS4D400_##_RAP et appuyez sur F5 pour recharger le contenu du package.
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
Publiez le point d'extrémité du service local.
Remarque
La publication du service peut prendre un certain temps.
Si ce n'est pas déjà fait, ouvrez la liaison de service ZUI_##FLIGHT_O4 générée.
Si la liaison de service est inactive, appuyez sur Ctrl + F3 pour l'activer.
Pour publier le service, sélectionnez Publier au centre de l'éditeur.
Affichez un aperçu du service IU OData en tant qu'application SAP Fiori.
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.
Affichez la liste des vols.
Sélectionnez Lancer pour afficher la liste des vols stockés dans votre table de base de données Z##FLIGHT.
Pour l'un des vols, accédez à la vue détaillée.
Sélectionnez l'une des entrées de liste pour accéder à la page d'objet avec les détails de ce vol.
Pour ce vol, passez en mode de modification.
Sélectionnez Traiter.
Saisissez un texte dans la zone Prix du vol, par exemple un.
Saisissez une valeur négative pour le prix du vol.