Corrigé des exercices
Corrigé chapitre Premiers pas sur SAP
Une fois connecté à SAP, exécutez la transaction SE38 pour ouvrir l’éditeur ABAP. Pour rappel, elle peut être appelée de plusieurs manières :
-
Via la fenêtre d’accueil, dans le menu SAP.
-
Par un double clic sur la ligne de l’éditeur.
-
En affichant les fonctions de l’item et en sélectionnant Exécuter.
-
Avec le menu déroulant : Traiter - Exécuter (ou Exécuter dans nouvelle fenêtre).
-
Via la zone de commande :
-
SE38 (si on se trouve directement dans la fenêtre d’accueil).
-
/nSE38 pour terminer la transaction en cours et en exécuter une nouvelle dans la même fenêtre.
-
/oSE38 ou /*SE38 pour ne pas terminer la transaction en cours et en exécuter une nouvelle dans une autre fenêtre.
Une fois arrivé dans l’éditeur ABAP, entrez le nom du programme ZENI_CHAP3 comme indiqué dans l’énoncé, puis cliquez sur le bouton Créer.
Dans la nouvelle fenêtre, renseignez les informations indiquées dans l’énoncé :
-
Libellé : Exercice chapitre Premiers Pas sur SAP
-
Type de programme : Exécutable
-
Statut : Programme de test
-
Blocage de l’éditeur : décoché
-
Contrôles Unicode actifs : coché
-
Arithmétique à virgule fixe : coché...
Corrigé chapitre Instructions basiques ABAP
Tout d’abord, nous allons procéder à l’analyse pas à pas de la demande comme vu au chapitre Qu’est-ce que la programmation ? - Les étapes de la programmation.
1. La demande
Nous allons réitérer ici la demande initiale :
Dans un nouveau programme Z que vous aurez créé en local (nom libre), écrivez un code en langage ABAP répondant à ces critères :
1. |
Extraire le jour, le mois et l’année de la date système SY-DATUM et l’afficher sous format ’DD/MM/AAAA’ (il pourrait être précédé par le texte d’introduction ’Date du jour : ’). |
2. |
Ensuite, le programme ira lister toutes les dates du mois en cours à partir de la date du jour (faire bien attention aux mois de 30 et de 31 jours). Dans un souci de facilité, on considérera le mois de février avec 28 jours. Toutes les dates seront au format ’JJ/MM/AAAA’. |
3. |
Ce programme devra être utilisable pour n’importe quelle date sans avoir à le modifier quand nécessaire. |
2. L’analyse
Après relecture, toutes les informations nécessaires sont émises. On en déduit qu’il va falloir créer un programme ABAP utilisant les notions techniques suivantes :
-
Un travail sur une chaîne de caractères (extraction du jour, du mois et de l’année) et pour que ce soit plus facile pour la suite du programme, trois variables seront créées (V_DAY, V_MONTH, V_YEAR par exemple). Ces variables seront ensuite concaténées dans la variable V_DATE avec l’élément séparateur ’/’.
-
Dans un deuxième temps, le nombre de jours par mois...
Corrigé chapitre Dictionnaire de données (DDIC)
1. |
Création du domaine |
Pour cette partie, le domaine sera nommé ZCATEGORY et sera de cette forme :
2. |
Création d’un élément de données Élément de données ZCATEGORY créé utilisant le domaine ZCATEGORY. |
3. |
Création d’une table |
La table ZBOOKS est créée avec les éléments suivants :
-
Livraison et gestion
-
Zones
-
Aide/contrôle de saisie
-
Options techniques
-
Gestion de tables
Pour rappel, il est possible d’accéder à la gestion de table grâce au menu déroulant suivant (cf. chapitre Dictionnaire de données (DDIC) - Structures et Tables) : Utilitaires - Générateur de gestion de table
Corrigé chapitre Les tables internes
Nous allons procéder à l’analyse pas à pas de la demande comme vu au chapitre Qu’est-ce que la programmation ? - Les étapes de la programmation.
1. La demande
Voir l’énoncé de la demande à l’exercice du chapitre sur les tables interne (cf. Les tables internes - Exercice).
2. L’analyse
Après relecture, toutes les informations nécessaires sont émises. On en déduit qu’il va falloir créer un programme ABAP utilisant les notions techniques suivantes :
-
Deux tables internes sont à créer : T_CATEGORY et T_BOOKS.
-
T_BOOKS aura tous les enregistrements de l’exercice et devra simplement être triée par année de parution, on va donc la définir de type SORTED avec les champs YEAR_BOOK, ZCATEGORY et TITLE comme clé primaire et ayant comme référence la table ZBOOKS.
-
T_CATEGORY va répertorier les catégories de livres avec une description et donc sera souvent lue avec un READ TABLE. Il serait donc nécessaire, pour améliorer les performances du programme, de la définir de type HASHED avec comme référence, un TYPE déclaré au préalable.
-
La deuxième partie de l’exercice consiste à remplir les tables avec les enregistrements définis dans l’énoncé.
-
Le nombre d’enregistrements de la table T_BOOKS sera ensuite défini puis affiché.
-
Ensuite, un LOOP sera exécuté sur la table T_BOOKS, puis la catégorie sera lue dans la table ZCATEGORY et les données seront affichées à l’écran.
3. L’algorithme
Une fois que toutes les informations techniques ont été définies, l’algorithme ressemble à ceci :
-
Insérer les enregistrements dans la table T_CATEGORY.
-
Insérer les enregistrements dans la table T_BOOKS.
-
Spécifier le nombre de lignes de la table T_BOOKS, retirer les espaces inutiles avec un CONDENSE et afficher le résultat.
-
Boucle LOOP sur T_BOOKS.
-
Pour le premier enregistrement de la table interne, afficher le texte ’Liste des livres contenus dans la bibliothèque’.
-
Pour toute nouvelle valeur du champ YEAR_BOOK, afficher une ligne de séparation, puis T_BOOKS- YEAR_BOOK à...
Corrigé chapitre Les requêtes SQL
Nous allons procéder à l’analyse pas à pas de la demande, comme vu au chapitre Qu’est-ce que la programmation ? - Les étapes de la programmation.
1. La demande
Voir l’énoncé de la demande à l’exercice du chapitre sur les requêtes SQL (cf Les requêtes SQL - Exercice).
2. L’analyse
Après relecture, toutes les informations nécessaires sont émises. On en déduit qu’il va falloir créer un programme ABAP qui devra exécuter les fonctions suivantes :
-
Dans un premier temps, deux enregistrements seront insérés dans la table ZTRAVEL :
-
Une table interne et une structure appelées T_TRAVEL et S_TRAVEL par exemple, ayant comme référence cette table de base de données, seront déclarées.
-
Elles seront renseignées avec les informations définies dans la demande de l’exercice, puis mettront à jour ZTRAVEL.
-
Un message de statut retournera si l’opération s’est bien passée ou pas.
-
Une première sélection va importer les enregistrements de la table ZTRAVEL.
-
Une table interne appelée T_TRAVEL1 par exemple va donc être créée ainsi que sa structure, et contiendra le résultat de la requête.
-
Son TYPE sera déclaré de la façon suivante :
Nom champ |
Type |
Long. |
Définition |
DATE_TRAVEL |
LEAVE_DATE |
Date de départ |
|
NB_TRAVEL |
Entier |
2 |
Nombre de voyages effectués |
TOT_DUR |
N1DAUER |
Total des durées de voyage |
|
TOT_DIST |
ICL_MILEAGE |
Total des distances parcourues |
|
TOT_TOLL |
ZTRAVEL_TOLL |
Total des coûts de péage |
|
TOT_GASOL |
RKESKWFULK |
Total des coûts en carburant |
|
TOT_COSTS |
RKESKWFULK |
Total des coûts journaliers |
-
La requête procédera à une seule lecture de table ZTRAVEL en utilisant les commandes vues dans ce chapitre à savoir : COUNT, et SUM.
-
Grâce à un LOOP simple, le programme affichera le résultat trouvé.
-
Une deuxième sélection va de nouveau importer les enregistrements de la table ZTRAVEL.
-
Une table interne appelée T_TRAVEL2 par exemple va donc être créée, ainsi que sa structure, et contiendra le résultat de la requête.
-
Son TYPE sera déclaré de la façon...
Corrigé chapitre Les fonctions
Nous allons procéder à l’analyse pas à pas de la demande, comme vu au chapitre Qu’est-ce que la programmation ? - Les étapes de la programmation.
1. La demande
Voir l’énoncé de la demande à l’exercice du chapitre sur les fonctions (cf. Les fonctions - Exercice).
2. L’analyse
Après relecture, toutes les informations nécessaires sont émises. On en déduit qu’il va falloir créer le module fonction ZFM_BOOKS_CREATE par exemple, qui utilisera le groupe de fonctions ZBOOKS, également créé pour l’exercice.
Les paramètres de la fonction sont les suivants :
-
IT_BOOKS : table d’import de type ZTT_BOOKS (type de table à créer).
-
ET_MESSAGES : tables d’export de type BAPIRET2_TT regroupant les messages rencontrés lors de la fonction.
-
Exceptions : deux sont à prévoir, une si la table IT_BOOKS est vide et la deuxième si une erreur est rencontrée lors de la mise à jour de la table ZBOOKS.
Les seuls objets techniques à créer sont :
-
Deux structures pour les tables en paramètres.
-
Une dernière pour la sélection dans la table ZBOOKS.
-
Une table interne T_DATA_OK listant tous les enregistrements qui peuvent être insérés.
-
Trois variables : une pour stocker l’année en cours V_YEAR, la deuxième V_SUBRC pour indiquer si une erreur existe, et enfin V_TABIX pour stocker la ligne lue lors du loop.
3. L’algorithme
Une fois que toutes les informations techniques ont été définies, l’algorithme ressemble à ceci :
-
Vérifier si la table est vide.
-
Si oui, RAISE Exception.
-
Si non, boucle sur celle-ci.
-
Initialiser la variable V_SUBRC à 0.
-
Si la catégorie est vide : mettre à jour la table ET_MESSAGES avec un message d’erreur, V_SUBRC = 4.
-
Si le titre du livre est vide : mettre à jour la table ET_MESSAGES avec un message d’erreur, V_SUBRC = 4.
-
Si l’année de parution est vide : mettre à jour la table ET_MESSAGES avec un message d’erreur, V_SUBRC = 4.
-
Si l’année de parution est strictement supérieure à l’année en cours : mettre à jour la table ET_MESSAGES avec un message d’erreur, V_SUBRC...
Corrigé chapitre Les classes
Une fois connecté à SAP, exécutez la transaction SE24 pour ouvrir l’éditeur de classes. Pour rappel, elle peut être appelée de plusieurs manières :
-
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 (/nSE24) ou dans une nouvelle (/oSE24).
-
À partir de la fenêtre d’accueil, dans le menu SAP par un double clic sur la ligne Class Builder (éditeur de classes) ou par un clic droit puis Exécuter : Class Builder.
Menu SAP - Outils - ABAP Workbench - Développement - SE24 Class Builder
Créez la classe ZCL_BOOKS par exemple avec les informations suivantes :
Renseignez une classe de développement ou créez-la comme objet local.
Deux méthodes vont être créées : CONSTRUCTOR et GET_BOOKS.
1. |
CONSTRUCTOR
|
2. |
GET_BOOKS
|
Corrigé chapitre Création d’un programme ABAP
1. La demande
Voir l’énoncé de la demande à l’exercice du chapitre sur la création d’un programme (cf. Création d’un programme - Exercice).
2. L’analyse
Toutes les informations nécessaires sont renseignées, à savoir le point de départ (détail des zones de l’écran de sélection), le but du développement, ainsi que les champs avec leur référence, à afficher dans le raport ALV. Le programme pourrait s’appeler ZALV_BOOKS par exemple.
Il suffit de créer deux includes :
1. |
ZALV_BOOKS_TOP, regroupant toutes les variables et l’écran de sélection. |
2. |
ZALV_BOOKS_F01, regroupant toutes les routines du programme, à savoir :
|
Concernant les déclarations de variables, il est nécessaire de créer les objets suivants :
-
Trois tables internes globales : GT_BOOKS de type SORTED pour la sélection des données de la table ZBOOKS, GT_CATEGORY de type STANDARD pour les valeurs du domaine, et GT_DATA de type STANDARD pour les données de l’ALV.
-
Les variables d’objet déclarées en local dans la routine F_ALV_DISPLAY.
3. L’algorithme
Concernant cette étape, elle peut être schématisée de la façon suivante :
4. Le développement
Voici les programmes à créer :
Programme principal - ZALV_BOOKS
*&----------------------------------------------------------------*
*& Rapport ZALV_BOOKS
*&
*&----------------------------------------------------------------*
*&
*&
*&----------------------------------------------------------------*
RAPPORT zalv_books.
*Déclaration des variables et écran de sélection
INCLUDE zalv_books_top.
*Routines
INCLUDE zalv_books_f01.
INITIALIZATION.
"Vider les tables internes du développement ...