Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Apprendre à programmer avec ABAP
  3. Corrigé des exercices
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

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.

images/11RI01.png
  • Avec le menu déroulant : Traiter - Exécuter (ou Exécuter dans nouvelle fenêtre). 

images/11RI02.png
  • 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.

images/11RI03.png

 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.

images/11RI04.png

 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 :

images/11RI09.png
images/11RI10.png
images/11RI11.png

2.

Création d’un élément de données

Élément de données ZCATEGORY créé utilisant le domaine ZCATEGORY.

images/11RI12.png
images/11RI13.png

3.

Création d’une table

La table ZBOOKS est créée avec les éléments suivants :

  • Livraison et gestion

images/11RI14.png
  • Zones

images/11RI15.png
  • Aide/contrôle de saisie

images/11RI16.png
  • Options techniques

images/11RI17.png
  • 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

images/11RI18.png

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

images/11RI28.png

 Créez la classe ZCL_BOOKS par exemple avec les informations suivantes :

images/11RI29.png

 Renseignez une classe de développement ou créez-la comme objet local.

 Deux méthodes vont être créées : CONSTRUCTOR et GET_BOOKS.

images/11RI30.png

1.

CONSTRUCTOR

  • Type : Instance Method

  • Visibilité : Public

  • Description : Constructeur

  • Paramètre :

    • Nom : IV_CATEGORY

    • Passage par val. et facultatif non cochés

    • Méth. catégor. : Type

    • Type réf. : ZCATEGORY

images/11RI31.png

2.

GET_BOOKS

  • Type : Instance Method

  • Visibilité : Public

  • Description : Get a list of books

  • Paramètre :

    • Nom : T_BOOKS

    • Catégorie : Exporting

    • Passage par val. et facultatif non cochés

    • Méth. catégor. : Type

    • Type réf. : ZTT_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 :

  • F_SELECT_DATA : sélection des données de la table ZBOOKS.

  • F_DOM_VALUES : sélection des valeurs du domaine ZCATEGORY.

  • F_GET_ALV_DATA : construction de la table interne des données qui sera utilisée dans le rapport ALV.

  • F_ALV_DISPLAY : affichage de l’ALV.

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 :

images/11RI36.png

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 ...