Professional Documents
Culture Documents
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
INTRODUCTION 4
ENVIRONNEMENT DE DÉVELOPPEMENT 5
ABAP Editor 5
ABAP Dictionary 6
Dictionary Data Browser 7
STRUCTURES DE CONTRÔLE 40
Les instructions de conditions 40
Les boucles 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 65
La commande Select 65
Fonctions d’agrégation 69
Concaténer une requête 70
RAPPORTS INTERACTIFS 72
La commande At-line selection 72
Champs de la table SY 73
La commande Hide 74
Le forage sur plusieurs niveaux 76
La commande Window starting at […] ending at […] 79
CRÉATION DE GRAPHIQUES 80
Fonctions et commandes pour la création de graphiques 80
Graphique à deux dimensions 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.
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
ENVIRONNEMENT DE DÉVELOPPEMENT
L’environnement de développement se retrouve principalement dans l’ABAP
Workbench. Ce dernier contient l’ensemble des outils requis pour développer et
maintenir les applications développées en langage de programmation AB AP. Dans le
cadre de cette section, nous aborderons successivement les outils suivants : l’ABAP
Editor, l’ABAP Dictionary et le Dictionary Data Browser.
ABAP Editor
L’ABAP Editor est le principal outil permettant de créer, modifier et supprimer un
programme ABAP. Il gère la création et le maintien des programmes ABAP, des
modules de fonctions, de la suite logique des écrans et de la logique de la base de
données. C’est à l’aide de cet outil qu’il vous sera possible de programmer en ABAP.
Pour y accéder, cliquez sur le module Tools > ABAP Workbench > Development >
ABAP Editor ou saisir le numéro de transaction suivant : /nSE38. La prochaine section
est consacré à l’ABAP Editor et explique en détails la création et la modification de
programme ABAP.
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.
5
ABAP Dictionary
Au même titre que l’ABAP Editor, l’ABAP Dictionary se retrouve aussi sous l’onglet
Development du ABAP Workbench. L’ABAP Dictionary permet d’accéder aux structures
de données des différentes tables contenues dans SAP R/3. Pour visualiser la structure
d’une table, il suffit de se rendre dans l’ABAP Dictionary (SE11) et saisir le nom de cette
table sous le champ Database Table. Prenons exemple sur la table SFLIGHT.
Cliquez sur le bouton Display pour faire afficher la structure de données de cette table.
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.
6
Prenons un autre exemple : la table SY. Il s’agit d’une table très utile dans le cadre du
développement d’un programme ABAP. Cette table contient différentes informations de
session tels que la date du système, le nom du l’utilisateur, la langue d’utilisation, etc.
Tableau 1 - Le système
Table-Champs Description
approprié. Dans notre cas, inscrire SFLIGHT puis cliquez sur Enter .
L’écran qui apparaît permet de raffiner la recherche des enregistrements. Il affiche tous
les champs de la table SFLIGHT.
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.
7
Pour raffiner une recherche, cliquer dans l’un des champs , puis sur son bouton
d’expansion . Une nouvelle fenêtre affichera toutes les valeurs que le champ peut
prendre.
Seuls les noms des compagnies aériennes, dont l’acronyme (CARRID) se situe dans
l’intervalle alphabétique saisie par l’utilisateur (en l’instance de AC à BA), seront
affichés à l’écran. Voici un échantillon des résultats :
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.
8
Pour afficher tous les enregistrements de la table SFLIGHT, ne rien inscrire dans les
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.
9
Notons avant de poursuivre que, par convention, les programmes ABAP créés dans le
cadre des formations SAP à HEC Montréal doivent être nommés sous la forme
suivante : Y?##EX_&&. Le caractère point d’interrogation correspond à la session en
cours et s’incrémente d’une année scolaire à une autre. Votre professeur vous
indiquera la lettre qui est associée à votre cours pour votre session. Les caractères
« ## » correspondent aux derniers numéros de votre code d’us ager et « && » au
numéro de l’exercice. Par ailleurs, R/3 requiert que la première lettre d’un programme
désigne sa provenance ou son utilité. Dans notre cas, le Y signifie un programme
temporaire qui ne fera pas partie du système de production.
Comme il est souvent plus aisé de copier un gabarit de programme ABAP plutôt que de
partir d’une feuille blanche, les opérations suivantes expliquent comment dupliquer le
gabarit YX00EX_gabarit afin de l’utiliser dans un nouveau programme.
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.
10
c) Sous Target Program, inscrire le nom de votre programme tout en vous conformant
au format décrit dans la section précédente.
« y » = programme temporaire.
« ? » = lettre indiquée par le professeur (par exemple « a »).
« ## » = les 2 derniers chiffres de votre code usager (par exemple si le code
d’usager est zhec3715_25 , le « ## » serait remplacé par 25).
« && » = numéro de l’exercice ou nom de l’exercice.
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.
11
e) S’assurer que les deux premières options (source et text elements) soient cochées,
h) Par défaut, l’opt ion code source (Source Code) est sélectionnée. Cette dernière
permet d’accéder directement au code du programme.
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.
12
i) Pour faire afficher le programme nouvellement copié, cliquez sur le bouton Display
et pour le modifier, utiliser le bouton « Change ».
REPORT YX00EX_PROGRAMME
NO STANDARD PAGE HEADING.
**************************************************************
* Exercice: Cours: 3 -715-00 *
* Date rendue: Trimestre: *
* *
* Nom du programme: Programmeur: A.C.Pellerin *
* Matricule: *
* *
* Description du programme: * En-tête
* Faire afficher une phrase à l'écran *
* *
* Inputs: Outputs: À l'écran *
* *
* *
* Historique des modifications: *
* Date: Programmeur: Description: *
* *
**************************************************************
***** Tables **********
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.
13
Spécifications lors de la programmation en ABAP
Lors de la programmation en ABAP, 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. L’oCha91 Tw Tj quvoion l3 0 TD /F789 Tc -0.353(-) Tj 3.75
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.
14
Tableau 2 - Description des principales fonctions de la barre d'outil de l'ABAP
Editor
Activate
Rend le programme disponible pour l’ensemble de
R/3
Display object list Affiche la liste des objets utilisés dans le programme
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.
15
Enregistrer et activer un programme
Après toutes modifications au code d’un programme ABAP, il importe d’enregistrer ce
activer .
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.
16
Voici un exemple de programme ABAP délimité en fonction de cette structure :
REPORT YX101
NO STANDARD PAGE HEADING.
**************************************************************
* 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: *
* *
**************************************************************
else.
write 'Aucune donnée trouvée'(004).
endif.
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.
17
Voici l’écran de saisie appelé dans ce programme. 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.
Compte tenu de la valeur saisie dans l’écran précédent, le programme affiche à l’écran
le résultat suivant :
Commande REPORT
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.
18
Tableau 3 - Options de la commande REPORT
Options Description
REPORT YX102
NO STANDARD PAGE
HEADING
MESSAGE-ID ZU
LINE-SIZE 100
LINE-COUNT 20.
En-tête
La première partie d’un programme est généralement consacrée à des informations
concernant le ou les programmeurs, le programme de même que toute autre
information qui pourrait faciliter la compréhension du code à un tiers. Dans le cadre des
cours de formations SAP à HEC Montréal, l’en-tête utilisé est celui du gabarit
YX00ex_gabarit. La figure ci-dessous présente cet 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.
19
Figure 1 – En-tête du gabarit YX00EX_GABARIT
**************************************************************
* Exercice: Cours: 3 -715-00 *
* Date rendue: Trimestre: *
* *
* Nom du programme: Programmeur: A.C.Pellerin *
* Matricule: *
* *
* Description du programme: gabarit de la structure *
* d'un programme *
* *
* *
* Inputs: Outputs: À l'écran *
* *
* *
* Historique des modifications: *
* Date: Programmeur: Description: *
* *
**************************************************************
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.
20
Section : Tables
Les tables de la base de données de SAP R/3
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.
21
Tableau 4 - Déclaration dans la
section DATA
Fonctions Description
DESCRIPTION EXEMPLE
C Caractère ‘Bonjour’
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.
22
À titre d’exemple, le programme suivant crée la variable montant_total. D’une longueur
de 6 caractères, cette variable est de type décimal arrondi (p) et doit afficher 2 chiffres
après la virgule. 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. Pour ce faire, vous devez utiliser
l’expression Like. Dans un tel cas, il n’est pas nécessaire de déclarer le type de donnée
de la nouvelle variable, puisqu’elle viendra calquer le type du champ auquel elle fait
référence. Il n’est pas non plus nécessaire de déclarer les tables de références dans la
section tables.
DATA : <name>
LIKE table-champs.
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.
*****Data*****
DATA: s_carrid LIKE SCARR-CARRID,
s_carrname LIKE SCARR-CARRNAME,
s_currcode LIKE SCARR-CURRCODE.
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.
23
À titre d’information, la figure suivante présente un extrait de la table SCARR avec les
variables de références utilisées dans l’exemple.
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. Le nom d’un paramètre
ne doit pas dépasser 8 caractères. Par exemple, le programme YX110 crée une
interface permettant de faire certaines opérations arithmétiques de base :
*****Parameters*****
nb_2 TYPE i,
operande(1) TYP E C OBLIGATORY.
Soulignons que l’option Obligatory oblige l’utilisateur à saisir une valeur dans le champ
de la variable obligatoire spécifiée. Si ce champ n’est pas complété, le programme ne
pourra pas s’exécuter.
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.
24
Select-Options
Le Select-Options est similaire au Parameters. Il permet à l’utilisateur de saisir un
intervalle de valeur. Cependant, le Select-options ne peut être utilisé que pour faire des
requêtes sur les tables de SAP R/3. D’ailleurs, les tables utilisées lors de requêtes
doivent être déclarées dans la section Tables. Enfin, soulignons que le nom donné à un
Select-Options ne doit pas dépasser 8 caractères.
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.
25
À l’écran, le formulaire de saisie du programme YX130 s’affichera de la manière
suivante :
Section : Initialization
L’événement d’initialisation est déclenché avant l’affichage du premier écran. Il est
recommandé d’utiliser cet événement pour saisir des valeurs par défaut complexes.
Dans le cadre des formations SAP à HEC Montréal, ce type de fonction ne sera pas
utilisé.
Section : Start-of-Selection
Habituellement, 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.
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.
26
COMMANDE WRITE, MISE EN FORME, 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. Nous abordons successivement la commande d’écriture
(WRITE), les fonctions de mise en forme et la déclaration des éléments de texte.
Commande WRITE
La commande Write permet d’afficher à l’écran les résultats de l’exécution d’un
programme. Dans sa forme la plus simple, la commande Write se rédige de la manière
suivante :
WRITE : 'Bonjour'.
La commande est suivi du symbole « : » et le texte à afficher doit être précédé et suivi
du guillemet simple « ' ». Par ailleurs, pour ne pas entrer en confusion avec la fin réelle
de la chaîne de caractères, il importe de savoir que les chaînes de caractères
comportant une apostrophe doivent saisir cette dernière deux fois. Par exemple :
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.
27
Tableau 5- Options de positionnement de
la commande Write
Option Description
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.
28
Le second programme (YX141) utilise les trois options d’affichage.
L’affichage de ce programme est illustré ci-après. Il est important de noter que l’option
longueur limite le nombre de caractères affichés. Ainsi, au lieu d’écrire ABAP en entier,
le programme affiche, tel que spécifié par le (2), seulement les 2 premiers caractères de
l’expression.
Mise en forme
L’ABAP Editor comporte différentes fonctions permettant une certaine mise
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.
29
Le programme suivant (YX150) utilise ces différentes fonctions de mise en forme. Nous
avons commenté le programme afin d’expliquer l’effet de chacune de ces fonctions sur
l’affic hage à l’écran.
*saute 5 lignes
SKIP 5.
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.
30
La figure ci-dessous illustre à quoi ressemblerait l’affichage de ce programme.
Notons enfin que pour réaliser l’affichage d’un tableau, 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. Cette fonctionnalité est présentée un peu plus tard dans
ce chapitre avec les autres structures de contrôle.
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.
31
Opérandes
Plusieurs programmes nécessitent l’utilisation d’opérandes afin d’exécuter des calculs
de différentes natures. Voici donc un tableau indiquant les opérateurs arithmétiques les
plus utilisés.
Nom Commandes
Addition +
Soustraction -
Division /
Multiplication *
Exposant **
Modulo MOD
Fonctions arithmétiques
Logarithme LOG( )
Il est à noter que, lors de l’utilisation des fonctions arithmétiques, les valeurs entre
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.
32
Le programme suivant (YX171) exécute des calculs sur des variables déclarées dans la
section Data.
R1 = D1 + D2.
R2 = D1 * D2.
R3 = D2 / D1.
R4 = D1 mod D2.
WRITE : / R1,
/ R2,
/ R3,R4.
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.
33
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, chaque terme (élément de texte) utilisé dans SAP doit être
répertorié et numéroté afin d’y associer la traduction appropriée. 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. Évidemment, R/3
ne traduit pas lui-même les éléments de texte. Chaque traduction doit être saisie une à
une et c’est donc pourquoi il peut arriver, à l’occasion, de tomber dans R/3 sur des
expressions en allemand au sein de certains rapports ou interfaces rarement utilisées !
Prenons l’exemple d’une entreprise possédant une filiale francophone et une filiale
anglophone. L’entreprise souhaite développer un rapport de vente journalier
personnalisé pouvant s’afficher dans les deux langues. En anglais, le rapport doit
afficher les informations suivantes : No_order , No_customer, O et r
No_salesrep. En français, ces termes se traduisent de la manière suivante : le No_com,
le No_client, la Valeur_com et le No_vendeur. Le programme YX160 est rédigé en
anglais et l’en-tête du rapport est composé des éléments de texte suivants : W R
'No_Order'(201),
20 'No_Customer'(202),
36 'Order_Value'(203),
57 'No_Salesrep'(204).
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.
34
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). Les cinq étapes suivantes expliquent
comment répertorier les éléments de texte de l’exemple précédent.
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.
35
c) Pour activer l’élément sélectionné, cliquez sur le bouton Activate . Sélectionner le
nom du programme puis cliquez sur le bouton Continue .
d) Enregistrer les ajouts en cliquant sur l’icône Save . Au bas de l’écran, le message
suivant apparaîtra :
Copyright © 2004, SAP R/3 : ComIrendre, 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.
36
b) Cliquez sur le bouton Display ou Change dépendamment de l’action désirée.
/nSE32 :
ABAP Editor :
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.
37
La langue originale (Original language) est celle de la session de l’utilisation. Dans
notre cas, l’anglais est la langue originale. La langue de traduction, soit Target
language, est la langue dans laquelle les éléments de texte seront traduits. Dans la
présente situation, le français sera cette langue. Donc remplacer la Target language par
FR, soit le diminutif de français, puis cliquez sur exécuter .
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.
38
Pour traduire ces derniers, il suffit d’inscrire en-dessous de chacun des éléments de
texte leur traduction.
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.
39
Ne pas oublier de sauvegarder les modifications avec le bouton . L’écran suivant
apparaîtra en récapitulant tous les éléments de texte traduits pour le programme
YX160.
STRUCTURES DE CONTRÔLE
La programmation en ABAP offre différentes instructions de contrôle semblables au
langage Visual Basic . En effet, il est ainsi possible d’utiliser tant des instructions de
conditions que des boucles. Cette section présente ces deux approches.
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.
40
If [not] condition 1.
Instruction1.
[Elseif condition2.
Instruction2.]
Else.
Instruction Else.
Endif.
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.
41
Puisque que la valeur cinq est saisie, le programme affiche qu’aucun prix de groupe
n’est disponible.
L’exemple du programme YX181 effectue une requête dans la table SCARR (liste de
compagnies aériennes). Plus part iculièrement, la requête vise à afficher la compagnie
possédant le numéro d’identification AD.
***TABLES***
tables: scarr.
write:/ scarr-carrname,
scarr-url.
endselect.
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.
42
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.
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.
43
Tableau 8 - Opérateurs en conjonction avec l’instruction IF
= EQ Égale à
NOT Ne … pas
AND ET
OR OU
case champs .
When valeur 1.
Instruction 1.
When valeur 2.
Instruction 2.
When others,
Intruction others
endcase.
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.
44
Le programme YX190 indique le nom de la couleur correspondant au chiffre saisie dans
l’interface.
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.
45
Les boucles
L’instruction Do est une commande permettant d’exécuter un certain nombre de fois la
même procédure. Plus spécifiquement, le programme exécute dans un premier temps
la procédure et, dans un deuxième temps, la suite. La boucle s’arrête sur demande
(conditions IF avec un EXIT) ou lorsque le nombre de boucle désirée est atteint. Si
aucune de ces deux options de complétion n’est effectuée, la boucle sera infinie. Voici
le format pour écrire une boucle.
CD [ n times].
…procédure…
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.
46
Le programme YX200 permet d’afficher un tableau à l’aide d’une boucle. Notons que la
variable SY-INDEX
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.
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.
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
Option 2
Options Signification
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
L’extrait du programme YX210 présente la déclaration de la table interne ICIE dont la
structure est copiée sur COMPAGNIE.
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.
51
L’exemple suivant poursuit l’exemple initié précédemment (YX210) en ajoutant des
enregistrements à la table interne ICIE.
APPEND icie.
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.
52
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. Il est même possible d’extraire des données de cette
même table afin de peupler une table interne. Notons que nous abordons ici
succinctement le sujet des requêtes dans les tables de R/3; nous y reviendrons en
détails à la prochaine section.
Voici de quelle manière la structure d’une table existante dans R/3 peut être utilisée
pour définir une table interne. 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.
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 :
Notons que la fonction Corresponding field permet de s’assurer que la table interne
possède la même structure, ou des champs correspondants, avec la table d’où les
valeurs sont extraites.
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.
53
À titre d’exemple, prenons un programme (YX240) permettant à un employé d’une
compagnie aérienne de faire afficher le nom du pays, de la ville et de l’aéroport d’où il y
a des départs.
loop at itable.
write: [/1] itable-champs1,
itable-champs2
itable-champs… # 3, 4, …, N.
Endloop.
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.
54
Le programme suivant (YX210) poursuit l’exemple débuté précédemment. Dans cet
extrait, nous procédons à l’affichage des enregistrements de la 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.
55
Voici la liste des aéroports avec leur ville et pays respectifs affichée à l’écran :
b) Saisir le nom de la table interne et le nom du champ recherché puis inscrire la valeur
de ce champ. 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). Il est aussi possible d’utiliser
le numéro de l’index.
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.
56
Option 1
Option 2 :
Clear itable.
Option 1 :
Option 2:
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.
57
Comme la commande Read ne rapporte que le premier enregistrement retrouvé, seul le
premier vol (CARRID = AA, CONNID = 0064) est affiché :
Option 1 :
Attardons nous d’abord à la première option : la modification d’une table interne à l’aide
de son index. Cette approche requiert que le programmeur connaisse le numéro de
l’enregistrement à modifier. Par conséquent, il importe, avant tout, d’afficher la table
interne et de faire apparaître les numéros de l’index. Pour ce faire, il suffit d’ajouter la
variable SY-TABIX dans la boucle qui permet d’afficher la table. Le TABIX est un
champ de la table System (SY) contenant les numéros d’enregistrements de l’index.
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.
59
*boucle permettant d'afficher les données contenues dans la table
*interne.
Loop at icie.
write:/ sy-tabix,
icie-no_cie,
icie-nom_cie.
Endloop
Il est à noter que lorsque l’on insère des enregistrements dans une table interne, ceux-
ci s’affichent les uns à la suite des autres sans ordre de champ précis. C’est pourquoi la
compagnie Gazon Plus se retrouve à l’index #3, malgré un numéro de clients supérieur
à Menuiserie Pros.
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.
60
*mise à jour du d’un champ X à l’aide de son *numéro d’index
read table itable index N.
if sy-subrc = 0.
itable-champ1 = ‘nouvelle valeur’
modify itable index sy-tabix.
endif.
Option 2
La seconde option pour modifier un enregistrement dans une table interne est d’utiliser
une boucle. Cette boucle recherche dans la table interne une valeur spécifique dans un
champ donné. Après que l’enregistrement ait été trouvé et amené dans l’entête, celui-ci
est modifié et retourné dans la table interne. Voici donc une manière alternative de
rédiger l’extrait du programme présenté précédemment dans l’option 1.
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.
61
*mise à jour du nom de la compagnie d'électriciens
*avec une boucle
loop at icie where no_cie = '02'.
icie-nom_cie(30) = 'Électriciens ABC et Fils'.
modify icie.
endloop.
Option 1 :
La première option consiste à rechercher l’enregistrement à supprimer à l’aide de son
numéro d’index. Un fois trouvé, l’enregistrement est copié dans l’en-tête puis supprimé.
L’enregistrement est définitivement supprimé de l’en-tête et de la table interne
simultanément.
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.
62
*suppression de l'enregistrement possédant le
*numéro de compagnie X, mais le numéro d’index
Y *(SY-TABIX)
read table itable index Y.
if sy-subrc = 0.
delete itable index sy-tabix.
endif.
À noter : lors de la suppression complète d’un enregistrement avec Delete, l’index (SY-
TABIX) se modifiera pour tenir compte de cette suppression.
Avant la suppression :
Après la suppression :
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.
63
Option 2 :
L’option 2 consiste à rechercher un enregis trement en fonction de la valeur d’un champ
de cet enregistrement. Lorsque cet enregistrement est identifié et copié dans l’en-tête,
la commande Delete permet de la supprimer aux deux endroits.
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.
64
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. En effet, ABAP utilise le langage SQL pour
extraire et manipuler des données contenus dans la BD de R/3. Bien que les
commandes Update, Insert et Delete puissent être utilisées dans le cadre d’un
programme ABAP, cette section s’attarde principalement à la commande Select.
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. La
commande Select se rédige de la manière suivante :
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.
65
Il importe de souligner que le point doit seulement apparaître après la dernière
instruction, soit le Where, le Group by , le Having ou le Order by. De surcroît, il est
recommandé de conclure la requête par un Endselect (qui lui-même doit être suivi d’un
point). La combinaison du Select-endSelect crée automatiquement une boucle, facilitant
ainsi l’affichage des résultats pour des programmes courts ou lorsque les données ne
sont lues qu’une seule fois.
En ce qui concerne la commande Where, ABAP reconnaît deux frimes. D’une part, le
signe pourcentage (%) permet de remplacer un groupe de caractères au début ou à la
fin d’une valeur : par exemple, tous les noms commençant par b = ‘b%’. D’autre part, le
signe de soulignement ( _ ) permet de remplacer une série de caractères au centre
d’une valeur : par exemple, tous les noms ressemblant à Amy = ‘A_ y’. Dans les deux
cas, il importe d’utiliser la commande Like. Par exemple, une requête pour trouver les
compagnies aériennes dont le ID commence par A devrait se rédiger de la manière
suivante :
Illustrons par un exemple la c ommande Select. La requête de cet exemple porte sur la
table SPFLI. 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, 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.
66
cityfrom ) : Ensuite le programme affiche les champs CARRID, CONTRYFR,
CITYFROM, AIRPFROM, COUNTRYTO et CITYTO. Le programme utilisé est le
YX222.
select *
from spfli
where period = '0'
order by cityfrom.
write:/ spfli-carrid,
spfli-countryfr,
spfli-cityfrom,
spfli-airpfrom,
spfli-countryto,
spfli-cityto.
endselect.
skip 2.
Il est également possible de conserver les résultats de la requête dans une table
interne. L’exemple suivant (YX224) sauvegarde temporairement les données de SPFLI
dans la table interne itable. L’affichage des données est effectué à l’aide d’une boucle.
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.
67
***** Tables **********
tables: spfli.
skip 2.
write:/ 'nombre d'’enregistrements trouvés:', sy-
dbcnt.
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.
68
L’exécution de ce programme mène à l’affichage de la liste d’enregistrements ci-
dessous. Notons que le nombre d’observations retournées est affiché grâce au champ
SY-DBCNT.
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. Voici une liste des fonctions d’agrégations
les plus fréquemment utilisées.
Commande Description
AVG Moyenne
SUM Somme
MAX Maximum
MIN Minimum
COUNT Fréquence
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.
69
Concaténer une requête
Pour concaténer une requête en langage ABAP, il faut imbriquer deux Select-
EndSelect. Une telle requête concaténée se rédige de la manière ci- dessous.
Attention : ne pas oublier de mettre les deux Select-EndSelect.
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.
70
***** Tables **********
tables : sflight,
spfli.
***** Data ************
*en-tête
write:/1 'no_connexion'(001),
15 'Type_avion'(002),
30 'Date_vol'(003).
skip 1.
*requête concaténée
select * from sflight.
select * from spfli
where carrid = sflight-carrid
and connid = '17'.
endselect.
endselect.
skip 3.
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.
71
À l’écran, le résultat s’affiche de la manière suivante :
RAPPORTS INTERACTIFS
Cette section présente les différentes fonctions, événements et commandes pour
programmer des rapports interactifs dans SAP R/3 à l’aide du langage ABAP. Dans le
cadre du cours, les rapports interactifs seront surtout sous forme de listes détaillées.
at line-selection.
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.
72
Champs de la table SY
Certains champs, provenant de la table SY, affichent de l’information concernant
l’utilisation de rapports interactifs. Le tableau ci- dessous en décrit un certain nombre.
do 30 times.
write: /'line', sy-index.
write /.
enddo.
at line-selection.
if sy-lsind < 2.
write: / 'Niveau de la liste :'(001), / sy-lsind.
write: / 'Ligne :'(002), / sy-curow.
write: / 'Contenu de la ligne :'(003), / sy-lisel.
endif.
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.
73
Lors de l’exécution du programme, le mot line et le nombre de fois que la boucle a été
exécutée (grâce à SY-INDEX) s’affiche à l’écran.
La commande Hide
La commande Hide permet d’entreposer temporairement en mémoire de l’information
spécifique à chacune des lignes de la liste. Lors de l’exécution de la commande At line-
selection, le contenu est restauré. 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 (SY-
LSIND = 0) et un niveau supérieur .
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.
74
Le programme YX271 est un exemple d’utilisation de la commande Hide. Il entrepose
en mémoire le numéro identif iant chacune des compagnies d’aviation (carrid) à l’aide de
la commande Hide. Lorsque l’utilisateur sélectionne le nom de l’une des compagnies,
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, 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.
75
À l’écran, 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, dans ce cas Qantas
Airways, l’information du niveau 1 s’affiche à son tour dans une nouvelle page.
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.
76
À l’écran, le niveau de base s’affiche ainsi :
Niveau 2 :
Niveau 3 :
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.
77
La programmation ABAP du programme YX272 est la suivante :
SELECT *
FROM kna1 into corresponding fields of table iclient.
loop at iclient.
write:/1 iclient-name1.
*conserver en mémoire les numéros identifiant chacun des clients
hide iclient-kunnr.
endloop.
when 1.
write: /5 'Nom du client: ', iclient-NAME1,
/5 'Numéro du client : ', iclient-KUNNR.
when 2.
write: /5 'Ville : ', iclient -ORT01,
/5 'Pays : ', iclient -LAND1.
when 3.
write: /5 'Adresse : ', iclient -stras.
endcase.
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.
78
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, par exemple, dans une nouvelle
fenêtre tout en ayant le contrôle sur les dimensions de celle-ci. Cette commande se
rédige comme ceci :
At line-selection.
Window starting at 5 5
Ending at 70 5.
write: 'Voici une nouvelle fenêtre ayant des dimensions de 5-5-70-5'.
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.
79
Après avoir double-cliqué sur « Cliquez sur cette phrase », 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. Différentes fonc tions sont disponibles dans SAP R/3 pour faciliter la
programmation de graphiques en langage ABAP. Dans la plupart des cas, il ne suffit
que des les appeler.
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.
80
Graphique à deux dimensions
Pour créer un graphique en deux dimensions, il faut en premier lieu déclarer une table
interne et saisir les valeurs, manuellement ou à l’aide d’une requête, de chacune des
colonnes du graphique. Par la suite, il ne reste qu’à appeler la fonction du graphique à
deux dimensions.
Le programme YX280 appelle une fonction graphique fournie par SAP R/3 soit le
graphique à deux dimensions.
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.
81
La programmation en ABAP du programme YX280 est la suivante :
TABLES
DATA = itable.
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.
83
Annexe 1
Liste des programmes utilisés
Nom du
programme dans Description
ABAP Editor
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.
84