Sie sind auf Seite 1von 84

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 s pour tous pays. Toute traduction ou toute modification sous quelque forme que ce 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.

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.

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.

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.

ABAP Dictionary Au mme titre que l ABAP 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.

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


SY-DATUM SY-TCODE SY-MANDT SY-LANGU SY-UNAME SY-UZEIT SY-REPID SY-SUBRC

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

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.

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

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 l ABAP 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. Lomission du point provoque lchec de lexcution du programme; Afin de faciliter la lecture des programmes, une instruction peut tre divise sur plus dune ligne; Il est possible, mais non recommandable, dinscrire plus dune instruction par ligne; Les chanes de caractres doivent se retrouver entre des guillemets simples comme ceci : Bonjour. ; L ABAP Editor ne tient pas compte de la diffrence entre les minuscules et les majuscules ( case insensitive) sauf en ce qui concerne les chanes de caractres; Pour faire des commentaires utiliser ltoile (*); le texte apparatra alors en bleu.

Fonctions usuelles de ABAP Editor La figure ci-dessous prsente la barre doutil de l ABAP Editor. La fonction de chacun des icnes est explique dans le tableau 2.

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 Fonction
Previous Next Display/Change

Description
Revenir 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 La premire ligne dun programme ABAP se nomme la commande REPORT. Lors de la cration dun nouveau programme, elle sajoute automatiquement afin de lidentifier. Il est noter que lorsque lon copie un programme existant, le nouveau programme affiche la commande REPORT du programme original. Le programmeur doit donc changer le nom affich, dans la commande REPORT, en fonction du nom du nouveau programme.

La commande REPORT offre diffrentes options permettant de spcifier certaines fonctions et limites du programme. Par exemple, il est possible de limiter le nombre de lignes et de colonnes par page quaffichera le programme. La commande REPORT se rdige de la manire suivante :

REPORT nom_programme [NO STANDARD PAGE HEADING] [MESSAGE-ID] [LINE-SIZE] [LINE-COUNT]

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 Options


NO STANDARD PAGE HEADING MESSAGE-ID

Description
Affiche 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 qui sont utilises dans un programme doivent tre identifies dans la section Tables . Ainsi, un programme qui utilise le champ PLANETYPE de la table SFLIGHT, doit contenir la dclaration suivante :

*****Tables***** *table utilise TABLES: sflight.

Si le programme utilise plusieurs tables, il suffit dajouter le nom des tables en question, les uns la suite des autres, en les sparant par une virgule.

*****Tables***** TABLES: sflight, spfli.

Section : Data Toutes les nouvelles variables utilises dans un programme ABAP doivent tre dclares dans la section Data. Voici le format utilis pour dclarer une nouvelle variable en ABAP :
DATA : <name> LENGTH TYPE VALUE 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.

21

Tableau 4 - Dclaration dans la section DATA


Fonctions 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 : <name> 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 ***** *interface de slection des dates SELECT-OPTIONS: Date_vol FOR SFLIGHT-FLDATE.

lcran, le formulaire de saisie des dates de vols qui ont t effectus durant un intervalle donn saffichera de la manire suivante :

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

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 : </> <colonne> <(longueur)>

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 fonctions permettant une certaine mise en forme de laffichage lcran. Pour ce faire, le programmeur doit insrer les commandes de mise en forme dans son code afin de modifier la prsentation lcran. Cette section prsente un rsum des commandes les plus utilises. Tableau 6 - Principales fonctions de mise en forme de l'affichage Fonction ULINE SY-VLINE SKIP n SKIP TO LINE n WRITE: /colonne n Description Trace une ligne horizontale Ligne verticale utilise pour la cration dun tableau Saute n lignes Saute la ligne n crire partir de la colonne n

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 parenthses doivent tre prcdes et suivies dun espace comme ceci :

sqrt ( 10 ) .

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 , Order_value et 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 : WRITE: /02 '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 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 : 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.

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 l ABAP 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 IF


Signes = <> , >< > < >=, => <=, =< Caractres EQ NE GT LT GE LE BETWEEN var1 AND var2 NOT AND OR gale Nest pas gale Plus grand que Plus petit que gale ou plus grand que gale ou plus petit que Exclusivement entre 2 valeurs Signification

Ne pas ET OU

Instructions de conditions C ASE La commande CASE permet de catgoriser un certains nombres de conditions et de les comparer avec un champ dtermin. Lorsquune condition exprime est satisfaite, la commande CASE prend fin. Voici de quelle manire se rdige 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 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.

44

Le programme YX190 indique le nom de la couleur correspondant au chiffre saisie dans linterface.
***** 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 dtermine'(003). endcase.

Le programme dclenche dabord lcran 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 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.

45

Les boucles Linstruction Do est une commande permettant dexcuter un certain nombre de fois la mme procdure. Plus spcifiquement, le programme excute dans un premier temps la procdure et, dans un deuxime temps, la suite. La boucle sarrte sur demande (conditions IF avec un EXIT) ou lorsque le nombre de boucle dsire est atteint. Si aucune de ces deux options de compltion nest effectue, la boucle sera infinie. Voici le format pour crire une boucle.

CD [ n times]. procdure ENDDO.

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.

46

Le programme YX200 permet dafficher un tableau laide dune boucle. Notons que la variable SY-INDEX indique le nombre de fois quune boucle a t excute.
***** Tables ********** ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *crire un titre write:/25 'criture dun tableau'(001). uline at /25(22). *crire len-tte Uline at /2(74). Write : /2 3 19 20 37 38 54 55 75 77 sy-vline, 'nom'(002), sy-vline, 'prnom'(003), sy-vline, 'programme'(004), sy-vline, 'spcialisation'(005), sy-vline, 'no boucle (sy-index)'(006).

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

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique 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.

47

Lexcution de ce programme mne laffichage du tableau suivant :

TABLES INTERNES Une table interne constitue un espace temporaire de traitement et de stockage de donnes. Les tables internes ne font donc pas partie des bases de donnes de SAP R/3. Elles sont plutt emmagasines dans une zone tampon de la mmoire. Cette section prsente de quelle manire une table interne doit tre dclare et manipule dans le cadre dun programme ABAP. Caractristiques dune table interne Une table interne se distingue par les caractristiques suivantes : La table interne possde une dure de vie limite lexcution du programme; Elle ne possde pas de cl primaire; Les noms des tables internes doivent commencer par i afin de les diffrencier des tables des bases de donnes de SAP R/3; Une table interne possde un enregistrement den-tte ( header record) et des enregistrements individuels numrots 1, 2, 3, ; On ne peut accder et manipuler quun seul enregistrement la fois, soit celui qui se trouve dans lenregistrement den-tte; Quand un enregistrement individuel est appel par le programme, il est copi dans lenregistrement den-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.

48

Structure dune table interne Tel quillustr ci- dessous, une table interne est constitue de champs (ex : Nom, Pnom, No_tel) qui forment sa structure. Lors du droulement du programme, la table interne se remplit de valeurs crant ainsi diffrents enregistrements (lignes). La structure de chaque table interne possde un index qui numrote chacun de ces enregistrements. Il est possible dappeler un enregistrement prcis en utilisant lindex de la table interne. La table interne copie alors lenregistrement demand et laffiche dans len-tte de la table.

Nom En-tte 3 1 2 Enregistrements 3 4 Tremblay Chevalier Perreault Tremblay Venne

Prnom Marc Mathieu Julie Marc Justine

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

Dclaration dune table interne La dclaration dune table interne doit se faire dans la section Data. Il existe deux faons de dclarer une table interne. La premire option est de dclarer immdiatement la table interne au moment o sa structure est dfinie. La deuxime option est de dfinir dabord la structure et de dclarer une table interne similaire cette structure. Le tableau 9 explique, pour sa part, les commandes utilises dans la dclaration dune table interne.

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.

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 dune table interne


Options Itable Signification Reprsente le nom de la Table interne Reprsente le nombre denregistrements qui sera stock dans la mmoire tampon. partir de la version 4.0, SAP soccupe automatiquement de la gestion de la mmoire, alors il nest pas ncessaire de spcifier la grosseur de la table interne. Donc toujours inscrire 0 comme nombre denregistrement (0 = infini). Insre un enregistrement den-tte afin davoir accs aux donnes de la table interne. Nom donn la structure de la table interne

n_enregistrement

With header line Nom_enregistrement

Copyright 2004, SAP R/3 : Comprendre, configurer et implanter, Benoit A. AUBERT, Pierre-Majorique 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.

50

Lextrait du programme YX210 prsente la dclaration de la table interne ICIE dont la structure est copie sur COMPAGNIE.

***** Tables ********** *dclaration de la structure DATA: BEGIN OF compagnie, no_cie(3) type n, nom_cie(20) type c, END OF compagnie, *dclaration de la table interne avec une en-tte icie LIKE compagnie OCCURS 0 with header line.

Ajout denregistrements dans une table interne : Move, Append et Clear Lajout denregistrements dans une table interne requiert une gymnastique particulire dans laquelle un nouvel enregistrement doit dabord tre copi dans lentte de la table interne (commande Move), puis ajouter aux enregistrement de la table interne (commande Append). Enfin, len-tte de la table interne doit tre efface 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 considrer lordre de celle-ci. Voici de quelle manire cette procdure doit tre rdige :
Move : valeur to itable-champs. Append itable. Clear itable.

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.

51

Lexemple suivant poursuit lexemple initi prcdemment (YX210) en ajoutant des enregistrements la table interne ICIE.

***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *insertion manuelle de donnes dans la table interne MOVE: '01' to icie-no_cie, 'Plomberie ABC' to icie-nom_cie. *enregistrement de la ligne dans l'en-tte de la table *interne APPEND icie. *effacer le contenu de l'en-tte de la table interne CLEAR icie. *insertion manuelle de donnes 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 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.

52

Table interne et e xtraction de la base de donnes de SAP R/3 Une table interne peut galement tre dfinie en fonction dune table contenue dans les bases de donnes de SAP R/3. Il est mme possible dextraire des donnes de cette mme table afin de peupler une table interne. Notons que nous abordons ici succinctement le sujet des requtes dans les tables de R/3; nous y reviendrons en dtails la prochaine section. Voici de quelle manire la structure dune table existante dans R/3 peut tre utilise pour dfinir une table interne. La fonction Include structure slectionne la structure dune table de SAP R/3 et lutilise comme modle pour la nouvelle table interne.

DATA : BEGIN OF itable OCCURS 0. INCLUDE STRUCTURE table DATA : END OF itable.

Les rsultats de la requte la base de donnes de R/3 sont ensuite copis dans la table interne laide de la fonction suivante :

into corresponding fields of table itable.

Notons que la fonction Corresponding field permet de sassurer que la table interne possde la mme structure, ou des champs correspondants, avec la table do les valeurs sont extraites.

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.

53

titre dexemple, prenons un programme ( YX240) permettant un employ dune compagnie arienne de faire afficher le nom du pays, de la ville et de laroport do il y a des dparts.

***** Tables ********** Tables: spfli. ***** Data ************ *dclaration 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 ***** *requtes sur la table spfli select COUNTRYFR CITYFROM AIRPFROM from spfli *insertion des donnes trouves dans la table interne into corresponding fields of table itable.

Afficher le contenu dune table interne Laffichage du contenu dune table interne seffectue laide dune boucle ayant pour fonction dcrire un aprs lautre les enregistrements de la table. Il est possible de prciser les champs dont laffichage est souhait. Cette boucle doit tre rdige de la manire 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 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.

54

Le programme suivant (YX210) poursuit lexemple dbut prcdemment. Dans cet extrait, nous procdons laffichage 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 donnes contenues dans *la table interne. Loop at icie. write:/ icie-no_cie, icie-nom_cie. Endloop.

Lexcution de ce programme mne laffichage de lcran suivant :

Prenons un second exemple. Le programme YX240 termine lexemple initi prcdemment et affiche la liste des aroports do il y a des dparts.

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

55

Voici la liste des aroports avec leur ville et pays respectifs affiche lcran :

Lecture dun enregistrement la fois (Commande Read) La commande Read permet de chercher un enregistrement particulier dans une table interne. Pour atteindre un enregistrement (une ligne) spcifique dune table interne laide de la commande Read, il importe de suivre la procdure suivante : a) Supprimer lenregistrement qui est prsentement dans len-tte 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 mme manire quil apparat dans la base de donnes de SAP R/3 (case sensitive). Il est aussi possible dutiliser le numro de lindex. La lecture dun enregistrement se rdige donc de la manire suivante. Dabord, la suppression de lentte seffectue selon lune des deux mthodes suivantes :

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.

56

Option 1
MOVE SPACE TO itable

Option 2 :
Clear itable.

Ensuite, il existe deux options pour rechercher un enregistrement. La premire option consiste effectuer la recherche sur la valeur prcise dun champ de la table. Il est noter que la commande Read arrte sa lecture au premier enregistrement qui correspond aux spcifications demandes. Lautre option est de rechercher un enregistrement avec le numro de lindex. Option 1 :
Itable -champ = valeur_recherche. READ TABLE itable

Option 2:
READ TABLE itable INDEX i.

Lexemple 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 effectus lors de cette journe (faire SE16 pour visualiser cette table).
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.

57

Figure 3

Extrait de la table SFLIGHT

***** Tables ********** Tables: sflight. DATA: BEGIN OF itab le OCCURS 0. INCLUDE STRUCTURE sflight. DATA: END OF itable. ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** select * from sflight into corresponding fields of table itable. WRITE:/1 'Date de dpart'(001), 22 'ID du transporteur'(002). Uline at /1(50). *effacer len-tte MOVE SPACE TO itable. *valeur recherche Itable-FLDATE = '20050114'. *lire la table interne READ TABLE itable. *si on trouve des donnes; les afficher IF SY-SUBRC = 0. write:/1 22 itable-FLDATE, itable-CARRID.

*sinon: crire un message d'erreur Else. write:/1 'aucune donne trouve.'(003). 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.

58

Comme la commande Read ne rapporte que le premier enregistrement retrouv, seul le premier vol ( CARRID = AA, CONNID = 0064) est affich :

Modification dune table interne (Commande Modify) Pour modifier un enregistrement dune table interne, celui-ci doit tre copi dans lentte avant dtre modifi et ensuite mis jour dans la table interne. Comme les enregistrements dans une table interne ne possdent pas de cl primaire, il existe deux approches pour raliser cette procdure : a) En recherchant lenregistrement modifier avec le numro de lindex de la table interne; b) En effectuant une boucle pour rechercher un enregistrement en fonction de la valeur de lun de ses champs.

Option 1 : Attardons nous dabord la premire option : la modification dune table interne laide de son index. Cette approche requiert que le programmeur connaisse le numro de lenregistrement modifier. Par consquent, il importe, avant tout, dafficher la table interne et de faire apparatre les numros de lindex. Pour ce faire, il suffit dajouter la variable SY-TABIX dans la boucle qui permet dafficher la table. Le TABIX est un champ de la table System ( SY ) contenant les numros denregistrements de lindex. Lexemple ci-dessous poursuit le programme des sections prcdentes, mais dautres enregistrements ont t rajouts au programme initial. L e programme YX211 affiche tous les enregistrements de la table interne de mme que lindex de la table.

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.

59

*boucle permettant d'afficher les donnes contenues dans la table *interne. Loop at icie. write:/ sy-tabix, icie-no_cie, icie-nom_cie. Endloop

Le rsultat de ce programme saffiche tel quillustr ci- dessous. Lindex apparat la gauche de la liste.

Il est noter que lorsque lon insre des enregistrements dans une table interne, ceuxci saffichent les uns la suite des autres sans ordre de champ prcis. Cest pourquoi la compagnie Gazon Plus se retrouve lindex #3, malgr un numro de clients suprieur Menuiserie Pros.

En utilisant le numro de lindex, il est possible dappeler lenregistrement souhait dans len-tte, de modifier len-tte et de retourner lenregistrement dans la table interne. Le programme suivant recherche et lit le 2e enregistrement ( Index 2) de la table interne. Sil le trouve, il modifie le champ nom_cie avant de retourner lenregistrem ent dans la table interne.

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.

60

*mise jour du if sy-subrc = 0.

dun champ X laide de son *numro dindex

read table itable index N. 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 dutiliser une boucle. Cette boucle recherche dans la table interne une valeur spcifique dans un champ donn. Aprs que lenregistrement ait t trouv et amen dans lentte, celui-ci est modifi et retourn dans la table interne. Voici donc une manire alternative de rdiger lextrait du programme prsent prcdemment dans loption 1.

*mise jour du

dun champ X laide dune *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 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.

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 len-tte de la table. Il suffit de copier lenregistrement effacer dans len-tte et ensuite utiliser la commande Delete pour le supprimer. Ainsi, contrairement la commande Clear , la commande Delete efface, en plus de lenregistrement den-tte, lenregistrement correspondant dans la table interne.

Il existe deux approches pour utiliser la commande Delete : a) En recherchant lenregistrement supprimer avec le numro de lindex de la table interne;

b) En effectuant une boucle pour rechercher un enregistrement supprimer en fonction de la valeur de lun de ses champs. Option 1 : La premire option consiste rechercher lenregistrement supprimer laide de son numro dindex. Un fois trouv, lenregistrement est copi dans len-tte puis supprim. Lenregistrement est dfinitivement supprim de len-tte et de la table interne simultanment.

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.

62

*suppression de l'enregistrement possdant le *numro de compagnie X, mais le numro dindex Y *(SY-TABIX) read table itable index Y. if sy-subrc = 0. delete itable index sy-tabix. endif.

*suppression de l'enregistrement possdant le *numro de compagnie 004, mais le numro dindex *3 (SY -TABIX) read table icie index 3. if sy-subrc = 0. delete icie index sy-tabix. endif.

noter : lors de la suppression complte dun enregistrement avec Delete , lindex (SYTABIX) se modifiera pour tenir compte de cette suppression.

Avant la suppression :

Aprs la suppression :

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.

63

Option 2 : Loption 2 consiste rechercher un enregis trement en fonction de la valeur dun champ de cet enregistrement. Lorsque cet enregistrement est identifi et copi dans len-tte, la commande Delete permet de la supprimer aux deux endroits. Lexemple suivant (YX212) identifie et supprime la compagnie possdant le numro de compagnie 4 soit Gazon Plus.

*suppression de l'enregistrement possdant le numro de *compagnie X Loop at itable where no_cie = 'X'. Delete itable index sy-tabix. Endloop.

*suppression de l'enregistrement possdant le numro de *compagnie 04 Loop at icie where no_cie = '04'. Delete icie index sy-tabix. Endloop.

Dnombrement des enregistrements de la table interne (Commande DESCRIBE) Il est possible de compter le nombre denregistrements dune table interne. Pour se faire, il faut utiliser la commande Describe. Voici de quelle manire se rdige cette commande :

DESCRIBE table itable [LINES n] :

Retourne le nombre denregistrements de ITABLE dans la variable n.

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.

64

REQUTES SUR LA BASE DE DONNES La section suivante est consacre lutilisation du langage de requte SQL dans le cadre de programme rdig en ABAP. En effet, ABAP utilise le langage SQL pour extraire et manipuler des donnes contenus dans la BD de R/3. Bien que les commandes Update, Insert et Delete puissent tre utilises dans le cadre dun programme ABAP, cette section sattarde principalement la commande Select. La commande Select La commande Select permet deffectuer une requte sur les tables de la base de donnes de R/3 en spcifiant diffrents critres de slection et de regroupement. La commande Select se rdige de la manire suivante :

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

Tableau 10 - Option de la commande SELECT


SINGLE Lutilisation du Single dans linstruction Select offre la possibilit de choisir un seul enregistrement. Le Distinct supprime le ddoublement denregistrements qui pourraient tre occasionn par la requte. La commande Where permet de circonsc rire le rsultat de la requte.

DISTINCT

WHERE

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.

65

Il importe de souligner que le point doit seulement apparatre aprs la dernire instruction, soit le Where , le Group by , le Having ou le Order by. De surcrot, il est recommand de conclure la requte par un Endselect (qui lui-mme doit tre suivi dun point). La combinaison du Select-endSelect cre automatiquement une boucle, facilitant ainsi laffichage des rsultats pour des programmes courts ou lorsque les donnes ne sont lues quune seule fois. En ce qui concerne la commande Where, ABAP reconnat deux frimes. Dune part, le signe pourcentage (%) permet de remplacer un groupe de caractres au dbut ou la fin dune valeur : par exemple, tous les noms commenant par b = b%. Dautre part, le signe de soulignement ( _ ) permet de remplacer une srie de caractres au centre dune valeur : par exemple, tous les noms ressemblant Amy = A_ y. Dans les deux cas, il importe dutiliser la commande Like. Par exemple, une requte pour trouver les compagnies ariennes dont le ID commence par A devrait se rdiger de la manire suivante :

where carrid like a%.

Par

ailleurs,

il

est

possible

de

faire

afficher

automatiquement

le

nombre

denregistrements contenus dans le rsultat dune requte. Pour se faire, il suffit dafficher le champ DBCNT de la table System (SY). Voici comment rdiger cette commande :

write : /enregistrements trouvs :(001), sy-dbcnt.

Illustrons par un exemple la c ommande Select. La requte de cet exemple porte sur la table SPFLI. La requte slectionne lensemble du contenu (select *) de la table SPLI (from spfli) et demande dordonnancer le rsultats selon la ville dorigine (order by
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.

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 trouvs write:/ 'nombre d''enregistrements trouvs:', sy-dbcnt.

Il est galement possible de conserver les rsultats de la requte dans une table interne. Lexemple suivant (YX224) sauvegarde temporairement les donnes de SPFLI dans la table interne itable. Laffichage des donnes est effectu laide dune boucle.
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.

67

***** Tables ********** tables: spfli. ***** Data ************ *declaration dune 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 ***** *requte sur la table Spfli select * from spfli into table itable where period = '0' order by cityfrom. *affichage des donnes continues dans les champs spcifis loop at itable. write:/ itable-carrid, itable-countryfr, itable-cityfrom, itable-airpfrom, itable-countryto, itable-cityto. endloop. skip 2. write:/ 'nombre d'enregistrements trouvs:', sydbcnt.

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.

68

Lexcution de ce programme mne laffichage de la liste denregistrements cidessous. Notons que le nombre dobservations retournes est affich grce au champ SY-DBCNT.

Fonctions dagrgation Les fonctions dagrgation peuvent tre insres dans une requte afin deffectuer divers calculs sur les champs de la slection. Voici une liste des fonctions dagrgations les plus frquemment utilises.

Tableau 11 - Liste de fonctions d'agrgation


Commande AVG SUM MAX MIN COUNT Description Moyenne Somme Maximum Minimum Frquence

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.

69

Concatner une requte Pour concatner une requte en langage ABAP, il faut imbriquer deux SelectEndSelect. Une telle requte concatne se rdige de la manire 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 concatnation dune requte. Supposons que nous souhaitons obtenir de linformation sur des connexions de vols. Une partie des informations dsires 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 numro du transporteur arien). La requte vise isoler les vols dont le ID de connexion (CONNID) est 17. Voici comment devrait se rdiger cette requte ( YX230 ):

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.

70

***** Tables ********** tables : sflight, spfli. ***** Data ************ ***** Parameters & Select Options ***** ***** Initialization ********* ***** Start of Selection ***** *en-tte write:/1 'no_connexion'(001), 15 'Type_avion'(002), 30 'Date_vol'(003). skip 1. *requte concatne select * from sflight. select * from spfli where carrid = sflight-carrid and connid = '17'. *afficher write:/1 15 30 les rsultats spfli-connid, sflight-planetype, sflight-fldate.

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

71

lcran, le rsultat saffiche de la manire suivante :

RAPPORTS INTERACTIFS Cette section prsente les diffrentes fonctions, vnements et commandes pour programmer des rapports interactifs dans SAP R/3 laide du langage ABAP. Dans le cadre du cours, les rapports interactifs seront surtout sous forme de listes dtailles. La commande At-line selection La commande At-line selection permet lutilisateur de slectionner une ligne, dans un rapport, afin daccder des informations supplmentaires contenues dans une liste. Pour excuter la commande, il doit double-cliquez sur la ligne dsire ou slectionner la ligne en question et presser la touche F2. La commande At-line selection se rdige de la manire suivante :
at line-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.

72

Champs de la table SY Certains champs, provenant de la table SY, affichent de linformation concernant lutilisation de rapports interactifs. Le tableau ci- dessous en dcrit un certain nombre.

Tableau 12 Champs de la table SY SY-LSIND : SY-CUROW : SY-CUCOL : SY-LISEL : Niveau de la liste (liste de base = 0) Ligne slectionne Colonne slectionne Contenu de la ligne slectionne

Le programme YX270 est un exemple dutilisation des notions mentionnes ci-haut.


do 30 times. write: /'line', sy-index. write /. enddo. at line-selection. if sy-lsind < 2. write: / 'Niveau de la liste write: / 'Ligne write: / 'Contenu de la ligne endif.

:'(001), / sy-lsind. :'(002), / sy-curow. :'(003), / sy-lisel.

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.

73

Lors de lexcution du programme, le mot line et le nombre de fois que la boucle a t excute (grce SY-INDEX) saffiche lcran.

Lutilisateur slectionne une ligne en double-cliquant sur cette dernire ( At-line selection). Le programme affic he le niveau de la liste (sy-lsind), le numro de la ligne (sy-curow) et le contenu de la ligne ( sy-lisel). Dans lexemple suivant, lutilisateur a double-cliqu sur line 5.

noter : le champ SY-LSIND utilis conjointement avec la commande At line-selection et la condition de contrle If, contrle le nombre de niveaux de la liste. La commande Hide La commande Hide permet dentreposer temporairement en mmoire de linformation spcifique chacune des lignes de la liste. Lors de lexcution de la commande At lineselection, le contenu est restaur. Lun des objectifs de la commande Hide est de rfrencier le contenu de chacune des lignes dune liste entre le niveau de base (SYLSIND = 0) et un niveau suprieur .

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.

74

Le programme YX271 est un exemple dutilisation de la commande Hide. Il entrepose en mmoire le numro identif iant chacune des compagnies daviation (carrid) laide de la commande Hide. Lorsque lutilisateur slectionne le nom de lune des compagnies, les numros identifiant chacune des compagnies daviation (carrid) est restaur et permet ainsi dapparier chacune des compagnies daviation avec leur adresse URL respective. La programmation dun tel programme ressemble ceci :
***** Tables ********** *tables utilises tables: scarr, scarplan. ***** Data ************ *dclaration 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 mmoire les numros 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 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.

75

lcran, le contenu du niveau de base (niveau = 0) saffiche de la manire suivante :

Aprs avoir double-cliqu sur lune des compagnies daviation, dans ce cas Qantas Airways, linformation du niveau 1 saffiche son tour dans une nouvelle page.

Le forage sur plusieurs niveaux Le forage sur plusieurs niveaux se fait laide de la commande SY-LSIND de la table SY conjointement avec linstruction de conditions CASE. La commande SY-LSIND gre les diffrents niveaux. Il est possible de lui assigner une valeur. Utilis seule, elle affiche le niveau de forage o lutilisateur se trouve.

Le programme YX272 est un programme prsentant les informations de la table clients sur diffrents niveaux. Le niveau de base affiche le nom du client, le premier niveau le nom et le numro du client, le deuxime niveau la ville et le pays du client et le troisime niveau son adresse complte.

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.

76

lcran, le niveau de base saffiche ainsi :

En double-cliquant sur lune des lignes de la liste, le premier niveau apparat :

Il en est de mme pour le deuxime et le troisime niveau qui ressemblent respectivement ceci : Niveau 2 :

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

77

La programmation ABAP du programme YX272 est la suivante :


***** Tables ********** *table utilise TABLES: kna1. ***** Data ************ *dclaration 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 mmoire les numros 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: /5 'Numro du client : when 2. write: /5 'Ville : /5 'Pays : when 3. write: /5 'Adresse : ', iclient-NAME1, ', iclient-KUNNR. ', iclient -ORT01, ', iclient -LAND1. ', iclient -stras.

endcase.

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.

78

La commande Window starting at [] ending at [] La commande Window starting at [] ending at [] offre la possibilit au dveloppeur dafficher du texte ou le rsultat dune opration, par exemple, dans une nouvelle fentre tout en ayant le contrle sur les dimensions de celle-ci. Cette commande se rdige comme ceci :

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

Lattribution dune valeur aux lettres v et w permet de contrler le lieu daffichage de la nouvelle fentre lcran. Le v reprsente la distance partir de lextrmit gauche de lcran et le w la hauteur en fonction du haut de lcran. Le x et le y reprsente respectivement la largeur et la longueur de la nouvelle fentre. Le programme YX273 est un exemple dutilisation de cette commande.

write: / 'Cliquez sur cette phrase'. At line-selection. Window starting at 5 5 Ending at 70 5. write: 'Voici une nouvelle fentre ayant des dimensions de 5-5-70-5'.

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.

79

Aprs avoir double-cliqu sur Cliquez sur cette phrase , la fentre suivante apparat :

CRATION DE GRAPHIQUES Cette section prsente brivement les techniques de cration de graphiques dans SAP R/3. Diffrentes 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 cration de graphiques Dans SAP R/3, lappel dune fonction se fait de la manire suivant e :

CALL FUNCTION nom de la fonction EXPORTING TITL VALT TABLES DATA = italbe. = = titre du graphique Nom de laxe des Y

La commande CALL FUNCTION appelle la fonction graphique dsire. La commande TITL permet de saisir le titre du graphique et la commande VALT le nom de laxe des Y. La commande EXPORTING quant elle, fait apparatre 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 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.

80

Graphique deux dimensions Pour crer un graphique en deux dimensions, il faut en premier lieu dclarer une table interne et saisir les valeurs, manuellement ou laide dune requte, 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 fentre du graphique ferme, le programme YX280 affiche un tableau rsumant les valeurs contenues dans le graphique deux dimensions.

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.

81

La programmation en ABAP du programme YX280 est la suivante :


***** Tables ********** ***** Data ************ *dclaration d'une table interne DATA: BEGIN OF itable OCCURS 0, TEXT(25), VALUE TYPE P, END OF itable. *dclaration d'une variable : titre du graphique data: TITLE(25) VALUE 'Sales'. *dclaration 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 donnes dans la table interne *donnes de la premire colonne move: 'Product_1' to itable-text, '153470' to itable-VALUE. APPEND itable. *donnes de la deuxime colonne itable-TEXT = 'Product_2'. itable-VALUE = 253150. APPEND itable. *donnes de la troisime colonne itable-TEXT = 'Product_3'. itable-VALUE = 53470. APPEND itable. *donnes de la quatrime colonne itable-TEXT = 'Product_4'. itable-VALUE = 182000. APPEND itable. *donnes de la cinquime colonne itable-TEXT = 'Product_5'. itable-VALUE = 92410. APPEND itable. ***affichage des donnes 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 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.

82

VALT TABLES DATA

= TCOL1 = itable.

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.

83

Annexe 1 Liste des programmes utiliss

Nom du programme dans ABAP Editor YX00ex_gabarit YX00ex_programme YX101 YX102 YX00ex_gabarit YX110 YX120 YX130 YX140 YX141 YX150 YX171 YX160 YX180 YX181 YX190 YX200 YX210 YX210 YX240 YX210 et YX240 YX241 YX211 YX212 YX222 YX224 YX230 YX270 YX271 YX272 YX273 YX280

Description Gabarit de la structure d'un programme Exemple dun programme Exemple dun programme complet en ABAP (structure) Exemple de la commande Report Dmo en-tte Exemple parameters Exemple select options Exemple parameters et select options Exemple #1 avec la commande Write Exemple #2 avec la commande Write Exemple de mise en forme Exemple avec oprandes Exemple text-elements Exemple avec IF Exemple avec IF et SY-SUBRC Exemple avec case Exemple avec une boucle Exemple dclaration table interne Exemple commandes Move, Append et Clear Exemple dclaration table interne (tables disponibles dans SAP) Exemple afficher le contenu dune table interne Exemple table interne commande Read Exemple table interne Modify Exemple table interne avec Delete Exemple Select Exemple Select avec table interne Exemple requte concatne Exemple rapport interactif et table SY Exemple rapport interactif et commande Hide Exemple rapport interactif et forage sur plusieurs niveaux Exemple rapport interactif et commande Window Exemple graphique 2 dimensions

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

84

Das könnte Ihnen auch gefallen