Blog ENI : Toute la veille numérique !
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
  1. Livres et vidéos
  2. Apprendre à programmer avec ABAP
  3. Les fonctions
Extrait - Apprendre à programmer avec ABAP Les fondamentaux du développement sur SAP (avec exercices et corrigés)
Extraits du livre
Apprendre à programmer avec ABAP Les fondamentaux du développement sur SAP (avec exercices et corrigés) Revenir à la page d'achat du livre

Les fonctions

Type de fonction

La fonction ou plus exactement le module fonction est un outil indispensable à la programmation. En effet, il permet d’isoler un traitement spécifique (conversion, récupération d’informations, gestion de données...).

L’éditeur de gestion des fonctions se fait via la transaction SE37. Comme il a été évoqué dans le chapitre Premiers pas sur SAP - Connexion et fenêtre d’accueil, il est possible d’y accéder par ces différents moyens :

  • Depuis n’importe quel écran, en renseignant la transaction dans la zone de commande et en spécifiant si elle doit être exécutée dans une même session (/nSE37) ou dans une nouvelle (/oSE37).

  • À partir de la fenêtre d’accueil, dans le menu SAP par un double clic sur la ligne Function Builder (éditeur de fonctions) ou par un clic droit puis Exécuter : Function Builder.

    Menu SAP - Outils - ABAP Workbench - Développement - SE37 Function Builder

images/08RI01.png

L’écran d’accueil de la gestion du module fonction est assez sobre avec un champ pour renseigner la fonction et les trois boutons pour Afficher, Modifier ou Créer.

Module Fonction - Afficher [F7]

Module Fonction - Modifier [F6]

Module Fonction - Créer [F5]

images/08RI02.png

La barre d’outils également n’a pas de grandes nouveautés avec (de gauche à droite) :

images/08RI03.png
  • Contrôler

    Module Fonction - Contrôler - Syntaxe [Ctrl][F2]

  • Activer

    Module Fonction - Activer [Ctrl][F3]

  • Tester/Exécuter

    Module Fonction - Exécuter - Dans l’environnement de test [F8]

  • Cas d’emploi

    Utilitaires - Cas d’emploi [Ctrl][Shift][F3]

  • Manuel en ligne

    Saut - Manuel en ligne [Ctrl][F8]

  • Supprimer

    Module Fonction - Autres fonctions - Supprimer [Shift][F2]

  • Copier...

    Module Fonction - Autres fonctions - Copier... [Ctrl][F5]

  • Renommer...

    Module Fonction - Autres fonctions - Renommer... [Ctrl][F6]

  • Réaffecter...

    Module Fonction - Autres fonctions - Réaffecter... [Ctrl][F7]

Cette dernière fonctionnalité permet d’affecter un nouveau groupe de fonctions au module. Pour comprendre cette notion, il est nécessaire d’avancer un peu dans ce chapitre.

Tout d’abord, il serait intéressant de reprendre l’exemple cité dans le chapitre Dictionnaire de données...

Paramètres et appel de la fonction

Une fonction est un outil technique permettant de traiter des informations selon des paramètres d’entrée, pour en définir de nouvelles dans des paramètres de sortie. Les quatre prochains onglets vont donc lister ces paramètres (Importation, Export, Modification et Tables), puis le cinquième (Exceptions) va gérer les messages de la fonction et enfin Source liste le code ABAP. Pour ce faire, la fonction SD_CUSTOMER_MAINTAIN_ALL (création d’un client) sera choisie, car ayant beaucoup de paramètres, elle mettra bien en évidence les différentes options possibles :

Importation

images/08RI20.png

C’est ici que les paramètres d’entrée sont listés, définis par les informations suivantes :

  • Nom paramètre : libre, mais commence souvent par un I_ (pour importation) ou IV_, IS_... (Importation Variable, Importation Structure...).

  • Catégorisation : peut prendre les valeurs LIKE, TYPE et TYPE REF TO afin de faire référence à un élément de données de type élémentaire (pour le LIKE et TYPE) ou ayant un type de référence à une classe ou une interface lors de l’utilisation de l’ABAP Objet (pour le TYPE REF TO, cf. chapitre Dictionnaire de données (DDIC) - Éléments de données), ou bien à un champ d’une table ou structure, et même faire référence à une structure entière.

  • Type référence : champ d’une table ou structure, ou élément de données.

  • Valeur par défaut : comme son nom l’indique, précise si le champ doit être renseigné par une valeur prédéfinie.

  • Facultative : fixe le paramètre comme optionnel et il n’est donc pas nécessaire de lui attribuer une variable lors de l’appel de la fonction.

  • Passage par valeur : permet ici de transférer la valeur du paramètre dans le paramètre appelant ; cependant, en raison de mauvaises performances, SAP préconise de ne plus utiliser cette option sauf dans le cas d’une fonction RFC où cette case à cocher est obligatoire.

  • Désignation : renseignée automatiquement par la description du champ de la table/structure...

Création d’une fonction

Dans cette mise en pratique, un module fonction sera créé pas à pas. Il s’agira d’une fonction RFC qui créera un nouveau conducteur dans la table de base de données ZDRIVER_CAR.

 Tout d’abord, il faut créer le groupe de fonctions. Pour ce faire, exécutez la transaction SE37.

 Dans le menu, choisissez l’option suivante :

Saut - Gestion groupes de fonctions - Créer groupe

images/08RI35.png

 Entrez le nom du groupe de fonctions comme par exemple ZCARPOOLING.

 Entrez une désignation comme ’Covoiturage’.

images/08RI36.png

 Dans la nouvelle fenêtre, définissez l’objet en local ou, si vous le souhaitez, utilisez une classe de développement, puis un ordre de transport si besoin.

Une fois le groupe de fonctions créé comme indiqué dans la barre des messages en bas de l’écran, il faudra créer le module fonction.

images/08RI37.png

 Dans l’écran initial de la gestion de l’éditeur, renseignez le champ avec le nom de la fonction à créer (par exemple ZDRIVER_CREATE) puis appuyez sur le bouton Créer.

 Dans la fenêtre pop-up, entrez le nom du groupe de fonctions créé précédemment, puis une désignation.

images/08RI38.png

 Une fenêtre de warning peut apparaître, validez simplement pour passer à l’étape suivante.

 Allez dans l’onglet Propriétés.

 Comme il s’agit d’un module RFC et donc exécutable à distance, cochez l’option Module accessible à distance.

images/08RI39.png

 Dans l’onglet Importation, nous allons avoir besoin d’une structure en entrée avec les informations nécessaires du conducteur et de son véhicule. Pour faciliter, il s’agira d’une structure utilisant la structure ZDRIVER_CAR comme référence. Aussi, comme il s’agit d’une fonction RFC, l’option Passage par valeur est obligatoire.

images/08RI40.png

 Dans l’onglet Export, il y aura seulement le numéro d’identification...

Exercice

L’exercice suivant utilisera la table créée dans le chapitre Dictionnaire de données (DDIC), que l’on nommera ZBOOKS dans la suite du livre. Le module fonction sera de type normal, et aura pour finalité d’insérer dans la table ZBOOKS de nouveaux enregistrements définis dans une table en entrée. Une autre table en sortie sera définie afin de retourner le statut de chaque ligne.

1.

Créez un groupe de fonctions (nom au choix).

2.

Créez un module fonction utilisant ce groupe de fonctions (nom au choix également).

3.

Paramètres : une table utilisant ZTRAVEL comme modèle de ligne et une table regroupant les messages d’erreurs. Pour ceci, on peut utiliser le type de table BAPIRET2_TT, assez souvent utilisé dans les modules fonctions. Pour simplifier la tâche, trois champs seront utilisés :

  • TYPE indiquera le type de message dont il s’agit (valeur E pour une erreur ou S pour un succès).

  • MESSAGE retournera un texte descriptif.

  • ROW informera la ligne lue.

4.

Les messages d’erreurs peuvent être du type :

  • La catégorie n’est pas renseignée.

  • L’année de parution est vide.

  • ...

5.

Voir s’il ne serait pas possible d’utiliser des exceptions.