Chapitre 7 Éléments de programmation ABAP

Les auteurs remercient Annie-Claude Pellerin pour sa contribution à ce chapitre.

Copyright © 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LÉGER et Suzanne RIVARD, HEC Montréal, Tous droits réserv pour tous pays. Toute traduction ou toute modification sous quelque forme que ce és soit est interdite. VERSION PRÉLIMINAIRE

INTRODUCTION ENVIRONNEMENT DE DÉVELOPPEMENT ABAP Editor ABAP Dictionary Dictionary Data Browser INTRODUCTION À LA PR OGRAMMATION EN ABAP Création d’un programme ABAP La structure d’un programme ABAP Fonctions usuelles de ABAP Editor Enregistrer et activer un programme STRUCTURE D’UN PROGRAMME ABAP Exemple d’un programme ABAP Commande REPORT En-tête Section : Tables Section : Data Section : Parameters & Select options Section : Initialization Section : Start-of-Selection COMMANDE WRITE, MISE EN FORME, OPÉRANDES ET ÉLÉMENTS DE TEXTE Commande WRITE Mise en forme Opérandes Chaînes de caractères – Text-elements STRUCTURES DE CONTRÔLE Les instructions de conditions Les boucles

4 5 5 6 7 9 9 13 14 16 16 16 18 19 21 21 24 26 26 27 27 29 32 34 40 40 46

TABLES INTERNES 48 Caractéristiques d’une table interne 48 Structure d’une table interne 49 Déclaration d’une table interne 49 Ajout d’enregistrements dans une table interne : Move, Append et Clear 51 Table interne et extraction de la base de données de SAP R/3 53 Afficher le contenu d’une table interne 54 Lecture d’un enregistrement à la fois (Commande Read) 56 Modification d’une table interne (Commande Modify) 59 Effacer un enregistrement (Commande DELETE) 62 Dénombrement des enregistrements de la table interne (Commande DESCRIBE) 64

Copyright © 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LÉGER et Suzanne RIVARD, HEC Montréal, Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRÉLIMINAIRE.

2

REQUÊTES SUR LA BASE DE DONNÉES La commande Select Fonctions d’agrégation Concaténer une requête RAPPORTS INTERACTIFS La commande At-line selection Champs de la table SY La commande Hide Le forage sur plusieurs niveaux La commande Window starting at […] ending at […] CRÉATION DE GRAPHIQUES Fonctions et commandes pour la création de graphiques Graphique à deux dimensions

65 65 69 70 72 72 73 74 76 79 80 80 81

Copyright © 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LÉGER et Suzanne RIVARD, HEC Montréal, Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRÉLIMINAIRE.

3

INTRODUCTION Ce chapitre constitue une introduction au langage de programmation Advanced Business Application Program (ABAP). Il s’agit d’un langage de programmation propriétaire utilisé par la compagnie allemande SAP pour le développement de son progiciel R/3. Plus de 99 % du code de R/3 est programmé en ABAP et toute modification ou ajout dans R/3 implique l’utilisation de ce langage de programmation. Pour les firmes ayant implanté R/3 de même que pour les consultants SAP, le langage de programmation ABAP offre la possibilité de modifier certains aspects du progiciel R/3. Entre autres, il permet de développer des interfaces et des rapports répondant plus adéquatement aux besoins spécifiques des utilisateurs de R/3.

Ce chapitre vise à initier le lecteur à la programmation ABAP. Au cours des différentes sections, nous présentons certains éléments de base nécessaires au développement d’interfaces et de rapports simples en ABAP. Ce chapitre ne remplace pas d’autres documents de référence plus complets . À ce sujet, nous référons le lecteur aux manuels suivants :

Hoffman Theodore, Writing SAP ABAP/4 Programs, Computi ng McGraw-Hill, 1998, 335 pages; Keller, H, Krüger, S., ABAP Objects, SAP Press, pages; Addison-Wesley, 2002, 556

Rüdiger Kretschmer et Wolfgang Weiss, Developing SAP's R/3 Applications with ABAP/4, Sybex, 1996, 657 pages.

Par ailleurs, le présent chapitre assume que le lecteur possède une connaissance de base en algorithmique de même qu’en matière de bases de données. La connaissance de certains langages de programmation procéduraux tels que Visual Basic ainsi que du langage de requête SQL devrait également faciliter la lecture de ce chapitre.

Copyright © 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LÉGER et Suzanne RIVARD, HEC Montréal, Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRÉLIMINAIRE.

4

se retrouvera principalement dans le dossier Overview et Development . Benoit A. portant sur le développement. HEC Montréal. de la suite logique des écrans et de la logique de la base de données. ABAP Editor L’ABAP Editor est le principal outil permettant de créer. l’ABAP Dictionary et le Dictionary Data Browser. Il gère la création et le maintien des programmes ABAP. Copyright © 2004. VERSION PRÉLIMINAIRE. Pour y accéder. nous aborderons successivement les outils suivants : l’ABAP Editor. Pierre-Majorique LÉGER et Suzanne RIVARD. Ce dernier contient l’ensemble des outils requis pour développer et maintenir les applications développées en langage de programmation AB AP. configurer et implanter. modifier et supprimer un programme ABAP. 5 . La prochaine section est consacré à l’ABAP Editor et explique en détails la création et la modification de programme ABAP. cliquez sur le module Tools > ABAP Workbench > Development > ABAP Editor ou saisir le numéro de transaction suivant : /nSE38.ENVIRONNEMENT DE DÉVELOPPEMENT L’environnement de développement se retrouve principalement dans l’ABAP Workbench. des modules de fonctions. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Dans le cadre de cette section. SAP R/3 : Comprendre. Il est à noter que le chemin d’accès à l’environnement de développement de SAP R/3 est le suivant : Tools > ABAP Workbench. C’est à l’aide de cet outil qu’il vous sera possible de programmer en ABAP. AUBERT. Tous droits réservés pour tous pays. La plupart des outils u tilisés dans cette section.

Copyright © 2004. HEC Montréal. 6 . par exemple. leur longueur. La structure de la table SFLIGHT dévoile plusieurs attributs comme le nom de ses champs. L’ABAP Dictionary permet d’accéder aux structures de données des différentes tables contenues dans SAP R/3. VERSION PRÉLIMINAIRE. Pour visualiser la structure d’une table. SAP R/3 : Comprendre. il suffit de se rendre dans l’ABAP Dictionary (SE11) et saisir le nom de cette table sous le champ Database Table. le type de données.ABAP Dictionary Au même titre que l’ABAP Editor. Tous droits réservés pour tous pays. Pierre-Majorique LÉGER et Suzanne RIVARD. leur description. Avec ces attributs. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Prenons exemple sur la table SFLIGHT. Benoit A. AUBERT. de connaître le nombre d’occupants sur un vol donné. etc. Cliquez sur le bouton Display pour faire afficher la structure de données de cette table. l’ABAP Dictionary se retrouve aussi sous l’onglet Development du ABAP Workbench. configurer et implanter. il est possible d’effectuer des requêtes permettant.

Pour se rendre au Dictionary Data Browser: Tools > ABAP Workbench > Overview > Data Browser (/nSE16). Dans notre cas. Copyright © 2004. etc.Le système Table-Champs SY-DATUM SY-TCODE SY-MANDT SY-LANGU SY-UNAME SY-UZEIT SY-REPID SY-SUBRC Description Date du système Numéro de la transaction en cours (ex : SE38) Numéro du client utilisé (ex : 401) Langage de la session (ex : EN) Nom d’usager Heure du serveur Nom du programme en cours Valeur du test logique Dictionary Data Browser Le Data Browser permet de visualiser les enregistrements des tables de données de R/3. Cette table contient différentes informations de session tels que la date du système. 7 . Toute traduction ou toute modification sous quelque forme que ce soit est interdite. AUBERT. configurer et implanter. Il s’agit d’une table très utile dans le cadre du développement d’un programme ABAP. Tous droits réservés pour tous pays. le nom du l’utilisateur. SAP R/3 : Comprendre. inscrire SFLIGHT puis cliquez sur Enter . Benoit A. Pierre-Majorique LÉGER et Suzanne RIVARD.Prenons un autre exemple : la table SY. L’écran qui apparaît permet de raffiner la recherche des enregistrements. Il suffit alors d’inscrire le nom de la table dans le champ approprié. Il affiche tous les champs de la table SFLIGHT. la langue d’utilisation. HEC Montréal. VERSION PRÉLIMINAIRE. Tableau 1 . Le tableau 1 présente certains des champs de cette table.

VERSION PRÉLIMINAIRE. dont l’acronyme (CARRID) se situe dans l’intervalle alphabétique saisie par l’utilisateur (en l’instance de AC à BA). puis sur son bouton . Benoit A. 8 . Seuls les noms des compagnies aériennes. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.Pour raffiner une recherche. cliquer dans l’un des champs d’expansion prendre. . SAP R/3 : Comprendre. Une nouvelle fenêtre affichera toutes les valeurs que le champ peut Sélectionner la valeur désirée pour désigner la limite (en l’instance de AC à BA) inférieure et supérieure de la recherche puis cliquez sur E xécuter . Voici un échantillon des résultats : Copyright © 2004. AUBERT. configurer et implanter. HEC Montréal. seront affichés à l’écran. Pierre-Majorique LÉGER et Suzanne RIVARD. Tous droits réservés pour tous pays.

Création d’un programme ABAP La création d’un programme ABAP se fait à partir de la transaction ABAP Editor (SE38). Nous expliquons d’abord comment créer un programme en ABAP dans l’ABAP Editor.Pour afficher tous les enregistrements de la table SFLIGHT. Benoit A. INTRODUCTION À LA PROGRAMMATION EN ABAP Cette section vise à introduire le lecteur à la programmation en ABAP. Pierre-Majorique LÉGER et Suzanne RIVARD. La figure ci-dessous présente l’écran initial de l’ ABAP Editor. nous terminons cette section sur l’enregistrement des programmes ABAP de même que sur leur activation. Après avoir présenté certaines spécificités de la programmation en ABAP de même que les fonctions usuelles de l’ABAP Editor. ne rien inscrire dans les champs d’intervalles et simplement cliquez sur Exécuter . HEC Montréal. La résultante de cette action permet d’afficher tous les enregistrements de la table SFLIGHT. configurer et implanter. Tous droits réservés pour tous pays. Un programme ABAP simple est ensuite illustré afin de mettre en évidence les différentes parties qui le composent. VERSION PRÉLIMINAIRE. SAP R/3 : Comprendre. 9 . AUBERT. Copyright © 2004. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.

b) Cliquez sur l’icône Copy . par convention. Dans notre cas. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Votre professeur vous indiquera la lettre qui est associée à votre cours pour votre session. le Y signifie un programme temporaire qui ne fera pas partie du système de production. Tous droits réservés pour tous pays. VERSION PRÉLIMINAIRE. saisir le nom du programme recherché dans le champ Program. saisir YX00ex_gabarit. Dans notre cas. Copyright © 2004. Procédure pour copier le gabarit YX00EX_gabarit a) Une fois l’ABAP Editor ouvert. Pierre-Majorique LÉGER et Suzanne RIVARD. AUBERT. HEC Montréal. Comme il est souvent plus aisé de copier un gabarit de programme ABAP plutôt que de partir d’une feuille blanche. Le caractère point d’interrogation correspond à la session en cours et s’incrémente d’une année scolaire à une autre. 10 . R/3 requiert que la première lettre d’un programme désigne sa provenance ou son utilité. les programmes ABAP créés dans le cadre des formations SAP à HEC Montréal doivent être nommés sous la forme suivante : Y?##EX_&&. les opérations suivantes expliquent comment dupliquer le gabarit YX00EX_gabarit afin de l’utiliser dans un nouveau programme.Notons avant de poursuivre que. Par ailleurs. SAP R/3 : Comprendre. configurer et implanter. Les caractères « ## » correspondent aux derniers numéros de votre code d’us ager et « && » au numéro de l’exercice. Benoit A.

Ainsi. « && » = numéro de l’exercice ou nom de l’exercice. AUBERT. d) Pour confirmer l’opération. « y » = programme temporaire. configurer et implanter. inscrire le nom de votre programme tout en vous conformant au format décrit dans la section précédente. « ? » = lettre indiquée par le professeur (par exemple « a »). HEC Montréal. le résultat final serait YA25ex_30. Cette fenêtre apparaîtra : Copyright © 2004. « ## » = les 2 derniers chiffres de votre code usager (par exemple si le code d’usager est zhec3715_25 . Toute traduction ou toute modification sous quelque forme que ce soit est interdite. cliquez sur le bouton . dans cet exemple. Tous droits réservés pour tous pays. SAP R/3 : Comprendre. VERSION PRÉLIMINAIRE. 11 . le « ## » serait remplacé par 25).c) Sous Target Program. Benoit A. Pierre-Majorique LÉGER et Suzanne RIVARD.

l’opt ion code source (Source Code) est sélectionnée. SAP R/3 : Comprendre.e) S’assurer que les deux premières options (source et text elements) soient cochées. Cette dernière permet d’accéder directement au code du programme. g) Enregistrer les modifications apportées en cliquant sur le bouton d’enregistrement . f) Dans la fenêtre suivante. AUBERT. Pierre-Majorique LÉGER et Suzanne RIVARD. HEC Montréal. puis appuyer sur Copy . Tous droits réservés pour tous pays. VERSION PRÉLIMINAIRE. Benoit A. 12 . Toute traduction ou toute modification sous quelque forme que ce soit est interdite. configurer et implanter. inscrire dans le champ Development class : $TMP Le champ Person responsible devrait représenter votre nom d’utilisateur lors de l’ouverture d’une session dans SAP R/3. Copyright © 2004.Le message suivant devrait apparaître au bas de l’écran : h) Par défaut.

i) Pour faire afficher le programme nouvellement copié. HEC Montréal. Voici un exemple d’un programme ABAP simple illustrant ces trois sections. la seconde servant à déclarer les variables ainsi que les paramètres et la dernière contenant l’écriture de la procédure. AUBERT. utiliser le bouton « Change ». En-tête Déclaration des variables Procédures Lorsque le programme ci-haut sera exécuté. SAP R/3 : Comprendre. la phrase suivante apparaîtra à l’écran : Copyright © 2004. configurer et implanter. VERSION PRÉLIMINAIRE. Chaque programme codé en ABAP doit contenir trois parties. la première décrivant le programme en question. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Pierre-Majorique LÉGER et Suzanne RIVARD. Tous droits réservés pour tous pays.Pellerin * * Matricule: * * * * Description du programme: * * Faire afficher une phrase à l'écran * * * * Inputs: Outputs: À l'écran * * * * * * Historique des modifications: * * Date: Programmeur: Description: * * * ************************************************************** ***** Tables ********** ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *Faire afficher à l'écran : Programmer en langage ABAP write:/ 'Programmer en langage ABAP'. REPORT YX00EX_PROGRAMME NO STANDARD PAGE HEADING. La structure d’un programme ABAP Un programme ABAP est un ensemble d’instructions composé de variables et de procédures acceptées par R/3. ************************************************************** * Exercice: Cours: 3 -715-00 * * Date rendue: Trimestre: * * * * Nom du programme: Programmeur: A. cliquez sur le bouton Display et pour le modifier. 13 . Benoit A.C.

SAP R/3 : Comprendre. Afin de faciliter la lecture des programmes. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. le texte apparaîtra alors en bleu. L’ABAP Editor ne tient pas compte de la différence entre les minuscules et les majuscules ( « case insensitive») sauf en ce qui concerne les chaînes de caractères. mais non recommandable. AUBERT. VERSION PRÉLIMINAIRE. Fonctions usuelles de ABAP Editor La figure ci-dessous présente la barre d’outil de l’ABAP Editor. Benoit A. Copyright © 2004.Spécifications lors de la programmation en ABAP Lors de la programmation en ABAP. La fonction de chacun des icônes est expliquée dans le tableau 2. Il est possible. L’omission du point provoque l’échec de l’exécution du programme. Pour faire des commentaires utiliser l’étoile (*). d’inscrire plus d’une instruction par ligne. . Tous droits réservés pour tous pays. configurer et implanter. 14 . HEC Montréal. certaines règles doivent être suivies afin de s’assurer du bon fonctionnement du programme en question ou de clarifier la structure de celui-ci : • • • • • • Chaque instruction se termine par un point. Pierre-Majorique LÉGER et Suzanne RIVARD. Les chaînes de caractères doivent se retrouver entre des guillemets simples comme ceci : ‘Bonjour’. une instruction peut être divisée sur plus d’une ligne.

AUBERT. Pour ce faire. Par exemple : ouvrir un nouveau programme. visualiser les champs d’une table spécifique (/nSE11). Active/Inactive Other object Check Activate Test Where used-list Display object list Display navigation window Help on Set/delete breakpoint Pretty Printer Copyright © 2004. vues utilisant ce même objet. etc.Tableau 2 . ou placer le curseur de la souris sur celui-ci. Pierre-Majorique LÉGER et Suzanne RIVARD. tables de données. VERSION PRÉLIMINAIRE. Affiche la liste des objets utilisés dans le programme Affiche la fenêtre de navigation Documentation disponible directement dans SAP R/3 couvrant plusieurs sujets sous le thème de la programmation en ABAP Installation et suppression de drapeaux. double-cliquez sur l’objet en question. SAP R/3 : Comprendre. 15 .Description des principales fonctions de la barre d'outil de l'ABAP Editor Icône Fonction Previous Next Display/Change Description Revenir à la page précédente Aller à la page suivante Passer du mode Afficher (Display) au mode Modifier (Change) Le programme est disponible pour l’ensemble de R/3 lorsqu’il est actif ou se limite à l’ABAP Workbench lorsqu’il est inactif Permet d’effectuer différentes recherches sans sortir du programme. écrans. Effectue une validation de la syntaxe du programme Rend le programme disponible pour l’ensemble de R/3 Exécute le programme (et le compile si ce n’est pas déjà fait) Permet de faire afficher la liste des programmes. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. et sélectionner le bouton Where used-list. Option rarement utilisée. Benoit A. HEC Montréal. Permet de formater le document pour l’impression. Tous droits réservés pour tous pays. Permet de signaler au débogueur de SAP R/3 que le programme doit s’arrêter là où l’on retrouve cet arrêt. configurer et implanter.

e) la section Parameters & Select Options. il importe d’enregistrer ce dernier en cliquant sur l’icône de sauvegarde . b) l’en-tête. Copyright © 2004. HEC Montréal. Pierre-Majorique LÉGER et Suzanne RIVARD. SAP R/3 : Comprendre. AUBERT. Cet exemple vise à illustrer la structure typique d’un programme ABAP. configurer et implanter.Enregistrer et activer un programme Après toutes modifications au code d’un programme ABAP. nous débutons par un exemple complet de programme. VERSION PRÉLIMINAIRE. Exemple d’un programme ABAP Les différentes parties que l’on retrouve généralement dans un programme ABAP sont les suivantes : a) la commande Report. il faut activer le programme pour le rendre disponible dans SAP R/3 et ce en cliquant sur le bouton activer . Par ailleurs. Benoit A. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. c) la section Tables. Le reste de la section s’attarde individuellement sur chacune des différentes parties d’un programme ABAP. f) la section Initialization. STRUCTURE D’UN PROGRAMME ABAP Cette section présente en détail la structure d’un programme ABAP. Pour faciliter la compréhens ion du lecteur. Tous droits réservés pour tous pays. 16 . g) et finalement la section Start of Selection. d) la section Data.

. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.Voici un exemple de programme ABAP délimité en fonction de cette structure : REPORT YX101 NO STANDARD PAGE HEADING. *boucle affichant les données trouvées loop at itable. 30 'Monnaie'(003). Benoit A. endif. itable-currcode under text-003. ***** Initialization ********* ***** Start of Selection ***** *requête select * from scarr into table itable where carrid = air_id. configurer et implanter. Pierre-Majorique LÉGER et Suzanne RIVARD. 10 'Nom'(002). ***** Parameters & Select Options ***** *déclaration d'un paramètre parameters: air_id like scarr-carrid. AUBERT. include structure scarr. 17 . endloop. ***** Data ************ *déclaration d'une table interne data: begin of itable occurs 0. write:/ itable-carrid under text-001. HEC Montréal. Copyright © 2004. else. data: end of itable. ************************************************************** * Exercice: Cours: 3-715-00 * * Date rendue: Trimestre: * * * * Nom du programme: Programmeur: ACP * * Matricule: * * * * Description du programme: * * Structure d’un programme abap * * * * Inputs: ? Parameters Outputs: * * Tables utilisées: * * * * Historique des modifications: * * Date: Programmeur: Description: * * * ************************************************************** ***** Tables ********** *utilisation de la table scarr tables: scarr. SAP R/3 : Comprendre. Tous droits réservés pour tous pays. *si on trouve des données pour la requête .. write 'Aucune donnée trouvée'(004). VERSION PRÉLIMINAIRE. itable-carrname under text-002. if sy-subrc = 0. *écrire comme en-tête write: /01 'ID'(001).

La commande REPORT se rédige de la manière suivante : REPORT nom_programme [NO STANDARD PAGE HEADING] [MESSAGE-ID] [LINE-SIZE] [LINE-COUNT] Copyright © 2004. Tous droits réservés pour tous pays. configurer et implanter. dans la commande REPORT. VERSION PRÉLIMINAIRE. SAP R/3 : Comprendre. Par exemple. le programme affiche à l’écran le résultat suivant : Commande REPORT La première ligne d’un programme ABAP se nomme la commande REPORT. Compte tenu de la valeur saisie dans l’écran précédent. 18 . Toute traduction ou toute modification sous quelque forme que ce soit est interdite. La commande REPORT offre différentes options permettant de spécifier certaines fonctions et limites du programme. le nouveau programme affiche la commande REPORT du programme original. Pierre-Majorique LÉGER et Suzanne RIVARD. HEC Montréal. Lors de la création d’un nouveau programme. Le programmeur doit donc changer le nom affiché. en fonction du nom du nouveau programme. AUBERT. Benoit A. elle s’ajoute automatiquement afin de l’identifier. il est possible de limiter le nombre de lignes et de colonnes par page qu’affichera le programme.Voici l’écran de saisie appelé dans ce programme. Il est à noter que lorsque l’on copie un programme existant. Il s’agit de l’interface perm ettant à l’utilisateur de saisir une valeur qui sera utilisée lors de l’exécution du programme.

VERSION PRÉLIMINAIRE. Tous droits réservés pour tous pays. Copyright © 2004. Dans le cadre des cours de formations SAP à HEC Montréal. configurer et implanter.Tableau 3 . SAP R/3 : Comprendre. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. HEC Montréal. 19 . Benoit A. AUBERT. l’en-tête utilisé est celui du gabarit YX00ex_gabarit. Pierre-Majorique LÉGER et Suzanne RIVARD. La figure ci-dessous présente cet en-tête.Options de la commande REPORT Options NO STANDARD PAGE HEADING MESSAGE-ID Description Affiche un en-tête par défaut Permet l’affichage de messages à l’aide d’un numéro identifiant ce dernier Nombre de colonnes contenues dans une page Nombre de lignes par page LINE-SIZE LINE -COUNT Voici la commande REPORT apparaissant au haut du programme YX102 : REPORT YX102 NO STANDARD PAGE HEADING MESSAGE-ID ZU LINE-SIZE 100 LINE-COUNT 20. le programme de même que toute autre information qui pourrait faciliter la compréhension du code à un tiers. En-tête La première partie d’un programme est généralement consacrée à des informations concernant le ou les programmeurs.

Pellerin * * Matricule: * * * * Description du programme: gabarit de la structure * * d'un programme * * * * * * Inputs: Outputs: À l'écran * * * * * * Historique des modifications: * * Date: Programmeur: Description: * * * ************************************************************** On retrouve également dans ce gabarit un second bloc de commentaires (voir figure suivante). Évidemment. configurer et implanter.Marqueurs de délimitation du programme YX00EX_GABARIT ***** Tables ********** ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** Copyright © 2004. puisque ce sont des commentaires. VERSION PRÉLIMINAIRE.Figure 1 – En-tête du gabarit YX00EX_GABARIT ************************************************************** * Exercice: Cours: 3 -715-00 * * Date rendue: Trimestre: * * * * Nom du programme: Programmeur: A.C. Ces 5 marqueurs sont utilisés pour délimiter les autres sections d’un programme afin d’en faciliter la lecture. 20 . Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Benoit A. AUBERT. Pierre-Majorique LÉGER et Suzanne RIVARD. HEC Montréal. Figure 2 . SAP R/3 : Comprendre. ils n’affectent en rien le déroulement du programme. Tous droits réservés pour tous pays.

Pierre-Majorique LÉGER et Suzanne RIVARD. Tous droits réservés pour tous pays. il suffit d’ajouter le nom des tables en question. spfli. un programme qui utilise le champ PLANETYPE de la table SFLIGHT. en les séparant par une virgule. SAP R/3 : Comprendre. Si le programme utilise plusieurs tables. doit contenir la déclaration suivante : *****Tables***** *table utilisée TABLES: sflight. les uns à la suite des autres. Copyright © 2004. VERSION PRÉLIMINAIRE. Section : Data Toutes les nouvelles variables utilisées dans un programme ABAP doivent être déclarées dans la section Data. Ainsi. HEC Montréal. Voici le format utilisé pour déclarer une nouvelle variable en ABAP : DATA : <name> LENGTH TYPE VALUE DECIMALS. configurer et implanter. *****Tables***** TABLES: sflight. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.Section : Tables Les tables de la base de données de SAP R/3 qui sont utilisées dans un programme doivent être identifiées dans la section Tables . 21 . AUBERT. Benoit A.

22 . Benoit A. Tous droits réservés pour tous pays. Pierre-Majorique LÉGER et Suzanne RIVARD. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. habituellement utilisés dans la déclaration des variables. format HHMMSS Décimal condensé (arrondi) EXEMPLE ‘Bonjour’ 19690623 7. Lorsqu’une variable est de type décimal (P). Les différents types de données. on doit spécifie le nombre de chiffres après la virgule.50 TYPE D F I N T P VALUE Ce champ permet de spécifier une valeur par défaut à la variable. sont présentés dans le tableau cidessous : DESCRIPTION C Caractère Date.Tableau 4 . DECIMALS Copyright © 2004.Déclaration dans la section DATA Fonctions Description Chacune des variables que l’on retrouve dans un programme doit être déclarée dans la section Data. VERSION PRÉLIMINAIRE. configurer et implanter. Le type d’une nouvelle variable doit être déclaré. AUBERT.5 789 10000 123456 36. format YYYYMMDD Point flottant Nombre entier Texte numérique Heure. SAP R/3 : Comprendre. cela porte à confusion avec les champs des tables N’utilise pas de mots réservés (commandes ABAP) § § § LENGTH La longueur du champ ( length) doit être spécifiée à droite de son nom. HEC Montréal. Le langage ABAP impose que le nom des variables : § NAME Soit d’un maximum 30 caractères Débute par une lettre N’utilise pas le tiret (-) même s’il est permis.

il n’est pas nécessaire de déclarer le type de donnée de la nouvelle variable. AUBERT. cette variable est de type décimal arrondi (p) et doit afficher 2 chiffres après la virgule. SAP R/3 : Comprendre. DATA : <name> LIKE table-champs. Pour ce faire. Dans un tel cas. L’exemple suivant déclare trois variables calquées sur des champs de la table SCARR de la base de données IDES de SAP R/3. 23 . le programme suivant crée la variable montant_total. HEC Montréal. s_currcode LIKE SCARR-CURRCODE. D’une longueur de 6 caractères. Benoit A. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. s_carrname LIKE SCARR-CARRNAME. vous devez utiliser l’expression Like. VERSION PRÉLIMINAIRE. Copyright © 2004. Il n’est pas non plus nécessaire de déclarer les tables de références dans la section tables. puisqu’elle viendra calquer le type du champ auquel elle fait référence. *****Data***** DATA: s_carrid LIKE SCARR-CARRID. configurer et implanter. Cette variable doit donc être déclarée de la façon suivante : *****Data***** DATA : montant_total(6) TYPE p DECIMALS 2. Notons qu’il est souvent plus facile de faire référence à une variable existante dans R/3 plutôt que d’en déclarer une complètement nouvelle.À titre d’exemple. Pierre-Majorique LÉGER et Suzanne RIVARD. Tous droits réservés pour tous pays.

24 . configurer et implanter. Copyright © 2004. Section : Parameters & Select options Parameters La section Parameters permet de déclarer des variables dont la valeur sera saisie ultérieurement dans un formulaire par l’utilisateur du système. HEC Montréal. le formulaire de saisie des paramètres s’affichera de la manière suivante : Soulignons que l’option Obligatory oblige l’utilisateur à saisir une valeur dans le champ de la variable obligatoire spécifiée. nb_2 TYPE i. Par exemple. Si ce champ n’est pas complété. operande(1) TYP E C OBLIGATORY. AUBERT.À titre d’information. VERSION PRÉLIMINAIRE. Tous droits réservés pour tous pays. Le nom d’un paramètre ne doit pas dépasser 8 caractères. le programme ne pourra pas s’exécuter. le programme YX110 crée une interface permettant de faire certaines opérations arithmétiques de base : *****Parameters***** PARAMETERS: nb_1 TYPE i. la figure suivante présente un extrait de la table SCARR avec les variables de références utilisées dans l’exemple. Benoit A. À l’écran. SAP R/3 : Comprendre. Pierre-Majorique LÉGER et Suzanne RIVARD. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.

AUBERT. D’ailleurs. Cependant. Pierre-Majorique LÉGER et Suzanne RIVARD.Select-Options Le Select-Options est similaire au Parameters. La liste des vols (champ FLDATE ) est contenue dans la table SFLIGHT : ***** Tables ********** TABLES: sflight. le formulaire de saisie des dates de vols qui ont été effectués durant un intervalle donné s’affichera de la manière suivante : Parameters & Select-Options Il est possible de jumeler la déclaration du Select-Options avec celle du Parameters. Le Select-Options du programme YX120. À l’écran. 25 . ***** Data ************ ***** Parameters & Select Options ***** *interface de sélection des dates SELECT-OPTIONS: Date_vol FOR SFLIGHT-FLDATE. VERSION PRÉLIMINAIRE. SAP R/3 : Comprendre. Benoit A. Enfin. permettra de saisir un intervalle de date pour faire afficher tous les vols effectués durant la période spécifiée. Copyright © 2004. HEC Montréal. les tables utilisées lors de requêtes doivent être déclarées dans la section Tables. soulignons que le nom donné à un Select-Options ne doit pas dépasser 8 caractères. configurer et implanter. Voici un exemple de programmation d’un formulaire permettant de rechercher l’ensemble des vols d’une compagnie (Cie) durant une certaine période de temps (durée). Toute traduction ou toute modification sous quelque forme que ce soit est interdite. le Select-options ne peut être utilisé que pour faire des requêtes sur les tables de SAP R/3. avec d’une part des critères et d’autre part des intervalles. Un formulaire de requête ainsi créé permet de chercher sur plusieurs champs. Tous droits réservés pour tous pays. Il permet à l’utilisateur de saisir un intervalle de valeur.

AUBERT. Dans le cadre des formations SAP à HEC Montréal. Benoit A. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Tous droits réservés pour tous pays. sflight. le formulaire de saisie du programme YX130 s’affichera de la manière suivante : Le programme en langage ABAP permettant de faire afficher l’interface ci-haute est le suivant : ***** Tables ********** TABLES: spfli. SAP R/3 : Comprendre. VERSION PRÉLIMINAIRE. configurer et implanter. SELECT-OPTIONS: Duree FOR SFLIGHT-FLDATE. 26 . ce type de fonction ne sera pas utilisé. la majeure partie du code se situe dans le Start-of-Selection puisque c’est dans cette partie que l’on retrouve les instructions à exécuter. Les prochaines sections de ce chapitre sont consacrées à l’explication des fonctions de programmation utilisées dans le Start-of-Selection. Section : Initialization L’événement d’initialisation est déclenché avant l’affichage du premier écran. Section : Start-of-Selection Habituellement. Pierre-Majorique LÉGER et Suzanne RIVARD. HEC Montréal. Copyright © 2004. Il est recommandé d’utiliser cet événement pour saisir des valeurs par défaut complexes. ***** Data ************ ***** Parameters & Select Options ***** PARAMETERS: Cie LIKE SPFLI-CARRID.À l’écran.

Toute traduction ou toute modification sous quelque forme que ce soit est interdite.COMMANDE WRITE. SAP R/3 : Comprendre. MISE EN FORME. La commande est suivi du symbole « : » et le texte à afficher doit être précédé et suivi du guillemet simple « ' ». Benoit A. Par exemple : WRITE : 'Bienvenue à l’’aéroport Pierre-Éliot-Trudeau'. Dans sa forme la plus simple. Pierre-Majorique LÉGER et Suzanne RIVARD. la commande Write se rédige de la manière suivante : WRITE : 'Bonjour'. Commande WRITE La commande Write permet d’afficher à l’écran les résultats de l’exécution d’un programme. il importe de savoir que les chaînes de caractères comportant une apostrophe doivent saisir cette dernière deux fois. les fonctions de mise en forme et la déclaration des éléments de texte. dans l’écran. 27 . Par ailleurs. Certaines options peuvent être ajoutées à la fonction Write afin d’identifier le positionnement. configurer et implanter. AUBERT. HEC Montréal. Tous droits réservés pour tous pays. Nous abordons successivement la commande d’écriture (WRITE). du texte à afficher. OPÉRANDES ET ÉLÉMENTS DE TEXTE Cette section est consacrée à différentes fonctions reliées à la présentation et à la mise en forme des formulaires. Voici comment se rédigent ces options de positionnement : WRITE : </> <colonne> <(longueur)> Copyright © 2004. VERSION PRÉLIMINAIRE. pour ne pas entrer en confusion avec la fin réelle de la chaîne de caractères.

configurer et implanter. Copyright © 2004. Il est à remarquer que la fonction saut de ligne permet d’afficher ces expressions sur des lignes distinctes et que l’option d’emplacement correspond au nombre de caractères qui sépare l’expression de la gauche de l’écran. 28 . 'ABAP'. le programme précédent s’affiche tel qu’illustré ci-dessous. AUBERT. Benoit A. 'Technologie de l’’ information'. À l’écran.Options de positionnement de la commande Write Option / Colonne Description Saute à la prochaine ligne Identifie l’emplacement de l’affichage Longueur Nombre de caractères à écrire Les deux programmes suivant présentent différentes utilisations des options de positionnement de la commande Write. 'Aspects technologiques'. SAP R/3 : Comprendre. VERSION PRÉLIMINAIRE. Pierre-Majorique LÉGER et Suzanne RIVARD. utilise ***** Start of Selection ***** *affichage des phrases WRITE : /10 /15 /20 /15 'SAP'.Tableau 5. HEC Montréal. Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Le premier programme (YX140) uniquement l’option de saut de ligne et l’option d’emplacement (colonne).

Ainsi. /15 'Technologie de l’’ information'. configurer et implanter. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Il est important de noter que l’option longueur limite le nombre de caractères affichés. AUBERT. 29 . VERSION PRÉLIMINAIRE. ***** Start of Selection ***** *affichage des résultats WRITE : /5(3) 'SAP'. 'Aspects Technologiques'. seulement les 2 premiers caractères de l’expression. HEC Montréal. Mise en forme L’ABAP Editor comporte différentes fonctions permettant une certaine mise en forme de l’affichage à l’écran. Tous droits réservés pour tous pays. au lieu d’écrire ABAP en entier. 'et'. L’affichage de ce programme est illustré ci-après. le programmeur doit insérer les commandes de mise en forme dans son code afin de modifier la présentation à l’écran. Tableau 6 .Principales fonctions de mise en forme de l'affichage Fonction ULINE SY-VLINE SKIP n SKIP TO LINE n WRITE: /colonne n Description Trace une ligne horizontale Ligne verticale utilisée pour la création d’un tableau Saute n lignes Saute à la ligne n Écrire à partir de la colonne n Copyright © 2004. SAP R/3 : Comprendre. Benoit A. Pierre-Majorique LÉGER et Suzanne RIVARD. /5(2) 'ABAP'. le programme affiche. Cette section présente un résumé des commandes les plus utilisées. tel que spécifié par le (2).Le second programme (YX141) utilise les trois options d’affichage. Pour ce faire.

30 . /5 SY-VLINE. configurer et implanter. Nous avons commenté le programme afin d’expliquer l’effet de chacune de ces fonctions sur l’affic hage à l’écran. Tous droits réservés pour tous pays. AUBERT. 5 et 10 en *sautant une ligne à chaque fois WRITE:/1 SY-VLINE. /10 SY-VLINE. ***** Start of Selection ***** *trace une ligne horizontale débutant à la colonne #1 et *se terminant à la colonne # 100 uline at /1(100). SAP R/3 : Comprendre. HEC Montréal. *débute l'écriture de la phrase à la colonne numéro 25 WRITE: /25 'Cette phrase commence à la position 25'. *trace une ligne verticale à la position 1. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Benoit A. Copyright © 2004. VERSION PRÉLIMINAIRE. Pierre-Majorique LÉGER et Suzanne RIVARD. *saute 5 lignes SKIP 5. *se rend à la ligne 6 SKIP TO LINE 6.Le programme suivant (YX150) utilise ces différentes fonctions de mise en forme.

AUBERT. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Cette fonctionnalité est présentée un peu plus tard dans ce chapitre avec les autres structures de contrôle. VERSION PRÉLIMINAIRE. configurer et implanter. HEC Montréal. Benoit A. l’utilisation d’une boucle est souvent nécessaire afin de répéter le nombre de lignes horizontales (ULINE) et verticales (SY-VLINE) requis. Copyright © 2004. 31 . Tous droits réservés pour tous pays. Pierre-Majorique LÉGER et Suzanne RIVARD. SAP R/3 : Comprendre. Notons enfin que pour réaliser l’affichage d’un tableau.La figure ci-dessous illustre à quoi ressemblerait l’affichage de ce programme.

Tableau 7 . Tous droits réservés pour tous pays. Pierre-Majorique LÉGER et Suzanne RIVARD.Opérateurs arithmétiques les plus utilisés Nom Addition Soustraction Division Multiplication Exposant Modulo Division entière Commandes + / * ** MOD DIV Fonctions arithmétiques Racine carrée Logarithme SQRT( ) LOG( ) Il est à noter que. Voici donc un tableau indiquant les opérateurs arithmétiques les plus utilisés. VERSION PRÉLIMINAIRE.Opérandes Plusieurs programmes nécessitent l’utilisation d’opérandes afin d’exécuter des calculs de différentes natures. AUBERT. lors de l’utilisation des fonctions arithmétiques. SAP R/3 : Comprendre. les valeurs entre parenthèses doivent être précédées et suivies d’un espace comme ceci : sqrt ( 10 ) . HEC Montréal. Copyright © 2004. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Benoit A. configurer et implanter. 32 .

R2 TYPE i. R2. ***** Tables ********** ***** Data ************ DATA: R1 TYPE i.Le programme suivant (YX171) exécute des calculs sur des variables déclarées dans la section Data. *La commande WRITE permet d’afficher les résultats *à l’écran et la barre *oblique produit un saut de ligne. R4 = D1 mod D2. Pierre-Majorique LÉGER et Suzanne RIVARD. L’exécution de ce programme permet d’afficher à l’écran le résultat suivant : Copyright © 2004. R3 = D2 / D1. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. configurer et implanter. Tous droits réservés pour tous pays. WRITE : / / / R1. D2 TYPE i VALUE '20'. Benoit A. AUBERT. ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** R1 = D1 + D2. D1 TYPE i VALUE '5'. HEC Montréal. R4 TYPE i.R4. SAP R/3 : Comprendre. R3 TYPE i. VERSION PRÉLIMINAIRE. R3. R2 = D1 * D2. 33 .

Le programme YX160 est rédigé en anglais et l’en-tête du rapport est composé des éléments de texte suivants : WRITE: /02 'No_Order'(201). VERSION PRÉLIMINAIRE. Order_value et No_salesrep. 34 . il importe de déclarer toutes les chaînes de caractères utilisées dans le programme afin de faciliter sa traduction subséquente. En anglais. En français. Chaque traduction doit être saisie une à une et c’est donc pourquoi il peut arriver. Prenons l’exemple d’une entreprise possédant une filiale francophone et une filiale anglophone. de tomber dans R/3 sur des expressions en allemand au sein de certains rapports ou interfaces rarement utilisées ! Lors du développement d’un rapport ou d’une interface en ABAP. chaque terme (élément de texte) utilisé dans SAP doit être répertorié et numéroté afin d’y associer la traduction appropriée. ces termes se traduisent de la manière suivante : le No_com. No_customer. 57 'No_Salesrep'(204). 36 'Order_Value'(203). SAP R/3 : Comprendre. Copyright © 2004. il suffit d’inscrire un numéro. la Valeur_com et le No_vendeur. le rapport doit afficher les informations suivantes : No_order . HEC Montréal. La majorité des interfaces et rapports disponibles dans R/3 ont été préalablement traduits et sont accessibles dans les principales langues disponibles dans SAP R/3. entre parenthèse. Évidemment.Chaînes de caractères – Text-elements SAP R/3 offre la possibilité de modifier la langue utilisée par l’application (fonctionnalité multilingue). Pour ce faire. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. AUBERT. le No_client. R/3 ne traduit pas lui-même les éléments de texte. Pierre-Majorique LÉGER et Suzanne RIVARD. L’entreprise souhaite développer un rapport de vente journalier personnalisé pouvant s’afficher dans les deux langues. 20 'No_Customer'(202). à la suite de chaque élément de texte du programme et de suivre la procédure cidessous pour les répertorier. configurer et implanter. à l’occasion. Tous droits réservés pour tous pays. Benoit A. Concrètement.

Procédure pour répertorier les éléments de texte La numérotation de ces éléments de texte et le fait de les répertorier dans un index permettront de traduire automatiquement l’en-tête du rapport (en assumant que la traduction des termes a été saisie préalablement). Jusqu’à maintenant. b) Un écran répertoriant l’ensemble des éléments de texte du programme suivra. ou sur le numéro suivant ce dernier (201). 35 . Tous droits réservés pour tous pays. Une fenêtre comme celle-ci apparaîtra : Cliquez sur Yes. Benoit A. soit ‘No_order’. Les cinq étapes suivantes expliquent comment répertorier les éléments de texte de l’exemple précédent. AUBERT. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. configurer et implanter. Pierre-Majorique LÉGER et Suzanne RIVARD. nous avons répertorié que le premier élément de texte du programme. HEC Montréal. SAP R/3 : Comprendre. VERSION PRÉLIMINAIRE. Copyright © 2004. a) Double-cliquez sur le premier élément de texte.

c) Pour activer l’élément sélectionné. VERSION PRÉLIMINAIRE. 36 . tous les éléments de texte se retrouvent répertoriés. Benoit A. Pierre-Majorique LÉGER et Suzanne RIVARD. Sélectionner le nom du programme puis cliquez sur le bouton Continue . HEC Montréal. Tous droits réservés pour tous pays. le message suivant apparaîtra : e) Suivre la même procédure pour tous les éléments de texte. Finalement. AUBERT. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. configurer et implanter. Au bas de l’écran. Copyright © 2004. Il est aussi possible d’y accéder par le chemin d’accès suivant : Tools > ABAP Workbench > Development > Programming environ > Text elements . cliquez sur le bouton Activate . Voici la procédure à suivre pour visualiser et modifier un élément de texte : a) Saisir le nom du programme sous Program. d) Enregistrer les ajouts en cliquant sur l’icône Save . Procédure pour visualiser et modifier les éléments de texte Par ailleurs. SAP R/3 : Comprendre. la transaction /nSE32 permet de visualiser et de modifier tous les éléments de texte activés et enregistrés pour un programme spécifique sans passer par l’ABAP Editor.

/nSE32 : ABAP Editor : Par la suite. configurer et implanter. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. la saisie du nom du programme est nécessaire. puis Transalation : La fenêtre suivante apparaîtra : Copyright © 2004.b) Cliquez sur le bouton Display ou Change dépendamment de l’action désirée. SAP R/3 : Comprendre. Pierre-Majorique LÉGER et Suzanne RIVARD. AUBERT. Dans les deux cas. Benoit A. cliquez sur le menu Goto. 37 . HEC Montréal. Procédure permettant la traduction d’un élément de texte Il est possible de traduire les éléments de texte à partir de la transaction /nSE32 ou de l’ABAP Editor. Tous droits réservés pour tous pays. VERSION PRÉLIMINAIRE.

La langue de traduction.La langue originale (Original language) est celle de la session de l’utilisation. soit Target language. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. HEC Montréal. configurer et implanter. 38 . le français sera cette langue. puis cliquez sur exécuter . AUBERT. Donc remplacer la Target language par FR. Tous droits réservés pour tous pays. Pierre-Majorique LÉGER et Suzanne RIVARD. soit le diminutif de français. SAP R/3 : Comprendre. l’anglais est la langue originale. Dans la présente situation. Tous les éléments de texte du programme en question apparaîtront dans un nouvel écran comme ceci : Copyright © 2004. VERSION PRÉLIMINAIRE. Dans notre cas. Benoit A. est la langue dans laquelle les éléments de texte seront traduits.

Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. il suffit d’inscrire en-dessous de chacun des éléments de texte leur traduction. Benoit A. HEC Montréal. Copyright © 2004. AUBERT.Pour traduire ces derniers. 39 . VERSION PRÉLIMINAIRE. SAP R/3 : Comprendre. configurer et implanter. Pierre-Majorique LÉGER et Suzanne RIVARD.

En effet. Pierre-Majorique LÉGER et Suzanne RIVARD. Tous droits réservés pour tous pays. Benoit A. SAP R/3 : Comprendre. configurer et implanter.Ne pas oublier de sauvegarder les modifications avec le bouton . VERSION PRÉLIMINAIRE. STRUCTURES DE CONTRÔLE La programmation en ABAP offre différentes instructions de contrôle semblables au langage Visual Basic . 40 . Voici de quelle manière se rédige la condition IF : Copyright © 2004. il est ainsi possible d’utiliser tant des instructions de conditions que des boucles. Cette section présente ces deux approches. Les instructions de conditions Instructions de conditions IF Une instruction de condition IF exécute une procédure lorsque la condition exprimée est satisfaite. AUBERT. L’écran suivant apparaîtra en récapitulant tous les éléments de texte traduits pour le programme YX160. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. HEC Montréal.

La fonction paramètre du programme précédent appelle. ***** Tables ********** ***** Data ************ ***** Parameters & Select Options ***** Parameters: nb_pers type i. HEC Montréal. configurer et implanter. AUBERT. Benoit A. write 'Prix de groupe disponible'(002). SAP R/3 : Comprendre.] Else. endif. Endif. [Elseif condition2. Instruction2. le programme YX180 permet à un agent de voyage d’être informé lorsqu’un rabais est disponible pour les groupes de plus de dix personnes. dans un premier temps. l’interface où l’agent de voyage doit indiquer le nombre de personnes. else. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. write 'Prix de groupe non disponible'(001). Pierre-Majorique LÉGER et Suzanne RIVARD. Voici l’interface en question : Copyright © 2004. Tous droits réservés pour tous pays. Par exemple. Instruction1. 41 . VERSION PRÉLIMINAIRE.If [not] condition 1. Instruction Else. ***** Initialization ********* ***** Start of Selection ***** if nb_pers < 10.

la requête vise à afficher la compagnie possédant le numéro d’identification AD. AUBERT. concerne la valeur du dernier test logique effectué par le système. ***TABLES*** tables: scarr. Ce champ. endif. configurer et implanter. *requête n'a pas trouvé de données if sy-subrc <> 0. Benoit A. Tous droits réservés pour tous pays.e. VERSION PRÉLIMINAIRE. Instructions de conditions IF et variable SY-SUBRC Il est également possible d’utiliser l’instruction IF en conjonction avec le champ SYSUBRC. contenu dans la table SYSTEM (voir tableau 1). L’exemple du programme YX181 effectue une requête dans la table SCARR (liste de compagnies aériennes). Si le résultat du test est positif. la valeur de SY-SUBRC est de zéro (0). write:/ 'aucun enregistrement trouvé'(001). Copyright © 2004. ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *requête sur la table scarr select * from scarr where carrid = 'AD'. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. SAP R/3 : Comprendre. write:/ scarr-carrname. échec du test logique). Lorsque la valeur de SY-SUBRC est différente de zéro (<> 0). le résultat du test est négatif (i. endselect. Pierre-Majorique LÉGER et Suzanne RIVARD. scarr-url. Plus part iculièrement. HEC Montréal. 42 .Puisque que la valeur cinq est saisie. le programme affiche qu’aucun prix de groupe n’est disponible.

Copyright © 2004. configurer et implanter.La figure suivante illustre en partie la table SCARR pour démontrer qu’il n’y a aucune compagnie aérienne attitrée au sigle AD. Opérateurs logiques de l’instruction de condition IF L’instruction de condition IF peut utiliser divers opérateurs logiques afin d’exécuter la routine désirée. SAP R/3 : Comprendre. Tous droits réservés pour tous pays. Puisque la valeur de SY-SUBRC n’est pas égale à zéro. L’utilisation du NOT permet d’introduire la négation dans la condition tandis que le AND et le OR permettent de grouper ensembles différentes instructions de condition. Le tableau suivant rassemble les principaux opérateurs utilisés en conjonction avec l’instruction IF. Pierre-Majorique LÉGER et Suzanne RIVARD. le IF et la commande SYSUBRC affichent donc un message d’échec. AUBERT. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. 43 . HEC Montréal. Benoit A. VERSION PRÉLIMINAIRE.

Intruction others endcase. HEC Montréal. configurer et implanter. Instruction 1. Voici de quelle manière se rédige la commande CASE : case champs . AUBERT. SAP R/3 : Comprendre. Tous droits réservés pour tous pays. la commande CASE prend fin. =< Caractères EQ NE GT LT GE LE BETWEEN var1 AND var2 NOT AND OR Égale à N’est pas égale à Plus grand que Plus petit que Égale ou plus grand que Égale ou plus petit que Exclusivement entre 2 valeurs Signification Ne … pas ET OU Instructions de conditions C ASE La commande CASE permet de catégoriser un certains nombres de conditions et de les comparer avec un champ déterminé. Pierre-Majorique LÉGER et Suzanne RIVARD. When valeur 2. When others. VERSION PRÉLIMINAIRE. Lorsqu’une condition exprimée est satisfaite. Benoit A. >< > < >=. 44 . => <=. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Instruction 2. Copyright © 2004.Opérateurs en conjonction avec l’instruction IF Signes = <> . When valeur 1.Tableau 8 .

endcase. AUBERT. VERSION PRÉLIMINAIRE. Tous droits réservés pour tous pays. 45 . HEC Montréal. Le programme déclenche d’abord l’écran de saisie suivant : Selon la valeur s aisie. ***** Tables ********** ***** Data ************ ***** Parameters & Select Options ***** Parameters: chiffre type i. when others.Le programme YX190 indique le nom de la couleur correspondant au chiffre saisie dans l’interface. Pierre-Majorique LÉGER et Suzanne RIVARD. le programme affiche le texte approprié : Copyright © 2004. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. when '2'. when '1'. Benoit A. SAP R/3 : Comprendre. ***** Initialization ********* ***** Start of Selection ***** case chiffre. write:/ 'pas de couleur déterminée'(003). configurer et implanter. write:/ 'couleur #2 noire'(002). write:/ 'couleur #1 rouge'(001).

configurer et implanter. la suite. HEC Montréal. AUBERT. dans un deuxième temps. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. La boucle s’arrête sur demande (conditions IF avec un EXIT) ou lorsque le nombre de boucle désirée est atteint.Les boucles L’instruction Do est une commande permettant d’exécuter un certain nombre de fois la même procédure. Pierre-Majorique LÉGER et Suzanne RIVARD. CD [ n times]. la boucle sera infinie. Tous droits réservés pour tous pays. SAP R/3 : Comprendre. le programme exécute dans un premier temps la procédure et. VERSION PRÉLIMINAIRE. …procédure… ENDDO. Plus spécifiquement. Benoit A. 46 . Voici le format pour écrire une boucle. Copyright © 2004. Si aucune de ces deux options de complétion n’est effectuée.

Le programme YX200 permet d’afficher un tableau à l’aide d’une boucle. Notons que la variable SY-INDEX indique le nombre de fois qu’une boucle a été exécutée.
***** Tables ********** ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *écrire un titre write:/25 'Écriture d’un tableau'(001). uline at /25(22). *écrire l’en-tête Uline at /2(74). Write : /2 3 19 20 37 38 54 55 75 77 sy-vline, 'nom'(002), sy-vline, 'prénom'(003), sy-vline, 'programme'(004), sy-vline, 'spécialisation'(005), sy-vline, 'no boucle (sy-index)'(006).

Uline at /2(74). Do 3 times. Write : /2 sy-vline, 19 sy-vline, 37 sy-vline, 54 SY-yline, 75 SY-yline. Uline at /2(74). *afficher le # de la boucle write sy-index Enddo.

Copyright © 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LÉGER et Suzanne RIVARD, HEC Montréal, Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRÉLIMINAIRE.

47

L’exécution de ce programme mène à l’affichage du tableau suivant :

TABLES INTERNES Une table interne constitue un espace temporaire de traitement et de stockage de données. Les tables internes ne font donc pas partie des bases de données de SAP R/3. Elles sont plutôt emmagasinées dans une zone tampon de la mémoire. Cette section présente de quelle manière une table interne doit être déclarée et manipulée dans le cadre d’un programme ABAP. Caractéristiques d’une table interne Une table interne se distingue par les caractéristiques suivantes : • • • • • • La table interne possède une durée de vie limitée à l’exécution du programme; Elle ne possède pas de clé primaire; Les noms des tables internes doivent commencer par i afin de les différencier des tables des bases de données de SAP R/3; Une table interne possède un enregistrement d’en-tête (header record) et des enregistrements individuels numérotés 1, 2, 3, …; On ne peut accéder et manipuler qu’un seul enregistrement à la fois, soit celui qui se trouve dans l’enregistrement d’en-tête; Quand un enregistrement individuel est appelé par le programme, il est copié dans l’enregistrement d’en-tête.

Copyright © 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LÉGER et Suzanne RIVARD, HEC Montréal, Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRÉLIMINAIRE.

48

Structure d’une table interne Tel qu’illustré ci- dessous, une table interne est constituée de champs (ex : Nom, Pénom, No_tel) qui forment sa structure. Lors du déroulement du programme, la table interne se remplit de valeurs créant ainsi différents enregistrements (lignes). La structure de chaque table interne possède un index qui numérote chacun de ces enregistrements. Il est possible d’appeler un enregistrement précis en utilisant l’index de la table interne. La table interne copie alors l’enregistrement demandé et l’affiche dans l’en-tête de la table.

Nom En-tête à 3 1 2 Enregistrements à 3 4 Tremblay Chevalier Perreault Tremblay Venne

Prénom Marc Mathieu Julie Marc Justine

No_tel 450-555-4567 514-234-5678 514-345-6666 450-555-4567 450-987-6543

Déclaration d’une table interne La déclaration d’une table interne doit se faire dans la section Data. Il existe deux façons de déclarer une table interne. La première option est de déclarer immédiatement la table interne au moment où sa structure est définie. La deuxième option est de définir d’abord la structure et de déclarer une table interne similaire à cette structure. Le tableau 9 explique, pour sa part, les commandes utilisées dans la déclaration d’une table interne.

Copyright © 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LÉGER et Suzanne RIVARD, HEC Montréal, Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRÉLIMINAIRE.

49

Option 1
DATA : BEGIN OF itable OCCURS n_enregistrement, Champs 1, Champs 2, Champs n, DATA : END OF itable.

Option 2
DATA : BEGIN OF nom_enregistrement, Champs 1, Champs 2, Champs n, Itable LIKE nom_enregistrement OCCURS O With Header Line.

Tableau 9 - Options d’une table interne
Options Itable Signification Représente le nom de la Table interne Représente le nombre d’enregistrements qui sera stocké dans la mémoire tampon. À partir de la version 4.0, SAP s’occupe automatiquement de la gestion de la mémoire, alors il n’est pas nécessaire de spécifier la grosseur de la table interne. Donc toujours inscrire 0 comme nombre d’enregistrement (0 = infini). Insère un enregistrement d’en-tête afin d’avoir accès aux données de la table interne. Nom donné à la structure de la table interne

n_enregistrement

With header line Nom_enregistrement

Copyright © 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LÉGER et Suzanne RIVARD, HEC Montréal, Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRÉLIMINAIRE.

50

HEC Montréal. Clear itable. Copyright © 2004. ***** Tables ********** *déclaration de la structure DATA: BEGIN OF compagnie. Voici de quelle manière cette procédure doit être rédigée : Move : valeur to itable-champs. *déclaration de la table interne avec une en-tête icie LIKE compagnie OCCURS 0 with header line. Tous droits réservés pour tous pays. Ajout d’enregistrements dans une table interne : Move. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. puis ajouter aux enregistrement de la table interne (commande Append). SAP R/3 : Comprendre. configurer et implanter. 51 . nom_cie(20) type c. VERSION PRÉLIMINAIRE. Append itable. Benoit A. Append et Clear L’ajout d’enregistrements dans une table interne requiert une gymnastique particulière dans laquelle un nouvel enregistrement doit d’abord être copié dans l’entête de la table interne (commande Move). Soulignons par ailleurs que la commande Append ajoute un nouvel enregistrement à la toute fin de la table interne sans considérer l’ordre de celle-ci. Enfin. Pierre-Majorique LÉGER et Suzanne RIVARD.L’extrait du programme YX210 présente la déclaration de la table interne ICIE dont la structure est copiée sur COMPAGNIE. END OF compagnie. no_cie(3) type n. AUBERT. l’en-tête de la table interne doit être effacée pour faire place à une nouvelle manipulation (commande Clear).

Toute traduction ou toute modification sous quelque forme que ce soit est interdite. 'Électriciens ABC' to icie-nom_cie. Copyright © 2004. *enregistrement de la ligne dans l'en-tête de la table *interne APPEND icie. ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *insertion manuelle de données dans la table interne MOVE: '01' to icie-no_cie. *insertion manuelle de données dans la table interne MOVE: '02' to icie-no_cie. AUBERT. Tous droits réservés pour tous pays. VERSION PRÉLIMINAIRE. configurer et implanter. Benoit A. 'Plomberie ABC' to icie-nom_cie. 52 . HEC Montréal. Pierre-Majorique LÉGER et Suzanne RIVARD. *effacer le contenu de l'en-tête de la table interne CLEAR icie.L’exemple suivant poursuit l’exemple initié précédemment (YX210) en ajoutant des enregistrements à la table interne ICIE. SAP R/3 : Comprendre. APPEND icie.

La fonction Include structure sélectionne la structure d’une table de SAP R/3 et l’utilise comme modèle pour la nouvelle table interne. INCLUDE STRUCTURE table DATA : END OF itable. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. nous y reviendrons en détails à la prochaine section. avec la table d’où les valeurs sont extraites. Voici de quelle manière la structure d’une table existante dans R/3 peut être utilisée pour définir une table interne. HEC Montréal. ou des champs correspondants. VERSION PRÉLIMINAIRE. 53 . SAP R/3 : Comprendre. AUBERT. Tous droits réservés pour tous pays. Notons que nous abordons ici succinctement le sujet des requêtes dans les tables de R/3. Copyright © 2004. DATA : BEGIN OF itable OCCURS 0. Benoit A. Pierre-Majorique LÉGER et Suzanne RIVARD. configurer et implanter.Table interne et e xtraction de la base de données de SAP R/3 Une table interne peut également être définie en fonction d’une table contenue dans les bases de données de SAP R/3. Les résultats de la requête à la base de données de R/3 sont ensuite copiés dans la table interne à l’aide de la fonction suivante : into corresponding fields of table itable. Notons que la fonction Corresponding field permet de s’assurer que la table interne possède la même structure. Il est même possible d’extraire des données de cette même table afin de peupler une table interne.

***** Data ************ *déclaration de la table interne utilisant la structure de la table *spfli DATA: BEGIN OF itable OCCURS 0. write: [/1] itable-champs1. N. Endloop. VERSION PRÉLIMINAIRE. …. Tous droits réservés pour tous pays. prenons un programme (YX240) permettant à un employé d’une compagnie aérienne de faire afficher le nom du pays. 4. ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *requêtes sur la table spfli select COUNTRYFR CITYFROM AIRPFROM from spfli *insertion des données trouvées dans la table interne into corresponding fields of table itable. INCLUDE STRUCTURE spfli. Il est possible de préciser les champs dont l’affichage est souhaité. itable-champs2 itable-champs… # 3. HEC Montréal. Pierre-Majorique LÉGER et Suzanne RIVARD. de la ville et de l’aéroport d’où il y a des départs. 54 . Copyright © 2004. Benoit A. Afficher le contenu d’une table interne L’affichage du contenu d’une table interne s’effectue à l’aide d’une boucle ayant pour fonction d’écrire un après l’autre les enregistrements de la table. ***** Tables ********** Tables: spfli. DATA: END OF itable. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.À titre d’exemple. Cette boucle doit être rédigée de la manière suivante : loop at itable. SAP R/3 : Comprendre. AUBERT. configurer et implanter.

AUBERT. icie-nom_cie. skip 1. HEC Montréal. *boucle permettant d'afficher les données contenues dans *la table interne. write:/1 itable-countryfr. *écriture d'un titre write:/1 'Affichage de la table interne icie'. write:/ icie-no_cie. itable-cityfrom. VERSION PRÉLIMINAIRE. Le programme YX240 termine l’exemple initié précédemment et affiche la liste des aéroports d’où il y a des départs. *affichage des valeurs de la table interne loop at itable. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. L’exécution de ce programme mène à l’affichage de l’écran suivant : Prenons un second exemple. itable-airpfrom.Le programme suivant (YX210) poursuit l’exemple débuté précédemment. nous procédons à l’affichage des enregistrements de la table interne. Tous droits réservés pour tous pays. Loop at icie. Endloop. Copyright © 2004. endloop. Pierre-Majorique LÉGER et Suzanne RIVARD. SAP R/3 : Comprendre. Benoit A. Dans cet extrait. configurer et implanter. 55 .

D’abord. La lecture d’un enregistrement se rédige donc de la manière suivante. 56 . Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Pour atteindre un enregistrement (une ligne) spécifique d’une table interne à l’aide de la commande Read. Tous droits réservés pour tous pays. Benoit A. Il est aussi possible d’utiliser le numéro de l’index.Voici la liste des aéroports avec leur ville et pays respectifs affichée à l’écran : Lecture d’un enregistrement à la fois (Commande Read) La commande Read permet de chercher un enregistrement particulier dans une table interne. configurer et implanter. Pierre-Majorique LÉGER et Suzanne RIVARD. la suppression de l’entête s’effectue selon l’une des deux méthodes suivantes : Copyright © 2004. HEC Montréal. SAP R/3 : Comprendre. il importe de suivre la procédure suivante : a) Supprimer l’enregistrement qui est présentement dans l’en-tête de la table interne b) Saisir le nom de la table interne et le nom du champ recherché puis inscrire la valeur de ce champ. VERSION PRÉLIMINAIRE. Le nom du champ doit être écrit de la même manière qu’il apparaît dans la base de données de SAP R/3 (case sensitive). AUBERT.

READ TABLE itable Option 2: READ TABLE itable INDEX i. Pierre-Majorique LÉGER et Suzanne RIVARD. AUBERT. 57 . L’exemple suivant est un programme (YX241) permettant à un employé de rechercher dans une table interne le tra nsporteur ayant fait un vol le 14 janvier 2005. On peut constater à la figure 3 (extrait de la table SFLIGHT) que plusieurs vols ont été effectués lors de cette journée (faire SE16 pour visualiser cette table). il existe deux options pour rechercher un enregistrement. configurer et implanter. Copyright © 2004. Ensuite. Benoit A. SAP R/3 : Comprendre. La première option consiste à effectuer la recherche sur la valeur précise d’un champ de la table. L’autre option est de rechercher un enregistrement avec le numéro de l’index. HEC Montréal. VERSION PRÉLIMINAIRE. Il est à noter que la commande Read arrête sa lecture au premier enregistrement qui correspond aux spécifications demandées. Tous droits réservés pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.Option 1 MOVE SPACE TO itable Option 2 : Clear itable. Option 1 : Itable -champ = ‘valeur_recherchée’.

Pierre-Majorique LÉGER et Suzanne RIVARD. Uline at /1(50). 22 'ID du transporteur'(002). les afficher IF SY-SUBRC = 0. *sinon: écrire un message d'erreur Else. SAP R/3 : Comprendre.'(003). *lire la table interne READ TABLE itable. ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** select * from sflight into corresponding fields of table itable. Benoit A. HEC Montréal.Figure 3 Extrait de la table SFLIGHT ***** Tables ********** Tables: sflight. Tous droits réservés pour tous pays. 58 . WRITE:/1 'Date de départ'(001). VERSION PRÉLIMINAIRE. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. *valeur recherchée Itable-FLDATE = '20050114'. write:/1 22 itable-FLDATE. DATA: END OF itable. Endif. INCLUDE STRUCTURE sflight. *si on trouve des données. AUBERT. DATA: BEGIN OF itab le OCCURS 0. Copyright © 2004. *effacer l’en-tête MOVE SPACE TO itable. write:/1 'aucune donnée trouvée. configurer et implanter. itable-CARRID.

L’exemple ci-dessous poursuit le programme des sections précédentes. Copyright © 2004. HEC Montréal. Le TABIX est un champ de la table System (SY) contenant les numéros d’enregistrements de l’index. Cette approche requiert que le programmeur connaisse le numéro de l’enregistrement à modifier. CONNID = 0064) est affiché : Modification d’une table interne (Commande Modify) Pour modifier un enregistrement d’une table interne. il existe deux approches pour réaliser cette procédure : a) En recherchant l’enregistrement à modifier avec le numéro de l’index de la table interne. b) En effectuant une boucle pour rechercher un enregistrement en fonction de la valeur de l’un de ses champs. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRÉLIMINAIRE. Par conséquent. celui-ci doit être copié dans l’entête avant d’être modifié et ensuite mis à jour dans la table interne. configurer et implanter. Tous droits réservés pour tous pays. Pierre-Majorique LÉGER et Suzanne RIVARD. d’afficher la table interne et de faire apparaître les numéros de l’index. Comme les enregistrements dans une table interne ne possèdent pas de clé primaire. avant tout.Comme la commande Read ne rapporte que le premier enregistrement retrouvé. Benoit A. Option 1 : Attardons nous d’abord à la première option : la modification d’une table interne à l’aide de son index. il suffit d’ajouter la variable SY-TABIX dans la boucle qui permet d’afficher la table. mais d’autres enregistrements ont été rajoutés au programme initial. seul le premier vol (CARRID = AA. L programme YX211 affiche e tous les enregistrements de la table interne de même que l’index de la table. Pour ce faire. SAP R/3 : Comprendre. 59 . il importe. AUBERT.

il modifie le champ nom_cie avant de retourner l’enregistrem ent dans la table interne. Il est à noter que lorsque l’on insère des enregistrements dans une table interne. Tous droits réservés pour tous pays. de modifier l’en-tête et de retourner l’enregistrement dans la table interne. ceuxci s’affichent les uns à la suite des autres sans ordre de champ précis. Le programme suivant recherche et lit le 2e enregistrement (Index 2) de la table interne. VERSION PRÉLIMINAIRE. Endloop . S’il le trouve. Le résultat de ce programme s’affiche tel qu’illustré ci. malgré un numéro de clients supérieur à Menuiserie Pros.dessous. SAP R/3 : Comprendre. AUBERT. write:/ sy-tabix. Copyright © 2004. icie-nom_cie. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Benoit A. Loop at icie. HEC Montréal. configurer et implanter. icie-no_cie. Pierre-Majorique LÉGER et Suzanne RIVARD. En utilisant le numéro de l’index.*boucle permettant d'afficher les données contenues dans la table *interne. L’index apparaît à la gauche de la liste. il est possible d’appeler l’enregistrement souhaité dans l’en-tête. C’est pourquoi la compagnie Gazon Plus se retrouve à l’index #3. 60 .

Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Voici donc une manière alternative de rédiger l’extrait du programme présenté précédemment dans l’option 1. Option 2 La seconde option pour modifier un enregistrement dans une table interne est d’utiliser une boucle. SAP R/3 : Comprendre. itable-champ1 = ‘nouvelle valeur’ modify itable index sy-tabix. itable-champ2 = ‘ nouvelle valeur’. modify icie index sy-tabix. Copyright © 2004. d’un champ X à l’aide de son *numéro d’index read table itable index N. Pierre-Majorique LÉGER et Suzanne RIVARD. Tous droits réservés pour tous pays. HEC Montréal. endif. configurer et implanter. AUBERT. modify itable. endloop. VERSION PRÉLIMINAIRE. *mise à jour du d’un champ X à l’aide d’une *boucle loop at itable where champ1 = X. Benoit A. if sy-subrc = 0. celui-ci est modifié et retourné dans la table interne. Cette boucle recherche dans la table interne une valeur spécifique dans un champ donné. icie-nom_cie = ‘Électriciens ABC et fils’. *mise à jour du nom de la compagnie d'électriciens par son *index read table icie index 2. endif.*mise à jour du if sy-subrc = 0. 61 . Après que l’enregistrement ait été trouvé et amené dans l’entête.

endloop. Option 1 : La première option consiste à rechercher l’enregistrement à supprimer à l’aide de son numéro d’index. l’enregistrement est copié dans l’en-tête puis supprimé. modify icie. contrairement à la commande Clear. il faut également passer par l’en-tête de la table. Tous droits réservés pour tous pays. Il suffit de copier l’enregistrement à effacer dans l’en-tête et ensuite utiliser la commande Delete pour le supprimer. b) En effectuant une boucle pour rechercher un enregistrement à supprimer en fonction de la valeur de l’un de ses champs. SAP R/3 : Comprendre. 62 . l’enregistrement correspondant dans la table interne. Copyright © 2004. Pierre-Majorique LÉGER et Suzanne RIVARD. configurer et implanter. en plus de l’enregistrement d’en-tête. Un fois trouvé. icie-nom_cie(30) = 'Électriciens ABC et Fils'. Il existe deux approches pour utiliser la commande Delete : a) En recherchant l’enregistrement à supprimer avec le numéro de l’index de la table interne. la commande Delete efface. L’enregistrement est définitivement supprimé de l’en-tête et de la table interne simultanément. Ainsi. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.*mise à jour du nom de la compagnie d'électriciens *avec une boucle loop at icie where no_cie = '02'. Effacer un enregistrement (Commande DELETE) Pour effacer un enregistrement de la table interne. VERSION PRÉLIMINAIRE. HEC Montréal. Benoit A. AUBERT.

Pierre-Majorique LÉGER et Suzanne RIVARD. delete icie index sy-tabix. Benoit A. Avant la suppression : Après la suppression : Copyright © 2004. mais le numéro d’index *3 (SY -TABIX) read table icie index 3. À noter : lors de la suppression complète d’un enregistrement avec Delete. mais le numéro d’index Y *(SY-TABIX) read table itable index Y. Tous droits réservés pour tous pays. delete itable index sy-tabix. 63 . endif. AUBERT. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. l’index (SYTABIX) se modifiera pour tenir compte de cette suppression.*suppression de l'enregistrement possédant le *numéro de compagnie X. if sy-subrc = 0. SAP R/3 : Comprendre. if sy-subrc = 0. endif. *suppression de l'enregistrement possédant le *numéro de compagnie 004. configurer et implanter. VERSION PRÉLIMINAIRE. HEC Montréal.

Delete itable index sy-tabix. Pierre-Majorique LÉGER et Suzanne RIVARD. *suppression de l'enregistrement possédant le numéro de *compagnie X Loop at itable where no_cie = 'X'. Dénombrement des enregistrements de la table interne (Commande DESCRIBE) Il est possible de compter le nombre d’enregistrements d’une table interne. *suppression de l'enregistrement possédant le numéro de *compagnie 04 Loop at icie where no_cie = '04'. configurer et implanter. la commande Delete permet de la supprimer aux deux endroits. 64 . Delete icie index sy-tabix. Benoit A.Option 2 : L’option 2 consiste à rechercher un enregis trement en fonction de la valeur d’un champ de cet enregistrement. Tous droits réservés pour tous pays. HEC Montréal. VERSION PRÉLIMINAIRE. SAP R/3 : Comprendre. Copyright © 2004. Voici de quelle manière se rédige cette commande : DESCRIBE table itable [LINES n] : Retourne le nombre d’enregistrements de ITABLE dans la variable n. il faut utiliser la commande Describe. Endloop. Endloop. Lorsque cet enregistrement est identifié et copié dans l’en-tête. AUBERT. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Pour se faire. L’exemple suivant (YX212) identifie et supprime la compagnie possédant le numéro de compagnie 4 soit Gazon Plus.

Pierre-Majorique LÉGER et Suzanne RIVARD. HEC Montréal. La commande Select La commande Select permet d’effectuer une requête sur les tables de la base de données de R/3 en spécifiant différents critères de sélection et de regroupement. En effet. DISTINCT WHERE Copyright © 2004. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Tableau 10 . Tous droits réservés pour tous pays. Le Distinct supprime le dédoublement d’enregistrements qui pourraient être occasionné par la requête. Insert et Delete puissent être utilisées dans le cadre d’un programme ABAP.REQUÊTES SUR LA BASE DE DONNÉES La section suivante est consacrée à l’utilisation du langage de requête SQL dans le cadre de programme rédigé en ABAP. VERSION PRÉLIMINAIRE. SAP R/3 : Comprendre. ABAP utilise le langage SQL pour extraire et manipuler des données contenus dans la BD de R/3. cette section s’attarde principalement à la commande Select. Bien que les commandes Update. La commande Select se rédige de la manière suivante : Select [single] [distinct] champs From table Where champs [Not] [Like valeur] [In Select . configurer et implanter. AUBERT. 65 .Option] [between val1 And val2] Group by Having Order by Endselect.Option de la commande SELECT SINGLE L’utilisation du Single dans l’instruction Select offre la possibilité de choisir un seul enregistrement. Benoit A. La commande Where permet de circonsc rire le résultat de la requête. champs conditions champs.

En ce qui concerne la commande Where. Tous droits réservés pour tous pays. facilitant ainsi l’affichage des résultats pour des programmes courts ou lorsque les données ne sont lues qu’une seule fois. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. tous les noms ressemblant à Amy = ‘A_ y’. De surcroît. La combinaison du Select-endSelect crée automatiquement une boucle. ABAP reconnaît deux frimes. sy-dbcnt. il est recommandé de conclure la requête par un Endselect (qui lui-même doit être suivi d’un point). le Having ou le Order by.Il importe de souligner que le point doit seulement apparaître après la dernière instruction. une requête pour trouver les compagnies aériennes dont le ID commence par A devrait se rédiger de la manière suivante : where carrid like ‘a%’. La requête de cet exemple porte sur la table SPFLI. Benoit A. le Group by . Illustrons par un exemple la c ommande Select. le signe pourcentage (%) permet de remplacer un groupe de caractères au début ou à la fin d’une valeur : par exemple. D’une part. SAP R/3 : Comprendre. HEC Montréal. La requête sélectionne l’ensemble du contenu (select *) de la table SPLI (from spfli) et demande d’ordonnancer le résultats selon la ville d’origine (order by Copyright © 2004. soit le Where. configurer et implanter. il est possible de faire afficher automatiquement le nombre d’enregistrements contenus dans le résultat d’une requête. tous les noms commençant par b = ‘b%’. VERSION PRÉLIMINAIRE. D’autre part. le signe de soulignement ( _ ) permet de remplacer une série de caractères au centre d’une valeur : par exemple. 66 . Par ailleurs. Pour se faire. Dans les deux cas. il suffit d’afficher le champ DBCNT de la table System (SY). Voici comment rédiger cette commande : write : /‘enregistrements trouvés :’(001). Pierre-Majorique LÉGER et Suzanne RIVARD. AUBERT. Par exemple. il importe d’utiliser la commande Like.

HEC Montréal. *affiche le nombre d'enregistrements trouvés write:/ 'nombre d''enregistrements trouvés:'. skip 2. AUBERT. spfli-countryfr. ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** select * from spfli where period = '0' order by cityfrom. write:/ spfli-carrid. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.cityfrom ) : Ensuite le programme affiche les champs CARRID. endselect. Il est également possible de conserver les résultats de la requête dans une table interne. CITYFROM. spfli-countryto. spfli-airpfrom. L’affichage des données est effectué à l’aide d’une boucle. ***** Tables ********** tables: spfli. VERSION PRÉLIMINAIRE. COUNTRYTO et CITYTO. Copyright © 2004. 67 . spfli-cityfrom. Tous droits réservés pour tous pays. Le programme utilisé est le YX222. Pierre-Majorique LÉGER et Suzanne RIVARD. spfli-cityto. L’exemple suivant (YX224) sauvegarde temporairement les données de SPFLI dans la table interne itable. AIRPFROM. CONTRYFR. SAP R/3 : Comprendre. configurer et implanter. sy-dbcnt. Benoit A.

endloop. AUBERT. itable-countryto. Copyright © 2004. itable-airpfrom. itable-countryfr. ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *requête sur la table Spfli select * from spfli into table itable where period = '0' order by cityfrom. skip 2. configurer et implanter. ***** Data ************ *declaration d’une table interne correspondant à la *structure de la table spfli data itable like spfli occurs 0 with header line. *affichage des données continues dans les champs spécifiés loop at itable. sydbcnt. Tous droits réservés pour tous pays. 68 . HEC Montréal.***** Tables ********** tables: spfli. write:/ 'nombre d'’enregistrements trouvés:'. itable-cityto. write:/ itable-carrid. itable-cityfrom. VERSION PRÉLIMINAIRE. Pierre-Majorique LÉGER et Suzanne RIVARD. Benoit A. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. SAP R/3 : Comprendre.

configurer et implanter. VERSION PRÉLIMINAIRE.L’exécution de ce programme mène à l’affichage de la liste d’enregistrements cidessous. Tous droits réservés pour tous pays.Liste de fonctions d'agrégation Commande AVG SUM MAX MIN COUNT Description Moyenne Somme Maximum Minimum Fréquence Copyright © 2004. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. AUBERT. Benoit A. Pierre-Majorique LÉGER et Suzanne RIVARD. Voici une liste des fonctions d’agrégations les plus fréquemment utilisées. Fonctions d’agrégation Les fonctions d’agrégation peuvent être insérées dans une requête afin d’effectuer divers calculs sur les champs de la sélection. Tableau 11 . Notons que le nombre d’observations retournées est affiché grâce au champ SY-DBCNT. SAP R/3 : Comprendre. HEC Montréal. 69 .

Endselect. il faut imbriquer deux SelectEndSelect.Concaténer une requête Pour concaténer une requête en langage ABAP.dessous. 70 . Tous droits réservés pour tous pays. Une partie des informations désirées se trouve dans la table SFLIGHT (les champs PLANETYPE et FLDATE ) et une autre dans la table SPFLI (le champ CONNID). Supposons que nous souhaitons obtenir de l’information sur des connexions de vols. Les deux tables ont une clé commune : CARRID (le numéro du transporteur aérien). Benoit A. SAP R/3 : Comprendre. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Pierre-Majorique LÉGER et Suzanne RIVARD. configurer et implanter. Une telle requête concaténée se rédige de la manière ci. AUBERT. Illustrons par un exemple la concaténation d’une requête. Endselect. HEC Montréal. VERSION PRÉLIMINAIRE. Select * from table 1. Select * from table2 Where champ1 = table1-champ1. Attention : ne pas oublier de mettre les deux Select-EndSelect. Voici comment devrait se rédiger cette requête (YX230): Copyright © 2004. La requête vise à isoler les vols dont le ID de connexion (CONNID) est 17.

15 'Type_avion'(002). endselect. sflight-fldate. Pierre-Majorique LÉGER et Suzanne RIVARD. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. AUBERT. configurer et implanter. HEC Montréal. select * from spfli where carrid = sflight-carrid and connid = '17'. Benoit A. 71 . endselect. Copyright © 2004. skip 1.***** Tables ********** tables : sflight. Tous droits réservés pour tous pays. 30 'Date_vol'(003). spfli. sflight-planetype. VERSION PRÉLIMINAIRE. ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *en-tête write:/1 'no_connexion'(001). *requête concaténée select * from sflight. skip 3. SAP R/3 : Comprendre. *afficher write:/1 15 30 les résultats spfli-connid.

Pierre-Majorique LÉGER et Suzanne RIVARD. événements et commandes pour programmer des rapports interactifs dans SAP R/3 à l’aide du langage ABAP. Benoit A. Pour exécuter la commande. les rapports interactifs seront surtout sous forme de listes détaillées. il doit double-cliquez sur la ligne désirée ou sélectionner la ligne en question et presser la touche F2. Copyright © 2004. HEC Montréal. configurer et implanter. dans un rapport. La commande At-line selection se rédige de la manière suivante : at line-selection. le résultat s’affiche de la manière suivante : RAPPORTS INTERACTIFS Cette section présente les différentes fonctions. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.À l’écran. AUBERT. SAP R/3 : Comprendre. afin d’accéder à des informations supplémentaires contenues dans une liste. VERSION PRÉLIMINAIRE. Dans le cadre du cours. 72 . Tous droits réservés pour tous pays. La commande At-line selection La commande At-line selection permet à l’utilisateur de sélectionner une ligne.

enddo. affichent de l’information concernant l’utilisation de rapports interactifs. write /. / sy-curow.Champs de la table SY Certains champs. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. :'(001). SAP R/3 : Comprendre. Le tableau ci. write: / 'Niveau de la liste write: / 'Ligne write: / 'Contenu de la ligne endif. :'(003). configurer et implanter. sy-index. Pierre-Majorique LÉGER et Suzanne RIVARD. at line-selection. Benoit A. :'(002). provenant de la table SY. Copyright © 2004. 73 . HEC Montréal. do 30 times. Tous droits réservés pour tous pays. VERSION PRÉLIMINAIRE. Tableau 12 – Champs de la table SY SY-LSIND : SY-CUROW : SY-CUCOL : SY-LISEL : Niveau de la liste (liste de base = 0) Ligne sélectionnée Colonne sélectionnée Contenu de la ligne sélectionnée Le programme YX270 est un exemple d’utilisation des notions mentionnées ci-haut. / sy-lsind. write: /'line'.dessous en décrit un certain nombre. if sy-lsind < 2. AUBERT. / sy-lisel.

Le programme affic he le niveau de la liste (sy-lsind). 74 . HEC Montréal. L’un des objectifs de la commande Hide est de référencier le contenu de chacune des lignes d’une liste entre le niveau de base (SYLSIND = 0) et un niveau supérieur . le contenu est restauré. L’utilisateur sélectionne une ligne en double-cliquant sur cette dernière (At-line selection). AUBERT. À noter : le champ SY-LSIND utilisé conjointement avec la commande At line-selection et la condition de contrôle If. Benoit A. Dans l’exemple suivant. Lors de l’exécution de la commande At lineselection. Pierre-Majorique LÉGER et Suzanne RIVARD. Copyright © 2004. l’utilisateur a double-cliqué sur line 5. le numéro de la ligne (sy-curow) et le contenu de la ligne ( sy-lisel). SAP R/3 : Comprendre. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. La commande Hide La commande Hide permet d’entreposer temporairement en mémoire de l’information spécifique à chacune des lignes de la liste. VERSION PRÉLIMINAIRE. le mot line et le nombre de fois que la boucle a été exécutée (grâce à SY-INDEX) s’affiche à l’écran. Tous droits réservés pour tous pays. contrôle le nombre de niveaux de la liste.Lors de l’exécution du programme. configurer et implanter.

select * from scarr into corresponding fields of table iplane. *conserver en mémoire les numéros identifiant chacune des cie d'aviation hide iplane-carrid. ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** ****** Selection ******* *titre write:/1 'Nom de la compagnie d''aviation'(001). SAP R/3 : Comprendre. Lorsque l’utilisateur sélectionne le nom de l’une des compagnies. endloop. include structure scarr. *commade pour permettre le forage at line-selection. write:/1 iplane-url. skip 1. Pierre-Majorique LÉGER et Suzanne RIVARD.Le programme YX271 est un exemple d’utilisation de la commande Hide. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. *endif. 75 . HEC Montréal. *if sy -lsind < 2. data: end of iplane. configurer et implanter. Il entrepose en mémoire le numéro identif iant chacune des compagnies d’aviation (carrid) à l’aide de la commande Hide. uline. les numéros identifiant chacune des compagnies d’aviation (carrid) est restauré et permet ainsi d’apparier chacune des compagnies d’aviation avec leur adresse URL respective. Copyright © 2004. VERSION PRÉLIMINAIRE. scarplan. AUBERT. write:/1 iplane -carrname. ***** Data ************ *déclaration de la table interne data: begin of iplane occurs 0. loop at iplane. Benoit A. read table iplane with key carrid = iplane-carrid. Tous droits réservés pour tous pays. La programmation d’un tel programme ressemble à ceci : ***** Tables ********** *tables utilisées tables: scarr.

VERSION PRÉLIMINAIRE. le deuxième niveau la ville et le pays du client et le troisième niveau son adresse complète. Pierre-Majorique LÉGER et Suzanne RIVARD. Le programme YX272 est un programme présentant les informations de la table clients sur différents niveaux. elle affiche le niveau de forage où l’utilisateur se trouve. le premier niveau le nom et le numéro du client. configurer et implanter. le contenu du niveau de base (niveau = 0) s’affiche de la manière suivante : Après avoir double-cliqué sur l’une des compagnies d’aviation. Il est possible de lui assigner une valeur. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. dans ce cas Qantas Airways. Benoit A. SAP R/3 : Comprendre. Tous droits réservés pour tous pays. l’information du niveau 1 s’affiche à son tour dans une nouvelle page. Le niveau de base affiche le nom du client. La commande SY-LSIND gère les différents niveaux. Utilisé seule. 76 . HEC Montréal. AUBERT.À l’écran. Copyright © 2004. Le forage sur plusieurs niveaux Le forage sur plusieurs niveaux se fait à l’aide de la commande SY-LSIND de la table SY conjointement avec l’instruction de conditions CASE.

configurer et implanter. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. le premier niveau apparaît : Il en est de même pour le deuxième et le troisième niveau qui ressemblent respectivement à ceci : Niveau 2 : Niveau 3 : Copyright © 2004. Tous droits réservés pour tous pays. SAP R/3 : Comprendre. Benoit A. 77 .À l’écran. Pierre-Majorique LÉGER et Suzanne RIVARD. le niveau de base s’affiche ainsi : En double-cliquant sur l’une des lignes de la liste. HEC Montréal. AUBERT. VERSION PRÉLIMINAIRE.

***** Data ************ *déclaration de la table interne data: begin of iclient occurs 0. iclient-NAME1. iclient -stras. endcase. write: /5 'Nom du client: /5 'Numéro du client : when 2. SAP R/3 : Comprendre. endloop. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. include s tructure kna1. Copyright © 2004. ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** ****** Selection ******* write:/1 'Nom du client'. case sy-lsind. loop at iclient. configurer et implanter. uline. iclient -ORT01. '. HEC Montréal. skip 1. 78 . write: /5 'Adresse : '. '. SELECT * FROM kna1 into corresponding fields of table iclient. read table iclient with key kunnr = iclient-kunnr. Benoit A. write: /5 'Ville : /5 'Pays : when 3. write:/1 iclient-name1.La programmation ABAP du programme YX272 est la suivante : ***** Tables ********** *table utilisée TABLES: kna1. '. ****** Event Processing ************* AT LINE-SELECTION. Tous droits réservés pour tous pays. *conserver en mémoire les numéros identifiant chacun des clients hide iclient-kunnr. data: end of iclient. iclient -LAND1. '. VERSION PRÉLIMINAIRE. iclient-KUNNR. when 1. Pierre-Majorique LÉGER et Suzanne RIVARD. AUBERT.

Pierre-Majorique LÉGER et Suzanne RIVARD. Le v représente la distance à partir de l’extrémité gauche de l’écran et le w la hauteur en fonction du haut de l’écran. VERSION PRÉLIMINAIRE. write: 'Voici une nouvelle fenêtre ayant des dimensions de 5-5-70-5'. configurer et implanter. SAP R/3 : Comprendre. Window starting at 5 5 Ending at 70 5. Le programme YX273 est un exemple d’utilisation de cette commande. Benoit A. write: / 'Cliquez sur cette phrase'. AUBERT. Le x et le y représente respectivement la largeur et la longueur de la nouvelle fenêtre. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. L’attribution d’une valeur aux lettres v et w permet de contrôler le lieu d’affichage de la nouvelle fenêtre à l’écran. dans une nouvelle fenêtre tout en ayant le contrôle sur les dimensions de celle-ci. At line-selection. Copyright © 2004. Cette commande se rédige comme ceci : Window starting at [v w] ending at[x y ].La commande Window starting at […] ending at […] La commande Window starting at […] ending at […] offre la possibilité au développeur d’afficher du texte ou le résultat d’une opération. HEC Montréal. 79 . Tous droits réservés pour tous pays. par exemple.

Dans la plupart des cas. 80 . HEC Montréal. Fonctions et commandes pour la création de graphiques Dans SAP R/3. VERSION PRÉLIMINAIRE. la fenêtre suivante apparaît : CRÉATION DE GRAPHIQUES Cette section présente brièvement les techniques de création de graphiques dans SAP R/3.Après avoir double-cliqué sur « Cliquez sur cette phrase ». configurer et implanter. La section TABLES indique les tables que le graphique devra utiliser. fait apparaître les valeurs de TITL et VALT dans le graphique. Benoit A. La commande TITL permet de saisir le titre du graphique et la commande VALT le nom de l’axe des Y. = = ‘titre du graphique’ ‘Nom de l’’axe des Y’ La commande CALL FUNCTION appelle la fonction graphique désirée. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. SAP R/3 : Comprendre. Différentes fonc tions sont disponibles dans SAP R/3 pour faciliter la programmation de graphiques en langage ABAP. Copyright © 2004. Pierre-Majorique LÉGER et Suzanne RIVARD. AUBERT. l’appel d’une fonction se fait de la manière suivant e : CALL FUNCTION ‘nom de la fonction’ EXPORTING TITL VALT TABLES DATA = italbe. La commande EXPORTING quant à elle. Tous droits réservés pour tous pays. il ne suffit que des les appeler.

Le programme YX280 appelle une fonction graphique fournie par SAP R/3 soit le graphique à deux dimensions. le programme YX280 affiche un tableau résumant les valeurs contenues dans le graphique à deux dimensions. 81 . Une fois la fenêtre du graphique fermée. il ne reste qu’à appeler la fonction du graphique à deux dimensions. de chacune des colonnes du graphique. configurer et implanter. Benoit A. Copyright © 2004. SAP R/3 : Comprendre. Tous droits réservés pour tous pays.Graphique à deux dimensions Pour créer un graphique en deux dimensions. Par la suite. il faut en premier lieu déclarer une table interne et saisir les valeurs. Pierre-Majorique LÉGER et Suzanne RIVARD. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. manuellement ou à l’aide d’une requête. HEC Montréal. VERSION PRÉLIMINAIRE. AUBERT.

VERSION PRÉLIMINAIRE. Toute traduction ou toute modification sous quelque forme que ce soit est interdite.22 TCOL1. Pierre-Majorique LÉGER et Suzanne RIVARD. APPEND itable. WRITE: / itable-TEXT. *données de la troisième colonne itable-TEXT = 'Product_3'. itable-VALUE = 92410. LOOP AT itable. '153470' to itable-VALUE. *données de la deuxième colonne itable-TEXT = 'Product_2'. *données de la quatrième colonne itable-TEXT = 'Product_4'. ***affichage des données dans un tableau WRITE: / 'Products'. VALUE TYPE P. itable-VALUE = 53470. APPEND itable. Tous droits réservés pour tous pays. APPEND itable. *données de la cinquième colonne itable-TEXT = 'Product_5'. 12 itable-VALUE.La programmation en ABAP du programme YX280 est la suivante : ***** Tables ********** ***** Data ************ *déclaration d'une table interne DATA: BEGIN OF itable OCCURS 0. AUBERT. SAP R/3 : Comprendre. TEXT(25). Benoit A. ***appele de la fonction graphique en 2 dimensions CALL FUNCTION 'GRAPH_2D' EXPORTING TITL = TITLE Copyright © 2004. APPEND itable. SKIP 2. configurer et implanter. ENDLOOP. *déclaration d'une variable : titre du graphique data: TITLE(25) VALUE 'Sales'. ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** ***insertion manuelle des données dans la table interne *données de la première colonne move: 'Product_1' to itable-text. *SET PF-STATUS 'GRAF'. HEC Montréal. APPEND itable. itable-VALUE = 253150. itable-VALUE = 182000. END OF itable. 82 . *déclaration d'une variable : titre de l'axe des Y du graphique data: TCOL1(5) VALUE '#1991'.

83 . VERSION PRÉLIMINAIRE. AUBERT. Benoit A. Tous droits réservés pour tous pays. SAP R/3 : Comprendre. Pierre-Majorique LÉGER et Suzanne RIVARD. Copyright © 2004. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. configurer et implanter. HEC Montréal.VALT TABLES DATA = TCOL1 = itable.

Annexe 1 Liste des programmes utilisés Nom du programme dans ABAP Editor YX00ex_gabarit YX00ex_programme YX101 YX102 YX00ex_gabarit YX110 YX120 YX130 YX140 YX141 YX150 YX171 YX160 YX180 YX181 YX190 YX200 YX210 YX210 YX240 YX210 et YX240 YX241 YX211 YX212 YX222 YX224 YX230 YX270 YX271 YX272 YX273 YX280 Description Gabarit de la structure d'un programme Exemple d’un programme Exemple d’un programme complet en ABAP (structure) Exemple de la commande Report Démo en-tête Exemple parameters Exemple select options Exemple parameters et select options Exemple #1 avec la commande Write Exemple #2 avec la commande Write Exemple de mise en forme Exemple avec opérandes Exemple text-elements Exemple avec IF Exemple avec IF et SY-SUBRC Exemple avec case Exemple avec une boucle Exemple déclaration table interne Exemple commandes Move. Benoit A. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. Tous droits réservés pour tous pays. configurer et implanter. HEC Montréal. Append et Clear Exemple déclaration table interne (tables disponibles dans SAP) Exemple afficher le contenu d’une table interne Exemple table interne commande Read Exemple table interne Modify Exemple table interne avec Delete Exemple Select Exemple Select avec table interne Exemple requête concaténée Exemple rapport interactif et table SY Exemple rapport interactif et commande Hide Exemple rapport interactif et forage sur plusieurs niveaux Exemple rapport interactif et commande Window Exemple graphique à 2 dimensions Copyright © 2004. AUBERT. Pierre-Majorique LÉGER et Suzanne RIVARD. VERSION PRÉLIMINAIRE. 84 . SAP R/3 : Comprendre.