Atelier technique BAPI
Sommaire INTRODUCTION A L’ORIENTE OBJET SAP ET L’ORIENTE OBJET ACCES AUX BAPIS MODIFICATION ET CREATION DE BAPIS UTILISATION DES BAPIS
Pourquoi les BAPIS Les BAPIs sont intégrées dans le Business Framework, nouvelle architecture conçue dans le but de rendre plus performante l’intégration des différentes composantes SAP ou extérieure Les BAPIs sont issues de la technologie orienté objet : elles apportent modularité et souplesse à l’environnement SAP. Les BAPIs visent Internet en donnant la possibilité d ’interfacer des composantes de gestion SAP ou d’autres éditeurs entres elles. Les BAPIs traitent des processus de gestion et ouvre l’ALE à de nouvelles fonctionnalités.
Pourquoi les BAPIS Des intégrations plus faciles : Intégration d’applications externes à R/3, Autres interfaces frontales à un système R/3, pour satisfaire les besoins d’utilisateurs occasionnels. Par exemple des macros pour applications de bureautique (Microsoft Windows, Excel ou Access). Accès, basé sur le WEB, à un système R/3 par l’intermédiaire d’Internet ou d’Intranet.
Introduction à l’orienté objet Généralités Objet de gestion Type d’objet et Zones Clés Interface et Méthodes
Généralités Présentation des différents objets : Objet de gestion Type d’objet Zones clés et instance Interfaces Méthodes L’objectif et le principal avantage de la technologie orientée objet sont le caractère réutilisable des logiciels.
Objet de gestion L’objet de gestion est la représentation d’un objet « réel » dans une application de gestion telle que R/3. Exemple : « salarié » est un exemple d’objet de gestion Un objet de gestion est à comparer avec une « boîte noire » qui encapsule des données et des processus de gestion. Pour le programmeur, les détails de la structure ne sont pas à connaître. Seule la couche d’interface est utilisée.
Objet de gestion - Structure L’objet de gestion est une modélisation d’un objet réel.
Objet de gestion - Structure Les objets de gestions SAP sont constitués de quatre couches: Le noyau contenant la logique applicative fondamentale de gestion, c’est-à-dire son positionnement au sein de la hiérarchie des objets. La couche d’intégrité, qui contient les contraintes internes et les règles de gestion qui s’appliquent à l’objet. La couche d’interface, qui contient les méthodes (BAPI), les attributs et les événements E/S. C’est l’interface avec le monde extérieur. La couche d’accès proprement dite, basée sur les standards DCOM/COM, COBRA et OpenDOC. Il s’agit des techniques permettant un accès externe aux données de l’objet.réel.
Type d’objet Le type d ’objet (ou classe) est le terme générique pour désigner des objets du même type avec les données correspondantes. L’objet de gestion est un type d’objet avec un modèle de donnée (le modèle représente une entité fonctionnelle). L’objet « réel » est une instance de l’objet de gestion. Exemples: L’ensemble des salariés forme une instance de l’objet de gestion « salarié » Le salarié Dupont portant le numéro de salarié 3237 forme également une instance de l’objet de gestion « salarié ». .
Zones Clés Les zones clés permettent d’accéder à une instance spécifique d’un type d’objet. Exemple : Le type d'objet « Salarié » et la zone clé «Numéro.salarié » sont des exemples d’un type d’objet et d'une zone clé correspondante. Type d ’objet : « Salarié » Zones clé = 3237 Zones clé = 3066 Zones clé = 488 Instance de l’objet Remarque : Il est possible d’accéder aux données de l’objet de gestion sans préciser la clé. L’instance concerne l’objet de gestion et toutes les données qui s’y rattachent, par exemple la liste des salariés.
Attributs Un attribut : contient des données relatives à un objet de gestion et décrit ainsi une propriété d’objet particulière. Par exemple, « Nom.salarié » est un attribut du type d’objet « Salarié ».
Interface L’interface d’un objet est constituée par un ensemble de méthodes. Ces méthodes sont aussi apparentées et associées à un type d’objet. Type d’objet Interface Méthode 1 Méthode 2 … Pour un type d’objet, on peut lister toutes les méthodes possibles.
Interface Une méthode est une opération effectuée sur un objet de gestion et qui donne accès aux données de l’objet . En d’autres termes, Une méthode s’applique à une instance d’un type d ’objet, L’exécution d’une méthode permet d’accéder aux données de l’objet. De cette manière, on peut contrôler, mettre à jour, créer… des données.
Interface et dépendance à l’instance Une méthode est soit « dépendante de l’instance » soit « indépendante de l’instance » selon qu’elle est liée à la clé. Si elle est « dépendante de l’instance », elle s’applique à une instance spécifique du type d ’objet. Exemple : Dans les méthodes pour créer ou accéder à une commande d ’achat, la clé « commande d ’achat » est dans les paramètres d’entrées. Si elle est « indépendante de l’instance », elle s’applique sur une instance globale sur le type d ’objet. Exemple : La méthode pour lire les commandes d’achat s’appuie sur toutes les commandes.
Avantages de l’orienté objet Meilleur compréhension pour l’utilisateur. Le fonctionnement interne des méthodes est « transparent » au monde extérieur. Sécurité : accès protégé aux attributs d ’un objet. Évolution : les objets sont réutilisables pour construire d ’autres objets (propriété d ’héritage). Terminologie : La programmation orienté objet permet de créer un nouveau type d’objet à partir des types d’objets existants.Le nouveau type d’objet (sous type) hérite des propriétés et méthodes. Le polymorphisme est le terme utilisé pour décrire les circonstances dans lesquelles la même méthode déclenche différents types de comportement dans divers types d’objets de gestion.
Récapitulatif Un objet de gestion est une modélisation d’un objet réel L’objet réel est une instance de l’objet de gestion Les objets de gestion sont composés des éléments d’interfaces, de clés, d’attributs, de méthodes. Les méthodes d’un objet de gestion s’appliquent sur une instance.
L’orienté objet dans SAP Généralités Historiques des BAPIs Avantages des BAPIs Business Object Repository Business Object Builder
L’orienté objet dans SAP Dans SAP, les méthodes portent le nom de BAPIs, Business Applications Program Interfaces. Par exemple, dans SAP, le type d ’objet « Material » inclut la fonctionnalité de contrôle de disponibilité. une BAPI appelé Material.Availability est la méthode utilisée pour faire ce contrôle. Instance de l’objet BAPI
L’orienté objet dans SAP Un type d’objet tout comme une méthode a un identifiant externe pour tout appel orienté objet via OLE. Cet identifiant est une désignation simple en anglais. Par exemple, « Material » pour le type d ’objet « Article ». Cependant, le nom technique dans SAP est différent. Par exemple « BUS1001 » est le nom technique du type d’objet « Article ». Des règles de développement sont associées à ces noms.
L’orienté objet dans SAP Dans SAP, les BAPIs sont actuellement mises en œuvre sous la forme de modules fonctions. Il est donc possible d’exécuter une BAPI via le BOR ou directement par le module fonction.
Historique des BAPIs Les BAPIs sont apparues avec la version 3.1G. Elles deviennent intéressantes avec la version 4.0B. De nouvelles BAPIs apparaissent de façon continue principalement orientées autour d’Internet.
BAPI Avantage des BAPIs Une interface indépendante des langages C VB JAVA ... BAPI ABAP/4 Java, HS, etc. Développement Poste client Interface Serveur C++ ABAP Objects
DCOM Component Connector Avantage des BAPIs Une communication variée CORBA COM/ DCOM Java HTTP OAGIS R/3 BAPI BO Web Basis DCOM Component Connector Java Connector Object Bridge TSI Conforme aux nouvelles normes de communication COM/DCOM...)
Avantage des BAPIs Les BAPIs deviennent une norme de communication entre les systèmes de gestion. Vous pouvez accéder aux objets de gestion SAP et à leurs BAPIs en utilisant des technologies d'interface orientées objet telles que : La technologie COM/DCOM (Component Object Model/Distributed Component Object Model) de Microsoft. Les objets de gestion SAP sont déjà conformes aux spécifications de l’Open Applications Group (OAG) et, en relation avec ObjectBridge de VisualEdge. Elles sont conformes aux directives CORBA (Common Object Request Broker Architecture) de l’Object Management Group.
Avantage des BAPIs Une stabilité SAP s’engage à ne créer aucune régression sur les BAPIs suite à une montée de version. Des extensions sur les BAPIs peuvent avoir lieu (ajout de paramètres facultatifs), mais sans déstabiliser le fonctionnement d’applications existantes.
Application extérieure Business Object Repository Le Business Objet Repository, ou Navigateur BAPI : Décrit tous les types d’objets de gestion et leur méthodes Constitue une interface pour les applications clientes qui veulent créer des objets d’exécution dans SAP Application extérieure
Business Object Repository Outils -> Business Framework -> Browser BAPI Transaction BAPI
Business Object Repository Le BOR permet de visualiser les méthodes et les documentations associées d ’un type d ’objet.
Exercice Dans le navigateur BAPI : Trouver le type d’objet « CompanyCode » (Société) Sur l’interface associée : Trouver quelles sont les zones clés ? Combien y a-t-il de méthodes BAPIs ? Vérifier que la méthode « GetList » est indépendante de l’instance. Quel est la dépendance de la méthode « GetPeriod »? Quels sont les paramètres de la fonction « GetDetail »? Dans quel paramètre se trouve la zone « COMP_CODE » code société ? Quel est le module fonction associé ?
Business Object Builder SAP fournit cet outil de définition des types d ’objet. Chemin : Outils -> Business Framework -> Développement BAPI -> Business Object Builder (transaction SWO1) Le Business Object Builder permet d ’accéder à la définition des types d ’objets standards, de les modifier, les afficher ou d ’en créer de nouveaux. D ’autres fonctions existent telles que « Contrôler », « Tester », « générer » ou « Cas d ’emploi ».
Business Object Builder
Exercice A partir du navigateur BAPI, afficher le type d’objet « CompagnyCode ». Trouver le type d’objet (nom technique) ainsi que le nom technique de la méthode associée : GetDetail Indication : En double cliquant, un saut est réalisé vers le Business Object Builder en affichage. Il existe un lien réciproque pour passer de l’un à l’autre. A partir de l’assistant « Business Object Builder », afficher le type d’objet que vous avez trouvé ci dessus. Retrouver la méthode GetDetail...
Récapitulatif Trois assistants permettent de gérer les BAPIs dans SAP : Le Business Object Repository Le Business Object Builder ou générateur d ’objet Le générateur de fonctions (Transaction se37)
Accès aux BAPIs Techniques d’interfaçage Accès par RFC Accès orienté objet dans le BOR
Techniques d’interfaçage Modes de communication : CPI-C était le mode de communication qui assurait la liaison de systèmes entre fonctions de bas niveau. CPI-C est toujours utilisé pour les communications R/2. RFC simplifie la connexion CPI-C et est toujours utilisé comme un simple moyen de transmission de messages entre systèmes. IDOC prend également en compte la technologie RFC de transmission (entre autres) et est utilisé dans le cadre d ’interface EDI (société à société) et dans l ’ALE (communication entre système d ’une société). SAP Automation permet de faire communiquer n ’importe qu ’elle application (Web, système de téléphonie …) avec SAP. Il propose une interface directe sur SAP et repose sur une programmation directe du SAPGUI. SAP Automation 2 évolue et propose un ensemble d ’assistants aux développements. Il inclut en particulier le SAP assistant et Transaction Component.
Transaction Component Couche d’application SAP R/3 R/3 RFC Component Transaction Component GUI Library RFC Library SAP Assistant BOR Component RFC Class Library GUI Component GUI CodeGen COM RFC class Library est constitué d ’un ensemble de classes C++ qui prennent en compte toutes les fonctionnalité des API. Cette librairie s’installe lors de l’installation du Sapgui et permet à n’importe quelle application externe supportant le protocole RFC de communiquer avec SAP.
Les différents accès aux BAPIS Via le module fonction par RFC Directement dans le BOR (accès orienté objet)
Les différents accès aux BAPIS Accès de manière synchrone en général A partir de la version 4.0, les BAPI peuvent également être utilisées pour effectuer un transfert de données asynchrone dans le cadre de l'Application Link Enabling (ALE)
Accès par RFC L’accès à la BAPI est effectué en passant des Remote Function Calls (RFC) au module fonction sur lequel la BAPI est basée.
Accès par RFC RFC est un protocole de communication basé sur le protocole CPI-C. Il existe depuis la version 2.2. RFC permet la communication synchrone entre deux programmes : un programme « client » appelle un module fonction d ’une application « serveur ». Pour passer un appel RFC, il faut spécifier les informations d'interface appropriées : des paramètres d'import qui contiennent des données à transférer du programme appelant à la BAPI, des paramètres d'export qui contiennent des données à re transférer de la BAPI au programme appelant des tables d’import/export pour importer et exporter des données. Attention pas d’exception ni de paramètres passés par référence (changing). La gestion des erreurs passe par des tables dédiées.
Accès par RFC Au moment de l'exécution, le programme applicatif utilise la bibliothèque RFC pour passer l'appel RFC.
Exercice Accès à une BAPI par RFC A partir d ’un fichier Excel, appeler une BAPI par RFC qui permet de ramener la liste des clients. Aide : Prendre le fichier Excel fournit. Il existe une macro avec une trame. Remplir ce qui manque.
Exercice Quelques instructions VB utiles Set R3 = CreateObject("SAP.Functions") permet de créer un objet R3 (objet serveur) avec Nom de l'application qui fournit l'objet Serveur : « SAP » type d'objet : « Functions » Lancement de la connexion : If App.Logon(0, False) <> True Then MsgBox "peut pas LOGON!." Exit Sub End If Création de l ’objet fonction RFC_XXX Set MyFunc = R3.Add("RFC_XXX" )
Exercice Quelques instructions VB utiles Appel de la fonction (méthode call) Result = MyFunc.call Récupération d ’un paramètre retour de la fonction Set Customers = MyFunc.Tables( "VBAP") Où VBAP est le paramètre SAP d ’export de la fonction.
Accès orienté objet dans le BOR L’accès à la BAPI s’effectue dans le BOR. Cette possibilité n’existe qu’à partir de certaines plates-formes.
Accès orienté objet dans le BOR Les BAPIs sont appelées : A partir de plate-formes Windows 95 ou NT via OLE Automation. Cette technologie permet d’accéder aux objets de gestion SAP du BOR en appelant les BAPIs depuis un programme externe (SAP en tant que serveur OLE). Au moment de l'exécution, l’application cliente accède aux objets de gestion SAP et à leurs BAPI en adressant des ordres OLE Automation au BAPI ActiveX Control (à partir de 3.1G). A partir de plate-formes Windows 95 ou NT en utilisant la bibliothèque de classes C++.
Accès orienté objet dans le BOR A partir de plate-formes avec une machine virtuelle Java supportant le Java Developpement Kit en utilisant la bibliothèque de classes Java A partir de Visual Age d’IBM A partir des environnements de développement Delphi et Borland
Object Linking and Embedding Object Linking and Embedding (OLE) est une technologie développée par Microsoft. A l’origine OLE est un mécanisme permettant aux applications de créer et de gérer des documents contenant des données ou des objets de formats différents. Exemples : des enregistrements sonores, des tableaux, du textes, des images… L’utilisateur a donc l’impression de n’utiliser qu’une seule application. Par la suite, Microsoft a standardisé le principe OLE avec la définition de COM (Component Object Model) et DCOM (Distributed COM). Ces normes proposent une méthodes communes d’accès aux services de différents types de logiciels et l’utilisation de serveurs distants.
Les étapes OLE Création d’un objet BAPI ActiveX Control Ordre de création d’une instance locale de l’objet de gestion SAP Appel de la méthode sur les objets de gestion Lancement de l’objet de gestion SAP et libération de l’objet BAPI ActiveX Control
Les étapes OLE Création d’un objet BAPI ActiveX Control La commande VB Set oBAPICtrl = CreateObject("SAP.BAPI.1") permet de créer l ’objet BAPI ActiveX Control « oBAPICtrl ». Un objet BAPI ActiveX Control est créé grâce à cette commande OLE Set R3 = CreateObject("SAP.BAPI.1") permet de créer un objet ActiveX avec comme nom de l'application qui fournit l'objet Serveur : « SAP », et type d'objet : «BAPI.1».
Les étapes OLE Ordre de création d'une instance locale de l'objet de gestion SAP A partir de l ’objet ActiveX « oBAPICtrl » et de la méthode OLE « GetSAPObject », on accède à l’objet de gestion SAP SalesOders : Set boOrder = oBAPICtrl.GetSAPObject("SalesOrder") L’application cliente accède désormais à l ’objet de gestion SAP « sales orders » et à toutes ses BAPIs.
Les étapes OLE Appel des BAPIs sur l’ordre de gestion Une fois l’objet de gestion créé, on peut appeler ses BAPIs grâce à l’ordre OLE : boOrder.CreateFromData OrderHeaderIn:=oHeader, _ OrderPartners:=oPartners, _ OrderItemsIn:=oItemsIn, _ Return:=oReturn Dans l’exemple ci-dessus, la BAPI est « CreateFromData » avec ses paramètres d ’import, export et tables.
Les étapes OLE Avant d’accéder aux objets de gestion, il est nécessaire de se connecter au système SAP. Connexion par BAPI ActiveX Control 'Paramètre de connexion (ajouter éventuellement 'les paramètres d ’environnement) oBAPICtrl.Connection.Client = "<client>" oBAPICtrl.Connection.User = "<user name>" oBAPICtrl.Connection.Language = "<language>" 'Ouvre la connexion oBAPICtrl.Connection.Logon
Les étapes OLE Connexion par le LOGON ActiveX Control 'Création de l ’objet Logon ActiveX Set oLogonCtrl = CreateObject("SAP.LogonControl.1") 'Création d ’une nouvelle connexion dans le BAPI 'ActiveX Control Set oBAPICtrl.Connection = oLogonControl.NewConnection 'Paramètre de connexion (rajouter éventuellement 'les paramètres d ’environnement) oBAPICtrl.Connection.Client = "<client>" oBAPICtrl.Connection.User = "<user name>" oBAPICtrl.Connection.Language = "<language>" 'Ouvre la connexion oBAPICtrl.Connection.Logon
Accès à une BAPI via le BOR Exercice Accès à une BAPI via le BOR A partir d’un fichier Excel, appeler une BAPI qui permet de ramener la liste des clients. Aide : Prendre le fichier Excel fournit. Il existe une macro avec une trame. Remplir ce qui manque.
Récapitulatif L’accès à une BAPI se fait : Via le module fonction par RFC Directement dans le BOR (accès orienté objet), La création d’une instance dans le BOR se fait en trois temps : Création d’un objet BAPI ActiveX Création d’une instance sur l ’objet de gestion Exécution d’une méthode Dans tous les cas, un Logon doit être effectué sur le système SAP. La technique utilisée lors du lancement d ’une méthode est l’appel RFC.
Modification Création de BAPIs Business Object Builder Modification des BAPIs Création d’un nouveau type d’objet
En amont Il faut détailler les processus et situations dans lesquels la BAPI sera utilisée. Il s’agit de définir : Le processus modèle, celui qui sera le plus souvent employé, Quelles seront les objets de gestion impliqués, Les fonctionnalités de la BAPI et les relations avec les BAPIs existantes. IMPORTANT Avant de se lancer sur une modification de BAPI, vérifier s’il n’existe pas d’exit client dans le module fonction concerné et qui permettrait de répondre au besoin. Exemple avec la lecture des données d ’un client (scénario déjà présent dans SAP...) : Scénario : tout d ’abord, une listes des clients doit être affiché, à partir de laquelle le détail d ’un client spécifique sera affiché.
Présentation du Business Object Builder Exemple sur le BUS2012 Transaction SWO1 Chemin : Outils -> Business Framework -> Développement BAPI -> Business Object Builder
Présentation du Business Object Builder
Les éléments Catégorie d’objet : le type d’objet ou l’objet de gestion Type d’élément : les interfaces, les zones clés, les attributs, les méthodes et les événements. Élément hérité : le type d’objet est un sous type d’un type d’objet contenant cette méthode.
Les données de base d’un type d’objet Nom du type d ’objet fonctionnel (en anglais) Objet de gestion et application concernée
Les données de base d’un type d’objet Le programme d'implémentation : à chaque type d'objet correspond un programme ABAP/4 dans lequel sont implémentées les méthodes du type d'objet. Les statuts du type d ’objet : un statut de génération, un statut de sauvegarde (création et modification), un statut d ’implémentation (ou de validation) Les désignations : courtes et longues La relation avec un modèle de donnée L’application (ex. Gestion des articles) La classe de développement
Le détail d’une méthode Pour rechercher le module fonction d ’une méthode, double cliquez sur celle-ci et sélectionner « ABAP/4 ». Statut de la méthode Module fonction
Le statut d’une méthode modélisé : La méthode vient d’être créée. implémenté : La méthode est opérationnelle et peut être appelée. libéré : Toutes les méthodes ont été implémentées (ou sont obsolètes). obsolète : Les méthodes ou les types d ’objets ne sont plus utilisé. N.B. Pour changer de version à un type d ’objet, tous les éléments du type d ’objet doivent être dans une version inférieure.
Le statut d’une méthode Attribut de relation : L’attribut est lié à un autre type d’objet Modélisée : A la création ou par copie d’un type d’objet, le statut d’un élément est modélisée, c’est à dire créé mais non utilisable. Méthode API : Ce code indique s’il s’agit d’une composante de l’API livrée par SAP (voir les Business API). Implémentation locale recommandée: Elément non actif mais que SAP recommande d’implémenter. Élément locale : Décrit une méthode du type d’élément « méthodes »
Les différentes démarches Modification d’une BAPI existante - création d’une BAPI sur un type existant 1- Création d’un sous-type du type concerné 2- Création d’une nouvelle BAPI « par copie » Création d’un nouveau type d objet 1- Création d’un nouveau type 2- Création d’une nouvelle BAPI
Modification des BAPIs La modification de BAPI est possible. Par exemple, un ajout de paramètres à une BAPI… Il est également possible de créer une nouvelle méthode sur un objet... Aucune modification du standard SAP ne doit être effectuée afin d’assurer le bon fonctionnement de la BAPI suite à une montée de version
Modification des BAPIs Première étape : Copie d’un type d’objet Par création d’un sous type de l’objet de gestion concerné afin d’étendre les méthodes BAPIs du nouveau type d’objet. Respecter les normes de développements : le type d’objet, le nom d’objet, le modèle de donnée et le programme d’implémentation commencent par Z ou Y
Modification des BAPIs Première étape : Copie d’un type d’objet SWO1 : Créer sous type du BUS 2012 Création du modèle de donnée
Modification des BAPIs Première étape : Copie d’un type d’objet Statut modélisé au départ Les méthodes copiées du « sur type » sont à implémenter (recommandé)
Modification des BAPIs Deuxième étape : Copie de la méthode à modifier Création d’une nouvelle BAPI par copie d’une BAPi existante A) Copie du module fonction. Pour trouver le module fonction de la méthode, double-cliquez sur celle-ci et sélectionner l ’onglet « ABAP/4 ». C’est ce module fonction qu’il faut copier (de manière classique par la SE37). B) Modification du module copié C) Affectation du module comme une méthode d’un type d’objet
Modification des BAPIs Copie du module fonction Donner un nom au module fonction. Par convention, nous pouvons utiliser Z_BAPI_<nom de l’objet de gestion>_<nom de la méthode>. Exemple, Z_BAPI_CREDITOR_GETDETAIL Remarque : Dans certains cas il vaut mieux copier tous les éléments du groupe fonction. Une copie de groupe fonction peut être réalisée par le Browser Repository (transaction se80) Définition de nouvelles structures qui seront utilisées par la BAPI Ces structures sont utilisées comme paramètres d’import, d’export ou table de la BAPI. les paramètres de ces modules fonctions dédiées à une BAPI ne doivent pas contenir d’exceptions et de paramètres passés par référence (CHANGING).
Modification des BAPIs Cas 1 : la BAPI doit créer une instance (ex. CreateFromData) La zone clé du type d’objet être présent dans les paramètres d’export du module fonction. Ces BAPIs retourne une valeur “clé” (par ex. un n° de commande pour la BAPI SalesOrders.CreateFromData). Cas 2 : la BAPI ramène le détail d’un objet (ex. GetDetail) La zone clé du type d’objet est inclus dans les paramètre d’import du module fonction. De cette façon, on accède à une instance spécifique du type d’objet. Cas 3 : la BAPI est une méthode instance-indépendante La zone clé n’est pas dans les paramètres d’import/export.En général, ces BAPIs retourne une table avec des valeurs sélectionnables.
Modification des BAPIs Identifier le nom du groupe fonction : un nouveau nom pour ne pas faire de modification de standard. Remarque : Le nom technique d’un objet de gestion est de la forme BUSnnnn. La fin de ce nom nnnn sert souvent pour nommer le groupe fonction. Nommer les paramètres du module fonction : compréhensible car utilisé ensuite dans le BOR, en anglais, inférieur à 20 CH , en lettres capitales.
Modification des BAPIs Pour insérer une nouvelle méthode : « Utilitaires -> Méthodes API -> Insérer méthode » ATTENTION : à partir de la version 4.0, les noms des paramètres (structure ou champ) doivent être identiques entre le module fonction et la BAPI. L’assistant génère alors un modèle d’appel du module fonction. Pour le visualiser, faire « programme » après avoir positionner le curseur sur la méthode. A priori, ce programme n’est pas à modifier, SAP génère le code approprié.
Exercice « Modifier » la BAPI GetList de l’objet CompanyCode dans le but de ramener seulement les codes sociétés qui ont une devises en FRF. Méthode 1 : en modifiant le code ABAP de la méthode. Méthode 2 : en ajoutant un paramètre à la méthode.
Création d’un nouveau type d’objet En amont, il s’agit de détailler les processus et situations dans lesquels ce type d’objet sera utilisé : le processus modèle, celui qui sera le plus souvent employé, les fonctionnalités de la BAPI et les relations avec les BAPIs existantes. Fonction créer Éléments créés par défaut L ’interface est par défaut celle standard et est composé de deux méthodes « ExistenceCheck » et « Display ».
Création d’un nouveau type d’objet Définition de la zone clé Rappel : la clé d’un l’objet de gestion identifie une instance unique d’un objet de gestion. Si la BAPI que vous voulez définir est avec une clé instance- dépendante (ie. Vous voulez créer ou acceder à une instance spécifique), les zones de clé doivent figurées avec le même nom dans les paramètres de votre module fonction.
Création d’un nouveau type d’objet Définition des paramètres Les paramètres dans le Business Object Builder ont les mêmes noms que ceux du module fonction. Ceux-ci peuvent être définis en référence ou non à une zone du DDIC. Il existe un paramètre particulier : le paramètre “RETURN” dans le module fonction et “Return” dans la méthode.
Création d’un nouveau type d’objet Gestion du paramètre « RETURN » Ce paramètre “Return” de la méthode est un paramètre d’export du module fonction (paramètre RETURN). Version 4 : la fonction BALW_BAPIRETURN_GET2 permet de mettre en forme le message. Version 3 : la fonction MESSAGE_SET_AND_CONVERT permet de mettre en forme le message. RETURN à la structure de BAPIRETURN.
Release d’une BAPI Après adaptations et tests de la BAPI, il est conseillé de la libérer et de geler son développement. Libération du module fonction (SE37) Libération de la méthode (SWO1) Gel de la méthode (SWO1) Ceci permet d’éviter de malencontreuses modifications car ces modifications sont contrôlées avec la référence gelée : compatibilité avec le BOR et le DDIC.
Utilisation des BAPIs Autorisation Performance BAPI et ALE
Autorisation Pour exécuter une BAPI dans SAP, il faut les autorisations appropriées. Celles-ci sont précisées dans le profil utilisateur… de la même façon que l ’utilisateur travaillant dans SAP. Pour avoir le détail des autorisations liées à une méthode, lire la documentation de la BAPI (via le navigateur BAPI).
Performance Accès aux tables avec clé unique Éviter les accès inutiles Utiliser des tables internes Éviter les process parallèles Utilisation de buffers lors de l’attribution de numéros (ceci afin de réduire la période de blocage des tables) Préférer l’instruction update à insert Faire les updates aussi près que possible d’un commit work Toutes les tables qui ne sont pas protégées contre un blocage doivent être mises à jour dans le même ordre afin d’éviter un deadlock
BAPI et ALE Depuis la version 4.0, des BAPI asynchrones existent et permettent de générer un IDOC et ainsi d’utiliser le scénario ALE approprié. Ce qu’il faut savoir : Pas de commit work dans la BAPI Seul le paramètre Return de la BAPI est renvoyé au système source et celui-ci doit être référencé à la structure BAPIRETURN1 ou BAPIRET2. Les autres ne sont pas inclus dans l’IDOC créé. Suite à la réception de l’IDOC et à sa transformation en BAPI, le statut de l’IDOC passe à : - 51 (application document has not been posted) ou - 53 (application document posted).