Vous êtes sur la page 1sur 84

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

INTRODUCTION À LA PR OGRAMMATION EN ABAP 9


Création d’un programme ABAP 9
La structure d’un programme ABAP 13
Fonctions usuelles de ABAP Editor 14
Enregistrer et activer un programme 16

STRUCTURE D’UN PROGRAMME ABAP 16


Exemple d’un programme ABAP 16
Commande REPORT 18
En-tête 19
Section : Tables 21
Section : Data 21
Section : Parameters & Select options 24
Section : Initialization 26
Section : Start-of-Selection 26

COMMANDE WRITE, MISE EN FORME, OPÉRANDES ET ÉLÉMENTS DE TEXTE 27


Commande WRITE 27
Mise en forme 29
Opérandes 32
Chaînes de caractères – Text-elements 34

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.

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, Addison-Wesley, 2002, 556
pages;
• 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
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.

Il est à noter que le chemin d’accès à l’environnement de développement de SAP R/3


est le suivant : Tools > ABAP Workbench. La plupart des outils utilisés dans cette
section, portant sur le développement, se retrouvera principalement dans le dossier
Overview et Development .

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.

La structure de la table SFLIGHT dévoile plusieurs attributs comme le nom de ses


champs, le type de données, leur longueur, leur description, etc. Avec ces attributs, il
est possible d’effectuer des requêtes permettant, par exemple, de connaître le nombre
d’occupants sur un vol donné.

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.

Le tableau 1 présente certains des champs de cette table.

Tableau 1 - Le système

Table-Champs Description

SY-DATUM Date du système

SY-TCODE Numéro de la transaction en cours (ex : SE38)

SY-MANDT Numéro du client utilisé (ex : 401)

SY-LANGU Langage de la session (ex : EN)

SY-UNAME Nom d’usager

SY-UZEIT Heure du serveur

SY-REPID Nom du programme en cours

SY-SUBRC Valeur du test logique

Dictionary Data Browser


Le Data Browser permet de visualiser les enregistrements des tables de données de
R/3. Pour se rendre au Dictionary Data Browser: Tools > ABAP Workbench > Overview
> Data Browser (/nSE16). Il suffit alors d’inscrire le nom de la table dans le champ

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.

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 .

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

champs d’intervalles et simplement cliquez sur Exécuter . La résultante de cette


action permet d’afficher tous les enregistrements de la table SFLIGHT.

INTRODUCTION À LA PROGRAMMATION EN ABAP


Cette section vise à introduire le lecteur à la programmation en ABAP. Nous expliquons
d’abord comment créer un programme en ABAP dans l’ABAP Editor. Un programme
ABAP simple est ensuite illustré afin de mettre en évidence les différentes parties qui le
composent. 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, nous terminons cette section sur
l’enregistrement des programmes ABAP de même que sur leur activation.

Création d’un programme ABAP


La création d’un programme ABAP se fait à partir de la transaction ABAP Editor (SE38).
La figure ci-dessous présente l’écran initial de l’ 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.
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.

Procédure pour copier le gabarit YX00EX_gabarit


a) Une fois l’ABAP Editor ouvert, saisir le nom du programme recherché dans le champ
Program. Dans notre cas, saisir YX00ex_gabarit.

b) Cliquez sur l’icône Copy .

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.

Ainsi, dans cet exemple, le résultat final serait YA25ex_30.

d) Pour confirmer l’opération, cliquez sur le bouton . Cette fenêtre apparaîtra :

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,

puis appuyer sur Copy .

f) Dans la fenêtre suivante, 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.

g) Enregistrer les modifications apportées en cliquant sur le bouton

d’enregistrement .Le message suivant devrait apparaître au bas de l’écran :

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

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. Chaque programme codé en ABAP doit contenir trois
parties; la première décrivant le programme en question, la seconde servant à déclarer
les variables ainsi que les paramètres et la dernière contenant l’écriture de la
procédure. Voici un exemple d’un programme ABAP simple illustrant ces trois sections.

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

***** Data ************

***** Parameters & Select Options *****


Déclaration
des variables
***** Initialization *********

***** Start of Selection *****


Procédures
*Faire afficher à l'écran : Programmer en langage ABAP
write:/ 'Programmer en langage ABAP'.

Lorsque le programme ci-haut sera exécuté, la phrase suivante apparaîtra à l’écran :

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

Icône Fonction Description

Previous Revenir à la page précédente

Next Aller à la page suivante

Passer du mode Afficher (Display) au mode Modifier


Display/Change
(Change)

Le programme est disponible pour l’ensemble de R/3


Active/Inactive lorsqu’il est actif ou se limite à l’ABAP Workbench
lorsqu’il est inactif

Permet d’effectuer différentes recherches sans sortir


Other object
du programme. Par exemple : ouvrir un nouveau
programme, visualiser les champs d’une table
spécifique (/nSE11), etc.

Check Effectue une validation de la syntaxe du programme

Activate
Rend le programme disponible pour l’ensemble de
R/3

Exécute le programme (et le compile si ce n’est pas


Test
déjà fait)

Permet de faire afficher la liste des programmes,


écrans, tables de données, vues utilisant ce même
Where used-list objet. Pour ce faire, double-cliquez sur l’objet en
question, ou placer le curseur de la souris sur celui-ci,
et sélectionner le bouton Where used-list.

Display object list Affiche la liste des objets utilisés dans le programme

Display navigation window Affiche la fenêtre de navigation

Documentation disponible directement dans SAP R/3


Help on couvrant plusieurs sujets sous le thème de la
programmation en ABAP

Installation et suppression de drapeaux. Permet de


Set/delete breakpoint signaler au débogueur de SAP R/3 que le programme
doit s’arrêter là où l’on retrouve cet arrêt.

Permet de formater le document pour l’impression.


Pretty Printer
Option rarement utilisée.

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

dernier en cliquant sur l’icône de sauvegarde . Par ailleurs, il faut activer le


programme pour le rendre disponible dans SAP R/3 et ce en cliquant sur le bouton

activer .

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, nous débutons par un exemple complet de programme. Cet
exemple vise à illustrer la structure typique d’un programme ABAP. Le reste de la
section s’attarde individuellement sur chacune des différentes parties d’un programme
ABAP.

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;
b) l’en-tête;
c) la section Tables;
d) la section Data;
e) la section Parameters & Select Options;
f) la section Initialization;
g) et finalement la section 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.
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: *
* *
**************************************************************

***** Tables **********


*utilisation de la table scarr
tables: scarr.

***** Data ************


*déclaration d'une table interne
data: begin of itable occurs 0.
include structure scarr.
data: end of itable.

***** Parameters & Select Options *****


*déclaration d'un paramètre
parameters: air_id like scarr-carrid.

***** Initialization *********

***** Start of Selection *****


*requête
select *
from scarr
into table itable
where carrid = air_id.

*si on trouve des données pour la requête ...


if sy-subrc = 0.
*écrire comme en-tête
write: /01 'ID'(001),
10 'Nom'(002),
30 'Monnaie'(003).

*boucle affichant les données trouvées


loop at itable.
write:/ itable-carrid under text-001,
itable-carrname under text-002,
itable-currcode under text-003.
endloop.

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

NO STANDARD PAGE HEADING Affiche un en-tête par défaut

Permet l’affichage de messages à l’aide d’un


MESSAGE-ID
numéro identifiant ce dernier

LINE-SIZE Nombre de colonnes contenues dans une


page

LINE -COUNT Nombre de lignes par page

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.

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: *
* *
**************************************************************

On retrouve également dans ce gabarit un second bloc de commentaires (voir figure


suivante). Ces 5 marqueurs sont utilisés pour délimiter les autres sections d’un
programme afin d’en faciliter la lecture. Évidemment, puisque ce sont des
commentaires, ils n’affectent en rien le déroulement du programme.

Figure 2 - Marqueurs de délimitation du programme YX00EX_GABARIT

***** Tables **********

***** Data ************

***** Parameters & Select Options *****

***** Initialization *********

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

Chacune des variables que l’on retrouve dans un


programme doit être déclarée dans la section Data. Le
langage ABAP impose que le nom des variables :
§ Soit d’un maximum 30 caractères
NAME
§ Débute par une lettre
§ N’utilise pas le tiret (-) même s’il est permis; cela porte
à confusion avec les champs des tables
§ N’utilise pas de mots réservés (commandes ABAP)

La longueur du champ (length) doit être spécifiée à droite


LENGTH
de son nom.

Le type d’une nouvelle variable doit être déclaré. Les


différents types de données, habituellement utilisés dans la
déclaration des variables, sont présentés dans le tableau ci-
dessous :

DESCRIPTION EXEMPLE

C Caractère ‘Bonjour’

D Date, format YYYYMMDD 19690623


TYPE
F Point flottant 7.5

I Nombre entier 789

N Texte numérique 10000

T Heure, format HHMMSS 123456

P Décimal condensé (arrondi) 36.50

Ce champ permet de spécifier une valeur par défaut à la


VALUE
variable.

DECIMALS Lorsqu’une variable est de type décimal (P), on doit spécifie


le nombre de chiffres après la virgule.

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.

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

PARAMETERS: nb_1 TYPE i,

nb_2 TYPE i,
operande(1) TYP E C OBLIGATORY.

À l’écran, 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. 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.

Le Select-Options du programme YX120, permettra de saisir un intervalle de date pour


faire afficher tous les vols effectués durant la période spécifiée. La liste des vols (champ
FLDATE ) est contenue dans la table SFLIGHT :

***** Tables **********


TABLES: sflight.

***** Data ************

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 :

Le programme en langage ABAP permettant de faire afficher l’interface ci-haute est le


suivant :

***** Tables **********


TABLES: spfli,
sflight.

***** Data ************

***** Parameters & Select Options *****


PARAMETERS: Cie LIKE SPFLI-CARRID.
SELECT-OPTIONS: Duree FOR SFLIGHT-FLDATE.

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 :

WRITE : 'Bienvenue à l’’aéroport Pierre-Éliot-Trudeau'.

Certaines options peuvent être ajoutées à la fonction Write afin d’identifier le


positionnement, dans l’écran, du texte à afficher. Voici comment se rédigent ces options
de positionnement :

WRITE : </> <colonne> <(longueur)>

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

/ Saute à la prochaine ligne

Colonne 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. Le premier programme (YX140) utilise
uniquement l’option de saut de ligne et l’option d’emplacement (colonne).

***** Start of Selection *****

*affichage des phrases


WRITE : /10 'SAP',
/15 'ABAP',
/20 'Technologie de l’’ information',
/15 'Aspects technologiques'.

À l’écran, le programme précédent s’affiche tel qu’illustré ci-dessous. 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.

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.

***** Start of Selection *****

*affichage des résultats


WRITE : /5(3) 'SAP',
/5(2) 'ABAP',
/15 'Technologie de l’’ information', 'et', 'Aspects Technologiques'.

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.

***** Start of Selection *****

*trace une ligne horizontale débutant à la colonne #1 et


*se terminant à la colonne # 100
uline at /1(100).

*saute 5 lignes
SKIP 5.

*se rend à la ligne 6


SKIP TO LINE 6.

*trace une ligne verticale à la position 1, 5 et 10 en


*sautant une ligne à chaque fois
WRITE:/1 SY-VLINE,
/5 SY-VLINE,
/10 SY-VLINE.

*débute l'écriture de la phrase à la colonne numéro 25


WRITE: /25 'Cette phrase commence à la position 25'.

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.

Tableau 7 - Opérateurs arithmétiques les plus utilisés

Nom Commandes

Addition +

Soustraction -

Division /

Multiplication *

Exposant **

Modulo MOD

Division entière DIV

Fonctions arithmétiques

Racine carrée SQRT( )

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.

***** Tables **********

***** Data ************


DATA: R1 TYPE i, R2 TYPE i, R3 TYPE i, R4 TYPE i,
D1 TYPE i VALUE '5',
D2 TYPE i VALUE '20'.

***** Parameters & Select Options *****

***** Initialization *********

***** Start of Selection *****

R1 = D1 + D2.
R2 = D1 * D2.
R3 = D2 / D1.
R4 = D1 mod D2.

*La commande WRITE permet d’afficher les résultats


*à l’écran et la barre
*oblique produit un saut de ligne.

WRITE : / R1,
/ R2,
/ R3,R4.

L’exécution de ce programme permet d’afficher à l’écran le résultat suivant :

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 !

Lors du développement d’un rapport ou d’une interface en ABAP, il importe de déclarer


toutes les chaînes de caractères utilisées dans le programme afin de faciliter sa
traduction subséquente. Concrètement, il suffit d’inscrire un numéro, entre parenthèse,
à la suite de chaque élément de texte du programme et de suivre la procédure ci-
dessous pour les répertorier.

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.

a) Double-cliquez sur le premier élément de texte, soit ‘No_order’, ou sur le numéro


suivant ce dernier (201). Une fenêtre comme celle-ci apparaîtra :

Cliquez sur Yes.

b) Un écran répertoriant l’ensemble des éléments de texte du programme suivra.

Jusqu’à maintenant, nous avons répertorié que le premier élément de texte 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.
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 :

e) Suivre la même procédure pour tous les éléments de texte.

Finalement, tous les éléments de texte se retrouvent répertoriés.

Procédure pour visualiser et modifier les éléments de texte


Par ailleurs, 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. Il est aussi possible d’y accéder par le chemin d’accès suivant : Tools > ABAP
Workbench > Development > Programming environ > Text elements . Voici la procédure
à suivre pour visualiser et modifier un élément de texte :

a) Saisir le nom du programme sous Program.

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.

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. Dans les deux cas, la saisie du nom du programme est nécessaire.

/nSE32 :

ABAP Editor :

Par la suite, cliquez sur le menu Goto, puis Transalation :

La fenêtre suivante apparaîtra :

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 .

Tous les éléments de texte du programme en question apparaîtront dans un nouvel


écran comme ceci :

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.

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. Voici de quelle manière se rédige la condition IF :

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.

Par exemple, le programme YX180 permet à un agent de voyage d’être informé


lorsqu’un rabais est disponible pour les groupes de plus de dix personnes.

***** Tables **********

***** Data ************

***** Parameters & Select Options *****


Parameters: nb_pers type i.

***** Initialization *********

***** Start of Selection *****


if nb_pers < 10.
write 'Prix de groupe non disponible'(001).
else.
write 'Prix de groupe disponible'(002).
endif.

La fonction paramètre du programme précédent appelle, dans un premier temps,


l’interface où l’agent de voyage doit indiquer le nombre de personnes. Voici l’interface
en question :

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.

Instructions de conditions IF et variable SY-SUBRC


Il est également possible d’utiliser l’instruction IF en conjonction avec le champ SY-
SUBRC. Ce champ, contenu dans la table SYSTEM (voir tableau 1), concerne la valeur
du dernier test logique effectué par le système. Si le résultat du test est positif, la valeur
de SY-SUBRC est de zéro (0). Lorsque la valeur de SY-SUBRC est différente de zéro
(<> 0), le résultat du test est négatif (i.e. échec du test logique).

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.

***** Data ************

***** Parameters & Select Options *****

***** Initialization *********

***** Start of Selection *****


*requête sur la table scarr
select * from scarr
where carrid = 'AD'.

write:/ scarr-carrname,
scarr-url.
endselect.

*requête n'a pas trouvé de données


if sy-subrc <> 0.
write:/ 'aucun enregistrement trouvé'(001).
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.
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.

Puisque la valeur de SY-SUBRC n’est pas égale à zéro, le IF et la commande SY-


SUBRC affichent donc un message d’échec.

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

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

Signes Caractères Signification

= EQ Égale à

<> , >< NE N’est pas égale à

> GT Plus grand que

< LT Plus petit que

>=, => GE Égale ou plus grand que

<=, =< LE Égale ou plus petit que

BETWEEN var1 Exclusivement entre 2 valeurs


AND var2

NOT Ne … pas

AND ET

OR 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é. Lorsqu’une condition exprimée est satisfaite, la
commande CASE prend fin. Voici de quelle manière se rédige la commande CASE :

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.

***** Tables **********

***** Data ************

***** Parameters & Select Options *****


Parameters: chiffre type i.

***** Initialization *********

***** Start of Selection *****


case chiffre.
when '1'.
write:/ 'couleur #1 rouge'(001).
when '2'.
write:/ 'couleur #2 noire'(002).
when others.
write:/ 'pas de couleur déterminée'(003).
endcase.

Le programme déclenche d’abord l’écran de saisie suivant :

Selon la valeur s aisie, le programme affiche le texte approprié :

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.

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 Prénom No_tel

En-tête à 3 Tremblay Marc 450-555-4567

1 Chevalier Mathieu 514-234-5678

2 Perreault Julie 514-345-6666

Enregistrements à 3 Tremblay Marc 450-555-4567

4 Venne Justine 450-987-6543

Déclaration d’une table interne


La déclaration d’une table interne doit se faire dans la section Data

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 Signification

Itable 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,
n_enregistrement
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


With header line
données de la table interne.

Nom_enregistrement Nom donné à la structure 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.
50
L’extrait du programme YX210 présente la déclaration de la table interne ICIE dont la
structure est copiée sur COMPAGNIE.

***** Tables **********


*déclaration de la structure
DATA: BEGIN OF compagnie,
no_cie(3) type n,
nom_cie(20) type c,
END OF compagnie,

*déclaration de la table interne avec une en-tête


icie LIKE compagnie OCCURS 0 with header line.

Ajout d’enregistrements dans une table interne : Move, 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), puis ajouter aux enregistrement de la table interne
(commande Append). Enfin, l’en-tête de la table interne doit être effacée pour faire
place à une nouvelle manipulation (commande Clear). 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. Voici de quelle manière cette procédure doit être
rédigée :

Move : valeur to itable-champs.


Append itable.
Clear 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.
51
L’exemple suivant poursuit l’exemple initié précédemment (YX210) en ajoutant des
enregistrements à la table interne ICIE.

***** Parameters & Select Options *****

***** Initialization *********

***** Start of Selection *****

*insertion manuelle de données dans la table interne


MOVE: '01' to icie-no_cie,
'Plomberie ABC' to icie-nom_cie.

*enregistrement de la ligne dans l'en-tête de la table


*interne
APPEND icie.

*effacer le contenu de l'en-tête de la table interne


CLEAR icie.

*insertion manuelle de données dans la table interne


MOVE: '02' to icie-no_cie,
'Électriciens ABC' to icie-nom_cie.

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.

DATA : BEGIN OF itable OCCURS 0.


INCLUDE STRUCTURE table
DATA : END OF itable.

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

***** Tables **********


Tables: spfli.

***** Data ************


*déclaration de la table interne utilisant la structure de la table
*spfli
DATA: BEGIN OF itable OCCURS 0.
INCLUDE STRUCTURE spfli.
DATA: END OF itable.

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

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. Il est possible de
préciser les champs dont l’affichage est souhaité. Cette boucle doit être rédigée de la
manière suivante :

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.

*écriture d'un titre


write:/1 'Affichage de la table interne icie'.
skip 1.

*boucle permettant d'afficher les données contenues dans


*la table interne.
Loop at icie.
write:/ icie-no_cie,
icie-nom_cie.
Endloop.

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

Prenons un second exemple. 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.
write:/1 itable-countryfr,
itable-cityfrom,
itable-airpfrom.
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.
55
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. Pour atteindre un enregistrement (une ligne) spécifique d’une table interne à
l’aide de la commande Read, 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. 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.

La lecture d’un enregistrement se rédige donc de la manière suivante. D’abord, la


suppression de l’entête s’effectue selon l’une des deux méthodes suivantes :

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

MOVE SPACE TO itable

Option 2 :

Clear itable.

Ensuite, il existe deux options pour rechercher un enregistrement. La première option


consiste à effectuer la recherche sur la valeur précise d’un champ de la table. Il est à
noter que la commande Read arrête sa lecture au premier enregistrement qui
correspond aux spécifications demandées. L’autre option est de rechercher un
enregistrement avec le numéro de l’index.

Option 1 :

Itable -champ = ‘valeur_recherchée’.

READ TABLE itable

Option 2:

READ TABLE itable INDEX i.

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

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é :

Modification d’une table interne (Commande Modify)


Pour modifier un enregistrement d’une table interne, celui-ci doit être copié dans l’en-
tête avant d’être modifié et ensuite mis à jour dans la table interne. Comme les
enregistrements dans une table interne ne possèdent pas de clé primaire, 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.

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.

L’exemple ci-dessous poursuit le programme des sections précédentes, mais d’autres


enregistrements ont été rajoutés au programme initial. Le programme YX211 affiche
tous les enregistrements de la table interne de même que l’index 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.
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

Le résultat de ce programme s’affiche tel qu’illustré ci- dessous. L’index apparaît à la


gauche de la liste.

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.

En utilisant le numéro de l’index, il est possible d’appeler l’enregistrement souhaité dans


l’en-tête, de modifier l’en-tête et de retourner l’enregistrement dans la table interne. Le
programme suivant recherche et lit le 2e enregistrement (Index 2) de la table interne. S’il
le trouve, il modifie le champ nom_cie avant de retourner l’enregistrem ent dans 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.
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.

*mise à jour du nom de la compagnie d'électriciens par son *index


read table icie index 2.
if sy-subrc = 0.
icie-nom_cie = ‘Électriciens ABC et fils’.
modify icie 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.

*mise à jour du d’un champ X à l’aide d’une *boucle


loop at itable where champ1 = X.
itable-champ2 = ‘ nouvelle valeur’.
modify itable.
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.
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.

Effacer un enregistrement (Commande DELETE)


Pour effacer un enregistrement de la table interne, il faut également passer par l’en-tête
de la table. Il suffit de copier l’enregistrement à effacer dans l’en-tête et ensuite utiliser
la commande Delete pour le supprimer. Ainsi, contrairement à la commande Clear, la
commande Delete efface, en plus de l’enregistrement d’en-tête, l’enregistrement
correspondant dans la table interne.

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;

b) En effectuant une boucle pour rechercher un enregistrement à supprimer en fonction


de la valeur de l’un de ses champs.

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.

*suppression de l'enregistrement possédant le


*numéro de compagnie 004, mais le numéro d’index
*3 (SY -TABIX)
read table icie index 3.
if sy-subrc = 0.
delete icie 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.

L’exemple suivant (YX212) identifie et supprime la compagnie possédant le numéro de


compagnie 4 soit Gazon Plus.

*suppression de l'enregistrement possédant le numéro de *compagnie X


Loop at itable where no_cie = 'X'.
Delete itable index sy-tabix.
Endloop.

*suppression de l'enregistrement possédant le numéro de *compagnie 04


Loop at icie where no_cie = '04'.
Delete icie index sy-tabix.
Endloop.

Dénombrement des enregistrements de la table interne (Commande DESCRIBE)


Il est possible de compter le nombre d’enregistrements d’une table interne. Pour se
faire, il faut utiliser la commande Describe. 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.

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 :

Select [single] [distinct] champs


From table
Where champs [Not] [Like valeur] [In Select - Option]
[between val1 And val2]
Group by champs
Having conditions
Order by champs.
Endselect.

Tableau 10 - Option de la commande SELECT

L’utilisation du Single dans l’instruction Select offre la possibilité de choisir


SINGLE
un seul enregistrement.

Le Distinct supprime le dédoublement d’enregistrements qui pourraient être


DISTINCT
occasionné par la requête.

WHERE La commande Where permet de circonsc rire le résultat de la requê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.
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 :

where carrid like ‘a%’.

Par ailleurs, il est possible de faire afficher automatiquement le nombre


d’enregistrements contenus dans le résultat d’une requête. Pour se faire, il suffit
d’afficher le champ DBCNT de la table System (SY). Voici comment rédiger cette
commande :

write : /‘enregistrements trouvés :’(001), sy-dbcnt.

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.

***** Tables **********


tables: spfli.

***** Data ************

***** Parameters & Select Options *****

***** Initialization *********

***** Start of Selection *****

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.

*affiche le nombre d'enregistrements trouvés


write:/ 'nombre d''enregistrements trouvés:', sy-dbcnt.

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.

***** Data ************

*declaration d’une table interne correspondant à la


*structure de la table spfli
data itable like spfli occurs 0 with header line.

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

*affichage des données continues dans les champs


spécifiés
loop at itable.
write:/ itable-carrid,
itable-countryfr,
itable-cityfrom,
itable-airpfrom,
itable-countryto,
itable-cityto.
endloop.

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.

Tableau 11 - Liste de fonctions d'agrégation

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.

Select * from table 1.


Select * from table2
Where champ1 = table1-champ1.
Endselect.
Endselect.

Illustrons par un exemple la concaténation d’une requête. Supposons que nous


souhaitons obtenir de l’information sur des connexions de vols. 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). Les deux tables ont
une clé commune : CARRID (le numéro du transporteur aérien). La requête vise à isoler
les vols dont le ID de connexion (CONNID) est 17. Voici comment devrait se rédiger
cette requête (YX230):

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

***** Parameters & Select Options *****

***** Initialization *********

***** Start of Selection *****

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

*afficher les résultats


write:/1 spfli-connid,
15 sflight-planetype,
30 sflight-fldate.

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.

La commande At-line selection


La commande At-line selection permet à l’utilisateur de sélectionner une ligne, dans un
rapport, afin d’accéder à des informations supplémentaires contenues dans une liste.
Pour exécuter la commande, il doit double-cliquez sur la ligne désirée ou sélectionner la
ligne en question et presser la touche F2. La commande At-line selection se rédige de
la manière suivante :

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.

Tableau 12 – Champs de la table SY

SY-LSIND : Niveau de la liste (liste de base = 0)

SY-CUROW : Ligne sélectionnée

SY-CUCOL : Colonne sélectionnée

SY-LISEL : Contenu de la ligne sélectionnée

Le programme YX270 est un exemple d’utilisation des notions mentionnées ci-haut.

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.

L’utilisateur sélectionne une ligne en double-cliquant sur cette dernière (At-line


selection). Le programme affic he le niveau de la liste (sy-lsind), le numéro de la ligne
(sy-curow) et le contenu de la ligne (sy-lisel). Dans l’exemple suivant, l’utilisateur a
double-cliqué sur line 5.

À noter : le champ SY-LSIND utilisé conjointement avec la commande At line-selection


et la condition de contrôle If, contrôle le nombre de niveaux de la liste.

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.

La programmation d’un tel programme ressemble à ceci :

***** Tables **********


*tables utilisées
tables: scarr,
scarplan.

***** Data ************


*déclaration de la table interne
data: begin of iplane occurs 0.
include structure scarr.
data: end of iplane.

***** Parameters & Select Options *****

***** Initialization *********

***** Start of Selection *****

****** Selection *******


*titre
write:/1 'Nom de la compagnie d''aviation'(001).
uline.
skip 1.

select * from scarr into corresponding fields of table iplane.


loop at iplane.
write:/1 iplane -carrname.
*conserver en mémoire les numéros identifiant chacune des cie d'aviation
hide iplane-carrid.
endloop.

*commade pour permettre le forage


at line-selection.
read table iplane with key carrid = iplane-carrid.

*if sy -lsind < 2.


write:/1 iplane-url.
*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.
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.

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. La commande SY-LSIND gère
les différents niveaux. Il est possible de lui assigner une valeur. Utilisé seule, elle affiche
le niveau de forage où l’utilisateur se trouve.

Le programme YX272 est un programme présentant les informations de la table clients


sur différents niveaux. Le niveau de base affiche le nom du client, le premier niveau le
nom et le numéro du client, le deuxième niveau la ville et le pays du client et le
troisième niveau son adresse complè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.
76
À l’écran, le niveau de base s’affiche ainsi :

En double-cliquant sur l’une des lignes de la liste, 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, 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 :

***** Tables **********


*table utilisée
TABLES: kna1.

***** Data ************


*déclaration de la table interne
data: begin of iclient occurs 0.
include s tructure kna1.
data: end of iclient.

***** Parameters & Select Options *****

***** Initialization *********

***** Start of Selection *****

****** Selection *******

write:/1 'Nom du client'.


uline.
skip 1.

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.

****** Event Processing *************


AT LINE-SELECTION.
case sy-lsind.
read table iclient with key kunnr = iclient-kunnr.

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 :

Window starting at [v w] ending at[x y ].

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. 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. Le x et le y représente
respectivement la largeur et la longueur de la nouvelle fenêtre.

Le programme YX273 est un exemple d’utilisation de cette commande.

write: / 'Cliquez sur cette phrase'.

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.

Fonctions et commandes pour la création de graphiques


Dans SAP R/3, l’appel d’une fonction se fait de la manière suivant e :

CALL FUNCTION ‘nom de la fonction’


EXPORTING
TITL = ‘titre du graphique’
VALT = ‘Nom de l’’axe des Y’
TABLES
DATA = italbe.

La commande CALL FUNCTION appelle la fonction graphique désirée. La commande


TITL permet de saisir le titre du graphique et la commande VALT le nom de l’axe des Y.
La commande EXPORTING quant à elle, fait apparaître les valeurs de TITL et VALT
dans le graphique. La section TABLES indique les tables que le graphique devra
utiliser.

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.

Une fois la fenêtre du graphique fermée, le programme YX280 affiche un tableau


résumant les valeurs contenues dans 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 ************

*déclaration d'une table interne


DATA: BEGIN OF itable OCCURS 0,
TEXT(25),
VALUE TYPE P,
END OF itable.

*déclaration d'une variable : titre du graphique


data: TITLE(25) VALUE 'Sales'.

*déclaration d'une variable : titre de l'axe des Y du graphique


data: TCOL1(5) VALUE '#1991'.
*SET PF-STATUS 'GRAF'.

***** 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,
'153470' to itable-VALUE.
APPEND itable.

*données de la deuxième colonne


itable-TEXT = 'Product_2'.
itable-VALUE = 253150.
APPEND itable.

*données de la troisième colonne


itable-TEXT = 'Product_3'.
itable-VALUE = 53470.
APPEND itable.

*données de la quatrième colonne


itable-TEXT = 'Product_4'.
itable-VALUE = 182000.
APPEND itable.

*données de la cinquième colonne


itable-TEXT = 'Product_5'.
itable-VALUE = 92410.
APPEND itable.

***affichage des données dans un tableau


WRITE: / 'Products',22 TCOL1.
SKIP 2.
LOOP AT itable.
WRITE: / itable-TEXT, 12 itable-VALUE.
ENDLOOP.

***appele de la fonction graphique en 2 dimensions


CALL FUNCTION 'GRAPH_2D'
EXPORTING
TITL = TITLE
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.
82
VALT = TCOL1

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

YX00ex_gabarit Gabarit de la structure d'un programme


YX00ex_programme Exemple d’un programme
YX101 Exemple d’un programme complet en ABAP (structure)
YX102 Exemple de la commande Report
YX00ex_gabarit Démo en-tête
YX110 Exemple parameters
YX120 Exemple select options
YX130 Exemple parameters et select options
YX140 Exemple #1 avec la commande Write
YX141 Exemple #2 avec la commande Write
YX150 Exemple de mise en forme
YX171 Exemple avec opérandes
YX160 Exemple text-elements
YX180 Exemple avec IF
YX181 Exemple avec IF et SY-SUBRC
YX190 Exemple avec case
YX200 Exemple avec une boucle
YX210 Exemple déclaration table interne
YX210 Exemple commandes Move, Append et Clear
YX240 Exemple déclaration table interne (tables disponibles dans SAP)
YX210 et YX240 Exemple afficher le contenu d’une table interne
YX241 Exemple table interne commande Read
YX211 Exemple table interne Modify
YX212 Exemple table interne avec Delete
YX222 Exemple Select
YX224 Exemple Select avec table interne
YX230 Exemple requête concaténée
YX270 Exemple rapport interactif et table SY
YX271 Exemple rapport interactif et commande Hide
YX272 Exemple rapport interactif et forage sur plusieurs niveaux
YX273 Exemple rapport interactif et commande Window
YX280 Exemple graphique à 2 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.
84