concept et outils
BC400
R/3 System
Release 46B
17.08.2000
BC400
Introduction
ABAP Workbench :
Concept et outils
SAP AG 1999
SAP AG 1999
Systme R/3
Version 4.6A
Novembre 1999
(C) SAP AG
BC400
0-1
Copyright
SAP AG 1999
Marques dposes :
ARIS Toolset est une marque dpose de IDS Prof. Scheer GmbH, Saarbruck
IBM , OS/2 , DB2/6000 et AIX sont des marques dposes de IBM Corporation.
INFORMIX -OnLine for SAP est une marque dpose de Informix Software Incorporated.
UNIX et X/Open sont des marques dposes de SCO Santa Cruz Operation.
ABAP/4, InterSAP, RIVA, R/2, R/3, R/3 Retail, SAP (Word), SAPaccess, SAPfile, SAPfind,
SAPmail, SAPoffice, SAPscript, SAPtime, SAPtronic, SAP-EDI, SAP EarlyWatch, SAP
ArchiveLink, SAP Business Workflow, et ALE/WEB sont des marques ou marques dposes de
(C) SAP AG
BC400
0-2
SAP AG. Le logo SAP et tous les autres produits, services, logos, ou noms de marques sont
galement des marques ou marques dposes de SAP AG.
n
Les autres produits, services, logos, ou noms de marques sont des marques ou marques dposes de
leurs propritaires respectifs.
(C) SAP AG
BC400
0-3
ABAP Workbench
Niveau 2
3 jours
BC402
Techniques de
programmation ABAP
3 jours
BC404
ABAP Objects Programmation oriente
objets dans R/3
BC405
3 jours
5 jours
Programmation interactive
BC400
5 jours
Introduction
ABAP Workbench
MBC40
2 jours
SAP AG 1999
(C) SAP AG
BC420
5 jours
ABAP Workbench Interface de donnes
2 jours
BC430
Dictionnaire de donnes
ABAP
BC460
3 jours
Edition et impression de
formulaires dans
SAPscripts
2 jours
CA610
CATT - Test Workbench et
Computer Aided Test Tool
BC400
Niveau 3
BC414
2 jours
Programmation des
mises jour de la base
de donnes
BC415
2 jours
ABAP Workbench Interfaces de
communication
BC425
3 jours
Extensions et
modifications
BC412
2 jours
Programmation de
dialogues l'aide des
contrles EnjoySAP
BC440
5 jours
BC490
3 jours
Analyses des
performances
ABAP
Dveloppement des
applications sur Internet
Cours supplmentaires
recommands : Business
Process Technologies
CA925, CA926, CA927
BC095 (Technologie
d'intgration) BC619 (ALE),
BC620, BC621
0-4
Connaissances requises
l Connaissances en programmation
l Cours de formation SAP 50 : technologie de base
SAP AG 1999
(C) SAP AG
BC400
0-5
l Participants :
n
Membres du projet
l Dure : 5 jours
SAP AG 1999
Les supports de cours ne constituent pas un programme d'auto-formation. Ils sont conus
uniquement dans le but de complter les explications fournies par l'animateur. Un espace est
laiss votre disposition sur ces supports pour vous permettre de prendre des notes.
Vous n'aurez probablement pas le temps pendant le cours de terminer tous les exercices. Les
exercices fournissent des exemples complmentaires aux sujets discuts pendant ce cours. Vous
pouvez galement les utiliser comme aide pour dvelopper vos connaissances aprs la fin du cours.
(C) SAP AG
BC400
0-6
SAP AG 1999
(C) SAP AG
BC400
1-1
Objectif du cours
SAP AG 1999
(C) SAP AG
BC400
1-2
Objectifs du cours
SAP AG 1999
(C) SAP AG
BC400
1-3
Chapitre 1
Introduction
Chapitre 2
Chapitre 3
Chapitre 4
Chapitre 5
Chapitre 6
Chapitre 7
Chapitre 8
Chapitre 9
Chapitre 10 Interfaces
SAP AG 1999
(C) SAP AG
BC400
1-4
Chapitre 11
Chapitre 12
Chapitre 13
Exercices
Solutions
Annexes
SAP AG 1999
(C) SAP AG
BC400
1-5
Scnario de gestion
Aroport de dpart
Destination
Ville de dpart
SAP AG 1999
(C) SAP AG
BC400
1-6
Contenu :
l Architecture client / serveur
l Programme type avec affichage de donnes sous forme
de liste
l Programme type avec affichage de donnes sur un
cran
l Quelles sont les composantes du programme ABAP
dveloppes et dans quels chapitres ?
SAP AG 1999
(C) SAP AG
BC400
2-1
Synthse
Architecture
Architecture client
client // serveur
serveur
Programme
Programme type
type avec
avec affichage
affichage de
de donnes
donnes sous
sous forme
forme de
de liste
liste
Programme
Programme type
type avec
avec affichage
affichage de
de donnes
donnes sur
sur un
un cran
cran
Quelles
Quelles sont
sont les
les composantes
composantes du
du programme
programme ABAP
ABAP dveloppes
dveloppes
et
et dans
dans quels
quels chapitres
chapitres ??
SAP AG 1999
(C) SAP AG
BC400
2-2
Prsentation
Serveur
Niveau
SAPGUI
SAPGUI
SAPGUI
Rpartiteur
Application
Serveur
Niveau
Base de
donnes
SAPGUI
SAPGUI
SAPGUI
Rpartiteur
Processus
de travail
Processus
de travail
Processus
de travail
Processus
de travail
Processus
de travail
Processus
de travail
Processus
de travail
Processus
de travail
SAP AG 1999
Le systme R/3 a une architecture logicielle modulaire qui suit les principes orients logiciel
client/serveur.
Le systme R/3 affecte des prsentations, des applications, et des enregistrements de donnes
diffrents ordinateurs. Il sert de base l'volutivit du systme R/3.
Le niveau le plus bas est le niveau base de donnes. Les donnes y sont gres grce un systme
de gestion de base de donnes relationnelle (RDBMS). Outre les donnes de base et les donnes de
mouvement, les programmes et les mtadonnes qui dcrivent le systme R/3 y sont galement
stocks et grs.
Les programmes ABAP, qui comprennent aussi bien les applications fournies par SAP que celles que
vous dveloppez vous-mme, sont excuts au niveau application. Ils exploitent des donnes
appeles au niveau base de donnes et y stockent de nouvelles informations.
(C) SAP AG
BC400
2-3
Prsentation
Serveur
Niveau
Processus de travail
Application
Serveur
Niveau
Programme ABAP
Base de
donnes
SAP AG 1999
Ce graphique peut tre simplifi pour la plupart des sujets discuts pendant le cours. L'interaction
entre les programmes ABAP et leurs utilisateurs sera notre principal intrt pendant ce cours. La
comprhension de la conception d'un programme ABAP passe avant celle des processus exacts
impliqus dans la rpartition d'utilisateurs sur un serveur d'application. Nous allons donc travailler
avec un graphique simplifi qui n'indique pas formellement le rpartiteur et le processus de travail.
Certaines diapositives seront, cependant, amliores pour inclure ces dtails lorsqu'ils s'appliquent
la programmation ABAP.
Les programmes ABAP sont traites sur le serveur d'application. La conception de dialogues
utilisateur et de dialogues base de donnes est ds lors de grande importance lors de l'criture de
programmes applicatifs.
(C) SAP AG
BC400
2-4
cran de slection
Bote noire
cran
Liste
SAP AG 1999
Temps
L'utilisateur s'intresse principalement la faon dont l'opration se droule et dont les donnes
peuvent tre introduites et affiches depuis l'opration. Les dtails techniques, comme savoir si un
seul programme est excut ou si de multiples programmes sont appels de manire implicite, ou les
diffrences techniques entre les types d'cran affichs, sont gnralement moins importants pour
l'utilisateur. L'utilisateur ne doit pas ncessairement connatre le droulement prcis du programme
ABAP sur le serveur d'application. Le systme R/3 comme les serveurs d'application et la base de
donnes sont reprsents par une bote noire pour l'utilisateur.
Il existe, cependant, trois types d'cran techniquement distincts (crans, crans de slection, et listes)
qui offrent diffrents services l'utilisateur. Le travail du dveloppeur est de dterminer quel type de
dialogue utilisateur convient le mieux aux besoins de l'utilisateur.
(C) SAP AG
BC400
2-5
Lancement
du programme
Programme ABAP
Bloc de
traitement
ABAP
Table de
base de
donnes
Bloc de
traitement
ABAP
Lorsque l'utilisateur excute une action utilisateur (en choisissant, par exemple, Entre, une touche
de fonction, une fonction du menu ou un bouton de commande), le contrle passe du serveur de
prsentation au serveur d'application et certaines parties du programme ABAP sont excutes. Si un
dialogue utilisateur supplmentaire est lanc lors du programme ABAP, le systme envoie un cran
au serveur de prsentation et le contrle est nouveau transfr au serveur de prsentation.
(C) SAP AG
BC400
2-6
Synthse
Architecture
Architecture client
client // serveur
serveur
Programme
Programme type
type avec
avec affichage
affichage de
de donnes
donnes sous
sous forme
forme de
de liste
liste
Programme
Programme type
type avec
avec affichage
affichage de
de donnes
donnes sur
sur un
un cran
cran
Quelles
Quelles composantes
composantes des
des programmes
programmes ABAP
ABAP sont
sont dveloppes
dveloppes
dans
dans quels
quels chapitres
chapitres ??
SAP AG 1999
(C) SAP AG
BC400
2-7
Lancement
du programme
Repository
Table de
base de
donnes
SAP AG 1999
Temps
Chaque fois qu'un utilisateur se connecte au systme, un cran s'affiche. partir de cet cran,
l'utilisateur peut dmarrer un programme en utilisant son chemin de menus.
(C) SAP AG
BC400
2-8
Lancement
du programme
Programme ABAP
Repository
cran de slection
Objets de donnes
Table de
base de
donnes
Bloc de
traitement
ABAP
Temps
Si l'utilisateur a lanc un programme avec une action utilisateur, le contexte du programme est alors
charg sur le serveur d'application. Le contexte du programme contient des zones de mmoire pour
les variables et les objets de donnes complexes, les informations d'crans pour dialogues utilisateur
et les blocs de traitement ABAP. Le runtime system reoit les informations de programme du
Repository, qui reprsente une partie spcifique de la base de donnes.
Le programme type a un cran de slection comme dialogue utilisateur, une variable et une structure
comme objets de donnes et un bloc de traitement ABAP. La liste utilise pour afficher les donnes
est cre de manire dynamique au moment de l'excution.
(C) SAP AG
BC400
2-9
Lancement
du programme
Programme ABAP
Objets de donnes
Table de
base de
donnes
Bloc de
traitement
ABAP
Temps
Comme le programme contient un cran de slection, le runtime system ABAP l'envoie au serveur
de prsentation au dbut du traitement du programme. Le serveur de prsentation contrle le
droulement du programme aussi longtemps que l'utilisateur remplit les zones de saisie.
Les crans de slection permettent aux utilisateurs d'entrer des critres de slection requis par le
programme.
(C) SAP AG
BC400
2-10
Lancement
du programme
Programme ABAP
Objets de donnes
Table de
base de
donnes
Bloc de
traitement
ABAP
Temps
Ds que l'utilisateur a termin d'introduire des donnes dans l'cran de slection, il ou elle peut lancer
un traitement supplmentaire en slectionnant "Excuter". Chaque saisie de donnes de l'cran de
slection est automatiquement place dans son objet de donnes correspondant du programme et le
runtime system ABAP reprend le contrle du traitement. Notre programme type contient un seul bloc
de traitement ABAP. Le runtime system dclenche un traitement squentiel de ce bloc de traitement
ABAP.
Si les entres effectues par l'utilisateur ne possdent pas le type correct, un message d'erreur
apparat alors automatiquement. L'utilisateur doit corriger ses entres.
(C) SAP AG
BC400
2-11
Lancement
du programme
Programme ABAP
Objets de donnes
Table de
base de
donnes
Bloc de
traitement
ABAP
Temps
Le bloc de traitement ABAP possde un accs la base de donnes en mode lecture qui y a t
programm. Le programme transmet galement la base de donnes les informations indiquant
quel tableau de la base de donnes elle doit accder et quelle ligne du tableau elle doit lire.
(C) SAP AG
BC400
2-12
Lancement
du programme
Programme ABAP
Objets de donnes
Table de
base de
donnes
Bloc de
traitement
ABAP
Temps
(C) SAP AG
BC400
2-13
Lancement
du programme
Programme ABAP
Objets de donnes
Table de
base de
donnes
Bloc de
traitement
ABAP
Temps
La structure d'affichage de la liste suivante a aussi t programme dans le bloc de traitement. Une
fois tous les traitements effectus, le runtime system envoie l'cran de synthse au serveur de
prsentation.
(C) SAP AG
BC400
2-14
Synthse
Architecture
Architecture client
client // serveur
serveur
Programme
Programme type
type avec
avec affichage
affichage de
de donnes
donnes sous
sous forme
forme de
de liste
liste
Programme
Programme type
type avec
avec affichage
affichage de
de donnes
donnes sur
sur un
un cran
cran
Quelles
Quelles sont
sont les
les composantes
composantes du
du programme
programme ABAP
ABAP dveloppes
dveloppes
et
et dans
dans quels
quels chapitres
chapitres ??
SAP AG 1999
Dans cette partie du chapitre, l'utilisateur lance un deuxime programme type l o un identificateur
de compagnie arienne peut tre introduit sur l'cran de slection initial. Ce programme utilise par la
suite ces saisies d'information sur l'cran de slection pour retrouver le "nom complet de la
compagnie arienne" et la "devise locale de la compagnie arienne" dans la base de donnes et les
afficher sur un cran pour l'utilisateur.
(C) SAP AG
BC400
2-15
Programme ABAP
Objets de donnes
Lancement
du programme
Repository
Table de
base de
donnes
cran
Bloc de
traitement
ABAP
Temps
Lorsque l'utilisateur lance le programme, le contexte du programme est d'abord charg. Pourtant,
notre programme type comporte cette fois trois blocs de traitement, un cran de slection, un cran,
et une variable et deux structures pour objets de donnes.
(C) SAP AG
BC400
2-16
Programme ABAP
Objets de donnes
Lancement
du programme
Table de
base de
donnes
cran
Bloc de
traitement
ABAP
Temps
Comme le programme contient un cran de slection, le runtime system ABAP l'envoie au serveur
de prsentation au dbut du traitement du programme.
(C) SAP AG
BC400
2-17
Programme ABAP
Objets de donnes
Lancement
du programme
Table de
base de
donnes
cran
Bloc de
traitement
ABAP
Temps
Ds que l'utilisateur a termin d'introduire des donnes dans l'cran de slection, il ou elle peut lancer
un traitement supplmentaire en slectionnant "Excuter". Chaque saisie de donnes de l'cran de
slection est alors automatiquement place dans son objet de donnes correspondant du programme
et le runtime system ABAP reprend le contrle du traitement. Le runtime system lance alors un
traitement squentiel du bloc de traitement ABAP qui suit l'cran de slection.
(C) SAP AG
BC400
2-18
Programme ABAP
Objets de donnes
Lancement
du programme
Table de
base de
donnes
cran
Bloc de
traitement
ABAP
Temps
Le bloc de traitement ABAP possde un accs la base de donnes en mode lecture qui y a t
programm. Le programme transmet galement la base de donnes les informations indiquant
quel tableau de la base de donnes elle doit accder et quelle ligne du tableau elle doit lire.
(C) SAP AG
BC400
2-19
Programme ABAP
Objets de donnes
Lancement
du programme
Table de
base de
donnes
cran
Bloc de
traitement
ABAP
Temps
(C) SAP AG
BC400
2-20
Programme ABAP
Objets de donnes
Lancement
du programme
Table de
base de
donnes
cran
Bloc de
traitement
ABAP
Process
Before
Output
Temps
ce stade, le bloc de traitement ABAP lance le traitement de l'cran. Cette tape est souvent
exprime simplement par "Le programme appelle l'cran". Cependant, en ralit, chaque cran
possde son propre bloc de traitement qui est trait de manire squentielle avant que le runtime
system envoie l'cran au serveur de prsentation (Process Before Output). Ceci permet d'utiliser
l'cran de manire trs flexible.
(C) SAP AG
BC400
2-21
Programme ABAP
Objets de donnes
Lancement
du programme
Table de
base de
donnes
cran
Bloc de
traitement
ABAP
Process
Before
Output
Temps
Une fois le bloc de traitement de l'cran trait, le runtime system ABAP envoie l'cran au serveur de
prsentation. Pendant ce traitement, les donnes sont transportes vers les zones de l'cran depuis
une structure qui sert d'interface l'cran.
(C) SAP AG
BC400
2-22
Programme ABAP
Objets de donnes
Lancement
du programme
Table de
base de
donnes
cran
Bloc de
traitement
ABAP
Process
Before
Output
Process
After
Input
Temps
Ds que l'utilisateur excute une action utilisateur (en slectionnant par exemple Entre, une touche
de fonction, une fonction de menus ou un bouton de commande), le contrle est repris par le systme
de dure d'excution du serveur d'application. Les zones de dynpro sont transportes vers la structure
qui sert d'interface l'cran et un bloc de traitement spcial appartenant l'cran est lanc. Ce bloc
de traitement est toujours trait immdiatemment aprs une action utilisateur (Process After Input).
(C) SAP AG
BC400
2-23
Programme ABAP
Objets de donnes
Lancement
du programme
Table de
base de
donnes
cran
Bloc de
traitement
ABAP
Process
Before
Output
Process
After
Input
Temps
Une fois que le bloc de traitement "Process After Input" trait, le programme type continue de traiter
le bloc de traitement ABAP qui appelait en premier lieu l'cran.
(C) SAP AG
BC400
2-24
Synthse
Architecture
Architecture client
client // serveur
serveur
Programme
Programme type
type avec
avec affichage
affichage de
de donnes
donnes sous
sous forme
forme de
de liste
liste
Programme
Programme type
type avec
avec affichage
affichage de
de donnes
donnes sur
sur un
un cran
cran
Quelles
Quelles sont
sont les
les composantes
composantes du
du programme
programme ABAP
ABAP dveloppes
dveloppes
et
et dans
dans quels
quels chapitres
chapitres ??
SAP AG 1999
(C) SAP AG
BC400
2-25
Chapitre 1
Introduction
Chapitre 2
Chapitre 3
Chapitre 4
Chapitre 5
Chapitre 6
Chapitre 7
Chapitre 8
Chapitre 9
Chapitre 10 Interfaces
SAP AG 1999
(C) SAP AG
BC400
2-26
Chapitre 11
Chapitre 12
Chapitre 13
Exercices
Solutions
Annexes
SAP AG 1999
(C) SAP AG
BC400
2-27
Contenu :
l Repository et Workbench
l Analyse d'un programme existant
l Premier projet : adapter une copie d'un programme
existant pour remplir des besoins spcifiques
SAP AG 1999
(C) SAP AG
BC400
3-1
SAP AG 1999
(C) SAP AG
BC400
3-2
Repository
Repository et
et Workbench
Workbench
Analyser
Analyser un
un programme
programme existant
existant
Premier
Premier projet
projet :: adapter
adapter un
un programme
programme existant
existant
des
besoins
spcifiques
des besoins spcifiques
SAP AG 1999
(C) SAP AG
BC400
3-3
Repository R/3
Prsentation
Serveur
Niveau
Application
Serveur
Niveau
Base de
donnes
Programme ABAP
Indpendant du mandant
Dpendant du mandant
Repository
Tables de customizing
Tables applicatives
SAP AG 1999
La base de donnes, comme le Repository, contient des tables de customizing et des tables
applicatives qui sont gnralement dpendant mandant.
Le Repository contient tous les objets de dveloppement, par exemple, des programmes, des
dfinitions de tables de base de donnes et de types globaux. Les objets de dveloppement sont par
consquent aussi connus comme objets du Repository. Les objets du Repository ne sont pas
dpendant mandant.. Vous pouvez donc les visualiser et les utiliser pour tout mandant.
(C) SAP AG
BC400
3-4
Structure du Repository
par BC400-00
FI
HR
MM
SD
WM
MM
MM
MM
Cust.
Classes de dveloppement
Modules de fonction
Programmes
Tables
...
SAP AG 1999
Tous les objets de dveloppement crs avec les outils de dveloppement de ABAP Workbench sont
classs comme objets du repository et sont stocks de manire centrale dans le Repository R/3..
Le Repository R/3 est une partie spciale de la base de donnes centrale du systme SAP.
Le Repository s'organise selon l'application. Chaque application est encore subdivise de faon
logique en classes de dveloppement.
Les objets du Repository sont souvent composs de sous-objets qui sont eux-mmes des objets du
Repository.
Chaque objet du Repository doit tre affect une classe de dveloppement lors de sa cration.
Vous pouvez utiliser le systme d'information du Repository pour chercher des objets du
Repository selon plusieurs critres.
(C) SAP AG
BC400
3-5
+
+
+
Composantes inter-applications
Gestion comptable - Gnralits
Comptabilit financire
...
Comptabilit financire 'systme de base' FBAS
...
Gestion comptable grand livre
+ FI-GL
Consolidation
+ FI-LC
...
TR
Trsorerie
CO Contrle de gestion
...
Composantes applicatives
Systme d'information
Classe de dveloppement
Sous-arbre slectionn
SAP AG 1999
Vous pouvez visualiser la structure du Repository dans la hirarchie des applications. Vous pouvez
naviguer vers la hirarchie des applications partir de l'cran initial en utilisant Outils-> ABAP
Workbench -> Synthse-> Hirarchie des applications. (Transaction SE81).
Les composantes applicatives sont affiches selon une arborescence de la hirarchie des applications.
En dveloppant une composante, vous affichez toutes les classes de dveloppement qui sont
affectes cette composante.
Vous pouvez slectionner un sous-arbre et naviguer partir de la hirarchie des applications vers le
systme d'information du Repository. Le systme collecte ensuite toutes les classes de
dveloppement pour le sous-arbre slectionn et les transfre vers le systme d'information.
(C) SAP AG
BC400
3-6
Vous pouvez utiliser le systme d'information du Repository pour chercher des objets spcifiques du
Repository. Des critres de recherche sont disponibles pour les diffrents types d'objets du
Repository.
(C) SAP AG
BC400
3-7
Dbogueur
Screen Painter
Menu Painter
FI
HR
MM
SD
Object
Navigator
WM
MM
Cust.
Dictionnaire
ABAP
diteur ABAP
Gnrateur de
modules de
fonction
Gnrateur de classes
SAP AG 1999
ABAP Workbench contient diffrents outils pour le traitement d'objets du Repository. Ces outils
vous fournissent une large gamme d'assistance qui couvre l'ensemble du cycle de dveloppement du
logiciel.
Les outils les plus importants la cration et l'dition d'objets du Repository sont :
Menu Painter pour la conception d'interface utilisateur (barre de menus, barre d'outils standard,
barre d'outils d'application, allocation des touches de fonction)
(voir Interfaces)
(C) SAP AG
BC400
3-8
Fermer navigateur
Domaine pour l'affichage
d'une liste d'objets
sous la forme d'une
hirarchie
Clic du bouton
droit de la souris
Menu contextuel
Clic du bouton
droit de la souris
Menu contextuel
SAP AG 1999
Vous pouvez afficher la liste d'objets pour l'objet actuellement affich dans la fentre d'objets en
utilisant l'icne "Liste d'objets".
Vous pouvez sletionner des fonctions du menu contextuel dans les deux domaines d'cran. Vous
pouvez uniquement slectionner les fonctions qui correspondent l'affichage ou le traitement de
l'objet sur lequel le curseur est positionn. Cliquez sur le bouton droit de la souris pour afficher le
menu contextuel. (Cliquez sur le bouton de gauche si vous avez paramtr votre souris pour les
gauchers).
(C) SAP AG
BC400
3-9
classe de dveloppement
BC400
SAP AG 1999
Chaque classe de dveloppement peut contenir plusieurs types diffrents d'objets du Repository
:
programmes, groupes de fonctions, objets du dictionnaire ABAP, ...
Vous pouvez introduire le type de la liste d'objets et le nom d'objets dans la partie suprieure du
domaine de hirarchie. La liste d'objets est ensuite affiche dans le domaine de hirarchie.
Un double-clic sur un sous-objet de la liste d'objets affiche la liste d'objet pour l'objet slectionn
dans le domaine de hirarchie.
Un double-clic sur un objet qui n'a pas de liste d'objets affiche cet objet dans la fentre d'objets.
Vous pouvez utiliser les icnes pour naviguer en historique ou en hirarchie entre les listes d'objets.
Vous pouvez ajouter des listes d'objets que vous traitez frquemment dans vos favoris.
(C) SAP AG
BC400
3-10
diteur
diteur
diteur
Screen Painter
Navigation
: un double-clic sur un objet de programme existant
Navigation:
lance l'outil Workbench correspondant dans la fentre d'objets
et vous amne l'endroit correct de l'objet.
Navigation
forward
: : si un objet n'existe pas encore, vous crez
Navigation
forward
l'objet en double-cliquant sur son nom.
SAP AG 1999
Vous pouvez utiliser le menu contextuel pour afficher des objets partir d'une liste d'objets. Le
systme slectionne alors automatiquement l'outil adquat pour le traitement de l'objet slectionn.
Si l'objet de la liste d'objets que vous souhaitez n'est pas disponible dans le systme, vous pouvez le
crer en double-cliquant. Ce qui s'appelle navigation forward.
(C) SAP AG
BC400
3-11
Repository
Repository et
et Workbench
Workbench
Analyse
Analyse d'un
d'un programme
programme existant
existant
Dterminer
Dterminer le
le primtre
primtre fonctionnel
fonctionnel :: excuter
excuter un
un programme
programme
Analyse
Analyse statistique
statistique :: liste
liste d'objets
d'objets
Analyse
Analyse dynamique
dynamique :: mode
mode dbogage
dbogage
Analyse
Analyse du
du code
code source
source
Premier
Premier projet
projet :: adapter
adapter un
un programme
programme existant
existant
des
des conditions
conditions exceptionnelles
exceptionnelles
SAP AG 1999
(C) SAP AG
BC400
3-12
cran
Liste
Compagnie arienne
Compagnie
arienne
ID
AA American Airlines USD
Nom
Devise locale
Systme
F1
Statut
Info techniques
Nom du programme
Nom d'cran
(= numro de dynpro)
Nom de zone
Type de zone
SAP AG 1999
Quel que soit l'cran, vous pouvez accder aux informations sur le nom du programme et le numro
d'cran en utilisant Systme -> Statut. Un cran de slection standard a le numro d'cran 1000.
Vous pouvez accder aux informations concernant le nom de zone et le type de zone de n'importe
quelle zone de l'cran en utilisant F1 -> Info. techniques.
(C) SAP AG
BC400
3-13
SAPBC400WBT_GETTING_STARTED
Types d'objets de programme
Structures du dictionnaire
SBC400_CARRIER
Zones
PA_CAR
WA_BC400
vnements
START-OF-SELECTION
crans
0100
1000
SAP AG 1999
Vous pouvez afficher une synthse des objets de programme en utilisant la liste d'objets du
programme dans Object Navigator.
La hirarchie ne montre que les types d'objets pour lesquels des objets existent.
Vous pouvez afficher les objets dans la liste secondaire de Object Navigator en doucle-cliquant ou en
utilisant le menu contextuel.
(C) SAP AG
BC400
3-14
Dmarrage de programmes
SAPBC400WBT_GETTING_STARTED Clic sur le bouton droit
Types d'objets de programme
Excuter
Structures du dictionnaire
Traitement direct
Zones
PA_CAR
Dbogage
WA_BC400
vnements
START-OF-SELECTION
crans
0100
1000
Includes
SAP AG 1999
Si vous dmarrez un programme partir de la liste d'objets de Object Navigator en utilisant le menu
contextuel, vous avez deux options.
Choisir Excuter -> Direct pour excuter le programme directement.
Choisir Excuter -> Dbogage pour excuter le programme en mode dbogage.
(C) SAP AG
BC400
3-15
SAP
Dbogueur ABAP
chws
Point de surveillance
Zones
Programme principal
Pas
Code source
de
pas
ZJJ_KURS_000
ZJJ_FORMS
15 -
30
Variante
wa_sbc400-carrid
SY-SUBRC
SY-TABIX
Variante
SY-DBCNT
BIN (1) (000)
SAP AG 1999
ds0025 INS
Le dmarrage du programme en mode dbogage vous permet d'excuter le programme ligne par
ligne en utilisant l'icne "Pas pas". Vous pouvez afficher jusqu' huit variables. Afin de tracer les
valeurs des variables, entrez les noms de zone dans la zone de saisie de gauche. Vous pouvez
galement voir cette entre en double-cliquant sur le nom de zone du code affich.
(C) SAP AG
BC400
3-16
SAP
Dbogueur ABAP
chws
Point de surveillance
Zones
ZJJ_KURS_000
Programme principal
Continuer
ZJJ_FORMS
Code source
de
15 -
30
Variante
wa_sbc400-carrid
SY-SUBRC
SY-TABIX
Variante
SY-DBCNT
BIN (1) (000)
SAP AG 1999
ds0025 INS
Vous pouvez apposer un point d'arrt en double-cliquant en face d'une ligne de code source en mode
dbogage. Si vous cliquez sur l'icne "Continuer", le programme sera excut jusqu' l'endroit o le
point d'arrt suivant est dfini.
Vous pouvez trouver des informations relatives aux points d'arrt dans le chapitre Instructions et
dclarations de donnes ABAP.
(C) SAP AG
BC400
3-17
sbc400_carrier.
wa_sbc400 TYPE sbc400_carrier.
pa_car TYPE scarr-carrid.
START-OF-SELECTION
START-OF-SELECTION.
SELECT SINGLE * FROM scarr
INTO CORRESPONDING FIELDS OF wa_sbc400
WHERE carrid = pa_car.
IF sy-subrc = 0.
IF
MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier.
CALL SCREEN 100.
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
WRITE
WRITE
WRITE
ENDIF.
ENDIF
Mot-cl
ABAP
SAP AG 1999
(C) SAP AG
BC400
3-18
START-OF-SELECTION.
* Read data record from database table SCARR
Commentaire
Chane dinstructions
SAP AG 1999
Des instructions conscutives comportant des mots-cls initiaux identiques peuvent tre
condenses dans une seule instruction en chane.
Dans des instructions en chane, la partie initiale de l'instruction contenant le mot-cl doit tre
suivie par un deux-points.
Les lments individuels qui suivent le deux-points doivent toujours tre spars par des virgules.
Des espaces vides sont autoriss avant et aprs toute ponctuation (deux-points, virgules, points).
N'oubliez pas que le systme continue de considrer les parties individuelles d'une instruction en
chane comme des instructions compltes indpendantes l'une de l'autre.
(C) SAP AG
BC400
3-19
Dfinition de structure
(ou de zone structure)
Do
ub
Do
leub
Cl
lei
START-OF-SELECTION.
c
Cl
ic
scarr
SELECT SINGLE * FROM scarr
INTO CORRESPONDING FIELDS OF wa_sbc400
wa_sbc400
WHERE carrid = pa_car.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier.
Double-Clic
CALL SCREEN 100
100.
Dfinition d'cran
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. (dans Screen
Painter)
STOP
ENDIF.
SAP AG 1999
Vous pouvez afficher des informations dtailles sur de simples objets dans l'diteur en doublecliquant :
Un double-clic sur le nom de la table de base de donnes affiche la dfinition d'une table de base
de donnes en utilisant le dictionnaire ABAP dans la fentre d'objets de Object Navigator.
Un double-clic sur un nom de zone affiche la partie du code source du programme o l'objet de
donnes est dfini.
Un double-clic sur un numro d'cran affiche l'cran en utilisant le Screen Painter dans la fentre
d'objets de Object Navigator.
Utilisez la fonction Retour pour revenir sur l'affichage du code source du programme dans l'diteur.
Vous pouvez galement mettre un point d'arrt dans n'importe quelle ligne du code source dans
l'diteur. Ensuite, dmarrez le programme sans slectionner le mode dbogage. Le programme
s'excutera alors jusqu' l'endroit o le point d'arrt est dfini. cet endroit, le mode dbogage est
lanc.
(C) SAP AG
BC400
3-20
Documentation mots-cls
Aide
Aide de l'diteur
Synthse ABAP
WRITE
Terme ABAP
START-OF-SELECTION.
Nouveauts ABAP
SELECT SINGLE * FROM scarr
ABAP Docu and Examples
INTO CORRESPONDING FIELDS OF wa_sbc400
WHERE carrid = pa_car.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier.
CALL SCREEN 100.
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
WRITE
WRITE: / wa_sbc400-carrid COLOR COL_KEY,
wa_sbc400-carrname,
wa_sbc400-currcode.
F1
ENDIF.
Documentation mots-cls
SAP AG 1999
Plusieurs manires de naviguer dans la documentation mots-cls existent pour une instruction ABAP
:
Pressez F1 sur le mot-cl et affichez la documentation relative l'instruction sur laquelle le
curseur est positionn.
L'icne Information affiche une bote de dialogue qui vous offre plusieurs vues de la
documentation mots-cls.
(C) SAP AG
BC400
3-21
sbc400_carrier.
wa_sbc400 TYPE sbc400_carrier.
pa_car TYPE scarr-carrid.
START-OF-SELECTION.
SELECT SINGLE * FROM scarr
INTO CORRESPONDING FIELDS OF wa_sbc400
WHERE carrid = pa_car.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier.
CALL SCREEN 100.
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
WRITE: / wa_sbc400-carrid COLOR COL_KEY,
wa_sbc400-carrname,
wa_sbc400-currcode.
ENDIF.
SAP AG 1999
Si vous dsirez des informations plus prcises sur des parties du code source, vous pouvez analyser
le code source. Les diapositives suivantes expliquent les instructions les plus importantes du
programme type.
(C) SAP AG
BC400
3-22
sbc400_carrier.
wa_sbc400 TYPE sbc400_carrier.
pa_car TYPE scarr-carrid.
sbc400_carrier
Objets de donnes
wa_sbc400
pa_car
SAP AG 1999
Il existe plusieurs instructions que vous pouvez utiliser pour dfinir des objets de donnes.
L'instruction TABLES se rfre toujours un type global d'une structure plate qui est dfinie dans
le dictionnaire ABAP. Le type de structure pour l'objet de donnes du programme est tir du
dictionnaire. Le nom de l'objet de donnes est identique au nom du type de structure. Ils sont
gnralement utiliss comme un interface l'cran.
L'instruction DATA est gnralement utilise pour dfinir des objets de donnes locaux. Le type
d'objets de donnes est spcifi en utilisant l'option TYPE.
L'instruction PARAMETERS dfinit non seulement un objet de donnes lmentaires, mais aussi
une zone de saisie sur l'cran de slection standard qui est trait lors du lancement du programme.
Lorsque vous activez un programme, une version de chargement interne est gnre. Un cran de
slection est gnr partir de l'instruction PARAMETERS. Lorsque le programme dmarre, les
zones de mmoire deviennent disponibles pour les objets de donnes.
Vous trouverez des informations complmentaires sur les objets de donnes dans le chapitre intitul
Instructions et dclarations de donnes ABAP, ou dans la documentation mots-cls.
(C) SAP AG
BC400
3-23
Programme ABAP
Objets de donnes
Table de
base de
donnes
SCARR
pa_car
pa_car
wa_sbc400
wa_sbc400
Bloc de
traitement
ABAP
SAP AG 1999
L'instruction SELECT s'assure que les donnes se lisent partir de la base de donnes. Afin de lire
un enregistrement partir d'une table de base de donnes, les informations suivantes doivent tre
transfres dans la base de donnes :
partir de quelle table de base de donnes se lisent les donnes ? (clause FROM)
Combien de lignes se lisent ? L'option SINGLE indique qu'une seule ligne se lit.
Quelle ligne se lit ? La clause WHERE indique quelles colonnes de la table de base de donnes ont
quelles valeurs. Pour une instruction SELECT SINGLE, la condition doit tre formule de sorte
qu'une ligne soit spcifie sans aucune ambiguit.
(C) SAP AG
BC400
3-24
Programme ABAP
Objets de donnes
Table de
base de
donnes
SCARR
pa_car
pa_car
wa_sbc400
wa_sbc400
Bloc de
traitement
ABAP
SAP AG 1999
Les donnes fournies par la base de donnes sont transformes en objets de donnes locales. La
clause INTO spcifie les objets de donnes dans lesquels vous souhaitez copier les donnes. Dans cet
exemple, les donnes sont copies dans les composantes du mme nom dans la structure
wa_sbc400.
(C) SAP AG
BC400
3-25
Programme ABAP
Objets de donnes
sbc400_carrier
Bloc de traitement ABAP
Process
Before
Output
Process
After
Input
Temps
Vous pouvez dfinir des zones de saisie sur un cran qui se rfrent au dictionnaire ABAP. Les
crans excutent automatiquement des contrles de cohrence sur toutes les saisies et fournissent
tous les dialogues d'erreur qui s'avreraient ncessaires. Par consquent, les crans ne sont pas que
des simples modles pour introduire des donnes ; ils sont en fait des programmes dynamiques
(dynpros).
L'instruction TABLES dclare un objet de structure qui sert d'interface l'cran. Toutes les donnes
de cette structure s'insrent automatiquement dans leurs zones d'cran correspondantes lorsque
l'cran est appel par l'instruction CALL SCREEN. Les donnes introduites par l'utilisateur l'cran
sont transfres vers leurs zones correspondantes du programme aprs chaque action utilisateur
(aprs avoir choisi Saisir, par exemple).
(C) SAP AG
BC400
3-26
Cration de listes
START-OF-SELECTION.
SELECT SINGLE * FROM scarr
INTO CORRESPONDING FIELDS OF wa_sbc400
WHERE carrid = pa_car.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier.
CALL SCREEN 100.
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
WRITE
WRITE: / wa_sbc400-carrid COLOR COL_KEY,
wa_sbc400-carrname,
wa_sbc400-currcode.
ENDIF.
SAP AG 1999
ABAP contient des instructions (WRITE, SKIP, ULINE) qui vous permettent de crer une liste.
Les instructions WRITE affichent le contenu de zone, format selon leur type de donnes, sous forme
de liste.
Des instructions WRITE conscutives affichent des donnes dans la mme ligne d'dition. Les
messages continuent sur la ligne suivante lorsque la premire est remplie.
Vous pouvez placer une information de positionnement devant chaque information diter. Ceci
vous permet de dterminer des passages la page/ligne suivante (/), des longueurs d'dition (l) et
des dbuts de colonnes (p). Vous trouverez des informations complmentaires sur les options
d'dition dans la documentation mots-cls sous WRITE.
(C) SAP AG
BC400
3-27
Repository
Repository et
et Workbench
Workbench
Analyser
Analyser un
un programme
programme existant
existant
Premier
Premier projet
projet :: adapter
adapter un
un programme
programme existant
existant
des
besoins
spcifiques
des besoins spcifiques
SAP AG 1999
(C) SAP AG
BC400
3-28
Premier projet :
Programme source
Compagnie arienne
Compagnie
arienne
LH
ID
LH
Nom
LUFTHANSA
LH Lufthansa DEM
Copie adapte :
Compagnie arienne
Compagnie
arienne
LH
ID
LH
Nom
LUFTHANSA
LH Lufthansa DEM
WALTERS
WALTERS
SAP AG 1999
Le premier projet est d'tendre un programme existant. Comme aucune extension n'est autorise dans
le programme et que les modifications sont viter, la premire tape est de copier le programme et
ensuite de le modifier.
Vous devez allouer un projet du systme les modifications aux programmes existants, exactement
comme vous le feriez pour crer des copies de programmes ou des nouveaux programmes. Par
consquent, les diapositives suivantes s'occupent d'abord de savoir comment un projet est reprsent
dans le systme R/3.
(C) SAP AG
BC400
3-29
Ordre de
modification
FI
HR
MM
FI
SD
HR
MM
WM
MM
SD
Cust.
WM
MM
Cust.
Systme de dveloppement
Systme de production
SAP AG 1999
Les projets sont toujours implments dans un systme de dveloppement et transports ensuite vers
le systme suivant. Un critre dcisif pour la combinaison de projets est d'aillleurs de savoir quels
objets du Repository doivent tre transports ensemble en raison de leurs dpendances. Vous
trouverez des informations complmentaires sur l'organisation d'un projet dans le chapitre intitul
Logistique logicielle et adaption logicielle.
Les objets du Repository sont automatiquement lis aux systmes de correction et de transport
lorsqu'ils sont affects une classe de dveloppement transportable (pas $TMP).
Une fois le dveloppement termin, les objets du Repository sont transports dans les systmes de
test ou systmes de production au moyen de certains chemins prdfinis.
L'outil Workbench Organizer (WBO) de ABAP Workbench organise toutes les tches de
dveloppement appartenant aux objets du Repository.
(C) SAP AG
BC400
3-30
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Chef de projet :
CARSON
quipe :
CARSON
BC400-00
BC400-01
BC400-02
BC400-03
...
Activits des employs (ici : exercices)
Fin du dveloppement
SAP AG 1999
(C) SAP AG
BC400
3-31
Chef de projet :
CARSON
quipe :
CARSON
Chef de projet
Modifiable
Transportable
BC400-00
Numro de la modification
BC400-01
BC400-02
IT3K900051 CARSON
IT3K900052 CARSON
IT3K900053 BC400-00
Source de rapport
ZBC400_00_FLIGHTLIST
BC400-03
...
Objets du Repository
modifi ou cr
par BC400-00
Programme ABAP
IT3K900054 BC400-01
IT3K900055 BC400-02
IT3K900056 BC400-03
IT3K900057
SAP AG 1999
Au dbut d'un projet de dveloppement, le chef de projet doit crr un ordre de modification. Le
chef de projet affecte tous les membres d'quipe du projet l'ordre de modification. Le Workbench
Organizer affecte un numro de projet l'ordre de modification (<sid>K9<nnnnn>. Exemple :
C11K900001). <sid>est le numro de systme.
Ensuite, le Workbench Organizer (WBO) cre une tche pour chaque employ affect l'ordre de
modification. Dornavant, lorsqu'un employ alloue un objet du Repository l'ordre de modification,
l'objet du Repository sera automatiquement rpertori dans la tche de l'employ. Ds lors, tous les
objets du Repository sur lesquels un employ travaille pendant un programme de dveloppement
sont collects dans son dossier tche.
(C) SAP AG
BC400
3-32
...
Chef de projet :
CARSON
Jeudi
Vendredi
Contrle de qualit de
l'ensemble du projet
Documentation du projet
Fin du
dveloppement
quipe :
CARSON
BC400-00
BC400-01
BC400-02
BC400-03
...Contrle de qualit de tout le
Repository par BC400-00
Documentation de la tche complte
SAP AG 1999
Lorsque le projet est termin, le chef de projet vrifie la cohrence de l'ordre et le chef de projet
effectue l'ordre de modification. Les blocages des objets de l'ordre sont librs.
Les objets du Repository sont ensuite exports vers le rpertoire central des transports.
Les objets ne sont pas imports automatiquement dans le systme cible. Par contre, l'administrateur
systme utilise le programme de contrle du transport tp au niveau du systme d'exploitation.
Ensuite, le dveloppeur vrifie le protocole d'importation.
(C) SAP AG
BC400
3-33
Copie de programmes
Crer
Modifier
Afficher
Contrler
Activer
Excuter
Copier
...
Info techniques
Programme source SAPBC400WBT_GETTING_STARTED
Programme cible
ZBC400_00_GETTING_STARTED
Copier
Infos techniques
!
!
!
Source
lments de texte
Documentation
Variantes
Interfaces
crans
Includes
Copier
Ordres (Organizer)
SAP AG 1999
Les noms de programme commenant par Y ou Z, ou par SAPMZ ou SAPMY, sont rservs aux
dveloppements clients. Vous pouvez galement avoir un espace nom rserv aux dveloppements
clients. Vous trouverez des informations complmentaires sur les espaces noms clients pour
plusieurs objets du Repository dans la bibliothque SAP sous Composantes de base -> Sytme de
transport et de modification (BC-CTS) -> Espaces noms BC et conventions de noms.
Vous pouvez copier un programme partir de la liste d'objets d'une classe de dveloppement ou un
programme. cette fin, placez simplement votre curseur sur le nom du programme que vous dsirez
copier et cliquez sur le bouton droit de la souris. Choisissez Copier. Le systme affiche une bote de
dialogue dans laquelle vous pouvez introduire un nouveau nom pour votre copie. La confirmation de
vos entres en utilisant le bouton de commande adquat de la barrre d'outils d'application permet au
systme d'afficher une bote de dialogue dans laquelle vous pouvez slectionner les sous-objets que
vous dsirez copier avec le programme. Donc, vous devez dcider quels sous-objets vous dsirez
copier avec le programme AVANT de commencer la procdure de copie. Aprs la confirmation de
ces entres, le systme affiche encore une autre bote de dialogue dans laquelle vous pouvez
sauvegarder des objets du Repository.
Si vous copiez un programme qui contient des includes, une autre bote de dialogue est affiche
avant celle-ci, dans laquelle vous pouvez choisir quels includes vous dsirez copier et leur attribuer
de nouveaux noms.
(C) SAP AG
BC400
3-34
Sauvegarde de programmes
Attributs
Classe de dveloppement ZBC400_00
Personne responsable
BC400-00
Systme original
IT3
Langue originale
DE
Objet local
SAP AG 1999
(C) SAP AG
BC400
3-35
Double-clic
sur le numro
de l'ordre
Transportable
IT3K900051 CARSON
IT3K900052 CARSON
IT3K900053 BC400-00
IT3K900054 BC400-01
SAP AG 1999
Tous les objets du Repository qui sont crs ou modifis doivent tre affects l'ordre de
modification de leur projet correspondant. Pour ce cours de formation, le formateur a cr un ordre
de modification pour le projet "Exercices pour les participants du cours BC400 du 8 mai 2000".
Chaque groupe a sa tche dans cet ordre de modification Affectez tous vos objets du Repository
(classes de dveloppement, programmes, etc.) cet ordre de modification.
Vous pouvez afficher tous les ordres de modifications dans lesquels vous avez une tche en utilisant
le bouton de commande "Ordres propres".
Pour des informations complmentaires sur l'organisation du projet d'un point de vue de gestion de
projet (y compris crer des tches), rfrez-vous au chapitre sur la logistique logicielle.
(C) SAP AG
BC400
3-36
Programme
...
Attributs
Modifier la langue
originale
en langue de travail
SAP AG 1999
Le titre modifi apparat sous forme de dsignation ct du nom du programme dans la liste
d'objets d'Object Navigator.
(C) SAP AG
BC400
3-37
START-OF-SELECTION.
SELECT SINGLE * FROM scarr
INTO CORRESPONDING FIELDS OF wa_sbc400
WHERE carrid = pa_car.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier.
CALL SCREEN 100.
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
WRITE: / wa_sbc400-carrid COLOR COL_KEY,
wa_sbc400-carrname,
wa_sbc400-currcode.
ULINE.
WRITE wa_sbc400-uname.
ENDIF.
Contrle de syntaxe
SAP AG 1999
Pour adapter la liste, ajoutez une instruction ULINE et une instruction WRITE. Vous trouverez des
informations complmentaires sur ces instructions dans la documentation mots-cls.
Vous pouvez excuter un contrle de syntaxe aprs avoir modifi le code source.
(C) SAP AG
BC400
3-38
Modifier
Mise en page
Compagnie arienne
ID
sbc400_carrier
Nom
Devise locale
Zone de saisie et
descripteur de zone
Utilisateur
SAP AG 1999
Vous pouvez modifier un cran en utilisant le Screen Painter. Pour modifier la mise en page, utilisez
d'abord le menu contextuel de l'cran dans la liste d'objets pour naviguer vers le Screen Painter et
ensuite l'icne "Mise en page" pour naviguer vers l'diteur graphique d'agencement d'cran.
Celui-ci contient une icne pour crer des zones de saisie/sortie se rfrant aux types globaux. Entrez
un type de structure qui est dfini dans le dictionnaire ABAP. Toutes les zones de ce type de
structure sont affiches pour slection. Vous ne pouvez pas slectionner les zones qui sont dj
contenues dans l'cran. Ceci est indiqu par un petit cadenas ct de la zone.
L'outil d'affichage et de gestion des types globaux est appel le dictionnaire ABAP. Vous pouvez
trouver des informations complmentaires sur les types globaux dans le chapitre Instructions et
dclarations de donnes ABAP.
(C) SAP AG
BC400
3-39
Sauvegarde et activation
l Contrle
Contrle de syntaxe : un bouton de commande vous permet
d'effectuer un contrle de la syntaxe.
l Sauvegarde de programmes : enregistrement temporaire : le
code est enregistr dans le Repository et reste visible dans
tout le systme. Au moment de l'excution, la version active
est lance.
l Activation du programme : le programme est visible dans tout
le systme aprs l'activation et vous pouvez l'excuter
ultrieurement.
l Contrle
Contrle du programme tendu : implique des vrifications
plus compltes et peut uniquement tre excut avec des
programmes dj activs.
SAP AG 1999
Ds que vous avez sauvegard le programme, ce code source est visible dans tout le systme. Vous
pouvez utiliser le menu contextuel pour excuter un contrle de syntaxe qui englobe toutes les
composantes du programme. Le lancement du programme partir du menu contextuel de la liste
d'objets s'assure que la version active est lance.
Ds que vous avez activ le programme, la version active peut tre excute dans tout le systme.
Vous pouvez excuter un contrle de programme tendu pour des programmes activs en utilisant le
menu contextuel ou l'option du menu. Ces contrles sont considrablement plus tendus que le
contrle de syntaxe.
(C) SAP AG
BC400
3-40
SAP AG 1999
(C) SAP AG
BC400
3-41
Exercices
(C) SAP AG
BC400
3-42
(C) SAP AG
BC400
3-43
SAPBC400WBT_GETTING_STARTED
1-1
1-2
(C) SAP AG
BC400
3-44
1-2-5 Quels sont les noms des zones de saisie sur lcran de slection et des zones
de sortie sur lcran ? Pour trouver les noms, utilisez le bouton daide F1
pour chaque zone et slectionnez Infos techniques.
1-3
1-4
(C) SAP AG
BC400
3-45
Programme :
Modle :
ZBC400_##_GETTING_STARTED
SAPBC400WBT_GETTING_STARTED
Solution modle :
SAPBC400WBS_GETTING_STARTED
2-1
2-2
(C) SAP AG
BC400
3-46
2-3
(C) SAP AG
BC400
3-47
Solutions
Chapitre : ABAP Workbench
Sujet : Analyser un programme
1-2
1-3
1-4
1-4-1 La liste est structure en utilisant linstruction WRITE. Le symbole / plac
aprs linstruction WRITE cre un renvoi la ligne automatique.
1-4-2 Linstruction SELECT est responsable du dialogue base de donnes. Les
donnes se lisent partir de la table de base de donnes SCARR. Le nom de
la table de base de donnes est spcifi dans la clause FROM de linstruction
SELECT. La table de base de donnes a les zones MANDT, CARRID,
CARRNAME, CURRCODE et URL.
1-4-3 Les informations sur la ligne lire se trouvent dans lobjet de donnes
pa_car. Il se trouve dans la clause WHERE de linstruction SELECT. La
(C) SAP AG
BC400
3-48
(C) SAP AG
BC400
3-49
*&--------------------------------------------------------------*
*& Report
SAPBC400WBS_GETTING_STARTED
*&--------------------------------------------------------------*
REPORT
sapbc400wbs_getting_started
TABLES: sbc400_carrier.
DATA: wa_sbc400 TYPE sbc400_carrier.
PARAMETERS: pa_car TYPE scarr-carrid.
START-OF-SELECTION
* Slectionner toutes les zones dun enregistrement de donnes depuis
la table de base de donnes SCARR.
SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400
WHERE carrid = pa_car.
* Au moins un enregistrement peut tre slectionn.
IF sy-subrc = 0.
* Copier des zones avec les noms correspondants.
MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier.
CALL SCREEN 100.
* Recopier les zones avec les noms correspondants.
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
BC400
3-50
SKIP.
* Ajouter une ligne horizontale.
ULINE.
* diter le nom de l'utilisateur, l'heure et la date sur la liste
WRITE: / wa_sbc400-uname,
wa_sbc400-uzeit,
wa_sbc400-datum.
ENDIF.
Dynpro 100:
Nouvelles zones sur dynpro 100 : SBC400_CARRIER-UNAME
SBC400_CARRIER-UZEIT
SBC400_CARRIER-DATUM
(C) SAP AG
BC400
3-51
Contenu :
l Types
l Objets de donnes
n
Structures
Tables internes
SAP AG 1999
(C) SAP AG
BC400
4-1
(C) SAP AG
BC400
4-2
Programme
ABAP
Code
Source
ABAP
Runtime
system
ABAP
SAP AG 1999
Le contenu de ce chapitre se concentre sur la dfinition des objets de donnes et des instructions
ABAP dtermines.
(C) SAP AG
BC400
4-3
Synthse : types
Types
Types
Objets
es
donn
Objets de
de donnes
donnes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
SAP AG 1999
(C) SAP AG
BC400
4-4
Objets de donnes
Programme
ABAP
Code
Source
ABAP
Interface
Sousprogrammes
Paramtres d'interface
pour des fonctions/mthodes
ce
r fa de
e
t
e
In
ul ion
d
t
Mo onc
f
Fonction
fonctions
SAP AG 1999
(C) SAP AG
BC400
4-5
Types locaux :
Attributs techniques uniquement
Programme
ABAP
Code
Source
ABAP
Interface
Sousprogramme
SAP AG 1999
Vous trouverez des informations complmentaires sur le stockage central des informations
smantiques dans ce chapitre.
(C) SAP AG
BC400
4-6
Compagnie
arienne
F1
Aide
Identificateur de la compagnie arienne
Nom abrg
Aide d'applications
Info techniques
SAP AG 1999
ID
Compagnie arienne
AA
AF
BA
DL
LH
NU
QF
SA
SQ
UA
American Airlines
Air France
British Airways
Delta Airlines
Lufthansa
Japan Transocean Air.
Quantas Airways
South African Air.
Singapore Airlines
United Airlines
Les types lmentaires du dictionnaire sont appels lments de donnes. Ils contiennent des
informations aussi bien smantiques que techniques (type technique, longueur, nombre de
dcimales).
(C) SAP AG
BC400
4-7
Do
ub
le -
Cl
ic
F1
Aide
Infos techniques
lment de donnes
S_CARR_ID
DoZones
ub
le Cli
Infos techniques
S_CARR_ID
types de zone
c
CARRID S_CARR_ID
CONNID
...
Do
u
SBC400_CARRIER
CARRID
bl
eCl
ic
Donnes de zone
Structure
Nom de zone
lment de
donnes
Type de structure
SBC400FOCC
SAP AG 1999
Vous trouverez des informations complmentaires sur les types lmentaires du dictionnaire ABAP .
pour les zones d'cran : utilisez F1 -> Infos techniques ou double-cliquez sur la zone de sortie
suivant le label de l'lment de donnes.
pour les types locaux de programmes ou des objets de donnes : double-cliquez sur la zone.
Les types techniques et les domaines techniques peuvent tre directement affects aux lments de
donnes. Si vous souhaitez des informations complmentaires sur d'autres lments de donnes se
rfrant au mme domaine, vous pouvez naviguer jusqu'au domaine partir de l'lment de donnes
en double-cliquant sur son nom et en excutant ensuite la fonction Cas d'emploi.
(C) SAP AG
BC400
4-8
Autres objets
Zones
Programmation
Objets ABAP
Environnement
Descripteur de zone
Type de donnes
Longueur
Classe de
dveloppement
SAP AG 1999
Vous pouvez rechercher des lments de donnes en utilisant la hirarchie des applications et le
systme d'information du Repository.
Dans la hirarchie des applications, slectionner les composantes scanner.
Allez dans le systme d'information.
Choisissez Dictionnaire ABAP --> Objets de base --> lments de donnes et rduisez la
recherche.
Si vous allez dans le systme d'information partir de la hirarchie des applications, les classes de
dveloppement des composantes applicatives slectionnes sont automatiquement slectionnes.
Vous pouvez galement aller directement dans le systme d'information. Si vous ne slectionnez pas
de classe de dveloppement, l'ensemble du repository est scann.
(C) SAP AG
BC400
4-9
F1
<type>
TYPES <user_defined_type> TYPE <type>.
Types:
Do
u
Aide la dclaration
de types de donnes locaux
F1
TYPE
DATA
DATA:<data_object>
TYPE <type>
<type>.Double-Clic
F1
bl
eCl
ic
Navigation vers des
dclarations de types de
donnes locaux
ou des dclarations de
types de donnes du
dictionnaire ABAP
Documentation mots-cls
pour types intgrs
SAP AG 1999
Lorsque vous dfinissez des types ou des variables simples, vous pouvez vous rfrer un type
prdfini. Pour des informations complmentaires, rfrez-vous la documentation mots-cls sous
TYPES ou DONNES.
C
Caractre
N Texte numrique
D
Date (YYYYMMDD)
Heure (HHMMSS)
Octet (heXadecimal)
Integer
Nombre pack
Virgule flottante
(C) SAP AG
BC400
4-10
Types
Types
Objets
es
donn
Objets de
de donnes
donnes
Objets
es lmentaires
mentaires
donn
l
Objets de
de donnes
donnes
lmentaires
Structures
Structures
Tables
Tables internes
internes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
SAP AG 1999
(C) SAP AG
BC400
4-11
<user-defined-type>.
DATA: <varname> TYPE
<ABAP-dictionary-type>.
SAP AG 1999
Affectez des types d'objets de donnes en rfrant votre objet soit un type ABAP intgr, soit un
type dfini par l'utilisateur, ou encore un objet du dictionnaire ABAP.
Si une variable v2 se rfre une variable v1 en utilisant l'option LIKE ( DATA v2 LIKE v1.
), v2 hrite alors son type de v1.
(C) SAP AG
BC400
4-12
Types
Types
Objets
es
donn
Objets de
de donnes
donnes
Objets
es lmentaires
mentaires
donn
l
Objets de
de donnes
donnes
lmentaires
Structures
Structures
Tables
Tables internes
internes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
SAP AG 1999
(C) SAP AG
BC400
4-13
Crer
Modifier
Afficher
Cas d'emploi
SAP AG 1999
Les objets de donnes lmentaires apparaissent dans la liste d'objets du programme sous le noeud
"Zones".
partir de la liste d'objets, vous pouvez utiliser le bouton droit de la souris pour naviguer dans la
partie du code source o l'objet de donnes est dfini.
Vous pouvez utiliser la fonction Cas d'emploi pour afficher toutes les lignes du code source o
l'objet de donnes est utilis.
(C) SAP AG
BC400
4-14
Programme
ABAP
carrid
counter
s_carr_id
DATA: carrid
counter
TYPE s_carr_id,
TYPE I.
SAP AG 1999
Pour des raisons de compatibilit, il est encore possible de construire des objets de donnes dans
l'instruction DATA sans devoir d'abord dfinir le type localement dans le programme avec une
instruction TYPES. Outre les informations du type, des valeurs par dfaut sont galement dfinies
pour les types gnriques suivants :
Avec des types de donnes P,N,C, et X, vous pouvez indiquer une longueur (en octets) entre
parenthses aprs le nom du type. Si aucune longueur n'est indique, la longueur par dfaut de ce
type de donnes est utilise. Vous pouvez trouver les longueurs standard dans la documentation
mots-cls pour TYPES et DATA.
Avec un type de donnes P, vous pouvez utiliser l'option DECIMALS pour dterminer le nombre
de dcimales qui devrait tre utilis (jusqu' un maximum de 14). Si cette option manque, le
nombre de dcimales est mis zro.
Si aucun type n'est indiqu, la zone deviendra automatiquement une zone de type C.
(C) SAP AG
BC400
4-15
Littraux et constantes
CONSTANTS: PI
TYPE P DECIMALS 4 VALUE '3.1415',
BOSS(4) TYPE C VALUE 'Hugo'.
Littral numrique
715, -431
Nombre entier (un signe moins est
plac en face de nombres ngatifs)
Littral alphanumrique
'abc', '2.17', '1.213E15', '0FFF', 'A''B'
Squence de caractres termine par
des guillemets simples, 255 caractres max.
SAP AG 1999
Vous dfinissez les constantes en utilisant le mot-cl ABAP CONSTANTS. L'option VALUE est
requise pour les constantes. Elle dfinit leur valeur.
Les nombres entiers (prcds d'un signe moins s'ils sont ngatifs) sont stocks comme des littraux
numriques soit de type I (jusqu' neuf chiffres compris) ou de type P (dix chiffres ou plus).
Tous les autres littraux (caractre, nombres avec dcimales, nombres de virgule flottante) sont
stocks comme des littraux alphanumriques de type de donnes C. Si un littral est affect une
variable qui n'est pas de type C, une conversion de type est alors excute. Les rgles de conversion
sont dcrites dans la documentation mots-cls sous MOVE.
Si vous souhaitez ajouter des guillemets ( " ) dans un littral alphanumrique, vous devez les
introduire deux fois.
Vous pouvez crer des littraux alphanumriques traduisibles, ou symboles de texte, pour tous les
programmes ABAP. Utilisez la bote de dialogue Types d'objets de programme pour obtenir l'cran
de gestion des symboles de texte.
(C) SAP AG
BC400
4-16
QF
LH
0000
gd_carrid2 = gd_carrid1.
QF
QF
0000
ADD 1 TO counter.
QF
QF
0001
CLEAR
CLEAR: gd_carrid1,
gd_carrid2,
counter.
0000
Programme ABAP
Lorsqu'un programme est lanc, le contexte du programme est charg dans l'aire de stockage du
serveur d'application et rendu disponible tous les objets de donnes.
Chaque zone lmentaire est considre comme standard quand elle possde une valeur intiale
propre son type. Vous pouvez paramtrer vous-mme une valeur de dpart pour une zone
lmentaire en utilisant l'option VALUE. Une fois l'option VALUE paramtre, vous devez seulement
spcifier un objet de donnes fixe.
Vous pouvez copier le contenu de zone d'un objet de donnes vers un autre objet de donnes avec
l'instruction MOVE. Si les deux objets de donnes ont des types diffrents, le type est
automatiquement converti si une rgle de conversion existe. Si vous souhaitez copier le contenu de
zone d'une variable var1 vers une seconde variable var2, vous avez le choix entre deux variantes
de syntaxe :
MOVE var1 TO var2.
var2 = var1.
Vous trouverez des informations dtailles sur la copie et les rgles de conversion dans la
documentation mots-cls sous MOVEou dans le cours de formation BC402.
L'instruction CLEAR rinitialise le contenu de zone d'une variable par la valeur initiale du type
dtermin. Vous trouverez des informations dtailles sur les valeurs initiales d'un type dtermin
dans la documentation mots-cls sous CLEAR.
(C) SAP AG
BC400
4-17
Dclarations de donnes :
DATA: gd_max TYPE sbc400focc-seatsocc,
gd_occ TYPE sbc400focc-seatsmax,
gd_percentage TYPE sbc400focc-percentage.
COMPUTE
Programme ABAP
SAP AG 1999
Vous pouvez faire prcder les calculs de l'instruction COMPUTE. Cette instruction est facultative.
Vous pouvez utiliser une des deux variantes de syntaxe suivantes :
COMPUTE v_percentage = v_occupancy * 100 / v_maximum.
v_percentage = v_occupancy * 100 / v_maximum.
Vous trouverez des informations dtailles sur les oprations et les fonctions disponibles dans la
documentation mots-cls sous COMPUTE.
(C) SAP AG
BC400
4-18
WHEN OTHERS.
Instructions
IF <logical expression>.
ENDCASE.
Instructions
ELSE.
Instructions
ENDIF.
SAP AG 1999
IF ... ENDIF:
les expressions logiques possibles sont dcrites dans la documentation mots-cls sous IF
les instructions ELSE et ELSEIF sont facultatives
si l'expression logique est vraie, la squence d'instructions suivante s'excute
si l'expression logique n'est pas vraie, la section ELSE ou ELSEIF est traite. S'il n'y a aucune
instruction ELSE ni d'instruction complmentaire ELSEIF, le programme continue aprs
l'instruction ENDIF
vous pouvez inclure autant d'instructions ELSEIF que vous voulez entre IF et ENDIF. Une seule
squence d'instructions sera excute.
(C) SAP AG
BC400
4-19
SAP
Dbogueur ABAP
chws
Point de surveillance
Zones
ZJJ_KURS_000
Programme principal
Pas
pas
Code source
de ZJJ_FORMS
15 -
30
pa_car
1 - 4
Contenus de zones
LH
SAP AG 1999
Vous pouvez retrouver le contenu de jusqu' huit variables en mode dbogage si vous indiquez les
noms de zone sur le ct gauche ou si vous crez l'entre par un double-clic sur un nom de zone.
Vous pouvez modifier les valeurs de zone au moment de l'excution en crasant la valeur actuelle et
en choisissant l'icne "Modifier".
(C) SAP AG
BC400
4-20
Nom de zone
Oprateur
OU
ET
SAP AG 1999
Pour la version 4.6, vous tes autoris paramtrer jusqu' dix points de surveillance et les relier en
utilisant les oprateurs logiques AND et OR. Les points de surveillance sont des points d'arrt attachs
la zone. Vous pouvez crer les types suivants de points de surveillance :
Variable <oprateur> valeur : le systme arrte le traitement si l'expression logique est vraie. Le
tmoin "zone de comparaison" n'est pas slectionn et la valeur est insre dans "Comp.
zone/valeur".
Variable 1 <oprateur> variable 2 : le systme arrte le traitement si l'expression logique est vraie.
Le tmoin "zone de comparaison" est slectionn et la variable 2 est insre dans "Comp.
zone/valeur".
Variable : le systme arrte le traitement chaque fois que la valeur de la variable change.
(C) SAP AG
BC400
4-21
Types
Types
Objets
es
donn
Objets de
de donnes
donnes
Objets
es lmentaires
mentaires
donn
l
Objets de
de donnes
donnes
lmentaires
Structures
Structures
Tables
Tables internes
internes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
SAP AG 1999
(C) SAP AG
BC400
4-22
Programme
ABAP
SAP AG 1999
Vous pouvez dfinir des objets de donnes structurs (galement appls structures) dans ABAP.
Ceci vous permet de combiner des variables correspondantes dans un seul objet. Les structures
peuvent s'imbriquer. Ceci signifie que d'autres structures ou mme des tables peuvent devenir des
sous-objets de votre structure originale.
(C) SAP AG
BC400
4-23
wa_scarr
mandt carrid carrname
currcode
Programme
ABAP
SAP AG 1999
(C) SAP AG
BC400
4-24
MANDT
401
CARRID
LH
CONNID
0400
CARRID
LH
FLDATE
20000513
...
...
CONNID
FLDATE
0400
20000513
SEATSMAX
280
SEATSOCC ...
100
... wa_sflight
SEATSMAX
280
SEATSOCC POURCENTAGE
100
wa_sbc400focc
SAP AG 1999
Le systme cherche toutes les zones dans <rec1> dont les noms apparaissent galement dans
<rec2> et transporte la zone
<rec1>-<field name> vers <rec2>-<field name> quand les noms sont identiques.
Toutes les autres zones restent inchanges.
(C) SAP AG
BC400
4-25
Dbogueur ABAP
chws
Watchpoint
Zones
Programme principal ZJJ_KURS_000
ZJJ_FORMS
Code source de
15 -
30
SAP AG 1999
Vous pouvez retrouver le contenu de zone d'une structure en introduisant le nom de la structure dans
la colonne de gauche. Si vous double-cliquez sur cette entre, vous affichez la zone de vue de la
structure.
(C) SAP AG
BC400
4-26
Types
Types
Objets
es
donn
Objets de
de donnes
donnes
Objets
es lmentaires
mentaires
donn
l
Objets de
de donnes
donnes
lmentaires
Structures
Structures
Tables
Tables internes
internes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
SAP AG 1999
(C) SAP AG
BC400
4-27
Type de table
Type de lignes
Cl
Cl
Zones-cls
AA
LH
0017
0400
2,572
6,162
LH
0400
6,162
QF
0005
10,000
SQ
0866
1,625
UA
0007
2,572
Squence
Cl unique / non-unique
Type de table
Accs avec index
5
Type d'accs de donnes
UA 0007
Accs avec cl
SAP AG 1999
Vous devez dfinir les informations suivantes afin de spcifier entirement un type de table :
Type de ligne : vous pouvez enregistrer les informations dans les colonnes requises, leurs noms et types, en
dfinissant un type de structure comme type de ligne.
Cl : une cl correctement spcifie doit dfinir quelles colonnes doivent tre des colonnes-cl. Dans quel
ordre ? La cl doit-elle dsigner un seul enregistrement de la table interne (cl unique) ? Les cls uniques ne
peuvent pas tre dfinies pour tous les types de table.
Type de table : il existe trois types de table : les tables standard, les tables tries et les tables d'adresses
calcules. C'est le type d'accs qu'on utilise principalement pour choisir le type de table.
Le type d'accs dfinit comment ABAP accde aux entres de tables individuelles. Deux types diffrents
d'accs de donnes existent dans ABAP, l'accs par index et l'accs avec une cl.
L'accs par index implique l'utilisation de l'index d'enregistrement de donnes que le systme gre pour
accder aux donnes.
Exemple: l'accs en mode lecture un enregistrement de donnes comportant l'index 5 fournit le cinquime
enregistrement de donnes de votre table interne (quantit d'accs : un seul enregistrement de donnes).
L'accs avec une cl implique l'utilisation d'un critre de recherche, gnralement la cl de table ou la cl de
table gnrique, pour accder aux donnes.
Exemple : l'accs en mode lecture, utilisant un critre de slection "UA 0007", une table interne de cl
unique CARRID CONNID et aux donnes dcrites ci-dessus fournit exactement un enregistrement de
donnes.
(C) SAP AG
BC400
4-28
Types de table
TABLES
TABLE DES INDEX
TABLE STANDARD
Accs avec
Index
TABLE D'ADRESSES
CALCULES
CALCULES
TABLE TRIE
TRIE
Accs avec
Cl
Cl unique /
non-unique
Type d'accs
NON- UNIQUE
Principalement index
UNIQUE | NON-UNIQUE
Principalement cls
UNIQUE
SAP AG 1999
Un autre attribut de table interne est le type de table. Les tables internes peuvent tre divises en trois
types de table selon leur moyen d'accs aux donnes :
- les tables standard grent de manire interne un index linaire. Ce type de table peut tre
accd en utilisant soit l'index de table soit des cls.
- les tables tries sont tries selon la cl et sauvegardes. Un index linaire est ici aussi gr de
manire interne. Ce type de table peut tre accd en utilisant soit l'index de table soit des cls.
- les tables d'adresses de calculs ne grent pas d'index linaire de manire interne. Vous pouvez
seulement y accder en utilisant des cls.
Le type de table que vous utilisez dpend gnralement du moyen d'accs ces entres de table.
Utilisez des tables standard lorsque l'accs aux entres s'effectue gnralement avec l'index, utilisez
une table trie lorsque l'accs aux entres s'effectue gnralement avec des cls, et des tables
d'adresses calcules lorsque l'accs aux entres s'effectue exclusivement avec des cls.
(C) SAP AG
BC400
4-29
sbc400_t_sbc400focc
Dfinition-cl
Type de cl
Composantes-cls
SBC400FOCC
Table standard
Composantes-cls
non-unique
CARRID
CONNID
FLDATE
Programme ABAP
itab_flightinfo
sbc400_t_sbc400focc .
DATA it_flightinfo type sbc400_t_sbc400focc
SAP AG 1999
Les types de table peuvent tre dfinis de manire locale dans un programme ou de manire centrale
dans le dictionnaire ABAP.
Pour dfinir un objet de donnes de type table, spcifiez le type comme un type de table global ou un
type de table local.
Vous trouverez des informations dtailles sur la dclaration de types de table dans la documentation
ou dans le cours BC402.
(C) SAP AG
BC400
4-30
APPEND
APPEND wa_itab to itab.
Insrer
Lire
Modifier
Supprimer
SAP AG 1999
Vous pouvez excuter les oprations suivantes sur des enregistrements individuels de tables internes
:
APPEND ajoute le contenu d'une structure qui a le mme type que la ligne d'une table interne.
Cette opration peut tre utilise uniquement avec des tables standard.
INSERT insre le contenu d'une structure qui a le mme type que la ligne de table interne. Pour
une table standard, cela provoque un APPEND ; pour une table trie, cela provoque une
insertion la bonne place ; pour une table d'adresses calcules, cela provoque une
insertion suivant l'algorithme d'adresse calcule .
READ
la ligne.
copie le contenu d'une ligne de table interne vers une structure qui a le mme type que
MODIFY crase une ligne de table interne avec le contenu d'une structure qui a le mme type que
la ligne..
DELETE supprime une ligne de table interne.
COLLECT insre le contenu d'une structure qui a le mme type que la ligne d'une table interne
vers
une table interne sous une forme compresse. Cette instruction peut tre utilise
uniquement pour des tables dont les zones non cl sont toutes numriques. Les valeurs
numriques sont cumules pour des cls identiques.
n
Vous trouverez des informations dtailles sur les instructions ABAP dcrites dans cette diapositive
dans la documentation mots-cls ABAP.
(C) SAP AG
BC400
4-31
ENDLOOP.
Supprimer
Insrer
lignes multiples
partir d'une
table interne
Ajouter
Lignes multiples
partir d'une
table interne
APPEND
INSERT itab2 <condition2>
FROM itab1 <condition1>.
SAP AG 1999
Vous pouvez excuter les oprations suivantes sur des ensembles d'enregistrements de tables internes
:
LOOP ... ENDLOOP
LOOP place une par une les lignes de table interne dans la structure
spcifie dans la clause INTO. La structure doit avoir le mme type que la ligne de table
interne. Toutes les oprations sur un enregistrement individuel peuvent tre
excutes
l'intrieur de la boucle. Dans ce cas, le systme fournit les
informations sur la ligne
traiter dans l'opration d'enregistrement individuel.
DELETE supprime les lignes de table interne qui dfinissent la condition <condition>.
INSERT copie le contenu de plusieurs lignes d'une table interne vers une autre table
interne.
APPEND ajoute le contenu de plusieurs lignes d'une table interne vers une autre table
standard.
Vous trouverez des informations dtailles sur les instructions ABAP dcrites dans cette diapositive
dans la documentation mots-cls pour tous les mots-cls ABAP utiles.
(C) SAP AG
BC400
4-32
Trier
SORT
SORT
itab <conditions>
CLEAR
CLEAR
itab.
SAP AG 1999
Vous pouvez excuter les oprations suivantes sur des tables internes :
SORT
ou
trie des tables selon n'importe quelle colonne ou selon les colonnes par ordre croissant
dcroissant. Les tables de type SORTED TABLE ne peuvent tre retries.
CLEAR
(C) SAP AG
BC400
4-33
it_flightinfo
wa_flightinfo
* Remplir une structure wa_flightinfo avec des valeurs
...
* Ajouter la structure wa_flightinfo dans une table
* interne
APPEND wa_flightinfo TO it_flightinfo.
SAP AG 1999
Vous pouvez ajouter des lignes une table standard en remplissant d'abord une structure avec les
valeurs requises et en l'ajoutant ensuite la table interne avec l'instruction APPEND. Cette
instruction n'est valable que pour les tables standard.
Utilisez l'instruction INSERT pour insrer des lignes dans des tables tries ou d'adresses calcules.
(C) SAP AG
BC400
4-34
wa_flightinfo
LOOP AT it_flightinfo INTO wa_flightinfo.
WRITE: /
wa_flightinfo-carrid,
wa_flightinfo-connid,
wa_flightinfo-fldate,
wa_flightinfo-seatsmax,
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.
ENDLOOP.
ENDLOOP.
SAP AG 1999
Vous pouvez lire et traiter le contenu d'une table interne avec l'instruction LOOP. Dans cet exemple,
une ligne est chaque fois copie de la table interne it_flightinfo vers la structure wa_flightinfo. Les
zones de la structure peuvent alors tre traites. Une liste est tablie partir des zones avec
l'instruction WRITE.
Si vous souhaitez modifier le contenu de la table interne, modifiez d'abord la valeur des zones de
structure l'intrieur de la boucle et crasez ensuite la ligne de table interne comportant l'instruction
MODIFY.
(C) SAP AG
BC400
4-35
L'option INDEX vous permet de limiter l'accs un certain nombre de lignes. Vous pouvez excuter
des oprations d'index uniquement dans les tables de type index. Les tables standard comme les
tables tries y sont gres.
L'exemple du haut montre la syntaxe pour le traitement de la boucle, qui scanne uniquement les cinq
premires lignes de la table interne.
L'exemple du bas montre la syntaxe pour la lecture de la troisime ligne de la table interne.
(C) SAP AG
BC400
4-36
L'option WHERE vous permet de limiter l'accs des lignes comportant certaines valeurs dans des
zones-cls. Les oprations-cls sont gres pour tous les types de table. L'accs-cl aux tables tries
ou d'adresses calcules est plus efficace que l'accs-cl aux tables standard.
L'exemple du haut montre la syntaxe pour le traitement de la boucle qui scanne uniquement les
lignes de la table interne dont la zone "carrid" a la valeur "LH". La table trie est la plus
approprie pour ce type de traitement. Le traitement en boucle avec l'option WHERE est gr pour les
tables tries et les tables standard.
L'exemple du bas montre la syntaxe pour la lecture d'une ligne de la table interne avec une cl
correctement spcifie. Le code retour sy-subrc est remis zro si la table interne contient cette
ligne. La table d'adresses calcules est la plus approprie pour l'accs avec cl un enregistrement
individuel. Ce type d'accs est gr pour tous les types de table. Veuillez noter que toutes les zonescls doivent tre dfinies en accs-cls avec l'option WITH TABLE KEY. Il est facile de confondre
cette option avec l'option WITH KEY, qui autorisait dj l'accs-cl aux tables standard avant la
version 4.0, lorsqu'il n'tait pas encore possible de dfinir de manire explicite les colonnes-cl.
(C) SAP AG
BC400
4-37
chws
Point de surveillance
Tableau
Programme principal ZJJ_KURS_000
ZJJ_FORMS
Code source de
15 -
30
it_flightinfo
Type Standard
1
2
3
4
5
6
7
8
AA
AA
AA
AA
LH
LH
LH
LH
660
660
660
660
280
280
280
280
0017
0017
0017
0017
0400
0400
0400
0400
20000512
20000724
20000828
20001224
20000626
20000715
20001113
20001212
66
120
560
470
240
123
273
280
66
120
560
470
240
123
273
280
SAP AG 1999
Vous pouvez retrouver le contenu d'une table interne en mode dbogage en slectionnant "Table" et
en indiquant le nom de table interne.
(C) SAP AG
BC400
4-38
CARRID
AA
LH
CARRID
CONNID
CONNID
0017
AA
0017
0400
LH
0400
APPEND <itab>.
MODIFY <itab> INDEX <n>.
LOOP AT <itab>.
WRITE <itab>-<field>.
ENDLOOP.
SAP AG 1999
Les tables internes peuvent tre dfinies avec ou sans ligne d'en-tte. Une table interne avec ligne
d'en-tte consiste en un espace de travail (la ligne d'en-tte) et le corps actuel de la table, qui sont
tous deux adresss par le mme nom. La manire dont le nom va tre interprt dpend du contexte
dans lequel il est utilis. Par exemple : en MOVE, le nom est interprt pour signifier la ligne d'entte, alors qu'en SORT, il est interprt comme le corps de table.
Vous pouvez dclarer une table interne avec une ligne d'en-tte en utilisant l'option WITH HEADER
LINE.
Afin d'viter toute confusion, il est recommand de crer des tables internes sans lignes d'en-tte.
Cependant, vous pouvez utiliser une syntaxe abrge pour certaines oprations dans des tables
internes avec lignes d'en-tte.
(C) SAP AG
BC400
4-39
Types
Types
Objets
es
donn
Objets de
de donnes
donnes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
SAP AG 1999
(C) SAP AG
BC400
4-40
Programme ABAP
sy-subrc
0
Function de
base en
LECTURE
Non disponible
itab
IF sy-subrc ne 0.
* Message
...
ENDIF.
Code retour 4
Un nombre d'instructions ABAP possdent un code retour. De nombreuses exceptions sont dtectes,
selon l'instruction. Si une telle exception apparat, une valeur est stocke dans la zone sy-subrc et
l'instruction se termine. La documentation mots-cls pour une instruction dtermine dcrit les
exceptions et leurs valeurs. Lorsque vous lancez un programme, une structure appele sy est
automatiquement fournie comme objet de donnes. Cette structure contient plusieurs zones qui sont
remplies par le systme. Vous pouvez accder ces zones partir du programme. Une des zones de
cette structure est la zone subrc. Vous ne devez ds lors pas crer d'objet de donnes pour le code
retour.
Dans cet exemple, une ligne devrait se lire partir de la table interne itab avec un accs cl. Il n'y a
aucune ligne avec la cl requise au moment de l'excution. L'instruction READ se termine alors et la
valeur 4 est place dans la zone sy-subrc. La zone sy-subrc est teste dans le programme
immdiatement aprs l'instruction READ.
(C) SAP AG
BC400
4-41
.
.
MESSAGE E050(BC400).
S078(BC400) WITH c_ua.
Table T100
S
ID
EN BC400
...
...
EN BC400
EN BC400
...
...
Texte du message
038 Aucune donne n'existe pour cette slection (insrez une autre valeur)
...
...
049 La compagnie arienne & n'existe pas
078
078 Division
Entrepar
pour
zrola compagnie arienne & n'existe pas
...
...
Entre
Entre pour la compagnie arienne
arienne UA n'existe pas
SAP AG 1999
Il existe un type de dialogue spcial appel le message utilisateur pour les situations d'erreur. Les
messages sont dclenchs par l'instruction MESSAGE.
Les messages peuvent tre trouvs dans la table T100. Ils sont organiss selon la langue, une classe
de messages et un numro trois chiffres.
Les messages peuvent contenir jusqu' 4 variables, identifies comme &1, &2, &3, et &4. Si vous
souhaitez diter le caractre & et que vous ne souhaitez pas l'utiliser comme une variable, doublez-le,
par exemple : "C'est un message avec &&".
Dans les longs textes de message, utilisez &v1&, &v2&, &v3&, et &v4& pour leurs variables
correspondantes.
Vous pouvez crer vos propres classes de messages en utilisant des noms de classes commenant par
Y ou par Z.
(C) SAP AG
BC400
4-42
Annn
Xnnn
MESSAGE Ennn WITH <field1> <field2> <field3> <field4>(<message-class>).
Wnnn
Innn
Snnn
SAP AG 1999
Envoyez des messages avec l'instruction MESSAGE. La langue pour les messages dans la tabe T100
est automatiquement paramtre comme la langue de travail de l'utilisateur. Vous pouvez dfinir la
classe de messages suivant le paramtre MESSAGE-ID de l'instruction REPORT. La classe de
messages est ds lors paramtre pour l'ensemble du rapport. Introduisez le numro de message dans
l'instruction MESSAGE.
Introduisez le type de message juste en face du numro de message trois chiffres, ce dernier
dtermine comment l'utilisateur du rapport ragit aux messages de dialogue (voir diapositive
suivante).
Paramtrez les valeurs pour les variables (jusqu' un maximum de quatre) suivant le paramtre
WITH. Les zones et les littraux sont galement autoriss. La zone au niveau i remplace donc la
variable &i du message. Si les variables du message sont identifies par & ou $, ces caractres
gnriques sont fournis avec des valeurs indpendantes de la position des zones de l'instruction
message.
Outre l'utilisation d'une classe de messages avec l'instruction REPORT, vous pouvez galement
ajouter une classe de messages diffrente la commande MESSAGE en introduisant l'ID entre
parenthses directement aprs le numro de message. Cependant, cette classe de messages n'est
valable que pour un message individuel. Exemple : MESSAGE E004(UD).
Utilisez la syntaxe suivante chaque fois que vous souhaitez envoyer un message dynamique :
MESSAGE ID <mid> TYPE <mtype> NUMBER <mnr> WITH <field1>
<field2> <field3> <field4>.
Les zones systme SY-MSGID, SY-MSGTY et SY-MSGNO sont fournies avec la classe de messages,
le type de messages et le numro de message respectivement, et les zones systme SY-MSGV1
SY-MSGV4 avec les zones des caractres gnriques.
(C) SAP AG
BC400
4-43
Aide l'diteur
Synthse ABAP
Mot-cl ABAP
Nouvelles caractristiques de ABAP
Documentation ABAP et exemples
X Abend et
Identique au message de fin, mais avec vidage d'une partie de la mmoire
short dump MESSAGE_TYPE_X
E Erreur
W Warning
I Information Le traitement est interrompu, le message s'affiche dans une bote de dialogue
et le programme continue lorsque le message a t confirm avec ENTRE.
S Suite Le message apparat sur la barre d'tat de l'cran suivant
n
Vous trouverez un programme pour tester le comportement au moment de l'excution dans les
programmes types de la documentation. Vous trouverez des programmes types avec un code de
tansaction ABAPDOCU dans lditeur avec l'icne "Information" et la case d'option de
Documentation ABAP et exemples.
(C) SAP AG
BC400
4-44
(C) SAP AG
BC400
4-45
Exercices
Chapitre : Objets de donnes et instructions
Sujet : Structures et affectations de valeurs
Programme :
ZBC400_##_GETTING_STARTED
Solution modle :
SAPBC400WBS_GETTING_STARTED
1-1
1-2
Vrifiez que toutes les donnes sont initiales. Pour cela, indiquez leur nom dans les
noms de zones (onglet Zones du dbogueur). Examinez le contenu (initial), la
structure et le type des donnes en double-cliquant sur chacun d'eux.
1-3
1-4
1-5
Linstruction CALL SCREEN 100 traite le dynpro 100. Sur lcran, saisissez les
valeurs propres au nom dutilisateur, la date et lheure, et continuez le programme.
Observez maintenant comment les zones sont copies de SBC400_CARRIER vers
WA_SBC400.
(C) SAP AG
BC400
4-46
1-6
1-7
1-8
(C) SAP AG
BC400
4-47
Programme :
ZBC400_##_ITAB_LOOP
Solution modle :
SAPBC400TSS_ITAB_LOOP
2-1
2-2
Dans votre programme, crez une table interne avec la structure de ligne de la table
SPFLI.
2-3
Pour consulter les donnes de la table de base de donnes SPFLI et les placer dans
la table interne, utilisez linstruction ABAP suivante dans votre programme :
SELECT * FROM SPFLI INTO TABLE <itab>.
<itab> est le nom de la table interne.
2-4
Affichez les donnes de la table interne dans une liste. Utilisez les instructions
LOOP ENDLOOP.
(C) SAP AG
BC400
4-48
Solutions
Chapitre : Objets de donnes et instructions
Sujet : Structures et affectations de valeurs
1-3
1-4
(C) SAP AG
BC400
4-49
*&-----------------------------------------------------------------*
*& Report
SAPBC400TSS_ITAB_LOOP
*&
*
*
*&-----------------------------------------------------------------*
REPORT
sapbc400tss_itab_loop
START-OF-SELECTION.
* Lire toutes les zones des enregistrements de la table de base de
donnes SPFLI dans
* La table interne it_spfli.
SELECT * FROM spfli INTO TABLE it_spfli.
* Au moins un enregistrement slectionn
IF sy-subrc = 0.
* Copier chaque enregistrement individuel de la table interne vers la
structure WA_SPFLI
* afin denregistrer des donnes sur la liste
LOOP AT it_spfli INTO wa_spfli.
WRITE: / wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-cityto,
wa_spfli-deptime,
wa_spfli-arrtime.
ENDLOOP.
(C) SAP AG
BC400
4-50
ENDIF.
(C) SAP AG
BC400
4-51
Contenu :
l Informations sur les tables de base de donnes
l Lecture de tables de base de donnes
l Contrle d'autorisations
l Lecture de tables de base de donnes multiples
SAP AG 1999
(C) SAP AG
BC400
5-1
(C) SAP AG
BC400
5-2
Informations
Informations sur
sur les
les tables
tables de
de base
base de
de donnes
donnes
Lecture
Lecture de
de tables
tables de
de base
base de
de donnes
donnes
Contrle
Contrle d'autorisations
d'autorisations
Lecture
Lecture de
de tables
tables de
de base
base de
de donnes
donnes multiples
multiples
SAP AG 1999
(C) SAP AG
BC400
5-3
Dictionnaire ABAP
Table transparente SPFLI :
Description des attributs de la
table de base de donnes SPFLI
ou
b
D
le
-c
l
ic
SPFLI
spfli ...
SELECT SINGLE * FROM spfli
SAP AG 1999
Les tables de base de donnes sont administres dans le Dictionnaire ABAP. C'est ici que vous
trouvez les informations actuelles sur les attributs techniques de la table de base de donnes. La table
de base de donnes qui a t cre dans la base de donnes en utilisant le mme type de ligne et nom
est appele table transparente dans le Dictionnaire ABAP.
Il existe diffrents moyens par lesquels vous pouvez naviguer vers les tables transparentes dans le
Dictionnaire ABAP :
choisissez Outils->ABAP Workbench->Dveloppement->Dictionnaire pour appeler le dictionnaire
ABAP directement et insrer le nom de la table transparente dans la zone de saisie approprie, ou
naviguez directement vers le Dictionnaire ABAP partir de l'diteur ABAP pendant le traitement
du programme :
vous pouvez double-cliquer sur le nom de la table transparente dans la clause FROM de
l'instruction SELECT.
(C) SAP AG
BC400
5-4
Rechercher
des composantes
rutilisables
diteur
Rechercher
l'instruction
SELECT
Dmarrer
en mode dbogage
Insrer un point
d'arrt dans
l'instruction SELECT
Sur
des zones d'cran
Liste
d'objets du
programme
Sous-programmes
SAP AG 1999
Hirachie des
applications
Slectionner
composantes
d'application
Repository
Informations
Le systme
Zones de structure
dans le Dictionnaire ABAP
F1
Infos techniques
Double-clic
sur une zone
d'cran
Vous fournit les noms des
programmes qui accdent la
table de base de donnes
Double-clic
sur un lment de
donnes
Liste des cas d'emploi
dans les tables
Si vous connaissez le nom d'un programme qui a accs aux tables de bases de donnes que vous
cherchez :
Zone de saisie sur un cran : si vous connaissez un programme qui contient un cran avec des
zones de saisie connectes la table recherche, choisissez F1->Infos techniques et naviguez vers
le dictionnaire ABAP en double-cliquant sur le nom technique de la zone d'cran. Il s'agit
souvent d'une zone dans une structure. Double-cliquez sur l'lment de donnes et utilisez la
fonction Cas d'emploi pour rechercher des tables transparentes selon le type de zone.
Dbogueur : si vous connaissez le nom d'un programme qui a accs aux tables de bases de
donnes que vous cherchez, vous pouvez lancer ce programme en mode dbogage et apposer un
point d'arrt dans l'instruction SELECT.
Editeur : recherchez l'instruction SELECT.
Liste d'objets de Object Navigator : prlevez les sous-programmes qui forment les accs la
base de donnes.
(C) SAP AG
BC400
5-5
Ville de dpart
Aroport de dpart
SAP AG 1999
Tous les cours ABAP utilisent le mme modle de donnes de systme de rservation arienne. ce
stade, nous vous prsenterons un simple aperu du modle de donnes de vol ; vous trouverez des
informations dtailles ce sujet tout au long du cours.
En tant que voyageur dsireux d'aller d'un endroit l'autre, vous attendez de votre agence de voyages
qu'elle soit en mesure de vous fournir les informations suivantes :
Quel est le vol le plus direct et le plus pratique ?
Quel est l'horaire des vols la date qui m'intresse ?
Comment rendre des conditions de voyage optimales ? Par exemple, quel est le vol le moins cher,
la connexion la plus rapide et la plus adapte ...?
L'agence de voyages a un point de vue lgrement diffrent. Toutes les donnes techniques
ncessaires pour raliser un modle sont organises et enregistres dans les tables d'une base de
donnes centrale, en fonction de la structure de la base concerne. La quantit d'informations
stockes dpasse largement les besoins d'une agence de voyages. L'agence veut avant tout savoir
quel client a effectu une rservation, quelle date, combien le passager a pay, etc. Ces diffrentes
vues et leurs exigences respectives dmontrent la ncessit d'utiliser des programmes d'organisation
de donnes qui rpondent tous les besoins des utilisateurs.
(C) SAP AG
BC400
5-6
Modle de donnes
BC_TRAVLAG T
CR
Agence de
voyages
BC_GEOCITY T
Ville
A
BC_AIRPORT
BC_CITAIRP
Agence
commerciale
Affectation
Ville aroport
Aroport
BC_COUNTER T
CR
BC_CUSTOM T
Client
H
BC_CARRIER T
Compagnie
arienne
BC_PLANFLI
H
BC_SFLIGHT
H
Vol
BC_BOOKING T
H
Rservations
Heure
SAP AG 1999
Toutes les informations logiquement interdpendantes contiennent des entits. Le modle de donnes
ABAP comporte des entits individuelles :
toutes les villes ;
tous les aroports ;
toutes les compagnies ariennes ;
tous les itinraires de vol ;
tous les vols.
Ces lments sont tous lis les uns aux autres par des rapports prdtermins :
les routes ariennes relient forcment deux aroports ;
un itinraire se caractrise par une compagnie arienne, un aroport de dpart, un aroport de
destination et un horaire de dpart ;
sur une destination donne, il peut exister des vols de nombreuses dates au cours d'une anne ;
mais la route arienne correspondante doit ncessairement exister au pralable pour que le vol soit
cr ;
tous les aroports situs proximit des villes sont affects aux villes.
Ce modle permet de grer toutes les donnes ncessaires, sans redondance ; il est conu pour qu'une
agence de voyages accde des informations intressantes du point de vue de sa clientle.
(C) SAP AG
BC400
5-7
SCARR
SPFLI
SFLIGHT
SBOOK
Compagnie arienne
Vol
Rservations
MANDT
CARRID
CARRNAME
.....
MANDT
CARRID
CONNID
AIRPFROM
AIRPTO
DEPTIME
.....
MANDT
CARRID
CONNID
FLDATE
SEATSMAX
SEATSOCC
.....
MANDT
CARRID
CONNID
FLDATE
BOOKID
CUSTOMID
COUNTER
AGENCYNUM
.....
H
11001
Compagnie
arienne
11001
H
11001
H
Vol
11001
H
Rservations
Heure
SAP AG 1999
Tous les exemples et exercices contenus dans les cours ABAP ainsi que toute la documentation
prsentent le modle de systme de rservation arienne de SAP. Tous les objets du Repository du
modle se trouvent dans la classe de dveloppement BC_DATAMODEL.
Voici quelques-unes des tables de donnes de vol le plus frquemment employes dans les
formations ABAP :
SPFLI : table des liaisons ariennes ;
SFLIGHT : table des vols ;
SBOOK : table des rservations.
(C) SAP AG
BC400
5-8
Zones
MANDT
CARRID
CONNID
COUNTRYFR
CITYFROM
AIRPFROM
COUNTRYTO
CITYTO
AIRPTO
FLTIME
DEPTIME
ARRTIME
DISTANCE
DISTID
FLTYPE
S_MANDT
S_CARR_ID
S_CONN_ID
LAND1
S_FROM_CIT
S_FROMAIRP
LAND1
S_TO_CITY
S_TOAIRP
S_FLTIME
S_DEP_TIME
S_ARR_TIME
S_DISTANCE
S_DISTID
S_FLTYPE
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
SAP AG 1999
Toutes les informations relatives aux attributs techniques de la table sont accessibles quand vous
naviguez jusqu' sa dfinition dans le Dictionnaire ABAP.
Les informations suivantes sont intressantes pour augmenter la performance des accs la base de
donnes :
zones cls : si les enregistrements demands la base de donnes sont retrouvs selon les zones de
cls, l'optimiseur de la base de donnes peut excuter l'accs en utilisant un index primaire. Des
cases cocher sont disponibles pour toutes les zones-cl ;
index secondaires : vous pouvez galement utiliser des index secondaires pour slectionner des
enregistrements. Le bouton de commande "Index" permet des les afficher dans une bote de
dialogue. Vous pouvez choisir un index en double-cliquant simplement dessus. Le systme affiche
ensuite un cran comportant des informations complmentaires sur cet index.
(C) SAP AG
BC400
5-9
Informations
Informations sur
sur les
les tables
tables de
de base
base de
de donnes
donnes
Lecture
Lecture de
de tables
tables de
de base
base de
de donnes
donnes
Contrle
Contrle d'autorisations
d'autorisations
Lecture
Lecture de
de tables
tables de
de base
base de
de donnes
donnes multiples
multiples
SAP AG 1999
(C) SAP AG
BC400
5-10
FROM <table>
Quelle(s) table(s) ?
Quelles lignes ?
Ligne individuelle
Lignes multiples
}
Colonne
spcifique
SAP AG 1999
Elle repose sur une logique complexe que vous utilisez pour accder de nombreux types de table.
L'instruction consiste en une srie de clauses, chacune d'elle possdant une tche diffrente.
- La clause SELECT spcifie : si le rsultat de la slection doit se prsenter sur une ou plusieurs
lignes ;
les zones qui doivent tre incluses dans le rsultat ;
si le rsultat peut contenir deux lignes identiques ou plus.
- La clause INTO spcifie l'objet de donns interne du programme dans lequel vous souhaitez
placer les donnes slectionnes.
- La clause FROM spcifie la source des donnes (table de base de donnes ou vue).
- La clause WHERE spcifie les conditions que les rsultats de la slection doivent remplir. En
fait, il dtermine donc quelles sont les lignes inclure dans la table de rsultats.
- Vous trouverez des informations sur les autres clauses dans l'index de l'diteur ABAP, au motcl SELECT.
(C) SAP AG
BC400
5-11
Programme ABAP
Objets de
donnes
pa_car
wa_
wa_scarr
Bloc de
traitement
ABAP
SELECT ...
Open SQL
Conversion
spcifique
de base de Base de donnes SQL
donnes
Interface de
base de
donnes
scarr
SAP AG 1999
Les instructions Open SQL composent un sous-ensemble de Standard SQL qui est entirement
intgr dans le langage ABAP. Vous les utilisez pour accder la base de donnes selon une
procdure uniforme partir de vos programmes, quel que soit le systme de base de donnes. Les
instructions Open SQL sont converties en instructions SQL spcifiques de la base de donnes par
l'interface de base de donnes.
(C) SAP AG
BC400
5-12
Programme ABAP
Objets de donnes
Table
de base de
donnes
SCARR
pa_car
wa_
wa_scarr
SELECT SINGLE *
FROM scarr
INTO wa_scarr
WHERE carrid = pa_car.
IF sy-subrc = 0.
...
Table de
base de
donnes
scarr
SAP AG 1999
L'instruction SELECT SINGLE* vous permet de lire une ligne individuelle partir d'une table de
base de donnes. Toutes les zones-cls doivent alors comporter la clause WHERE. Elle informe
l'interface de base de donnes que toutes les colonnes appartenant cette ligne doivent tre lues. Si
vous souhaitez uniquement une slection spcifique de colonnes, vous pouvez y insrer une
structure.
Vous devez introduire le nom de la structure dans laquelle vous dsirez que l'interface de base de
donnes copie un enregistrement de donnes aprs la clause INTO. Cette structure doit tre
identique celle des colonnes de la table, qui sont lues et alignes gauche.
Si vous utilisez l'option CORRESPONDING FIELDS OF dans la clause INTO, vous pouvez
remplir l'espace de travail cible composante par composante. Le systme ne retient que celles qui
portent le mme nom que les colonnes de la table. Si vous n'indiquez pas l'option, il complte
l'espace de travail partir de la gauche, indpendamment de sa structure.
Si le systme trouve l'entre de table rpondant aux conditions spcifies, SY-SUBRC adopte la
valeur 0.
L'option SINGLE informe la base de donnes qu'une ligne individuelle doit tre lue. La base de
donnes termine la recherche une fois cette ligne trouve. SELECT SINGLE apporte donc une
meilleure performance d'accs un enregistrement individuel qu'une boucle SELECT, si vous
fournissez les valeurs de toutes les zones-cls.
(C) SAP AG
BC400
5-13
Boucles SELECT
Objets de donnes
Programme ABAP
Table de
base de donnes
SFLIGHT
pa_car
wa_sbc400focc
wa_sbc400focc
Bloc de traitement ABAP
SELECT
SELECT carrid connid fldate
seatsocc seatsmax
FROM sflight
INTO wa_sbc400focc
WHERE carrid = pa_car.
Instructions pour chaque enregistrement lu
ENDSELECT
ENDSELECT.
IF sy-subrc = 0.
...
Interface de
base de
donnes
Si vous n'utilisez pas l'option SINGLE dans l'instruction SELECT, le systme lit plusieurs
enregistrements multiples de la base de donnes. La liste des zones dtermine les colonnes dont les
donnes doivent tre lues.
Le nombre de lignes lire peut tre limit par la clause WHERE. Elle effectue des restrictions soit
selon les zones-cls de la table de base de donnes, soit selon un index secondaire. Vous trouverez
des informations complmentaires sur les zones-cls et les index secondaires dans le Dictionnaire
ABAP. Double-cliquez sur la clause FROM de la table pour y accder.
Cette clause ne doit comporter que le nom des zones de table que vous voulez lire. Le nom de la
table laquelle vous voulez accder se trouve dans la clause FROM. (Exemple d'une instruction
correcte : SELECT ... FROM spfli WHERE carrid = ... , exemple d'une instruction
incorrecte : SELECT ...FROM spfli WHERE spfli-carrid = ... )
De multiples conditions logiques peuvent tre ajoutes dans la clause WHERE en utilisant AND ou
OR.
La base de donnes envoie les donnes l'interface sous forme de piles. Le systme d'excution
ABAP copie ligne par ligne les enregistrements de donnes dans la zone cible en utilisant une
boucle. Il effectue galement le traitement squentiel de toutes les instructions situes entre SELECT
et ENDSELECT.
SY-SUBRC = 0, lorsque le systme a pu slectionner au moins une entre. Une fois l'instruction
SELECT excute dans chaque passage de boucle, la zone de systme SY-DBCNT contient le
nombre de lignes lues. Aprs l'instruction ENDSELECT, il contient le nombre total de lignes lues.
(C) SAP AG
BC400
5-14
Objets de donnes
Programme ABAP
pa_car
Table de
base de donnes
SFLIGHT
itab_
itab_focc
IF sy-subrc = 0.
...
Systme d'excution ABAP
SAP AG 1999
L'option INTO TABLE <itab> copie le contenu de l'interface de base de donnes dans la table
interne itab. Cette opration s'appelle ARRAY FETCH.
Comme les ARRAY FETCH ne constituent pas une boucle, aucune instruction ENDSELECT n'est
utilise.
Pour plus d'informations sur les array fetch et sur les tables internes, reportez-vous au chapitre
Tables internes.
(C) SAP AG
BC400
5-15
Clauses INTO
Programme ABAP
SAP AG 1999
La clause INTO spcifie les objets de donnes dans lesquels vous souhaitez placer les donnes de la
table. Vous pouvez :
dfinir dans votre programme une structure plate qui comporte les zones dans le mme ordre que
la liste des zones de la clause SELECT. Ensuite, indiquez le nom de la structure dans la clause
INTO. Le contenu est copi par position. Les noms de zones de structure ne sont pas pris en
compte.
indiquer un ensemble d'objets de donnes individuels dans la clause INTO. Par exemple :
DATA:
gd_carrid TYPE sflight-carrid,
gd_connid TYPE sflight-connid,
gd_fldate TYPE sflight-fldate,
gd_seatsmax TYPE sflight-seatsmax,
gd_seatsocc TYPE sflight-seatsocc.
START-OF-SELECTION.
SELECT carrid connid fldate seatsmax seatsocc
FROM sflight
INTO (gd_carrid, gd_connid, gd_fldate, gd_seatsmax, gd_seatsocc)
WHERE ...
(C) SAP AG
BC400
5-16
...
...
deptime
deptime
SAP AG 1999
Si vous utilisez la clause INTO CORRESPONDING FIELDS, les donnes sont places dans les
zones de structure du mme nom.
Si vous souhaitez placer des donnes dans des colonnes de table interne de mme nom en utilisant
une cration de tableaux, utilisez INTO CORRESPONDING FIELDS OF TABLE <itab>.
(C) SAP AG
BC400
5-17
Contrles d'autorisation
Informations
Informations sur
sur les
les tables
tables de
de base
base de
de donnes
donnes
Lecture
Lecture de
de tables
tables de
de base
base de
de donnes
donnes
Contrle
Contrle d'autorisations
d'autorisations
Lecture
Lecture de
de tables
tables de
de base
base de
de donnes
donnes multiples
multiples
SAP AG 1999
(C) SAP AG
BC400
5-18
Fiches
utilisateur
cran de
slection
BC400-00
CONTRLE
D'AUTORISATION
Profil1
Profil2
Note
Non
Profil S_CARRID
Autorisation pour
Autorisation
Object S_CARRID
Autorisation pour
Autorisation
Object S_CARRID
SY-SUBRC
= 0
?
Oui
SELECT
Profil4
Autorisation pour
Autorisation
Object S_TCODE
SAP AG 1999
Vous devez excuter un contrle d'autorisation avant d'accder la table de base de donnes. Vous
devez programmer vous-mme ces contrles d'autorisation. AUTHORITY-CHECK vrifie d'abord
s'il existe pour l'utilisateur une autorisation contenant toutes les valeurs requises. Vous contrlez
ensuite la valeur du code dans la zone systme SY-SUBRC. Si cette valeur est 0, l'utilisateur a
l'autorisation requise et le programme peut continuer. Si cette valeur n'est pas 0, l'utilisateur ne
possde pas l'autorisation requise ; vous devez afficher un message et choisir l'action approprie.
Vous apprendrez plus loin rendre les zones d'cran de slection disponibles pour la saisie, si vous
effectuez le contrle d'autorisation juste aprs l'cran de slection. Vous apprendrez aussi diter un
message lorsque l'utilisateur n'a pas l'autorisation requise.
(C) SAP AG
BC400
5-19
"Afficher" autorisation
pour Objet S_CARRID
CARRID: *
ACTVT: Afficher
Objet : S_CARRID
CARRID (compagnie arienne)
ACTVT (Activit)
Activits :
Crer
Modifier
Afficher
"Modifier" autorisation
pour Objet S_CARRID
CARRID: LH
=
=
=
01
02
03
ACTVT: Modifier
SAP AG 1999
Toutes les donnes du systme SAP doivent tre protges contre les accs non autoriss.
Lorsque l'utilisateur gre des donnes de base, l'administrateur systme lui donne une autorisation.
Pendant ce processus, vous devrez dterminer exactement quelles donnes les utilisateurs ont
l'autorisation d'accder et quel type d'accs doit tre autoris. Par exemple, vous voulez peut-tre
permettre aux utilisateurs d'afficher des donnes pour toutes les compagnies ariennes, mais
uniquement de modifier des donnes pour certaines zones slectionnes. Dans ce cas, le systme doit
chercher une combinaison des zones "activit" et "compagnie arienne" chaque fois qu'il excute un
contrle d'autorisation.
Les objets d'autorisation dfinissent simplement la combinaison des zones qui doivent tre adresses
simultanment et servir de modles pour les autorisations et les contrles d'autorisation. Ils
s'organisent en classes d'objets dans le but de simplifier leur recherche et leur gestion ; une ou
plusieurs classes d'objets peuvent exister dans chaque application. Vous appelez la transaction de
gestion de l'objet d'autorisation partir du menu "Dveloppement" de ABAP Workbench. Une liste
complte de tous les objets de dveloppement, trie selon la classe et comprenant leurs zones
correspondantes et la documentation, fait partie de cette transaction.
(C) SAP AG
BC400
5-20
AUTHORITY-CHECK
AUTHORITY-CHECK
Object S_CARRID
Contrle
ID 'CARRID' FIELD 'LH'
ID 'ACTVT' FIELD '02'.
IF sy-subrc ne 0.
* Appropriate system reaction
* to failed check
Rsultats
d'tat
Paramtrer toutes
les autorisations
pour Objet S_CARRID
ACTVT
03
02
01
ENDIF.
AA AZ DL LH UA
CARRID
SAP AG 1999
Pour effectuer des contrles d'autorisation dans des programmes, vous devez spcifier l'objet et les
valeurs dont l'utilisateur a besoin pour accder cet objet. Ne prcisez pas le nom de l'autorisation.
Notre exemple contrle si l'utilisateur est autoris pour l'objet S_CARRID, qui a la valeur "LH"
dans la zone CARRID (compagnie arienne) et la valeur "02" pour "Modifier" dans la zone ACTVT
(activit). Vous trouverez les abrviations des activits possibles dans les tables TACT et TACTZ,
mais galement dans les objets appropris.
(C) SAP AG
BC400
5-21
S_CARRID
Le systme
gnre
le code ABAP
Vous insrez
des variables
et des
paramtres
Processus
code retour
SAP AG 1999
Vous devez spcifier toutes les zones de l'objet dans AUTHORITY-CHECK, sinon vous recevez un
code retour diffrent de zro. Si vous ne voulez pas excuter le contrle d'une zone dtermine,
entrez DUMMY aprs le nom de zone. Par exemple : lors de l'appel d'une transaction pour modifier les
donnes de vol, il est normal de vrifier si l'utilisateur est autoris modifier les entres d'une
compagnie arienne dtermine : AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'ACTVT' FIELD '02'
ID 'CARRID' DUMMY.
Vous trouverez une liste complte des codes de retour dans la documentation, au mot-cl
AUTHORITY-CHECK.
Vous pouvez galement spcifier une zone individuelle aprs l'option FIELD, mais pas de table de
slection. Pour effectuer un contrle AUTHORITY-CHECK sur toutes les valeurs d'une table de
slection, utilisez les modules fonction.
(C) SAP AG
BC400
5-22
Informations
Informations sur
sur les
les tables
tables de
de base
base de
de donnes
donnes
Lecture
Lecture de
de tables
tables de
de base
base de
de donnes
donnes
Contrle
Contrle d'autorisations
d'autorisations
Lecture
Lecture de
de tables
tables de
de base
base de
de donnes
donnes multiples
multiples
SAP AG 1999
(C) SAP AG
BC400
5-23
Objet
Mthodes des
classes gnrales
BAPI
Objet de
gestion
ce
fa s
r
e
te
In dul on
o cti
M n
fo
Groupe de
fonctions
Base de
donnes
logique
SAP AG 1999
Utilisez les composantes rutilisables disponibles qui englobent la recherche de donnes complexes.
Quatre techniques possibles :
mthodes de classes gnrales ;
mthodes d'objets de gestion ;
modules fonction ;
des bases de donnes logiques sont des programmes de recherche de donnes fournis par SAP qui
renvoient les donnes de manire hirarchique dans une squence logique.
Vous trouverez des informations sur les nombreuses techniques dans le chapitre Rutiliser les
composantes.
(C) SAP AG
BC400
5-24
SPFLI
Mandt Carrid Connid
SCARR
...
VUE
Mandt Carrid Connid Cityfrom Carrname
SAP AG 1999
Les vues s'appliquent diffrentes tables du Dictionnaire ABAP. Elles contiennent des zones issues
d'une trs grande table ou de plusieurs tables.
Utilisez les vues pour regrouper les informations des zones de diffrentes tables, les prsenter sous
une forme spcifique et travailler dans le systme R/3.
Vous utilisez principalement les vues pour la programmation en ABAP et pour l'aide en ligne (F4).
Si aucune des composantes appropries vos objectifs n'est disponible, vous pouvez excuter un
accs complexe la base de donnes l'aide des instructions ABAP-OPEN- SQL. Vous devez
comparer les mrites de ces nombreuses techniques. Comme l'utilisation d'une technique inadquate
peut donner lieu de considrables problmes de performance, vous trouverez des informations
complmentaires sur la performance optimale des accs la base de donnes dans la documentation
ou dans le cours BC490 Analyse des performances ABAP.
(C) SAP AG
BC400
5-25
SAP AG 1999
(C) SAP AG
BC400
5-26
Exercices
Crez un programme qui affiche tous les vols dune compagnie arienne
slectionne dans une liste. Dans le programme, vous devez galement
calculer le taux de remplissage de chaque vol et ensuite lafficher.
Les donnes de vol se trouvent dans la table de base de donnes
SFLIGHT.
Programme :
ZBC400_##_SELECT_SFLIGHT
Solution modle :
SAPBC400DDS_SELECT_SFLIGHT
1-1
1-2
Crez une structure en rfrence la structure SBC400FOCC, qui est dfinie dans
le Dictionnaire ABAP. Pour dcouvrir les composantes de cette structure,
consultez sa dfinition dans le Dictionnaire ABAP.
1-3
Limitez les lignes de la slection de base de donnes par une cl primaire. Pour
connatre les zones cl, regardez la dfinition de SFLIGHT du Dictionnaire
ABAP. La zone MANDT est automatiquement complte par le systme.
Programmez un cran de slection dans lequel lutilisateur peut entrer une valeur
pour la deuxime zone-cl (CARRID).
1-4
Lisez tous les vols de la table de base de donnes SFLIGHT qui correspondent la
compagnie arienne indique dans lcran de slection par lutilisateur. Utilisez un
bloc SELECT ENDSELECT. Entrez les donnes ligne par ligne dans la
structure que vous avez cre lexercice 1-2. Assurez-vous que vous lisez
uniquement les zones de la table de base de donnes pour lesquelles il existe
galement une zone cible dans la structure. Veillez spcifier les zones-cl dans la
slection, de sorte que la base de donnes puisse utiliser lindex primaire.
(C) SAP AG
BC400
5-27
1-5
1-6
Crez une liste affichant les informations consultes dans la base de donnes, et le
pourcentage doccupation de chaque vol.
(C) SAP AG
BC400
5-28
Programme :
ZBC400_##_SELECT_SFLIGHT_ITAB
Solution modle :
SAPBC400DDS_SELECT_SFLIGHT_TAB
2-1
2-2
2-3
Remplissez la table interne ligne par ligne en utilisant une instruction APPEND dans
la boucle SELECT.
2-4
2-5
Affichez le contenu tri de la table interne dans une liste. Pour ce faire, utilisez une
structure LOOP ENDLOOP.
(C) SAP AG
BC400
5-29
FACULTATIF :
Solution modle : SAPBC400DDS_SELECT_ARRAY_FETCH
2-6
2-7
2-8
(C) SAP AG
BC400
5-30
Programme :
ZBC400_##_AUTHORITY_CHECK
Solution modle :
SAPBC400DDS_AUTHORITY_CHECK,
SAPBC400DDS_AUTHORITY_CHECK_2 et
SAPBC400DDS_AUTHORITY_CHECK_3
3-1
3-2
3-3
(C) SAP AG
BC400
5-31
Solutions
SAPBC400DDS_SELECT_SFLIGHT
*&--------------------------------------------------------------*
REPORT
sapbc400dds_select_sflight
START-OF-SELECTION.
* Slectionner tous les enregistrements de la table de base de
donnes SFLIGHT correspondant
* carrier PA_CAR
SELECT carrid connid fldate seatsmax seatsocc FROM sflight
INTO CORRESPONDING FIELDS OF wa_flight
WHERE carrid = pa_car.
* Calculer loccupation de chaque vol
wa_flight-percentage =
100 * wa_flight-seatsocc / wa_flight-seatsmax.
* Crer liste
WRITE : / wa_flight-carrid COLOR COL_KEY,
wa_flight-connid COLOR COL_KEY,
wa_flight-fldate COLOR COL_KEY,
wa_flight-seatsocc,
wa_flight-seatsmax,
wa_flight-percentage,'%'.
ENDSELECT.
(C) SAP AG
BC400
5-32
*&--------------------------------------------------------------*
*& Report
SAPBC400DDS_SELECT_SFLIGHT_TAB
*&
*
*
*&--------------------------------------------------------------*
REPORT
sapbc400dds_select_sflight_tab
START-OF-SELECTION.
BC400
5-33
(C) SAP AG
BC400
5-34
FACULTATIF:
Solution modle : Program SAPBC400DDS_SELECT_ARRAY_FETCH
*&--------------------------------------------------------------*
*& Report
SAPBC400DDS_SELECT_ARRAY_FETCH
*&
*
*
*&--------------------------------------------------------------*
REPORT
sapbc400dds_select_array_fetch
BC400
5-35
ENDIF.
(C) SAP AG
BC400
5-36
Solution modle :
Programmes SAPBC400DDS_AUTHORITY_CHECK,
SAPBC400DDS_AUTHORITY_CHECK_2 et
SAPBC400DDS_AUTHORITY_CHECK_3
*&--------------------------------------------------------------*
*& Report
SAPBC400DDS_AUTHORITY_CHECK
*&
*
*
*&--------------------------------------------------------------*
REPORT
sapbc400dds_authority_check_#.
CONSTANTS
FIELD actvt_display.
CASE sy-subrc.
* Lutilisateur est autoris
WHEN 0.
*
(C) SAP AG
BC400
5-37
(C) SAP AG
BC400
5-38
Contenu :
l Blocs vnements ABAP
l Sous-programmes
SAP AG 1999
(C) SAP AG
BC400
6-1
SAP AG 1999
(C) SAP AG
BC400
6-2
Bloc
vnement
Dfinitions de
zone et type local
Bloc
vnement
cran de slection
Module
Bloc
vnement
Interface
Bloc
vnement
Module
Sousprogrammes
Process
Before
Output
Process
After
Input
cran
SAP AG 1999
Un programme ABAP est un ensemble de blocs de traitement. Un bloc de traitement est une section
passive du code du programme qui est traite de manire squentielle son dmarrage.
Les blocs de traitement reprsentent les plus petites units en ABAP. Il est impossible de les
dcomposer et donc de les imbriquer.
Les zones de mmoire sont accessibles pour tous les objets de donnes gnrales d'un programme,
lorsque celui-ci est lanc. Les instructions de dclaration ABAP ne sont ds lors pas des
composantes des blocs de traitement ABAP mais sont rassembles partir du code source gnral en
utilisant une recherche lorsque le programme est gnr. Les objets de donnes locales des sousprogrammes en sont des exceptions.
(C) SAP AG
BC400
6-3
cran de slection
gnr par
generates
INITIALIZATION
Bloc vnement
pa_date = pa_date - 7.
START-OF-SELECTION.
Bloc vnement
WRITE pa_date.
SAP AG 1999
Les programmes tudis jusqu' prsent ne comportaient qu'un seul bloc de traitement, qui s'ajoutait
la dclaration des donnes. Dans de tels cas, il est inutile de dclarer le bloc de faon explicite.
Cependant, dans des programmes plus complexes, plusieurs blocs de traitement diffrents sont
ncessaires, et leur type et nom sont spcifis.
Notre programme est un exemple de blocs vnements. Il contient une valeur de saisie pour une date
sur un cran de slection. La valeur par dfaut est la date de la semaine prcdente. L'instruction
PARAMETERS ne peut remplir cette valeur, car un calcul est requis. L'option DEFAULT de
l'instruction PARAMETERS permet l'objet de donnes de remplir la valeur par dfaut au dmarrage
du programme. Les valeurs par dfaut peuvent tre des littraux ou des zones de la structure sy. Le
systme d'excution complte la zone sy-datum par la date effective au dmarrage du programme.
Utilisez l'vnement INITIALIZATION pour modifier des variables l'excution, mais avant
l'envoi de l'cran de slection standard. START-OF-SELECTION est un bloc vnement pour crer
des listes.
Les dclarations globales sont reconnues par le systme grce au mot-cl dclaratif qu'elles utilisent.
Elles constituent un bloc de traitement logique (indpendamment de leur emplacement dans le code
source). Lorsque vous gnrez le programme, le systme recherche dans le code source les
instructions dclaratives. Toutefois, pour plus de lisibilit, regroupez ces dclarations au dbut du
programme. L'instruction PARAMETERS reprsente un des lments du langage dclaratif. Lorsque
le programme est gnr, un cran de slection comportant des informations sur l'objet de donnes
lmentaire du type spcifi est galement gnr.
(C) SAP AG
BC400
6-4
Programme ABAP
Lancement
du
programme
pa_date
20000101
INITIALIZATION.
pa_date = pa_date - 7. 19991225
??
START-OF-SELECTION.
WRITE pa_date.
Mmoiretampon
de liste
pour
liste de base
Les vnements les plus simples sont ceux destins un programme excutable (type 1).
Le processeur ABAP appelle des blocs vnements dans une squence dsigne pour gnrer et
traiter des listes.
n
un buffer de liste est ensuite envoy au serveur de prsentation sous forme de liste.
(C) SAP AG
BC400
6-5
Programme ABAP
Un vnement est
dlimit par le dbut du
bloc de traitement
suivant
diffrents blocs
vnements
correspondent
diffrentes tches
Le processeur ABAP
dtermine l'ordre de
traitement des
vnements
INITIALIZATION.
START-OF-SELECTION.
Les vnements sont des blocs de traitement appels par le processeur ABAP. Celui-ci dtermine
l'ordre de traitement des vnements.
(C) SAP AG
BC400
6-6
REPORT ...
INITIALIZATION.
INITIALIZATION.
pa_date = pa_date - 7.
START-OF-SELECTION.
START-OF-SELECTION.
WRITE pa_date.
Dans les programmes ABAP, chaque vnement est introduit par un mot-cl vnementiel. Il se
termine lorsque le bloc de traitement suivant dmarre. Aucune instruction ABAP ne conclut un
vnement de manire explicite.
Les vnements sont appels par le processeur ABAP. L'ordre dans lequel vous les placez dans un
programme importe peu : le systme les appelle toujours dans un ordre donn.
START-OF-SELECTION est le premier vnement pour gnrer une liste. Le processeur ABAP
l'appelle si vous slectionnez le bouton "Excuter".
INITIALIZATION est un vnement que vous utilisez pour dfinir un grand nombre de valeurs par
dfaut. Ce bloc vnement vous permet de paramtrer des valeurs par dfaut qui ne peuvent tre
dtermines qu' l'excution. Dans l'exemple ci-dessus, la date "Il y a une semaine" est calcule et
place dans l'objet de donnes pa_date. Le processeur ABAP envoie ensuite au serveur de
prsentation un cran de slection comportant par dfaut la valeur calcule. La valeur peut, bien sr,
tre encore modifie par l'utilisateur.
(C) SAP AG
BC400
6-7
Bloc de
traitement
Interface
Fonctions encapsules
Programmes mieux
structurs qui peuvent
tre lus et compris plus
facilement
Gestion de programmes
plus facile
Interface
Sousprogrammes
Sousprogrammes
SAP AG 1999
Les sous-programmes sont des blocs de traitement comportant une interface dfinie qui peuvent tre
appels par n'importe quel bloc de traitement en utilisant une instruction ABAP. Ils permettent
l'encapsulation interne de programmes.
(C) SAP AG
BC400
6-8
SAPBC400PBD_FORMS
Types d'objets du programme
Structures du Dictionnaire
Zones
vnements
Sous-programmes
AUTHORITY_SCARRID
FILL_ITAB Cliquer sur le bouton droit
WRITE_ITAB
Modifier
Afficher
Cas d'emploi
SAP AG 1999
Vous pouvez naviguer vers les sous-programmes partir d'une liste d'objets du programme.
Les cas d'emploi d'un sous-programme affichent toutes les lignes du programme qui appellent le
sous-programme.
(C) SAP AG
BC400
6-9
...
ENDFORM.
" FILL_ITAB
SAP AG 1999
Vous devez dterminer le primtre fonctionnel d'un sous-programme et examiner son nom, son
interface et les commentaires. Si le sous-programme contient la fonctionnalit requise, vous avez
ensuite besoin des informations suivantes pour tre en mesure d'appeler le sous-programme :
nom du sous-programme
les paramtres d'interface auxquels il a accs (uniquement en mode lecture) : les paramtres
sont rpertoris aprs l'option USING. Le type et l'ordre des paramtres d'interface sont
importants.
les paramtres d'interface qu'il modifie : les paramtres sont rpertoris aprs l'option
CHANGING. Le type et l'ordre des paramtres d'interface sont importants.
(C) SAP AG
BC400
6-10
Programme ABAP
Bloc vnement
PERFORM fill_itab
USING pa_carr
CHANGING itab.
p_carrid
p_it_flight
fill_itab
Lorsqu'un sous-programme est appel, tous les paramtres d'interface doivent tre remplis par des
valeurs. Il existe une distinction entre les paramtres suivants :
aprs USING sont indiqus les paramtres que le sous-programme doit seulement lire ;
aprs CHANGING sont indiqus les paramtres que le sous-programme modifie.
Si le sous-programme est appel partir du bloc de traitement ABAP par une instruction PERFORM,
le systme interrompt le bloc de traitement pour traiter le sous-programme de manire squentielle.
Lorsque la dernire ligne du sous-programme (ENDFORM.) est atteinte, le systme excute le
traitement qui suit l'instruction PERFORM.
Vous pouvez retrouver le droulement au moment de l'excution en mode dbogage. Vous avez
plusieurs options :
traiter le programme entier, sous-programmes inclus, ligne par ligne, en utilisant Pas pas ;
excuter un bloc de traitement ligne par ligne en utilisant Excuter. Les sous-programmes sont
alors excuts comme un tout ;
quitter le traitement pas pas d'un sous-programme et retourner au programme appelant en
utilisant Retour.
(C) SAP AG
BC400
6-11
a1
fv1
a2
fv2
a3
Paramtres effectifs
fr3
Param
tres formels
Paramtres
START-OF-SELECTION.
:
PERFORM form1 USING a1
PERFORM
CHANGING a2 a3.
SAP AG 1999
La mthode utilise pour transmettre les paramtres d'interface se trouve dans l'interface du sousprogramme. Les paramtres peuvent tre appels soit par rfrence soit par valeur.
Appel par rfrence : l'adresse du paramtre effectif est transmis. Dans le sous-programme, la
variable est adresse en utilisant le nom du paramtre formel. Les modifications ont un effet
immdiat sur la variable globale. Si seul le nom du paramtre formel est spcifi dans l'interface du
sous-programme, le paramtre est alors appel par rfrence.
Appel par valeur : lorsque le sous-programme est appel, une variable locale est cre avec le nom
du paramtre formel et la valeur du paramtre effectif est copie vers le paramtre formel. Deux
types d'appel par valeur existent :
Appel par valeur : le paramtre formel est transmis dans l'interface aprs la clause USING
comprenant l'option VALUE( <nom paramtre>). Lorsque le sous-programme est appel, le
paramtre effectif est copi vers le paramtre formel. Les modifications apportes au paramtre
formel affectent uniquement la copie locale, et non le paramtre effectif.
Appel par valeur : le paramtre formel est transmis dans l'interface aprs la clause CHANGING
comprenant l'option VALUE( <nom paramtre>). Lorsque le sous-programme est appel, le
paramtre effectif est copi vers le paramtre formel. Les modifications initialement effectues sur
le paramtre formel affectent uniquement la copie locale. Lorsque l'instruction ENDFORM est
atteinte, la valeur du paramtre formel est recopie dans le paramtre effectif.
(C) SAP AG
BC400
6-12
Paramtre
de saisie
Paramtres
TYPE s_carr_id
TYPE sbc400_t_sbc400focc.
formels
Les paramtres de l'interface sont dits "formels" ; les paramtres transmis au sous-programme sont
dits "effectifs".
Le nombre de paramtres effectifs doit tre identique celui des paramtres formels. Les paramtres
optionnels ne sont pas autoriss. Les paramtres sont affects dans l'ordre de leur liste.
Lorsque vous appelez un sous-programme par PERFORM, le systme vrifie si le type des
paramtres effectifs de l'instruction PERFORM est compatible avec celui des paramtres formels.
Diffrents types de contrles sont excuts pour diffrents types.
L'interface se dfinit dans la routine FORM. Dans l'instruction PERFORM, USING et CHANGING
n'ont qu'une valeur informative.
(C) SAP AG
BC400
6-13
SAP AG 1999
(C) SAP AG
BC400
6-14
Exercices
Programme :
ZBC400_##_FORMS
Solution modle :
SAPBC400PBS_FORMS
1-1
1-2
lment de donnes
Code retour :
systme SY-SUBRC
Zone
(C) SAP AG
BC400
lment de donnes
6-15
1-3
1-4
Facultatif:
Encapsulez l'dition des donnes dans un sous-programme. Appelez le sousprogramme aprs la boucle SELECT. Transmettez la table interne contenant les
donnes consultes en utilisant linterface. Spcifiez les types des paramtres
dinterface. Affichez les donnes partir du sous-programme en utilisant une
structure LOOP ENDLOOP . Pour ce faire, crez la zone de travail de table
demande comme un objet de donnes local dans le sous-programme. Pour
spcifier le type de la structure locale, utilisez linstruction ABAP DATA: <WA >
LIKE LINE OF <ITAB>.
(C) SAP AG
BC400
6-16
Solutions
SAPBC400PBS_FORMS
*&
*&--------------------------------------------------------------*
REPORT
sapbc400pbs_forms.
START-OF-SELECTION.
* Authority-Check:
PERFORM authority_scarrid USING pa_car actvt_display
CHANGING returncode.
CASE returncode.
* Lutilisateur est autoris
WHEN 0.
SELECT carrid connid fldate seatsmax seatsocc FROM sflight
INTO CORRESPONDING FIELDS OF wa_flight
WHERE carrid = pa_car.
wa_flight-percentage =
100 * wa_flight-seatsocc / wa_flight-seatsmax.
APPEND wa_flight TO it_flight.
ENDSELECT.
PERFORM write_list USING it_flight.
* Lutilisateur nest pas autoris ou autre erreur de authority-check
WHEN OTHERS.
WRITE: / 'Authority-Check Error'(001).
ENDCASE.
(C) SAP AG
BC400
6-17
*&--------------------------------------------------------------*
*&
Form
AUTHORITY_SCARRID
*&--------------------------------------------------------------*
*
text
*---------------------------------------------------------------*
*
-->P_PA_CARRID
-->P_LD_ACTVT
<--P_RETURN
text
text
text
*---------------------------------------------------------------*
FORM authority_scarrid USING
value(p_carrid)
TYPE s_carr_id
LIKE sy-subrc.
FIELD p_ld_actvt.
p_return = sy-subrc.
ENDFORM.
" AUTHORITY_SCARRID
*&--------------------------------------------------------------*
*&
Form
WRITE_LIST
*&--------------------------------------------------------------*
*
text
*---------------------------------------------------------------*
*
-->P_IT_FLIGHT
text
*---------------------------------------------------------------*
FORM write_list USING p_it_flight TYPE sbc400_t_sbc400focc.
DATA: wa LIKE LINE OF p_it_flight.
LOOP AT p_it_flight INTO wa.
WRITE: / wa-carrid COLOR COL_KEY,
wa-connid COLOR COL_KEY,
wa-fldate COLOR COL_KEY,
wa-seatsocc,
wa-seatsmax,
wa-percentage,'%'.
ENDLOOP.
ENDFORM.
(C) SAP AG
" WRITE_LIST
BC400
6-18
Contenu :
l Attributs et avantages des listes
l Listes de base
l Liste des vnements
l Listes interactives
l Exemple de syntaxe : listes dtailles
SAP AG 1999
(C) SAP AG
BC400
7-1
SAP AG 1999
(C) SAP AG
BC400
7-2
Listes
cran
Fonctions multilingues
CA ID
PRICE
AA 2602 2400
AA 2602 2500
Total
7800
Imprimer
SAP AG 1999
Le principal objectif d'une liste est d'diter des donnes d'une manire qui peut tre facilement
comprise par l'utilisateur ; cette dition prend souvent la forme d'un tableau. Dans R/3, elles
rpondent des besoins de gestion spcifiques :
n
elles sont indpendantes de langue. Les textes et intituls apparaissent dans la langue de travail
ds que la traduction adquate est disponible ;
vous pouvez galement sauvegarder des listes dans le systme R/3 ou les diter pour un
traitement par un logiciel commercial externe (un tableur, par exemple).
(C) SAP AG
BC400
7-3
Commandes de listes
Retour/Terminer/Annuler
Dfiler
Imprimer
Rechercher (dans liste)
Systme ...
Sauvegarder
:
Liste
:
SAP AG 1999
Vous trouverez des informations complmentaires pour l'adaptation des interfaces de liste standard
vos besoins individuels dans le chapitre sur Dialogues : interfaces.
(C) SAP AG
BC400
7-4
Intituls de page
Intitul de liste
Sauvegarder
Intitul de colonne
SAP AG 1999
Chaque liste comporte un intitul et jusqu' quatre lignes d'intitul de colonnes. Il existe deux
manires diffrentes d'utiliser ces outils :
partir de la liste elle-mme. Si vous sauvegardez, activez et excutez ensuite votre programme
pour crer la liste, vous pouvez introduire aussi bien les intituls de liste que de colonnes en
choisissant le chemin de menus Systme -> Liste -> Intituls de liste. L'avantage principal de cette
mthode est que la liste reste affiche l'cran. Cela facilite l'introduction des intituls de colonnes.
Lorsque vous relancerez le programme, les nouveaux intituls apparatront automatiquement dans la
liste.
Si vous ne saisissez pas d'intitul, le titre du programme est slectionn par dfaut.
(C) SAP AG
BC400
7-5
Fonctions multilingues
Programme
Code source
lments de texte
Titre/en-ttes
Titre/en-ttes
Intitul de liste
WRITE:/ /15text-001,
text-001,
35 sy-datum,
/15 text-002,
35 sy-uname.
EN Creation Date
DE Erstellungsdatum
FR Date de cration
Symboles de texte
001
002
EN Creation Date
DE Erstellungsdatum
FR Date de cration
:
EN Created by
SAP AG 1999
Les titres et intituls font partie des lments de texte d'un programme. Vous pouvez traduire tous
les lments de texte dans d'autres langues. Ils s'affichent dans la langue dfinie sur l'cran de
connexion.
Les symboles de texte forment un autre type d'lment de texte. Ceux-ci sont des objets de donnes
de littraux alphanumriques spcifiques. Il s'agit de littraux alphanumriques spciaux que vous
traduisez sans modification du code source. Avec les symboles de texte, vous crez des listes non
tributaires d'une langue spcifique.
(C) SAP AG
BC400
7-6
Lancement du
programme
Programme ABAP
Objets de donnes
Table de
base de
donnes
START-OF-SELECTION
Mmoire
tampon
de liste
Dans des programmes excutables (type 1), les listes sont automatiquement affiches quand leurs
blocs vnements correspondants sont traits. Ces blocs de traitement doivent cependant contenir
une instruction de cration de liste. Celles-ci sont WRITE, SKIP, et ULINE.
Les vnements sont appels dans un ordre adapt au traitement des listes :
n
Toutes les ditions produites partir de l'vnement START-OF-SELECTION, de sousprogrammes ou de modules fonction, et traites avant l'affichage d'une liste, sont temporairement
stockes dans le buffer de liste.
Une fois tous les blocs vnements de cration de liste (par exemple START-OF-SELECTION)
traits, toutes les donnes du buffer de liste sont dites sous la forme d'une liste.
(C) SAP AG
BC400
7-7
Listes dtailles
Programme ABAP
Objets de donnes
Mmoire
tampon
pour
liste de
base
Table de
base de
donnes
START-OF-SELECTION
AT LINE-SELECTION
Mmoire
tampon
pour liste
dtaille
Temps
Dans des programmes excutables, vous pouvez utiliser le bloc vnement AT LINE-SELECTION
pour crer des listes dtailles.
(C) SAP AG
BC400
7-8
Liste de base
Liste de base
sy-lsind
Listes dtaill
es
dtailles
Liste dtaille 1
sy-lsind
Listes dtaill
es
dtailles
sy-lsind
Liste dtaille 2
Jusqu' vingt
listes dtailles
SAP AG 1999
(C) SAP AG
BC400
7-9
REPORT sapbc400udd_secondary_list_a.
START-OF-SELECTION.
WRITE: / text-001 COLOR col_heading,
/ 'sy-lsind',
sy-lsind color 2.
Symboles de texte :
001
Listes de base
002
Listes dtailles
AT
AT LINE-SELECTION.
LINE-SELECTION.
WRITE: / text-002 COLOR col_heading.
ULINE.
WRITE: / 'sy-lsind',
sy-lsind color 4.
SAP AG 1999
vous crez une liste de base en remplissant le buffer de la liste de base dans un bloc vnement
appropri (dans ce cas START-OF-SELECTION) en utilisant soit WRITE, SKIP, ou ULINE
;
vous pouvez programmer la navigation entre les listes dtailles en testant la zone sy-lsind
dans le bloc vnement AT LINE-SELECTION.
(C) SAP AG
BC400
7-10
Horaire
10:10:00
13:30:00
09:30:00
Dtail : vols
Vous avez choisi
Date du vol
19.12.1998
20.12.1998
24.12.1998
LH
Max.
0402
Occ.
380
380
380
240
270
380
SAP AG 1999
Nous allons maintenant crire un programme en utilisant les listes de base et les listes dtailles.
La liste de base de votre programme doit contenir des donnes de vol telles que le numro de vol, la
compagnie arienne, la ville et l'aroport de dpart, ainsi que les heures de dpart et d'arrive. Toutes
ces informations figurent dans la table SPFLI.
L'utilisateur doit tre en mesure d'accder aux informations sur n'importe quel vol en double-cliquant
sur l'identificateur de compagnie arienne et le numro de vol. La date du vol s'affiche, ainsi que le
nombre de rservations. Ces donnes se trouvent dans la table SFLIGHT. Vous devez utiliser les
zones-cls SPFLI dans cette liste dtaille afin de lire les donnes adquates dans SFLIGHT. Ces
oprations sont dcrites dans les pages suivantes.
(C) SAP AG
BC400
7-11
Zone HIDE
Zone HIDE
Ligne
...
5
6
...
11
Ligne
LH 0400 FRA
LH 0402 FRA
...
SQ 0002 SIN
JFK
JFK
10:10:00
13:30:00
SFO
09:30:00
...
5
6
...
11
wa_spflicarrid
...
LH
LH
...
SQ
wa_spfliconnid
...
0400
0402
...
0002
REPORT sapbc400udd_example_2.
...
START-OF-SELECTION.
SELECT * FROM spfli INTO wa_spfli.
WRITE:/ wa_spfli-carrid, wa_spfli-connid,
wa_spfli-airpfrom, wa_spfli-airpto,
wa_spfli-deptime.
HIDE:
wa_spfli-carrid, wa_spfli-connid.
ENDSELECT.
SAP AG 1999
Lorsque l'vnement AT LINE-SELECTION est trait, les objets de donnes d'un programme
contiennent les mmes valeurs que celles affiches auparavant dans la liste de base. Cependant, une
liste dtaille ncessite souvent des donnes slectionnes dans la liste de base elle-mme. Vous
pouvez utiliser la zone HIDE pour stocker certaines donnes de la ligne que vous avez slectionne
et les insrer automatiquement o vous en avez besoin dans l'objet de donnes correspondant d'une
liste dtaille. Lorsque vous crez une liste de base, dterminez au pralable les informations
classer en fonction de la position de leur ligne.
Pour cela, utilisez le mot-cl ABAP HIDE, suivi de la liste des objets de donnes voulus. Le systme
mmorise automatiquement le nom et le contenu de l'objet de donnes, selon la position de sa ligne
dans la liste.
(C) SAP AG
BC400
7-12
Slection de ligne
Zone HIDE
Ligne
Vol
Dpart Destination Horaire
LH 0400 FRA
JFK
10:10:00
LH 0402 FRA
JFK
13:30:00
...
SQ 0002 SIN
SFO
09:30:00
wa_spfli-carrid
wa_spfli-connid
...
LH
LH
...
SQ
...
0400
0402
...
0002
...
5
6
...
11
?? LH 0402 ??
??
??
wa_spfli
REPORT sapbc400udd_example_2.
AT LINE-SELECTION.
WRITE: text-001,
wa_spfli-carrid,
wa_spfli-connid.
Symboles de texte :
001
Correspondances
SAP AG 1999
Ds que l'vnement interactif (AT LINE-SELECTION dans cet exemple) est appel en plaant le
curseur sur une ligne et en double-cliquant ou slectionnant ensuite l'icne Slectionner, les valeurs
de cette ligne stockes dans la zone HIDE sont recopies dans les zones correspondantes.
(C) SAP AG
BC400
7-13
REPORT sapbc400udd_example_2.
...
Symboles de texte :
AT LINE-SELECTION.
IF sy-lsind = 1.
WRITE: text-001,
wa_spfli-carrid,
wa_spfli-connid.
001
Correspondances
Vous crez une liste dtaille en remplissant le buffer de la liste dtaille dans le bloc vnement AT
LINE-SELECTION en utilisant soit WRITE, SKIP, ou ULINE. Dans ce programme type, les
zones-cls pour la compagnie arienne s'affichent et ses vols disponibles dans la table SFLIGHT
sont lues en utilisant une boucle SELECT. Veuillez noter que les informations spcifiques des lignes
de la compagnie arienne sont disponibles uniquement en double-cliquant sur les objets de donnes
appropris ; ceux-ci avaient t placs dans la zone HIDE lors de la cration de la liste de base.
(C) SAP AG
BC400
7-14
SAP AG 1999
(C) SAP AG
BC400
7-15
Programme :
ZBC400_##_DETAIL_LIST
Solution modle :
SAPBC400UDS_DETAIL_LIST
1-1
1-2
1-3
1-4
1-5
Affichez toutes les rservations pour le vol slectionn partir de la table de base
de donnes SBOOK. Utilisez une structure pour afficher les zones suivantes de la
table de base de donnes SBOOK sur la liste dtaille :
(C) SAP AG
BC400
7-16
BOOKID,
CUSTOMID,
CUSTTYPE
CLASS,
ORDER_DATE,
SMOKER,
CANCELLED,
LOCCURAM,
LOCCURKEY.
1-6
1-7
(C) SAP AG
BC400
7-17
Solutions
SAPBC400UDS_DETAIL_LIST
*&
*
*
*&--------------------------------------------------------------*
REPORT
sapbc400uds_detail_list.
TYPE sbook.
START-OF-SELECTION.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD pa_car
ID 'ACTVT'
FIELD actvt_display.
CASE sy-subrc.
WHEN 0.
SELECT carrid connid fldate seatsmax seatsocc FROM sflight
INTO CORRESPONDING FIELDS OF wa_flight
WHERE carrid = pa_car.
wa_flight-percentage =
100 * wa_flight-seatsocc / wa_flight-seatsmax.
WRITE : / wa_flight-carrid COLOR COL_KEY,
wa_flight-connid COLOR COL_KEY,
wa_flight-fldate COLOR COL_KEY,
wa_flight-seatsocc,
wa_flight-seatsmax,
wa_flight-percentage,'%'.
* Cacher les valeurs de zones-cls correspondant la ligne effective
(C) SAP AG
BC400
7-18
connid = wa_flight-connid
AND
fldate = wa_flight-fldate.
(C) SAP AG
BC400
7-19
Contenu :
l Attributs et avantages des crans de slection
l Dfinir des crans de slection
l valuer une entre utilisateur pour limiter la slection de
base de donnes
l vnements d'cran de slection
l Exemple de syntaxe : contrles de saisie
supplmentaires avec dialogue d'erreur
SAP AG 1999
(C) SAP AG
BC400
8-1
SAP AG 1999
(C) SAP AG
BC400
8-2
cran de slection
Programme ABAP
Objets de donnes
Table de
base de
donnes
Bloc de
traitement
ABAP
Utilisez ces crans pour saisir les critres de slection requis par le programme.
Si vous crez une liste contenant des donnes d'une trs grande table de base de donnes, vous
pouvez utiliser un cran de slection pour limiter la quantit de donnes slectionne. Au moment de
l'excution, spcifiez une plage de valeurs pour une des zones-cls ; seules les donnes comprises
dans cette plage sont lues dans la base et affiches dans la liste. Ceci rduit considrablement la
charge du rseau.
(C) SAP AG
BC400
8-3
cran de slection
Contrles
Contrles de type
Fonctions multilingues
Entre
Entre
valeur
...
Variantes
Aide la recherche
SAP AG 1999
Les crans de slection sont des masques de saisie. L'utilisateur y entre des slections, ce qui rduit
la quantit de donnes lire dans la base. L'utilisateur peut :
slectionner des zones individuelles ;
introduire des entres complexes : plages de valeurs, oprations, modles ;
sauvegarder comme variantes des zones de slection remplies ;
utiliser l'aide la saisie et les aides la recherche en slectionnant la touche de fonction F4 ou le
bouton de commande des entres possibles.
Vous pouvez traduire les textes de slection dans d'autres langues pour les afficher dans la langue de
travail choisie par l'utilisateur.
Le systme effectue automatiquement un contrle des types. En cas de saisie d'une valeur d'un type
incorrecte, un message d'erreur s'affiche. La zone concerne est alors prte accepter la nouvelle
saisie.
(C) SAP AG
BC400
8-4
Saisie de slections
SELECT-OPTIONS ...
PARAMETERS ...
Compagnie
arienne
LH
to
...
Ville de dpart
Compagnie arienne
Valeur individuelle
Suprieur ou gal
Infrieur
Infrieur ou gal
Suprieur
SIGN OPTION LOW
Infrieur
I
GE
LH
Diffrent
Valeurs simples
Plages de valeurs
Exclusion de valeurs simples
Exclusion de plages de valeurs
Slectionner
Exclure de la slection
SAP AG 1999
Les crans de slection vous permettent de saisir des slections complexes tout comme des slections
de valeurs individuelles. Les options de slection programmables sont les suivantes :
n
Chaque cran de slection contient un icone Informations. Slectionnez cet icone pour afficher des
informations complmentaires.
(C) SAP AG
BC400
8-5
Aide la recherche
No.
0400
Aroport Aroport
de dpart d'arrive
FRA
JFK
Heure de
dpart
10:10:00
LH
LH
0402
FRA
13:30:00
JFK
Zone de tables
Zones de structure
Aide la recherche
Aide la recherche
Tables de contrle
Dictionnaire ABAP
lment de donnes
SAP AG 1999
Si vous rfrencez une zone de saisie d'aprs un objet du Dictionnaire ABAP dot d'une aide la
recherche, le systme fournit automatiquement une aide sur les valeurs possibles.
Pour adapter cette aide vos besoins, il est possible de dfinir une aide la recherche dans le
Dictionnaire ABAP.
(C) SAP AG
BC400
8-6
Textes de slection
Fonctions multilingues
Programme
Code source
lments de texte
REPORT bc400td_selection_screen.
:
SELECT-OPTIONS so_carr FOR ...
PARAMETERS pa_city TYPE ...
Compagnie
arienne
LH
...
Titre/en-ttes
Symboles de texte
Textes de slection
SO_CARR
EN Airline carrier
DE
PA_CITY
EN Departing from
DE
Ville de dpart
SAP AG 1999
Sur l'cran de slection, le nom des variables figure ct des zones de saisie. Cependant, vous
pouvez les remplacer par des textes de slection, que vous pouvez ensuite traduire dans toutes les
langues souhaites. Les textes de slection sont affichs dans la langue de travail de l'utilisateur.
(C) SAP AG
BC400
8-7
Variantes
Compagnie
arienne
AA
LH
...
Ville de dpart
Variante
CARRIER_AA_TO_LH:
zone de saisie Hide
Compagnies ariennes
AA LH
Ville de dpart
SAP AG 1999
Vous pouvez dfinir et stocker des variantes pour tout cran de slection. Lancez le programme et
slectionnez Variantes -> Sauvegarder comme variante.
Les variantes facilitent l'utilisation des crans de slection grce aux fonctions suivantes :
n
En cliquant sur l'icone Informations d'un cran de slection, vous obtenez des renseignements
complmentaires sur les variantes. Consultez galement le cours BC405 Reporting dans ABAP
Workbench.
(C) SAP AG
BC400
8-8
Instruction PARAMETERS
Programme ABAP
pa_car
Zones et types dfinis localement
Rfrence
Dictionnaire
ABAP
PARAMETERS pa_car
TYPE s_carr_id.
cran de
slection
s_carr_id
Bloc de
traitement
ABAP
Dans un programme excutable, une seule instruction PARAMETERS suffit pour gnrer un cran de
slection standard.
Si l'utilisateur saisit une valeur et choisit "Excuter", cette valeur est place dans l'objet de donnes
interne <nom> du programme. Le systme n'autorise que les entres de type appropri.
(C) SAP AG
BC400
8-9
Transport de donnes
Programme ABAP
pa_car
pa_car
pa_car
Zones et types dfinis localement
pa_car
PARAMETERS pa_car
TYPE s_carr_id.
cran de
slection
cran de
slection
Bloc de
traitement
ABAP
Temps
Quand le bloc vnement INITIALIZATION a t trait, l'cran de slection est envoy au serveur
de prsentation. PARAMETERS permet de transporter les valeurs dfinies de l'objet de donnes dans
les zones de saisie du mme nom de l'cran de slection.
L'utilisateur peut alors modifier les valeurs des zones de saisie. Si l'utilisateur clique ensuite sur la
fonction "Excuter", les valeurs des zones de saisie sont transportes vers les objets de donnes
portant le mme nom du programme et peuvent tre values dans les blocs de traitement ABAP.
(C) SAP AG
BC400
8-10
REPORT ...
DATA wa_spfli TYPE spfli.
PARAMETERS pa_car TYPE s_carr_id.
...
SELECT
SELECT carrid connid cityfrom cityto ...
FROM spfli
INTO CORRESPONDING FIELDS OF wa_spfli
pa_car
WHERE carrid = pa_car.
WRITE: / wa_spfli-carrid, wa_spfli-connid,
wa_spfli-fldate, ... .
ENDSELECT
ENDSELECT.
SAP AG 1999
Si vous avez utilis l'instruction PARAMETERS pour affecter une zone de saisie la fonction de zone
cl d'une table, vous pouvez limiter la slection de donnes en indiquant la clause WHERE dans
l'instruction SELECT.
Dans notre exemple, seuls les enregistrements de donnes dont la zone-cl CARRID a la mme
valeur que celle contenue dans l'objet de donnes pa_car lors de l'excution sont lus dans la table
SPFLI.
(C) SAP AG
BC400
8-11
OPTIONS SELECT
option
Sign
low
Programme ABAP
high
so_carr
gd_carrid
Zones et types dfinis localement
cran de
slection
Bloc de
traitement
ABAP
sign : dtermine si la valeur ou la plage de valeurs concerne doit tre incluse ou non dans
la slection ;
option : contient l'oprateur. Vous trouverez la liste des oprateurs possibles dans la
documentation mot-cl de l'instruction SELECT-OPTIONS ;
low : contient soit la limite infrieure d'une plage de valeurs, soit une valeur unique ;
La table de slection <nom> renvoie toujours un objet de donnes dj dclar. Celui-ci sert de
zone cible pendant la slection de base de donnes, tandis que la table de slection regroupe les
valeurs possibles. Une version spciale de la clause WHERE existe pour la slection de base de
donnes. Elle dtermine si la base de donnes contient ou non la zone correspondante dans sa rserve
de valeurs possibles.
(C) SAP AG
BC400
8-12
Transport de donnes
Programme ABAP
so_carr
so_
so_carr
gd_carrid
wa_scarr
cran de
slection
Bloc de
traitement
ABAP
Temps
Si vous saisissez plusieurs valeurs ou plages de valeurs et choisissez "Excuter", le systme les place
dans la table interne.
(C) SAP AG
BC400
8-13
REPORT ...
DATA WA_SPFLI TYPE SPFLI.
SELECT-OPTIONS so_carr FOR wa_spfli-carrid.
...
SELECT carrid connid cityfrom cityto ...
FROM spfli
INTO CORRESPONDING FIELDS OF wa_spfli
so_carr
WHERE carrid IN so_carr.
WRITE: / wa_spfli-carrid, wa_spfli-connid,
wa_spfli-cityfrom, wa_spfli-cityto, ...
ENDSELECT
ENDSELECT.
SAP AG 1999
Notre exemple indique comment dlimiter une plage de slection dans une base de donnes pour une
option de slection.
Interprtation des conditions dclares par SELECT-OPTIONS dans une table interne :
n
si la table interne est vide : la condition <zone> IN <selname> est toujours vraie ;
si elle ne contient que des conditions d'inclusion simples i1, ..., in : le rsultat est la
condition complexe ( i1 OR ... OR in ) ;
si la table interne ne contient que des conditions d'exclusion simples e1, ..., em : le rsultat est
la condition combine ( NOT e1 ) AND ... AND ( NOT em );
si la table interne runit les conditions d'inclusion simples i1, ..., in et les conditions
d'exclusion simples e1, ..., em, le rsultat est la condition combine ( i1 OR ... OR
in ) AND ( NOT e1 ) AND ... AND ( NOT em ).
(C) SAP AG
BC400
8-14
Programme ABAP
INITIALIZATION.
AT SELECTION-SCREEN.
Non
Oui START-OF-SELECTION
Systme d'excution ABAP
SAP AG 1999
Temps
Dans un programme excutable, le systme d'excution ABAP gnre un cran de slection standard
si vous avez crit au moins une instruction PARAMETERS ou SELECT-OPTIONS. L'cran de
slection appartient l'vnement AT SELECTION-SCREEN.
Lorsque vous appuyez sur la touche Entre ou sur une touche de fonction, cliquez sur un bouton de
commande ou bien choisissez une fonction de menu, le systme effectue un contrle de type. Si les
entres ne sont pas du type adquat, il affiche un message d'erreur et attend une nouvelle entre. Une
fois le type corrig, il dclenche l'vnement AT SELECTION-SCREEN.
(C) SAP AG
BC400
8-15
Programme ABAP
INITIALIZATION.
AT SELECTION-SCREEN.
MESSAGE e001.
Non
Oui START-OF-SELECTION
Systme d'excution ABAP
SAP AG 1999
Temps
Utilisez l'vnement AT SELECTION-SCREEN chaque fois que vous souhaitez programmer des
contrles supplmentaires un cran de slection standard.
(C) SAP AG
BC400
8-16
AT SELECTION-SCREEN : syntaxe
SAP AG 1999
Comme exemple de contrle de saisie supplmentaire avec dialogue d'erreur, une zone de saisie pour
l'identificateur de la compagnie arienne doit tre ajoute au programme.
(C) SAP AG
BC400
8-17
SAP AG 1999
(C) SAP AG
BC400
8-18
(C) SAP AG
BC400
8-19
(C) SAP AG
BC400
8-20
ZBC400_##_SEL_SCREEN
Solution modle :
SAPBC400UDS_SEL_SCREEN
1-1
1-2
Compltez votre cran de slection pour permettre lutilisateur de saisir une plage
de valeurs complexes pour le numro de vol CONNID.
1-3
1-4
Modifiez votre programme pour que lutilisateur ne puisse pas continuer aprs
lcran de slection si le contrle dautorisation sur lobjet dautorisation
S_CARRID choue. Si le contrle dautorisation choue, affichez un message
(C) SAP AG
BC400
8-21
(C) SAP AG
BC400
8-22
Solutions
(C) SAP AG
BC400
8-23
(C) SAP AG
BC400
8-24
SAPBC400UDS_SEL_SCREEN
*&
*
*
*&--------------------------------------------------------------*
REPORT
sapbc400uds_sel_screen.
TYPE sbook.
FIELD actvt_display.
IF sy-subrc <> 0.
BC400
8-25
connid IN so_con.
wa_flight-percentage =
100 * wa_flight-seatsocc / wa_flight-seatsmax.
WRITE : / wa_flight-carrid COLOR COL_KEY,
wa_flight-connid COLOR COL_KEY,
wa_flight-fldate COLOR COL_KEY,
wa_flight-seatsocc,
wa_flight-seatsmax,
wa_flight-percentage,'%'.
HIDE: wa_flight-carrid, wa_flight-connid, wa_flight-fldate.
ENDSELECT.
AT LINE-SELECTION.
IF sy-lsind = 1.
WRITE: / wa_flight-carrid, wa_flight-connid, wa_flight-fldate.
ULINE.
SKIP.
SELECT bookid customid custtype class order_date
smoker cancelled loccuram loccurkey
FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook
WHERE carrid = wa_flight-carrid
AND
connid = wa_flight-connid
AND
fldate = wa_flight-fldate.
WRITE: / wa_sbook-bookid,
wa_sbook-customid,
wa_sbook-custtype,
wa_sbook-class,
wa_sbook-order_date,
wa_sbook-smoker,
wa_sbook-cancelled,
wa_sbook-loccuram CURRENCY wa_sbook-loccurkey,
wa_sbook-loccurkey.
ENDSELECT.
ENDIF.
(C) SAP AG
BC400
8-26
Contenu :
l Attributs et avantages des dynpros
l Crer des dynpros
l Layout
l Attributs de zone
l Logique d'excution
l Transport de donnes
l Utiliser les boutons de commande et valuer les actions
utilisateur
SAP AG 1999
(C) SAP AG
BC400
9-1
SAP AG 1999
(C) SAP AG
BC400
9-2
Droulement
du programme
Contrles
Contrles de type
flexible
100
120
200
140
Aide la recherche
300
Contrles
Contrles de cohrence
cohrence
avec saisie de donnes
donnes
SAP AG 1999
Les dynpros sont plus que de simples moniteurs dots de zones de saisie et d'dition.
Vous utilisez les dynpros intgrs au Dictionnaire ABAP pour effectuer des contrles de cohrence
automatiques sur leurs zones de saisie. Ces contrles portent sur les saisies, les types, les cls et les
valeurs fixes. Ils reposent tous sur les informations contenues dans le Dictionnaire ABAP.
Vous pouvez effectuer des contrles complmentaires spcifiques du programme. Des techniques
adaptes aux dynpros vous permettent de vrifier l'ordre dans lequel ces contrles sont effectus.
Lorsqu'une erreur est dtecte, la zone concerne est appele et raffiche pour une nouvelle saisie.
Le layout des dynpros est galement trs flexible. Les zones de saisie, les zones de sortie, les cases
d'option, les cases cocher, et mme les boutons de commande peuvent tre placs sur les dynpros.
Ils permettent aux utilisateurs de dterminer la direction dans laquel le programme va procder.
Les programmes contenant des dynpros se caractrisent donc par une grande souplesse.
(C) SAP AG
BC400
9-3
Code de transaction
100
200
120
140
SAP AG 1999
Vous pouvez appeler un dynpro partir de n'importe quel bloc de traitement ABAP.
Pour lier entre eux plusieurs dynpros et les appeler partir d'un programme, appelez le premier.
- Certains programmes ABAP se composent uniquement de dynpros et des blocs de traitement
correspondants. Dans ce cas, le premier dynpro est appel directement en utilisant un code de
transaction.
(C) SAP AG
BC400
9-4
Exemple de dynpro
8:24
10:10:00
Retour
SAP AG 1999
Dans les prochains chapitres, vous allez dvelopper un programme de modification des donnes de
vol standard.
n
Appelez le dynpro par un double-clic sur une des entres de la liste de base "Liste des vols". Ce
dynpro affiche les donnes contenues dans la ligne slectionne, ainsi que des informations
complmentaires sur la compagnie arienne. Vous pouvez modifier l'horaire de vol ainsi que
l'heure de dpart.
Il est possible de modifier la base de donnes en utilisant des modules de fonction. Consultez le
chapitre Dialogues de base de donnes II pour en apprendre davantage sur ce processus.
(C) SAP AG
BC400
9-5
Screen
Painter
Attributs
de dynpro
Numro de dynpro
Courte description
Type de dynpro
Dynpro suivant
...
Layout
de dynpro
Attributs
de zone
Compagnie
arienne
Nom de zone
Longueur
de zone
Saisie
x
Sortie
...
Commande d'excution
SAP AG 1999
(C) SAP AG
BC400
9-6
SAP AG 1999
Pour crer un dynpro, vous commencez par dfinir sa structure et les attributs de ses zones. Les
zones Compagnie arienne, Numro de vol, Aroport de dpart, et Aroport d'arrive doivent se
prsenter comme des zones d'dition, Temps de vol et Heure de dpart comme des zones de saisie.
Vous devez tre en mesure d'appeler votre dynpro en double-cliquant sur une ligne de la liste de base
et de retourner la liste de base en slectionnant la touche de fonction approprie sur le dynpro.
(C) SAP AG
BC400
9-7
ABAP
Crer un objet
:
AT LINE-SELECTION.
:
CALL SCREEN 100
100. Double-clic
:
Screen
Painter
Non
Annuler
Attributs de dynpro
Courte description
Type de dynpro
Normal
Sous-dynpro
Bote de dialogue modale
Dynpro suivant
SAP AG 1999
par la Navigation forward, partir de l'diteur ABAP, cliquez sur le numro de dynpro et
accdez automatiquement au Screen Painter ; accdez automatiquement au Screen Painter ;
Lorsque vous crez le premier dynpro, le systme vous demande de saisir ses attributs. Entrez une
courte description de votre dynpro, choisissez le type Normal, puis saisissez le numro de dynpro
suivant dans la zone de saisie Dynpro suivant.
Si vous tapez 0 ou que vous laissez la zone Dynpro suivant vide, le systme effectue d'abord un
traitement complet du dynpro, puis reprend le traitement du programme au point qui suit
immdiatement l'appel du dynpro. N'oubliez pas que la valeur 0 est supprime de la zone de saisie
Dynpro suivant, puisqu'elle est identique la valeur initiale de la zone.
Dans notre exemple, vous appelez votre dynpro partir d'une liste de base. CALL SCREEN 100
doit donc faire partie de l'vnement AT LINE-SELECTION.
(C) SAP AG
BC400
9-8
sdyn_conn
Compagnie arienne
Numro de vol
Aroport de dpart
Destination
Dure du vol
Heure de dpart
SAP AG 1999
Vous affectez des attributs aux zones d'un dynpro de deux faons :
n
partir du Dictionnaire, en utilisant les types et les attributs de zone fournis dans les
structures du Dictionnaire ABAP. Toutes les informations relatives l'objet sont accessibles, y
compris des informations smantiques sur ses lments de donnes et ses liens avec des cls
externes. Le nom de la zone du Dictionnaire est automatiquement affect la zone du dynpro.
partir d'un programme, en utilisant les attributs de zone d'objets de donnes pralablement
dfinis dans un programme. Pour cela, une copie active du programme doit dj exister. Le
nom de l'objet de donnes est automatiquement affect la zone du dynpro.
Vous pouvez dfinir facilement des lments du dynpro tels que zones de saisie ou d'dition, textes
de mots-cls, bordures, etc., partir de l'interface du Screen Painter graphique. Choisissez un
lment dans la colonne de gauche, puis placez-le sur le dynpro avec la souris.
Pour effacer un lment du dynpro, slectionnez-le avec la souris, puis choisissez "Effacer".
(C) SAP AG
BC400
9-9
Attributs
T
Nom
Texte
Ligne
Compagnie arienne
Numro de vol
X
Aroport de dpart
Destination
SDYN_CONN-CARRID
Colonne
FCode
Dure du vol
Heure de dpart
FType
Zone de saisie
Zone d'dition
Zone requise
...
SAP AG 1999
Pour grer les attributs de zone d'un dynpro, slectionnez une zone et choisissez Attributs.
Vous pouvez dfinir certaines zones comme obligatoires. ("Zone obligatoire"). Si la zone est initiale,
un point d'interrogation s'affiche en cours d'excution.
Si les zones obligatoires ne sont pas toutes remplies lors de l'excution et qu'une action utilisateur
s'effectue, un dialogue d'erreur se dclenche et toutes les zones de saisie se raffichent pour une
nouvelle entre.
(C) SAP AG
BC400
9-10
Nom de zone
SBOOK-CARRID
TEXT
SDYN_CONN-CARRID
SDYN_CONN-CARRID
.
.
.
Attr. gn.
vLg
Afficher attr.
Type de zone
5Text 14
16
I/O
...
16
.1
..
Modif. taille
Rfrences
O seult.
CHAR
...
SAP AG 1999
Pour diter les attributs de zones d'un dynpro, choisissez Liste des zones.
Vous pouvez galement accder cette fonction sous un format diffrent depuis le Screen Painter
graphique.
(C) SAP AG
BC400
9-11
FRA
Dure du vol
Heure de dpart
8:24
JFK
10:10:00
SAP AG 1999
Dans la 2me tape vous allez apprendre programmer le transport de donnes d'une liste de base
vers votre dynpro.
en double-cliquant sur une des lignes de la liste de base, vous accdez un dynpro. Celui-ci
affiche les principales informations concernant le vol qui l'intresse. L'horaire et la dure du vol
s'affichent dans une zone de saisie et peuvent donc tre modifis ;
des conditions requises pour le transport automatique de donnes d'un programme vers une zone
de dynpro ;
(C) SAP AG
BC400
9-12
Interfaces de dynpro
Programme ABAP
Objets de donnes
wa_spfli
sdyn_
sdyn_conn
sdyn_conn
Zones et types dfinis localement
Dynpro 100
Bloc de
traitement
ABAP
SAP AG 1999
L'instruction TABLES dclare un objet de donnes interne servant d'interface au dynpro. Elle
renvoie toujours une structure dfinie dans le Dictionnaire ABAP.
Si une instruction TABLES et une zone de dynpro renvoient toutes deux la mme structure du
Dictionnaire, les donnes de cet objet sont transportes vers les zones de dynpro chaque fois que
celui-ci est appel. Toute nouvelle saisie ou tout changement effectu sur le dynpro sont ensuite
transfrs vers l'objet de donnes.
Le Dictionnaire ABAP contient des structures dont les zones correspondent diffrentes tables. Ces
tables correspondent leur tour une vue commerciale de diffrentes applications. Les programmes
crs dans le cadre de ce cours emploient une structure pour la gestion des donnes de base
(sdyn_conn), et une autre pour les rservations (sdyn_book). Si vous utilisez vos propres
structures comme interfaces, vous rendrez vos programmes plus faciles comprendre et viterez les
erreurs.
(C) SAP AG
BC400
9-13
Programme ABAP
Objets de donnes
wa_spfli
sdyn_
sdyn_conn
sdyn_conn
Zones et types dfinis localement
Process
Before
Output
Process
After
Input
Screen 100
Bloc de
traitement
ABAP
Le transport de donnes s'effectue automatiquement entre les zones de dynpro et les zones du
programme qui portent le mme nom.
n
Temps
Immdiatement avant l'envoi d'un dynpro au serveur de prsentation (aprs que tous les
modules vnements PBO ont t traits), le systme copie le contenu des zones de l'espace de
travail ABAP dans leurs zones correspondantes de l'espace de travail du dynpro.
Les instructions ABAP facilitent le transport de donnes entre les objets de donnes du programme
et l'espace de travail dsign comme interface du dynpro.
(C) SAP AG
BC400
9-14
Programme ABAP
Objets de donnes
wa_spfli
sdyn_
sdyn_conn
sdyn_conn
Zones et types dfinis localement
Process
Before
Output
Process
After
Input
Screen 100
Bloc de
traitement
ABAP
Le transport de donnes s'effectue automatiquement entre les zones de dynpro et les zones du
programme qui portent le mme nom.
n
Temps
Immdiatement aprs une action utilisateur (avant que le premier module PAI ne soit trait), le
systme copie le contenu des zones de l'espace de travail du dynpro dans leurs zones
correspondantes de l'espace de travail ABAP.
Les instructions ABAP facilitent le transport de donnes entre l'espace de travail dsign comme
interface du dynpro et les objets de donnes du programme.
(C) SAP AG
BC400
9-15
Flux de donnes
Structure :
Zones :
wa_spfli
Liste
de base Zone HIDE
MANDT
CARRID
CONNID
COUNTRYFR
CITYFROM
AIRPFROM
COUNTRYTO
CITYTO
AIRPTO
FLTIME
DEPTIME
ARRTIME
DISTANCE
DISTID
FLTYPE
!
!
!
!
sdyn_conn
Dynpro :
Zone d'dition Zone de saisie
!
!
!
!
!
!
!
Pour garantir une mise jour des donnes affiches sur le dynpro, l'enregistrement est relu depuis la
base de donnes au dbut de AT LINE-SELECTION.
(C) SAP AG
BC400
9-16
START-OF-SELECTION.
*
SELECT carrid connid airpfrom cityfrom airpto cityto
INTO CORRESPONDING FIELDS OF wa_spfli
FROM spfli.
WRITE: / wa_spfli-carrid COLOR COL_KEY,
wa_spfli-connid COLOR COL_KEY,
...
.
* zones-cls mises en buffer
HIDE:
wa_spfli-carrid,
wa_spfliHIDE:
wa_spfli-carrid,
wa_spfli-connid.
connid.
ENDSELECT.
AT LINE-SELECTION.
SELECT SINGLE * FROM spfli
INTO spfli
wa_spfli
SELECT SINGLE * FROM
WHEREwa_spfli
carrid = wa_spfli-carrid
INTO
AND carrid
connid==wa_spfli-carrid
wa_spfli-connid.
WHERE
MOVE-CORRESPONDING
wa_spfli
sdyn_conn.
AND
connid to
= wa_spfli-connid.
CALL SCREEN 100.
SAP AG 1999
Pour afficher des donnes sur le dynpro, la structure TABLES doit comporter les donnes actuelles
avant que le dynpro ne soit envoy au serveur de prsentation. L'exemple ci-dessus montre une
manire d'y parvenir.
L'instruction HIDE s'utilise pour placer des zones-cls des tables de base de donnes se rfrant la
ligne de liste dans la zone HIDE. Les donnes effectives de la ligne slectionne deviennent ensuite
disponibles dans les zones wa_spfli-carrid et wa_spfli-connid l'vnement AT
LINE-SELECTION.
L'enregistrement de donnes est lu depuis la base de donnes en utilisant SELECT SINGLE. Ceci
garantit que la structure contienne les donnes jour, mme si l'utilisateur vient de les modifier. Elle
doit tre du mme type que la ligne de table, pour que les zones correctes soient accessibles pour
toutes les donnes de l'enregistrement.
Les zones correspondantes sont copies vers la structure TABLES sdyn_conn en utilisant MOVECORRESPONDING. Le systme transporte automatiquement les donnes de la structure vers les
zones du dynpro.
(C) SAP AG
BC400
9-17
Vol
Dpart
Destination
barre d'tat
Dpart
LH 0400 FRA Francfort JFK New York
LH 0402 FRA Francfort JFK New York
...
Dynpro
SQ 0002 SIN Singapour SFO San Francisco
Modifier donnes
donnes de vol C
Compagnie arienne LH
Numro de vol
0400
Message 2
dans barre
d'tat
Aroport de dpart
Destination
FRA
Dure du vol
Heure de dpart
8:24
Sauvegarder
JFK
10:10:00
Retour
SAP AG 1999
Dans l'tape 3, vous allez apprendre comment dfinir des codes fonction pour des boutons de
commande. Ces fonctions assurent le traitement de diffrents types de logique de programme, selon
le choix opr.
en double-cliquant sur une des lignes de la liste de base, vous accdez un dynpro. Celui-ci
affiche les principales informations concernant le vol qui l'intresse. L'horaire et la dure de vol
peuvent tre modifis ;
en slectionnant le bouton de commande "Retour", l'utilisateur revient la liste de base sans que
la base de donnes soit modifie. Le message "Le dynpro a t quitt sans aucune modification"
s'affiche dans la barre d'tat de la liste de base ;
slectionnez "Sauvegarder" pour crire toutes vos modifications dans la base de donnes.
slectionnez "Sauvegarder" pour crire toutes vos modifications dans la base de donnes. Nous
reviendrons plus profondment sur cette tape dans le chapitre Dialogues de base de donnes II.
Dans la partie suivante, le bouton de commande est dj prpar. Vous devez retourner la liste
de base aprs avoir slectionn le bouton de commande et un message doit s'afficher dans la
barre d'tat ;
Les modifications de la base de donnes sont traites dans le chapitre Dialogues de base de donnes
II.
(C) SAP AG
BC400
9-18
(C) SAP AG
BC400
9-19
Attributs
T
Nom
Texte
Ligne
Compagnie arienne
Numro de vol
X
BOUTON2
Retour
Colonne
Aroport de dpart
Destination
FCode
Dure du vol
Heure de dpart
Sauvegarder
RETOUR
FType
Retour
Zone de saisie
Zone de sortie
...
SAP AG 1999
Pour dfinir la fonction de boutons de commande spcifiques, vous devez affecter ces boutons un
code de fonction. Vous pouvez le faire soit sur le dynpro des attributs, soit dans la liste des zones du
Screen Painter graphique.
(C) SAP AG
BC400
9-20
diteur
ABAP
TABLES: sdyn_conn.
DATA:
DATA: ok_code
ok_code like
LIKE sy-ucomm.
sy-ucomm.
Screen
Painter
OK
Nom de zone
Texte de zone
Code de fonction
BOUTON1
BOUTON2
OK_CODE
Sauvegarder
Retour
SAUVEGARDER
RETOUR
...
...
SAP AG 1999
La zone OK_CODE est un objet de donnes qui intgre le code de fonction correspondant aprs
chaque action utilisateur.
Le nom de zone OK_CODE doit toujours figurer sur la dernire ligne de la liste de zones du dynpro.
Si vous dfinissez un objet de donnes correspondant portant le mme nom dans l'espace de
dclaration d'un programme, le systme place dans cet objet le code de fonction du bouton choisi au
moment de l'excution. La zone sy-ucomm sert de zone de rfrence.
(C) SAP AG
BC400
9-21
Modules
Programme ABAP
Objets de donnes
100
CALL SCREEN 100.
PBO
MODULE
<name>.
MODULE <name>
OUTPUT.
ENDMODULE.
PAI
MODULE
<name>.
MODULE <name>
INPUT.
ENDMODULE.
PROCESS BEFORE OUTPUT (PBO) est trait immdiatement avant l'affichage d'un
dynpro. La fonction des modules appels ce stade est, par exemple, d'insrer des valeurs
recommandes dans les zones de saisie.
PROCESS AFTER INPUT (PAI) est trait immdiatement aprs une action utilisateur. Toute
logique de programme influence par une action utilisateur doit tre traite au PAI. Vous
trouverez plus de dtails ce sujet l'tape 3.
Note : le code des vnements PBO et PAI s'crit en utilisant Screen Painter et non l'diteur
ABAP. Ces deux blocs d'vnements constituent la logique d'excution d'un dynpro.
Lorsque vous programmez cette logique, utilisez la syntaxe Dynpro ABAP. Parmi ces commandes,
MODULE <nom module ABAP> est la plus importante. Elle appelle un module, qui est un bloc
de traitement ABAP spcifique.
Les modules sont des blocs de traitement ABAP ne comportant aucune interface, appels
uniquement depuis la logique d'excution du dynpro. Les modules commencent par l'instruction
ABAP MODULE et se terminent par ENDMODULE.
La logique de programme, qui appartient logiquement un dynpro spcifique, doit normalement tre
excute aux vnements PBO et PAI du dynpro.
(C) SAP AG
BC400
9-22
Programme ABAP
Objets de donnes
100
CALL SCREEN 100.
PBO
PAI
Attributs de dynpro
Dynpro
suivant
Dynpro suivant 0
Si vous entrez 0 dans la zone Dynpro suivant ou si vous la laissez vide, le systme traite d'abord la
totalit du dynpro, puis reprend le traitement du programme au point o le dynpro a t appel.
(C) SAP AG
BC400
9-23
Programme ABAP
Objets de donnes
100
CALL SCREEN 100.
PBO
PAI
Attributs de dynpro
Dynpro
suivant
100
Si vous paramtrez 100 le dynpro suivant du dynpro 100, le systme traite nouveau ce dynpro
aprs avoir fini de traiter le module PAI.
(C) SAP AG
BC400
9-24
Programme ABAP
Objets de donnes
100
CALL SCREEN 100.
PBO
PAI
SET
SCREEN 0.
SET SCREEN
0.
0
Attributs de dynpro
Dynpro
suivant
100
Dynpro suivant 0
Vous pouvez utiliser l'instruction ABAP SET SCREEN <nnnn> dans un module PAI pour
substituer de manire dynamique la valeur paramtre dans l'attribut Dynpro suivant.
Les zones Numro de dynpro et Dynpro suivant comportent souvent le mme numro de dynpro.
Dans ce cas, lorsque vous choisissez Entre, un contrle de zone est effectu et le systme revient au
mme dynpro. Afin de quitter ce dynpro, vous devez dfinir un bouton de commande qui
dclenchera un changement Dynpro suivant dans le module PAI.
(C) SAP AG
BC400
9-25
Logique du programme
Screen
Painter
diteur
ABAP
Sauvegarder
Retour
CASE ok_code.
WHEN 'BACK'. ...
WHEN 'SAVE'. ...
ENDCASE.
ENDMODULE.
SAP AG 1999
Si une zone OK_CODE n'est pas rinitialise, des erreurs risquent de se produire car les boutons de
commande ne sont pas tous dots d'un code de fonction. Il existe deux manires d'y parvenir :
initialisez la zone OK_CODE dans le module PBO. Elle est alors mise sa valeur initiale au
moment du PAI, moins que l'utilisateur ait excut une action utilisateur laquelle est affect un
code de fonction. Dans ce cas, la zone OK_CODE contient le code de fonction ;
utilisez une zone auxiliaire, et dans un module du PAI, copiez le contenu de la zone OK_CODE
dans la zone auxiliaire. Rinitialisez alors la zone OK_CODE. Dans ce cas c'est la zone auxiliaire
qui doit tre teste dans le module PAI pour valuer le code de fonction.
(C) SAP AG
BC400
9-26
Crer un objet
Oui
Non
Annuler
USER_COMMAND_0100
Inclure slection
ZBC400_00_DYNPRO
Inclure
Programme principal
diteur
ABAP
ENDMODULE.
SAP AG 1999
Vous pouvez implmenter des appels tels que MODULE dans la logique d'excution d'un dynpro
(vnements PBO et PAI). Vous utilisez toutefois ABAP pour crer les modules.
par la navigation, faites un double-clic sur le nom du module partir de l'diteur du Screen
Painter ;
par Object Navigator, affichez votre programme, choisissez "Module PBO" ou "Module PAI'
dans Objets de programme et crez un nouvel objet de dveloppement en cliquant sur l'icone
Crer.
Vous pouvez appeler un mme module depuis plusieurs dynpros. (Possible rutilisation)
N'oubliez pas que les modules appels aux vnements PBO doivent tre dfinis en utilisant
l'instruction MODULE ... OUTPUT. Les modules dfinis par MODULE ... INPUT ne peuvent tre
appels qu' des vnements PAI.
(C) SAP AG
BC400
9-27
.
.
MODULE USER_COMMAND_100 INPUT.
CASE ok_code.
WHEN
WHEN 'BACK'.
'BACK'.
SET SCREEN 0.
MESSAGE s057(BC400).
WHEN
WHEN 'SAVE'.
'SAVE'.
* L'appel d'un module de fonction pour sauvegarder les
modifications est laiss
* pour des raisons didactiques jusqu'au chapitre "Dialogues de
base de donnes II"
SET SCREEN 0.
MESSAGE s058(BC400).
ENDCASE.
ENDMODULE.
SAP AG 1999
Dans cet exemple, deux boutons de commande doivent dclencher la modification de la valeur
affiche dans Dynpro suivant :
n
"Retour" rtablit automatiquement cette valeur 0. L'utilisateur est renvoy au dernier dynpro
appel avant celui-ci.
"Sauvegarder" appelle l'affichage d'un message S. L'utilisateur accde alors une liste de base
ou une liste dtaille identique celle affiche lorsque "Retour" est slectionn.
(C) SAP AG
BC400
9-28
SAP AG 1999
(C) SAP AG
BC400
9-29
Exercices
(C) SAP AG
BC400
9-30
(C) SAP AG
BC400
9-31
Chapitre : Dynpro
Sujet : Cration de dynpros
ZBC400_##_DYNPRO
Solution modle :
SAPBC400UDS_DYNPRO_1
Modle :
SAPBC400UDT_DYNPRO_1
1-1
1-2
1-3
1-4
(C) SAP AG
BC400
9-32
1-5
1-6
(C) SAP AG
Crez des zones de saisie/ddition sur le dynpro. Lorsque vous affectez des types
de zone, rfrez-vous la structure SDYN_BOOK du Dictionnaire ABAP.
le nom client NAME doit safficher ct du numro client sans texte (attribut
dition uniquement) ;
BC400
9-33
Chapitre : Dynpro
Sujet : Transport de donnes
Programme :
ZBC400_##_DYNPRO
Solution modle :
SAPBC400UDS_DYNPRO_2
2-1
2-2
2-3
2-4
Le programme doit ensuite tre complt afin de modifier les donnes de la base de
donnes. Assurez-vous que lutilisateur dispose dune autorisation de modification
pour la compagnie arienne choisie.
Pour vous assurer quun double-clic sur une ligne de la liste de base permet
dafficher des donnes jour, lenregistrement de donnes doit tre consult partir
de la table de base de donnes SBOOK avant le traitement du dynpro.
(C) SAP AG
BC400
9-34
Pour cela, avant dappeler le dynpro, copiez les donnes les plus rcentes de la
rservation slectionne de la table SBOOK vers une structure qui possde la mme
structure de ligne que la table de base de donnes. Si lenregistrement de donnes
ne peut tre lu, le systme doit afficher le message dinformation 176 de la classe de
messages BC400. Si lenregistrement est lu avec succs, appelez le dynpro.
2-5
Juste avant d'appeler le dynpro, copiez les donnes appropries vers la zone de
travail TABLES, qui sert dinterface au dynpro.
Chapitre : Dynpro
Sujet : Transport de zone et traitement dynpro suivant
(C) SAP AG
BC400
9-35
Programme :
ZBC400_##_DYNPRO
Solution modle :
SAPBC400UDS_DYNPRO_3
3-1
3-2
Nom du bouton de
commande
PUSH_BACK
Retour
RETOUR
PUSH_SAVE
Sauvegarder
SAUVEGARDER
Texte
Code de fonction
ou icne
ICON_SYSTEM_SAVE
3-3
3-4
Code de fonction
RETOUR
Aucun
Dynpro suivant
Liste
SAUVEGARDER
D'abord :
Liste
(C) SAP AG
Action
BC400
9-36
Code de fonction
Action
Dynpro suivant
N du message
dinformations
060(BC400)
Autres
3-5
(C) SAP AG
Aucun
Dynpro 100
BC400
9-37
Solutions
(C) SAP AG
BC400
9-38
Chapitre : Dynpro
Sujer : Cration de dynpros
SAPBC400UDS_DYNPRO_1
*&
*
*
*&--------------------------------------------------------------*
REPORT
sapbc400uds_dynpro_1.
START-OF-SELECTION.
SELECT id name FROM scustom INTO TABLE it_cust.
SELECT carrid connid fldate bookid customid
FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook
WHERE agencynum = pa_agnum.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
(C) SAP AG
BC400
9-39
ID 'ACTVT'
FIELD actvt_display.
IF sy-subrc = 0.
READ TABLE it_cust INTO wa_cust
WITH TABLE KEY id = wa_sbook-customid.
WRITE: / wa_sbook-carrid COLOR COL_KEY,
wa_sbook-connid COLOR COL_KEY,
wa_sbook-fldate COLOR COL_KEY,
wa_sbook-bookid COLOR COL_KEY,
wa_cust-name COLOR COL_KEY.
ENDIF.
ENDSELECT.
(C) SAP AG
BC400
9-40
Chapitre : Dynpro
Sujet : Transport de donnes
*&--------------------------------------------------------------*
*& Report
SAPBC400UDS_DYNPRO_2
*&
*
*
*&--------------------------------------------------------------*
REPORT
sapbc400uds_dynpro_2.
TABLES: sdyn_book.
PARAMETERS: pa_agnum TYPE s_agncynum.
DATA: wa_cust TYPE sbc400cust,
it_cust TYPE sbc400_t_sbc400cust.
DATA: wa_sbook TYPE sbook.
START-OF-SELECTION.
SELECT id name FROM scustom INTO TABLE it_cust.
FIELD actvt_display.
IF sy-subrc = 0.
READ TABLE it_cust INTO wa_cust
WITH TABLE KEY id = wa_sbook-customid.
WRITE: / wa_sbook-carrid COLOR COL_KEY,
wa_sbook-connid COLOR COL_KEY,
wa_sbook-fldate COLOR COL_KEY,
(C) SAP AG
BC400
9-41
AT LINE-SELECTION.
IF sy-lsind = 1.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
ID 'ACTVT' FIELD actvt_change.
IF sy-subrc = 0.
SELECT SINGLE * FROM sbook INTO wa_sbook
WHERE carrid
= wa_sbook-carrid
AND
connid
= wa_sbook-connid
AND
fldate
= wa_sbook-fldate
AND
bookid
= wa_sbook-bookid.
IF sy-subrc <> 0.
MESSAGE i176(bc400).
ELSE.
MOVE-CORRESPONDING wa_sbook TO sdyn_book.
MOVE wa_scust-name TO sdyn_book-name.
CALL SCREEN 100.
ENDIF.
ELSE.
MESSAGE s047(bc400) WITH wa_sbook-carrid.
ENDIF.
ENDIF.
CLEAR wa_sbook.
(C) SAP AG
BC400
9-42
Chapitre : Dynpro
Sujet : Transport de zone et traitement dynpro suivant
*&--------------------------------------------------------------*
*& Report
SAPBC400UDS_DYNPRO_3
*&
*
*
*&--------------------------------------------------------------*
REPORT
sapbc400uds_dynpro_3.
TABLES: sdyn_book.
PARAMETERS: pa_agnum TYPE s_agncynum.
DATA: wa_cust TYPE sbc400cust,
it_cust TYPE sbc400_t_sbc400cust.
DATA: wa_sbook TYPE sbook.
DATA: ok_code LIKE sy-ucomm, save_ok LIKE ok_code.
START-OF-SELECTION.
SELECT id name FROM scustom INTO TABLE it_cust.
SELECT carrid connid fldate bookid customid
FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook
WHERE agencynum = pa_agnum.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
ID 'ACTVT'
FIELD actvt_display.
IF sy-subrc = 0.
READ TABLE it_cust INTO wa_cust
WITH TABLE KEY id = wa_sbook-customid.
WRITE: / wa_sbook-carrid COLOR COL_KEY,
wa_sbook-connid COLOR COL_KEY,
(C) SAP AG
BC400
9-43
AT LINE-SELECTION.
IF sy-lsind = 1.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
ID 'ACTVT' FIELD actvt_change.
IF sy-subrc = 0.
SELECT SINGLE * FROM sbook INTO wa_sbook
WHERE carrid
= wa_sbook-carrid
AND
connid
= wa_sbook-connid
AND
fldate
= wa_sbook-fldate
AND
bookid
= wa_sbook-bookid.
IF sy-subrc <> 0.
MESSAGE i176(bc400).
ELSE.
MOVE-CORRESPONDING wa_sbook TO sdyn_book.
MOVE wa_scust-name TO sdyn_book-name.
CALL SCREEN 100.
ENDIF.
ELSE.
MESSAGE s047(bc400) WITH wa_sbook-carrid.
ENDIF.
ENDIF.
CLEAR wa_sbook.
*&--------------------------------------------------------------*
*&
Module
USER_COMMAND_0100
INPUT
*&--------------------------------------------------------------*
(C) SAP AG
BC400
9-44
*
droulement de dynpro dynamique dpendant dune action
utilisateur
*---------------------------------------------------------------*
MODULE user_command_0100 INPUT.
save_ok = ok_code .
* Effacer la zone OK-Code afin de linitialiser sur dynpro
* suivant
CLEAR ok_code .
CASE save_ok.
WHEN 'BACK'.
SET SCREEN 0.
WHEN 'SAVE'.
MOVE-CORRESPONDING sdyn_book TO wa_sbook.
* La sauvegarde des donnes modifies sera excute ultrieurement
message i060(bc400).
SET SCREEN 0.
WHEN OTHERS.
SET SCREEN 100.
ENDCASE.
ENDMODULE.
(C) SAP AG
" USER_COMMAND_0100
BC400
INPUT
9-45
Interfaces
Contenu :
l Cration d'interfaces dans le Menu Painter
l Titres
l Barres de menus
l Barres d'outils standard
l Barres d'outils d'application
SAP AG 1999
(C) SAP AG
BC400
10-1
SAP AG 1999
(C) SAP AG
BC400
10-2
Traiter
Saut
Systme
Aide
Titre GUI
SET TITLEBAR <n>.
Aide
Slection
Retour
.
.
.
F1
F2
F3
Barre de menus
Barre d'outils
standard
B. d'outils d'applic.
Affectation de
touches de fonction
Statut GUI
SET PF-STATUS <n>.
SAP AG 1999
une barre de titre contenant le titre de l'cran, de l'cran de slection ou de la liste affiche ;
des menus contenant les fonctions excutables du programme en cours. Un menu peut comporter des
sous-menus. Les menus "Systme" et "Aide" se trouvent sur chaque cran du systme R/3 et
contiennent toujours les mmes fonctions. Aucun de ces menus ne peut tre modifi ni masqu.
une barre d'outils standard dont les icnes correspondent aux fonctions les plus frquemment
utilises. La barre d'outils standard de R/3 contient toujours les mmes icnes, auxquelles sont
affectes des fonctions standard. Les fonctions qui ne sont pas accessibles depuis une interface
dtermine sont grises ;
des affectations de touches de fonction, qui s'affichent d'un clic avec le bouton droit de la souris.
En principe, vous devez pouvoir activer toutes les fonctions de menu l'aide de ces touches ;
une barre d'outils d'application dont les icnes et les boutons de commande donnent accs aux
fonctions les plus frquemment utilises sur l'cran actif.
Chaque programme est cr avec une interface contenant l'ensemble des objets/outils numrs cidessus. Ensuite, vous crez des vues diffrentes (statuts GUI) de cette interface pour les crans, les
crans de slection et les listes du programme.
(C) SAP AG
BC400
10-3
SAP R/3
Donnes de vol de base
Liste
Imprimer Ctrl+P
Sauv. dans fich. PC MAJ+F8
Sauvegarder
Terminer
MAJ+F3
! !
Dynpro
0100
! !
SAP AG 1999
Pour terminer, vous allez dfinir une interface utilisateur pour le programme exemple. Les diffrents
statuts doivent prsenter les caractristiques suivantes :
la liste et l'cran doivent avoir la mme barre de menus. Seules les fonctions excutables sont en
caractres noirs ;
dans la barre d'outils standard, seules les fonctions excutables sont en couleur. La fonctionnalit du
dynpro ne sera modifie en aucun cas ;
la barre d'outils d'application figurant dans la liste de base doit comporter une icne "Choisir", tout
comme le statut de la liste standard ;
(C) SAP AG
BC400
10-4
Titre 100
Barres de menus
Barres de menus
Donnes de base du
vol
B. d'outils d'applic.
Affectation
Affectation de
de touches
touches
de
de fonction
fonction
B. d'outils d'applic.
Donnes de base du vol
Affectation de touches
de fonction ;
Donnes de base du vol
Barre de menus
Saut
PRI
%PC
RW
%EX
CHOISIR
RETOUR
P+
P++
P--
P-
Liste
des
fonctions
SAP AG 1999
une barre de titre contenant le titre de l'cran, de l'cran de slection ou de la liste affiche ;
des menus lis aux fonctions de l'interface, que vous appelez par transactions et qui possdent tous
des mots-cls explicites. Les menus en cascade peuvent tre dfinis par rfrence un autre menu de
la liste de menus et non un code de fonction ;
des affectations de touches : fonctions affectes aux icnes de la barre d'outils standard et aux
touches de fonction (touches F) ;
Les touches de fonction importantes peuvent aussi tre affectes des icnes et des boutons de
commande dans la barre d'outils d'application ;
des fonctions (par exemple, Remplacer, Rechercher ou Couper) affectes aux codes de fonction
employs dans le programme pour valuer les actions utilisateur. Toutes les fonctions d'une interface
sont numres dans une liste de fonctions. Il existe des codes de fonction standard pour les listes.
Les programmes peuvent prsenter plusieurs barres de menus, affectations de touches et barres
d'outils d'application. Dans notre modle de programme, vous ne devez crer qu'un objet dans
chaque catgorie. La barre de menus doit comporter trois menus.
(C) SAP AG
BC400
10-5
Statut
Statut "LISTE"
"LISTE"
Liste
Barres de menus
Donnes de base du vol
B. d'outils d'applic.
Donnes de base du vol
Affectation de touches
de fonction
Donnes de base du vol
SAUVERETOUR
GARDER
PRI
%PC
RW
%EX
CHOISIR
P+
P++
P--
P-
Liste
des
fonctions
SAP AG 1999
Le statut est la forme que prend une barre de menus, une barre d'outils standard ou une barre d'outils
d'application sur un dynpro donn du programme. Il dtermine quelles fonctions sont actives
(excutables) ou inactives pour un dynpro dtermin. Vous pouvez changer de statut pour un dynpro
au PBO : par exemple, vous utilisez la fonction "Afficher/Modifier" de l'diteur ABAP pour passer
d'un statut l'autre.
D'un point de vue technique, un statut sert toujours de rfrence une barre de menus, une barre
d'outils standard et une barre d'outils d'application.
(C) SAP AG
BC400
10-6
LISTE
Attributs de statut
Courte description
Type de statut
SAP AG 1999
Pour crer et grer les statuts, vous pouvez utiliser une de ces trois possibilits :
la liste d'objets de Object navigator ;
la navigation, dans l'Editeur ABAP ;
le Menu Painter.
Lorsque vous crez un statut, vous dfinissez de nouvelles barres de menus, barres d'outils
d'application et des affectations de touches (top down) ou vous utilisez des objets prexistants de
votre interface (bottom up), ou vous associez ces deux mthodes.
Un nom de statut ne doit pas dpasser 20 caractres. (Les lettres doivent tre en majuscules).
En choisissant un type de statut, vous dterminez si un statut donn se rfre un cran normal ou
une bote de dialogue. Les fonctions que vous utilisez dpendent de votre choix.
Utilisez l'instruction SET PF-STATUS '<NOM>' pour rtablir le statut de la liste de base en le
programmant dans un des blocs de traitement traits avant l'envoi de cette liste.
(C) SAP AG
BC400
10-7
Conception
oriente utilisateur
Statut
BASE
Barres de menus
Liste
Traiter
Saut
B. d'outils d'applic.
Affectation de
touches de fonction
SAP AG 1999
La fonction "Ajuster modle" du menu Autres fonctions vous permet d'inclure des codes de
fonction standardiss dans votre statut. Cette fonction vous permet galement d'inclure des objets
d'un statut de votre choix votre statut existant. Il vous permet de choisir des normes pour des statuts
de liste et d'crans de slection, ou d'utiliser tout autre statut d'un autre programme ABAP.
(C) SAP AG
BC400
10-8
Barres de menus
B. d'outils d'applic.
Positions 1-7
Affectation de
touches de fonction
RETOUR
%EX
RW
PRI
%SC
P--
P-
PICK
Choisir
Pour affecter un code une touche de fonction, entrez-le dans l'une des sections d'affectation de
touches. Les statuts de type "Liste" acceptent galement des codes de fonction standard.
barre d'outils standard : certains codes de fonction prdfinis sont obligatoires pour les
fonctions Sauvegarder, Retour, Terminer, Annuler, Imprimer, ainsi que pour les icnes de
dfilement et pour la touche Entre. Affectez simplement ces codes l'icne de la barre d'outils
standard ; ils seront automatiquement affects aussi aux boutons de commande correspondants ;
Vous pouvez galement dfinir des boutons sur une barre de boutons pour toutes les touches de
fonctions les plus frquemment utilises. Ces boutons se prsentent sous forme d'icnes ou de
boutons portant un texte.
(C) SAP AG
BC400
10-9
Barres de menus
Donnes de vol
de base
Saut
Traiter
Code
Enonc
PRI
Imprimer
CHOISIR
Choisir
%PC
Sauveg. ds fichier PC
%SC
Trouver
%SC+
Retrouver
RW
Annuler
SAUVEG. Sauvegarder
%EX
Terminer
Code
Enonc
Code
RETOUR
Enonc
Retour
B. d'outils d'applic.
affectation de
touches de fonction
SAP AG 1999
Pour votre barre de menus, certaines normes s'appliquent. Toutefois, celles-ci peuvent tre
modifies.
Les barres de menus peuvent contenir jusqu' huit menus. Vous en dfinissez six au maximum : les
menus Systme et Aide s'ajoutent automatiquement.
(C) SAP AG
BC400
10-10
Titre 100
Liste
Statut "LISTE"
Statut "CRAN"
"CRAN"
Barres de menus
Donnes de base
du vol
Donnes de base
du vol
cran
0100
cran
0100
B. d'outils d'applic.
Donnes de base du vol
Affectation de touches
de fonction
Donnes de base du vol
Traiter
Saut
PRI
%PC
RW
inactive
%EX
CHOISIR
P+
P++
P--
Liste des
fonctions
standard
P-
SAP AG 1999
Pour terminer l'interface utilisateur de notre programme, il faut crer, en plus du statut de la liste de
base, un titre et un statut pour le dynpro. Le statut du dynpro doit renvoyer aux mmes barre de
menus, barre d'outils d'application et affectations de touches que le statut de la liste. La seule
diffrence rside dans le fait qu'ici, toutes les fonctions standard sont "inactives", l'exception de
"RETOUR" et de "SAUVEGARDER".
fonctions ;
menus ;
barres de menus ;
statut ;
titres.
(C) SAP AG
BC400
10-11
e-c
lic
Cration d'un objet
Non
Annuler
Code du titre
Programme
xxxxx
Code du titre
100
Titres
Sauvegarder
Modifier les heures
de vol
Titres
Connexions de vol
Continuer
SAP AG 1999
Vous pouvez crer et grer les titres dans l'une de ces trois possibilits :
le Menu Painter.
Pour dfinir le titre d'un dynpro, utilisez l'instruction SET TITLEBAR <nnn> de ABAP dans un
module PBO. nnn est une squence numrote de trois caractres. Si vous crez le module PBO
status_nnnn l'aide de la navigation, cette instruction est automatiquement gnre dans le
module et mise en commentaire. Pour l'activer, effacez l'astrisque et saisissez le numro du titre.
Vous pouvez ensuite crer le titre en utilisant la navigation forward.
(C) SAP AG
BC400
10-12
CRAN
Attributs de
statut
Dsignation
Type de statut
SAP AG 1999
crez un module PBO contenant l'instruction SET PF-STATUS '<NOM>'. NOM peut contenir
huit chiffres ou lettres majuscules. Cette instruction est prgnre ds que vous crez le module
status_nnnn l'aide de la navigation ;
appuyez sur F4 (aide) pour afficher les affectations de touches de fonction et la barre de menus ;
choisissez les fonctions que vous voulez activer. Dans notre exemple, il s'agit de "RETOUR" et de
"SAUVEGARDER".
Dans le module PAI, ces codes de fonction sont valus en tant que simples codes des boutons de
commandes d'un cran. Pour inclure d'autres codes de fonction, dveloppez le module PAI dans
lequel les codes de fonction sont traits. (dans l'exemple USER_COMMAND_0100).
(C) SAP AG
BC400
10-13
Barres de menus
CRAN
Barre d'outils
d'application
Affectation de
touches de
fonction
CRAN
CRAN
SAP AG 1999
Le statut de l'cran doit renvoyer aux mmes barre de menus et affectations de touches que le statut
de la liste. Utilisez l'icne montre ci-dessus pour afficher toutes les barres de menus et toutes les
affectations de touches de fonction dj dfinies. Notre modle de programme ne possde qu'une
seule barre de menus et qu'une seule affectation de touches de fonction que vous pouvez slectionner
par un double-clic.
Le statut contient les mmes objets que le statut de la liste de base, mais ceux-ci sont d'abord inactifs.
Activez les fonctions que vous devez utiliser dans le module PAI USER_COMMAND_0100,
comme suit :
slectionnez le mode de modification en double-cliquant sur le bouton Afficher/Modifier ;
placez le curseur sur le code de fonction que vous voulez activer et slectionnez l'icne
Actif/Inactif de la barre de boutons.
(C) SAP AG
BC400
10-14
SAP AG 1999
(C) SAP AG
BC400
10-15
Exercices
(C) SAP AG
BC400
10-16
(C) SAP AG
BC400
10-17
Chapitre : Interfaces
Programme :
ZBC400_##_DYNPRO
Solution modle :
SAPBC400UDS_DYNPRO_4
1-1
1-2
Dfinissez dabord un statut pour la liste. Utilisez la navigation pour crer le statut
(type : statut de dialogue). Ajoutez linstruction ABAP approprie dans le bloc de
traitement START-OF-SELECTION.
Le statut que vous vous crez doit correspondre au statut de la liste standard. Pour
crer vos propres affectations de touches de fonction, barre de boutons et barre de
menus, slectionnez Autres fonctions -> Ajuster modle-> Statut de liste et ajoutez
vos codes de fonction. Remplacez le nom de la liste de menus de gauche Liste par
critures.
Ajoutez le code de fonction SAUVEGARDER. Lutilisateur doit tre en mesure de
lancer cette fonction en slectionnant licne Sauvegarder dans la barre doutils
standard, ou critures dans le menu.
Dsactivez le code de fonction SAUVEGARDER de ce statut.
1-3
(C) SAP AG
BC400
10-18
(C) SAP AG
BC400
10-19
Solutions
(C) SAP AG
BC400
10-20
(C) SAP AG
BC400
10-21
Chapitre : Interfaces
1-2
PF-STATUS 'LISTE'
(Note : le texte situ entre les deux apostrophes doit apparatre en majuscules).
PF-STATUS 'LISTE'
Le systme affiche une bote de dialogue contenant les mots "Le statut
interface GUI LISTE nexiste pas". Voulez-vous le crer ?
Slectionnez
pour confirmer.
slectionnez
Activez le statut.
1-3
Affichez lcran 100 en mode modification (en slectionnant le numro dcran
dans la liste dobjets du programme et en utilisant le bouton droit de la souris). Dans la logique
dexcution de lvnement PROCESS BEFORE OUTPUT, ajoutez linstruction :
MODULE set_status_0100.
(C) SAP AG
BC400
10-22
Module
SET_STATUS_0100
OUTPUT
*&----------------------------------------*
(C) SAP AG
Activez lcran.
BC400
. Crez la
10-23
1-4
Module
SET_STATUS_0100
OUTPUT
*&------------------------------------------*
MODULE set_status_0100 OUTPUT.
SET PF-STATUS 'DYNPRO'.
SET TITLEBAR 'DYNPRO'.
ENDMODULE.
Utilisez la navigation pour crer le titre et saisissez le texte dans la bote de dialogue
qui apparat.
Activez le statut et le programme.
SAPBC400UDS_DYNPRO_4
*&
*
*
*&--------------------------------------------------------------*
REPORT
sapbc400uds_dynpro_3.
TABLES: sdyn_book.
PARAMETERS: pa_agnum TYPE s_agncynum.
DATA: wa_cust TYPE sbc400cust,
it_cust TYPE sbc400_t_sbc400cust.
DATA: wa_sbook TYPE sbook.
DATA: ok_code LIKE sy-ucomm, save_ok LIKE ok_code.
(C) SAP AG
BC400
10-24
START-OF-SELECTION.
FIELD actvt_display.
IF sy-subrc = 0.
READ TABLE it_cust INTO wa_cust
WITH TABLE KEY id = wa_sbook-customid.
WRITE: / wa_sbook-carrid COLOR COL_KEY,
wa_sbook-connid COLOR COL_KEY,
wa_sbook-fldate COLOR COL_KEY,
wa_sbook-bookid COLOR COL_KEY,
wa_cust-name COLOR COL_KEY.
* Masquer des zones-cls de la table de base de donnes SBOOK et nom
client
HIDE: wa_sbook-carrid, wa_sbook-connid, wa_sbook-fldate,
wa_sbook-bookid, wa_cust-name.
ENDIF.
ENDSELECT.
* Dfinir le titre et le statut de la liste
Dfinir la barre de titres 'LISTE' avec pa_agnum.
Dfinir le statut PF 'LISTE'.
CLEAR wa_sbook.
AT LINE-SELECTION.
IF sy-lsind = 1.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
ID 'ACTVT' FIELD actvt_change.
IF sy-subrc = 0.
SELECT SINGLE * FROM sbook INTO wa_sbook
WHERE carrid
(C) SAP AG
= wa_sbook-carrid
AND
connid
= wa_sbook-connid
AND
fldate
= wa_sbook-fldate
AND
bookid
= wa_sbook-bookid.
BC400
10-25
IF sy-subrc <> 0.
MESSAGE i176(bc400).
ELSE.
MOVE-CORRESPONDING wa_sbook TO sdyn_book.
MOVE wa_scust-name TO sdyn_book-name.
CALL SCREEN 100.
ENDIF.
ELSE.
MESSAGE s047(bc400) WITH wa_sbook-carrid.
ENDIF.
ENDIF.
CLEAR wa_sbook.
*&-------------------------------------------------------*
*&
Module
SET_STATUS_0100
OUTPUT
*&-------------------------------------------------------*
module set_status_0100 output.
* set title and status of screen 100
set titlebar 'DYNPRO'.
set pf-status 'DYNPRO'.
endmodule.
" SET_STATUS_0100
OUTPUT
*&-------------------------------------------------------*
*&
Module
USER_COMMAND_0100
INPUT
*&-------------------------------------------------------*
*
Le droulement dun cran dynamique dpend dune action
utilisateur.
*--------------------------------------------------------*
MODULE user_command_0100 INPUT.
(C) SAP AG
BC400
10-26
save_ok = ok_code .
* Effacer la zone OK-Code afin de linitialiser sur cran
* suivant
CLEAR ok_code .
CASE save_ok.
WHEN 'BACK'.
SET SCREEN 0.
WHEN 'SAVE'.
MOVE-CORRESPONDING sdyn_book TO wa_sbook.
* La sauvegarde de lenregistrement de donnes modifies sera
* excute ultrieurement.
message i060(bc400).
SET SCREEN 0.
WHEN OTHERS.
SET SCREEN 100.
ENDCASE.
ENDMODULE.
(C) SAP AG
" USER_COMMAND_0100
BC400
INPUT
10-27
Contenu :
l Groupes de fonctions et modules de fonction
l Objets et mthodes
l Objets de gestion et BAPI
l Bases de donnes logiques
SAP AG 1999
(C) SAP AG
BC400
11-1
SAP AG 1999
(C) SAP AG
BC400
11-2
Objet
Groupe de
fonctions
ABAP :
possibilits
techniques
Objet de
gestion
Base de donnes
logique
Rutilisation
des composantes
SAP AG 1999
Le systme R/3 offre plusieurs techniques que vous pouvez utiliser pour permettre la rutilisation de
la logique applicative.
Modules de fonction : peuvent tre appels partir de tout programme ABAP. Les paramtres sont
galement transfrs l'interface. Les modules de fonction apparents sont organiss en groupes de
fonctions. Une logique de programme et des dialogues utilisateur peuvent tre encapsuls dans les
modules de fonction ;
des objets : vous pouvez utiliser l'extension compatible "objets ABAP" pour crer des instances
d'objets l'excution, avec rfrence aux classes centrales ;
des BAPI : mthodes d'objets de gestion, qui sont disponibles grce au Business Object Repository
(BOR) ;
des bases de donnes logiques : programmes d'acquisition de donnes qui peuvent s'associer des
programmes excutables. Elles transfrent les donnes l'aide de structures de hirarchie logiques.
Elles permettent l'accs des crans de slection et contiennent des contrles d'autorisation.
(C) SAP AG
BC400
11-3
Groupes
Groupes de
de fonctions
fonctions et
et modules
modules de
de fonction
fonction
Objets
Objets et
et mthodes
mthodes
Objets
Objets de
de gestion
gestion et
et BAPI
BAPI
Bases
Bases de
de donnes
donnes logiques
logiques
SAP AG 1999
(C) SAP AG
BC400
11-4
SAP AG 1999
(C) SAP AG
BC400
11-5
Groupe de fonctions
e ion
fr ac onct
e f
In t d e 1
Interface
Mod
F
face
Inter
ction
e fon
ule d 5
Mod
M
Sousprogrammes
Module de fonction
FM4
Inte
r fac
e
le
du FM
o
M
ule
de f
o
FM3 nction
Mo In
du te
le rfa
c
d
FM e fo e
2 ncti
on
Paramtres d'import
Paramtres d'export
Paramtres de modification
Exceptions
Interface
SAP AG 1999
(C) SAP AG
BC400
11-6
Module de fonction
Groupe de fonctions
SousModule de
programmes
Interface
fonction
Objets de donnes
globaux
Gestion
Objets de donnes
locaux
Code source
Interface
Paramtres
Paramtres d'import Paramtres
Paramtres d'export Paramtres
Paramtres de modification
Exceptions
sy-subrc
SAP AG 1999
Les modules de fonction sont des units modulaires dotes d'interfaces. L'interface peut contenir les
lments suivants :
les paramtres d'import sont des paramtres transfrs au module de fonction. En gnral, ils
sont affects des types standard du Dictionnaire ABAP. Ils peuvent galement tre facultatifs ;
les paramtres d'export passent du module de fonction vers le programme appelant. Ils sont
toujours facultatifs ; pour cette raison, ils peuvent ne pas tre transmis par le programme appelant.
les paramtres de modification sont transfrs vers le module de fonction o ils peuvent tre
modifis. Aprs traitement du module de fonction, le rsultat est renvoy au programme appelant.
Ces paramtres peuvent tre facultatifs ;
les exceptions sont utilises pour intercepter des erreurs. Si une erreur dclenche une exception
dans un module de fonction, celui-ci s'arrte. Vous pouvez affecter des exceptions des nombres
du programme appelant pour positionner la zone systme SY-SUBRC cette valeur. Le
programme peut alors traiter ce code retour.
Chaque module de fonction peut contenir des objets de donnes locaux et accder des objets de
donnes globaux appartenant son groupe de fonctions. Il peut appeler tous les sous-programmes et
les crans de ce groupe de fonctions.
(C) SAP AG
BC400
11-7
n
ce ctio
a
f
n
er fo
Int de 1
tion
Mod
u
nc
e fo
ule d 5
M
F
face
Inter
Inte
rfac
e
M od
le d
e fo
FM3 nction
le
du FM
o
M
Mo In
du te
le rfa
c
d
FM e fo e
n
2
cti
on
Module de fonction
FM4
Interface
SAP AG 1999
Aprs appel du module de fonction, les donnes gnrales restent dans le groupe de fonctions. Ce
groupe de fonctions reste actif tant que le programme appelant reste actif. Donc, si un module de
fonction qui modifie les donnes globales du groupe de fonctions est appel, les autres modules de
fonction de ce mme groupe de fonctions peuvent accder ces donnes lors de leur appel par le
programme.
(C) SAP AG
BC400
11-8
Oui
Non
SAP AG 1999
Dans de nombreux programmes, une bote de dialogue apparat lorsque l'utilisateur a choisi Annuler.
Cette bote de dialogue contient toujours la phrase : "Les donnes seront perdues." Les deux lignes
qui la suivent sont spcifiques du contexte, tout comme le titre. L'utilisateur a le choix entre deux
options : "Oui" ou "Non".
(C) SAP AG
BC400
11-9
STO1
! <ligne de texte>
Oui
ligne de texte
titre
<ligne de texte>
rponse
rponse
Non
Programme
ABAP
SAP AG 1999
Vous pouvez viter la programmation de cette bote de dialogue si vous trouvez un module de
fonction existant contenant les proprits suivantes :
des paramtres d'import pour le titre et les lignes de texte de deux variables ;
un paramtre d'export pour enregistrer la rponse ("Oui" ou "Non") de l'utilisateur ;
la capacit appeler un cran du groupe de fonctions qui affiche les lignes de texte des deux
variables et le titre, et qui contient les boutons "Oui" et "Non".
(C) SAP AG
BC400
11-10
Hirarchie
des composantes
Slectionner
des
composantes
applicatives
du systme
d'information
du Repository
F1
Info techniques
Nom de l'cran et
du programme principal
Regarder un groupe de
fonctions dans Object
Navigator
Cas d'emploi pour numro
d'cran
SAP AG 1999
Scnario : vous crez un programme dans Object Navigator et quittez l'cran des attributs. Vous
voulez savoir s'il est enregistr sous une forme rutilisable.
1. Premire mthode : dans le dbogueur, apposez un point d'arrt dans CALL SCREEN. En cas de
russite, le bloc de traitement actuel (sous-programme, module de fonction ou bloc vnement) sera
rpertori sous " CALLS"en mode dbogage. Vous pouvez alors examiner l'appel et les paramtres
transmis l'interface.
2. Deuxime mthode : dans le dbogueur, apposez un point d'arrt CALL FUNCTION. En cas de
russite, le bloc de traitement actuel (sous-programme, module de fonction ou bloc vnement) sera
rpertori sous " CALLS"en mode dbogage. Vous pouvez alors examiner l'appel et les paramtres
transmis l'interface.
3. Troisime mthode : cliquez sur une zone de texte de la bote de dialogue standard, appuyez
ensuite sur F1 et choisissez Infos techniques. Naviguez jusqu' l'cran et afficher les cas d'emploi
pour des programmes, regardez ensuite les modules de fonction qui l'utilisent.
4. Quatrime mthode : dans la bote de dialogue Sauvegarder, affichez l'aide (F1) et ensuite Infos
techniques. Naviguez jusqu' l'cran pour examiner la logique d'excution et ses modules.
5. Cinquime mthode : dans la hirarchie des composantes, indiquez la composante qui vous
intresse (dans ce cas, Services de base), slectionnez-la, naviguez jusqu'au systme d'information du
Repository, et regardez sous Programmation -> Gnrateur de modules de fonction -> Modules de
fonction et slectionnez Unqt librs.
(C) SAP AG
BC400
11-11
Module de fonction
Attributs
POPUP_TO_CONFIRM_LOSS_OF_DATA
Import
Export
Modification
Exceptions
Code source
Transmettre
Facultatif Valeur Description
Paramtres
...
Ref. type
...
LIGNE DE TEXTE 1
!
Les paramtres
Nicht Optionale
LIGNE DE TEXTE 2
!
!
obligatoires
Parameter des
TITRE
!
d'un module de fonction
Constructors
START_COLUMN
!
!
doivent tre transmis
START_ROW
mssen bei
l'instruction
!
!
CREATE OBJECT
CALL FUNCTION
versorgt werden
SAP AG 1999
Ds que vous trouvez un module de fonction, vous devez en dcouvrir davantage sur son interface.
Les paramtres obligatoires du module de fonction doivent tre transmis l'instruction CALL
FUNCTION. Pour savoir comment traiter les autres paramtres, rfrez-vous la documentation sur
le module de fonction et sur les paramtres d'interface.
Si la documentation n'est pas suffisamment prcise, ou si elle n'est pas disponible dans votre langue
de travail, vous pouvez analyser le code source du module de fonction en slectionnant l'onglet Code
source.
(C) SAP AG
BC400
11-12
Documentation et test
Documentation
Courte description
Fonction
Exemple
Notes
Informations complmentaires
Paramtre
Exceptions
Groupe de fonctions
Test
Paramtres d'export
Paramtres d'import
Module de fonction
Exception
SAP AG 1999
Vous pouvez tester les modules de fonction par l'environnement de test. Vous spcifiez les
paramtres d'IMPORT dans un modle de saisie. Le rsultat est transmis aux paramtres d'EXPORT,
puis s'affiche.
La dure d'excution du module de fonction s'affiche en micro-secondes. Ces valeurs sont soumises
aux mmes conditions que l'analyse de dure d'excution. Par consquent, recommencez plusieurs
tests en utilisant les mmes donnes.
Vous pouvez enregistrer les donnes de test dans un rpertoire prvu cet effet.
Pour tester les modules dots de paramtres de table, utilisez la fonction test du Gnrateur de
modules de fonction.
(C) SAP AG
BC400
11-13
PAI
ligne de texte
titre
rponse
SAP AG 1999
Pour appeler un module de fonction dans un programme ABAP, utilisez l'instruction CALL
FUNCTION. Le nom du module de fonction s'affiche entre quotes. Aprs EXPORTING, le
systme affecte les paramtres transmis au module de fonction. Aprs IMPORTING, le systme
affecte les paramtres transfrs du module de fonction au programme. La plupart des modules de
fonction grent des exceptions supplmentaires. Ds lors, aprs EXCEPTIONS, les exceptions sont
affectes des valeurs qui seront utilises dans la zone systme sy-subrc, en cas d'erreur du
systme. Le systme affiche les noms des paramtres d'interface gauche, les objets de donnes du
programme droite.
(C) SAP AG
BC400
11-14
Modle
Insrer instruction
CALL FUNCTION
...
...
...
...
Le systme
gnre le
code ABAP
POPUP_TO_CONFIRM_LOSS_OF_DATA
CALL FUNCTION
'POPUP_TO_CONFIRM_LOSS_OF_DATA'
EXPORTING
ligne de texte =
titre
=
IMPORTING
rponse =
Entrer
paramtres
effectifs
Traiter
code retour
CASE SY-SUBRC.
SAP AG 1999
Pour ce faire, utilisez un modle d'instruction de l'diteur ABAP (bouton de commande "Modle"),
puis saisissez le nom du module de fonction.
Entrez les paramtres effectifs, et crivez les instructions qui traiteront toute ventuelle exception.
Affectez la valeur des paramtres d'interface de faon explicite par le nom du paramtre effectif.
Pour le programme appelant, les paramtres transmettre au module de fonction sont exports ; ceux
transmettre du module de fonction au programme sont imports. Il n'est pas obligatoire d'affecter
un paramtre effectif un paramtre optionnel. Dans ce cas, mettez la ligne concerne en
commentaire.
N'oubliez pas que, lors de l'affectation des paramtres d'un module de fonction, le paramtre du
module de fonction se trouve toujours gauche, tandis que le paramtre effectif est droite.
(C) SAP AG
BC400
11-15
Objets et mthodes
Groupes
Groupes de
de fonctions
fonctions et
et modules
modules de
de fonction
fonction
Objets
Objets et
et mthodes
mthodes
Objets
Objets de
de gestion
gestion et
et BAPI
BAPI
Bases
Bases de
de donnes
donnes logiques
logiques
SAP AG 1999
(C) SAP AG
BC400
11-16
SAP AG 1999
(C) SAP AG
BC400
11-17
l Encapsulation
n
l Polymorphisme
l Hritage
SAP AG 1999
Polymorphisme : dans la POO (programmation oriente objets), les objets de classes diffrentes
ragissent diffremment au mme message.
Hritage : dfinit la relation d'implmentation entre les classes ; par exemple, une classe (la sousclasse) partage la structure et le comportement dj dfinis dans une ou plusieurs superclasses.
(C) SAP AG
BC400
11-18
Modle
Ralit
Maison
Arbre
Mthode
Mthode
Donnes Mthode
Donnes Mthode
Mthode
Mthode
Grue
Mthode
Donnes Mthode
Mthode
Bateau
Mthode
Donnes Mthode
Mthode
SAP AG 1999
Les objets sont au centre de l'approche oriente objet et reprsentent des entits concrtes ou
abstraites de la ralit. Ils sont dfinis selon leurs proprits, qui sont elles-mmes dcrites par leur
structure interne et leurs attributs (donnes). Le comportement d'objet est dcrit par des mthodes et
des vnements (fonctions).
Chaque objet forme une capsule, qui contient son caractre comme son comportement. Les objets
doivent permettre au modle du domaine d'un problme d'tre repris de la manire la plus prcise
dans le modle de conception pour sa solution.
(C) SAP AG
BC400
11-19
carrid,
connid,
fdate
Mthode
publique :
Rserver
carrid
connid
fldate
customid
cas d'erreur
Attributs privs :
siges libres
passagers
Mthode
publique :
Annuler
Vol annul
carrid
connid
fldate
bookid
customid
Cas d'erreur
SAP AG 1999
Mthodes prives : l'objet peut calculer le nombre de siges libres partir des attributs privs, la
"liste des rservations" et "le nombre maximum de siges vides".
(C) SAP AG
BC400
11-20
AA
0016
28.08.1999
LH
0400
28.08.1999
SAP AG 1999
Gnralement, lorsque les clients modifient une rservation par une agence de voyages, ils veulent
tre certains d'avoir une place sur leur nouveau vol avant d'annuler le premier.
Techniquement, ce sont deux objets du mme type, mais dots d'attributs-cls diffrents.
(C) SAP AG
BC400
11-21
Classe "vol" :
modle
d'objets
Objet vol 2 :
Instance de
Classe "vol"
Objet vol 1 :
Instance de
Classe "vol"
SAP AG 1999
En programmation oriente objets, l'implmentation d'une telle classe est dfinie comme un objet
type. Les instances de cette classe se crent au moment de l'excution. Le systme cre ainsi des
objets d'un type d'objets (et donc, de la classe).
(C) SAP AG
BC400
11-22
LH
0400 Vol
28.08.1999
Programme ABAP
SAP AG 1999
Un programme ABAP qui modifie les rservations par des objets possde le droulement de
programme suivant :
Les objets sont gnrs au moment de l'excution, une fois l'instruction CREATE OBJECT traite.
Cette instruction appelle une mthode spciale nomme CONSTRUCTOR de manire implicite. Tous
les paramtres requis par le constructeur doivent tre spcifis dans l'instruction CREATE
OBJECT. Notre exemple vous montre que seuls les attributs-cls doivent tre transmis
l'instruction.
Ds que l'instruction CALL METHOD est traite, la mthode est appele. L'appel d'une mthode est
trs diffrent de l'appel d'une fonction. En effet, l'objet dans lequel la mthode doit tre traite doit
tre dclar de manire explicite. Le systme spcifie une variable de rfrence qui indique l'objet.
Le nom de la variable de rfrence est suivi de -> et du nom de la mthode.
(C) SAP AG
BC400
11-23
l Intgration Office
l Business Add-ins (nouveau concept d'extension de
systme)
l Contrles
l Projets pilotes (dj orients objet)
SAP AG 1999
Dans la version 4.6, les plus importants aspects du systme d'extensions orientes objet du langage
ABAP sont :
Intgration office : le systme offre une nouvelle interface oriente objets, qui vous permettra
d'utiliser toutes les fonctions de produit Office R/3 ;
Business Add-ins : une technologie d'extensions oriente objet, qui combine des avantages de
technologies existantes. Si vous incluez des Business Add-ins dans des programmes standard, vous
pouvez complter le programme par des mthodes spciales, sans devoir effectuer de modification ;
Contrles : le systme R/3 vous permet de crer des custom controls en utilisant des objets ABAP.
Le serveur d'application est le client, qui pilote les custom controls (serveur) sur le frontend. Le
Central Control Framework excute cette tche ;
(C) SAP AG
BC400
11-24
SAP AG 1999
Le systme R/3 vous permet de crer des custom controls en utilisant des objets ABAP. Le serveur
d'application est le client, qui pilote les custom controls (serveur) sur le frontend.
Si des custom controls doivent tre inclus sur le frontend, le SAPGUI ragit en leur servant de
conteneur. Les custom controls peuvent tre des contrles ActiveX et JavaBeans.
Le systme doit utiliser les Remote Function Call (RFC) pour le transfert de mthodes afin de crer
et d'utiliser un contrle (ABAP OO) sur le frontend.
(C) SAP AG
BC400
11-25
Trouver
Trier
Filtrer
Addition
Tldcharger
Imprimer
Afficher variante
Barre d'outils
AA
AA
AA
AA
LH
LH
LH
LH
LH
17
17
17
64
400
400
400
402
402
2000-01-17
2000-02-20
2000-03-11
2000-05-19
2000-01-13
2000-02-26
2000-03-21
2000-03-04
2000-05-28
513,69
513,69
513,69
369,00
1234,56
1234,56
1234,56
1234,56
1234,56
USD
USD
USD
USD
DEM
DEM
DEM
DEM
DEM
A321
A321
747-400
747-400
A310-300
A310-300
A310-300
A319
A319
SAP AG 1999
Sur le control, vous pouvez ajuster la largeur de colonne aux donnes affiches en la faisant glisser
ou en utilisant la fonction "Largeur optimale". Vous pouvez galement modifier l'ordre des colonnes
si vous en slectionnez une et que vous la faites glisser jusqu' son nouvel emplacement.
Les fonctions standard sont disponibles dans la barre d'outils du control. L'affichage des dtails
affiche les zones de la ligne sur laquelle le curseur est positionn dans une bote de dialogue modale.
La fonction de tri de ALV Control est disponible pour toutes les colonnes demandes. Vous pouvez
paramtrer des critres de tri complexes pour trier les colonnes dans un ordre croissant ou
dcroissant.
Vous pouvez utiliser la fonction "Rechercher" pour rechercher une chane (recherche gnrique sans
*) par ligne ou par colonne dans un domaine dtermin.
Vous pouvez utiliser la fonction "Cumul" pour demander les totaux d'une ou plusieurs colonnes
numriques. Vous pouvez utiliser la fonction "Sous-total" pour structurer des listes de niveaux de
groupe : slectionnez les colonnes (colonnes non numriques uniquement) que vous voulez utiliser et
le control correspondant. Pour les fonctions "Imprimer" et "Tldcharger", ce ne sont pas seulement
les informations affiches l'cran qui sont traites, mais toute la liste.
Vous avez galement la possibilit de paramtrer des variantes d'affichage. Pour sauvegarder des
variantes, voir "Techniques avances".
(C) SAP AG
BC400
11-26
Process
Before
Output
Domaine
cran 100
Process
After
Input
START-OFSELECTION.:
Custom
Container
Control
SAP AG 1999
Un conteneur SAP peut contenir d'autres controls (par exemple, SAP ALV Grid Control, Tree
Control, SAP Picture Control, SAP Splitter Control, etc.). Il gre ces controls de manire logique
dans une collection d'objets et fournit un domaine physique pour l'affichage.
Chaque control existe dans un conteneur. Comme les conteneurs sont eux-mmes des controls, ils
peuvent s'imbriquer les uns dans les autres. Un conteneur est le parent des controls qu'il contient.
(C) SAP AG
BC400
11-27
Domaine
CL_GUI_CUSTOM_CONTAINER
CL_GUI_ALV_GRID
Custom
Container
Control
Custom
container
ALV Grid
control
Gnrateur de classes
ALV Grid Control
SAP AG 1999
Vous trouverez dans le Gnrateur de classes des types d'objets pour la gestion des custom controls
et de ALV Grid Control. Au moment de l'excution, le systme cre deux objets : un du type
CL_GUI_CUSTOMER_CONTAINER et un du type CL_GUI_ALV_GRID. Ces objets contiennent
les mthodes ncessaires la gestion des controls. Vous trouverez des informations complmentaires
sur les types d'objets (classes) et leurs mthodes associes dans le Gnrateur de classes.
(C) SAP AG
BC400
11-28
CL_GUI_CONTROL_CONTAINER
CL_GUI_CUSTOM_CONTAINER
Superclasses
Mthodes
Constructeur
Classe
Attributs
CL_GUI_CUSTOM_CONTAINER
Interfaces
Paramtres pour la
Attributs
Mthodes
mthode CONSTRUCTEUR C
Paramtre
Transmettre Facultatif ...
Ref. type
...
Description
PARENT
!
!
Les paramtres
NOM_CONTENEUR
!
non
optionnels de la
...
!
!
!
mthode Constructeur
doivent tre transmis
lorsque vous utilisez
CREATE OBJECT
SAP AG 1999
Vous pouvez naviguer dans le Gnrateur de classes en introduisant le nom de la classe dans la zone
de saisie Classe sur l'cran initial de Object Navigator et en choisissant Afficher. Le systme affiche
une arborescence pour la classe choisie. Double-cliquez sur le noeud racine pour afficher le domaine
de travail du Gnrateur de classes. Choisissez l'onglet Mthodes et slectionnez la mthode pour
laquelle vous souhaitez des informations complmentaires. Choisissez le bouton Paramtres pour
afficher des informations complmentaires sur les paramtres d'interface.
(C) SAP AG
BC400
11-29
CL_GUI_ALV_GRID
CL_GUI_ALV_GRID
Superclasses
Interfaces
Attributs
Mthodes
...
Constructeur
...
REFRESH_TABLE_DISPLAY
...
SET_TABLE_FOR_FIRST_DISPLAY
...
Redfinition
vnements
SAP AG 1999
CL_GUI_ALV_GRID contient de nombreuses mthodes. Pour afficher une table interne de type de
ligne de structure du Dictionnaire ABAP en utilisant ALV Grid Control, vous devez connatre
uniquement les dtails de trois mthodes :
la premire fois que le contenu d'une table est affich en utilisant ALV Grid Control, l'affichage est
implment par la mthode SET_TABLE_FOR_FIRST_DISPLAY. La table interne est transfre
au paramtre it_outtab. Dans ce cas, le transfert du paramtre non optionnel it_outtab ne
suffit pas. Les informations relatives la structure de lignes doivent galement tre transfres
l'objet. Dans le cas de zones numriques comportant une unit, les relations entre les zones doivent
tre transfres - soit de manire explicite en utilisant une liste des zones, soit de manire implicite condition que la table interne soit du type de structure du Dictionnaire ABAP. Dans ce dernier cas,
le nom de la structure du Dictionnaire est transmis au paramtre I_STRUCTURE_NAME ;
(C) SAP AG
BC400
11-30
Domaine
Domaine d'cran :
Type
: CUSTOM CONTROL
Nom
: CONTENEUR_1
Reformatage Taille minimale
Vertical
: "X" 10
Horizontal : "X" 20
SAP AG 1999
Pour rserver un domaine de l'cran un contrle EnjoySAP, ouvrez le Screen Painter et choisissez
le bouton Mise en page.
Dans la barre d'outils gauche de la zone d'dition, choisissez le bouton Custom Control. (Celui-ci
fonctionne comme le bouton Sous-cran).
Dans la zone d'dition de l'cran, spcifiez la taille et la position du domaine de l'cran comme suit
: cliquez l'endroit o vous voulez placer le coin suprieur gauche du custom control et gardez le
bouton de la souris appuy. Faites glisser le curseur l o vous voulez placer le coin infrieur droit.
Ds que vous lchez le bouton de la souris, le coin infrieur droit se fixe une position.
Vous pouvez modifier tout moment la taille et la position de la zone en glissant-dplaant les
handles. Cette zone se comporte alors nouveau comme une zone de sous-cran..
Entrez un nouveau nom pour l'lment d'cran (CONTENEUR_1 dans notre exemple).
(C) SAP AG
BC400
11-31
gdt_spfli
DATA: container_r
container_r TYPE
TYPE REF
REF TO
TO cl_gui_custom_container,
cl_gui_custom_container,
grid_r
TYPE REF TO cl_gui_alv_grid,
grid_r
TYPE REF TO cl_gui_alv_grid,
container _r
grid_r
START-OF-SELECTION.
perform fill_itab USING gdt_spfli.
CALL SCREEN 100.
SAP AG 1999
container_r, indique l'objet qui communique avec le container control. Elle est type avec la
classe globale cl_gui_custom_container ;
grid_r, indique l'objet qui communique avec ALV Grid control. Elle est type avec la classe
globale cl_gui_alv_grid.
(C) SAP AG
BC400
11-32
CREATE OBJECT cre un objet l'excution. Vous devez seulement indiquer la variable de
rfrence, comme elle est du mme type d'objet que la classe.
Pour gnrer l'objet qui communique avec le container control, vous devez inclure uniquement le
nom de la zone conteneur l'cran, pour autant que ce soit dans un module PBO du dynpro dans
lequel la zone conteneur est dfinie. Si l'instruction CREATE OBJECT est excute dans un autre
bloc de traitement ABAP, vous devez inclure le numro de l'cran conteneur et le nom du
programme.
(C) SAP AG
BC400
11-33
grid_r
CALL METHOD
grid_r->set_table_for_first_display
EXPORTING i_structure_name = 'SPFLI'
CHANGING it_outtab
= gdt_spfli.
ELSE.
CALL METHOD
grid_r->refresh_table_display
EXPORTING i_soft_refresh = 'X'.
ENDIF.
ENDMODULE.
SAP AG 1999
Pour afficher les donnes dans un ALV Grid Control, vous devez les disposer dans une table interne.
Le systme appelle ensuite la mthode qui reoit le contenu et la structure de la table interne. La
mthode s'appelle set_table_for_first_display. condition que la table interne soit du
type de structure du Dictionnaire ABAP, le nom de cette structure est transfr au paramtre
i_structure_name. La mthode reoit les informations dont elle a besoin - noms de colonne,
types de colonne, et liens de colonne pour des zones de devise - directement du Dictionnaire ABAP.
Si seul le contenu de la table interne est modifi pendant l'excution du programme, il doit appeler la
mthode refresh_table_display avant le renvoi de l'cran dans la zone conteneur.
(C) SAP AG
BC400
11-34
Groupes
Groupes de
de fonctions
fonctions et
et modules
modules de
de fonction
fonction
Objets
Objets et
et mthodes
mthodes
Objets
Objets de
de gestion
gestion et
et BAPI
BAPI
Bases
Bases de
de donnes
donnes logiques
logiques
SAP AG 1999
(C) SAP AG
BC400
11-35
SAP AG 1999
(C) SAP AG
BC400
11-36
BAPI
SAP AG 1999
Un BAPI est un point d'entre du systme R/3, point auquel le systme R/3 fournit un accs aux
objets de gestion et aux traitements.
Chaque objet du BOR peut avoir diffrentes mthodes, une ou plusieurs d'entre elles peuvent tre
excutes comme des BAPI.
(C) SAP AG
BC400
11-37
Systmes-satellite R/3 et
scnarios rpartis (ALE)
Business
Workflow
Visual Basic/JAVA...
Internet /
Intranet
Composante
de gestion
Composition
des
composantes R/3
Composante
B
de gestion
Composante
de gestion
SAP AG 1999
Dveloppement
spcifique client et
partenaires
Un BAPI est une interface qui peut s'utiliser dans de nombreuses applications. Par exemple :
- les composantes applicatives Internet permettent l'accs des fonctions R/3 individuelles sur
Internet ou Intranet pour des utilisateurs sans exprience R/3 ;
- la composition des composantes R/3 permet une communication entre les objets de gestion et
les diffrentes composantes R/3 (applications) ;
- VisualBasic/JAVA/C++ : des clients externes (par exemple, des GUI alternatifs) peuvent
accder directement aux objets de gestion et leurs traitements.
(C) SAP AG
BC400
11-38
Mthodes :
FlightBooking.GetList
FlightBooking.GetDetail
FlightBooking.CreateFromData
FlightBooking.Cancel
Compagnie arienne
Numro de correspondance
Date du vol
Numro de rservation
SAP AG 1999
(C) SAP AG
BC400
11-39
BAPI Explorer
Hirarchique
Alphabtique
Dtail
Documentation
Outils
Projet
Hirarchie des
composantes
Composante applicative
Objet de gestion
Attributs-cls
Des informations
complmentaires sur
les sous-composantes sont
disponibles dans les autres
outils ABAP Workbench
Mthodes API
Domaine de hirarchie
SAP AG 1999
Le BAPI Explorer Information vous permet d'afficher des informations complmentaires sur les
objets de gestion et les BAPI qui leur appartiennent. L'cran se divise en deux parties : un domaine
de hirarchie et une fentre de dtails. Le domaine de hirarchie affiche la hirarchie des
composantes. Vous pouvez dvelopper une composante applicative pour trouver les objets de gestion
qui lui appartiennent. Si vous dveloppez un objet de gestion individuel, le systme affiche un sousarbre, vous indiquant quels attributs-cls et quelles mthodes API en dpendent. (API reprsente
Application Programming Interface).
(C) SAP AG
BC400
11-40
SAP AG 1999
Des symboles s'utilisent pour indiquer les objets de gestion, les attributs-cls et les BAPI. Vous
pouvez afficher la cl de ces symboles en utilisant le bouton Afficher lgende.
(C) SAP AG
BC400
11-41
Hirarchique
Alphabtique
Dtail
Documentation
Outils
Projet
FlightBooking
Compagnie arienne
N correspondance
Date du vol
N rservation
Cancel
CreateFromData
GetDetail
GetList
Attributs-cls
Mthodes API
FlightCustomer
FlightConnection
SAP AG 1999
Si vous dveloppez le sous-arbre d'un objet de gestion dans le BAPI Explorer, le systme affiche :
les attributs-cls, qui fournissent un identificateur unique chaque objet de gestion ;
les mthodes spcifiques de l'instance, lies l'instance identifie par les attributs-cls ; le type
d'objet de gestion FlightBooking a une mthode spcifique l'instance, GetDetail (qui renvoie
une structure comportant les dtails d'une rservation). Les valeurs des attributs-cls doivent tre
transfres cette mthode ;
les mthodes non spcifiques de l'instance, appeles par toutes les instances d'un type d'objet.
FlightBooking en possde une, GetList (qui renvoie une liste de toutes les rservations, pour
lesquelles un objet de gestion existe dj au moment de l'excution).
(C) SAP AG
BC400
11-42
Hirarchique
Alphabtique
FlightBooking
Compagnie arienne
N correspondance
Date du vol
N rservation
Dtail
Documentation
Outils
Projet
Slection d'outils
Gnrateur d'objets
Gnrateur de modules de fonction
Dictionnaire ABAP
Contrles de cohrence BAPI
Cration de liste BAPI
Cancel
CreateFromData
Entre donnes rserv.
Retour
Donnes de rservation
Structure du Dictionnaire
BAPISBDTIN
GetDetail
GetList
FlightCustomer
FlightConnection
Afficher
SAP AG 1999
Si vous dveloppez la sous-structure d'une mthode, le systme renvoie les noms de ses paramtres
d'import et d'export. Vous trouverez des informations complmentaires sur le typage des paramtres
d'interface en choisissant l'onglet Outils,et ensuite le Dictionnaire ABAP. Les paramtres d'interface
BAPI sont toujours typs par des types du Dictionnaire ABAP.
Les BAPI ont gnralement un paramtre d'export appel RETURN. Celui-ci peut tre soit une
structure, soit une table interne. Le paramtre RETURN contient des informations sur les erreurs
effectues pendant le traitement du BAPI. Les BAPI n'ont pas d'exceptions.
(C) SAP AG
BC400
11-43
Gnrateur d'objets
Type d'objet
Donnes de base
Vue complte de
l'objet de gestion
Interfaces
Interfaces
Zones-cls
Attributs
Mthodes
vnements
SAP AG 1999
Pour afficher des informations compltes sur un type d'objet de gestion, utilisez l'outil Gnrateur
d'objets. Le systme affiche une arborescence pour le type d'objet de gestion, y compris des
mthodes non API.
Pour rechercher un objet de gestion, utilisez l'outil Business Object Repository (BOR). Cet outil
affiche la hirarchie des composantes et tous les objets de donnes qui en dpendent. Vous pouvez
naviguer de cette arborescence vers le Gnrateur d'objets. Le systme affiche automatiquement
l'objet adquat.
(C) SAP AG
BC400
11-44
BAPI standard
l GetList
n
l GetDetail
n
l CreateFromData
n
SAP AG 1999
Les BAPI de noms standardiss contiennent des mthodes standard. Cette page vous propose les
trois plus importantes.
(C) SAP AG
BC400
11-45
Hirarchique
Alphabtique
FlightBooking
Dtail
Outils
Projet
Slection d'outils
Compagnie arienne
N correspondance
Date du vol
N rservation
Annuler
CreateFromData
GetDetail
Retour
Donnes de rserv.
Documentation
Gnrateur d'objets
Gnrateur de modules de fonction
Dictionnaire ABAP
Contrles de cohrence BAPI
Cration de liste BAPI
GetList
FlightCustomer
FlightConnection
Afficher
SAP AG 1999
Dans la version 4.6, les BAPI sont implments par des modules de fonction. Vous pouvez afficher
le module de fonction du BAPI choisi en utilisant le BAPI Explorer :
slectionnez le BAPI dans le domaine de hirarchie ;
dans la fentre d'affichage des informations dtailles, choisissez l'onglet Outils ;
choisissez le Gnrateur de fonctions, le systme affiche le nom du module de fonction ;
choisissez Afficher.
(C) SAP AG
BC400
11-46
R/3
TABLES ...
DATA
...
Business Object
Repository
Objet de gestion A :
Mthode 1 = M1
Mthode 2 = M2
Modules de fonction :
BAPI_A_M1
BAPI_A_M2
SAP AG 1999
Si vous voulez utiliser un BAPI dans un systme R/3, vous pouvez directement appeler le module de
fonction qui le comporte. Vous constaterez que les informations relatives aux erreurs sont transfres
au programme en utilisant le paramtre d'interface RETURN. Les modules de fonction BAPI ne
contiennent pas d'exceptions ni de dialogues utilisateur. Leur fonction unique est d'encapsuler la
logique applicative.
(C) SAP AG
BC400
11-47
SAP AG 1999
Tout BAPI possde un paramtre d'interface, RETURN, qui contient les informations sur les cas
d'erreur. Ce paramtre est toujours d'un type du Dictionnaire ABAP. Vous devez donc inclure une
structure d'un type identique dans votre programme.
(C) SAP AG
BC400
11-48
Groupes
Groupes de
de fonctions
fonctions et
et modules
modules de
de fonction
fonction
Objets
Objets et
et mthodes
mthodes
Objets
Objets de
de gestion
gestion et
et BAPI
BAPI
Bases
Bases de
de donnes
donnes logiques
logiques
SAP AG 1999
(C) SAP AG
BC400
11-49
SAP AG 1999
(C) SAP AG
BC400
11-50
SFLIGHT
SBOOK
SAP AG 1999
Utilisez des bases de donnes logiques pour lire dans les bases de donnes des informations
logiquement cohrentes. Chaque base de donnes logique possde une structure comportant une
hirarchie des tables et des vues lire.
Vous pouvez relier une seule base de donnes logique chaque programme de type 1. Celle-ci
envoie ensuite votre programme des entres aux tables et aux vues. Seules les instructions de
traitement de donnes doivent donc tre programmes.
(C) SAP AG
BC400
11-51
Vous
Vous pouvez associer une base de donnes logique
chaque programme
programme de
de type
type 1,
1, l'aide
l'aide des
des attributs
attributs de
de ce
ce
dernier.
dernier.
Pour
Pour le
le traitement
traitement des
des enregistrements,
enregistrements, vous utilisez des
vnements spcifiques.
spcifiques.
SAP AG 1999
Chaque base de donnes logique est encapsule dans un programme conu pour les accs frquents
ses informations.
Lorsque vous travaillez avec une base de donnes logique, vous ne devez pas programmer d'cran de
slection car celui-ci est gnr automatiquement.
(C) SAP AG
BC400
11-52
Donnes de
la BD logique
Programme
NODES sflight.
SPFLI
GET sflight ...
SFLIGHT
SBOOK
SAP AG 1999
elle dfinit un objet de donnes (une structure) comme un espace de travail de table qui a la
mme structure que la structure <noeud> du Dictionnaire ABAP, qui est un noeud de la
structure hirarchique de la base de donnes logique. A l'excution, cette structure reoit des
enregistrements que la base de donnes logique a lus et fournis au programme ;
elle dtermine le niveau de dtail de l'cran de slection : l'cran dfini dans la base de
donnes logique ne doit contenir que les zones de saisie des informations-cls ncessaires au
programme. L'instruction NODES vous permet de garantir l'accs aux informations des tables
appropries de l'cran de slection.
Les bases de donnes logiques effectuent une lecture de haut en bas, en fonction de leur structure. Le
niveau de donnes lues dpend des vnements GET d'un programme. Le niveau est dtermin par
l'vnement GET maximal (d'une vue structurelle de la base de donnes logique).
(C) SAP AG
BC400
11-53
Programme
NODES: SPFLI,
SFLIGHT.
Base de
donnes
logique
START-OF-SELECTION.
GET spfli.
GET sflight.
SPFLI
SFLIGHT
Runtime
system
ABAP
SBOOK
Liste de base
END-OF-SELECTION.
SAP AG 1999
Pour inclure une base de donnes logique un programme de type 1, vous utilisez les attributs de ce
programme.
Chaque noeud de la hirarchie de base de donnes logique vous envoie un vnement GET (en plus
des autres vnements). (GET SPFLI, GET SFLIGHT, GET SBOOK dans notre exemple).
Vous utilisez des vnements GET pour programmer le traitement des enregistrements.
Au moment de l'excution, les vnements qui crent des listes sont traits dans l'ordre suivant :
n
START-OF-SELECTION.
GET SPFLI et GET SFLIGHT, appels de nombreuses fois dans une logique SELECT
imbrique, en fonction de la structure de la base de donnes logique.
END-OF-SELECTION, appel aprs tous les vnements GET et immdiatement avant l'envoi
de la liste au serveur de prsentation.
(C) SAP AG
BC400
11-54
REPORT bc400d_logical_database.
NODES: spfli, sflight.
START-OF-SELECTION.
WRITE: / 'START-OF-SELECTION'
color 3.
GET spfli FIELDS carrid connid.
WRITE: / 'GET SPFLI' color 1,
spfli-carrid,
spfli-connid.
GET sflight FIELDS fldate.
WRITE: / 'GET SFLIGHT' color 2,
sflight-fldate.
START-OF-SELECTION
GET SPFLI
DL 1699
GET SFLIGHT
25.08.1998
GET SFLIGHT
27.09.1998
DL 1984
GET SFLIGHT
25.08.1998
GET SFLIGHT
27.09.1998
GET SFLIGHT
29.09.1998
END-OF-SELECTION
END-OF-SELECTION.
WRITE: 'END-OF-SELECTION'
color 3.
SAP AG 1999
Au moment de l'excution, les vnements qui crent des listes sont traits dans l'ordre suivant :
n
START-OF-SELECTION.
GET sflight : l'enregistrement suivant dans la table SFLIGHT est plac dans l'espace de
travail sflight, puis l'vnement est trait de nouveau ;
GET sflight est appel jusqu' ce qu'aucun nouvel enregistrement ne soit plus trouv ;
GET spfli LATE est appel avant que l'enregistrement du SPFLI suivant ne soit plac
dans l'espace de travail spfli ;
GET spfli : l'enregistrement correspondant suivant de SPFLI est plac dans l'espace de
travail spfli ;
...
(C) SAP AG
BC400
11-55
Rsum
Attributs
Type
Application
Log. Datenbank
F1S
SPFLI
SFLIGHT
SBOOK
SAP AG 1999
Les BD logiques sont incluses dans les programmes de type 1 en tant qu'attributs. Une seule BDL
peut tre associe un programme.
Pour indiquer la BD logique les zones dont vous avez besoin, utilisez l'option FIELDS de GET.
Si elle gre cette action, toutes les zones spcifies seront lues.
Pour placer les donnes d'une table dans une liste non fournie par votre BD logique, utilisez SELECT
pour programmer un accs supplmentaire cette base.
(C) SAP AG
BC400
11-56
SAP AG 1999
(C) SAP AG
BC400
11-57
Exercices
(C) SAP AG
BC400
11-58
(C) SAP AG
BC400
11-59
Programme :
ZBC400_##_DYNPRO
Solution modle :
SAPBC400UDS_DYNPRO_5
1-1
1-2
1-3
1-4
1-5
(C) SAP AG
BC400
11-60
Programme :
ZBC400_##_ALV_GRID
Solution modle :
SAPBC400RUS_ALV_GRID
2-1
2-2
Testez le programme.
2-3
2-4
2-5
2-6
(C) SAP AG
BC400
11-61
2-7
2-8
2-9
(C) SAP AG
BC400
11-62
Solutions
(C) SAP AG
BC400
11-63
(C) SAP AG
BC400
11-64
1-2
1-3
1-4
1-5
*&--------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&--------------------------------------------------------------*
MODULE user_command_0100 INPUT.
save_ok = ok_code .
CLEAR ok_code .
CASE save_ok.
WHEN 'BACK'.
SET SCREEN 0.
WHEN 'RW'.
CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA'
EXPORTING
textline1 = text-001
title
= text-002
IMPORTING
answer
= answer.
case answer.
when 'N'.
leave to screen 100.
when 'J'.
(C) SAP AG
BC400
11-65
leave to screen 0.
endcase.
WHEN 'SAVE'.
MESSAGE i060(bc400).
SET SCREEN 0.
WHEN OTHERS.
SET SCREEN 100.
ENDCASE.
ENDMODULE.
(C) SAP AG
" USER_COMMAND_0100
BC400
INPUT
11-66
Programme :
ZBC400_##_ALV_GRID
Solution modle :
2-3
START-OF-SELECTION.
WHERE ...
CALL SCREEN 100.
2-6
2-7 2-9 :
Logique d'excution :
(C) SAP AG
BC400
11-67
Module
CREATE_CONTROL
OUTPUT
*&---------------------------------------------------------------------*
CALL METHOD
i_parent =
container_r.
grid_r->set_table_for_first_display
it_outtab
= gdt_spfli.
ELSE.
CALL METHOD grid_r->refresh_table_display
EXPORTING i_soft_refresh = 'X'.
ENDIF.
ENDMODULE.
(C) SAP AG
" CREATE_CONTROL
BC400
OUTPUT
11-68
Contenu :
l Processus de traitement lmentaire
l LUW BD : unit logique de travail Base de donnes
l Regroupement des modifications d'une base de donnes
l Concept de blocage
SAP AG 1999
(C) SAP AG
BC400
12-1
SAP AG 1999
(C) SAP AG
BC400
12-2
Prsentation
Application
Dispatcher
Work
process
Work
process
Work
process
Base de donnes
Work processes de la base de donnes
SAP AG 1999
Le systme R/3 de SAP repose sur une architecture client/serveur trois niveaux : base de donnes,
serveur d'application et serveur de prsentation.
Cette architecture, qui rpartit les requtes des utilisateurs (dispatcher), est la base d'un systme
multi-utilisateurs, hautement performant et conomique.
Les utilisateurs quips d'ordinateurs relativement lents accdent aux work processes d'un petit
nombre de serveurs d'application beaucoup plus rapides (et plus onreux). chaque work process du
serveur d'application correspond un work process du serveur de base de donnes.
Le dispatcher attribue un work process aux clients, et ce, au niveau du serveur de prsentation et
pendant une dure dtermine. son tour, le work process du serveur d'application utilise un work
process de la base de donnes. Quand le systme a trait la saisie utilisateur dans une tape de
dialogue, les donnes-contexte de l'utilisateur et du programme sont copies hors du work process,
laissant ainsi la place libre un autre utilisateur.
Cette architecture trois niveaux est beaucoup plus volutive qu'une architecture client-serveur
volumineuse runissant en un seul niveau les serveurs de prsentation et d'application. Comme elle
ncessite moins d'oprations en antmmoire, elle est plus conomique.
(C) SAP AG
BC400
12-3
Processus de
traitement lmentaire
Traitement
tape 1
Traitement
tape 2
...
Traitement
tape n
LUW SAP
SAP AG 1999
Une LUW SAP (unit logique de travail) est une srie d'tapes logiques runies dans un processus
de gestion R/3.
Les tapes de la chane de traitement du processus de gestion doivent tre logiquement lies.
Les LUW SAP fonctionnent selon le principe du "tout ou rien" : le systme effectue toutes les tapes
ou aucune.
Le processus de gestion reprsent dans une LUW doit tre lmentaire. Ainsi, le processus
intervenant depuis la commande d'un client jusqu' la facturation est trop complexe pour tenir dans
une seule LUW. Dans ce cas, scindez-le en segments indpendants plus petits qui forment chacun
une "transaction" dans le systme R/3. Le caractre "lmentaire" de votre processus dpend de sa
nature et de la faon dont vous l'aurez conu.
(C) SAP AG
BC400
12-4
Stade intermdiaire
Stade
cohrent 1
Stade
cohrent 2
COMMIT
ROLLBACK
SAP AG 1999
Une LUW base de donnes est une suite d'oprations indissociables qui fait passer la base de
donnes d'un tat cohrent un autre tat cohrent.
Les LUW BD se terminent par un commit de base de donnes. C'est seulement au COMMIT que
sont crites dfinitivement les modifications de la base de donnes. Jusqu'au dclenchement du
COMMIT, vous pouvez annuler toutes vos modifications en provoquant un ROLLBACK.
(C) SAP AG
BC400
12-5
LUW SAP
Dialogues utilisateur
Programme
ABAP
Modifications de la BD
LUW BD
SAP AG 1999
Pour reprsenter un processus de gestion dans le systme R/3 au moyen d'une LUW SAP, il faut des
dialogues utilisateur et un dialogue base de donnes. Une transaction garantit que les donnes
changes entre le programme et l'utilisateur dans les dialogues utilisateur sont traites dans la base
selon le principe du tout ou rien. Tous les changements de la LUW SAP doivent donc tre traits
dans une seule LUW BD.
L'objectif de la programmation d'une transaction est de regrouper les segments du dialogue base de
donnes dans une seule LUW BD.
(C) SAP AG
BC400
12-6
Commits implicites
tape de dialogue
PBO
PAI
COMMIT
implicite
LUW BD
PAI
PBO
Modifications de
base de donnes
COMMIT
implicite
LUW BD
COMMIT
explicite
LUW BD
SAP AG 1999
(C) SAP AG
BC400
12-7
Blocage a russi
Demande de blocage
Dure
Dure
Objet bloqu
SAP AG 1999
(C) SAP AG
BC400
12-8
Blocage a russi
Demande de blocage
Demande de blocage
Blocage a chou
Dure
Dure
Objet bloqu
SAP AG 1999
(C) SAP AG
BC400
12-9
Blocage a russi
Demande de blocage
Leve du blocage
Demande de blocage
Blocage a chou
Dure
Dure
Objet bloqu
SAP AG 1999
(C) SAP AG
BC400
12-10
Blocage a russi
Demande de blocage
Leve du blocage
Demande de blocage
Blocage a chou
Demande de blocage
Dure
Dure
Objet bloqu
Objet bloqu
SAP AG 1999
Un blocage au niveau du serveur base de donnes ne vaut que pour une seule LUW BD. Il ne
s'applique donc pas un objet portant sur la totalit d'une LUW SAP.
Cela est d au fait que le systme R/3 comporte un mcanisme de blocage spcifique totalement
indpendant du systme de blocage de base de donnes.
Selon le concept de blocage SAP, les programmes placent les entres dont ils ont besoin dans une
table de blocages.
Vous pouvez crire une entre de blocage seulement si les entres de table correspondantes ne sont
pas dj bloques. Le code retour indique au programme si le blocage a t correctement dfini.
Testez le code retour de programme et ragissez en consquence. Si un autre utilisateur a dj bloqu
les entres de table, affichez un message d'erreur.
Avant de dfinir un blocage, vous devez spcifier l'objet de blocage appropri dans le Dictionnaire
ABAP. Cet objet indique les arguments servant bloquer des entres de la table.
Lorsque vous activez un objet de blocage, le systme gnre deux modules de fonction : ENQUEUE
et DEQUEUE.
Le mcanisme de blocage SAP ne dfinit que des blocages logiques. Il n'a donc d'effet que si tous
les programmes applicatifs sont conformes ses principes.
(C) SAP AG
BC400
12-11
Dans notre programme d'exemple, il est normal d'crire une entre de blocage, avant que
l'enregistrement de donnes ne soit lu et l'cran trait.
Vous crivez une entre de blocage en appelant un module de fonction ENQUEUE pour un objet de
blocage appropri. Vous trouverez quels objets de blocage accdent une table de base de donnes
dans les Cas d'emploi de celle-ci du Dictionnaire ABAP. Les modules de fonction "blocage" et
"dblocage" de l'objet de blocage slectionn requirent uniquement les conventions de nom
ENQUEUE_<Nom de l'objet de blocage> et DEQUEUE_<Nom de l'objet de blocage>. En rgle
gnrale, vous devez uniquement transfrer les zones-cls de l'interface. Les valeurs par dfaut sont
transmises tous les autres paramtres.
(C) SAP AG
BC400
12-12
Notre programme d'exemple montre une seule mise jour concernant une seule table. Vous pouvez
donc mettre jour la base de donnes directement depuis un work process de dialogue, la technique
la plus facile. Les instructions ABAP qui mettent jour la base de donnes sont toutes excutes
dans une seule LUW BD. Vous ne devez JAMAIS inclure un dialogue utilisateur entre deux mises
jour de la BD. NOTE : ceci inclut les messages d'erreur. En cas d'erreur, le programme doit tre
interrompu par un message "Fin anormale" pour qu'un rollback s'excute automatiquement.
Des mises jour de base de donnes plus complexes sont excutes par des modules mise jour.
Pour plus d'informations, reportez-vous BC414 Programmation des mises jour de la base de
donnes.
(C) SAP AG
BC400
12-13
SAP AG 1999
(C) SAP AG
BC400
12-14
SAP AG 1999
(C) SAP AG
BC400
13-1
SAP AG 1999
(C) SAP AG
BC400
13-2
Logistique logicielle
logicielle
Logistique
Modificationde
deRR//33
Modification
SAP AG 1999
(C) SAP AG
BC400
13-3
Fin du dveloppement
Planning :
...
Fin du dveloppement
Chef de projet :
Tches de contrle de qualit :
Contrle de syntaxe
Activation d'objets inactifs
Documentation de tche
quipe :
BC400-00
BC400-01
Projet de contrle
contrle de qualit
qualit
Contrle
Contrle de syntaxe
Objets inactifs
Cohrence
Cohrence de tche
tche
Documentation du projet
BC400-02
BC400-03
BC400-04
libr
...
SAP AG 1999
(C) SAP AG
BC400
13-4
Originaux et copies
Systme
Systme de dveloppement
dveloppement
Objet client
Systme
Systme suivant
Objet client
Original
Copie
Transport
Dveloppement
Objet SAP
Original
Objet SAP
Copie
Objet SAP
Copie
SAP AG 1999
Le Workbench Organizer note automatiquement le systme dans lequel vous crez un objet du
Repository. L'original de cet objet du Repository se trouve donc dans ce systme.
La version initiale d'un objet n'existe que dans un seul systme. Les autres systmes n'en contiennent
que des copies.
Le fait qu'il existe un systme initial pour un objet garantit que celui-ci n'est modifi que dans le
systme d'intgration. C'est dans ce systme que vous dveloppez ; tous les objets qui s'y trouvent
sont donc des originaux. Vous y modifiez les objets du Repository.
Si vous transportez ensuite vos objets du Repository dans un systme de consolidation, ce dernier en
contiendra des copies. Bien qu'il soit possible, dans des cas exceptionnels, de modifier des copies,
faites-le toujours dans le systme d'intgration avant de transporter les nouvelles versions dans
d'autres systmes. Ainsi, l'tat des objets reste cohrent d'un systme l'autre.
(C) SAP AG
BC400
13-5
Corrections et rparations
Systme
Systme de dveloppement
dveloppement
Objet client
Objet client
Original
corrig
corrig
Copie
Correction
Objet SAP
Original
corrig
corrig
Correction
Systme
Systme suivant
Transport
correction
Objet SAP
Copie
modifie
modifie
Rparation
Objet SAP
Copie
Transport
rparation
SAP AG 1999
La modification d'un original s'appelle une correction. Le systme enregistre ces modifications dans
une demande contenant des tches de type "dveloppement/correction".
Si une copie est modifie (donc, si un objet n'est pas modifi dans son systme original), cette
modification s'enregistre dans une tche de type "rparation". Une modification d'un objet SAP
s'appelle une rparation.
Les modifications effectues dans vos propres objets (par ex. une urgence du systme de production)
peuvent galement s'inscrire en mme temps dans les originaux du systme de dveloppement. Il est
impratif d'enregistrer galement les modifications effectues dans vos copies immdiatement
dans vos originaux !!
Ce n'est pas possible pour les objets SAP car les originaux ne sont pas dans vos systmes.
(C) SAP AG
BC400
13-6
Systme
Systme suivan
Systme
Systme de dveloppement
dveloppement
Objet SAP
Objet client
Objet client
Original
corrig
corrig
Copie
Objet SAP
Original
corrig
corrig
Objet SAP
Copie
modifie
modifie
Ajustement
de la
modification
Monte
Monte de version
Copie
Transport
modification
Monte
Monte de version
SAP AG 1999
Un conflit peut se produire lorsque vous effectuez une monte de version, un support package, ou
d'autres ordres de transport de SAP vers votre systme.
Un conflit se produit si vous modifiez un objet SAP et qu'une nouvelle copie est effectue par SAP
lors d'une monte de version. L'objet livr par SAP devient l'objet actif du Repository de votre
systme R/3.
Pour sauvegarder vos modifications, vous devez effectuer un ajustement de modification pour les
objets correspondants. La modification de nombreux objets SAP peut entraner un retard substantiel
lors de l'excution de la monte de version.
Pour garantir la cohrence du systme de dveloppement et du systme suivant, vous devez effectuer
l'ajustement de modification uniquement dans le systme de dveloppement. Les objets de
l'ajustement sont ensuite transports vers les autres systmes.
(C) SAP AG
BC400
13-7
Logistique logicielle
logicielle
Logistique
Modificationde
deRR//33
Modification
SAP AG 1999
(C) SAP AG
BC400
13-8
Niveaux de modification
Tches applicatives
R/3
( Standard SAP)
Programmes
client
Extension
Modification
l Modification
code en dur
l Dictionnaire ABAP
l Modification
assiste
l Exit client
n
n
n
n
n
Extension de table
Exit de zone
Exit de module de
fonction
Exit d'cran
Exit de menu
Dveloppement client
l avec appel
d'objets SAP
l sans appel
d'objets SAP
l BTE, Business
Transaction Events
l BADI, Business add-in
l
Exit utilisateur
SAP AG 1999
(C) SAP AG
BC400
13-9
Extensions fonctionnelles
Dveloppement client
Non
Oui
La fonction SAP peut-elle tre adapte
aux besoins du client par des
extensions ?
Customizing
Oui
Non
L'application SAP permet-elle
la liaison de plusieurs fonctions aux
extensions ?
Extension
Oui
Non
Demande d'extension,
viter modification
SAP AG 1999
Avant de modifier le standard, vrifiez si vous ne pouvez pas obtenir le rsultat voulu en utilisant le
Customizing ou le concept d'extension.
Vous utilisez les extensions pour modifier le logiciel SAP, tout en vitant d'en rparer la copie. Vous
modifiez ou compltez des fonctions sans avoir rparer le logiciel manuellement lors des montes
de version. Les diffrents types d'extension sont cits plus loin dans ce chapitre.
(C) SAP AG
BC400
13-10
Menu 1
Menu 2
Fonction 1
Fonction 2
Fonct. client
Fonction 3
Menu 3
Exit de menu
Zone x
Exit de zone
Zone y
Exit de dynpro
SAP AG 1999
(C) SAP AG
BC400
13-11
Extensions : exemples
l Exits de programme :
n
l Extensions du Dictionnaire :
n
SAP AG 1999
extension de programmes applicatifs : les dveloppeurs SAP ont inclus des exits en certains points
des programmes applicatifs pour vous permettre d'appeler des sections de vos propres programmes ;
(C) SAP AG
BC400
13-12
Systme client
Programme
ZABAP
Ajouter dveloppeur
Vous ne figurez pas dans la liste des
dveloppeurs. Veuillez vous inscrire
dans le SAPNet - R/3 Frontend.
Une fois inscrit, vous recevrez
une cl d'accs.
SAPNet
R/3
Frontend
Utilisateur
Cl
THIERRY
07319180563617100772
SAP AG 1999
Pour commencer dvelopper des programmes dans le systme R/3, vous devez demander une cl
au SAPNet - R/3 Frontend. Vous tes alors inscrit dans la liste des dveloppeurs. La cl vous sera
demande la premire fois que vous crerez ou modifierez un objet du Repository. Le systme
attribue des cls en fonction de la rfrence client et du nom de l'utilisateur.
(C) SAP AG
BC400
13-13
SAP AG 1999
(C) SAP AG
BC400
13-14
Systme client
Programme
ZABAP
Ajouter dveloppeur
Vous ne figurez pas dans la liste des
dveloppeurs. Veuillez vous inscrire
dans le SAPNet - R/3 Frontend.
Une fois inscrit, vous recevrez
une cl d'accs.
SAPNet
R/3
Frontend
Utilisateur
Cl
THIERRY
07319180563617100772
SAP AG 1999
Pour commencer dvelopper des programmes dans le systme R/3, vous devez demander une cl
au SAPNet - R/3 Frontend. Vous tes alors inscrit dans la liste des dveloppeurs. La cl vous sera
demande la premire fois que vous crerez ou modifierez un objet du Repository. Le systme
attribue des cls en fonction de la rfrence client et du nom de l'utilisateur.
(C) SAP AG
BC400
13-15
SAP AG 1999
(C) SAP AG
BC400
13-16
Annexes
SAP AG 1999
(C) SAP AG
BC400
14-1
Cas d'emploi
Informations sur
les tables et
leurs relations
SAP AG 1999
(C) SAP AG
Objets modifis
modifis
Afficher tous les objets
de type X qui ont t modifis par
l'utilisateur Y en date du JJMMAA
BC400
14-2
Affectation
une classe de dveloppement
Dfinition d'attributs
Affectation un projet
diteur
Objet de programme
SAP AG 1999
Pour crer un nouveau programme, vous devez saisir tout d'abord des informations d'ordre
administratif.
Les programmes doivent tre affects une classe de dveloppement spcifique. . Celle-ci classe le
programme logiquement. Vous le faites une fois pour toutes, lorsque vous crez l'objet du
Repository (la classe de dveloppement sera son tour affecte logiquement la composante
approprie).
Vous devez aussi dfinir des attributs du programme. Parmi ceux-ci, le type de programme est
particulirement important. Il dtermine le mode d'excution du programme dans un environnement
client/serveur R/3 si, par exemple, le texte source qui en rsulte constitue un programme excutable
ou un segment de code rutilisable.
(C) SAP AG
BC400
14-3
SAP AG 1999
Vous trouverez des informations sur la dfinition de types de table dans la documentation, au motcl TYPES.
(C) SAP AG
BC400
14-4
TYPE-POOL Z400.
TYPES: z400_name_type(25) TYPE C,
BEGIN OF z400_flightrec_type,
...
,
END OF z400_flightrec_type.
REPORT ... .
TYPE-POOLS z400.
DATA: name TYPE z400_name_type,
wa TYPE z400_flightrec_type.
... .
ABAP
SAP AG 1999
Vous dfinissez des types de donnes dans un type-pool du Dictionnaire ABAP, plutt que dans un
programme ABAP.
Le nom d'un groupe de types du Dictionnaire ABAP ne doit pas dpasser 5 caractres. Les noms des
types contenus dans le groupe de types <typepool> doivent commencer par <typepool>, suivi d'un
trait de soulignement.
Dans les programmes ABAP, vous devez dclarer les types appartenant un groupe de types par la
commande TYPE-POOLS.
(C) SAP AG
BC400
14-5
PARAMETERS et TABLES
PA_CARR
Compagnie
arienne
Numro de vol
Continuer
Transport de donnes
pa_carr
sdyn_conn
sdyn_conn
TABLES sdyn_conn.
PARAMETERS pa_carr LIKE spfli-carrid.
MOVE pa_carr TO sdyn_conn-carrid.
CALL SCREEN 100.
SAP AG 1999
L'instruction PARAMETERS est un lment de langage dclaratif qui tablit des zones internes dans
un tat. Contrairement ce qui se produit avec l'instruction DATA, les zones dclares avec
PARAMETERS figurent sur l'cran de slection pour la saisie.
Avec l'instruction PARAMETERS, vous utilisez les options TYPE et LIKE, comme avec l'instruction
DATA.
De mme que vous utilisez DATA avec VALUE pour affecter une valeur initiale, vous spcifiez
l'option DEFAULT dans l'instruction PARAMETERS pour fixer la valeur par dfaut de la zone. Cette
valeur est un littral, une constante ou une zone systme extraite lors du traitement de l'tat (sydatum, par exemple).
Servant d'interface vers l'cran pour toutes les zones, l'instruction TABLES dclare un objet de
donnes interne servant d'interface cran pour toutes les zones se rfrant au mme objet du
Dictionnaire.
L'instruction TABLES dfinit un espace de travail appropri dans votre programme ABAP pour les
donnes entres dans un cran ou transfres du programme vers l'cran.
(C) SAP AG
BC400
14-6
CLEAR <wa>.
CLEAR <itab>.
CONNID
0017
0400
SAP AG 1999
Pour rtablir la valeur initiale du contenu d'un objet de donnes en fonction de son type, utilisez
l'instruction CLEAR.
Les entres de table interne sont du mme type. Une seule instruction CLEAR suffit donc pour
effacer l'intgralit d'une table.
(C) SAP AG
BC400
14-7
Type
TYPES
Zone lmentaire, structure,
Table interne
DATA
Constante
CONSTANTS
Paramtre de saisie
PARAMETERS
Espace de travail
TABLES
SAP AG 1999
Dfinition de types
Dfinition de zones lmentaires, structures, et tables internes
Dfinition de constantes
Dfinition de paramtres de saisie
Dfinition d'espaces de travail
Dans le chapitre Tables internes et dans la section crans de slection du chapitre consacr aux
Dialogues, vous dcouvrirez une autre instruction dclarative : SELECT-OPTIONS Dfinition
d'options de slection
Pour afficher un rcapitulatif complet des instructions dclaratives ABAP, cliquez sur le bouton de
commande "i" de l'diteur, puis choisissez Vue d'ensemble ABAP, Vue d'ensemble du langage
de programmation ABAP, Classification des mots-cls par type.
(C) SAP AG
BC400
14-8
Conversion de type
Quand deux types sont compatibles, il n'y a pas de conversion
Deux types lmentaires sont compatibles quand
leur type et leur longueur (ainsi que leurs
dcimales, dans le cas du type P), sont
identiques.
Deux types de structure sont compatibles quand ils
ont la mme structure et que leurs composantes
sont compatibles.
Pour convertir un type non compatible, il faut qu'il existe une rgle de
conversion dfinie
SAP AG 1999
Si vous affectez un objet de donnes un autre de type diffrent, ABAP effectue une conversion de
type, condition qu'une rgle de conversion ait t tablie pour les types concerns.
(C) SAP AG
BC400
14-9
Expressions logiques
... <zone> <oprateur>
<oprateur> <littral> ...
<oprateur><zone2> ...
... <zone1><oprateur>
... <expression logique> AND <expression logique>
... <expression logique> OR <expression logique>
... NOT <expression logique> ...
Oprateur
Oprateur
EQ
NE
<>
GT
>
GE
>=
LT
<
LE
<=
Signification
gal
><
Diffrent
Suprieur
=>
Suprieur ou gal
Infrieur
=<
Infrieur ou gal
BETWEEN f1 and f2
Intervalle
IS INITIAL
Valeur initiale
SAP AG 1999
Vous imbriquez autant d'expressions entre parenthses que vous le voulez. Les parenthses
dlimitant des sous-expressions comptent toujours pour un mot. Vous devez donc les faire prcder
et suivre d'un espace.
Si vous comparez deux zones de type C de longueur diffrente, la zone la plus courte est rallonge
pour correspondre la plus longue lors de la comparaison. Son extrmit droite est prcde
d'espaces.
(C) SAP AG
BC400
14-10
Boucles DO et WHILE
DO
<n>
TIMES.
Instructions
ENDWHILE.
Instructions
ENDDO.
SY-INDEX
Compteur de boucles
SAP AG 1999
SY-INDEX est le compteur de boucles pour les commandes des boucles DO et WHILE. La valeur 1
est affecte SY-INDEX au premier passage de boucle et augmente de 1 chaque nouveau passage.
Boucles DO :
le paramtre <n> TIMES est facultatif. Si vous ne l'indiquez pas, vous devez spcifier dans la boucle
une condition d'interruption (voir l'instruction EXIT).
- Vous ne pouvez pas modifier le nombre de passages de boucle dans la zone sy-index ni dans le
compteur de boucles de DO ... ENDDO.
Boucles WHILE :
(C) SAP AG
BC400
14-11
CHECK et EXIT
EXIT.
WHILE COUNTER GT 0.
DO.
Instructions
Instructions
CHECK sy-subrc = 0.
IF counter GE 10.
EXIT.
ENDIF.
Instructions
ENDWHILE.
Instructions
counter = counter + 1.
ENDDO.
SAP AG 1999
CHECK <expression logique> : si l'expression logique est fausse, un saut est effectu l'intgration
suivante de la boucle. Toutes les instructions entre CHECK et ENDDO|ENDWHILE sont ignores. Si
l'expression logique est vraie, l'instruction CHECK est sans effet.
Si vous insrez des instructions EXIT dans une boucle, le systme quitte la boucle.
Pour plus d'informations sur le fonctionnement de ces deux instructions en dehors du traitement de
boucles, reportez-vous l'index, aux mots-cls CHECK et EXIT, ou l'appendice.
(C) SAP AG
BC400
14-12
Conditions d'interruption 2
EXIT
Boucles :
WHILE, DO,
SELECT, LOOP
vnements :
START-OF-SELECTION
GET
END-OF-SELECTION
Terminer boucle
en cours
CHECK :
Si condition logique non
remplie, ...
Aller au prochain
passage de boucle
Fin de
programme,
la liste s'affiche
vnements :
INITIALIZATION
AT SELECTION-SCREEN ...
...
Sous-programmes FORM
SAP AG 1999
Lorsque la condition logique suivant le mot-cl n'est pas remplie, utilisez en dehors de la boucle
l'instruction CHECK <condition logique> de ABAP pour terminer prmaturment un bloc de
traitement.
Utilisez aussi l'instruction EXIT en dehors de la boucle pour terminer un bloc de traitement en cours.
Cependant, plusieurs vnements font exception cette rgle. Terminez prmaturment votre
programme par l'instruction EXIT, incluse dans leurs blocs de temps. Dans ce cas, une liste s'affiche
immdiatement aprs le traitement de l'instruction EXIT.
(C) SAP AG
BC400
14-13
Include : <nom-include>
(Type de programme : I)
Instructions ABAP
SAP AG 1999
(C) SAP AG
BC400
14-14
Includes TOP
Cration de programme
Repository Browser :
Programme
<nom>
Cration de programme
avec TOP INCL.
Programme : <nom>TOP
REPORT <nom>.
Type de programme : I
TYPES: ...
DATA: ...
Programme : <nom>
INCLUDE <nom>TOP.
Type de programme : 1
START-OF-SELECTION.
:
SAP AG 1999
(C) SAP AG
BC400
14-15
Groupe de fonctions
BC400
BC400_PERCENTAGE
Dtermine le pourcentage
Sous-programmes
Includes
LBC400TOP
LBC400F01
Sous-programmes
LBC400U01
LBC400U02
Dtermine le pourcentage
LBC400UXX
SAP AG 1999
(C) SAP AG
BC400
14-16
Internet /
Intranet
Dveloppement spcifique
client et partenaires
RFC
Modules de
fonction
Parallle
Encapsulation:
asynchrone
fonctions
dialogues
SAP AG 1999
Vous pouvez appeler les modules de fonction soit de manire asynchrone, soit en parallle.
Vous pouvez crer des modules de fonction que vous appellerez en Remote. Ceux-ci peuvent alors
tre lancs de manire externe:
partir de vos propres programmes (Visual Basic, JAVA ou C++, par exemple).
(C) SAP AG
BC400
14-17
Exceptions
Exceptions
FUNCTION bc400_free_seats.
OCC_GT_MAX
MAX_EQ_0
.
.
.
IF seatsmax = 0.
RAISE max_eq_0.
ELSEIF seatsocc > seatsmax.
RAISE occ_gt_max.
ENDIF.
.
.
.
ENDFUNCTION.
SAP AG 1999
Pour anticiper d'ventuelles erreurs et viter qu'elles ne se rpercutent sur l'excution, affectez-leur
un nom dans l'interface du module de fonction. Ensuite, dclenchez-les partir du code de
programme par l'instruction RAISE. Chaque programme appelant le module interprtera ces
exceptions en testant sy-subrc.
Dans un module de fonction, vous pouvez galement garantir l'affichage d'un message d'erreur en
cas d'exception, mme si elle n'est pas traite explicitement par le programme appelant. Pour plus
d'informations, reportez-vous la documentation, au mot-cl MESSAGE ... RAISING.
(C) SAP AG
BC400
14-18
Exceptions
REPORT.
DATA:
free_seats LIKE sflight-seatsmax.
PARAMETERS: pa_occ LIKE sflight-seatsocc,
pa_max LIKE sflight-seatsmax.
START-OF-SELECTION.
CALL FUNCTION 'BC400_FREE_SEATS'
EXPORTING
seatsmax
= pa_max
seatsocc
= pa_occ
IMPORTING
seatsfree = free_seats
EXCEPTIONS
occ_gt_max
= 1
max_eq_0
= 2
others
= 3.
CASE sy-subrc.
WHEN 1.
WRITE text-ex1.
WHEN 2.
WRITE text-ex2.
WHEN 3.
WRITE text-oth.
ENDCASE.
SAP AG 1999
(C) SAP AG
BC400
14-19
Couleurs/icnes/symboles
iicon_date
AS ICON,
Dpart
Destination
AA 0017
LH 0400
LH 0402
NEW YORK
PARIS
FRANCFORT
SAN FRANCISCO
NEW YORK
BERLIN
SAP AG 1999
Une instruction WRITE peut comporter plusieurs attributs d'affichage de liste. Un de ces attributs est
la couleur, qui peut s'adapter par l'option de formatage COLOR <n>. Vous avez le choix entre sept
couleurs d'arrire-plan, actives soit par une valeur numrique, soit par un nom symbolique
correspondant l'endroit o ils apparaissent dans une liste standard.
0
col_backgroundArrire-plan
col_heading
En-ttes
col_normal
Saisies de liste
col_total
Totaux
col_keyColonnes-cl
col_positive
col_negative
col_group
Niveaux de contrle
Pour crer des listes en couleur, suivez les instructions fournies par SAP. Vous trouverez des
exemples dans la transaction LIBS.
Pour ajouter des icnes dans une liste, utilisez l'instruction WRITE avec l'option AS ICON. Pour
utiliser cette option, insrez au pralable l'include <LIST> dans votre programme.
Vous trouverez un rcapitulatif de toutes les icnes disponibles soit dans la documentation, au motcl WRITE, soit dans la structure de l'instruction WRITE.
(C) SAP AG
BC400
14-20
Serveur
externe
Fichiers
squentiels
Interfaces /
contrles
SAP
SAP AG 1999
Lorsque vous transfrez des donnes entre un autre systme SAP ou un systme externe et votre
propre systme SAP, vous devez prserver leur intgrit.
Vous devez donc soumettre ces transferts aux mmes contrles que les transferts effectus en mode
dialogu.
Dans les transactions, les contrles en mode dialogu sont trs exhaustifs et, pour partie, interapplications : il vous est donc trs difficile d'en programmer vous-mme.
Par consquent, il vaut mieux effectuer le contrle de transactions l'aide des mmes contrles que
dans le mode dialogu de SAP. Ceci signifie, dans la pratique, que les transactions SAP servent
galement au transfert de donnes.
Les techniques utilises pour le transfert de donnes externes s'appellent "processus de batch input".
SAP offre des procdures de transfert de donnes externes standardises pour de nombreux domaines
de R/3. Ces procdures utilisent les techniques de programmation batch input, call transaction et
direct input. Pour accder aux procdures standard de transfert de donnes SAP, utilisez l'atelier
de reprise des donnes (transaction SXDA). Si aucune procdure SAP n'est possible, programmez
des transferts au cas par cas en utilisant le batch input ou la call transaction.
(C) SAP AG
BC400
14-21
CALL TRANSACTION :
Fichier
squentiel
Table
Table BDC
BDC
Fichier
d'attente
DIRECT INPUT :
Fichier
squentiel
Table
Table BDC
BDC
Programme
de transfert
ABAP
CALL
TRANSACTION
Fonction
Fonction de
de batch
batch input
input
Fonction
Fonction d'application
d'application
Base de
donnes
SAP
Fonction
Fonction d'application
d'application
Base de
donnes
SAP
Base de
donnes
SAP
SAP AG 1999
(C) SAP AG
BC400
14-22
Attributs d'cran
Numro d'cran
cran suivant
PBO
100
Attributs d'cran
100
100
PAI
Numro d'cran
cran suivant
200
PBO
200
200
200
PAI
0
SAP AG 1999
Utilisez cette technique pour programmer des clusters d'crans intgrs, sans devoir revenir
continuellement au code source et les appeler par CALL SCREEN.
(C) SAP AG
BC400
14-23
tape de dialogue
PBO
PAI
PAI
PBO
Ordre
UPDATE
PBO
Ordre
INSERT
PAI
Ordre
DELETE
Log
table
Ordre UPDATE
Ordre INSERT
Ordre DELETE
COMMIT WORK
Processus de mise jour
UPDATE
INSERT
DELETE
Processus de base
de donnes
SAP AG 1999
La mise jour est un autre moyen de regrouper les modifications d'une base de donnes la fin d'une
LUW SAP. Au lieu de transfrer les mises jour directement dans la base, vous saisissez des ordres
de mise jour dans une log table.
L'tape "dialogue" de la LUW SAP se termine quand le systme atteint l'instruction COMMIT WORK.
Le systme R/3 dclenche alors un processus de travail spcial, appel processus de travail de mise
jour, qui traite les ordres enregistrs dans la table. La LUW SAP s'achve lorsque la mise jour de la
base est termine.
Les phases "dialogue" et "mise jour" de la LUW SAP peuvent se drouler de faon synchrone ou
asynchrone.
L'avantage de la mise jour par rapport aux regroupements effectus dans des sous-programmes est
que vous saisissez vos ordres dans la table tout moment. Cela vous vite de les conserver dans la
zone du programme. Son inconvnient est qu'elle offre moins de performances.
La mise jour asynchrone convient lorsque le temps de rponse est un facteur important et que les
modifications sont suffisamment complexes pour justifier l'investissement li l'utilisation de la log
table.
La mise jour synchrone convient lorsque vous avez immdiatement besoin des donnes modifies
et que les modifications sont suffisamment complexes pour justifier l'investissement li l'utilisation
de la log table.
(C) SAP AG
BC400
14-24