Anda di halaman 1dari 437

BC400 Introduction ABAP Workbench :

concept et outils
BC400

R/3 System
Release 46B
17.08.2000

BC400 Introduction ABAP Workbench : concept


et outils

BC400
Introduction
ABAP Workbench :
Concept et outils
SAP AG 1999
SAP AG 1999

Systme R/3

Version 4.6A

Novembre 1999

Numro d'article 5003 4914

(C) SAP AG

BC400

0-1

Copyright

Copyright 2000 SAP AG. Tous droits rservs.


Toute reprsentation ou reproduction de ce manuel, mme
partielle, par quelque procd et quelque fin que ce soit, est
interdite sans lautorisation crite explicite de SAP AG. Les
informations contenues dans ce manuel peuvent tre modifies
ou compltes sans pravis.
Tous droits rservs.

SAP AG 1999

Marques dposes :

Microsoft , Windows , NT , PowerPoint , WinWord , Excel , Project , SQL-Server ,


Multimedia Viewer , Video for Windows , Internet Explorer , NetShow , et HTML Help
sont des marques dposes de Microsoft Corporation.

Lotus ScreenCam est une marque dpose de Lotus Development Corporation.

Vivo et VivoActive sont des marques dposes de RealNetworks, Inc.

ARIS Toolset est une marque dpose de IDS Prof. Scheer GmbH, Saarbruck

Adobe et Acrobat sont des marques dposes de Adobe Systems Inc.

TouchSend Index est une marque dpose de TouchSend Corporation.

Visio est une marque dpose de Visio Corporation.

IBM , OS/2 , DB2/6000 et AIX sont des marques dposes de IBM Corporation.

Indeo est une marque dpose de Intel Corporation.

Netscape Navigator , et Netscape Communicator sont des marques dposes de Netscape


Communications, Inc.

OSF/Motif est une marque dpose de Open Software Foundation.

ORACLE est une marque dpose de ORACLE Corporation, California, USA.

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.

ADABAS est une marque dpose de Software AG

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

Reporting dans ABAP


Workbench
BC410

5 jours

Programmation interactive
BC400

5 jours

Introduction
ABAP Workbench
MBC40

2 jours

Gestion des projets de


dveloppement ABAP

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

qui s'adresse ce cours ?

l Participants :
n

Membres du projet

l Dure : 5 jours

SAP AG 1999

Notes aux participants


n

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

Concept et outils de ABAP Workbench : contenu

l Objectif global du cours


l Dtail des objectifs
l Table des matires
l Synoptique
l Scnario de gestion
l Introduction au cours

SAP AG 1999

(C) SAP AG

BC400

1-1

Objectif du cours

la fin de ce cours, vous serez en mesure :


l de comprendre les diverses applications d'ABAP
Workbench, notamment
n

les diffrentes mthodes qui facilitent le dialogue


avec l'utilisateur et

les modalits de dialogue avec la base de donnes

SAP AG 1999

(C) SAP AG

BC400

1-2

Objectifs du cours

la fin de ce cours, vous serez en mesure :


l de crer un programme ABAP comprenant des
dialogues utilisateur et des dialogues base de
donnes
l de dcrire divers objets de dveloppement (objets
du Repository) et leur mode d'emploi
l de crer des exemples simples d'objets du
Repository introduits dans le cours l'aide des
outils adquats d'ABAP Workbench appropris
chaque cas

SAP AG 1999

(C) SAP AG

BC400

1-3

Table des matires

Chapitre 1

Introduction

Chapitre 2

Droulement du programme dans un programme ABAP

Chapitre 3

Introduction ABAP Workbench

Chapitre 4

Instructions et dclarations de donnes ABAP

Chapitre 5

Dialogues base de donnes I


(lecture partir de la base de donnes)

Chapitre 6

Modularisation interne du programme

Chapitre 7

Dialogues utilisateur : liste

Chapitre 8

Dialogues utilisateur : cran de slection

Chapitre 9

Dialogues utilisateur : cran

Chapitre 10 Interfaces

SAP AG 1999

(C) SAP AG

BC400

1-4

Table des matires

Chapitre 11

Rutiliser les composantes

Chapitre 12

Dialogues base de donnes II


(Modifier la base de donnes)

Chapitre 13

Logistique logicielle et comparaison logicielle

Exercices
Solutions
Annexes
SAP AG 1999

(C) SAP AG

BC400

1-5

Scnario de gestion

Aroport de dpart

Ce cours vous permettra de dvelopper


plusieurs programmes destins assister
des agences de voyage.
Certains de leurs besoins types ncessitent :

Destination

Ville de dpart

d'tablir des connexions de vol des dates prcises


de procder des rservations sur des vols
spcifiques
l de dterminer des informations complmentaires de
vol, comme
l le prix
Ville de destination
l la capacit.
l

SAP AG 1999

(C) SAP AG

BC400

1-6

Droulement du programme dans un programme ABAP

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

Architecture client / serveur

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.

Le troisime niveau est le niveau prsentation (SAPGUI). Ce niveau comprend l'interface


utilisateur par lequel un utilisateur final peut accder une application, entrer de nouvelles donnes
et recevoir les rsultats d'un processus de travail.

La rpartition technique du logiciel est indpendante de sa localisation physique dans le systme.


Dans le sens vertical, il est possible d'installer tous les niveaux les uns au-dessus des autres sur un
seul ordinateur ou sur des ordinateurs distincts. Dans le sens horizontal, les composantes des niveaux
fonctionnel et prsentation peuvent tre rparties sur un nombre x de stations. La distribution
horizontale des composantes des bases de donnes dpend toutefois du type de base install.

(C) SAP AG

BC400

2-3

Vue oriente utilisateur

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

Droulement du programme : que voit l'utilisateur

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

Interaction entre les niveaux du serveur

Lancement
du programme

Programme ABAP
Bloc de
traitement
ABAP

Table de
base de
donnes
Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

Dans cette partie du chapitre, l'utilisateur a choisi de lancer un programme l o un identificateur de


compagnie arienne peut tre introduit sur l'cran de slection initial. Le programme utilise par la
suite ces informations pour retrouver le "nom complet de la compagnie arienne" et la "devise locale
de la compagnie arienne" dans la base de donnes et les affiche sous forme de liste pour l'utilisateur.

(C) SAP AG

BC400

2-7

Programme type 1 : lancement du programme

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

Le systme charge le contexte du programme

Lancement
du programme

Programme ABAP

Repository

cran de slection
Objets de donnes

Table de
base de
donnes
Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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.

Le droulement ultrieur du programme est contrl par le runtime system ABAP.

(C) SAP AG

BC400

2-9

Le runtime system envoie l'cran de slection

Lancement
du programme

Programme ABAP

Objets de donnes

Table de
base de
donnes
Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

Saisies d'cran de slection insres dans des


objets de donnes

Lancement
du programme

Programme ABAP

Objets de donnes

Table de
base de
donnes
Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

Le programme demande un enregistrement de


donnes de la base de donnes

Lancement
du programme

Programme ABAP

Objets de donnes

Table de
base de
donnes
Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

La base de donnes renvoie un enregistrement de


donnes au programme

Lancement
du programme

Programme ABAP

Objets de donnes

Table de
base de
donnes
Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

Temps

La base de donnes renvoie au programme l'enregistrement de donnes demand et le runtime


system s'assure que ces donnes sont stockes dans les objets de donnes appropris. Normalement,
une structure est la zone cible pendant l'accs un enregistrement individuel. La structure contient
des variables pour toutes les zones requises par la base de donnes.

(C) SAP AG

BC400

2-13

Le runtime system envoie une liste

Lancement
du programme

Programme ABAP

Objets de donnes

Table de
base de
donnes
Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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 type 2 : lancement du programme

Programme ABAP
Objets de donnes

Lancement
du programme

Repository
Table de
base de
donnes

cran

Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

Le runtime system ABAP envoie un cran

Programme ABAP
Objets de donnes

Lancement
du programme

Table de
base de
donnes
cran

Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

L'utilisateur quitte l'cran de slection

Programme ABAP
Objets de donnes

Lancement
du programme

Table de
base de
donnes
cran

Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

Le programme demande un enregistrement de


donnes la base de donnes

Programme ABAP
Objets de donnes

Lancement
du programme

Table de
base de
donnes
cran

Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

La base de donnes renvoie l'enregistrement de donnes

Programme ABAP
Objets de donnes

Lancement
du programme

Table de
base de
donnes
cran

Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

Temps

La base de donnes renvoie au programme l'enregistrement de donnes demand et le runtime


system s'assure que ces donnes sont stockes dans les objets de donnes appropris. Normalement,
une structure est la zone cible pendant l'accs un enregistrement individuel. La structure contient
des variables pour toutes les zones requises par la base de donnes.

(C) SAP AG

BC400

2-20

Le programme appelle l'cran

Programme ABAP
Objets de donnes

Lancement
du programme

Table de
base de
donnes
cran

Bloc de
traitement
ABAP

Process
Before
Output

Runtime system ABAP


SAP AG 1999

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

Le runtime system ABAP envoie l'cran de slection

Programme ABAP
Objets de donnes

Lancement
du programme

Table de
base de
donnes
cran

Bloc de
traitement
ABAP

Process
Before
Output

Runtime system ABAP


SAP AG 1999

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

L'utilisateur excute une action utilisateur

Programme ABAP
Objets de donnes

Lancement
du programme

Table de
base de
donnes
cran

Bloc de
traitement
ABAP

Process
Before
Output
Process
After
Input

Runtime system ABAP


SAP AG 1999

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

Le traitement du bloc de traitement ABAP recommence

Programme ABAP
Objets de donnes

Lancement
du programme

Table de
base de
donnes
cran

Bloc de
traitement
ABAP

Process
Before
Output
Process
After
Input

Runtime system ABAP


SAP AG 1999

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

Table des matires

Chapitre 1

Introduction

Chapitre 2

Droulement du programme dans un programme ABAP

Chapitre 3

Introduction ABAP Workbench

Chapitre 4

Instructions et dclarations de donnes ABAP

Chapitre 5

Dialogues base de donnes I


(lecture partir de la base de donnes)

Chapitre 6

Modularisation interne du programme

Chapitre 7

Dialogues utilisateur : liste

Chapitre 8

Dialogues utilisateur : cran de slection

Chapitre 9

Dialogues utilisateur : cran

Chapitre 10 Interfaces

SAP AG 1999

(C) SAP AG

BC400

2-26

Table des matires

Chapitre 11

Rutiliser les composantes

Chapitre 12

Dialogues base de donnes II


(Modifier la base de donnes)

Chapitre 13

Logistique logicielle et comparaison logicielle

Exercices
Solutions
Annexes
SAP AG 1999

(C) SAP AG

BC400

2-27

Introduction ABAP Workbench

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

Introduction ABAP Workbench : objectifs

la fin de ce chapitre, vous serez en mesure :


l d'utiliser les diffrents types de navigation
disponibles d'ABAP Workbench pour analyser un
programme existant
l d'apporter de simples modifications aux
dialogues utilisateur d'un programme existant en
utilisant les outils diteur et Screen Painter ABAP

SAP AG 1999

(C) SAP AG

BC400

3-2

Synthse : Introduction ABAP Workbench

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

Hirarchie des applications SAP


SAP
+

+

+


+

+

+


Hirarchie des applications


CA
AC
FI

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

Systme d'information du Repository


Systme d'information du Repository
Business Engineering
Dictionnaire ABAP
Objets de base
Tables de base de donnes
Vues
lments de donnes
Structures
Types de table
...
Autres objets
Zones
Programmation
Gnrateur de modules de fonction
Bibliothque de programmes
Environnement de programme
Sous-objets du programme
Objets ABAP
Bibliothque de classes
Composantes de classes
Composantes d'interfaces
Envir.
SAP AG 1999

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.

Vous pouvez naviguer vers le systme d'information du Repository en utilisant


Le bouton de commande Systme d'information dans la hirarchie des applications
Le chemin de menus Outils -> ABAP Workbench -> Synthse-> Systme d'information
Transaction SE84 dans la zone de commande.

(C) SAP AG

BC400

3-7

Outils de ABAP Workbench

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 :

diteur ABAP pour l'criture et l'dition du code de programme

Dictionnaire ABAP pour le traitement des dfinitions de tables de base de donnes et la


rcupration de types globaux

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)

Screen Painter pour la conception d'crans (programmes dynamiques) de dialogues utilisateur

Gnrateur de modules de fonction pour l'affichage et le traitement de modules de fonction


(routines avec des interfaces dfinis qui sont disponibles dans tout le systme)

Gnrateur de classes pour l'affichage et le traitement des classes centrales

Il existe deux manires diffrentes d'utiliser ces outils :


Soit vous appelez chaque outil individuel et traitez les objets correspondants du Repository.
Vous devez ensuite appeler l'outil suivant pour la srie d'objets suivante...
Soit vous travaillez avec Object Navigator: Cette transaction vous fournit une synthse sous
forme d'arborescence de tous
les objets d'une classe de dveloppement ou d'un programme.

(C) SAP AG

BC400

3-8

Structure d'cran dans Object Navigator


Afficher liste d'objets

Fermer navigateur
Domaine pour l'affichage
d'une liste d'objets
sous la forme d'une
hirarchie

Clic du bouton
droit de la souris

Domaine pour l'affichage ou


le traitement d'un objet du Repository

Menu contextuel

Clic du bouton
droit de la souris

Menu contextuel

La taille du domaine d'affichage peut tre change

SAP AG 1999

L'cran d'Object Navigator est divis en deux domaines :


Un domaine pour l'affichage d'une liste d'objets comme une hirarchie
La fentre d'objets, dans laquelle les objets peuvent tre affichs et traits.

Vous pouvez masquer le domaine de hirarchie en utilisant le bouton de commande "Fermer


navigateur".

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

Fonctions de navigation du domaine de hirarchie

classe de dveloppement

BC400

Hirarchie des applications


Classe de dveloppement
Programme
Groupe de fonctions
Classe
Objets locaux

Liste d'objets prcdente


BC400
Types d'objets de programme
Objets du dictionnaire
Programmes
SAPBC400WBD_GETTING_STA
SAPBC400WBT_GETTING_STA
Groupes de fonctions
BC400
Classes
CL_BC400

Liste d'objets suivante


Liste d'objets suprieure
Favoris
Ajouter
Traiter
Programmes
Historique
Actualiser liste d'objets

SAP AG 1999

Les objets du Repository sont organiss dans la hirarchie.


n

Chaque composante applicative consiste en de multiples classes de dveloppement.

Chaque classe de dveloppement peut contenir plusieurs types diffrents d'objets du Repository
:
programmes, groupes de fonctions, objets du dictionnaire ABAP, ...

Chaque objet du Repository peut comporter diffrents types d'objets :


Les programmes peuvent contenir des donnes globales, des types, des zones, des vnements,
...
Les groupes de fonctions peuvent contenir des donnes globales, des modules de fonction, ...

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

Affichage des objets de programme dans la fentre d'objets


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

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

Analyse d'un programme existant

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

Dterminer le primtre fonctionnel : excuter un


programme
cran de slection

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

Il existe plusieurs manires de dmarrer un programme :


Vous pouvez dmarrer un programme partir de la liste d'objets de Object Navigator en utilisant
le menu contextuel ou en utilisant l'icne "Test".
Si le programme possde un code de transaction, vous pouvez galement l'ajouter au menu. Vous
cliquez alors sur l'option du menu avec la souris.
Vous pouvez ajouter des programmes la liste des favoris sur l'cran initial. Les programmes
peuvent galement devenir disponibles en utilisant les groupes d'activits de l'cran initial. Vous
slectionnez ensuite le programme dans la hirarchie de l'cran initial.

Vous pouvez dterminer le primtre fonctionnel en excutant le programme.

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

Vue statique des objets de programme : liste d'objets

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

Dterminer l'utilisation squentielle d'objets de


programme : mode dbogage
X

SAP

Dbogueur ABAP

chws

Point de surveillance
Zones
Programme principal

Pas
Code source
de

pas

ZJJ_KURS_000
ZJJ_FORMS

Point d'arithmtique fixe

15 -

30

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.
1 - 4 $
LH

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

Points d'arrt en mode dbogage


X

SAP

Dbogueur ABAP

chws

Point de surveillance
Zones
ZJJ_KURS_000

Programme principal

Point d'arithmtique fixe

Continuer
ZJJ_FORMS
Code source
de

15 -

30

"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.
STOP CALL SCREEN 100.
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
1 - 4 $
LH

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

Syntaxe gnrale ABAP


TABLES
DATA
PARAMETERS

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

wa_sbc400-carrid COLOR COL_KEY.


wa_sbc400-carrname.
wa_sbc400-currcode.

Options (dpendantes du mot-cl)

Point (termine toutes


les instructions ABAP)

SAP AG 1999

Les programmes ABAP sont composs d'instructions individuelles.

Chaque instruction se termine par un point.

Le premier terme de l'instruction est appel un mot-cl.

Les mots doivent toujours tre spars d'au moins un espace.

Vous pouvez indenter les instructions.

Les instructions peuvent occuper plus d'une ligne.

Vous pouvez avoir de multiples instructions sur une seule ligne.

(C) SAP AG

BC400

3-18

Commentaires et chane d'instructions

START-OF-SELECTION.
* Read data record from database table SCARR

Commentaire

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. " Process screen 100
Commentaire
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
WRITE:/
WRITE: / wa_sbc400-carrid COLOR COL_KEY,,
wa_sbc400-carrname,,
wa_sbc400-currcode..
ENDIF.

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.

Il existe deux manires d'insrer des commentaires dans un programme :


Un astrisque (*) dans la colonne 1 vous permet de dsigner toute la ligne comme commentaire.
Les guillemets (") placs au milieu d'une ligne dsignent le reste de la ligne comme commentaire.

(C) SAP AG

BC400

3-19

Navigation dans l'diteur


Dfinition de table de base de donnes
dans le dictionnaire ABAP

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)

WRITE: / wa_sbc400-carrid COLOR COL_KEY,


wa_sbc400-carrname,
wa_sbc400-currcode.

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

Code source de programme type


TABLES
DATA
PARAMETERS

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

Objets de donnes et crans de slection


TABLES
DATA
PARAMETERS

sbc400_carrier.
wa_sbc400 TYPE sbc400_carrier.
pa_car TYPE scarr-carrid.

Lorsque vous gnrez un programme en utilisant la fonction "Activer",


le systme gnre automatiquement un
cran de slection d'un type de zone de saisie pa_car.

Lorsque vous excutez un programme, toutes les variables ncessaires,


structures, et crans de slection sont crs.
Programme ABAP

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

Dialogues de base de donnes 1 :

Programme ABAP
Objets de donnes

Table de
base de
donnes
SCARR

pa_car
pa_car
wa_sbc400
wa_sbc400
Bloc de
traitement
ABAP

SELECT SINGLE * FROM scarr


Systme d'excution
INTO CORRESPONDING
FIELDS ABAP
OF wa_sbc400
CARRID = pa_car.
pa_car
WHERE carrid
IF sy-subrc = 0.
...

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

Dialogues de base de donnes 2 :

Programme ABAP
Objets de donnes

Table de
base de
donnes
SCARR

pa_car
pa_car
wa_sbc400
wa_sbc400
Bloc de
traitement
ABAP

SELECT SINGLE * FROM scarr


INTO CORRESPONDING FIELDS OF wa_sbc400
WHERE carrid = pa_car.
IF sy-subrc = 0.
...

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

Traitement des crans

Programme ABAP
Objets de donnes

sbc400_carrier
Bloc de traitement ABAP

CALL SCREEN 100.

Process
Before
Output

Process
After
Input

Runtime system ABAP


SAP AG 1999

Temps

L'instruction CALL SCREEN appelle un cran.

Un cran doit tre cr en utilisant l'outil Screen Painter.

Un cran est un objet du Repository indpendant, mais qui appartient au programme.

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.

L'dition de liste peut tre affiche en couleurs.

La liste complte apparat automatiquement la fin du bloc de traitement.

(C) SAP AG

BC400

3-27

Synthse : Introduction ABAP Workbench

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

Devise locale DEM

Copie adapte :
Compagnie arienne
Compagnie
arienne

LH

ID

LH

Nom

LUFTHANSA

LH Lufthansa DEM

Devise locale DEM


Utilisateur

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

Transporter des objets du Repository

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

Exemple de projet : cours BC400


Horaire :

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

Chaque projet requiert les informations suivantes :


Nom du chef de projet ?
Quel primtre fonctionnel doit tre couvert par l'objet ? Quels objets du Repository ont t
modifis ou crs ?
Quelle est la priode du projet ?
Noms des participants au projet ?

titre d'exemple, nous allons organiser le cours BC400 comme un projet.


Le professeur est le chef de projet.
Les programmes doivent tre dvelopps pour chaque sujet. (Il s'agit de programmes types du
professeur et d'exercices de groupes d'exercices)
Ce projet doit tre termin vendredi 15h.
Les noms d'utilisateur des participants (dans ce cas, des groupes d'exercices) sont BC400-XX.

(C) SAP AG

BC400

3-31

Reprsentation du projet dans Workbench Organizer

Chef de projet :
CARSON
quipe :
CARSON

Workbench Organizer : demandes


Ordres de modification de l'utilisateur BC400-00

Chef de projet

Modifiable
Transportable

BC400-00

Numro de la modification

BC400-01

Numro de membre d'quipe


(affect par le systme)
(Tche)

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.

Lors de la modification d'un objet du Repository, un dveloppeur l'affecte l'ordre de modification.


Contrairement aux divisions fonctionnelles logiques qui sparent les classes de dveloppement, les
ordres de modification sont lis au projet. Donc, bien qu'un programme appartienne toujours une
seule classe de dveloppement, il peut, diffrents moments, appartenir des ordres de modification
diffrents.

(C) SAP AG

BC400

3-32

Complter le processus de dveloppement


Horaire :

...

Chef de projet :
CARSON

Jeudi

Vendredi

L'ordre est libr

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

La tche est libre

Lorsque le dveloppement est termin, le dveloppeur effectue un dernier contrle de qualit et


libre la tche. Les objets et les blocages d'objets sont transfrs de la tche vers l'ordre de
modification. Cependant, tous les employs affects l'ordre de modification peuvent toujours
modifier l'objet car le Workbench Organizer crera automatiquement une nouvelle tche si cela
s'avre ncessaire.

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

Crer une entre du catalogue d'objets


Objet

R3TR PROG ZBC400_00_GETTING_STARTED

Attributs
Classe de dveloppement ZBC400_00
Personne responsable

BC400-00

Systme original

IT3

Langue originale

DE

Les nouveaux programmes


doivent tre affects
une classe de dveloppement

Objet local

SAP AG 1999

Affectez le programme une classe de dveloppement, afin d'tre en mesure de le sauvegarder.


Votre nom est automatiquement entr dans le systme comme personne responsable de la nouvelle
copie du programme. Vrifiez si toutes les entres sont correctes et ensuite choisissez Sauvegarder.

(C) SAP AG

BC400

3-35

Affectation d'un ordre de modification


Workbench Organizer : ordres transportables
Source de rapport
ZBC400_00_GETTING_STARTED
Ordre
IT3K900051

Ordre de modification transportable

Exercices pour les participants du cours BC400 en date


du 8 mai 2000
Mes ordres

Workbench Organizer : ordres transportables


Modifier des ordres impliquant l'utilisateur BC400-0
Modifiable

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

Adaptatation des dsignations


Types d'objets du programme
Double-clic
Slection d'objets
Nom du programme ZBC400_00_GETTING_STARTED

Programme
...
Attributs

ABAP : attributs de programme ...


Titres
Adapter titre
Attributs

Modifier la langue
originale
en langue de travail

SAP AG 1999

Vous pouvez adapter les dsignations (= titre) comme suit :


Double-cliquez sur les types d'objets de programme dans la liste d'objets d'Object Navigator.
Choisissez les attributs.
Cliquez sur l'icne "Modifier".
Si la langue originale du programme source n'est pas identique la langue de travail, une bote de
dialogue apparat pour vous demander si vous dsirez modifier le titre dans la langue originale ou
si vous dsirez modifier la langue originale.
Vous pouvez dsormais adapter le titre.

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

Adaptation du code source

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 le code source, naviguez dans l'diteur (menu contextuel).

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

Modification des crans


ZBC400_00_GETTING_STARTED
Types d'objets de programme
Structures du dictionnaire
Zones
vnements
crans
0100 Clic sur le bouton droit
1000

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

Un contrle de syntaxe lanc partir de l'diteur se rattache au contenu actuel de l'diteur.

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

Introduction ABAP Workbench : rsum du chapitre

Vous tes maintenant capable :


l d'utiliser les diffrents types de navigation
disponibles de ABAP Workbench pour analyser
un programme existant
l d'apporter de simples modifications aux dialogues
utilisateur d'un programme existant en utilisant
les outils diteur et Screen Painter ABAP

SAP AG 1999

(C) SAP AG

BC400

3-41

Exercices

(C) SAP AG

BC400

3-42

(C) SAP AG

BC400

3-43

Chapitre : ABAP Workbench


Sujet : Analyser un programme

la fin de ces exercices, vous serez en mesure :


dutiliser les fonctions de navigation pour examiner la structure dun
programme

Le programme SAPBC400WBT_GETTING_STARTED contient un


cran de slection qui permet lutilisateur dintroduire le code dune
compagnie arienne. Les coordonnes de la compagnie arienne
apparaissent ainsi lcran. Lorsque lutilisateur appuie sur Enter, les
donnes saffichent sous forme de liste.
Naviguez travers le code du programme et les autres composantes afin
de comprendre la structure et le droulement du programme.
Programme :

SAPBC400WBT_GETTING_STARTED

1-1

Ouvrez une liste dobjets pour la classe de dveloppement BC400. Trouvez le


programme SAPBC400WBT_GETTING_STARTED, et ouvrez sa liste dobjets.
Tout au long de lexercice, assurez-vous que vous restez en mode affichage.

1-2

Excutez le programme pour comprendre comment il fonctionne. Une zone de


saisie apparat sur lcran de slection.
1-2-1 Quelles informations devez-vous fournir au programme ? (Utilisez le bouton
aide F1 pour la zone de saisie)
1-2-2 Quelles valeurs pouvez-vous introduire ? (Utilisez laide la saisie F4)
1-2-3 Quelles informations le programme fournit-il ?
1-2-4 Quels types de dialogues utilisateur le programme contient-il ? Trouvez le
numro de lcran de slection et lcran dynpro en slectionnant Systme
Statut.

(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

Utilisez la liste dobjets dans Object Navigator pour examiner le programme.


1-3-1 Quels objets de donnes trouvez-vous ? (Utilisez la liste dobjets du
programme) O sont-ils dfinis ? (Utilisez la navigation) O sont-ils
utiliss ? (Utilisez les cas demploi).
1-3-2 Quels objets de donnes du programme ABAP correspondent la zone de
saisie de lcran de slection ? (Cherchez dans la liste dobjets un objet de
donnes comportant le mme nom que la zone que vous avez dcouverte
ltape 1-2-5.)
1-3-3 Quelles instructions traite lcran ? (Regardez dans le code source ou
utilisez un cas demploi pour le numro dcran.)
1-3-4 Naviguez jusqu lcran, et ensuite jusqu la structure graphique. Cliquez
sur une zone de sortie. Dans lditeur dagencement graphique, o apparat
le nom de zone que vous avez dcouvert ltape 1-2-5 ?

1-4

Naviguez jusquau code source du programme.


1-4-1 Quelle instruction forme la liste ? Ouvrez la documentation mots-cls pour
cette instruction. Comment crez-vous un renvoi la ligne automatique ?
1-4-2 Quelle instruction est responsable du dialogue base de donnes ? partir de
quelle table de la base de donnes se lisent les donnes ? Naviguez jusqu
la dfinition de la table de base de donnes. Quels types de colonnes se
trouvent dans la table ?
1-4-3 Une seule ligne est lue partir de la table de base de donnes. Dans quel
objet de donnes se trouve linformation indiquant quelle ligne doit tre
lue ? Quand se complte la variable comportant les informations sur la ligne
lire de la base de donnes ?

(C) SAP AG

BC400

3-45

Chapitre : ABAP Workbench


Sujet : Adapter un programme des besoins spcifiques

la fin de ces exercices, vous serez en mesure :


de copier des programmes et les modifier en utilisant lditeur et
Screen Painter ABAP ;
dutiliser le contrle de syntaxe pour identifier de simples erreurs.

Programme :
Modle :

ZBC400_##_GETTING_STARTED
SAPBC400WBT_GETTING_STARTED

Solution modle :

SAPBC400WBS_GETTING_STARTED

2-1

Copiez le programme SAPBC400WBT_GETTING_STARTED avec toutes ses


composantes vers ZBC400_##_GETTING STARTED et affectez-le votre classe
de dveloppement ZBC400_## et l'ordre de modification de votre projet,
"BC400". (## est votre numro de groupe.)

2-2

Compltez le programme comme suit :


2-2-1 Ajoutez linstruction 'ULINE.' au programme et effectuez un contrle de
syntaxe. Faites dlibrment une erreur de syntaxe et utilisez le contrle de
syntaxe pour la retrouver. Activez le programme et redmarrez-le. Quelles
sont les modifications ? Lancez le contrle tendu du programme.
2-2-2 Modifiez le programme de sorte que des zones de saisie apparaissent
lcran pour le nom dutilisateur, lheure et la date. Naviguez jusquau
Screen Painter en double-cliquant sur le numro dcran. Ceci vous amne
la logique dexcution de lcran. Vrifiez que lditeur graphique est activ
(Utilitaires Options). Lancez lditeur graphique en slectionnant le
bouton de commande adquat de la barre doutils dapplication. Vrifiez
que vous tes en mode modification. Dfinissez les zones supplmentaires
conformment au dictionnaire ABAP. Comme structure de rfrence,
utilisez SBC400_CARRIER et slectionnez les zones UNAME, UZEIT et
DATUM. Activez lcran.

(C) SAP AG

BC400

3-46

2-3

(C) SAP AG

Affichez les zones supplmentaires dans la liste. Utilisez linstruction


WRITE. Affichez les donnes sur une nouvelle ligne, spare des autres
zones par une ligne horizontale. cet effet, utilisez les mots-cls ABAP
SKIP et ULINE. Vrifiez les erreurs de syntaxe de votre programme,
ensuite activez-le, et dmarrez-le.

BC400

3-47

Solutions
Chapitre : ABAP Workbench
Sujet : Analyser un programme

1-2

Analyse par lexcution dun programme :


1-2-1 Vous devez ajouter le code dune compagnie arienne au programme. Ces
informations peuvent tre affiches partir de la zone de saisie en utilisant
F1.
1-2-2 Les valeurs autorises ici dpendent du contenu de la table de base de
donnes SCARR. Vous pouvez afficher laide la saisie depuis la zone de
saisie en utilisant F4.
1-2-3 Le programme affiche des informations dtailles sur la compagnie arienne
slectionne. Ces informations saffichent dabord lcran et ensuite sous
forme de liste.
1-2-4 Le programme contient un cran de slection comportant le numro de
dynpro 1000, un cran numro 100 et une liste.
1-2-5 Le nom de zone de la zone de saisie sur lcran de slection est pa_car et
les noms des zones de sortie sur lcran sont sbc400_carriercarrid, sbc400_carrier-carrname et sbc400_carriercurrcode. Vous pouvez afficher les noms de zone en utilisant F1
Infos techniques, ensuite regardez la bote portant lintitul Description de
zone pour batch input.

1-3

Analyse avec la liste dobjets du programme.


1-3-1 Le programme a les structures sbc400_carrier et wa_sbc400, et
lobjet de donnes lmentaire pa_car.
1-3-2 La variable pa_car appartient la zone de saisie du mme nom.
1-3-3 Linstruction CALL SCREEN 100 lance Dynpro 100.
1-3-4 Le nom de zone apparat dans une zone de saisie au-dessus du domaine
rserv la structure dcran.

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

valeur de saisie de lcran de slection remplit automatiquement lobjet de


donnes pa_car ds que lutilisateur slectionne la fonction Excuter sur
lcran de slection.

(C) SAP AG

BC400

3-49

Chapitre : ABAP Workbench


Sujet : Adapter un programme des conditions
exceptionnelles

Solution modle SAPBC400WBS_GETTING_STARTED

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

* diter les donnes dans la liste.


WRITE: / wa_sbc400-carrid COLOR COL_KEY,
wa_sbc400-carrname,
wa_sbc400-currcode.
* Ajouter une ligne vide.
(C) SAP AG

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

Instructions ABAP et dclarations de donnes

Contenu :
l Types
l Objets de donnes
n

Objets de donnes lmentaires

Structures

Tables internes

l Attributs des instructions ABAP

SAP AG 1999

(C) SAP AG

BC400

4-1

Instructions ABAP et dclarations de donnes :


objectifs du chapitre

la fin de ce chapitre, vous serez en mesure :


l de dcrire les diffrents types de donnes
diffrents et leur utilisation
l de dfinir des objets de donnes lmentaires,
des structures et des tables internes
l d'utiliser le mode dbogage pour observer
comment les valeurs des objets de donnes
individuels changent lors du traitement
l de programmer plusieurs oprations importantes
impliquant des objets de donnes, et
l de trouver des informations sur les nombreux
codes retour utiliss par les instructions ABAP et
de les valuer dans des programmes.
SAP AG 1999

(C) SAP AG

BC400

4-2

L'architecture client/serveur R/3

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

Utiliser les types


Les types dcrivent les attributs de :
Zones d'entre/sortie
Paramtres d'interface
pour des sous-programmes

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

Les types dcrivent les attributs


des zones de saisie et de sortie sur les crans,
des objets de donnes
des paramtres d'interface : les contrles de types sont excuts chaque fois qu'une fonction ou
qu'un sous-programme est appel, en accord avec le type du paramtre d'interface. Des conflits de
type sont dj identifis pendant le processus d'dition et les erreurs de syntaxe appropries
affiches.

(C) SAP AG

BC400

4-5

Types de donnes locaux et gnraux


Les types peuvent tre dfinis de manire locale dans un programme
ou de manire centrale dans le dictionnaire

Types locaux :
Attributs techniques uniquement
Programme
ABAP
Code
Source
ABAP

Interface
Sousprogramme

Types globaux dans


le dictionnaire ABAP
Attributs techniques
et smantiques
ce
rfa de
e
t
In ules on
i
od ct
M f on
Groupe de
fonctions

SAP AG 1999

Les types locaux sont utiliss dans des programmes


si seuls des attributs techniques sont ncessaires et qu'aucun attribut smantique n'est requis et
si les types sont uniquement utiliss localement dans un programme.

Types globaux ( = types du dictionnaire ABAP) sont utiliss


si vous souhaitez utiliser les types de manire externe
(par exemple, pour dfinir les paramtres d'interface des fonctions gnrales ou les objets de
donnes du programme qui servent d'interface la base de donnes ou au serveur de prsentation),
si vous souhaitez galement des informations smantiques (par exemple, sur les crans avec des
zones de saisie et de sortie).

Vous trouverez des informations complmentaires sur le stockage central des informations
smantiques dans ce chapitre.

(C) SAP AG

BC400

4-6

Utilisation des types lmentaires du dictionnaire


Descripteur de zone
Zone de saisie

lment de donnes : type technique


Descripteur de zone
Documentation de
zones
(Aide F1)
Aide la recherche
(Aide F4)

Compagnie
arienne

F1
Aide
Identificateur de la compagnie arienne

Nom abrg

Cette zone contient l'identificateur de la compagnie arienne

Aide d'applications

Info techniques

Variable de zone de saisie

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

Un lment de donnes peut contenir les informations smantiques suivantes :


Descripteur de zone : ce texte apparat sur les crans et les crans de slection gauche, juste
ct des zones de saisie et de sortie. Un descripteur de zone peut avoir l'une des trois longueurs
possibles. Vous devez slectionner l'un des diffrents descripteurs de zone lorsque vous crez un
cran.
Documentation de zone : la documentation de zone fournit l'utilisateur toutes les informations
introduire dans la zone. L'utilisateur obtient la documentation de zone pour une zone de saisie ou
de sortie lorsque le curseur y est positionn en appuyant sur la touche de fonction F1.
Aide la recherche : un lment de donnes peut tre li une aide la recherche. Cette aide la
recherche dfinit l'aide aux valeurs fournie par la touche de fonction F4 ou l'icne correspondante.

(C) SAP AG

BC400

4-7

Recherche des types du dictionnaire ABAP 1

Do
ub
le -

Cl
ic

DATA wa_flight_occ TYPE sbc400focc

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

Recherche des types du dictionnaire ABAP 2


Hirarchie des applications
Slectionner sous-arbre
Systme d'information
Systme d'information du Repository
Business Engineering
Dictionnaire ABAP
Systme d'information du Repository : lments de donnes
Objets de base
Tables de base de donnes
Vues
lments de donnes
Slections standard
Structures
lment de donnes
Types de table
Domaines
Courte description

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

Types de donnes locaux dans les programmes


Aide la dclaration
de types de donnes locaux

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

STRING Chane de caractres


XSTRING Chane d'octets (X String)

(C) SAP AG

BC400

4-10

Synthse : Objets de donnes

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

Dfinition d'objets de donnes

<user-defined-type>.
DATA: <varname> TYPE
<ABAP-dictionary-type>.

DATA: <varname> LIKE <data-object>.

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

Synthse : Objets de donnes lmentaires

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

Objets de donnes dans une liste d'objets d'un programme


SAPBC400WBT_GETTING_STARTED
Types d'objets de programme
Structures du dictionnaire
Clic sur le bouton droit
Zones
PA_CAR
WA_BC400
Clic sur le bouton droit
vnements
START-OF-SELECTION
crans
0100
1000

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

Dfinition d'objets de donnes lmentaires

Programme
ABAP

carrid
counter

s_carr_id

DATA: carrid
counter

TYPE s_carr_id,
TYPE I.

SAP AG 1999

Rgles d'appelation des objets de donnes :


- un nom peut comporter 30 caractres maximum (lettres, nombres, ou symboles).
- les symboles suivants NE SONT PAS autoriss : ( ) +. , :
- SPACE est une zone prdfinie.

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 <constants> TYPE <type> VALUE <literal>.

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.

ABAP reconnat deux types de littraux : littraux numriques et littraux alphanumriques. Ce


dernier se trouve toujours entre des guillemets ( " ).

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

Modification des variables : copie et initialisation


Dclarations de donnes :
CONSTANTS c_qf TYPE s_carr_id VALUE 'QF'.
DATA: gd_carrid1 TYPE s_carr_id,
gd_carrid2 TYPE s_carr_id VALUE 'LH',
counter type I.
gd_carrid1 gd_carrid2 counter
LH
0000

Lancement du programme c_qf QF

MOVE c_gf TO gd_carrid1.

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

Runtime system ABAP


Temps
SAP AG 1999

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

Excution des calculs


COMPUTE

excute des calculs (le mot-cl est facultatif)

Dclarations de donnes :
DATA: gd_max TYPE sbc400focc-seatsocc,
gd_occ TYPE sbc400focc-seatsmax,
gd_percentage TYPE sbc400focc-percentage.

COMPUTE

gd_percentage = gd_occ * 100 / gd_max.

* Seconde possibilit du mme calcul

gd_percentage = gd_occ * 100 / gd_max.

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

valuation du contenu d'une zone

CASE <data object1>.


WHEN <data object2>.
Instructions

WHEN <data object4> OR <data object5>.


Instructions

WHEN OTHERS.
Instructions

IF <logical expression>.

ENDCASE.

Instructions

ELSEIF <logical expression>.


Instructions

ELSEIF <logical expression>.


Instructions

ELSE.
Instructions

ENDIF.
SAP AG 1999

Les instructions IF et CASE vous permettent d'effectuer des distinctions de cas :

CASE ... ENDCASE:


seule une des squences des instructions s'excute
l'instruction WHEN OTHERS est facultative

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

Observation du flux de donnes dans le


dbogueur : zone
X

SAP

Dbogueur ABAP

chws

Point de surveillance
Zones
ZJJ_KURS_000
Programme principal
Pas
pas
Code source
de ZJJ_FORMS

Point d'arithmtique fixe

15 -

30

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.
Noms de zones

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

Observation du flux de donnes dans le dbogueur :


point de surveillance
Point de surveillance
Crer/modifier un point de surveillance
Point de surveillance locale (uniquement dans un programme dtermin)
Programme
Nom de zone
Oprateur relationnel
Zone de comparaison (valeur de comparaison si aucune slection)
Comp. zone/valeur

No. Local Programme


1
2
3
...
10

Nom de zone

Oprateur

Oprateur logique entre des points de surveillance

Zone Comp. zone/valeur

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

Vue gnrale : structures

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

Dfinition des structures avec une rfrence de type du


dictionnaire
Dictionnaire ABAP : Structure sdyn_conn
Nom de zone :
Type de zone :
mandt
s_mandt
carrid
s_carr_id
connid
s_conn_id
fldate
s_date
...
...
Dfinition de structure
wa_spfli
sdyn_conn

Programme
ABAP

Code source ABAP


DATA: wa_spfli TYPE spfli.
TABLES sdyn_conn.

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.

Deux diffrents types de structure existent dans les programmes ABAP :


des structures dfinies par
DATA <name> TYPE <structure_type>.
Ces types de structure servent de zones cibles pour les accs la base de donnes ou pour les
calculs excuts localement dans le programme. Vous pouvez dclarer ces types de structure soit
dans le dictionnaire ABAP soit localement dans le programme. Pour des informations
complmentaires sur la manire de dclarer des structures locales, rfrez-vous la documentation
mots-cls sous TYPES.
des structures dfinies par
TABLES <ABAP-Dictionary-Structure>.
Ces types de structure sont techniquement grs dans leur propre domaine. Pour la version 4.0, les
structures TABLES doivent tre utilises uniquement comme des structures d'interface pour des
crans.

(C) SAP AG

BC400

4-23

Adressage des zones d'une structure

wa_scarr
mandt carrid carrname

currcode

Programme
ABAP

Des zones de structure sont


toujours adresses selon
<structure>-<nom_de_zone>

Code source ABAP


DATA: wa_scarr TYPE scarr.
wa_scarr-carrid
wa_scarr-carrid = 'LH'.

SELECT SINGLE * FROM scarr


INTO wa_scarr
WHERE carrid = wa_scarr-carrid.
WRITE: /wa_scarr-carrid
wa_spfli-carrid,
wa_spfli-carrname.
wa_scarr-carrname.

SAP AG 1999

Les zones d'une structure sont toujours adresses selon <Structure>-<Field_name>.

(C) SAP AG

BC400

4-24

Affectation de valeurs zone zone


MOVE-CORRESPONDING <rec1> TO <rec2>.

DATA: wa_sflight TYPE sflight,


wa_sbc400focc TYPE sbc400focc.
...
MOVE-CORRESPONDING
MOVE-CORRESPONDING wa_sflight
wa_sflight TO
TO wa_sbc400focc.
wa_sbc400focc.

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

Les instructions MOVE-CORRESPONDING <rec1> TO <rec2> transportent des valeurs zone


par zone entre les structures <rec1> et <rec2>. Ceci fonctionne uniquement si les composantes
portent des noms identiques.

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

Structures dans le dbogueur

Dbogueur ABAP

chws

Watchpoint
Zones
Programme principal ZJJ_KURS_000
ZJJ_FORMS
Code source de

Point d'arithmtique fixe

15 -

30

SELECT SINGLE * FROM


wa_sbc400
Zonescarr
structure
INTO CORRESPONDING FIELDS OF wa_sbc400
Longueur
(en octets)
58
WHERE carrid
= pa_car.
IF
sy-subrc
=
0.
"
No. Nom de
la composante
Longueur Contenu
MOVE-CORRESPONDING
wa_sbc400
TO Type
sbc400_carrier.
CALL SCREEN 100.
1 MANDT
100
C
3
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
2 CARRID
AA
C
3
1 - 4 $
Variante
Variante
3 CARRNAME
American
Airlines
C
20
wa_sbc400
4 CURRCODE
USD
C
5
5 MARK
C
1
Double-Clic
6 UNAME
C
12
7 UTIME
000000
T
6
8 DATE
00000000
D
8

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

Vue gnrale : Tables internes

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

CARRID CONNID DISTANCE

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

Vous ne devez pas dterminer le nombre de lignes de votre table ;


le runtime system ABAP le dtermine au moment de l'excution
(extension de table dynamique).

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

Uniquement des cls

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.

Dans ce cours, nous discuterons uniquement de la syntaxe des tables standard.

(C) SAP AG

BC400

4-29

Dclaration de tables internes en rfrence au Dictionnaire

sbc400_t_sbc400focc

Dictionnaire ABAP : type de table


Type de ligne et accs Type de ligne
Type d'accs
Cl

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

Traitement des enregistrements individuels


Ajouter

APPEND
APPEND wa_itab to itab.

Insrer

INSERT wa_itab INTO itab <condition>.

Lire

READ TABLE itab INTO wa_itab <condition>.

Modifier

MODIFY TABLE itab <condition>.

Supprimer

DELETE itab <condition>.


DELETE

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

Traitement d'enregistrements par groupes


Loop:
Pour toutes les
oprations

LOOP AT itab INTO wa_itab.

ENDLOOP.

Supprimer

DELETE itab <condition>.

Insrer
lignes multiples
partir d'une
table interne

INSERT itab2 <condition2>


FROM itab1 <condition1>.

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

Autres options de traitement

Trier

SORT
SORT

itab <conditions>

Remise la valeur initiale


du contenu
d'une table interne

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

met le contenu de la table interne la valeur initiale conforme au type de colonne.

REFRESH fonctionne comme CLEAR.


FREE

(C) SAP AG

supprime la table interne et libre la mmoire alloue la table.

BC400

4-33

Exemple : remplir une table interne ligne par ligne

* Dclaration de table interne et d'espace de travail


DATA: it_flightinfo TYPE sbc400_t_sbc400focc.
DATA: wa_flightinfo TYPE sbc400focc.

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.

INSERT fonctionne comme APPEND dans des tables standard.

(C) SAP AG

BC400

4-34

Exemple : lecture du contenu de table interne


l'aide d'une boucle
* Dclaration de table interne et d'espace de
travail
DATA: it_flightinfo TYPE sbc400_t_sbc400focc.
DATA: wa_flightinfo TYPE sbc400focc.
it_flightinfo

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

Exemple : lecture de tables internes l'aide l'index


LOOP AT it_flightinfo INTO wa_flightinfo
FROM 11 TO
TO 5.
5.
FROM
WRITE: / wa_flightinfo-carrid,
wa_flightinfo-connid,
wa_flightinfo-fldate,
wa_flightinfo-seatsmax,
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.
ENDLOOP.

READ TABLE it_flightinfo INTO wa_flightinfo


INDEX 3.
WRITE: / wa_flightinfo-carrid,
wa_flightinfo-connid,
wa_flightinfo-fldate,
wa_flightinfo-seatsmax,
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.
SAP AG 1999

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

Exemple : lecture des tables internes l'aide de cls


LOOP AT it_flightinfo INTO wa_flightinfo
WHERE carrid
carrid == 'LH'
'LH'.
WHERE
WRITE: / wa_flightinfo-carrid,
wa_flightinfo-connid,
wa_flightinfo-fldate,
wa_flightinfo-seatsmax,
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.
ENDLOOP.
READ TABLE it_flightinfo INTO wa_flightinfo
WITH TABLE KEY carrid = 'LH'
'LH'.
connid
connid == '0400'
'0400'
fldate == sy-datum.
sy-datum.
fldate
IF sy-subrc = 0.
WRITE: / wa_flightinfo-seatsmax,
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.
ENDIF.
SAP AG 1999

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

Tables internes en mode dbogage


Dbogueur ABAP

chws

Point de surveillance

Tableau
Programme principal ZJJ_KURS_000
ZJJ_FORMS
Code source de

Point d'arithmtique fixe

15 -

30

LOOP AT it_flightinfo INTO wa_flightinfo.


WRITE: / wa_flightinfo-carrid,
"
wa_flightinfo-connid,
Table interne

it_flightinfo

Type Standard

Carrid Connid Fldate

Seatsmax Seatsocc Pourcentage

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

Tables internes avec lignes d'en-tte


DATA

<itab> TYPE <itabtype> [WITH


[WITH HEADER
HEADER LINE]
LINE].

Espace de travail <wa>

Ligne d'en-tte <itab>

Table interne <itab>

Table interne <itab>

CARRID
AA
LH

CARRID

CONNID

CONNID

0017

AA

0017

0400

LH

0400

APPEND <wa> TO <itab>.


MODIFY <itab> INDEX <n> FROM <wa>.

APPEND <itab>.
MODIFY <itab> INDEX <n>.

LOOP AT <itab> INTO <wa>.


WRITE <wa>-<field>.
ENDLOOP.

LOOP AT <itab>.
WRITE <itab>-<field>.
ENDLOOP.

READ TABLE <itab> INDEX <n> INTO <wa>.


WRITE <wa>-<field>.

READ TABLE <itab> INDEX <n>.


WRITE <itab>-<field>.

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

Synthse : Attributs des instructions ABAP

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

Codes retour d'instruction ABAP


CONSTANTS c_ua
TYPE s_carr_id
VALUE 'UA'.

Programme ABAP

sy-subrc
0
Function de
base en
LECTURE

READ TABLE itab


INTO wa_itab
WITH TABLE KEY
carrid = c_ua.
carrid ...
AA
AL
LH
QF

Non disponible

itab
IF sy-subrc ne 0.
* Message
...
ENDIF.

Code retour 4

Runtime system ABAP


Temps
SAP AG 1999

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

Messages utilisateur : synthse

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

Syntaxe : instructions MESSAGE

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

Comportement des messages au moment de l'excution


Aide

Aide l'diteur
Synthse ABAP
Mot-cl ABAP
Nouvelles caractristiques de ABAP
Documentation ABAP et exemples

Documentation ABAP et exemples


? Programmation ABAP - BC
? Introduction ABAP
? Langage de programmation ABAP
? Dialogues utilisteur ABAP
Exemple de message simple
Dmonstration de tous les types de messages
? ...
SAP AG 1999

Il existe six diffrents types de messages : A, X, E, I, S ou W. Le comportement des messages au


moment de l'excution dpend du contexte. Ces lettres ont la signification suivante :
A Abend

Une fois le traitement termin, l'utilisateur doit relancer la transaction

X Abend et
Identique au message de fin, mais avec vidage d'une partie de la mmoire
short dump MESSAGE_TYPE_X
E Erreur

Le comportement au moment de l'excution dpend du contexte

W Warning

Le comportement au moment de l'excution dpend du contexte

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

Instructions ABAP et dclarations de donnes :


rsum du chapitre

Vous tes maintenant capable :


l de dcrire les diffrents types de donnes
diffrents et leur utilisation
l de dfinir des objets de donnes lmentaires,
des structures et des tables internes
l d'utiliser le mode dbogage pour observer
comment les valeurs des objets de donnes
individuels changent lors du traitement
l de programmer plusieurs oprations importantes
impliquant des objets de donnes, et
l de trouver des informations sur les diffrents
codes retour utiliss par les instructions ABAP et
de les valuer dans des programmes.
SAP AG 1999

(C) SAP AG

BC400

4-45

Exercices
Chapitre : Objets de donnes et instructions
Sujet : Structures et affectations de valeurs

la fin de ces exercices, vous serez en mesure :


dutiliser le dbogueur pour comprendre comment un programme
fonctionne et comment les donnes sont transfres entre les objets du
programme ;
dutiliser linstruction MOVE-CORRESPONDING pour affecter des
valeurs entre les structures.
Dboguez le programme que vous avez crit pendant les exercices
jusquau dernier chapitre (ou la solution modle correspondante).

Programme :

ZBC400_##_GETTING_STARTED

Solution modle :

SAPBC400WBS_GETTING_STARTED

1-1

Dmarrez le programme ZBC400_##_GETTING_STARTED. Sur lcran de


slection, saisissez le code de la compagnie arienne 'LH'. Dans la zone de
commande, saisissez '/h', ensuite slectionnez Excuter. Vous tes maintenant en
mode dbogage.

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

Droulez le programme en utilisant la fonction Pas pas (F5). Quelles


composantes de la structure WA_SBC400 sont remplies par linstruction
SELECT ? Quelle est la valeur de la zone systme SY-SUBRC aprs linstruction ?

1-4

Observez maintenant comment les zones sont copies de WA_SBC400 vers


SBC400_CARRIER. Quelles valeurs de zone sont copies ?

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

Pour terminer, observez comment linstruction WRITE construit la liste. Noubliez


pas quun bouton supplmentaire apparat dans la barre doutils dapplication aprs
la premire instruction WRITE, qui vous permet dafficher tout moment le
contenu actuel du buffer de liste.

1-7

Redmarrez le programme en mode dbogage. Ajoutez un point darrt


linstruction MOVE-CORRESPONDING.

1-8

Rptez ltape 1-1. Dfinissez un point d'arrt l'instruction CALL SCREEN, et


un point de surveillance pour la zone SBC400_CARRIER-UNAME et testez-le.
Chaque fois que le programme sarrte, utilisez la fonction "Continuer" (F8) du
dbogueur pour poursuivre le traitement.

(C) SAP AG

BC400

4-47

Chapitre : Objets de donnes et instructions


Sujet : Tables internes

la fin de ces exercices, vous serez en mesure :


de dclarer des tables internes avec rfrence un type de table dfini
dans le dictionnaire ABAP ;
dutiliser les instructions LOOPENDLOOP pour traiter des donnes
mises dans le buffer de la table interne.
Crez un programme pour afficher tous les vols sur une liste.
Pour ce faire, lisez le contenu de la table de base de donnes SPFLI dans
une table interne. Utilisez ensuite une structure LOOP ENDLOOP
pour afficher les lignes de la table interne dans une liste.

Programme :

ZBC400_##_ITAB_LOOP

Solution modle :

SAPBC400TSS_ITAB_LOOP

2-1

Crez un programme nomm ZBC400_##_ITAB_LOOP et sans TOP include.


Affectez votre programme la classe de dveloppement ZBC400_## et l'ordre de
modification pour votre projet BC400 (## est votre numro de groupe).

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

Quelles composantes de la structure SBC400_CARRID sont remplies par linstruction


SELECT ?
MANDT, CARRID, CARRNAME, CURRCODE
Quelle valeur a SY-SUBRC aprs linstruction SELECT ?
SY-SUBRC a la valeur 0, car la compagnie arienne LH (Lufthansa) est gre dans la
table SCARR.

1-4

Quelles valeurs de zone sont copies ?


MANDT, CARRID, CARRNAME, CURRCODE

(C) SAP AG

BC400

4-49

Chapitre : Objets de donnes et instructions


Sujet : Tables internes

Solution modle SAPBC400TSS_ITAB_LOOP

*&-----------------------------------------------------------------*
*& Report

SAPBC400TSS_ITAB_LOOP

*&

*
*

*&-----------------------------------------------------------------*

REPORT

sapbc400tss_itab_loop

DATA: it_spfli TYPE sbc400_t_spfli.


DATA: wa_spfli TYPE spfli.

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

Dialogues base de donnes I

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

Dialogues base de donnes 1 : objectifs du chapitre

la fin de ce chapitre, vous serez en mesure :


l d'obtenir des informations sur les tables de base
de donnes partir du Dictionnaire ABAP
l de rpertorier plusieurs moyens de trouver des
tables de base de donnes
l de programmer un accs en mode lecture des
lignes et colonnes spcifiques d'une table de
base de donnes particulire
l d'appliquer des contrles d'autorisation
l de rpertorier les diffrents types de possibilits
d'accs en mode lecture pour des table de base
de donnes
SAP AG 1999

(C) SAP AG

BC400

5-2

Informations sur les tables de base de donnes

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

Informations dans le Dictionnaire ABAP

Dictionnaire ABAP
Table transparente SPFLI :
Description des attributs de la
table de base de donnes SPFLI

ou
b
D

Bloc de traitement ABAP

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

Recherche sur des tables de base de donnes

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

Vous fournit une structure


connue dans le dictionnaire

Pour rechercher des tables de bases de donnes :


Hirarchie des applications et Systme d'information du Repository : vous pouvez choisir des
composantes applicatives dans la Hirarchie des applications et passer directement dans le
Systme d'information du Repository. Vous pouvez galement rechercher des tables selon leurs
courtes descriptions (parmi d'autres critres).

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.

Si vous connaissez une zone de structure du Dictionnaire ABAP :


double-cliquez sur l'lment de donnes et utilisez la fonction Cas d'emploi pour rechercher des
tables transparentes selon le type de zone.

(C) SAP AG

BC400

5-5

Modle de systme de rservation arienne des cours ABAP

Ville de dpart

Aroport de dpart

Tches de l'agence de voyage :


Destination
l disponibilit des aroports
l disponibilit des compagnies ariennes l'heure souhaite
l disponibilit des vols la date souhaite
l informations de vol complmentaires : prix, capacit, ...
Ville de destination

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

Liste des vols

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

Ralisation dans le Dictionnaire ABAP :

SCARR

SPFLI

SFLIGHT

SBOOK

Compagnie arienne

Liste des vols

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

Liste des vols

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-cls et index secondaires


Index

Zones
MANDT
CARRID
CONNID
COUNTRYFR
CITYFROM
AIRPFROM
COUNTRYTO
CITYTO
AIRPTO
FLTIME
DEPTIME
ARRTIME
DISTANCE
DISTID
FLTYPE

Cl ... Type de zone


!
!
!

... Courte description

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

Lecture de tables de base de donnes

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

SELECT : vue d'ensemble

Quelles colonnes ?SELECT <result>

FROM <table>

Quelle(s) table(s) ?

INTO <destination> Vers quelles zones ?


WHERE <condition>

Quelles lignes ?

Ligne individuelle

Lignes multiples

}
Colonne
spcifique

SAP AG 1999

L'instruction SELECT d'Open SQL lit des donnes dans la base.

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

Requte adresse la base de donnes

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

Systme d'excution ABAP

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

Traitement des enregistrements individuels

Programme ABAP
Objets de donnes

Table
de base de
donnes
SCARR

pa_car
wa_
wa_scarr

Bloc de traitement ABAP

SELECT SINGLE *
FROM scarr
INTO wa_scarr
WHERE carrid = pa_car.
IF sy-subrc = 0.
...

Table de
base de
donnes

scarr

Systme d'excution ABAP

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

Systme d'excution ABAP


SAP AG 1999

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

Accs des tableaux

Objets de donnes

Programme ABAP

pa_car

Table de
base de donnes
SFLIGHT

itab_
itab_focc

Bloc de traitement ABAP

SELECT carrid connid fldate


seatsmax seatsocc
FROM sflight
INTO TABLE itab_focc
WHERE carrid = pa_car.
Interface de
base de
donnes

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.

SY-SUBRC = 0, lorsque le systme a lu au moins une entre de table.

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

DATA wa_sbc400focc TYPE sbc400focc.


SELECT SINGLE carrid connid fldate seatsmax seatsocc
FROM sflight
INTO wa_sbc400focc
wa_sbc400focc
WHERE carrid = pa_car
AND connid = pa_con
AND fldate = pa_date.
Mme type que
la colonne lue

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

INTO CORRESPONDING FIELDS


Programme ABAP

DATA wa_sdyn_conn TYPE sdyn_conn.


SELECT SINGLE carrid connid deptime
FROM spfli
INTO CORRESPONDING FIELDS OF wa_sdyn_conn
WHERE carrid = pa_car
AND connid = pa_con.
Mme nom que
la colonne lue
mandt carrid connid

mandt carrid connid

...

...

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.

Avantages de cette construction :


la structure ne doit pas tre structure comme la liste des zones et ne doit pas tre aligne gauche
;
elle est facile grer, car l'extension de la liste des zones n'exige pas d'autres modifications du
programme, pour autant qu'une zone de la structure a le mme nom et type.

Dsavantages de cette construction :


INTO CORRESPONDING FIELDS est plus intensif au moment de l'excution que INTO. La
dure d'excution peut par consquent se prolonger.

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

Contrles d'autorisations dans des programmes ABAP

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

Objets d'autorisation et autorisations

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

Important : l'instruction Authority-Check excute le contrle d'autorisation et retourne une valeur


de code retour adquate dans SY-SUBRC. Lorsque vous contrlez ce code retour, vous pouvez
spcifier les consquences d'une autorisation manquante (par exemple : terminer le programme, ou
afficher un message et ignorer certaines lignes du code).

(C) SAP AG

BC400

5-21

Insertion d'AUTHORITY-CHECK dans des programmes


Modle
Insrer instruction
...
...
AUTHORITY-CHECK
...
...

S_CARRID

AUTHORITY-CHECK OBJECT 'S_CARRID'

Le systme
gnre
le code ABAP

ID CARRID FIELD '__________'


ID ACTVT FIELD '__________'.
IF SY-SUBRC
SY-SUBRC NE
NE 0.
0.
IF
ENDIF.

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.

Principaux codes de retour dans AUTHORITY-CHECK :


- 0 : l'utilisateur dispose d'une autorisation contenant les valeurs ncessaires ;
- 4 : l'utilisateur ne dispose pas de l'autorisation requise ;
- 8 : le contrle n'a pas abouti car les zones de l'objet n'ont pas toutes t spcifies.

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

Lecture de tables de base de donnes multiples

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

Synthse : lecture de tables de base de donnes multiples


Utilisez les composantes fournies par SAP
qui englobent
la recherche de donnes

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

Dictionnaire ABAP : vues

SPFLI
Mandt Carrid Connid

SCARR

... Cityfrom ...

Mandt Carrid Carrname

...

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

Dialogues base de donnes 1 : rsum du chapitre

Vous tes maintenant capable :


l d'obtenir des informations sur les tables de base
de donnes partir du Dictionnaire ABAP
l de rpertorier plusieurs moyens de trouver des
tables de base de donnes
l de programmer un accs en mode lecture des
lignes et colonnes spcifiques d'une table de base
de donnes particulire
l d'appliquer des contrles d'autorisation
l Rpertorier les diffrents types de possibilits
d'accs en mode lecture pour des tables de base
de donnes.

SAP AG 1999

(C) SAP AG

BC400

5-26

Exercices

Chapitre : Dialogues base de donnes 1


Sujet : Boucles SELECT

la fin de ces exercices, vous serez en mesure :


dutiliser l'instruction ABAP SELECT...ENDSELECT pour lire
les donnes de la table de base de donnes dans votre programme.

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

Crez le programme ZBC400_##_SELECT_SFLIGHT sans TOP include.


Affectez votre programme la classe de dveloppement ZBC400_## et l'ordre
de modification pour votre projet "BC400" (## est votre numro de groupe).

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

Dans la boucle SELECT, calculez le pourcentage doccupation en utilisant la zone


correspondante de lespace de travail. Affectez le rsultat la zone POURCENTAGE
de votre structure.

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

Chapitre : Dialogues base de donnes 1


Sujet : Boucles SELECT et chargement des tables internes

la fin de ces exercices, vous serez en mesure :


dutiliser l'instruction ABAP SELECT ENDSELECT pour lire les
donnes dune table de base de donnes de votre programme et de
remplir une table interne.

La tche est identique celle de lexercice 1. Affichez sur la liste les


donnes tries en fonction du pourcentage doccupation. Pour ce faire,
vous devez remplir une table interne avec les donnes demandes et
ensuite les trier selon la zone doccupation.

Programme :

ZBC400_##_SELECT_SFLIGHT_ITAB

Solution modle :

SAPBC400DDS_SELECT_SFLIGHT_TAB

2-1

Copiez votre programme ZBC400_##_SELECT_SFLIGHT ou la solution modle


SAPBC400DDS_SELECT_SFLIGHT vers le nom
ZBC400_##_SELECT_SFLIGHT_ITAB. Affectez votre programme la classe
de dveloppement ZBC400_## et l'ordre de modification pour votre projet
"BC400" (## est votre numro de groupe).

2-2

Outre votre structure qui se rfre au type du Dictionnaire ABAP SBC400FOCC,


crez une table interne avec le type ligne SBC400FOCC. Utilisez les Cas demploi
pour le type de ligne du Dictionnaire ABAP SBC400FOCC pour y trouver un type
de table adquat.

2-3

Remplissez la table interne ligne par ligne en utilisant une instruction APPEND dans
la boucle SELECT.

2-4

Triez la table interne sur le taux de remplissage.

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

Copiez le programme ZBC400_##_SELECT_SFLIGHT_ITAB vers le


programme ZBC400_##_ARRAY_FETCH_SFLIGHT.

2-7

Remplacez la boucle SELECT par un ARRAY FETCH et compltez la table interne


avec les donnes appropries de la table SFLIGHT. La colonne du pourcentage
doccupation contient uniquement des valeurs initiales.

2-8

Calculez le pourcentage doccupation pour chaque ligne de la table interne en


utilisant une boucle, et modifiez la ligne en utilisant une instruction MODIFY. Pour
dcouvrir comment utiliser MODIFY dans une boucle, rfrez-vous la
documentation mot-cl.

(C) SAP AG

BC400

5-30

Chapitre : Dialogues base de donnes 1


Sujet : Contrles dautorisations

la fin de ces exercices, vous serez en mesure :


deffectuer des contrles dautorisations.

Modifiez vos programmes ZBC400_##_SELECT_SFLIGHT et


ZBC400_##_SELECT_SFLIGHT_ITAB de sorte que les donnes
puissent tre consultes partir de la base de donnes et affiches dans la
liste seulement si lutilisateur dispose de lautorisation pour la compagnie
arienne demande.

Programme :

ZBC400_##_AUTHORITY_CHECK

Solution modle :

SAPBC400DDS_AUTHORITY_CHECK,
SAPBC400DDS_AUTHORITY_CHECK_2 et
SAPBC400DDS_AUTHORITY_CHECK_3

3-1

Modifiez vos programmes ZBC400_##_SELECT_SFLIGHT et


ZBC400_##_SELECT_SFLIGHT_ITAB comme suit :

3-2

ajoutez un contrle dautorisation qui contrle lobjet S_CARRID ; vrifiez que


la base de donnes nest pas accessible lutilisateur qui ne dispose pas
dautorisation de la compagnie arienne saisie dans lcran de slection ; vrifiez
au contraire que le programme affiche un message derreur appropri.

3-3

Redmarrez votre programme. Sur lcran de slection, essayez dentrer AA pour la


compagnie arienne, ensuite UA.

(C) SAP AG

BC400

5-31

Solutions

Chapitre : Dialogues base de donnes 1


Sujet : Boucles SELECT

Solution modle : Programme SAPBC400DDS_SELECT_SFLIGHT


*&--------------------------------------------------------------*
*& Report
*

SAPBC400DDS_SELECT_SFLIGHT

*&--------------------------------------------------------------*
REPORT

sapbc400dds_select_sflight

DATA: wa_flight TYPE sbc400focc.


PARAMETERS: pa_car TYPE s_carr_id.

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

Chapitre : Dialogues base de donnes 1


Sujet : Boucles SELECT et chargement des tables internes

Solution modle : Programme SAPBC400DDS_SELECT_SFLIGHT_TAB

*&--------------------------------------------------------------*
*& Report

SAPBC400DDS_SELECT_SFLIGHT_TAB

*&

*
*

*&--------------------------------------------------------------*

REPORT

sapbc400dds_select_sflight_tab

DATA: wa_flight TYPE sbc400focc,


it_flight TYPE sbc400_t_sbc400focc.
PARAMETERS: pa_car TYPE s_carr_id.

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 table interne
APPEND wa_flight TO it_flight.
ENDSELECT.
* Trier table interne
SORT it_flight by percentage.
* Crer liste partir de la table interne trie
(C) SAP AG

BC400

5-33

LOOP AT it_flight into wa_flight.

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,'%'.
ENDLOOP.

(C) SAP AG

BC400

5-34

Chapitre : Dialogues base de donnes 1


Sujet : Cration de tableaux (facultatif)

FACULTATIF:
Solution modle : Program SAPBC400DDS_SELECT_ARRAY_FETCH
*&--------------------------------------------------------------*
*& Report

SAPBC400DDS_SELECT_ARRAY_FETCH

*&

*
*

*&--------------------------------------------------------------*

REPORT

sapbc400dds_select_array_fetch

DATA: wa_flight TYPE sbc400focc,


it_flight TYPE sbc400_t_sbc400focc.
PARAMETERS: pa_car TYPE sflight-carrid.
*---------------------------------------------------------------* Facultatif:
* Cration de tableaux pour complter les 5 premires colonnes de la
table interne,
*---------------------------------------------------------------SELECT carrid connid fldate seatsmax seatsocc FROM sflight
INTO CORRESPONDING FIELDS OF TABLE it_flight
WHERE carrid = pa_car.

* Un enregistrement au moins est slectionn


IF sy-subrc = 0.
*Calculer le pourcentage dans une boucle et modifier la table interne
complter
* 6e colonne de la table interne
LOOP AT it_flight INTO wa_flight.
wa_flight-percentage =
100 * wa_flight-seatsocc / wa_flight-seatsmax.
MODIFY it_flight from wa_flight.
ENDLOOP.
(C) SAP AG

BC400

5-35

SORT it_flight by percentage.

* Nouvelle boucle sur la table interne pour crire le contenu des


enregistrements sur une liste
LOOP AT it_flight INTO wa_flight.

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,'%'.
ENDLOOP.

ENDIF.

(C) SAP AG

BC400

5-36

Chapitre : Dialogues base de donnes 1


Sujet : Contrles dautorisations

Solution modle :
Programmes SAPBC400DDS_AUTHORITY_CHECK,
SAPBC400DDS_AUTHORITY_CHECK_2 et
SAPBC400DDS_AUTHORITY_CHECK_3
*&--------------------------------------------------------------*
*& Report

SAPBC400DDS_AUTHORITY_CHECK

*&

*
*

*&--------------------------------------------------------------*

REPORT

sapbc400dds_authority_check_#.

CONSTANTS

actvt_display TYPE activ_auth value '03'.

DATA: wa_flight TYPE sbc400focc,


...
PARAMETERS: pa_car TYPE sflight-carrid.
START-OF-SELECTION.
* Authority-Check: lutilisateur est-il autoris lire les donnes
pour la compagnie arienne
* PA_CAR?
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD pa_car
ID 'ACTVT'

FIELD actvt_display.

CASE sy-subrc.
* Lutilisateur est autoris
WHEN 0.
*

SELECT loop or Array Fetch ...

* Lutilisateur ne possde pas l'autorisation ou autre erreur de


authority-check
WHEN OTHERS.
WRITE: / 'Authority-Check Error'(001).
ENDCASE.

(C) SAP AG

BC400

5-37

(C) SAP AG

BC400

5-38

Modularisation interne du programme

Contenu :
l Blocs vnements ABAP
l Sous-programmes

SAP AG 1999

(C) SAP AG

BC400

6-1

Modularisation interne du programme : objectifs du chapitre

la fin de ce chapitre, vous serez en mesure de :


l d'expliquer le fonctionnement d'un programme
contenant des vnements au moment de
l'excution en utilisant INITIALIZATION et
START-OF-SELECTION comme exemples
l d'encapsuler des fonctions dans un sousprogramme simple avec un interface.

SAP AG 1999

(C) SAP AG

BC400

6-2

lments possibles d'un programme ABAP

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.

De nombreux types de blocs de traitement ABAP existent :


les blocs vnements sont des blocs de traitement ABAP appels par le processeur ABAP. Ils
peuvent logiquement appartenir au programme excutable, l'cran de slection, la liste ou
l'cran. Ce chapitre traite des blocs vnements qui appartiennent au programme excutable. Vous
trouverez des informations sur les blocs vnements qui appartiennent l'cran de slection, la
liste ou l'cran dans les chapitres sur les dialogues utilisateur.
le traitement des sous-programmes se dclenche par une instruction ABAP. Les paramtres
peuvent tre transfrs aux sous-programmes en utilisant une interface, et les sous-programmes
peuvent contenir des variables locales.
les modules sont des blocs de traitement ABAP propres au traitement des dynpros. Par
consquent, les modules seront traits dans le chapitre Dialogues utilisateur : dynpros.

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

Exemple : programme ABAP comportant des blocs


vnements et un cran de slection

Dfinitions de zone et de type local

cran de slection
gnr par
generates

PARAMETERS pa_date LIKE sy-datum


DEFAULT sy-datum.

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

Comportement d'un programme type pendant l'excution

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

Systme d'excution ABAP


Temps
SAP AG 1999

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

le bloc vnement INITIALIZATION est le premier tre appel ;

un cran de slection est ensuite envoy au serveur de prsentation ;

ds que vous quittez l'cran de slection, START-OF-SELECTION est appel ;

si le bloc vnement START-OF-SELECTION contient des instructions ABAP WRITE, SKIP


ou ULINE, un buffer de liste est rempli ;

un buffer de liste est ensuite envoy au serveur de prsentation sous forme de liste.

(C) SAP AG

BC400

6-5

Blocs vnements dans des programmes excutables

Programme ABAP

Introduit par un mot-cl


vnementiel

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

Bloc vnement par


dfaut :
START-OF-SELECTION

INITIALIZATION.

START-OF-SELECTION.

Systme d'excution ABAP


Temps
SAP AG 1999

Les vnements sont des blocs de traitement appels par le processeur ABAP. Celui-ci dtermine
l'ordre de traitement des vnements.

Un programme excutable comporte diffrents vnements correspondant aux tches de cration de


listes.

(C) SAP AG

BC400

6-6

Blocs vnements : syntaxe

REPORT ...

PARAMETERS: pa_date LIKE sy-datum DEFAULT sy-datum.

INITIALIZATION.
INITIALIZATION.

" Default values for selection screen

pa_date = pa_date - 7.

START-OF-SELECTION.
START-OF-SELECTION.

" Start of data processing

WRITE pa_date.

Le traitement des blocs vnements du


code source ne dpend pas de l'ordre
par lequel ils sont appels dans le runtime system. call
SAP AG 1999

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

Programme comportant des sous-programmes

Bloc de
traitement

Interface

Fonctions encapsules

Programmes mieux
structurs qui peuvent
tre lus et compris plus
facilement

Gestion de programmes
plus facile

Peut tre rutilis de


manire locale dans le
programme

Bloc de traitement avec


interface

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

Sous-programmes dans une liste d'objets

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

Exemple de syntaxe : interface du sous-programme


*&--------------------------------------------------------------------*
*&
Form FILL_ITAB
*&--------------------------------------------------------------------*
*
Filling internal table with records of sflight with
*
carrid = p_carrid, calculate percentage
*---------------------------------------------------------------------*
*
-->P_carrid
carrier id
*
<--P_IT_FLIGHT internal standard table with line type sbc400focc
*---------------------------------------------------------------------*
fill_itab USING
FORM fill_itab
value( p_carrid) TYPE s_carr_id
CHANGING p_it_flight
TYPE sbc400_t_sbc400focc.

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

Appel de sous-programmes : droulement l'excution

Programme ABAP

Bloc vnement

PERFORM fill_itab
USING pa_carr
CHANGING itab.
p_carrid
p_it_flight
fill_itab

Systme d'excution ABAP


Temps
SAP AG 1999

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

Appel par valeur et par rfrence

a1

fv1

a2

fv2

a3

Paramtres effectifs

fr3

Param
tres formels
Paramtres

Appel par rfrence

START-OF-SELECTION.
:
PERFORM form1 USING a1
PERFORM
CHANGING a2 a3.

Appel par valeur

Appel par valeur et par rsultat

FORM form1 USING


VALUE(fv1)
CHANGING VALUE(fv2)
fr3 .
:
ENDFORM.
ENDFORM.

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

Exemple de syntaxe : appel des sous-programmes


PARAMETERS pa_car TYPE s_carr_id.
DATA: it_flight TYPE sbc400_t_sbc400focc.
.
.
.
pa_car
PERFORM fill_itab USING
pa_car
CHANGING it_flight
it_
it_flight .
.
.
.
FORM fill_itab
USING
VALUE(p_carrid)
VALUE(p_carrid
carrid)
)
VALUE(p_
CHANGING p_it_flight
p_it
_flight
p_it_

Paramtre
de saisie

Paramtres
TYPE s_carr_id
TYPE sbc400_t_sbc400focc.

formels

DATA ls_flight TYPE sbc400focc. " local structure


SELECT carrid connid fldate seatsmax seatsocc FROM sflight
INTO CORRESPONDING FIELDS OF TABLE p_it_flight
WHERE carrid = p_carrid.
...
ENDFORM.

Une erreur de syntaxe s'affiche si les types de paramtres effectifs


ne sont pas compatibles avec la manire dont le paramtre formel
est typ
SAP AG 1999

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.

Contrle complet du type :


n

TYPE D, F, I, T ou <type dictionnaire>. Ces types sont entirement spcifis. Le


systme contrle si le type de donnes du paramtre effectif est identique celui du paramtre
formel dans son intgralit.

Contrle partiel par types gnriques :


n

TYPE C, N, P ou X : le systme contrle si le paramtre effectif est de type C, N, P ou


X. La longueur du paramtre et le nombre de dcimales dans l'option DECIMALS (type P) sont
transfrs du paramtre effectif vers le paramtre formel.

TYPE <type gnrique du dictionnaire > : le paramtre formel hrite de toutes


les informations non spcifies concernant un type gnrique du Dictionnaire, depuis un
paramtre formel.

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

Modularisation du programme interne : rsum du chapitre

Vous tes maintenant capable :


l Expliquer comment un programme contenant des
blocs vnements fonctionne au moment de
l'excution en utilisant INITIALISATION et
START-OF-SELECTION comme exemples
l d'encapsuler des fonctions dans un sousprogramme simple avec une interface.

SAP AG 1999

(C) SAP AG

BC400

6-14

Exercices

Chapitre : Modularisation interne du programme


Sujet : Sous-programmes

la fin de ces exercices, vous serez en mesure :


de crer des sous-programmes ;
dutiliser linterface de sous-programme pour transfrer des donnes.

Modifiez votre programme ZBC400_##_SELECT_SFLIGHT_ITAB


(ou la solution modle correspondante) de sorte que le contrle
dautorisation et la sortie de donnes soient tous deux encapsuls dans les
sous-programmes.

Programme :

ZBC400_##_FORMS

Solution modle :

SAPBC400PBS_FORMS

1-1

Copiez votre programme ZBC400_##_SELECT_SFLIGHT_ITAB ou la solution


modle correspondante SAPBC400DDS_AUTHORITY_CHECK_2 vers le nouveau
programme ZBC400_##_FORMS. Affectez votre programme la classe de
dveloppement ZBC400_## et l'ordre de modification pour votre projet
"BC400". (## est votre numro de groupe.)

1-2

Encapsulez le contrle dautorisation dans un sous-programme. Transmettez le


code de la compagnie arienne et la valeur requise pour la zone dautorisation
ACTVT dans linterface. Retransfrez SY-SUBRC, qui est paramtr par le contrle
dautorisation, vers le programme principal via linterface. Spcifiez les types de
paramtres pour linterface du sous-programme. Les types possibles du
Dictionnaire ABAP sont :
Code de la compagnie arienne
S_CARR_ID

lment de donnes

Code retour :
systme SY-SUBRC

Zone

Valeur de la zone dautorisation ACTVT :


ACTIV_AUTH

(C) SAP AG

BC400

lment de donnes

6-15

1-3

Modifiez les parties du programme qui dpendent du rsultat du contrle


dautorisation : vous ne pouvez dsormais plus demander la valeur de SY-SUBRC.
Par contre, dcouvrez la valeur du paramtre dinterface correspondant partir du
sous-programme.

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

Chapitre : Modularisation du programme interne


Sujet : Sous-programmes

Solution modle SAPBC400PBS_FORMS


*&--------------------------------------------------------------*
*& Report

SAPBC400PBS_FORMS

*&

*&--------------------------------------------------------------*
REPORT

sapbc400pbs_forms.

CONSTANTS actvt_display TYPE activ_auth VALUE '03'.


DATA: wa_flight TYPE sbc400focc,
it_flight TYPE sbc400_t_sbc400focc.
PARAMETERS: pa_car TYPE sflight-carrid.
DATA:

returncode LIKE sy-subrc.

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

value(p_ld_actvt) TYPE activ_auth


CHANGING p_return

LIKE sy-subrc.

AUTHORITY-CHECK OBJECT 'S_CARRID'


ID 'CARRID' FIELD p_carrid
ID 'ACTVT'

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

Dialogues utilisateur : listes

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

Dialogues utilisateur : listes : objectifs du chapitre

la fin de ce chapitre, vous serez en mesure :


l de dcrire les attributs et les avantages d'une liste
l d'crire un programme qui affiche les dtails
d'une ligne partir de votre liste de base vers une
liste interactive ds que l'utilisateur double-clique
sur cette ligne
l d'expliquer le comportement de votre programme
l'excution pendant l'vnement AT LINESELECTION

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 ;

elles peuvent diter des valeurs montaires dans de nombreuses devises ;

L'dition de listes s'effectue :

l'cran : c'est ici que vous ajoutez couleurs et icnes,

sur une imprimante,

sur Internet/intranet : conversion automatique en format HTML ;

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

L'interface standard des listes offre les commandes suivantes :


Retour ;
Terminer ;
Annuler ;
Imprimer ;
Rechercher (dans liste) ;
Sauvegarder : sauvegarde la liste comme un fichier du bureau, dans un arbre de reporting, ou dans
le Bureautique ;
Envoyer : envoie la liste sous forme de courrier lectronique.

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

partir d'une liste :


Systme ...
:
Liste
:

partir de l'diteur ABAP :


lments de texte
Titre/intituls

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 l'diteur : fonctions de gestion d'lments de texte ;

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

Creation date: 01.01.1998


Created by:
WITTMANN

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.

Vous les crivez de deux faons :


TEXT-<xxx> (o xxx est une chane de caractres de trois caractres de long) ;
'<text>'(<xxx>) (o xxx est une chane de caractres de trois caractres de long).

(C) SAP AG

BC400

7-6

Listes d'un programme excutable

Lancement du
programme
Programme ABAP
Objets de donnes

Table de
base de
donnes
START-OF-SELECTION
Mmoire
tampon
de liste

Systme d'excution ABAP


SAP AG 1999

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

avant d'envoyer l'cran de slection : INITIALIZATION ;

aprs avoir quitt l'cran de slection : START-OF-SELECTION.

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

Systme d'excution ABAP


SAP AG 1999

Temps

Dans des programmes excutables, vous pouvez utiliser le bloc vnement AT LINE-SELECTION
pour crer des listes dtailles.

Le systme d'excution ABAP :


affiche la liste de base quand les vnements appropris sont traits (par exemple, aprs STARTOF-SELECTION). Dans ce cas, la zone systme sy-lsind contient la valeur 0 ;
traite le bloc vnement AT LINE-SELECTION chaque fois que vous double-cliquez sur une
entre. Si vous utilisez un statut standard, celui-ci apparat automatiquement chaque fois que vous
choisissez l'icne Slectionner, le poste du menu Slectionner dans le menu Traiter, ou la touche
de fonction F2 ;
affiche les listes dtailles quand l'vnement AT LINE-SELECTION est trait et augmente la
valeur contenue dans sy-lsind de un ;
affiche la liste dtaille partir du niveau prcdent de la hirarchie de liste (n-1) chaque fois que
vous slectionnez l'icne flche verte partir de la liste dtaille effective(n).

(C) SAP AG

BC400

7-8

Exemple : une liste dtaille simple

Programme de dmonstration ...

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

Fonctionnement des listes prsentes dans notre exemple :


- la liste de base prsente la mention "Liste de base" et la zone systme sy-lsind ;
- vous pouvez appeler la liste dtaille 1 grce un double-clic ou en slectionnant son icne
correspondante partir de la barre d'outils d'application ou son entre de menu, ou encore en
utilisant la touche de fonction F2. La "liste dtaille" apparat ensuite et la zone systme sylsind a la valeur 1 ;
- en rptant cette action, vous devriez appeler la liste dtaille 2, l o la zone systme sylsind contient la valeur 2 (qui reprsente le niveau effectif de la liste dtaille) ;
- En rptant cette action, vous augmentez la valeur sy-lsind de un jusqu' une valeur de
vingt (le nombre maximum possible de listes dtailles) ;
- En slectionnant la flche verte, l'utilisateur redescend d'une liste vers la liste de base.

(C) SAP AG

BC400

7-9

Syntaxe : une liste dtaille simple

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

Une liste dtaille peut se programmer comme suit :


n

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
;

utilisez le bloc vnement AT LINE-SELECTION lorsque vous programmez des listes


dtailles. Chaque fois que vous utilisez WRITE, SKIP, ou ULINE dans ce bloc venement,
vous remplissez le buffer de liste du niveau n+1 ;

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

Exemple de listes dtailles

Liste des vols


Vol
Dpart
Destination
LH 0400 FRA Francfort JFK New York
LH 0402 FRA Francfort JFK New York
...
SQ 0002 SIN Singapour SFO San Francisco

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.

Le programme type est nomm SAPBC400UDD_EXAMPLE_2 et fait partie de la classe de


dveloppement BC400.

(C) SAP AG

BC400

7-11

Zone HIDE

HIDE <objet de donnes>.


Buffer de liste de base

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

Slection de lignes : syntaxe

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

SELECT fldate seatsmax seatsocc


FROM sflight
INTO CORRESPONDING FIELDS OF wa_sflight
WHERE carrid = wa_spfli-carrid
AND connid = wa_spfli-connid.
WRITE:/ wa_sflight-fldate,
wa_sflight-seatsmax,
wa_sflight-seatsocc.
ENDSELECT.
ENDIF.
SAP AG 1999

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

Dialogues utilisateur : listes : rsum du chapitre

Vous tes maintenant capable :


l de dcrire les attributs et les avantages d'une liste
l d'crire un programme qui affiche les dtails
d'une ligne partir de votre liste de base vers une
liste interactive ds que l'utilisateur double-clique
sur cette ligne
l d'expliquer le droulement de votre programme
l'excution pendant l'vnement AT LINESELECTION

SAP AG 1999

(C) SAP AG

BC400

7-15

Dialogues utilisateur listes : exercices


Chapitre : Dialogues utilisateur : listes
Sujet : Listes dtailles

la fin de ces exercices, vous serez en mesure :


de crer une liste dtaille dans votre programme.

Modifiez votre programme ZBC400_##_SELECT_SFLIGHT ou la


solution modle correspondante comme suit :
quand vous avez slectionn un vol sur la liste de base (double-cliquez ou
appuyez sur F2 sur la ligne de liste approprie), affichez une liste
dtaille contenant toutes les rservations du vol slectionn.

Programme :

ZBC400_##_DETAIL_LIST

Solution modle :

SAPBC400UDS_DETAIL_LIST

1-1

Copiez votre programme ZBC400_##_SELECT_SFLIGHT ou la solution modle


correspondante SAPBC400DDS_AUTHORITY_CHECK vers le nouveau
programme ZBC400_##_DETAIL_LIST. Affectez votre programme la classe
de dveloppement ZBC400_## et l'ordre de modification pour votre projet
"BC400" (## est votre numro de groupe).

1-2

Assurez-vous que les zones-cls de la base de donnes SFLIGHT vous sont


accessibles pour la construction de la liste dtaille lorsque lutilisateur slectionne
un vol partir dune liste de base (double-cliquez ou appuyez sur F2 sur la ligne de
liste correspondante). (HIDE)

1-3

Ajoutez l'vnement AT LINE-SELECTION votre programme pour vous


permettre de construire la liste dtaille.

1-4

Dans la premire ligne de cette liste, affichez les informations-cl partir de la


ligne slectionne sur la liste de base. Sous cette ligne, affichez une ligne de
soulignement et une ligne vierge.

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

Affichez les zones BOOKID et CUSTOMID dans la couleur COL_KEY.

1-7

Assurez-vous que le montant de devise LOCCURAM correspond au format de la


devise LOCCURKEY. Utilisez le complment CURRENCY <currency_key>
dans linstruction WRITE.
Exemple:
WRITE: wa_sflight-price CURRENCY wa_sflight-currency,
wa_sflight-currency.

(C) SAP AG

BC400

7-17

Solutions

Chapitre : Dialogues utilisateur : listes


Sujet : Listes dtailles

Solution type SAPBC400UDS_DETAIL_LIST


*&--------------------------------------------------------------*
*& Report

SAPBC400UDS_DETAIL_LIST

*&

*
*

*&--------------------------------------------------------------*

REPORT

sapbc400uds_detail_list.

CONSTANTS actvt_display TYPE activ_auth VALUE '03'.


DATA: wa_flight TYPE sbc400focc,
wa_sbook

TYPE sbook.

PARAMETERS: pa_car TYPE sflight-carrid.

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

HIDE: wa_flight-carrid, wa_flight-connid,


wa_flight-fldate.
ENDSELECT.
WHEN OTHERS.
WRITE: / 'Authority-Check Error'(001).
ENDCASE.

* Le programme continue si une ligne est slectionne sur la liste de


base
AT LINE-SELECTION.
IF sy-lsind = 1.

* Les zones-cls sont retransfres de la zone mmoire HIDE vers des


objets de donnes ABAP
WRITE: / wa_flight-carrid,
wa_flight-connid,
wa_flight-fldate.
ULINE.
SKIP.
* Slectionner des rservations, qui dpendent dun vol slectionn
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.

* Crer une liste dtaille


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

7-19

Dialogues utilisateur : crans de slection

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

Dialogues utilisateur : crans de slection :


objectifs du chapitre

la fin de ce chapitre, vous serez en mesure :


l de dcrire les attributs et les avantages des
crans de slection
l d'crire un programme qui permet l'utilisateur
de saisir des plages de valeurs dans un cran de
slection qui peuvent tre utilises pour limiter le
nombre d'enregistrements remonts de la base de
donnes
l d'crire un programme qui comporte des
contrles de saisie supplmentaires sur son
cran de slection renvoyant cet cran en cas
d'erreur

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

Runtime system ABAP


SAP AG 1999

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

Grer les options de slection


slection

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

dfinition d'options de slection ;

saisie de plusieurs valeurs ou de plages de valeurs ;

dfinition de critres d'exclusion.

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

DATA: wa LIKE spfli.


Compagnie
PARAMETERS pa_car TYPE spfli-carrid. arienne
SELECT-OPTIONS so_conn FOR wa-connid. Vol n
ID

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

pr-affectation de valeurs aux zones de saisie ;

masquage de zones de saisie ;

sauvegarde de ces paramtres en vue d'une rutilisation

Une variante peut renvoyer plusieurs crans de slection.

Les variantes sont dpendantes du mandant.

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

Systme d'excution ABAP


SAP AG 1999

Dans un programme excutable, une seule instruction PARAMETERS suffit pour gnrer un cran de
slection standard.

L'instruction PARAMETERS <nom> TYPE <type> comme l'instruction PARAMETERS <nom>


LIKE <objet de donnes> gnrent toutes deux une zone de saisie simple sur l'cran de
slection, et un objet de donnes <nom> du type spcifi.

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

Systme d'excution ABAP


SAP AG 1999

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

Utilisation de Parameters dans l'instruction SELECT 1

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

DATA gd_carrid TYPE s_carr_id.


SELECT-OPTIONS so_carr
SELECT-OPTIONS
FOR gd_carrid.

Bloc de
traitement
ABAP

Systme d'excution ABAP


SAP AG 1999

L'instruction SELECT-OPTIONS <nom> FOR <objet de donnes> dfinit une option de


slection : elle place deux zones de saisie sur l'cran de slection, qui est de mme type que celui
dfini dans la rfrence. Cela permet alors l'utilisateur de saisir une plage de valeurs ou des
slections complexes. L'instruction dfinit galement une table interne <nom> comportant les quatre
colonnes suivantes :
n

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 ;

high : contient la limite suprieure d'une plage de valeurs.

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

Zones et types dfinis localement


cran de
slection

DATA gd_carrid TYPE s_carr_id.


carr
so_
SELECT-OPTIONS so_carr
so_carr
FOR gd_carrid.

cran de
slection
Bloc de
traitement
ABAP

Systme d'excution ABAP


SAP AG 1999

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

Utilisation de Parameters dans l'instruction SELECT 2

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

vnements d'cran de slection


Lancement du
programme

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.

L'cran de slection s'affiche aprs l'vnement INITIALIZATION.

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.

Le droulement ultrieur du programme dpend de l'action utilisateur :


si l'utilisateur slectionne F8 ou "Excuter", l'vnement suivant est appel, dans ce cas, STARTOF-SELECTION ;
si l'utilisateur slectionne toute autre fonction, l'cran de slection se raffiche.

(C) SAP AG

BC400

8-15

Dialogues d'erreur dans AT SELECTION-SCREEN


Lancement
du programme

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.

Toute action utilisateur lance l'vnement AT SELECTION-SCREEN. Si un dialogue d'erreur se


dclenche, le systme revient l'cran de slection et toutes les zones de saisie sont de nouveau
accessibles. Un message s'affiche dans la ligne d'tat.

Pour des informations complmentaires sur l'instruction MESSAGE, rfrez-vous galement la


documentation mots-cls.

Des informations complmentaires se trouvent dans la documentation mots-cls AT


SELECTION-SCREEN.

(C) SAP AG

BC400

8-16

AT SELECTION-SCREEN : syntaxe

PARAMETERS: pa_car TYPE s_carr_id.

* Premier vnement trait aprs avoir quitt l'cran de


slection
AT SELECTION-SCREEN.
AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD pa_car
ID 'ACTVT' FIELD actvt_display.
IF sy-subrc <> 0.
MESSAGE e045(bc400)
WITH pa_car.
* Remontrer
l'cran de slection
et indiquer message dans
barre d'tat
MESSAGE e045(bc400) WITH pa_car.
ENDIF.

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.

Un contrle d'autorisation est excut sur l'cran de slection :


si l'utilisateur possde l'autorisation d'affichage pour la compagnie arienne slectionne, le
programme continue ;
si l'utilisateur ne possde pas l'autorisation d'affichage, l'cran de slection se raffiche et un
message d'erreur apparat dans la barre d'tat.

(C) SAP AG

BC400

8-17

Dialogue utilisateur : crans de slection : rsum


du chapitre

Vous tes maintenant capable :


l de dcrire les attributs et les avantages des
crans de slection ;
l d'crire un programme qui permet l'utilisateur de
saisir des plages de valeurs dans un cran de
slection qui peuvent tre utilises pour limiter le
nombre d'enregistrements de donnes retrouvs
partir de la base de donnes ;
l d'crire un programme qui comporte des
contrles de saisie supplmentaires sur son cran
de slection renvoyant cet cran en cas d'erreur.

SAP AG 1999

(C) SAP AG

BC400

8-18

cran de slection : exercices

(C) SAP AG

BC400

8-19

(C) SAP AG

BC400

8-20

Chapitre : cran de slection

la fin de ces exercices, vous serez en mesure :


dutiliser linstruction ABAP SELECT-OPTIONS pour saisir des
valeurs complexes sur un cran de slection standard ;
de tenir compte de valeurs complexes dans une slection de base de
donnes ;
de programmer un message derreur pour un cran de slection
standard.
Compltez votre programme ZBC400_##_DETAIL_LIST ou la
solution modle correspondante comme suit.
Fournissez lutilisateur un moyen de saisir une plage de valeurs
complexes pour le numro de vol. Tenez compte des valeurs dans votre
slection de base de donnes.
De plus, modifiez votre programme pour que lutilisateur puisse
continuer aprs l'cran de slection seulement si le contrle dautorisation
pour la compagnie arienne souhaite russit.
Programme :

ZBC400_##_SEL_SCREEN

Solution modle :

SAPBC400UDS_SEL_SCREEN

1-1

Copiez votre programme ZBC400_##_DETAIL_LIST ou la solution modle


correspondante SAPBC400_UDS_DETAIL_LIST vers le programme
ZBC400_##_SEL_SCREEN. Affectez votre programme la classe de
dveloppement ZBC400_## et l'ordre de modification pour votre projet
"BC400" (## est votre numro de groupe).

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

Utilisez la slection de valeurs complexes pour filtrer les donnes slectionnes


partir de la table de base de donnes SFLIGHT.

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

derreur appropi partir de la classe de messages BC400, et permettez


lutilisateur de saisir une valeur diffrente sur lcran de slection.

(C) SAP AG

BC400

8-22

Solutions

(C) SAP AG

BC400

8-23

(C) SAP AG

BC400

8-24

Chapitre : cran de slection

Solution modle : programme SAPBC400UDS_SEL_SCREEN


*&--------------------------------------------------------------*
*& Report

SAPBC400UDS_SEL_SCREEN

*&

*
*

*&--------------------------------------------------------------*

REPORT

sapbc400uds_sel_screen.

CONSTANTS actvt_display TYPE activ_auth VALUE '03'.

DATA: wa_flight TYPE sbc400focc,


wa_sbook

TYPE sbook.

PARAMETERS: pa_car TYPE sflight-carrid.


* Zone de donnes pour restrictions complexes appliques
lidentificateur de connexion
SELECT-OPTIONS: so_con FOR wa_flight-connid.

* Premier vnement trait aprs avoir quitt lcran de slection


AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD pa_car
ID 'ACTVT'

FIELD actvt_display.

IF sy-subrc <> 0.

* Retourner lcran de slection et afficher un message dans la


barre dtat
MESSAGE e045(bc400) WITH pa_car.
ENDIF.
START-OF-SELECTION.
SELECT carrid connid fldate seatsmax seatsocc FROM sflight
(C) SAP AG

BC400

8-25

INTO CORRESPONDING FIELDS OF wa_flight


WHERE carrid = pa_car
AND

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

Dialogues utilisateur : dynpros

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

Dialogues utilisateur : dynpros : objectifs du chapitre

la fin de ce chapitre, vous serez en mesure :


l de dcrire les attributs et les avantages des
dynpros
l d'crire un programme qui :
l affiche les donnes sur un dynpro
l permet l'utilisateur de modifier certaines de
ces donnes
l permet l'utilisateur d'influencer le traitement
ultrieur du programme en utilisant des
boutons de commande

SAP AG 1999

(C) SAP AG

BC400

9-2

Avantages des dynpros

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

Utilisation des dynpros

Code de transaction
100

200

120

140

CALL SCREEN 100.


300

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

Liste des vols


Vol
Dpart
Destination
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
Compagnie arienneLH
Numro de vol
0400
Aroport de dpart FRA
JFK
Destination
Modifier
dans la
Dure du vol
base de donnes Heure de dpart
Sauvegarder

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.

Pour revenir la liste de base sans modifier de donnes, slectionnez "Retour".

Pour enregistrer les modifications dans la base de donnes, slectionnez "Sauvegarder".

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

Composantes d'un dynpro

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

PROCESS BEFORE OUTPUT.


MODULE CLEAR_OK_CODE.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.

SAP AG 1999

Procdure de cration d'un dynpro :


n

spcification des proprits (Attributs de dynpro) ;

spcification de la structure (dans l'diteur pleine page) ;

dfinition des attributs pour les lments du dynpro (Liste de zones) ;

programmation de sa logique d'excution.

(C) SAP AG

BC400

9-6

tape 1 : cration d'un dynpro

Liste des vols


Vol
Dpart
Destination
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
Compagnie arienne
Numro de vol
Aroport de dpart
Destination
Dure du vol
Heure de dpart

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

Cration d'un dynpro : attributs

ABAP

Crer un objet

:
AT LINE-SELECTION.
:
CALL SCREEN 100
100. Double-clic
:

Screen
Painter

Dynpro 100 n'existe pas.


Voulez-vous crer l'objet ?
Oui

Non

Annuler

Attributs de dynpro
Courte description

Affichage de donnes supplmentaires

Type de dynpro
Normal
Sous-dynpro
Bote de dialogue modale
Dynpro suivant

SAP AG 1999

Vous crez un dynpro de plusieurs faons :


n

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 ;

par la liste d'objets de Object Navigator.

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

Zones de saisie d'une structure du Dictionnaire

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

Pour dplacer un lment du dynpro, cliquez dessus et faites glisser.

(C) SAP AG

BC400

9-9

Modification des attributs de zone

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

Dict Prog Disp

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

Attributs de zones : liste d'lments

Screen Painter : liste d'l


ments
d'lments

Type de zone Textes/modles

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.

La liste de zones s'affiche alors sous forme de table.

Vous pouvez galement accder cette fonction sous un format diffrent depuis le Screen Painter
graphique.

(C) SAP AG

BC400

9-11

tape 2 : affichage des donnes

Liste des vols


Vol
Dpart
Destination
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
Compagnie arienne LH
Numro de vol
0400
Aroport de dpart
Destination

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.

Pour l'utilisateur, le programme fonctionne comme suit :

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 ;

l'utilisateur peut revenir la liste de base de plusieurs faons.

Sachant cela, cette partie du chapitre traitera :


n

des conditions requises pour le transport automatique de donnes d'un programme vers une zone
de dynpro ;

de la dfinition de l'interface du dynpro et de la programmation de transport de donnes vers les


objets de donnes de l'interface.

(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

DATA wa_spfli TYPE spfli.


TABLES sdyn_conn.
sdyn_conn
Process
Before
Output
Process
After
Input

Dynpro 100

Bloc de
traitement
ABAP

Runtime system 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

Transport de donnes du programme vers le dynpro

Programme ABAP
Objets de donnes

wa_spfli
sdyn_
sdyn_conn
sdyn_conn
Zones et types dfinis localement

DATA wa_spfli TYPE spfli.


TABLES sdyn_conn

Process
Before
Output
Process
After
Input

CALL SCREEN 100.

Screen 100

Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

Transport de donnes du dynpro vers le programme

Programme ABAP
Objets de donnes

wa_spfli
sdyn_
sdyn_conn
sdyn_conn
Zones et types dfinis localement

DATA wa_spfli TYPE spfli.


TABLES sdyn_conn

Process
Before
Output
Process
After
Input

CALL SCREEN 100.

Screen 100

Bloc de
traitement
ABAP

Runtime system ABAP


SAP AG 1999

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

!
!
!

!
!

Avant d'appeler le dynpro :


SELECT SINGLE * FROM spfli ...
SAP AG 1999

Au dernier niveau de dveloppement, le programme doit permettre l'utilisateur de modifier les


donnes de la base. L'utilisateur doit tre en mesure de modifier les zones FLTIME et DEPTIME.
Pour permettre l'utilisateur de modifier les donnes de plusieurs compagnies ariennes, une liste de
base des compagnies ariennes pour lesquelles l'utilisateur est autoris modifier les donnes doit
s'afficher. L'utilisateur arrive sur le dynpro de modification par un double-clic. Une fois les
modifications effectues, l'utilisateur retourne la liste de base. Cependant, une nouvelle liste de
base n'est pas cre. Les donnes modifies ne doivent donc pas apparatre dans la liste de base.

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.

Avantages de cette mthode :


pour la liste de base, seules les colonnes de la table de base de donnes affiches dans la liste
doivent tre lues. La performance peut tre amliore pour de longues listes ;
les donnes affiches sur le dynpro sont toujours jour, mme si l'enregistrement slectionn vient
seulement d'tre modifi par le programme. Ceci ne serait pas le cas si toutes les donnes du
dynpro taient mmorises dans la zone HIDE lors de la cration de la liste de base ;
les modifications effectues dans la base de donnes en utilisant le dynpro n'aboutissent pas des
valeurs incorrectes dans la liste de base, car les zones modifiables ne sont pas dans la liste ;
en prvision d'un concept de blocage : la dure de blocage peut tre raccourcie. Vous trouverez
des informations complmentaires sur ce sujet dans le chapitre Dialogues de base de donnes II ;
le programme peut tre complt : des informations supplmentaires sur l'enregistrement de
donnes peuvent s'afficher l'cran sans devoir apporter de nombreuses modifications.

(C) SAP AG

BC400

9-16

Syntaxe pour le niveau 2

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

tape 3 : dfinition des boutons de commande

Liste des vols


Message 1 dans

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.

Pour l'utilisateur, le programme fonctionne comme suit :


n

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 ;

Aprs avoir press Entre, le dynpro s'affiche nouveau.

Les modifications de la base de donnes sont traites dans le chapitre Dialogues de base de donnes
II.

Sachant cela, cette partie du chapitre traitera de :


la logique d'excution dans des blocs vnements PBO et PAI ;
l'utilisation des modules PBO et PAI en tant que blocs de traitement ABAP pour la programmation
de dynpros ;
la manire de vrifier comment le programme continue en fonction du bouton de commande
slectionn par l'utilisateur.

(C) SAP AG

BC400

9-18

(C) SAP AG

BC400

9-19

Dfinition de boutons de commande / affectation


de codes de fonction

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

Dict Prog Disp

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

Affectation d'un nom la zone OK_CODE

diteur
ABAP
TABLES: sdyn_conn.
DATA:
DATA: ok_code
ok_code like
LIKE sy-ucomm.
sy-ucomm.

Screen
Painter

Screen Painter : liste d'l


ments
d'lments
Attributs gnraux

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.

Runtime system ABAP


SAP AG 1999Temps

L'instruction ABAP CALL SCREEN <nnnn> interrompt le traitement du bloc de traitement et


appelle un dynpro.

chaque dynpro correspondent deux blocs vnement :


n

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

Dynpro suivant statique = 0

Programme ABAP

Objets de donnes

100
CALL SCREEN 100.

PBO

PAI

Attributs de dynpro
Dynpro
suivant

Dynpro suivant 0

Runtime system ABAP


SAP AG 1999Temps

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

Dynpro suivant statique = numro de dynpro

Programme ABAP

Objets de donnes

100
CALL SCREEN 100.

PBO

PAI

Attributs de dynpro
Dynpro
suivant

100

Dynpro suivant 100

Runtime system ABAP


SAP AG 1999Temps

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

Paramtrer dynamiquement Dynpro suivant

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

Runtime system ABAP


SAP AG 1999Temps

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

PROCESS BEFORE OUTPUT.


MODULE clear_ok_code.

Sauvegarder

Retour

MODULE clear_ok_code OUTPUT.


CLEAR ok_code .
ENDMODULE.

MODULE user_command_0100 INPUT.


* LOGIQUE DE PROGRAMME

PROCESS AFTER INPUT.


MODULE user_command_0100.

CASE ok_code.
WHEN 'BACK'. ...
WHEN 'SAVE'. ...
ENDCASE.
ENDMODULE.

SAP AG 1999

A l'aide de la zone OK_CODE,diffrentes logiques de programme peuvent maintenant tre excutes


par les modules PAI en fonction du choix de l'utilisateur.

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

Navigation forward : cration de modules


Screen
Painter

Crer un objet

PROCESS AFTER INPUT.


MODULE user_command_0100.
Double-C
lic

PBO module USER_COMMAND_100 n'existe pas.


Souhaitez-vous crer l'objet ?

Oui

Non

Annuler

Crer module PAI


Module PAI

USER_COMMAND_0100

Inclure slection
ZBC400_00_DYNPRO

Inclure
Programme principal

diteur
ABAP

MODULE user_command_100 INPUT.

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.

Il y a deux possibilits pour crer un module :


n

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

Utilisation de la fonction "Sauvegarder"

DATA: ok_code LIKE sy-ucomm.

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

Dialogues utilisateur : dynpros : rsum du chapitre

Vous tes maintenant capable :


l de dcrire les attributs et les avantages des
dynpros
l d'crire un programme qui :
l affiche les donnes sur un dynpro
l permet l'utilisateur de modifier certaines de
ces donnes
l permet l'utilisateur d'influencer le traitement
ultrieur du programme en utilisant des
boutons de commande

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

la fin de ces exercices, vous serez en mesure :


de crer des dynpros ;
dappeler des dynpros existants partir du programme.

Le programme SAPBC400UDT_DYNPRO_1 affiche toutes les


rservations effectues par une agence sous forme de liste.
Compltez le programme comme suit :
Le double-clic sur une ligne dans la liste de base doit appeler un dynpro ;
ce dynpro doit contenir des zones de saisies pour des donnes de
rservations spcifiques qui ne sont pas affiches sur la liste ; ce dynpro
doit galement contenir des zones ddition pour des donnes de
rservations qui sont dj affiches sur la liste ; quelle que soit laction
utilisateur effectue sur le dynpro, la liste de base doit se rafficher.
Programme :

ZBC400_##_DYNPRO

Solution modle :

SAPBC400UDS_DYNPRO_1

Modle :

SAPBC400UDT_DYNPRO_1

1-1

Copiez le modle SAPBC400UDT_DYNPRO_1 vers votre programme


ZBC400_##_DYNPRO. Affectez le programme la classe de dveloppement
ZBC400_## et l'ordre de modification pour votre projet "BC400" (remplaant
## par votre numro de groupe).

1-2

Familiarisez-vous avec le programme. Testez le programme en utilisant le numro


dagence 1## (## est votre numro de groupe).

1-3

La slection dune ligne de la liste de base (en double-cliquant ou en appuyant sur


F2) doit appeler un dynpro. Crez ce dynpro (numro de dynpro 100) en utilisant la
fonction Navigation forward.

1-4

Pour les attributs, affectez le numro de dynpro 0 comme numro du dynpro


suivant, de sorte que lutilisateur retourne la liste de base aprs nimporte quelle
action utilisateur sur le dynpro 100.

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

Les zones-cls de la table de rservation CARRID, CONNID, FLDATE, et


BOOKID doivent tre copies avec leurs labels.

Le nom client NAME doit se copier sans label et doit safficher ct du


numro client.

Les zones CUSTOMID CUSTTYPE, SMOKER, CLASS, LOCCURAM et


LOCCURKEY doivent tre copies avec leurs labels.

Grez les attributs de zone de dynpro :

les zones CARRID, CONNID, FLDATE, BOOKID et CUSTOMID doivent


safficher comme des zones ddition (attribut Zone ddition) ;

le nom client NAME doit safficher ct du numro client sans texte (attribut
dition uniquement) ;

les zones CUSTOMID CUSTTYPE, SMOKER, CLASS, LOCCURAM et


LOCCURKEY sont des zones de saisie/dition (attribut zone de saisie/zone
ddition).

BC400

9-33

Chapitre : Dynpro
Sujet : Transport de donnes

la fin de ces exercices, vous serez en mesure :


de complter les zones de dynpro avec des donnes du programme.

Compltez votre programme ZBC400_##_ DYNPRO :


un double-clic sur une ligne de la liste de base doit afficher les dtails de
la rservation slectionne au dynpro. Si lutilisateur modifie des donnes
au dynpro, ces modifications doivent alors tre disponibles dans le
programme ds que lutilisateur quitte le dynpro.

Programme :

ZBC400_##_DYNPRO

Solution modle :

SAPBC400UDS_DYNPRO_2

2-1

Compltez votre programme, ZBC400_##_DYNPRO, ou copiez la solution modle


adquate SAPBC400UDS_DYNPRO_1 et nommez-la ZBC400_##_DYNPRO_2.
Affectez votre programme la classe de dveloppement ZBC400_## et l'ordre
de transport pour ce projet, BC400 (en remplaant ## par votre numro de
groupe).

2-2

Utilisez une zone de travail comme interface entre le programme et le dynpro.


Puisque vous avez fait rfrence une structure du Dictionnaire pour les zones du
dynpro, vous devez utiliser linstruction TABLES.

2-3

Assurez-vous que les zones-cls de la table de base de donnes SBOOK et le nom


client sont toujours renseigns (HIDE: ...) dans lvnement AT LINESELECTION aprs slection dune ligne de la liste de base (double-cliquez ou
appuyez sur F2).

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

la fin de ces exercices, vous serez en mesure :


de crer des boutons de commande sur des dynpros ;
de traiter le code systme lanc lorsque lutilisateur clique sur un
bouton de commande et contrle le droulement du programme ;
de dfinir de manire dynamique le dynpro suivant.
Compltez votre programme ZBC400_##_ DYNPRO:
lutilisateur doit pouvoir choisir entre deux boutons de commande sur le
dynpro qui contrle le droulement du programme.

Programme :

ZBC400_##_DYNPRO

Solution modle :

SAPBC400UDS_DYNPRO_3

3-1

Compltez votre programme, ZBC400_##_DYNPRO, ou copiez la solution modle


adquate SAPBC400UDS_DYNPRO_2 et nommez-la ZBC400_##_DYNPRO_3.
Affectez votre programme la classe de dveloppement ZBC400_## et la tche
dj cre pour vous (en remplaant ## par votre numro de groupe).

3-2

Dfinissez deux boutons de commande sur le dynpro qui permettent lutilisateur


soit de retourner la liste de base (PUSH_BACK), soit de sauvegarder les
modifications dans les donnes (PUSH_SAVE) :

Nom du bouton de
commande
PUSH_BACK

Retour

RETOUR

PUSH_SAVE

Sauvegarder

SAUVEGARDER

Texte

Code de fonction

ou icne
ICON_SYSTEM_SAVE
3-3

Dsignez la zone OK_CODE du dynpro et dclarez un objet de donnes du mme


nom (et du type correspondant) dans le programme.
Naviguez dans la logique dexcution. Crez un module pour le traitement du code
de fonction (en utilisant Navigation forward) lors de PROCESS AFTER INPUT :

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

Assurez-vous quappuyer sur "Entre" provoque toujours laffichage du dynpro


100, indpendamment de lhistorique de navigation. cette fin, utilisez lune ou
lautre des deux mthodes pour initialiser OK_CODE.

BC400

9-37

Solutions

(C) SAP AG

BC400

9-38

Chapitre : Dynpro
Sujer : Cration de dynpros

Solution modle : Programme SAPBC400UDS_DYNPRO_1


*&--------------------------------------------------------------*
*& Report

SAPBC400UDS_DYNPRO_1

*&

*
*

*&--------------------------------------------------------------*

REPORT

sapbc400uds_dynpro_1.

CONSTANTS: actvt_display TYPE activ_auth VALUE '03',


actvt_change TYPE activ_auth VALUE '02'.

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

* Le programme continue aprs avoir slectionn une rservation sur


la
* liste de base.
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.
CALL SCREEN 100.
ELSE.
MESSAGE s047(bc400) WITH wa_sbook-carrid.
ENDIF.
ENDIF.

(C) SAP AG

BC400

9-40

Chapitre : Dynpro
Sujet : Transport de donnes

Solution modle : programme SAPBC400UDS_DYNPRO_2

*&--------------------------------------------------------------*
*& Report

SAPBC400UDS_DYNPRO_2

*&

*
*

*&--------------------------------------------------------------*

REPORT

sapbc400uds_dynpro_2.

CONSTANTS: actvt_display TYPE activ_auth VALUE '03',


actvt_change TYPE activ_auth VALUE '02'.

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.

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,
wa_sbook-fldate COLOR COL_KEY,
(C) SAP AG

BC400

9-41

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

= 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

Solution modle : Programme SAPBC400UDS_DYNPRO_3

*&--------------------------------------------------------------*
*& Report

SAPBC400UDS_DYNPRO_3

*&

*
*

*&--------------------------------------------------------------*

REPORT

sapbc400uds_dynpro_3.

CONSTANTS: actvt_display TYPE activ_auth VALUE '03',


actvt_change TYPE activ_auth VALUE '02'.

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

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

= 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

Interfaces : objectifs du chapitre

la fin de ce chapitre, vous serez en mesure :


l de crer un titre GUI
l de crer des statuts GUI pour listes et dynpros qui
contiennent :
l des barres de menus
l des barres d'outils standard
l des barres d'outils d'application
l des affectations de touches de fonction

SAP AG 1999

(C) SAP AG

BC400

10-2

Synthse : objets d'cran

Donnes de base du vol

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

Toutes les interfaces utilisateur comprennent les outils/objets suivants :

une barre de titre contenant le titre de l'cran, de l'cran de slection ou de la liste affiche ;

une barre de menus droulants ;

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

Exemple d'interface de programme

SAP R/3
Donnes de vol de base

Liste

Traiter Saut Systme Aide


!

Imprimer Ctrl+P
Sauv. dans fich. PC MAJ+F8
Sauvegarder
Terminer
MAJ+F3

! !

Modifier les heures devol

Dynpro
0100

Traiter Saut Systme Aide

Donnes de vol de base


Imprimer
Sauvegarder dans fichier PC
Sauvegarder
Ctrl+S
Terminer

! !

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 ;

l'cran doit avoir son propre titre.

(C) SAP AG

BC400

10-4

Principaux lments d'interface

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

Donnes de base du vol


Traiter

Barre de menus

Saut

Liste des fonctions


SAUVEGARDER

PRI

%PC

RW

%EX
CHOISIR

RETOUR
P+

P++

P--

P-

Liste
des
fonctions

SAP AG 1999

Toutes les interfaces utilisateur de programme comprennent les sous-objets suivants :

une barre de titre contenant le titre de l'cran, de l'cran de slection ou de la liste affiche ;

une barre de menus droulants ;

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

Statuts : vues de l'interface utilisateur

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

Liste des fonctions


inactive

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.

Nous allons maintenant dfinir le statut d'une liste.

(C) SAP AG

BC400

10-6

Cration d'un statut GUI pour une liste


START-OF-SELECTION.
SET PF-STATUS "LISTE" D.
oub
le-c
Cration d'un objet
lic
Statut GUI Le statut LISTE n'existe pas.
Voulez-vous crer cet objet ?
Oui

Cration d'un statut


Non
Annulr Cance
Programme
xxxxx
Statut

LISTE

Attributs de statut
Courte description
Type de statut

Statut pour liste des vols


Statut de dialogue
Bote de dialogue
Menu contextuel

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

Ajustement des statuts


Ajuster modle de statut
Inclure modle dans

Conception
oriente utilisateur

Statut

BASE

Modle de statut ...


Statut de liste
cran de slection
...

Liste de slection de ligne

Barres de menus
Liste

Traiter

Saut

B. d'outils d'applic.
Affectation de
touches de fonction

Liste de slection de ligne

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

Cration d'un statut : affectation des touches

Barres de menus

Barre de menus des donnes de base

B. d'outils d'applic.

Barre d'outils d'application des donnes de base


CHOISIR

Positions 1-7
Affectation de
touches de fonction

Affectation de touches des donnes de base

Barre d'outils standard


SAUVEGARDER

RETOUR

%EX

RW

PRI

%SC

P--

P-

Affectation recommande des touches de fonction


F2
F4
Maj-F8

PICK

Choisir

Affectation libre des touches de fonction


F5
F6
F7
F8
F9
Maj-F1
SAP AG 1999

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.

Les affectations de touches se rpartissent comme suit :

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 ;

affectation recommande des touches de fonction ;

affectation libre des touches de fonction.

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

Cration de statuts : barres de menus

Barres de menus

Barre de menus des donnes de vol

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.

Barre d'outils d'application des donnes de base

affectation de
touches de fonction

Affectation de touches des donnes de base

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

Exemple d'interface de programme

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

Liste des fonctions


SAUVERETOUR
GARDER

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

Une interface comporte les objets suivants :


n

fonctions ;

menus ;

barres de menus ;

affectation de touches de fonction ;

barre d'outils d'application ;

statut ;

titres.

(C) SAP AG

BC400

10-11

Cration des titres GUI d'un cran


MODULE status_0100 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR '100'.
'100'
Dou
ENDMODULE.
bl

e-c
lic
Cration d'un objet

Statut GUI Le titre 100 n'existe pas.


Voulez-vous crer cet objet ?
Oui

Non

Annuler

Cration d'un titre

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 :

la liste d'objets du Repository Browser ;

la navigation, dans l'diteur ABAP ;

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

Cration de statuts GUI d'un cran


MODULE status_0100 OUTPUT.
SET PF-STATUS "CRAN"
'SCREEN'.
Dou
ble
SET TITLEBAR '100'.
-cli
c
ENDMODULE.
Cration d'un objet

Statut GUI Le statut CRAN n'existe pas.


Voulez-vous crer cet objet ?
Oui

Cration d'un statut


Non
Annulr Cance
Programme
xxxxx
Statut

CRAN

Attributs de
statut
Dsignation
Type de statut

Statut pour liste des vols


Statut de dialogue
Bote de dialogue
Menu contextuel

SAP AG 1999

Pour la cration d'un statut d'cran :

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 ;

utilisez la navigation pour crer le statut ;

choisissez le type de statut "Dialogue" ;

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

Insertion d'lments existants

Barres de menus

CRAN

Barre d'outils
d'application
Affectation de
touches de
fonction

CRAN
CRAN

Liste des fonctions


Affiche des objets
existants et vous
permet de les
slectionner
pour les insrer

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

Interfaces : rsum du chapitre

Vous tes maintenant capable :


l de crer un titre GUI
l de crer des statuts GUI pour listes et crans qui
contiennent :
l des barres de menus
l des barres d'outils standard
l des barres d'outils d'application
l des affectations de touches de fonction

SAP AG 1999

(C) SAP AG

BC400

10-15

Exercices

(C) SAP AG

BC400

10-16

(C) SAP AG

BC400

10-17

Chapitre : Interfaces

la fin de ces exercices, vous serez en mesure :


de crer les interfaces utilisateur dun programme ;
dinclure un statut et un titre GUI dans un programme.

Compltez votre programme ZBC400_##_ SCREEN.


Le systme affiche dans la barre de titre les textes appartenant la liste et
lcran. Vous devez spcifier le statut correct pour la liste et lcran.

Programme :

ZBC400_##_DYNPRO

Solution modle :

SAPBC400UDS_DYNPRO_4

1-1

Compltez votre programme, ZBC400_##_DYNPRO, ou copiez la solution modle


adquate SAPBC400UDS_DYNPRO_3 et nommez-la ZBC400_##_DYNPRO_4.
Affectez votre programme la classe de dveloppement ZBC400_## et l'ordre
de transport pour ce projet, BC400 (en remplaant ## par votre numro de
groupe).

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

Affectez un statut (type : statut de dialogue) lcran. Dans lvnement PROCESS


BEFORE OUTPUT, appelez un module qui comprenne linstruction ABAP
approprie.

(C) SAP AG

BC400

10-18

Ne crez pas de nouvelles affectations de touches de fonction, barre de boutons ou


barre de menus. Au contraire, renvoyez-les aux objets que vous avez crs dans le
dernier exercice (1-2).
Activez les codes de fonction SAUVEGARDER et RETOUR. Sauvegardez linterface.
1-4

(C) SAP AG

Affectez un titre GUI la liste de base et lcran ( laide de la navigation) et


gnrez linterface.

BC400

10-19

Solutions

(C) SAP AG

BC400

10-20

(C) SAP AG

BC400

10-21

Chapitre : Interfaces

1-2

Dans le texte du programme source, ajoutez linstruction SET


lvnement START-OF-SELECTION.

PF-STATUS 'LISTE'

(Note : le texte situ entre les deux apostrophes doit apparatre en majuscules).

Dans la ligne SET


LISTE.

PF-STATUS 'LISTE'

du programme, double-cliquez sur le nom du statut

Le systme affiche une bote de dialogue contenant les mots "Le statut
interface GUI LISTE nexiste pas". Voulez-vous le crer ?
Slectionnez

pour confirmer.

Introduisez une courte description.


Slectionnez le type de statut Statut de dialogue.

Slectionnez : Autres fonctions Ajuster modle Statut de liste

Adaptez le nom de la barre de menus et des affectations de touches de fonction


vos propres besoins.

Double-cliquez sur la barre de menus. Slectionnez le mode Modification. Modifiez le


pour fermer la bote de
nom de la liste de menus par critures. Slectionnez
dialogue.

Double-cliquez sur laffectation de la touche de fonction. Introduisez le code de


fonction SAUVEGARDER de la barre doutils standard ct de licne

Pour rendre la fonction accessible dans le menu critures :

double-cliquez sur critures ;

crez une nouvelle ligne dans le menu ;

introduisez le code SAUVEGARDER ;

confirmez vos entres ;

slectionnez

Placez le curseur sur le code de fonction SAUVEGARDER et dsactivez la fonction


en utilisant

pour fermer la bote de dialogue.

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

Utilisez la navigation pour crer ce module. Double-cliquez sur le nom du


module ; choisissez Oui pour confirmer les options de la bote de dialogue.
Dans la bote de dialogue suivante, choisissez Programme principal et ajoutez
le texte source suivant :
*&----------------------------------------*
*&

Module

SET_STATUS_0100

OUTPUT

*&----------------------------------------*

MODULE set_status_0100 OUTPUT.


SET PF-STATUS 'DYNPRO'.
ENDMODULE.

(C) SAP AG

Utilisez la navigation pour crer le statut. Double-cliquez sur 'DYNPRO' dans


linstruction SET PF-STATUS 'DYNPRO'.

Choisissez Oui pour confirmer les options dans la bote de dialogue.

Dans la bote de dialogue suivante, introduisez une courte description et


choisissez Statut de dialogue.

Placez le curseur sur la barre de menus et choisissez licne


rfrence la barre de menus existante par un double-clic.

Placez le curseur sur la touche de fonction et choisissez licne . Crez la


rfrence de laffectation de la touche de fonction existante par un double-clic.

Activez les deux fonctions SAUVEGARDER et RETOUR en plaant le curseur


sur le code de fonction du menu ou de laffectation de touche de fonction et
choisissez
.

Sauvegardez vos entres et activez le statut.

Activez lcran.

BC400

. Crez la

10-23

1-4

Compltez le texte source du programme dans


START-OF-SELECTION.:
SET PF-STATUS 'LIST'.
SET TITLEBAR 'LIST'.
Utilisez la navigation pour crer le titre et saisissez le texte dans la bote de dialogue
qui apparat.
Compltez le texte source du module SET_STATUS_0100 :
*&------------------------------------------*
*&

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.

Texte source du programme SAPBC400UDS_DYNPRO_4


*&--------------------------------------------------------------*
*& Report

SAPBC400UDS_DYNPRO_4

*&

*
*

*&--------------------------------------------------------------*

REPORT

sapbc400uds_dynpro_3.

CONSTANTS: actvt_display TYPE activ_auth VALUE '03',


actvt_change TYPE activ_auth VALUE '02'.

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.

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

Rutilisation des composantes

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

Rutilisation des composantes : objectifs du chapitre

la fin de ce chapitre, vous serez en mesure :


l de trouver et utiliser des modules de fonction
l d'afficher une liste simple en utilisant ALV Grid
Controls (objets des classes globales du
Gnrateur de classes)
l d'utiliser un BAPI et trouver des BAPI en utilisant
le BAPI Browser
l d'utiliser une base de donnes logique pour crer
une liste hirarchique d'informations de vol

SAP AG 1999

(C) SAP AG

BC400

11-2

Techniques d'encapsulation de la logique applicative

Rutiliser les composantes


encapsules
dans la logique
applicative

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 de fonctions et modules de fonction

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

Groupes de fonctions et modules de fonction

la fin de ce cours, vous serez en mesure :


l de dcrire les diffrentes manires de trouver un
module de fonction
l de dcouvrir des informations importantes sur un
module de fonction en utilisant le Gnrateur de
modules de fonction
l d'crire un programme comportant un dialogue
utilisateur standard form dans un module de
fonction

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

Un groupe de fonctions est un programme ABAP de type F, c'est--dire cr exclusivement afin de


contenir des modules de fonction. Les modules de fonction sont des units modulaires dotes
d'interfaces ; ils peuvent tre appels depuis tout programme ABAP. Ceux qui agissent sur les
mmes objets sont organiss en groupes de fonctions.

Chaque groupe de fonctions peut contenir :


des objets de donnes, visibles et modifiables par tous les modules de fonction du groupe. Ces
objets de donnes restent actifs aussi longtemps que le groupe de fonctions reste actif ;
des sous-programmes, qui peuvent tre appels depuis tout module de fonction du groupe ;
des dynpros, qui peuvent tre appels depuis tout module de fonction du groupe.

(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

Groupe de fonctions : flux de donnes

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

Exemple : la bote de dialogue Annuler


<Titre spcifique au contexte>

"Les donnes seront perdues."


<Titre spcifique au contexte>

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

Cette bote de dialogue est encapsule dans le module de fonction.

(C) SAP AG

BC400

11-9

Exigence : module de fonction pour dialogue standard

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

Recherche du module de fonction


diteur
Rechercher
l'instruction
CALL FUNCTION
Dmarrer en
mode dbogage
Insrer un point
d'arrt dans
l'instruction
CALL FUNCTION
ou CALL SCREEN
Sur l'cran
sur lequel l'utilisateur
choisit "Annuler"
Examine logique
d'excution
dans l'vnement
Process After
Input

Sur un cran appel par le


module de fonction

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

Vous savez qu'un certain programme


utilise le module de fonction

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

Interface de module de fonction

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.

En cas d'erreur, le systme identifie l'exception dclenche.

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.

Vous pouvez crer des squences de tests.

(C) SAP AG

BC400

11-13

Syntaxe : appel du module de fonction

PAI

ligne de texte
titre

rponse

MODULE user_command_0100 input.


save_ok_code = ok_code.
clear ok_code.
CASE save_ok_code.
WHEN 'CANCEL'.
CALL FUNCTION
'POPUP_TO_CONFIRM_LOSS_OF_DATA'
EXPORTING
textline = gd_textline
title
= gd_title
IMPORTING
answer = gd_answer.
case answer.
WHEN
WHEN
...
ENDCASE.
Programme ABAP

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

Insertion d'appel de module de fonction dans un programme

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.

Le systme gnre alors l'instruction ABAP CALL FUNCTION '<nom module de


fonction>', qui comprend l'interface du module de fonction, et l'insre dans le programme
l'emplacement du curseur.

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

Objets et mthodes : objectifs du cours

la fin de ce cours, vous serez en mesure :


l de trouver des informations importantes sur les
classes et leurs mthodes en utilisant le
Gnrateur de classes
l d'crire un programme qui affiche une liste simple
en utilisant ALV Grid Control, et qui contient :
l des variables de rfrence
l l'instruction CREATE OBJECT
l l'appel des mthodes
l un domaine container sur un dynpro

SAP AG 1999

(C) SAP AG

BC400

11-17

Avantages de la programmation oriente objets

l Processus de dveloppement de logiciel intgr


n

Communication facilite entre utilisateurs et dveloppeurs

l Encapsulation
n

Des programmes plus clairs et plus faciles grer

l Polymorphisme
l Hritage

SAP AG 1999

Processus de dveloppement de logiciel intgr : chaque phase du processus de dveloppement


(analyse, spcification, conception et implmentation) est dcrite dans le mme "langage". D'une
manire idale, les modifications apportes la conception pendant l'implmentation s'appliquent
rtrospectivement au modle de donnes.

Encapsulation (masquage d'informations) : capacit de masquer l'implmentation d'un objet


partir d'autres composantes du systme. Les composantes ne peuvent dfinir des hypothses sur le
statut interne d'un objet, et ne dpendent pas de l'utilisation d'une implmentation particulire pour
communiquer avec l'objet.

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

Ralit / fonctions / objets

Modle
Ralit

Maison

Arbre
Mthode

Mthode

Donnes Mthode

Donnes Mthode

Mthode

Mthode

Grue
Mthode

Donnes Mthode
Mthode

Bateau
Mthode

Donnes Mthode
Mthode

l Les objets sont des abstractions de la ralit


l Chaque objet forme une unit contenant aussi
bien des donnes que ses fonctions associes

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

Objets ABAP : objet d'exemple "Vol"


bookid, rservation effectue,
pas de sige libre

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

titre d'exemple, considrez l'objet "vol".

L'objet contient des attributs privs propres aux vols :


attributs-cls : la combinaison Compagnie arienne, vol et date de dpart fournissent un
identificateur unique pour chaque vol. Chaque numro de vol contient galement : l'aroport de
dpart, l'heure de dpart et l'aroport de destination ;
liste des rservations : la liste des personnes qui ont rserv sur le vol et leurs numros de
rservation ;
informations sur le vol, telles que le type d'avion et le nombre maximum de siges.

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

L'objet contient une interface deux mthodes :


la mthode "Rserver" : si cette mthode est appele de l'extrieur de l'objet et qu'elle a transfr
les donnes ncessaires l'interface, elle utilise les attributs privs pour dterminer s'il reste des
siges vides ou non sur le vol. Si c'est le cas, le nouveau client s'ajoute liste des rservations et
un message de confirmation est transmis au programme appelant. Sinon, le systme renvoie
l'information que la rservation ne peut s'effectuer car le vol est dj complet.
la mthode "Annuler": si cette mthode est appele de l'extrieur de l'objet et qu'elle a transfr les
donnes ncessaires l'interface, elle utilise les attributs privs pour dterminer si le client est
inclus ou non sur la liste des rservations. Dans ce cas, sa rservation est annule et un message de
confirmation retourne au programme appelant. Si le client n'apparat pas sur la liste des
rservations, le systme affiche un message d'erreur.

(C) SAP AG

BC400

11-20

Scnario d'exemple : nouvelle rservation d'un vol

N'annulez le premier vol que si la nouvelle rservation s'effectue correctement.


=> Deux instances requises, une pour chaque vol

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

Les objets sont des instances d'une classe

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

Droulement du programme dans un programme ABAP


ref1 ref2
AA
Vol
0016
28.08.1999

CREATE OBJECT ref1


EXPORTING ...

LH
0400 Vol
28.08.1999

CREATE OBJECT ref2


EXPORTING ...
CALL METHOD ref2->book
EXPORTING ...
IMPORTING
bookid = gd_bookid
overbooked = flag
EXCEPTIONS ...
...
IF NOT gd_bookid IS INITIAL.
CALL METHOD ref1->cancel
EXPORTING ...
IMPORTING ...
EXCEPTIONS ...
...
ENDIF.

Programme ABAP

SAP AG 1999

Un programme ABAP qui modifie les rservations par des objets possde le droulement de
programme suivant :

Le programme dmarre et le contexte du programme se charge. Les zones de mmoire deviennent


disponibles pour tous les objets de donnes globales du programme. Des variables de rfrence
deviennent galement accessibles pour chaque objet. Lorsque vous dmarrez le programme, vous
pouvez voir le rsum des objets de donnes devenus disponibles en dveloppant les sous-arbres
Zones et Structures du dictionnaire de la liste d'objets du programme. Vous pouvez galement
naviguer dans le texte source o les objets de donnes ont t dfinis en utilisant, par exemple, une
instruction DATA ou TABLES. Les variables de rfrence sont dfinies par une instruction DATA:
<ref> TYPE REF TO <classe>.

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

Domaines fonctionnels des objets ABAP

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 ;

Les projets pilotes sont dj orients objet.

(C) SAP AG

BC400

11-24

Controls : lments techniques I

ALV Grid Control : qu'est-ce qu'un control?


l Composantes logicielles binaires indpendantes
l installes localement sur le frontend et qui utilisent
SAPGUI
l Elles dplacent les fonctions du serveur d'application
vers le frontend
l Elles ont une classe d'objets ddie dans ABAP OO
l Elles sont conues pour tre rutilisables

SAP AG 1999

Le Central Control Framework excute cette tche

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

Exemple : ALV Grid Control


Dtails

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

Programme utilisant ALV Grid Control

Process
Before
Output

Domaine
cran 100

Process
After
Input

START-OFSELECTION.:

Custom
Container
Control

ALV Grid 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

Objets et classes pour ALV Grid Control

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

vnements Int. Types

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.

CL_GUI_CUSTOM_CONTAINER contient seulement la mthode CONSTRUCTOR. Lorsque vous


crez un objet dans un programme en utilisant CREATE OBJECT, vous devez transfrer le
paramtre non optionnel CONTAINER_NAME. Le nom du domaine du conteneur l'cran doit tre
transmis ce paramtre.

(C) SAP AG

BC400

11-29

CL_GUI_ALV_GRID
CL_GUI_ALV_GRID
Superclasses
Interfaces
Attributs
Mthodes
...
Constructeur

Paramtres non facultatifs


I_PARENT TYPE REF TO
CL_GUI_CONTAINER

...
REFRESH_TABLE_DISPLAY
...
SET_TABLE_FOR_FIRST_DISPLAY
...
Redfinition
vnements

Paramtres non facultatifs


IT_OUTTAB TYPE
TABLE STANDARD
Vous devez transmettre le type
de ligne de la table interne, p. ex.
type de structure du dictionnaire
to I_STRUCTURE_NAME

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 :

CONSTRUCTOR: la variable de rfrence indiquant l'objet (avec lequel le control du conteneur


communique) doit tre transfre au constructeur ;

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 ;

REFRESH_TABLE_DISPLAY peut tre appel si la table interne a dj t affiche en utilisant Grid


Control, et si le contenu de cette table diffre de celui indiqu l'cran. Dans ce cas, le frontend
connat dj le type de ligne de la table interne et les zones de rfrence.

(C) SAP AG

BC400

11-30

Cration d'un lment d'cran de Custom Control


Screen Painter : Layout
Barre d'outils

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

Utilisez Redimentionnement vertical et Redimensionnement horizontal pour spcifier si la zone du


custom control doit tre redimensionne ou non lorsque l'cran principal est redimensionn. Vous
pouvez galement paramtrer des valeurs minimales ces attributs en utilisant Ligne Min. et
Colonne min.. Vous dterminez la taille maximale de la zone sa cration.

(C) SAP AG

BC400

11-31

Exemple de syntaxe : dfinition de variables de rfrence

DATA: gdt_spfli TYPE sbc400_t_spfli.

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

DATA: ok_code TYPE sy-ucomm.


ok_code

START-OF-SELECTION.
perform fill_itab USING gdt_spfli.
CALL SCREEN 100.

SAP AG 1999

Le programme requiert deux variables de rfrence :

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

Exemple de syntaxe : CREATE OBJECT

MODULE create_control OUTPUT.


IF container_r IS INITIAL.
CREATE
CREATEOBJECT
OBJECTcontainer_r
container_r
EXPORTING
EXPORTINGcontainer_name
container_name=='CONTAINER_1'.
'CONTAINER_1'.
container_r
CREATE OBJECT
OBJECT grid_r
grid_r
CREATE
EXPORTING
i_parent
container_r.
EXPORTING i_parent = =container_ref.
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

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

Exemple de syntaxe : appel des mthodes

MODULE create_control OUTPUT.


If container_r IS INITIAL.
CREATE OBJECT container_r
EXPORTING container_name = 'CONTAINER_1'.
container_r
CREATE OBJECT grid_r
EXPORTING i_parent = container_ref.

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

Objets de gestion et BAPI

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

Objets de gestion et BAPI : objectifs du cours

la fin de ce cours, vous serez en mesure :


l de trouver des informations importantes sur les
objets de gestion et leur BAPI en utilisant le BAPI
Explorer et le Gnrateur d'objets

SAP AG 1999

(C) SAP AG

BC400

11-36

BAPI

l Business Application Programming Interface

l Un BAPI est une interface dfinie contenant les


traitements et les donnes d'un systme applicatif,
implment comme les mthodes d'un objet du
Business Object Repository (BOR).
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.

Les BAPI peuvent avoir les fonctions suivantes :


- cration d'un objet ;
- recherche des attributs d'un objet ;
- modification des attributs d'un objet.

(C) SAP AG

BC400

11-37

O s'utilisent les BAPI ?

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

Exemple d'un objet de gestion FlightBooking

Mthodes :
FlightBooking.GetList
FlightBooking.GetDetail
FlightBooking.CreateFromData
FlightBooking.Cancel
Compagnie arienne
Numro de correspondance
Date du vol
Numro de rservation

SAP AG 1999

Un exemple d'objet de gestion du modle du cours s'appelle FlightBooking. Il contient une


rservation. Chaque rservation s'identifie uniquement par ses informations-cls : Compagnie
arienne, Numro de correspondance (numro de vol), Date du vol, Numro de
rservation. Vous avez les mthodes suivantes pour cet objet :
FlightBooking.GetDetail renvoie les informations dtailles de la rservation ;
FlightBooking.CreateFromData cre une rservation ;
FlightBooking.Cancel ;
FlightBooking.GetList renvoie une liste comportant les dtails de toutes les rservations
de ce vol. Elle affiche gnralement plus de dtails pour chaque rservation que GetDetail.

(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

BAPI Explorer - lgende

Type d'objet de gestion


Type d'interface
Attribut-cl
Mthode spcifique de l'instance
Mthode non spcifique de l'instance
Paramtres d'import
Paramtres d'export
Paramtres de modification

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

Objets de gestion dans le BAPI Explorer

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

BAPI dans le BAPI Explorer

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

Renvoie le contenu des zones-cls pour l'objet choisi

l GetDetail
n

Renvoie les informations dtailles (attributs) pour l'objet


demand

l CreateFromData
n

Cre un nouvel objet dans R/3 et renvoie les informations le


concernant

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

Implmentation des BAPI comme modules de fonction

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

Module de fonction BAPI_SBOOK_GETDETAIL

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

Appel d'un BAPI depuis un programme ABAP


Programme ABAP
PROGRAM ...

R/3

TABLES ...
DATA
...

Business Object
Repository

MODULE init OUTPUT.


CALL FUNCTION 'BAPI_...' ...
ENDMODULE.
MODULE read_data INPUT.
CALL FUNCTION 'BAPI_...' ...
ENDMODULE.
MODULE confirm_reservation.
CALL FUNCTION 'BAPI_...'...
'BAPI_...' ...
IF ... .
CALL
CALLFUNCTION
FUNCTION'BAPI_...'
'BAPI_...'...
...
ENDIF.
ENDMODULE.

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

BAPI : gestion des exceptions


l Aucune exception
l Les erreurs sont gres par des paramtres d'export
(structures ou tables)
n

Nom du paramtre : RETURN

Structure du Dictionnaire ABAP (selon la version) :


BAPIRETURN, BAPIRETURN1,
BAPIRET1, BAPIRET2, BAPIRET2_FIX

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

Bases de donnes logiques

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

Bases de donnes logiques : objectifs du cours

la fin de ce cours, vous serez en mesure :


l de dcrire le comportement au moment de
l'excution d'un programme excutable qui utilise
une base de donnes logique simple, comprenant
les effets sur :
l la structure de la base de donnes logique
l l'instruction NODES
l les blocs de traitement vnements GET

SAP AG 1999

(C) SAP AG

BC400

11-50

Lecture de donnes logiquement dpendantes

Exemple : base de donnes logique


F1S
SPFLI

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

Les bases de donnes logiques

l sont des programmes spciaux d'acquisition de donnes


livrs par SAP
l prsentent les donnes lues au programme utilisateur dans
un ordre hirarchique logique
l accdent aux bases de donnes de manire optimise
l proposent un cran de slection dynamique
l contrlent les autorisations

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.

Ces accs ont t optimiss l'aide d'Open SQL.

Lorsque vous travaillez avec une base de donnes logique, vous ne devez pas programmer d'cran de
slection car celui-ci est gnr automatiquement.

Le systme contrle les autorisations conformment au concept d'autorisation de SAP.

(C) SAP AG

BC400

11-52

Contrle d'une BD logique depuis un programme

Donnes de
la BD logique

Programme
NODES sflight.
SPFLI
GET sflight ...

SFLIGHT

SBOOK

SAP AG 1999

L'instruction NODES <noeud> excute deux fonctions :


n

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

vnements et bases de donnes logiques

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

Exemple : squencement des vnements

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

GET SPFLI LATE


GET SPFLI

DL 1984

GET SFLIGHT

25.08.1998

GET SFLIGHT

27.09.1998

GET SFLIGHT

29.09.1998

GET SPFLI LATE

GET spfli LATE.


WRITE :/ 'GET SPFLI LATE'.

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 spfli : le premier enregistrement de la table SPFLI correspondant aux critres de


slection est plac dans l'espace de travail spfli, puis l'vnement est trait ;

GET sflight : le premier enregistrement de SFLIGHT correspondant aux critres de


slection et la cl de l'enregistrement SPFLI en cours est plac dans l'espace de travail
sflight, puis l'vnement est trait ;

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 ;

...

END-OF-SELECTION est appel immdiatement avant l'envoi de la liste.

(C) SAP AG

BC400

11-55

Rsum

NODES: spfli, sflight.


ABAP : attributs de programme
START-OF-SELECTION.
WRITE: / 'START-OF-SELECTION'
color 3.

Attributs
Type

Application

Log. Datenbank

F1S

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.

SPFLI
SFLIGHT
SBOOK

GET spfli LATE.


WRITE :/ 'GET SPFLI LATE'.
END-OF-SELECTION.
WRITE: 'END-OF-SELECTION'
color 3.

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

Rutilisation des composantes

Vous tes maintenant capable :


l de trouver et utiliser des modules de fonction
l d'afficher une liste simple en utilisant ALV grid
control (objets des classes globales du
Gnrateur de classes)
l d'utiliser un BAPI et trouver des BAPI en utilisant
le BAPI Browser
l d'utiliser une base de donnes logique pour crer
une liste hirarchique d'informations de vol

SAP AG 1999

(C) SAP AG

BC400

11-57

Exercices

(C) SAP AG

BC400

11-58

(C) SAP AG

BC400

11-59

Chapitre : Rutilisation des composantes


Sujet : Modules de fonction

la fin de ces exercices, vous serez en mesure :

de rechercher un module de fonction ;

dinsrer un appel de module de fonction dans un programme.

Compltez votre programme ZBC400_##_SELECT_SFLIGHT ou la


solution modle correspondante comme suit :
si la fonction Annuler est slectionne lcran, le systme doit traiter
une bote de dialogue standard lintrieur du module de fonction.

Programme :

ZBC400_##_DYNPRO

Solution modle :

SAPBC400UDS_DYNPRO_5

1-1

Compltez votre programme, ZBC400_##_DYNPRO, ou copiez la solution modle


adquate SAPBC400UDS_DYNPRO_1 et nommez-la ZBC400_##_DYNPRO_2.
Afffectez votre programme la classe de dveloppement ZBC400_## et l'ordre
de transport pour ce projet, BC400 (en remplaant ## par votre numro de
groupe).

1-2

Utilisez la mthode explique dans ce cours pour rechercher le module de fonction


de la bote de dialogue standard qui est gnralement lanc lorsque lutilisateur
choisit Annuler.

1-3

Informez-vous sur les interfaces du module de fonction, lisez la documentation, et


utilisez lenvironnement de test pour tester le module de fonction.

1-4

Dans le statut GUI de lcran, activez la fonction "Annuler".

1-5

Compltez le module USER_COMMAND_0100 pour tester le code de fonction de la


fonction Annuler. Insrez ensuite lappel de module de fonction en utilisant la
fonction "modle" de lditeur ABAP. Faites en sorte que le systme ragisse la
saisie utilisateur comme suit :

si lutilisateur souhaite annuler, mettez dynamiquement 0 l'cran suivant ;

si lutilisateur ne souhaite pas annuler, mettez dynamiquement 100 l'cran suivant.

(C) SAP AG

BC400

11-60

Chapitre : Rutilisation des composantes


Sujet : Objets ABAP et ALV Grid Control

la fin de ces exercices, vous serez en mesure :

dditez une liste simple en utilisant ALV Grid Control.

crivez un programme qui dite le contenu dune table de base de


donnes SPFLI en utilisant ALV Grid Control.

Programme :

ZBC400_##_ALV_GRID

Solution modle :

SAPBC400RUS_ALV_GRID

2-1

Copiez le programme, SAPBC400RUT_ALV_GRID en le nommant


ZBC400_##_ALV_GRID. Affectez votre programme la classe de
dveloppement ZBC400_## et l'ordre de modification pour votre projet
"BC400" (en remplaant ## par votre numro de groupe). Le modle de
programme contient la dfinition dune table interne du mme type de ligne que la
table de base de donnes SPFLI et un dialogue utilisateur (cran 100).

2-2

Testez le programme.

2-3

Remplissez la table interne avec des enregistrements de la table de donnes SPFLI


en utilisant un array-fetch.

2-4

Naviguez dans le Gnrateur de classes et dcouvrez :


2-4-1
Pour la classe : CL_GUI_CUSTOM_CONTAINER, quels paramtres de
la mthode CONSTRUCTOR sont obligatoires ?
2-4-2
Pour la classe : CL_GUI_ALV_GRID, quels paramtres de la mthode
CONSTRUCTOR sont obligatoires ?

2-5

Crez un domaine de container control lcran. Donnez un nom ce domaine.

2-6

Dfinissez deux variables de rfrence, lune pour la classe


CL_GUI_CUSTOM_CONTAINER et lautre pour la classe CL_GUI_ALV_GRID.

(C) SAP AG

BC400

11-61

2-7

Transmettez la variable de rfrence du custom container dans le paramtre


obligatoire. Assurez-vous que l'objet soit gnr seulement si PROCESS BEFORE
OUTPUT sexcute pour la premire fois.

2-8

la premire excution de PROCESS BEFORE OUTPUT, appelez la mthode


SET_TABLE_FOR_FIRST_DISPLAY ; transfrez le nom du type de ligne de la
table interne dans le paramtre I_STRUCTURE_NAME ; transportez la table interne
dans le paramtre IT_OUTTAB

2-9

Si PBO sexcute plus dune fois, vous devez appeler la mthode


REFRESH_TABLE_DISPLAY. Transmettez 'X' en paramtre
I_SOFT_REFRESH. Lors du PROCESS BEFORE OUTPUT du dynpro 100,
appelez un module pour gnrer les objets. Crez une instance du custom container
en utilisant l'instruction CREATE OBJECT. Transmettez le nom du domaine
conteneur (du dynpro 100) au paramtre obligatoire de la mthode CONSTRUCTOR.
Crez une instance de ALV.

(C) SAP AG

BC400

11-62

Solutions

(C) SAP AG

BC400

11-63

(C) SAP AG

BC400

11-64

Chapitre : Rutilisation des composantes


Sujet : Modules de fonction

1-2

Le module de fonction sappelle POPUP_TO_CONFIRM_LOSS_OF_DATA.

1-3

Les paramtres dinterface suivants existent :


Paramtres dimport obligatoires :
TEXTLINE1
(max 70 car.) : premire ligne de la fentre de dialogue
TITLE
(max. 35 car.) : titre de la fentre de dialogue
Paramtres dimport facultatifs :
TEXTLINE2
(max. 70 car.) : premire ligne de la fentre de dialogue
START_COLUMN (Typ SY-CUCOL)
: premire colonne de la fentre de
dialogue
START_ROW
(Typ SY-CUCOL) : premire ligne de la bote de dialogue
Paramtres dexport :
ANSWER
(Type C)
: saisie de lutilisateur
Y = utilisateur a confirm ltape de traitement
N = utilisateur a annul ltape de traitement

1-4

Le code de fonction de la fonction Annuler est RW.

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

Chapitre : Rutilisation des composantes


Sujet : Objets ABAP et ALV Grid Control

Programme :

ZBC400_##_ALV_GRID

Solution modle :

2-3

START-OF-SELECTION.

* fill internal table


SELECT * FROM spfli
INTO TABLE gdt_spfli.
*

WHERE ...
CALL SCREEN 100.

2-4-1 Le paramtre suivant de la mthode CONSTRUCTOR (pour la classe :


CL_GUI_CUSTOM_CONTAINER)est obligatoire.
CONTAINER_NAME : le nom du conteneur de contrle lcran
2-4-2 Le paramtre suivant de la mthode CONSTRUCTOR (pour la classe :
CL_GUI_CUSTOM_CONTAINER)est obligatoire :
I_PARENT:
conteneur-parent : le nom de la variable de rfrence qui indique lobjet
de la classe CL_GUI_CUSTOM_CONTAINER doit tre transmis ce
paramtre.
2-5

Crez un domaine de contrle conteneur lcran. Appelez le domaine de


conteneur CONTAINER_1

2-6

Introduisez les instructions suivantes dans la section de dclarations de


donnes :
DATA:
container_r TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
grid_r TYPE REF TO CL_GUI_ALV_GRID.

2-7 2-9 :
Logique d'excution :
(C) SAP AG

BC400

11-67

PROCESS BEFORE OUTPUT.


MODULE STATUS_0100.
module create_control.
*
PROCESS AFTER INPUT.
module copy_ok_code.
MODULE USER_COMMAND_0100.

Module PBO dans le programme :


*&---------------------------------------------------------------------*
*&

Module

CREATE_CONTROL

OUTPUT

*&---------------------------------------------------------------------*

MODULE create_control OUTPUT.


IF container_r IS INITIAL.
CREATE OBJECT container_r
EXPORTING container_name = 'CONTAINER_1'.

CREATE OBJECT grid_r


EXPORTING

CALL METHOD

i_parent =

container_r.

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.

(C) SAP AG

" CREATE_CONTROL

BC400

OUTPUT

11-68

Dialogues base de donnes II

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

Dialogues base de donnes II : objectifs du chapitre

la fin de ce chapitre, vous serez en mesure :


l d'expliquer pourquoi vous devez effectuer les
modifications de BD dans une seule unit logique
de travail (Logical Unit of Work) de base de
donnes
l de dcrire le concept de blocage SAP

SAP AG 1999

(C) SAP AG

BC400

12-2

Architecture client/serveur de R/3

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

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

LUW BD : unit logique de travail Base de donnes

Stade de modification de donnes


insert, update, delete

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.

Le systme excute une LUW BD soit intgralement, soit pas du tout.

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

Regroupement des modifications d'une base de


donnes dans une LUW SAP

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.

Gnralement, une LUW SAP contient plusieurs 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

Les commits implicites se dclenchent :


- la fin d'une tape de dialogue ;
- en cas de dialogue d'erreur ;
- en cas d'appel d'un module de fonction dans un autre processus de travail (remote function call,
RFC).

(C) SAP AG

BC400

12-7

Concept de blocage SAP

Blocage a russi
Demande de blocage

Dure
Dure

Table des blocages

Objet bloqu

SAP AG 1999

(C) SAP AG

BC400

12-8

Concept de blocage SAP

Blocage a russi
Demande de blocage

Table des blocages

Demande de blocage
Blocage a chou

Dure
Dure

Objet bloqu

SAP AG 1999

(C) SAP AG

BC400

12-9

Concept de blocage SAP

Blocage a russi
Demande de blocage

Leve du blocage

Table des blocages

Demande de blocage
Blocage a chou

Dure
Dure

Objet bloqu

SAP AG 1999

(C) SAP AG

BC400

12-10

Concept de blocage SAP

Blocage a russi
Demande de blocage

Leve du blocage

Table des blocages


Blocage a russi

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

Programme d'exemple : blocage et dblocage


REPORT SAPBC400TCD_ENQUEUE_DEQUEUE.
...
AT LINE-SELECTION.
PERFORM authorization_check USING wa_spfli-carrid '02'
CHANGING subrc.
IF subrc <> 0. MESSAGE e047(BC400) WITH wa_spfli-carrid. ENDIF.
CALL FUNCTION 'ENQUEUE_ESSPFLI'
EXPORTING carrid = wa_spfli-carrid
connid = wa_spfli-connid
EXCEPTIONS
foreign_lock
= 1
system_failure = 2
others
= 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SELECT SINGLE * FROM spfli INTO wa_spfli
WHERE carrid = wa_spfli-carrid
AND connid = wa_spfli-connid.
MOVE-CORRESPONDING wa_spfli TO sdyn_conn.
CALL SCREEN 100.
CALL FUNCTION 'DEQUEUE_ ESSPFLI' ...
SAP AG 1999

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

Programme d'exemple : mises jour de la base de donnes


REPORT SAPBC400TCD_ENQUEUE_DEQUEUE.
...
MODULE user_command_0100 INPUT.
CASE ok_code.
...
WHEN 'SAVE'.
MOVE-CORRESPONDING sdyn_conn TO wa_spfli.
CALL FUNCTION 'BC400_UPDATE_FLTIME'
EXPORTING
iv_carrid
= wa_spfli-carrid
iv_connid
= wa_spfli-connid
iv_fltime
= wa_spfli-fltime
iv_deptime
= wa_spfli-deptime
EXCEPTIONS
OTHERS
= 1.
IF sy-subrc NE 0.
MESSAGE a149.
ELSE.
MESSAGE s148.
LEAVE TO SCREEN 0.
ENDIF.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0100 INPUT
SAP AG 1999

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

Dialogues base de donnes II : rsum du chapitre

Vous tes maintenant capable :


l d'expliquer pourquoi vous devez effectuer les
modifications de BD dans une seule unit logique
de travail (Logical Unit of Work) de base de
donnes
l de dcrire le concept de blocage SAP

SAP AG 1999

(C) SAP AG

BC400

12-14

Logistique et modification du logiciel : contenu

l Dveloppement de logiciel orient quipe ou


projet, dans le Workbench Organizer
l Modification du logiciel SAP standard

SAP AG 1999

(C) SAP AG

BC400

13-1

Logistique et modification du logiciel : objectifs du chapitre

la fin de ce chapitre, vous serez en mesure :


l de grer un projet dans le systme R/3 en utilisant
le Workbench Organizer
l de dcrire les options permettant de complter et
de modifier les fonctions de programmes
existants

SAP AG 1999

(C) SAP AG

BC400

13-2

Logistique logicielle et modification de R/3

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

Les tches sont libres

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

L'ordre de modification est libr

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.

Les originaux ne sont jamais crass durant un transport.

(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

Modifications pendant la monte de version

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 et modification de R/3

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

Vous adaptez le systme vos besoins de quatre faons :


- Customizing : vous modifiez les paramtres systme via une interface spciale. Toutes les
modifications possibles ont t imagines et organises. Le customizing est une partie
obligatoire pour la dfinition d'un systme ;
- concept d'extension : vous adaptez des objets du Repository SAP sans y faire de rparations ;
- dveloppement client : vous crez des objets client spcifiques dans l'espace nom client ;
- modifications du standard : rparation des objets du Repository. Si SAP fournit par la suite
une nouvelle version de l'objet rpar, vous devrez adapter votre rparation la nouvelle
version. vitez donc de modifier le standard.

(C) SAP AG

BC400

13-9

Extensions fonctionnelles

Une fonction similaire est-elle


mappe dans le standard SAP ?

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.

Vous pouvez demander une extension dans le SAPNet - R/3 Frontend.

(C) SAP AG

BC400

13-10

Extension de dialogues utilisateur

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

Vous apportez des extensions au systme R/3 diffrents niveaux :


- exit de menu : vous incluez des options de menu en diffrents point du systme pour lancer des
programmes client ;
- exit de dynpro : vous utilisez les sous-crans des dynpros pour afficher vos propres dynpros.
- exit de zone : vous incorporez des contrles de zone supplmentaires.

(C) SAP AG

BC400

13-11

Extensions : exemples

l Exits de programme :
n

exits prdfinis pour les programmes applicatifs.

l Extensions du Dictionnaire :
n

append de table : vous permet d'ajouter des zones


supplmentaires des tables standard ;

informations smantiques des lments de donnes :


utilisation d'une extension pour modifier la description ou la
documentation d'une zone (F1, aide).

SAP AG 1999

Voici les diffrents types d'extension de programme proposs aux clients :

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 ;

extension d'objets du Dictionnaire :


- append de table : vous permet d'ajouter des zones supplmentaires des tables standard ;
- documentation de zone : vous pouvez remplacer par vos propres textes la documentation qui
s'affiche lorsque l'utilisateur appuie sur F1. Les textes d'aide sont mmoriss avec l'lment de
donnes correspondant ;
- Vous pouvez remplacer les libells de zone (texte court, moyen ou long pour la zone) par vos
propres textes.

(C) SAP AG

BC400

13-12

Inscription des dveloppeurs au SSCR


Repository Browser : Programme SAP ABAP

Objet de dveloppement Traiter Saut Utilitaires Options Environnement

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.

Enregistrer modifications d'objets SAP

Inscription Traiter Slection Systme Aide

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.

Pour vous inscrire :


- connectez-vous au SAPNet - R/3 Frontend. Si vous n'tes pas un utilisateur du systme,
demandez un collgue de se connecter pour vous et de vous inscrire. (Toutefois, le nom de
votre collgue sera enregistr comme auteur de l'inscription) ;
- choisissez Inscription. L'cran Enregistrer modifications d'objets SAP apparat ;.
- saisissez le nom d'utilisateur R/3. Le systme affiche une cl de 20 caractres ;
- saisissez la cl de votre systme R/3 soit manuellement, soit par couper-coller partir du
SAPNet R/3 Frontend.

SSCR signifie SAP Software Change Registration.

(C) SAP AG

BC400

13-13

Logistique et modification du logiciel : rsum du chapitre

Vous tes maintenant capable :


l d'affecter un projet au systme R/3 en utilisant le
Workbench Organizer
l de dcrire les options permettant de complter et
de modifier les fonctions de programmes
existants

SAP AG 1999

(C) SAP AG

BC400

13-14

Inscription des dveloppeurs au SSCR


Repository Browser : Programme SAP ABAP

Objet de dveloppement Traiter Saut Utilitaires Options Environnement

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.

Enregistrer modifications d'objets SAP

Inscription Traiter Slection Systme Aide

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.

Pour vous inscrire :


- connectez-vous au SAPNet - R/3 Frontend. Si vous n'tes pas un utilisateur du systme,
demandez un collgue de se connecter pour vous et de vous inscrire. (Toutefois, le nom de
votre collgue sera enregistr comme auteur de l'inscription) ;
- choisissez Inscription. L'cran Enregistrer modifications d'objets SAP apparat ;.
- saisissez le nom d'utilisateur R/3. Le systme affiche une cl de 20 caractres ;
- saisissez la cl de votre systme R/3 soit manuellement, soit par couper-coller partir du
SAPNet R/3 Frontend.

SSCR signifie SAP Software Change Registration.

(C) SAP AG

BC400

13-15

Logistique et modification du logiciel : rsum du chapitre

Vous tes maintenant capable :


l d'affecter un projet au systme R/3 en utilisant le
Workbench Organizer
l de dcrire les options permettant de complter et
de modifier les fonctions de programmes
existants

SAP AG 1999

(C) SAP AG

BC400

13-16

Annexes

l Cette section contient des informations


supplmentaires utiliser titre de rfrence.
l Ces informations ne font pas partie de la
version standard du cours.
l Il est donc possible que le formateur ne les
traite pas lors de la prsentation du cours.

SAP AG 1999

(C) SAP AG

BC400

14-1

Requtes courantes dans le systme d'information

Recherche par attribut

Cas d'emploi

Afficher tous les objets de type X


avec attribut Y

Afficher tous les objets de type X


qui utilisent l'attribut Y

Informations sur
les tables et
leurs relations

Afficher toutes les zones


de table avec table de contrle X

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

Vue d'ensemble : cration de programmes

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.

Enfin, un programme doit tre affect un projet de Workbench Organizer (ordre de


modification). Celle-ci classe l'objet du Repository chronologiquement. Ds qu'un projet arrive
son terme, vous affectez un programme un nouveau projet.

Vous ditez le programme uniquement aprs cette classification.

(C) SAP AG

BC400

14-3

Imbrication de structures et de tables internes

SAP AG 1999

Les types de structure contiennent d'autres types de structure ou de table.

Les types de table contiennent ventuellement d'autres types de table ou de structure.

Vous trouverez des informations sur la dfinition de types de table dans la documentation, au motcl TYPES.

(C) SAP AG

BC400

14-4

Groupes de types du Dictionnaire ABAP

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

Effacement d'une table interne

Espace de travail <wa>

CLEAR <wa>.

Table interne <itab>


CARRID
AA
LH

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.

CLEAR <wa> initialise l'espace de travail <wa>.

(C) SAP AG

BC400

14-7

Rcapitulatif des instructions dclaratives

Type
TYPES
Zone lmentaire, structure,
Table interne

DATA

Constante
CONSTANTS
Paramtre de saisie
PARAMETERS

Espace de travail
TABLES

SAP AG 1999

Jusqu' prsent, nous avons vu les instructions dclaratives suivantes :


TYPES
DATA
CONSTANTS
PARAMETERS
TABLES

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.

Deux tables sont compatibles quand leurs types


de ligne 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

DATA: START TYPE D,


SUM1
TYPE P,
SUM2
TYPE P.
.
.
.
IF SUM2 GE 1000.
IF START IS INITIAL.
IF SUM1 GT SUM2 AND
SUM1 BETWEEN 0 AND 100.
IF SUM1 = 1000 AND
( SUM2 LE 2000 OR
START IS INITIAL ).

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

Pour relier des expressions logiques, utilisez AND, OR ou NOT.

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.

Il existe de nombreux autres oprateurs de comparaison de chanes ou de bits. (Voir l'instruction IF


dans la documentation en ligne).

(C) SAP AG

BC400

14-10

Boucles DO et WHILE

WHILE <expression logique>.

DO

<n>

TIMES.

Instructions

ENDWHILE.

Instructions

ENDDO.

WHILE COUNTER > 0.


.
.
.
SUBTRACT 1 FROM COUNTER.
ENDWHILE.

SY-INDEX

Compteur de boucles

SAP AG 1999

Les boucles DO et WHILE sont galement utilises dans ABAP.

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 :

la squence d'instructions s'excute tant que l'expression logique est vraie.


- Vous ne pouvez pas modifier le nombre de passages de boucles par la zone sy-index de la
boucle WHILE... ENDWHILE.

(C) SAP AG

BC400

14-11

CHECK et EXIT

CHECK <expression logique>.

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

Vous utilisez deux instructions pour le traitement de boucles :

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.

Voir aussi le mot-cl CONTINUE dans l'index.

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

Aller la fin du bloc


de traitement

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

Includes : programmes de type I

Include : <nom-include>
(Type de programme : I)

Programme : <nom du programme>


REPORT <nom du programme>.
:
INCLUDE <nom-include>.

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

Includes standard pour groupes de fonctions

Groupe de fonctions

BC400

Groupe de fonctions BC400

Gr. de fonctions de types d'objet


Modules de fonction
BC400_FREE_SEATS

Calcule le nombre de places non rserves

BC400_PERCENTAGE

Dtermine le pourcentage

Sous-programmes
Includes
LBC400TOP

Dfinition de donnes globales

LBC400F01

Sous-programmes

LBC400U01

Calcule le nombre de places non rserves

LBC400U02

Dtermine le pourcentage

LBC400UXX

SAP AG 1999

(C) SAP AG

BC400

14-16

Rle stratgique des modules de fonction

Systmes R/3 par satellite

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 y encapsuler des dialogues utilisateurs.

Vous pouvez crer des modules de fonction que vous appellerez en Remote. Ceux-ci peuvent alors
tre lancs de manire externe:

partir du World Wide Web, pour accder un systme R/3 ;

partir d'un autre systme R/3 ;

partir de vos propres programmes (Visual Basic, JAVA ou C++, par exemple).

(C) SAP AG

BC400

14-17

Traitement des exceptions

Exceptions
Exceptions

FUNCTION bc400_free_seats.

OCC_GT_MAX
MAX_EQ_0

Dfinition d'une exception

.
.
.

IF seatsmax = 0.
RAISE max_eq_0.
ELSEIF seatsocc > seatsmax.
RAISE occ_gt_max.
ENDIF.
.
.
.

Leve d'une exception

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

WRITE <objet de donnes> <option> .


REPORT sapbc400udd_example_1a.
INCLUDE <LISTE>.
:
WRITE: / wa_spfli-carrid COLOR col_key,

iicon_date

AS ICON,

Couleurs dans les listes


Vol

Dpart

Destination

AA 0017
LH 0400
LH 0402

NEW YORK
PARIS
FRANCFORT

SAN FRANCISCO
NEW YORK
BERLIN

Date de cration : 01.01.1998


Cr par :
WITTMANN

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

Valeurs seuils positives

col_negative

Valeurs seuils ngatives

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

Transfert de donnes externes

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

Transfert de donnes externes


BATCH-INPUT :
Fichier
squentiel

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

Techniques avances : squencement d'crans dynamiques

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

CALL SCREEN 100

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

Techniques avances : mise jour

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

Anda mungkin juga menyukai