52791286 SAP Abap en Francais

download 52791286 SAP Abap en Francais

of 84

Transcript of 52791286 SAP Abap en Francais

Chapitre 7 lments 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 LGER et Suzanne RIVARD, HEC Montral, Tous droits rserv pour tous pays. Toute traduction ou toute modification sous quelque forme que ce s soit est interdite. VERSION PRLIMINAIRE

INTRODUCTION ENVIRONNEMENT DE DVELOPPEMENT ABAP Editor ABAP Dictionary Dictionary Data Browser INTRODUCTION LA PR OGRAMMATION EN ABAP Cration dun programme ABAP La structure dun programme ABAP Fonctions usuelles de ABAP Editor Enregistrer et activer un programme STRUCTURE DUN PROGRAMME ABAP Exemple dun programme ABAP Commande REPORT En-tte Section : Tables Section : Data Section : Parameters & Select options Section : Initialization Section : Start-of-Selection COMMANDE WRITE, MISE EN FORME, OPRANDES ET LMENTS DE TEXTE Commande WRITE Mise en forme Oprandes Chanes de caractres Text-elements STRUCTURES DE CONTRLE Les instructions de conditions Les boucles

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

TABLES INTERNES 48 Caractristiques dune table interne 48 Structure dune table interne 49 Dclaration dune table interne 49 Ajout denregistrements dans une table interne : Move, Append et Clear 51 Table interne et extraction de la base de donnes de SAP R/3 53 Afficher le contenu dune table interne 54 Lecture dun enregistrement la fois (Commande Read) 56 Modification dune table interne (Commande Modify) 59 Effacer un enregistrement (Commande DELETE) 62 Dnombrement des enregistrements de la table interne (Commande DESCRIBE) 64

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

2

REQUTES SUR LA BASE DE DONNES La commande Select Fonctions dagrgation Concatner une requte RAPPORTS INTERACTIFS La commande At-line selection Champs de la table SY La commande Hide Le forage sur plusieurs niveaux La commande Window starting at [] ending at [] CRATION DE GRAPHIQUES Fonctions et commandes pour la cration de graphiques Graphique deux dimensions

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

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

3

INTRODUCTION Ce chapitre constitue une introduction au langage de programmation Advanced Business Application Program (ABAP). Il sagit dun langage de programmation propritaire utilis par la compagnie allemande SAP pour le dveloppement 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 lutilisation de ce langage de programmation. Pour les firmes ayant implant R/3 de mme 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 dvelopper des interfaces et des rapports rpondant plus adquatement aux besoins spcifiques des utilisateurs de R/3.

Ce chapitre vise initier le lecteur la programmation ABAP. Au cours des diffrentes sections, nous prsentons certains lments de base ncessaires au dveloppement dinterfaces et de rapports simples en ABAP. Ce chapitre ne remplace pas dautres documents de rfrence plus complets . ce sujet, nous rfrons le lecteur aux manuels suivants :

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

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

Par ailleurs, le prsent chapitre assume que le lecteur possde une connaissance de base en algorithmique de mme quen matire de bases de donnes. La connaissance de certains langages de programmation procduraux tels que Visual Basic ainsi que du langage de requte SQL devrait galement faciliter la lecture de ce chapitre.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

4

ENVIRONNEMENT DE DVELOPPEMENT Lenvironnement de dveloppement se retrouve principalement dans lABAP

Workbench. Ce dernier contient lensemble des outils requis pour dvelopper et maintenir les applications dveloppes en langage de programmation AB AP. Dans le cadre de cette section, nous aborderons successivement les outils suivants : lABAP Editor, lABAP Dictionary et le Dictionary Data Browser. Il est noter que le chemin daccs lenvironnement de dveloppement de SAP R/3 est le suivant : Tools > ABAP Workbench. La plupart des outils u tiliss dans cette section, portant sur le dveloppement, se retrouvera principalement dans le dossier Overview et Development .

ABAP Editor LABAP Editor est le principal outil permettant de crer, modifier et supprimer un programme ABAP. Il gre la cration et le maintien des programmes ABAP, des modules de fonctions, de la suite logique des crans et de la logique de la base de donnes. Cest laide de cet outil quil vous sera possible de programmer en ABAP. Pour y accder, cliquez sur le module Tools > ABAP Workbench > Development > ABAP Editor ou saisir le numro de transaction suivant : /nSE38. La prochaine section est consacr lABAP Editor et explique en dtails la cration et la modification de programme ABAP.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

5

ABAP Dictionary Au mme titre que lABAP Editor, lABAP Dictionary se retrouve aussi sous longlet Development du ABAP Workbench. LABAP Dictionary permet daccder aux structures de donnes des diffrentes tables contenues dans SAP R/3. Pour visualiser la structure dune table, il suffit de se rendre dans lABAP 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 donnes de cette table. La structure de la table SFLIGHT dvoile plusieurs attributs comme le nom de ses champs, le type de donnes, leur longueur, leur description, etc. Avec ces attributs, il est possible deffectuer des requtes permettant, par exemple, de connatre le nombre doccupants sur un vol donn.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

6

Prenons un autre exemple : la table SY. Il sagit dune table trs utile dans le cadre du dveloppement dun programme ABAP. Cette table contient diffrentes informations de session tels que la date du systme, le nom du lutilisateur, la langue dutilisation, etc.

Le tableau 1 prsente certains des champs de cette table.

Tableau 1 - Le systme Table-ChampsSY-DATUM SY-TCODE SY-MANDT SY-LANGU SY-UNAME SY-UZEIT SY-REPID SY-SUBRC

DescriptionDate du systme Numro de la transaction en cours (ex : SE38) Numro du client utilis (ex : 401) Langage de la session (ex : EN) Nom dusager Heure du serveur Nom du programme en cours Valeur du test logique

Dictionary Data Browser Le Data Browser permet de visualiser les enregistrements des tables de donnes de R/3. Pour se rendre au Dictionary Data Browser: Tools > ABAP Workbench > Overview > Data Browser (/nSE16). Il suffit alors dinscrire le nom de la table dans le champ appropri. Dans notre cas, inscrire SFLIGHT puis cliquez sur Enter .

Lcran qui apparat 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 LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

7

Pour raffiner une recherche, cliquer dans lun des champs dexpansion prendre.

, puis sur son bouton

. Une nouvelle fentre affichera toutes les valeurs que le champ peut

Slectionner la valeur dsire pour dsigner la limite (en linstance de AC BA) infrieure et suprieure de la recherche puis cliquez sur E xcuter .

Seuls les noms des compagnies ariennes, dont lacronyme (CARRID) se situe dans lintervalle alphabtique saisie par lutilisateur (en linstance de AC BA), seront affichs lcran. Voici un chantillon des rsultats :

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

8

Pour afficher tous les enregistrements de la table SFLIGHT, ne rien inscrire dans les champs dintervalles et simplement cliquez sur Excuter . La rsultante de cette

action permet dafficher tous les enregistrements de la table SFLIGHT.

INTRODUCTION LA PROGRAMMATION EN ABAP Cette section vise introduire le lecteur la programmation en ABAP. Nous expliquons dabord comment crer un programme en ABAP dans lABAP Editor. Un programme ABAP simple est ensuite illustr afin de mettre en vidence les diffrentes parties qui le composent. Aprs avoir prsent certaines spcificits de la programmation en ABAP de mme que les fonctions usuelles de lABAP Editor, nous terminons cette section sur lenregistrement des programmes ABAP de mme que sur leur activation. Cration dun programme ABAP La cration dun programme ABAP se fait partir de la transaction ABAP Editor (SE38). La figure ci-dessous prsente lcran initial de l ABAP Editor.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

9

Notons avant de poursuivre que, par convention, les programmes ABAP crs dans le cadre des formations SAP HEC Montral doivent tre nomms sous la forme suivante : Y?##EX_&&. Le caractre point dinterrogation correspond la session en cours et sincrmente dune anne scolaire une autre. Votre professeur vous indiquera la lettre qui est associe votre cours pour votre session. Les caractres ## correspondent aux derniers numros de votre code dus ager et && au numro de lexercice. Par ailleurs, R/3 requiert que la premire lettre dun programme dsigne sa provenance ou son utilit. Dans notre cas, le Y signifie un programme temporaire qui ne fera pas partie du systme de production.

Comme il est souvent plus ais de copier un gabarit de programme ABAP plutt que de partir dune feuille blanche, les oprations suivantes expliquent comment dupliquer le gabarit YX00EX_gabarit afin de lutiliser dans un nouveau programme. Procdure pour copier le gabarit YX00EX_gabarit a) Une fois lABAP Editor ouvert, saisir le nom du programme recherch dans le champ Program. Dans notre cas, saisir YX00ex_gabarit.

b) Cliquez sur licne Copy .

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

10

c) Sous Target Program, inscrire le nom de votre programme tout en vous conformant au format dcrit dans la section prcdente.

y = programme temporaire. ? = lettre indique par le professeur (par exemple a ). ## = les 2 derniers chiffres de votre code usager (par exemple si le code dusager est zhec3715_25 , le ## serait remplac par 25). && = numro de lexercice ou nom de lexercice. Ainsi, dans cet exemple, le rsultat final serait YA25ex_30.

d) Pour confirmer lopration, cliquez sur le bouton

. Cette fentre apparatra :

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

11

e) Sassurer que les deux premires options (source et text elements) soient coches, puis appuyer sur Copy .

f) Dans la fentre suivante, inscrire dans le champ Development class : $TMP

Le champ Person responsible devrait reprsenter votre nom dutilisateur lors de louverture dune session dans SAP R/3.

g) Enregistrer

les

modifications

apportes

en

cliquant

sur

le

bouton

denregistrement

.Le message suivant devrait apparatre au bas de lcran :

h) Par dfaut, lopt ion code source (Source Code) est slectionne. Cette dernire permet daccder directement au code du programme.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

12

i) Pour faire afficher le programme nouvellement copi, cliquez sur le bouton Display et pour le modifier, utiliser le bouton Change .

La structure dun programme ABAP Un programme ABAP est un ensemble dinstructions compos de variables et de procdures acceptes par R/3. Chaque programme cod en ABAP doit contenir trois parties; la premire dcrivant le programme en question, la seconde servant dclarer les variables ainsi que les paramtres et la dernire contenant lcriture de la procdure. Voici un exemple dun 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: * * Faire afficher une phrase l'cran * * * * Inputs: Outputs: l'cran * * * * * * Historique des modifications: * * Date: Programmeur: Description: * * * ************************************************************** ***** Tables ********** ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *Faire afficher l'cran : Programmer en langage ABAP write:/ 'Programmer en langage ABAP'.

En-tte

Dclaration des variables Procdures

Lorsque le programme ci-haut sera excut, la phrase suivante apparatra lcran :

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

13

Spcifications lors de la programmation en ABAP Lors de la programmation en ABAP, certaines rgles doivent tre suivies afin de sassurer du bon fonctionnement du programme en question ou de clarifier la structure de celui-ci :

Chaque instruction se termine par un point. LoCha91 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 LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

14

Tableau 2 - Description des principales fonctions de la barre d'outil de l'ABAP Editor Icne FonctionPrevious Next Display/Change

DescriptionRevenir la page prcdente Aller la page suivante Passer du mode Afficher (Display) au mode Modifier (Change) Le programme est disponible pour lensemble de R/3 lorsquil est actif ou se limite lABAP Workbench lorsquil est inactif Permet deffectuer diffrentes recherches sans sortir du programme. Par exemple : ouvrir un nouveau programme, visualiser les champs dune table spcifique (/nSE11), etc. Effectue une validation de la syntaxe du programme Rend le programme disponible pour lensemble de R/3 Excute le programme (et le compile si ce nest pas dj fait) Permet de faire afficher la liste des programmes, crans, tables de donnes, vues utilisant ce mme objet. Pour ce faire, double-cliquez sur lobjet en question, ou placer le curseur de la souris sur celui-ci, et slectionner le bouton Where used-list. Affiche la liste des objets utiliss dans le programme Affiche la fentre de navigation Documentation disponible directement dans SAP R/3 couvrant plusieurs sujets sous le thme de la programmation en ABAP Installation et suppression de drapeaux. Permet de signaler au dbogueur de SAP R/3 que le programme doit sarrter l o lon retrouve cet arrt. Permet de formater le document pour limpression. Option rarement utilise.

Active/Inactive

Other object

Check Activate

Test

Where used-list

Display object list Display navigation window

Help on

Set/delete breakpoint

Pretty Printer

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

15

Enregistrer et activer un programme Aprs toutes modifications au code dun programme ABAP, il importe denregistrer ce dernier en cliquant sur licne 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 DUN PROGRAMME ABAP Cette section prsente en dtail la structure dun programme ABAP. Pour faciliter la comprhens ion du lecteur, nous dbutons par un exemple complet de programme. Cet exemple vise illustrer la structure typique dun programme ABAP. Le reste de la section sattarde individuellement sur chacune des diffrentes parties dun programme ABAP.

Exemple dun programme ABAP Les diffrentes parties que lon retrouve gnralement dans un programme ABAP sont les suivantes : a) la commande Report; b) len-tte; 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 LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

16

Voici un exemple de programme ABAP dlimit 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 dun programme abap * * * * Inputs: ? Parameters Outputs: * * Tables utilises: * * * * Historique des modifications: * * Date: Programmeur: Description: * * * ************************************************************** ***** Tables ********** *utilisation de la table scarr tables: scarr. ***** Data ************ *dclaration d'une table interne data: begin of itable occurs 0. include structure scarr. data: end of itable. ***** Parameters & Select Options ***** *dclaration d'un paramtre parameters: air_id like scarr-carrid. ***** Initialization ********* ***** Start of Selection ***** *requte select * from scarr into table itable where carrid = air_id. *si on trouve des donnes pour la requte ... if sy-subrc = 0. *crire comme en-tte write: /01 'ID'(001), 10 'Nom'(002), 30 'Monnaie'(003). *boucle affichant les donnes trouves loop at itable. write:/ itable-carrid under text-001, itable-carrname under text-002, itable-currcode under text-003. endloop. else. write 'Aucune donne trouve'(004). endif.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

17

Voici lcran de saisie appel dans ce programme. Il sagit de linterface perm ettant lutilisateur de saisir une valeur qui sera utilise lors de lexcution du programme.

Compte tenu de la valeur saisie dans lcran prcdent, le programme affiche lcran le rsultat suivant :

Commande REPORT

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

18

Tableau 3 - Options de la commande REPORT OptionsNO STANDARD PAGE HEADING MESSAGE-ID

DescriptionAffiche un en-tte par dfaut Permet laffichage de messages laide dun numro identifiant ce dernier Nombre de colonnes contenues dans une page Nombre de lignes par page

LINE-SIZE LINE -COUNT

Voici la commande REPORT apparaissant au haut du programme YX102 :

REPORT YX102 NO STANDARD PAGE HEADING MESSAGE-ID ZU LINE-SIZE 100 LINE-COUNT 20.

En-tte La premire partie dun programme est gnralement consacre des informations concernant le ou les programmeurs, le programme de mme que toute autre information qui pourrait faciliter la comprhension du code un tiers. Dans le cadre des cours de formations SAP HEC Montral, len-tte utilis est celui du gabarit YX00ex_gabarit. La figure ci-dessous prsente cet en-tte.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

19

Figure 1 En-tte 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 utiliss pour dlimiter les autres sections dun programme afin den faciliter la lecture. videmment, puisque ce sont des commentaires, ils naffectent en rien le droulement du programme.

Figure 2 - Marqueurs de dlimitation 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 LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

20

Section : Tables Les tables de la base de donnes de SAP R/3

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

21

Tableau 4 - Dclaration dans la section DATAFonctions Description Chacune des variables que lon retrouve dans un programme doit tre dclare dans la section Data. Le langage ABAP impose que le nom des variables :

NAME

Soit dun maximum 30 caractres Dbute par une lettre Nutilise pas le tiret (-) mme sil est permis; cela porte confusion avec les champs des tables Nutilise pas de mots rservs (commandes ABAP)

LENGTH

La longueur du champ ( length) doit tre spcifie droite de son nom. Le type dune nouvelle variable doit tre dclar. Les diffrents types de donnes, habituellement utiliss dans la dclaration des variables, sont prsents dans le tableau cidessous : DESCRIPTION C Caractre Date, format YYYYMMDD Point flottant Nombre entier Texte numrique Heure, format HHMMSS Dcimal condens (arrondi) EXEMPLE Bonjour 19690623 7.5 789 10000 123456 36.50

TYPE

D F I N T P

VALUE

Ce champ permet de spcifier une valeur par dfaut la variable. Lorsquune variable est de type dcimal (P), on doit spcifie le nombre de chiffres aprs la virgule.

DECIMALS

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

22

titre dexemple, le programme suivant cre la variable montant_total. Dune longueur de 6 caractres, cette variable est de type dcimal arrondi (p) et doit afficher 2 chiffres aprs la virgule. Cette variable doit donc tre dclare de la faon suivante :

*****Data***** DATA : montant_total(6) TYPE p DECIMALS 2.

Notons quil est souvent plus facile de faire rfrence une variable existante dans R/3 plutt que den dclarer une compltement nouvelle. Pour ce faire, vous devez utiliser lexpression Like. Dans un tel cas, il nest pas ncessaire de dclarer le type de donne de la nouvelle variable, puisquelle viendra calquer le type du champ auquel elle fait rfrence. Il nest pas non plus ncessaire de dclarer les tables de rfrences dans la section tables.DATA : LIKE table-champs.

Lexemple suivant dclare trois variables calques sur des champs de la table SCARR de la base de donnes 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 LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

23

titre dinformation, la figure suivante prsente un extrait de la table SCARR avec les variables de rfrences utilises dans lexemple.

Section : Parameters & Select options Parameters La section Parameters permet de dclarer des variables dont la valeur sera saisie ultrieurement dans un formulaire par lutilisateur du systme. Le nom dun paramtre ne doit pas dpasser 8 caractres. Par exemple, le programme YX110 cre une interface permettant de faire certaines oprations arithmtiques de base :

*****Parameters***** PARAMETERS: nb_1 TYPE i,

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

lcran, le formulaire de saisie des paramtres saffichera de la manire suivante :

Soulignons que loption Obligatory oblige lutilisateur saisir une valeur dans le champ de la variable obligatoire spcifie. Si ce champ nest pas complt, le programme ne pourra pas sexcuter.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

24

Select-Options Le Select-Options est similaire au Parameters. Il permet lutilisateur de saisir un intervalle de valeur. Cependant, le Select-options ne peut tre utilis que pour faire des requtes sur les tables de SAP R/3. Dailleurs, les tables utilises lors de requtes doivent tre dclares dans la section Tables. Enfin, soulignons que le nom donn un Select-Options ne doit pas dpasser 8 caractres. Le Select-Options du programme YX120, permettra de saisir un intervalle de date pour faire afficher tous les vols effectus durant la priode spcifie. La liste des vols (champ FLDATE ) est contenue dans la table SFLIGHT :

***** Tables ********** TABLES: sflight. ***** Data ************

Parameters & Select-Options Il est possible de jumeler la dclaration du Select-Options avec celle du Parameters. Un formulaire de requte ainsi cr permet de chercher sur plusieurs champs, avec dune part des critres et dautre part des intervalles. Voici un exemple de programmation dun formulaire permettant de rechercher lensemble des vols dune compagnie (Cie) durant une certaine priode de temps (dure).

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

25

Sele* 5.25 0

TD 0

T5

T214 0.1654

Tw (. La DataPt ra ee) & ct

lcran, le formulaire de saisie du programme YX130 saffichera de la manire suivante :

Le programme en langage ABAP permettant de faire afficher linterface 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 Lvnement dinitialisation est dclench avant laffichage du premier cran. Il est recommand dutiliser cet vnement pour saisir des valeurs par dfaut complexes. Dans le cadre des formations SAP HEC Montral, 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 cest dans cette partie que lon retrouve les instructions excuter. Les prochaines sections de ce chapitre sont consacres lexplication des fonctions de programmation utilises dans le Start-of-Selection.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

26

COMMANDE WRITE, MISE EN FORME, OPRANDES ET LMENTS DE TEXTE Cette section est consacre diffrentes fonctions relies la prsentation et la mise en forme des formulaires. Nous abordons successivement la commande dcriture (WRITE), les fonctions de mise en forme et la dclaration des lments de texte. Commande WRITE La commande Write permet dafficher lcran les rsultats de lexcution dun programme. Dans sa forme la plus simple, la commande Write se rdige de la manire suivante :

WRITE : 'Bonjour'.

La commande est suivi du symbole : et le texte afficher doit tre prcd et suivi du guillemet simple ' . Par ailleurs, pour ne pas entrer en confusion avec la fin relle de la chane de caractres, il importe de savoir que les chanes de caractres comportant une apostrophe doivent saisir cette dernire deux fois. Par exemple :

WRITE : 'Bienvenue laroport Pierre-liot-Trudeau'.

Certaines options peuvent tre ajoutes la fonction Write afin didentifier le positionnement, dans lcran, du texte afficher. Voici comment se rdigent ces options de positionnement :WRITE :

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

27

Tableau 5- Options de positionnement de la commande Write Option / Colonne Description Saute la prochaine ligne Identifie lemplacement de laffichage

Longueur Nombre de caractres crire Les deux programmes suivant prsentent diffrentes utilisations des options de positionnement de la commande Write. Le premier programme (YX140) uniquement loption de saut de ligne et loption demplacement (colonne). utilise

***** Start of Selection ***** *affichage des phrases WRITE : /10 /15 /20 /15 'SAP', 'ABAP', 'Technologie de l information', 'Aspects technologiques'.

lcran, le programme prcdent saffiche tel quillustr ci-dessous. Il est remarquer que la fonction saut de ligne permet dafficher ces expressions sur des lignes distinctes et que loption demplacement correspond au nombre de caractres qui spare lexpression de la gauche de lcran.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

28

Le second programme (YX141) utilise les trois options daffichage.***** Start of Selection ***** *affichage des rsultats WRITE : /5(3) 'SAP', /5(2) 'ABAP', /15 'Technologie de l information', 'et', 'Aspects Technologiques'.

Laffichage de ce programme est illustr ci-aprs. Il est important de noter que loption longueur limite le nombre de caractres affichs. Ainsi, au lieu dcrire ABAP en entier, le programme affiche, tel que spcifi par le (2), seulement les 2 premiers caractres de lexpression.

Mise en forme LABAP Editor comporte diffrentes r t f fsi t ior rT3. T3-T020T)el , r iacertaine (misef L fonctionsepermettant une f eP.ac f f L l g i f a o n mp 63c 6 D 5.7j dgw0 2 2 ao ne m u 3 8 0 e non r r u e a h c

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

29

Le programme suivant (YX150) utilise ces diffrentes fonctions de mise en forme. Nous avons comment le programme afin dexpliquer leffet de chacune de ces fonctions sur laffic hage lcran.

***** Start of Selection ***** *trace une ligne horizontale dbutant 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. *dbute l'criture de la phrase la colonne numro 25 WRITE: /25 'Cette phrase commence la position 25'.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

30

La figure ci-dessous illustre quoi ressemblerait laffichage de ce programme.

Notons enfin que pour raliser laffichage dun tableau, lutilisation dune boucle est souvent ncessaire afin de rpter le nombre de lignes horizontales (ULINE) et verticales (SY-VLINE) requis. Cette fonctionnalit est prsente un peu plus tard dans ce chapitre avec les autres structures de contrle.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

31

Oprandes Plusieurs programmes ncessitent lutilisation doprandes afin dexcuter des calculs de diffrentes natures. Voici donc un tableau indiquant les oprateurs arithmtiques les plus utiliss.

Tableau 7 - Oprateurs arithmtiques les plus utiliss Nom Addition Soustraction Division Multiplication Exposant Modulo Division entire Commandes + / * ** MOD DIV

Fonctions arithmtiques Racine carre Logarithme SQRT( ) LOG( )

Il est noter que, lors de lutilisation des fonctions arithmtiques, les valeurs entre

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

32

Le programme suivant (YX171) excute des calculs sur des variables dclares 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 dafficher les rsultats * lcran et la barre *oblique produit un saut de ligne.

WRITE : / / /

R1, R2, R3,R4.

Lexcution de ce programme permet dafficher lcran le rsultat suivant :

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

33

Chanes de caractres Text-elements SAP R/3 offre la possibilit de modifier la langue utilise par lapplication (fonctionnalit multilingue). Pour ce faire, chaque terme (lment de texte) utilis dans SAP doit tre rpertori et numrot afin dy associer la traduction approprie. La majorit des interfaces et rapports disponibles dans R/3 ont t pralablement traduits et sont accessibles dans les principales langues disponibles dans SAP R/3. videmment, R/3 ne traduit pas lui-mme les lments de texte. Chaque traduction doit tre saisie une une et cest donc pourquoi il peut arriver, loccasion, de tomber dans R/3 sur des expressions en allemand au sein de certains rapports ou interfaces rarement utilises !

Lors du dveloppement dun rapport ou dune interface en ABAP, il importe de dclarer toutes les chanes de caractres utilises dans le programme afin de faciliter sa traduction subsquente. Concrtement, il suffit dinscrire un numro, entre parenthse, la suite de chaque lment de texte du programme et de suivre la procdure cidessous pour les rpertorier.

Prenons lexemple dune entreprise possdant une filiale francophone et une filiale anglophone. Lentreprise souhaite dvelopper un rapport de vente journalier personnalis pouvant safficher dans les deux langues. En anglais, le rapport doit afficher les informations suivantes : No_order , No_customer, O et r No_salesrep. En franais, ces termes se traduisent de la manire suivante : le No_com, le No_client, la Valeur_com et le No_vendeur. Le programme YX160 est rdig en anglais et len-tte du rapport est compos des lments de texte suivants : W 'No_Order'(201), R

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 LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

34

Procdure pour rpertorier les lments de texte La numrotation de ces lments de texte et le fait de les rpertorier dans un index permettront de traduire automatiquement len-tte du rapport (en assumant que la traduction des termes a t saisie pralablement). Les cinq tapes suivantes expliquent comment rpertorier les lments de texte de lexemple prcdent.

a) Double-cliquez sur le premier lment de texte, soit No_order, ou sur le numro suivant ce dernier (201). Une fentre comme celle-ci apparatra :

Cliquez sur Yes. b) Un cran rpertoriant lensemble des lments de texte du programme suivra.

Jusqu maintenant, nous avons rpertori que le premier lment de texte du programme.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

35

c) Pour activer llment slectionn, cliquez sur le bouton Activate . Slectionner le nom du programme puis cliquez sur le bouton Continue .

d) Enregistrer les ajouts en cliquant sur licne Save . Au bas de lcran, le message suivant apparatra :

e) Suivre la mme procdure pour tous les lments de texte. Finalement, tous les lments de texte se retrouvent rpertoris.

Procdure pour visualiser et modifier les lments de texte Par ailleurs, la transaction /nSE32 permet de visualiser et de modifier tous les lments de texte activs et enregistrs pour un programme spcifique sans passer par lABAP Editor. Il est aussi possible dy accder par le chemin daccs suivant : Tools > ABAP Workbench > Development > Programming environ > Text elements . Voici la procdure suivre pour visualiser et modifier un lment de texte :

a) Saisir le nom du programme sous Program.

Copyright 2004, SAP R/3 : ComIrendre, configurer et implanter , Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

36

b) Cliquez sur le bouton Display ou Change dpendamment de laction dsire.

Procdure permettant la traduction dun lment de texte Il est possible de traduire les lments de texte partir de la transaction /nSE32 ou de lABAP Editor. Dans les deux cas, la saisie du nom du programme est ncessaire.

/nSE32 :

ABAP Editor :

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

La fentre suivante apparatra :

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

37

La langue originale (Original language) est celle de la session de lutilisation. Dans notre cas, langlais est la langue originale. La langue de traduction, soit Target language, est la langue dans laquelle les lments de texte seront traduits. Dans la prsente situation, le franais sera cette langue. Donc remplacer la Target language par FR, soit le diminutif de franais, puis cliquez sur excuter .

Tous les lments de texte du programme en question apparatront dans un nouvel cran comme ceci :

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

38

Pour traduire ces derniers, il suffit dinscrire en-dessous de chacun des lments de texte leur traduction.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

39

Ne pas oublier de sauvegarder les modifications avec le bouton

. Lcran suivant

apparatra en rcapitulant tous les lments de texte traduits pour le programme YX160.

STRUCTURES DE CONTRLE La programmation en ABAP offre diffrentes instructions de contrle semblables au langage Visual Basic . En effet, il est ainsi possible dutiliser tant des instructions de conditions que des boucles. Cette section prsente ces deux approches. Les instructions de conditions Instructions de conditions IF Une instruction de condition IF excute une procdure lorsque la condition exprime est satisfaite. Voici de quelle manire se rdige la condition IF :

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

40

If [not] condition 1. Instruction1. [Elseif condition2. Instruction2.] Else. Instruction Else. Endif.

Par exemple, le programme YX180

permet un agent de voyage dtre inform

lorsquun 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 paramtre du programme prcdent appelle, dans un premier temps, linterface o lagent de voyage doit indiquer le nombre de personnes. Voici linterface en question :

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

41

Puisque que la valeur cinq est saisie, le programme affiche quaucun prix de groupe nest disponible.

Instructions de conditions IF et variable SY-SUBRC Il est galement possible dutiliser linstruction IF en conjonction avec le champ SYSUBRC. Ce champ, contenu dans la table SYSTEM (voir tableau 1), concerne la valeur du dernier test logique effectu par le systme. Si le rsultat du test est positif, la valeur de SY-SUBRC est de zro (0). Lorsque la valeur de SY-SUBRC est diffrente de zro ( 0), le rsultat du test est ngatif (i.e. chec du test logique).

Lexemple du programme YX181 effectue une requte dans la table SCARR (liste de compagnies ariennes). Plus part iculirement, la requte vise afficher la compagnie possdant le numro didentification AD.

***TABLES*** tables: scarr. ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *requte sur la table scarr select * from scarr where carrid = 'AD'. write:/ scarr-carrname, scarr-url. endselect. *requte n'a pas trouv de donnes if sy-subrc 0. write:/ 'aucun enregistrement trouv'(001). endif.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

42

La figure suivante illustre en partie la table SCARR pour dmontrer quil ny a aucune compagnie arienne attitre au sigle AD.

Puisque la valeur de SY-SUBRC nest pas gale zro, le IF et la commande SYSUBRC affichent donc un message dchec.

Oprateurs logiques de linstruction de condition IF Linstruction de condition IF peut utiliser divers oprateurs logiques afin dexcuter la routine dsire. Lutilisation du NOT permet dintroduire la ngation dans la condition tandis que le AND et le OR permettent de grouper ensembles diffrentes instructions de condition. Le tableau suivant rassemble les principaux oprateurs utiliss en conjonction avec linstruction IF.

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique LGER et Suzanne RIVARD, HEC Montral, Tous droits rservs pour tous pays. Toute traduction ou toute modification sous quelque forme que ce soit est interdite. VERSION PRLIMINAIRE.

43

Tableau 8 - Oprateurs en conjonction avec linstruction IFSignes = , >< > < >=, =>