Вы находитесь на странице: 1из 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. 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

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 Dveloppement des applications sur Internet Cours supplmentaires recommands : Business Process Technologies CA925, CA926, CA927 BC095 (Technologie d'intgration) BC619 (ALE), BC620, BC621 BC490 3 jours Analyses des performances ABAP

Reporting dans ABAP Workbench BC410 BC400 5 jours 5 jours Programmation interactive Introduction ABAP Workbench MBC40 2 jours 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

Gestion des projets de dveloppement ABAP

SAP AG 1999

(C) SAP AG

BC400

0-4

Connaissances requises

Connaissances en programmation Cours de formation SAP 50 : technologie de base

SAP AG 1999

(C) SAP AG

BC400

0-5

qui s'adresse ce cours ?

Participants :
Membres du projet

Dure : 5 jours

SAP AG 1999

Notes aux participants 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

Objectif global du cours Dtail des objectifs Table des matires Synoptique Scnario de gestion Introduction au cours

SAP AG 1999

(C) SAP AG

BC400

1-1

Objectif du cours

la fin de ce cours, vous serez en mesure :


de comprendre les diverses applications d'ABAP Workbench, notamment 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 : de crer un programme ABAP comprenant des dialogues utilisateur et des dialogues base de donnes de dcrire divers objets de dveloppement (objets du Repository) et leur mode d'emploi 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 Chapitre 2 Chapitre 3 Chapitre 4 Chapitre 5 Chapitre 6 Chapitre 7 Chapitre 8 Chapitre 9

Introduction Droulement du programme dans un programme ABAP Introduction ABAP Workbench Instructions et dclarations de donnes ABAP Dialogues base de donnes I
(lecture partir de la base de donnes)

Modularisation interne du programme Dialogues utilisateur : liste Dialogues utilisateur : cran de slection Dialogues utilisateur : cran

Chapitre 10 Interfaces

SAP AG 1999

(C) SAP AG

BC400

1-4

Table des matires

Chapitre 11 Chapitre 12 Chapitre 13

Rutiliser les composantes Dialogues base de donnes II (Modifier la base de donnes) 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 de dterminer des informations complmentaires de vol, comme le prix Ville de destination la capacit.

SAP AG 1999

(C) SAP AG

BC400

1-6

Droulement du programme dans un programme ABAP

Contenu :
Architecture client / serveur Programme type avec affichage de donnes sous forme de liste Programme type avec affichage de donnes sur un cran 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

SAPGUI

SAPGUI

SAPGUI

Rpartiteur

Rpartiteur

Application Serveur Niveau

Processus de travail

Processus de travail

Processus de travail

Processus de travail

Base de donnes
SAP AG 1999

Processus de travail

Processus de travail

Processus de travail

Processus de travail

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

cran de slection

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

Bote noire
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 cran de slection Objets de donnes

Repository

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

Lancement du programme

Programme ABAP Objets de donnes

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

Lancement du programme

Programme ABAP Objets de donnes

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

Lancement du programme

Programme ABAP Objets de donnes

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

Lancement du programme

Programme ABAP Objets de donnes

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

Lancement du programme

Programme ABAP Objets de donnes

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

Lancement du programme

Programme ABAP Objets de donnes

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

Lancement du programme

Programme ABAP Objets de donnes

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

Lancement du programme

Programme ABAP Objets de donnes

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

Lancement du programme

Programme ABAP Objets de donnes

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 Chapitre 2 Chapitre 3 Chapitre 4 Chapitre 5 Chapitre 6 Chapitre 7 Chapitre 8 Chapitre 9

Introduction Droulement du programme dans un programme ABAP Introduction ABAP Workbench Instructions et dclarations de donnes ABAP Dialogues base de donnes I
(lecture partir de la base de donnes)

Modularisation interne du programme Dialogues utilisateur : liste Dialogues utilisateur : cran de slection Dialogues utilisateur : cran

Chapitre 10 Interfaces

SAP AG 1999

(C) SAP AG

BC400

2-26

Table des matires

Chapitre 11 Chapitre 12 Chapitre 13

Rutiliser les composantes Dialogues base de donnes II (Modifier la base de donnes) Logistique logicielle et comparaison logicielle

Exercices Solutions Annexes


SAP AG 1999

(C) SAP AG

BC400

2-27

Introduction ABAP Workbench

Contenu :
Repository et Workbench Analyse d'un programme existant 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 : d'utiliser les diffrents types de navigation disponibles d'ABAP Workbench pour analyser un programme existant 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

Programme ABAP

Indpendant du mandant

Dpendant du mandant

Base de donnes
SAP AG 1999

Repository

Tables de customizing Tables applicatives

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 MM

WM 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 +  +  +  CA AC FI Hirarchie des applications 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 Classe de dveloppement Sous-arbre slectionn

Systme d'information

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

Screen Painter Menu Painter


FI SD MM Cust. HR MM

Dbogueur Object Navigator Dictionnaire ABAP

WM

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


Fermer navigateur Domaine pour l'affichage d'une liste d'objets sous la forme d'une hirarchie Afficher liste d'objets Domaine pour l'affichage ou le traitement d'un objet du Repository

Clic du bouton droit de la souris

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


Hirarchie des applications Classe de dveloppement Programme Groupe de fonctions Classe Objets locaux

classe de dveloppement

BC400

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. 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
Compagnie arienne Compagnie arienne ID
AA American Airlines USD

Liste

Nom Devise locale

Systme F1 Statut Info techniques Nom du programme Nom d'cran (= numro de dynpro)
SAP AG 1999

Nom de zone Type de zone

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 Dbogueur ABAP
Point de surveillance Zones Programme principal

SAP
chws

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

SY-SUBRC

SY-TABIX

SY-DBCNT BIN (1) (000) ds0025 INS

SAP AG 1999

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 Dbogueur ABAP
Point de surveillance Zones Programme principal ZJJ_KURS_000

SAP
chws

Continuer ZJJ_FORMS Code source de

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

SY-SUBRC

SY-TABIX

SY-DBCNT BIN (1) (000) ds0025 INS

SAP AG 1999

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 wa_sbc400-carrid COLOR COL_KEY. wa_sbc400-carrname. wa_sbc400-currcode.

Mot-cl ABAP
SAP AG 1999

Options (dpendantes du mot-cl)

Point (termine toutes les instructions ABAP)

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

STOP

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 wa_sbc400 pa_car


Objets de donnes

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

pa_car pa_car wa_sbc400 wa_sbc400


Bloc de traitement ABAP

Table de base de donnes SCARR

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

pa_car pa_car wa_sbc400 wa_sbc400


Bloc de traitement ABAP

Table de base de donnes SCARR

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

Process Before Output Process After Input

CALL SCREEN 100.

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 ID Compagnie arienne LH Nom LH
LH Lufthansa DEM

LUFTHANSA

Devise locale DEM

Copie adapte : Compagnie arienne ID Compagnie arienne LH Nom LH


LH Lufthansa DEM

LUFTHANSA WALTERS

Devise locale DEM Utilisateur 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 SD

HR

MM FI WM HR MM

MM Cust.

SD MM

WM

Cust.

Systme de dveloppement
SAP AG 1999

Systme de production

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 BC400-00 BC400-01 BC400-02 BC400-03 ... Workbench Organizer : demandes
Ordres de modification de l'utilisateur BC400-00 Modifiable Transportable

Chef de projet
IT3K900051 CARSON IT3K900052 CARSON IT3K900053 BC400-00 Source de rapport ZBC400_00_FLIGHTLIST

Numro de la modification Numro de membre d'quipe (affect par le systme) (Tche) 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 : ... Jeudi Vendredi L'ordre est libr

Chef de projet : CARSON quipe : CARSON BC400-00 BC400-01 BC400-02 BC400-03

Contrle de qualit de l'ensemble du projet Documentation du projet

Fin du dveloppement

Contrle de qualit de tout le ... Repository par BC400-00 Documentation de la tche complte

La tche est libre


SAP AG 1999

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 Les nouveaux programmes doivent tre affects une classe de dveloppement

Attributs Classe de dveloppement ZBC400_00 Personne responsable Systme original Langue originale Objet local BC400-00 IT3 DE

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 Transportable IT3K900051 CARSON IT3K900052 CARSON IT3K900053 BC400-00 IT3K900054 BC400-01

Double-clic sur le numro de l'ordre

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 Nom Devise locale Utilisateur Zone de saisie et descripteur de zone sbc400_carrier

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

Contrle Contrle de syntaxe : un bouton de commande vous permet d'effectuer un contrle de la syntaxe. 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. Activation du programme : le programme est visible dans tout le systme aprs l'activation et vous pouvez l'excuter ultrieurement. 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 : d'utiliser les diffrents types de navigation disponibles de ABAP Workbench pour analyser un programme existant 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. 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.

1-2

(C) SAP AG

BC400

3-44

1-2-5 Quels sont les noms des zones de saisie sur lcran de slection et des zones de sortie sur lcran ? Pour trouver les noms, utilisez le bouton daide F1 pour chaque zone et slectionnez Infos techniques. 1-3 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 SAPBC400WBS_GETTING_STARTED

Solution modle :

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

2-2

(C) SAP AG

BC400

3-46

2-3

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.

(C) SAP AG

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 :
Types Objets de donnes Objets de donnes lmentaires Structures Tables internes 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 : de dcrire les diffrents types de donnes diffrents et leur utilisation de dfinir des objets de donnes lmentaires, des structures et des tables internes d'utiliser le mode dbogage pour observer comment les valeurs des objets de donnes individuels changent lors du traitement de programmer plusieurs oprations importantes impliquant des objets de donnes, et 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 Programme ABAP Code Source ABAP

Paramtres d'interface pour des fonctions/mthodes

Objets de donnes

Interface Sousprogrammes

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 Compagnie arienne
lment de donnes : type technique Descripteur de zone Documentation de zones (Aide F1) Aide la recherche (Aide F4)

F1
Aide Identificateur de la compagnie arienne

Nom abrg

Cette zone contient l'identificateur de la compagnie arienne

Aide d'applications

Info techniques

ID AA AF BA DL LH NU QF SA SQ UA

Compagnie arienne American Airlines Air France British Airways Delta Airlines Lufthansa Japan Transocean Air. Quantas Airways South African Air. Singapore Airlines United Airlines

Variable de zone de saisie

SAP AG 1999

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


DATA wa_flight_occ TYPE sbc400focc

F1
Aide

Infos techniques Infos techniques Donnes de zone Structure Nom de zone lment de donnes

lment de donnes S_CARR_ID

Type de structure SBC400FOCC

DoZones ub le Cli
bl eCl ic

S_CARR_ID

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

Do u

SBC400_CARRIER CARRID

c CARRID S_CARR_ID CONNID ...

BC400

Do ub le -

types de zone

Cl ic

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

bl

eCl ic
Navigation vers des dclarations de types de donnes locaux ou des dclarations de types de donnes du dictionnaire ABAP

F1
TYPE Double-Clic DATA DATA:<data_object> TYPE <type> <type>.

F1
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 T X I P F 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

carrid counter

Programme ABAP 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.
Lancement du programme c_qf QF

gd_carrid1 gd_carrid2 counter LH 0000 QF QF QF LH QF QF 0000 0000 0001

MOVE c_gf TO gd_carrid1. gd_carrid2 = gd_carrid1. ADD 1 TO counter. CLEAR CLEAR: gd_carrid1, gd_carrid2, counter.
Programme ABAP

0000

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

ENDCASE.

IF <logical expression>.
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 Dbogueur ABAP
Point de surveillance Zones ZJJ_KURS_000 Programme principal Pas pas Code source de ZJJ_FORMS
Point d'arithmtique fixe

SAP
chws

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 1 - 4

Contenus de zones

pa_car

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

Zone Comp. zone/valeur

Oprateur logique entre des points de surveillance


SAP AG 1999

OU

ET

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 Code source ABAP DATA: wa_spfli TYPE spfli. TABLES sdyn_conn. Programme ABAP

SAP AG 1999

Vous pouvez dfinir des objets de donnes structurs (galement appls structures) dans ABAP. Ceci vous permet de combiner des variables correspondantes dans un seul objet. Les structures peuvent s'imbriquer. Ceci signifie que d'autres structures ou mme des tables peuvent devenir des sous-objets de votre structure originale. 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

Code source ABAP DATA: wa_scarr TYPE scarr. wa_scarr-carrid wa_scarr-carrid = 'LH'.

Des zones de structure sont toujours adresses selon <structure>-<nom_de_zone>

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

FLDATE 20000513

... ...

SEATSMAX 280

SEATSOCC ... 100 ... wa_sflight

CARRID LH

CONNID FLDATE 0400 20000513

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
Watchpoint Zones Programme principal ZJJ_KURS_000 ZJJ_FORMS Code source de
Point d'arithmtique fixe

chws

15 -

30

SELECT SINGLE * FROM scarr wa_sbc400 Zone 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 Zones-cls

Type de lignes Cl Cl
Squence Cl unique / non-unique

AA LH LH QF SQ UA

0017 0400 0400 0005 0866 0007

2,572 6,162 6,162 10,000 1,625 2,572

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 D'ADRESSES CALCULES CALCULES

TABLE STANDARD

TABLE TRIE TRIE

Accs avec Index Accs avec Cl Cl unique / non-unique Type d'accs

NON- UNIQUE

UNIQUE | NON-UNIQUE

UNIQUE

Principalement index

Principalement cls

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

Dictionnaire ABAP : type de table Type de ligne et accs Type de ligne Type d'accs Cl Dfinition-cl Type de cl Composantes-cls

sbc400_t_sbc400focc 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. 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 Ajouter Lignes multiples partir d'une table interne

INSERT itab2 <condition2> FROM itab1 <condition1>.

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 CLEAR 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. met le contenu de la table interne la valeur initiale conforme au type de colonne.

REFRESH fonctionne comme CLEAR. FREE supprime la table interne et libre la mmoire alloue la table.

(C) SAP AG

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 1 1 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
Point de surveillance
chws

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 1 1 2 3 4 5 6 7 8 it_flightinfo Type Standard Seatsmax Seatsocc Pourcentage 660 660 660 660 280 280 280 280 66 120 560 470 240 123 273 280 66 120 560 470 240 123 273 280

Carrid Connid Fldate AA AA AA AA LH LH LH LH 0017 0017 0017 0017 0400 0400 0400 0400 20000512 20000724 20000828 20001224 20000626 20000715 20001113 20001212

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> Table interne <itab>


CARRID AA LH CONNID 0017 0400

Ligne d'en-tte <itab> Table interne <itab>


CARRID AA LH CONNID 0017 0400

APPEND <wa> TO <itab>. MODIFY <itab> INDEX <n> FROM <wa>. LOOP AT <itab> INTO <wa>. WRITE <wa>-<field>. ENDLOOP. READ TABLE <itab> INDEX <n> INTO <wa>. WRITE <wa>-<field>.
SAP AG 1999

APPEND <itab>. MODIFY <itab> INDEX <n>. LOOP AT <itab>. WRITE <itab>-<field>. ENDLOOP. READ TABLE <itab> INDEX <n>. WRITE <itab>-<field>.

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'. READ TABLE itab INTO wa_itab WITH TABLE KEY carrid = c_ua. carrid ... AA AL LH QF itab IF sy-subrc ne 0. * Message ... ENDIF. Runtime system ABAP Temps
SAP AG 1999

Programme ABAP

sy-subrc 0 Function de base en LECTURE

Non disponible

Code retour 4

Un nombre d'instructions ABAP possdent un code retour. De nombreuses exceptions sont dtectes, selon l'instruction. Si une telle exception apparat, une valeur est stocke dans la zone sy-subrc et l'instruction se termine. La documentation mots-cls pour une instruction dtermine dcrit les exceptions et leurs valeurs. Lorsque vous lancez un programme, une structure appele sy est automatiquement fournie comme objet de donnes. Cette structure contient plusieurs zones qui sont remplies par le systme. Vous pouvez accder ces zones partir du programme. Une des zones de cette structure est la zone subrc. Vous ne devez ds lors pas crer d'objet de donnes pour le code retour. Dans cet exemple, une ligne devrait se lire partir de la table interne itab avec un accs cl. Il n'y a aucune ligne avec la cl requise au moment de l'excution. L'instruction READ se termine alors et la valeur 4 est place dans la zone sy-subrc. La zone sy-subrc est teste dans le programme immdiatement aprs l'instruction READ.

(C) SAP AG

BC400

4-41

Messages utilisateur : synthse

. . MESSAGE E050(BC400). S078(BC400) WITH c_ua.

Table T100
S ID N
Texte du message

EN BC400 ... ... EN BC400 EN BC400 ... ...

038 Aucune donne n'existe pour cette slection (insrez une autre valeur) ... ... 049 La compagnie arienne & n'existe pas 078 078 Division Entrepar pour la compagnie arienne & n'existe pas zro ... ...

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 W Warning Le comportement au moment de l'excution dpend du contexte 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 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 : de dcrire les diffrents types de donnes diffrents et leur utilisation de dfinir des objets de donnes lmentaires, des structures et des tables internes d'utiliser le mode dbogage pour observer comment les valeurs des objets de donnes individuels changent lors du traitement de programmer plusieurs oprations importantes impliquant des objets de donnes, et 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 : Solution modle :

ZBC400_##_GETTING_STARTED 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. 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. 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 ? Observez maintenant comment les zones sont copies de WA_SBC400 vers SBC400_CARRIER. Quelles valeurs de zone sont copies ? 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.
BC400 4-46

1-2

1-3

1-4

1-5

(C) SAP AG

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. Redmarrez le programme en mode dbogage. Ajoutez un point darrt linstruction MOVE-CORRESPONDING. 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.

1-7

1-8

(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 : Solution modle :

ZBC400_##_ITAB_LOOP 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). Dans votre programme, crez une table interne avec la structure de ligne de la table SPFLI. 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. Affichez les donnes de la table interne dans une liste. Utilisez les instructions LOOP ENDLOOP.

2-2

2-3

2-4

(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 :
Informations sur les tables de base de donnes Lecture de tables de base de donnes Contrle d'autorisations 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 : d'obtenir des informations sur les tables de base de donnes partir du Dictionnaire ABAP de rpertorier plusieurs moyens de trouver des tables de base de donnes de programmer un accs en mode lecture des lignes et colonnes spcifiques d'une table de base de donnes particulire d'appliquer des contrles d'autorisation 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 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

ou b
BC400

Bloc de traitement ABAP

le

-c l

ic

5-4

Recherche sur des tables de base de donnes

diteur Rechercher l'instruction SELECT Dmarrer en mode dbogage Insrer un point d'arrt dans l'instruction SELECT Liste d'objets du programme Sous-programmes

Rechercher des composantes rutilisables

Hirachie des applications Slectionner composantes d'application Repository Informations Le systme

Sur des zones d'cran F1 Infos techniques Double-clic sur une zone d'cran

Zones de structure dans le Dictionnaire ABAP Double-clic sur un lment de donnes Liste des cas d'emploi dans les tables

SAP AG 1999

Vous fournit les noms des programmes qui accdent la table de base de donnes

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 disponibilit des aroports disponibilit des compagnies ariennes l'heure souhaite disponibilit des vols la date souhaite 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

Agence de voyages
BC_GEOCITY T

CR

Ville
A BC_CITAIRP T BC_COUNTER T

BC_AIRPORT

A R R

Affectation Ville aroport

Agence commerciale

CR

Aroport

BC_CUSTOM T

Client
H

BC_CARRIER T

BC_PLANFLI H

T H

BC_SFLIGHT

T H

BC_BOOKING T

Compagnie arienne

Liste des vols

Vol

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 Compagnie arienne MANDT CARRID CARRNAME .....

SPFLI Liste des vols MANDT CARRID CONNID AIRPFROM AIRPTO DEPTIME .....

SFLIGHT Vol MANDT CARRID CONNID FLDATE SEATSMAX SEATSOCC .....


H

SBOOK Rservations MANDT CARRID CONNID FLDATE BOOKID CUSTOMID COUNTER AGENCYNUM .....

11001

11001 H

11001 H

11001 H

Compagnie arienne

Liste des vols

Vol

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

SELECT <result> Quelles colonnes ?

FROM <table>

Quelle(s) table(s) ?

INTO <destination> Vers quelles zones ? WHERE <condition>

Quelles lignes ?

Ligne individuelle

}
Colonne spcifique

Lignes multiples

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

pa_car wa_ wa_scarr

Table de base de donnes 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

pa_car wa_sbc400focc wa_sbc400focc


Bloc de traitement ABAP

Table de base de donnes SFLIGHT

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 itab_ itab_focc

Table de base de donnes SFLIGHT

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

mandt carrid connid


SAP AG 1999

...

deptime

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 CONTRLE D'AUTORISATION BC400-00 Profil1 Profil2

Note

Non

SY-SUBRC = 0 ?

Oui
SELECT

Profil S_CARRID Autorisation pour Autorisation Object S_CARRID Autorisation pour Autorisation Object S_CARRID 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: *

Objet : S_CARRID
CARRID (compagnie arienne) ACTVT (Activit)

ACTVT: Afficher

"Modifier" autorisation pour Objet S_CARRID


CARRID: LH

Activits : Crer Modifier Afficher

= = =

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'.
Rsultats d'tat

Paramtrer toutes les autorisations pour Objet S_CARRID

ACTVT
03 02 01 x x x x x x

IF sy-subrc ne 0. * Appropriate system reaction * to failed check 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


Base de donnes logique
ce fa s r e te In dul on o cti M n fo Groupe de fonctions

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 Mandt Carrid Carrname

... Cityfrom ...

...

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 : d'obtenir des informations sur les tables de base de donnes partir du Dictionnaire ABAP de rpertorier plusieurs moyens de trouver des tables de base de donnes de programmer un accs en mode lecture des lignes et colonnes spcifiques d'une table de base de donnes particulire d'appliquer des contrles d'autorisation 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 : Solution modle :

ZBC400_##_SELECT_SFLIGHT 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). 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. 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). 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.
BC400 5-27

1-2

1-3

1-4

(C) SAP AG

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. Crez une liste affichant les informations consultes dans la base de donnes, et le pourcentage doccupation de chaque vol.

1-6

(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 : Solution modle :

ZBC400_##_SELECT_SFLIGHT_ITAB 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). 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. Remplissez la table interne ligne par ligne en utilisant une instruction APPEND dans la boucle SELECT. Triez la table interne sur le taux de remplissage. Affichez le contenu tri de la table interne dans une liste. Pour ce faire, utilisez une structure LOOP ENDLOOP.

2-2

2-3

2-4 2-5

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

2-7

2-8

(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 : Solution modle :

ZBC400_##_AUTHORITY_CHECK 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 : 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. Redmarrez votre programme. Sur lcran de slection, essayez dentrer AA pour la compagnie arienne, ensuite UA.

3-2

3-3

(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_#. actvt_display TYPE activ_auth value '03'.

CONSTANTS

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 :
Blocs vnements ABAP 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 : d'expliquer le fonctionnement d'un programme contenant des vnements au moment de l'excution en utilisant INITIALIZATION et START-OF-SELECTION comme exemples 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 Bloc vnement cran de slection

Dfinitions de zone et type local

Bloc vnement
Interface

Module

Process Before Output Process After Input

Module

Bloc vnement

Sousprogrammes

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


PARAMETERS pa_date LIKE sy-datum DEFAULT sy-datum.

cran de slection gnr par generates


INITIALIZATION

Bloc vnement

pa_date = pa_date - 7. START-OF-SELECTION. WRITE pa_date.

Bloc vnement

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

Lancement du programme

Programme ABAP

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

INITIALIZATION.

START-OF-SELECTION.

Le processeur ABAP dtermine l'ordre de traitement des vnements Bloc vnement par dfaut : START-OF-SELECTION
Temps

Systme d'excution ABAP

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

" Start of data processing

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

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

Bloc de traitement

Interface Sousprogrammes

Interface 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

a2

a3

Paramtres effectifs Param tres formels Paramtres


START-OF-SELECTION. : PERFORM form1 USING a1 PERFORM CHANGING a2 a3. FORM form1 USING VALUE(fv1) CHANGING VALUE(fv2) fr3 . : ENDFORM. ENDFORM.

fv1

fv2

fr3

Appel par rfrence

Appel par valeur

Appel par valeur et par rsultat

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 : 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 : 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 : Expliquer comment un programme contenant des blocs vnements fonctionne au moment de l'excution en utilisant INITIALISATION et START-OF-SELECTION comme exemples 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 : Solution modle :

ZBC400_##_FORMS 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.) 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 Code retour : systme SY-SUBRC Valeur de la zone dautorisation ACTVT : ACTIV_AUTH lment de donnes lment de donnes Zone

1-2

(C) SAP AG

BC400

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 AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD p_carrid ID 'ACTVT' FIELD p_ld_actvt. LIKE sy-subrc.

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

(C) SAP AG

BC400

6-18

Dialogues utilisateur : listes

Contenu :
Attributs et avantages des listes Listes de base Liste des vnements Listes interactives 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 : de dcrire les attributs et les avantages d'une liste 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 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
CA ID PRICE AA 2602 2400 AA 2602 2500 Total 7800

Fonctions multilingues

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

Sauvegarder

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 Intitul de colonne

Sauvegarder

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 EN Creation Date DE Erstellungsdatum FR Date de cration

WRITE:/ /15text-001, text-001, 35 sy-datum, /15 text-002, 35 sy-uname.

Symboles de texte 001 EN Creation Date DE Erstellungsdatum FR Date de cration : EN Created by

002

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

Table de base de donnes

Mmoire tampon pour liste de base

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 1

Listes dtaill es dtailles sy-lsind 2

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 002 Listes de base 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 : 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. 380 380 380 0402 Occ. 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


Ligne ... 5 6 ... 11

Zone HIDE
Ligne ... 5 6 ... 11 wa_spflicarrid ... LH LH ... SQ wa_spfliconnid ... 0400 0402 ... 0002

LH 0400 FRA LH 0402 FRA ... SQ 0002 SIN

JFK JFK SFO

10:10:00 13:30:00 09:30:00

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

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


SAP AG 1999

Symboles de texte : 001 Correspondances

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 : de dcrire les attributs et les avantages d'une liste 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 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 : Solution modle :

ZBC400_##_DETAIL_LIST 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). 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) Ajoutez l'vnement AT LINE-SELECTION votre programme pour vous permettre de construire la liste dtaille. 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. 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 :
BC400 7-16

1-2

1-3

1-4

1-5

(C) SAP AG

BOOKID, CUSTOMID, CUSTTYPE CLASS, ORDER_DATE, SMOKER, CANCELLED, LOCCURAM, LOCCURKEY. 1-6 1-7 Affichez les zones BOOKID et CUSTOMID dans la couleur COL_KEY. 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 AND connid = wa_flight-connid 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 :
Attributs et avantages des crans de slection Dfinir des crans de slection valuer une entre utilisateur pour limiter la slection de base de donnes vnements d'cran de slection 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 : de dcrire les attributs et les avantages des crans de slection 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 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 Bloc de traitement ABAP

Table de base de donnes

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


Grer les options de slection slection

Compagnie arienne Ville de dpart

LH

to

...

Compagnie arienne Valeur individuelle Suprieur ou gal Infrieur Infrieur ou gal Suprieur SIGN OPTION LOW Infrieur I GE LH Diffrent
Slectionner Exclure de la slection
SAP AG 1999

Valeurs simples Plages de valeurs Exclusion de valeurs simples Exclusion de plages de valeurs

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 : 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 LH LH No. 0400 0402 Aroport Aroport de dpart d'arrive FRA JFK FRA JFK Heure de dpart 10:10:00 13:30:00

Zone de tables Zones de structure Aide la recherche Aide la recherche Tables de contrle lment de donnes

Dictionnaire ABAP
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
REPORT bc400td_selection_screen. : SELECT-OPTIONS so_carr FOR ... PARAMETERS pa_city TYPE ...

lments de texte
Titre/en-ttes Symboles de texte

Textes de slection SO_CARR EN Airline carrier DE EN Departing from DE

Compagnie arienne

PA_CITY LH ...

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 : 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 : 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 cran de slection Bloc de traitement ABAP

DATA gd_carrid TYPE s_carr_id. carr so_ SELECT-OPTIONS so_carr so_carr FOR gd_carrid.

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 : 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 : de dcrire les attributs et les avantages des crans de slection ; 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 ; 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 : Solution modle : ZBC400_##_SEL_SCREEN 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). Compltez votre cran de slection pour permettre lutilisateur de saisir une plage de valeurs complexes pour le numro de vol CONNID. Utilisez la slection de valeurs complexes pour filtrer les donnes slectionnes partir de la table de base de donnes SFLIGHT. 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
BC400 8-21

1-2

1-3

1-4

(C) SAP AG

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 AND connid = wa_flight-connid 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 :
Attributs et avantages des dynpros Crer des dynpros Layout Attributs de zone Logique d'excution Transport de donnes 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 : de dcrire les attributs et les avantages des dynpros d'crire un programme qui : affiche les donnes sur un dynpro permet l'utilisateur de modifier certaines de ces donnes 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
flexible

Contrles Contrles de type

100

120

200 300

140

Aide la recherche

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 120

200

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
LH Compagnie arienne Numro de vol 0400

Aroport de dpart FRA JFK Destination Modifier dans la Dure du vol base de donnes Heure de dpart
Sauvegarder
SAP AG 1999

8:24 10:10:00

Retour

Dans les prochains chapitres, vous allez dvelopper un programme de modification des donnes de vol standard. 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
Compagnie arienne

Attributs de zone
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 : 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 : AT LINE-SELECTION. : CALL SCREEN 100 100. Double-clic :

Crer un objet Dynpro 100 n'existe pas. Voulez-vous crer l'objet ? Oui Non Annuler

Screen Painter

Attributs de dynpro Courte description Type de dynpro Normal Sous-dynpro Bote de dialogue modale Dynpro suivant 0
Affichage de donnes supplmentaires

SAP AG 1999

Vous crez un dynpro de plusieurs faons : 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

Compagnie arienne Numro de vol Aroport de dpart Destination Dure du vol Heure de dpart

sdyn_conn

SAP AG 1999

Vous affectez des attributs aux zones d'un dynpro de deux faons : 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

Compagnie arienne Numro de vol


X

Nom Texte Ligne

SDYN_CONN-CARRID

Colonne

Aroport de dpart Destination Dure du vol Heure de dpart

FCode

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

Attr. gn.

vLg Afficher attr.

Modif. taille

Rfrences

Nom de zone
SBOOK-CARRID TEXT SDYN_CONN-CARRID SDYN_CONN-CARRID . . .

Type de zone
5 Text 14 I/O 16 16

...
.1 .. ...

O CHAR

O seult.

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 Dure du vol Heure de dpart
FRA JFK 8:24 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 : 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 Bloc de traitement ABAP

Dynpro 100

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

Temps

Le transport de donnes s'effectue automatiquement entre les zones de dynpro et les zones du programme qui portent le mme nom. 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

Temps

Le transport de donnes s'effectue automatiquement entre les zones de dynpro et les zones du programme qui portent le mme nom. 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 : MANDT CARRID CONNID COUNTRYFR CITYFROM AIRPFROM COUNTRYTO CITYTO AIRPTO FLTIME DEPTIME ARRTIME DISTANCE DISTID FLTYPE wa_spfli Liste de base Zone HIDE
! ! ! !

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
Message 2 dans barre d'tat

Compagnie arienne LH Numro de vol 0400 Aroport de dpart Destination Dure du vol Heure de dpart
Sauvegarder Retour FRA JFK 8:24 10:10:00

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

Compagnie arienne Numro de vol


X

Nom Texte Ligne

BOUTON2 Retour Colonne

Aroport de dpart Destination


FCode

RETOUR

FType

Dure du vol Heure de dpart Sauvegarder Retour

Dict Prog Disp

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 Nom de zone Texte de zone
...

Code de fonction
...

OK

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

Objets de donnes

Programme ABAP

100
PBO

CALL SCREEN 100.

MODULE <name>.

MODULE <name> OUTPUT. ENDMODULE.

PAI

MODULE <name>.

MODULE <name> INPUT. ENDMODULE.

Runtime system ABAP


SAP AG 1999 Temps

L'instruction ABAP CALL SCREEN <nnnn> interrompt le traitement du bloc de traitement et appelle un dynpro. chaque dynpro correspondent deux blocs vnement : 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

Objets de donnes

Programme ABAP

100
PBO

CALL SCREEN 100.

PAI

Attributs de dynpro
Dynpro suivant

Dynpro suivant 0

Runtime system ABAP


SAP AG 1999 Temps

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

Objets de donnes

Programme ABAP

100
PBO

CALL SCREEN 100.

PAI

Attributs de dynpro
Dynpro suivant

100

Dynpro suivant 100

Runtime system ABAP


SAP AG 1999 Temps

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

Objets de donnes

Programme ABAP

100
PBO

CALL SCREEN 100.

PAI

SET SCREEN 0. SET SCREEN 0. 0 Dynpro suivant 0

Attributs de dynpro
Dynpro suivant

100

Runtime system ABAP


SAP AG 1999 Temps

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 PROCESS BEFORE OUTPUT. MODULE clear_ok_code.

diteur ABAP MODULE clear_ok_code OUTPUT. CLEAR ok_code . ENDMODULE.

Sauvegarder

Retour

MODULE user_command_0100 INPUT. * LOGIQUE DE PROGRAMME CASE ok_code. WHEN 'BACK'. ... WHEN 'SAVE'. ... ENDCASE. ENDMODULE.

PROCESS AFTER INPUT. MODULE user_command_0100.

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 PROCESS AFTER INPUT. MODULE user_command_0100. Double-C lic Crer un objet
PBO module USER_COMMAND_100 n'existe pas. Souhaitez-vous crer l'objet ?

Oui

Non

Annuler

Crer module PAI Module PAI Inclure slection ZBC400_00_DYNPRO diteur ABAP Inclure Programme principal USER_COMMAND_0100

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 : 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 : "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 : de dcrire les attributs et les avantages des dynpros d'crire un programme qui : affiche les donnes sur un dynpro permet l'utilisateur de modifier certaines de ces donnes 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 : Solution modle : Modle : ZBC400_##_DYNPRO SAPBC400UDS_DYNPRO_1

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). Familiarisez-vous avec le programme. Testez le programme en utilisant le numro dagence 1## (## est votre numro de groupe). 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. 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.

1-2

1-3

1-4

(C) SAP AG

BC400

9-32

1-5

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.

1-6

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

(C) SAP AG

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 : Solution modle :

ZBC400_##_DYNPRO 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). 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. 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). 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.
BC400 9-34

2-2

2-3

2-4

(C) SAP AG

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 : Solution modle :

ZBC400_##_DYNPRO 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). 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) :

3-2

Nom du bouton de commande PUSH_BACK PUSH_SAVE

Texte
Retour Sauvegarder ou icne ICON_SYSTEM_SAVE

Code de fonction RETOUR SAUVEGARDER

3-3 3-4

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 :

Code de fonction RETOUR SAUVEGARDER


(C) SAP AG

Action
Aucun D'abord :
BC400

Dynpro suivant Liste Liste


9-36

Code de fonction

Action
N du message dinformations 060(BC400)

Dynpro suivant

Autres

Aucun

Dynpro 100

3-5

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.

(C) SAP AG

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' IF sy-subrc = 0.

FIELD actvt_display.

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

FIELD actvt_display.

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 AND AND AND connid fldate bookid = wa_sbook-carrid = wa_sbook-connid = wa_sbook-fldate = 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' 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

FIELD actvt_display.

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 AND AND AND connid fldate bookid = wa_sbook-carrid = wa_sbook-connid = wa_sbook-fldate = 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. " USER_COMMAND_0100 INPUT

(C) SAP AG

BC400

9-45

Interfaces

Contenu :
Cration d'interfaces dans le Menu Painter Titres Barres de menus Barres d'outils standard 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 : de crer un titre GUI de crer des statuts GUI pour listes et dynpros qui contiennent : des barres de menus des barres d'outils standard des barres d'outils d'application 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 Imprimer Ctrl+P Sauv. dans fich. PC MAJ+F8 Sauvegarder Terminer MAJ+F3 Traiter Saut Systme Aide
! ! ! !

Liste

Modifier les heures devol Donnes de vol de base Imprimer Sauvegarder dans fichier PC Sauvegarder Ctrl+S Terminer Traiter Saut Systme Aide
! ! ! !

Dynpro 0100

SAP AG 1999

Pour terminer, vous allez dfinir une interface utilisateur pour le programme exemple. Les diffrents statuts doivent prsenter les caractristiques suivantes : la liste et l'cran doivent avoir la mme barre de menus. Seules les fonctions excutables sont en caractres noirs ; dans la barre d'outils standard, seules les fonctions excutables sont en couleur. La fonctionnalit du dynpro ne sera modifie en aucun cas ; la barre d'outils d'application figurant dans la liste de base doit comporter une icne "Choisir", tout comme le statut de la liste standard ; 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. B. d'outils d'applic. Donnes de base du vol Affectation Affectation de de touches touches de de fonction fonction Affectation de touches de fonction ; Donnes de base du vol

Donnes de base du vol Traiter Saut Barre de menus

Liste des fonctions SAUVEGARDER PRI RETOUR P+


SAP AG 1999

%PC P++

RW P--

%EX CHOISIR P-

Liste des fonctions

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 P+

%PC P++

RW P--

%EX CHOISIR 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 Attributs de statut Courte description Type de statut Statut pour liste des vols Statut de dialogue Bote de dialogue Menu contextuel LISTE

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 Modle de statut ... Statut de liste cran de slection ...

BASE

Barres de menus Liste B. d'outils d'applic. Affectation de touches de fonction


SAP AG 1999

Liste de slection de ligne Traiter Saut

Liste de slection de ligne

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 B. d'outils d'applic. Positions 1-7 Affectation de touches de fonction Barre d'outils standard
SAUVEGARDER

Barre de menus des donnes de base Barre d'outils d'application des donnes de base
CHOISIR

Affectation de touches des donnes de base

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 Donnes de vol de base


Code Enonc

Barre de menus des donnes de vol Traiter


Code Enonc

Saut
Code Enonc

PRI %PC

Imprimer
Sauveg. ds fichier PC

CHOISIR %SC %SC+ RW

Choisir Trouver Retrouver Annuler

RETOUR

Retour

SAUVEG. Sauvegarder %EX Terminer

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

Barre d'outils d'application des donnes de base 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

Liste Statut "LISTE"


Barres de menus Donnes de base du vol Donnes de base du vol Traiter Saut B. d'outils d'applic. Donnes de base du vol

Titre 100 cran 0100

Statut "CRAN" "CRAN" cran 0100

Affectation de touches de fonction Donnes de base du vol

Liste des fonctions SAUVERETOUR GARDER PRI P+


SAP AG 1999

inactive

%PC P++

RW P--

%EX CHOISIR P-

Liste des fonctions standard

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 : 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 Programme Code du titre Titres Continuer


SAP AG 1999

Code du titre xxxxx 100 Titres Connexions de vol

Sauvegarder Modifier les heures de vol

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 Attributs de statut Dsignation Type de statut CRAN

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 Barre d'outils d'application Affectation de touches de fonction

CRAN 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 : de crer un titre GUI de crer des statuts GUI pour listes et crans qui contiennent : des barres de menus des barres d'outils standard des barres d'outils d'application 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 : Solution modle :

ZBC400_##_DYNPRO 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). 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. Affectez un statut (type : statut de dialogue) lcran. Dans lvnement PROCESS BEFORE OUTPUT, appelez un module qui comprenne linstruction ABAP approprie.
BC400 10-18

1-2

1-3

(C) SAP AG

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 Affectez un titre GUI la liste de base et lcran ( laide de la navigation) et gnrez linterface.

(C) SAP AG

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
.

pour fermer la bote de dialogue.

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


en utilisant

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

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.

(C) SAP AG

BC400

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' 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. FIELD actvt_display.

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 AND AND AND
(C) SAP AG

= wa_sbook-carrid = wa_sbook-connid = wa_sbook-fldate = wa_sbook-bookid.


BC400 10-25

connid fldate 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 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. " USER_COMMAND_0100 INPUT

(C) SAP AG

BC400

10-27

Rutilisation des composantes

Contenu :
Groupes de fonctions et modules de fonction Objets et mthodes Objets de gestion et BAPI 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 : de trouver et utiliser des modules de fonction d'afficher une liste simple en utilisant ALV Grid Controls (objets des classes globales du Gnrateur de classes) d'utiliser un BAPI et trouver des BAPI en utilisant le BAPI Browser 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

Objet

Rutiliser les composantes encapsules dans la logique applicative

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 : de dcrire les diffrentes manires de trouver un module de fonction de dcouvrir des informations importantes sur un module de fonction en utilisant le Gnrateur de modules de fonction 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

le du FM o M

n ce ctio a f er fon In t d e 1

Mo In du te le rfa c d FM e fo e 2 ncti on
ule de f o FM3 nction
Sousprogrammes Interface Paramtres d'import

ction e fon ule d 5 Mod M

Inte r fac e

Module de fonction FM4

Mod

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.

F face Inter

Paramtres d'export

Paramtres de modification

Exceptions

Interface

(C) SAP AG

BC400

11-6

Module de fonction

Groupe de fonctions SousModule de programmes Interface fonction


Gestion

Objets de donnes globaux

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

le du FM o M

n ce ctio a f n er fo Int de 1

Mo In du te le rfa c d FM e fo e n 2 cti on
le d e fo FM3 nction

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

Mod u

Inte rfac e

M od nc e fo ule d 5 M tion F face Inter

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 titre

<ligne de texte>

! <ligne de texte> Oui Non

rponse

rponse

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
SAP AG 1999

Sur un cran appel par le module de fonction 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

Hirarchie des composantes Slectionner des composantes applicatives du systme d'information du Repository

Vous savez qu'un certain programme utilise le module de fonction

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 Import

POPUP_TO_CONFIRM_LOSS_OF_DATA
Export Modification Exceptions Code source

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

Transmettre Facultatif Valeur Description

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

Le systme gnre le code ABAP

CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA' EXPORTING ligne de texte = titre = IMPORTING rponse = CASE SY-SUBRC.

Entrer paramtres effectifs Traiter code retour

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

SAP AG 1999

(C) SAP AG

BC400

11-17

Avantages de la programmation oriente objets

Processus de dveloppement de logiciel intgr


Communication facilite entre utilisateurs et dveloppeurs

Encapsulation
Des programmes plus clairs et plus faciles grer

Polymorphisme 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
Arbre
Mthode Mthode

Maison

Mthode

Donnes Mthode

Donnes Mthode
Mthode

Grue
Mthode Mthode

Donnes Mthode

Bateau
Mthode

Donnes Mthode
Mthode

Les objets sont des abstractions de la ralit 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 Mthode publique : Rserver carrid connid fldate customid cas d'erreur Attributs privs : siges libres passagers

carrid, connid, fdate

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 1 : Instance de Classe "vol"

Objet vol 2 : 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 CREATE OBJECT ref1 EXPORTING ... AA Vol 0016 28.08.1999 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.
SAP AG 1999

Programme ABAP

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

Intgration Office Business Add-ins (nouveau concept d'extension de systme) Contrles 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?


Composantes logicielles binaires indpendantes installes localement sur le frontend et qui utilisent SAPGUI Elles dplacent les fonctions du serveur d'application vers le frontend Elles ont une classe d'objets ddie dans ABAP OO 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 Trier Trouver Filtrer Addition Tldcharger Afficher variante

Imprimer

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

USD USD USD USD DEM DEM DEM DEM DEM

513,69 513,69 513,69 369,00 1234,56 1234,56 1234,56 1234,56 1234,56

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 Process After Input

Domaine cran 100

Custom Container Control

START-OFSELECTION.:

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 Attributs Mthodes vnements Int. Types

Paramtres pour la

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 ... REFRESH_TABLE_DISPLAY ... SET_TABLE_FOR_FIRST_DISPLAY ... Redfinition vnements

Paramtres non facultatifs I_PARENT TYPE REF TO CL_GUI_CONTAINER

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

Business Application Programming Interface

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

Composante B de gestion

Composition des composantes R/3


SAP AG 1999

Composante de gestion

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 Mthodes API

Des informations complmentaires sur les sous-composantes sont disponibles dans les autres outils ABAP Workbench

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 FlightCustomer FlightConnection

Attributs-cls

Mthodes API

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

Dtail

Documentation

Outils

Projet

FlightBooking Compagnie arienne N correspondance Date du vol N rservation

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 GetDetail GetList FlightCustomer FlightConnection
SAP AG 1999

Structure du Dictionnaire BAPISBDTIN

Afficher

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 Interfaces Interfaces Zones-cls Attributs Mthodes vnements

Vue complte de l'objet de gestion

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

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

GetDetail
Renvoie les informations dtailles (attributs) pour l'objet demand

CreateFromData
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

Dtail

Documentation

Outils

Projet

FlightBooking Compagnie arienne N correspondance Date du vol N rservation

Slection d'outils Gnrateur d'objets Gnrateur de modules de fonction Dictionnaire ABAP Contrles de cohrence BAPI Cration de liste BAPI

Annuler CreateFromData GetDetail Retour Donnes de rserv. GetList FlightCustomer FlightConnection

Module de fonction BAPI_SBOOK_GETDETAIL

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 ... TABLES ... DATA ... MODULE init OUTPUT. CALL FUNCTION 'BAPI_...' ... ENDMODULE. MODULE read_data INPUT. CALL FUNCTION 'BAPI_...' ... ENDMODULE. MODULE confirm_reservation. CALL FUNCTION 'BAPI_...'... 'BAPI_...' ... IF ... . CALL FUNCTION 'BAPI_...' ... CALL FUNCTION 'BAPI_...' ... ENDIF. ENDMODULE.
SAP AG 1999

R/3
Business Object Repository Objet de gestion A : Mthode 1 = M1 Mthode 2 = M2

Modules de fonction : BAPI_A_M1 BAPI_A_M2

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

Aucune exception Les erreurs sont gres par des paramtres d'export (structures ou tables)
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 : 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 : la structure de la base de donnes logique l'instruction NODES 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

sont des programmes spciaux d'acquisition de donnes livrs par SAP prsentent les donnes lues au programme utilisateur dans un ordre hirarchique logique accdent aux bases de donnes de manire optimise proposent un cran de slection dynamique 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 : 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. START-OF-SELECTION. GET spfli.

Base de donnes logique

SPFLI
Runtime system ABAP

GET sflight.

SFLIGHT 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 : 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. GET spfli LATE. WRITE :/ 'GET SPFLI LATE'. END-OF-SELECTION. WRITE: 'END-OF-SELECTION' color 3.
SAP AG 1999

START-OF-SELECTION GET SPFLI GET SFLIGHT GET SFLIGHT GET SPFLI LATE GET SPFLI GET SFLIGHT GET SFLIGHT GET SFLIGHT GET SPFLI LATE END-OF-SELECTION DL 1984 25.08.1998 27.09.1998 29.09.1998 DL 1699 25.08.1998 27.09.1998

Au moment de l'excution, les vnements qui crent des listes sont traits dans l'ordre suivant : 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 Attributs


Type Application Log. Datenbank 1 S F1S

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.

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 : de trouver et utiliser des modules de fonction d'afficher une liste simple en utilisant ALV grid control (objets des classes globales du Gnrateur de classes) d'utiliser un BAPI et trouver des BAPI en utilisant le BAPI Browser 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 : Solution modle :

ZBC400_##_DYNPRO 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). 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. Informez-vous sur les interfaces du module de fonction, lisez la documentation, et utilisez lenvironnement de test pour tester le module de fonction. Dans le statut GUI de lcran, activez la fonction "Annuler". 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 :

1-2

1-3 1-4 1-5

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 :
Solution modle :

ZBC400_##_ALV_GRID
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). Testez le programme. Remplissez la table interne avec des enregistrements de la table de donnes SPFLI en utilisant un array-fetch. 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-2 2-3 2-4

2-5 2-6

Crez un domaine de container control lcran. Donnez un nom ce domaine. 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. 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 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.

2-8

2-9

(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 1-3

Le module de fonction sappelle POPUP_TO_CONFIRM_LOSS_OF_DATA. 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 Le code de fonction de la fonction Annuler est RW.
*&--------------------------------------------------------------* *& 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 IMPORTING answer case answer. when 'N'. leave to screen 100. when 'J'. = answer. = text-002

1-4 1-5

(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. " USER_COMMAND_0100 INPUT

(C) SAP AG

BC400

11-66

Chapitre : Rutilisation des composantes Sujet : Objets ABAP et ALV Grid Control

Programme : Solution modle :

ZBC400_##_ALV_GRID

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 2-6 Crez un domaine de contrle conteneur lcran. Appelez le domaine de conteneur CONTAINER_1 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 i_parent = container_r.

CALL METHOD

grid_r->set_table_for_first_display

EXPORTING i_structure_name = 'SPFLI' CHANGING ELSE. CALL METHOD grid_r->refresh_table_display EXPORTING i_soft_refresh = 'X'. ENDIF. ENDMODULE. " CREATE_CONTROL OUTPUT it_outtab = gdt_spfli.

(C) SAP AG

BC400

11-68

Dialogues base de donnes II

Contenu :
Processus de traitement lmentaire LUW BD : unit logique de travail Base de donnes Regroupement des modifications d'une base de donnes 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 : 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 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 cohrent 1

Stade intermdiaire

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

PBO
COMMIT implicite

PAI

Modifications de base de donnes COMMIT explicite

COMMIT implicite

LUW BD
SAP AG 1999

LUW BD

LUW BD

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 Table des blocages

Dure Dure
SAP AG 1999

Objet bloqu

(C) SAP AG

BC400

12-8

Concept de blocage SAP

Blocage a russi Demande de blocage Demande de blocage Blocage a chou Table des blocages

Dure Dure
SAP AG 1999

Objet bloqu

(C) SAP AG

BC400

12-9

Concept de blocage SAP

Blocage a russi Demande de blocage Demande de blocage Blocage a chou

Leve du blocage

Table des blocages

Dure Dure
SAP AG 1999

Objet bloqu

(C) SAP AG

BC400

12-10

Concept de blocage SAP

Blocage a russi Demande de blocage Demande de blocage Blocage a chou

Leve du blocage

Table des blocages Blocage a russi Demande de blocage

4 Objet bloqu

Dure Dure
SAP AG 1999

Objet bloqu

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 : 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 de dcrire le concept de blocage SAP

SAP AG 1999

(C) SAP AG

BC400

12-14

Logistique et modification du logiciel : contenu

Dveloppement de logiciel orient quipe ou projet, dans le Workbench Organizer 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 : de grer un projet dans le systme R/3 en utilisant le Workbench Organizer 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 deR R//3 3 Modification

SAP AG 1999

(C) SAP AG

BC400

13-3

Fin du dveloppement
Planning : ... Fin du dveloppement

Chef de projet : quipe : Tches de contrle de qualit : Contrle de syntaxe Activation d'objets inactifs Documentation de tche Les tches sont libres Projet de contrle contrle de qualit qualit Contrle Contrle de syntaxe Objets inactifs Cohrence Cohrence de tche tche Documentation du projet L'ordre de modification est libr libr ...

BC400-00 BC400-01 BC400-02 BC400-03 BC400-04

SAP AG 1999

(C) SAP AG

BC400

13-4

Originaux et copies

Systme Systme de dveloppement dveloppement

Systme Systme suivant

Objet client

Objet client

Original
Transport Dveloppement

Copie

Objet SAP

Objet SAP

Objet SAP

Original

Copie

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

Systme Systme suivant

Objet client

Objet client

Original corrig corrig


Correction

Copie
Transport correction

Objet SAP

Objet SAP

Objet SAP

Original corrig corrig


Correction

Copie modifie modifie


Rparation

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

Systme Systme suivan

Objet client

Objet client

Original corrig corrig

Copie

Objet SAP

Objet SAP

Objet SAP

Original corrig corrig

Copie modifie modifie


Ajustement de la modification
Transport modification

Copie

Monte Monte de version


SAP AG 1999

Monte Monte de version

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 deR R//3 3 Modification

SAP AG 1999

(C) SAP AG

BC400

13-8

Niveaux de modification
Tches applicatives R/3 ( Standard SAP)

Programmes client

Modification

Extension

Dveloppement client

Modification code en dur Modification assiste

Dictionnaire ABAP
Extension de table Exit de zone

avec appel d'objets SAP sans appel d'objets SAP

Exit client
Exit de module de fonction Exit d'cran Exit de menu

BTE, Business Transaction Events BADI, Business add-in 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 ? Non Oui La fonction SAP peut-elle tre adapte aux besoins du client par des extensions ? Non L'application SAP permet-elle la liaison de plusieurs fonctions aux extensions ? Non

Dveloppement client

Customizing
Oui

Extension
Oui

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

Exits de programme :
exits prdfinis pour les programmes applicatifs.

Extensions du Dictionnaire :
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

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.

Programme

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 : d'affecter un projet au systme R/3 en utilisant le Workbench Organizer 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

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.

Programme

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 : d'affecter un projet au systme R/3 en utilisant le Workbench Organizer 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

Cette section contient des informations supplmentaires utiliser titre de rfrence. Ces informations ne font pas partie de la version standard du cours. 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

Objets modifis modifis Afficher tous les objets de type X qui ont t modifis par l'utilisateur Y en date du JJMMAA

Afficher toutes les zones de table avec table de contrle X

SAP AG 1999

(C) SAP AG

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

CLEAR <wa>.

Espace de travail <wa>

Table interne <itab> CARRID AA LH CONNID 0017 0400

CLEAR <itab>.

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
EQ NE GT GE LT LE = <> > >= < <= =< => ><

Signification
gal Diffrent Suprieur Suprieur ou gal Infrieur Infrieur ou gal Intervalle Valeur initiale

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 ).
SAP AG 1999

BETWEEN f1 and f2 IS INITIAL

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

Instructions

ENDWHILE.

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

DO.
Instructions

CHECK sy-subrc = 0.
Instructions

IF counter GE 10. EXIT. ENDIF.


Instructions

ENDWHILE.

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

CHECK :
Si condition logique non remplie, ...

Boucles :
WHILE, DO, SELECT, LOOP

Terminer boucle en cours

Aller au prochain passage de boucle

vnements :
START-OF-SELECTION GET END-OF-SELECTION

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

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

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

Instructions ABAP

SAP AG 1999

(C) SAP AG

BC400

14-14

Includes TOP
Cration de programme

Repository Browser :
Programme <nom>

Cration de programme
avec TOP INCL.

Programme : <nom>TOP Type de programme : I

REPORT <nom>. TYPES: ... DATA: ...

Programme : <nom> Type de programme : 1

INCLUDE <nom>TOP. 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 Modules de fonction BC400_FREE_SEATS BC400_PERCENTAGE Sous-programmes Includes LBC400TOP LBC400F01 LBC400U01 LBC400U02 LBC400UXX Dfinition de donnes globales Sous-programmes Calcule le nombre de places non rserves Dtermine le pourcentage Calcule le nombre de places non rserves Dtermine le pourcentage

Gr. de fonctions de types d'objet

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

Modules de fonction
Parallle asynchrone Encapsulation: fonctions dialogues
SAP AG 1999

RFC

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
OCC_GT_MAX MAX_EQ_0

FUNCTION bc400_free_seats.
. . .

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 AA 0017 LH 0400 LH 0402 Dpart NEW YORK PARIS FRANCFORT Destination 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 1 2 3 4 5 6 7 col_backgroundArrire-plan col_heading col_normal col_total col_positive col_negative col_group En-ttes Saisies de liste Totaux Valeurs seuils positives Valeurs seuils ngatives Niveaux de contrle

col_keyColonnes-cl

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
SAP AG 1999

Interfaces / contrles SAP

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

DIRECT INPUT :
Fichier squentiel

Table Table BDC BDC

Table Table BDC BDC

Fichier d'attente

CALL TRANSACTION

Programme de transfert ABAP

Fonction Fonction de de batch batch input input Fonction Fonction d'application d'application Fonction Fonction d'application d'application

Base de donnes SAP


SAP AG 1999

Base de donnes SAP

Base de donnes SAP

(C) SAP AG

BC400

14-22

Techniques avances : squencement d'crans dynamiques

Attributs d'cran
Numro d'cran cran suivant 100 100

Attributs d'cran
Numro d'cran cran suivant 200 200

PBO

100

PAI 0

200

PBO

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
Ordre UPDATE

PBO

PAI
Ordre INSERT

PBO

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

Вам также может понравиться