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

Analyse d'un objet de gestion

Objective

After completing this lesson, you will be able to analysez un objet de gestion.

Objets de gestion

Dans le modèle de programmation d'applications ABAP RESTful, un objet de gestion définit une entité particulière, telle qu'une agence de voyages. Sa définition comporte deux parties : une ou plusieurs vues CDS, qui définissent la structure de l'objet ou, en d'autres termes, les zones qu'elle contient, et une définition de comportement, qui décrit ce que vous pouvez faire avec l'objet de gestion.

La définition du comportement indique les opérations standard, la création, la mise à jour et la suppression autorisées. Il peut également contenir la définition des validations, des déterminations et des actions. Les validations vérifient que les données sont correctes lorsque vous créez ou mettez à jour un enregistrement. Les déterminations modifient les instances des objets de gestion en fonction des conditions de déclenchement. Les actions sont des opérations non standard que vous utilisez pour fournir un comportement personnalisé spécifique à la logique métier. L'approbation d'une commande d'achat ou l'annulation d'un vol sont des activités que vous implémenteriez en tant qu'action.

L'implémentation de comportement se compose d'une ou de plusieurs classes ABAP. Les validations, déterminations et actions sont implémentées ici. En ce qui concerne les opérations standard, le modèle distingue deux scénarios d'implémentation : dans le scénario d'implémentation non géré, la création, la mise à jour et la suppression sont implémentées dans l'implémentation de comportement. Dans le scénario d'implémentation géré, la durée d'exécution s'en charge.

Les objets de gestion sont couramment utilisés pour fournir la logique transactionnelle pour les applications d'éléments Fiori ou les API Web. Cependant, vous pouvez également y accéder à partir du codage ABAP à l'aide du Entity Manipulation Language (EML). Il s'agit d'un ensemble d'instructions ABAP qui vous permet de créer, lire, mettre à jour et supprimer des données à l'aide d'objets de gestion.

Remarque

EML peut également accéder aux données d'application à partir de l'implémentation de comportement d'un objet de gestion.

Dans ce chapitre, vous allez créer une classe qui utilise un objet de gestion pour modifier les données de l'agence de voyages. L'entité de vue contient la zone clé AgencyID et diverses autres zones contenant des informations sur l'agence de voyages.

Définition et implémentation de comportement

Il existe deux parties au comportement d'un objet de gestion : la définition du comportement et l'implémentation du comportement. La définition de comportement contient des informations sur ce que l'objet de gestion peut faire, tandis que l'implémentation de comportement contient le codage réel que le système exécute.

L'implémentation de comportement est une classe ABAP. Vous déclarez la classe dans la définition de comportement dans l'instruction managed implementation in class <class> unique. Le codage réel de l'implémentation de comportement est contenu dans une classe locale dans la classe globale que vous indiquez.

Une définition de comportement est un composant essentiel d'un objet de gestion. Il décrit les opérations standard autorisées, par exemple la création, la mise à jour, la suppression. Il définit également les contrôles (validations) qui sont effectués lorsque vous créez ou modifiez des données.

L'exemple ici est la définition de comportement pour l'agence de voyages. Au début de la définition, vous pouvez voir le nom de la vue CDS que nous venons d'examiner et qu'un alias est défini pour celle-ci. Cela est important car il s'agit du nom d'alias utilisé pour adresser l'entité avec EML.

La définition de comportement lie également l'entité CDS à la table de base de données dans laquelle les données sont stockées. Dans ce cas, l'objet de gestion utilise deux tables : une pour les données actives et une pour les versions préliminaires (les données sont incomplètes et n'ont pas été contrôlées). Il existe également des informations pertinentes pour le blocage des données, les contrôles des autorisations et le contrôle d'accès simultané. Nous n'allons pas examiner ces informations en profondeur - il vous suffit de savoir que la durée d'exécution peut s'occuper de ces problèmes. Vous pouvez également générer des entités CDS et des définitions de comportement basées sur la définition d'une table de base de données et, dans ce cas, le blocage, les contrôles des autorisations et les contrôles d'exécution simultanée sont traités automatiquement.

La classe globale de l'implémentation de comportement (également appelée pool de comportements) n'est qu'une définition de classe vide avec l'option spéciale FOR BEHAVIOR OF suivie du nom de la définition de comportement. L'implémentation réelle de la définition de comportement est une classe locale dans la définition de classe globale. Vous accédez à la classe en cliquant sur l'onglet Types locaux.

L'implémentation de comportement contient du code spécifique à l'objet de gestion, par exemple, l'implémentation pour les validations, les déterminations et les actions. Le fait qu'il contienne également du code pour les opérations standard (créer, mettre à jour, supprimer et bloquer) dépend des détails de la définition du comportement. L'implémentation de comportement pour notre objet de gestion ne contient pas de code pour les opérations standard. En effet, l'objet de gestion utilise le type d'implémentation géré dans lequel la durée d'exécution traite les opérations standard.

Une validation est un contrôle que la durée d'exécution effectue lorsque des données sont modifiées. Ici, la validation est toujours effectuée lorsqu'un nouvel enregistrement est créé (déclencheur create;). Si un enregistrement existant est modifié, la validation est effectuée uniquement si la zone Nom a été modifiée (déclencheur field Name;).

Les validations sont définies dans la définition du comportement. Pour chaque validation, il existe une méthode correspondante dans l'implémentation du comportement.

Analyse d'un objet métier

Projections BO et interfaces BO

Dans le modèle de programmation d'applications ABAP RESTful, il existe deux façons importantes d'utiliser un objet de gestion :

  • Via un service de gestion, par exemple un service IU OData pour une application SAP Fiori.
  • À partir du code ABAP, à l'aide du langage de manipulation d'entité (EML).

Bien que cela soit techniquement possible, un objet de gestion ne doit pas être utilisé directement. Au lieu de cela, les consommateurs doivent accéder aux projections d'objets de gestion (projections d'objets de gestion) et aux interfaces d'objet de gestion (interfaces d'objet de gestion) comme suit :

Projection BO

Les services de gestion doivent toujours définir une projection spécifique au service de l'objet de gestion. La projection d'objet de gestion indique le sous-ensemble de données et d'opérations de l'objet de gestion qui est disponible via ce service. Une projection d'objet de gestion peut également contenir la définition et l'implémentation de données et de comportements spécifiques au service.

Remarque

Une projection d'objet de gestion est basée directement sur l'objet de gestion ou sur une interface d'objet de gestion.

Interface BO

Une interface d'objet de gestion fournit un accès stable aux données et aux opérations d'un objet de gestion. Les interfaces BO sont généralement validées pour une utilisation dans d'autres composantes logicielles. Si une interface d'objet de gestion existe pour un objet de gestion donné, le code ABAP utilisant EML doit toujours être utilisé pour accéder à l'interface d'objet de gestion.

Comme un objet de gestion, une projection d'objet de gestion se compose de deux parties : une ou plusieurs entités de vue CDS (définies dans les définitions de données) et une définition de comportement. Il en va de même pour les interfaces BO. Elles se composent également d'une ou plusieurs vues CDS et d'une définition de comportement.

Le moyen le plus simple d'identifier les projections et les interfaces est d'examiner leurs définitions de comportement : Les définitions de comportement pour les projections commencent par le mot-clé projection, les définitions de comportement pour les interfaces commencent par le mot-clé interface.

Les vues CDS des projections BO et les vues CDS des interfaces BO sont toujours des vues de projection CDS. Cela signifie que leurs définitions contiennent l'option as projection on où les définitions de vues CDS ordinaires utilisent as select from. Dans les versions plus récentes, le cas d'utilisation d'une vue de projection est indiqué à l'aide de l'option provider contract après le nom de l'entité de vue comme suit :

  • provider contract transactional_interface pour interfaces BO
  • provider contract transactional_query pour les projections d'objets de gestion

Astuce

Pour les développements SAP, la convention d'appellation suivante s'applique :

  • <namespace>C_<…> pour les projections BO
  • <namespace>I_<…> pour les interfaces BO
  • <namespace>R_<…> pour les définitions d'objet de gestion

Analyse d'un objet de gestion

Dans cet exercice, vous analysez l'interface d'objet de gestion /DMO/I_AgencyTP pour connaître sa structure et les opérations de manipulation de données qu'elle propose.

Tâche 1: Analyser le comportement de l'interface

Analysez la définition du comportement de l'interface d'objet de gestion /DMO/I_AGENCYTP.

Étapes

  1. Ouvrez la définition de comportement /DMO/I_AGENCYTP dans l'éditeur.

  2. Analysez le code source. Ouvrez l'aide du langage ABAP pour obtenir plus d'informations.

Tâche 2: Analyse de la structure de données

Analysez l'entité de vue CDS qui définit la structure de données de l'interface d'objet de gestion. Accédez à sa source de données jusqu'à une entité de vue CDS qui n'est pas une projection.

Étapes

  1. Naviguez vers l'entité de vue CDS /DMO/I_AgencyTP et analysez le code source.

    1. Accédez à l'instruction define behavior for /DMO/I_AgencyTP.

    2. Maintenez la touche Ctrl enfoncée et cliquez avec le bouton gauche de la souris sur /DMO/I_AgencyTP. Vous pouvez également placer le curseur sur /DMO/I_AgencyTP et appuyer sur F3.

  2. Naviguez vers la source de données de l'entité de vue CDS /DMO/I_AgencyTP et analysez le code source.

    1. Accédez au fragment de code as projection on /DMO/R_AgencyTP.

    2. Maintenez la touche Ctrl enfoncée et cliquez avec le bouton gauche de la souris sur /DMO/R_AgencyTP. Vous pouvez également placer le curseur sur /DMO/R_AgencyTP et appuyer sur F3.

Tâche 3: Analyser le comportement de l'objet de gestion

Analysez la définition de comportement de l'objet de gestion /DMO/R_AGENCYTP qui se trouve sous l'interface d'objet de gestion /DMO/I_AGENCYTP.

Étapes

  1. Ouvrez la définition de comportement /DMO/R_AGENCYTP dans l'éditeur.

  2. Analysez le code source. Ouvrez l'aide du langage ABAP pour obtenir plus d'informations.

Tâche 4: Analyse de l'implémentation du comportement

Analysez l'implémentation de comportement de l'objet de gestion /DMO/R_AGENCYTP.

Étapes

  1. Naviguez vers la classe ABAP /DMO/BP_R_AGENCYTP qui contient l'implémentation de comportement de l'objet de gestion /DMO/R_AGENCYTP.

    1. Accédez à l'instruction managed implementation in class /dmo/bp_r_agencytp unique;.

    2. Maintenez la touche Ctrl enfoncée et cliquez avec le bouton gauche de la souris sur /dmo/bp_r_agencytp. Vous pouvez également placer le curseur sur /dmo/bp_r_agencytp et appuyer sur F3.

  2. Accédez à la classe locale lhc_agence et analysez la définition.

    1. Accédez à l'onglet Types locaux. Vous pouvez également développer le nœud racine /DMO/BP_R_AGENCYTP dans la vue Structure et sélectionner LHC_AGENCY.