Академический Документы
Профессиональный Документы
Культура Документы
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
SAP AG 1999
(C) SAP AG
BC400
0-4
Connaissances requises
SAP AG 1999
(C) SAP AG
BC400
0-5
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
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
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
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
Rutiliser les composantes Dialogues base de donnes II (Modifier la base de donnes) Logistique logicielle et comparaison logicielle
(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
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
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
SAPGUI
SAPGUI
SAPGUI
SAPGUI
SAPGUI
SAPGUI
Rpartiteur
Rpartiteur
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
Processus de travail
Programme ABAP
Base de donnes
SAP AG 1999
Ce graphique peut tre simplifi pour la plupart des sujets discuts pendant le cours. L'interaction entre les programmes ABAP et leurs utilisateurs sera notre principal intrt pendant ce cours. La comprhension de la conception d'un programme ABAP passe avant celle des processus exacts impliqus dans la rpartition d'utilisateurs sur un serveur d'application. Nous allons donc travailler avec un graphique simplifi qui n'indique pas formellement le rpartiteur et le processus de travail. Certaines diapositives seront, cependant, amliores pour inclure ces dtails lorsqu'ils s'appliquent la programmation ABAP. Les programmes ABAP sont traites sur le serveur d'application. La conception de dialogues utilisateur et de dialogues base de donnes est ds lors de grande importance lors de l'criture de programmes applicatifs.
(C) SAP AG
BC400
2-4
cran
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
Lancement du programme
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
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
Lancement du programme
Repository
SAP AG 1999
Temps
Chaque fois qu'un utilisateur se connecte au systme, un cran s'affiche. partir de cet cran, l'utilisateur peut dmarrer un programme en utilisant son chemin de menus.
(C) SAP AG
BC400
2-8
Lancement du programme
Repository
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
Lancement du programme
Programme ABAP
Objets de donnes
Temps
Comme le programme contient un cran de slection, le runtime system ABAP l'envoie au serveur de prsentation au dbut du traitement du programme. Le serveur de prsentation contrle le droulement du programme aussi longtemps que l'utilisateur remplit les zones de saisie. Les crans de slection permettent aux utilisateurs d'entrer des critres de slection requis par le programme.
(C) SAP AG
BC400
2-10
Lancement du programme
Programme ABAP
Objets de donnes
Temps
Ds que l'utilisateur a termin d'introduire des donnes dans l'cran de slection, il ou elle peut lancer un traitement supplmentaire en slectionnant "Excuter". Chaque saisie de donnes de l'cran de slection est automatiquement place dans son objet de donnes correspondant du programme et le runtime system ABAP reprend le contrle du traitement. Notre programme type contient un seul bloc de traitement ABAP. Le runtime system dclenche un traitement squentiel de ce bloc de traitement ABAP. Si les entres effectues par l'utilisateur ne possdent pas le type correct, un message d'erreur apparat alors automatiquement. L'utilisateur doit corriger ses entres.
(C) SAP AG
BC400
2-11
Lancement du programme
Programme ABAP
Objets de donnes
Temps
Le bloc de traitement ABAP possde un accs la base de donnes en mode lecture qui y a t programm. Le programme transmet galement la base de donnes les informations indiquant quel tableau de la base de donnes elle doit accder et quelle ligne du tableau elle doit lire.
(C) SAP AG
BC400
2-12
Lancement du programme
Programme ABAP
Objets de donnes
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
Lancement du programme
Programme ABAP
Objets de donnes
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
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
Lancement du programme
cran
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
Lancement du programme
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
Lancement du programme
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
Lancement du programme
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
Lancement du programme
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
Lancement du programme
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
Lancement du programme
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
Lancement du programme
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
Lancement du programme
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
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
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
Rutiliser les composantes Dialogues base de donnes II (Modifier la base de donnes) Logistique logicielle et comparaison logicielle
(C) SAP AG
BC400
2-27
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
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
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
Programme ABAP
Indpendant du mandant
Dpendant du mandant
Base de donnes
SAP AG 1999
Repository
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
+ + +
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
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
WM
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
Menu contextuel
Menu contextuel
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
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
diteur diteur
Navigation : un double-clic sur un objet de programme existant Navigation: lance l'outil Workbench correspondant dans la fentre d'objets et vous amne l'endroit correct de l'objet. Navigation forward : : si un objet n'existe pas encore, vous crez Navigation forward l'objet en double-cliquant sur son nom.
SAP AG 1999
Vous pouvez utiliser le menu contextuel pour afficher des objets partir d'une liste d'objets. Le systme slectionne alors automatiquement l'outil adquat pour le traitement de l'objet slectionn. Si l'objet de la liste d'objets que vous souhaitez n'est pas disponible dans le systme, vous pouvez le crer en double-cliquant. Ce qui s'appelle navigation forward.
(C) SAP AG
BC400
3-11
Repository Repository et et Workbench Workbench Analyse Analyse d'un d'un programme programme existant existant
Dterminer Dterminer le le primtre primtre fonctionnel fonctionnel :: excuter excuter un un programme programme Analyse Analyse statistique statistique :: liste liste d'objets d'objets Analyse Analyse dynamique dynamique :: mode mode dbogage dbogage Analyse Analyse du du code code source source
Premier Premier projet projet :: adapter adapter un un programme programme existant existant des des conditions conditions exceptionnelles exceptionnelles
SAP AG 1999
(C) SAP AG
BC400
3-12
Liste
Systme F1 Statut Info techniques Nom du programme Nom d'cran (= numro de dynpro)
SAP AG 1999
Il existe plusieurs manires de dmarrer un programme : Vous pouvez dmarrer un programme partir de la liste d'objets de Object Navigator en utilisant le menu contextuel ou en utilisant l'icne "Test". Si le programme possde un code de transaction, vous pouvez galement l'ajouter au menu. Vous cliquez alors sur l'option du menu avec la souris. Vous pouvez ajouter des programmes la liste des favoris sur l'cran initial. Les programmes peuvent galement devenir disponibles en utilisant les groupes d'activits de l'cran initial. Vous slectionnez ensuite le programme dans la hirarchie de l'cran initial. Vous pouvez dterminer le primtre fonctionnel en excutant le programme. Quel que soit l'cran, vous pouvez accder aux informations sur le nom du programme et le numro d'cran en utilisant Systme -> Statut. Un cran de slection standard a le numro d'cran 1000. Vous pouvez accder aux informations concernant le nom de zone et le type de zone de n'importe quelle zone de l'cran en utilisant F1 -> Info. techniques.
(C) SAP AG
BC400
3-13
SAPBC400WBT_GETTING_STARTED Types d'objets de programme Structures du dictionnaire SBC400_CARRIER Zones PA_CAR WA_BC400 vnements START-OF-SELECTION crans 0100 1000
SAP AG 1999
Vous pouvez afficher une synthse des objets de programme en utilisant la liste d'objets du programme dans Object Navigator. La hirarchie ne montre que les types d'objets pour lesquels des objets existent. Vous pouvez afficher les objets dans la liste secondaire de Object Navigator en doucle-cliquant ou en utilisant le menu contextuel.
(C) SAP AG
BC400
3-14
Dmarrage de programmes
SAPBC400WBT_GETTING_STARTED Clic sur le bouton droit Types d'objets de programme Excuter Structures du dictionnaire Traitement direct Zones PA_CAR Dbogage WA_BC400 vnements START-OF-SELECTION crans 0100 1000 Includes
SAP AG 1999
Si vous dmarrez un programme partir de la liste d'objets de Object Navigator en utilisant le menu contextuel, vous avez deux options. Choisir Excuter -> Direct pour excuter le programme directement. Choisir Excuter -> Dbogage pour excuter le programme en mode dbogage.
(C) SAP AG
BC400
3-15
SAP
chws
pas
ZJJ_KURS_000 ZJJ_FORMS
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
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
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. STOP CALL SCREEN 100. MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
Variante wa_sbc400-carrid 1 - 4 $ LH Variante
SY-SUBRC
SY-TABIX
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
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
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
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
Do ub Do leub Cl lei START-OF-SELECTION. c Cl ic scarr SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 wa_sbc400 WHERE carrid = pa_car. IF sy-subrc = 0. MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. Double-Clic CALL SCREEN 100 100. Dfinition d'cran MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. (dans Screen Painter)
STOP
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
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
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
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
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
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
sbc400_carrier
Bloc de traitement ABAP
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
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
LUFTHANSA WALTERS
SAP AG 1999
Le premier projet est d'tendre un programme existant. Comme aucune extension n'est autorise dans le programme et que les modifications sont viter, la premire tape est de copier le programme et ensuite de le modifier. Vous devez allouer un projet du systme les modifications aux programmes existants, exactement comme vous le feriez pour crer des copies de programmes ou des nouveaux programmes. Par consquent, les diapositives suivantes s'occupent d'abord de savoir comment un projet est reprsent dans le systme R/3.
(C) SAP AG
BC400
3-29
Ordre de modification
FI 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
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
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
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
Fin du dveloppement
Contrle de qualit de tout le ... Repository par BC400-00 Documentation de la tche complte
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
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
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
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
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
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
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
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
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
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 :
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
*&--------------------------------------------------------------*
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
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
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
SAP AG 1999
Le contenu de ce chapitre se concentre sur la dfinition des objets de donnes et des instructions ABAP dtermines.
(C) SAP AG
BC400
4-3
Synthse : types
Types Types Objets es donn Objets de de donnes donnes Attributs Attributs des des instructions instructions ABAP ABAP
SAP AG 1999
(C) SAP AG
BC400
4-4
Objets de donnes
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 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
F1
Aide Identificateur de la compagnie arienne
Nom abrg
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
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
F1
Aide
Infos techniques Infos techniques Donnes de zone Structure Nom de zone lment de donnes
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
BC400
Do ub le -
types de zone
Cl ic
4-8
SAP AG 1999
Vous pouvez rechercher des lments de donnes en utilisant la hirarchie des applications et le systme d'information du Repository. Dans la hirarchie des applications, slectionner les composantes scanner. Allez dans le systme d'information. Choisissez Dictionnaire ABAP --> Objets de base --> lments de donnes et rduisez la recherche. Si vous allez dans le systme d'information partir de la hirarchie des applications, les classes de dveloppement des composantes applicatives slectionnes sont automatiquement slectionnes. Vous pouvez galement aller directement dans le systme d'information. Si vous ne slectionnez pas de classe de dveloppement, l'ensemble du repository est scann.
(C) SAP AG
BC400
4-9
F1
<type> TYPES <user_defined_type> TYPE <type>. Types: Do u Aide la dclaration de types de donnes locaux
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
(C) SAP AG
BC400
4-10
Types Types Objets es donn Objets de de donnes donnes Objets es lmentaires mentaires donn l Objets de de donnes donnes lmentaires Structures Structures Tables Tables internes internes Attributs Attributs des des instructions instructions ABAP ABAP
SAP AG 1999
(C) SAP AG
BC400
4-11
SAP AG 1999
Affectez des types d'objets de donnes en rfrant votre objet soit un type ABAP intgr, soit un type dfini par l'utilisateur, ou encore un objet du dictionnaire ABAP. Si une variable v2 se rfre une variable v1 en utilisant l'option LIKE ( DATA v2 LIKE v1. ), v2 hrite alors son type de v1.
(C) SAP AG
BC400
4-12
Types Types Objets es donn Objets de de donnes donnes Objets es lmentaires mentaires donn l Objets de de donnes donnes lmentaires Structures Structures Tables Tables internes internes Attributs Attributs des des instructions instructions ABAP ABAP
SAP AG 1999
(C) SAP AG
BC400
4-13
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
carrid counter
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
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
MOVE c_gf TO gd_carrid1. gd_carrid2 = gd_carrid1. ADD 1 TO counter. CLEAR CLEAR: gd_carrid1, gd_carrid2, counter.
Programme ABAP
0000
Lorsqu'un programme est lanc, le contexte du programme est charg dans l'aire de stockage du serveur d'application et rendu disponible tous les objets de donnes. Chaque zone lmentaire est considre comme standard quand elle possde une valeur intiale propre son type. Vous pouvez paramtrer vous-mme une valeur de dpart pour une zone lmentaire en utilisant l'option VALUE. Une fois l'option VALUE paramtre, vous devez seulement spcifier un objet de donnes fixe. Vous pouvez copier le contenu de zone d'un objet de donnes vers un autre objet de donnes avec l'instruction MOVE. Si les deux objets de donnes ont des types diffrents, le type est automatiquement converti si une rgle de conversion existe. Si vous souhaitez copier le contenu de zone d'une variable var1 vers une seconde variable var2, vous avez le choix entre deux variantes de syntaxe : MOVE var1 TO var2. var2 = var1. Vous trouverez des informations dtailles sur la copie et les rgles de conversion dans la documentation mots-cls sous MOVEou dans le cours de formation BC402. L'instruction CLEAR rinitialise le contenu de zone d'une variable par la valeur initiale du type dtermin. Vous trouverez des informations dtailles sur les valeurs initiales d'un type dtermin dans la documentation mots-cls sous CLEAR.
(C) SAP AG
BC400
4-17
Dclarations de donnes : DATA: gd_max TYPE sbc400focc-seatsocc, gd_occ TYPE sbc400focc-seatsmax, gd_percentage TYPE sbc400focc-percentage.
COMPUTE
Programme ABAP
SAP AG 1999
Vous pouvez faire prcder les calculs de l'instruction COMPUTE. Cette instruction est facultative. Vous pouvez utiliser une des deux variantes de syntaxe suivantes : COMPUTE v_percentage = v_occupancy * 100 / v_maximum. v_percentage = v_occupancy * 100 / v_maximum. Vous trouverez des informations dtailles sur les oprations et les fonctions disponibles dans la documentation mots-cls sous COMPUTE.
(C) SAP AG
BC400
4-18
WHEN OTHERS.
Instructions
ENDCASE.
IF <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
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
Nom de zone
Oprateur
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
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
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
Programme ABAP
Code source ABAP DATA: wa_scarr TYPE scarr. wa_scarr-carrid wa_scarr-carrid = 'LH'.
SELECT SINGLE * FROM scarr INTO wa_scarr WHERE carrid = wa_scarr-carrid. WRITE: /wa_scarr-carrid wa_spfli-carrid, wa_spfli-carrname. wa_scarr-carrname.
SAP AG 1999
(C) SAP AG
BC400
4-24
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
CARRID LH
SEATSMAX 280
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
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
Types Types Objets es donn Objets de de donnes donnes Objets es lmentaires mentaires donn l Objets de de donnes donnes lmentaires Structures Structures Tables Tables internes internes Attributs Attributs des des instructions instructions ABAP ABAP
SAP AG 1999
(C) SAP AG
BC400
4-27
Type de table
Type de lignes Cl Cl
Squence Cl unique / non-unique
AA LH LH QF SQ UA
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
TABLE STANDARD
NON- UNIQUE
UNIQUE | NON-UNIQUE
UNIQUE
Principalement index
Principalement 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
Dictionnaire ABAP : type de table Type de ligne et accs Type de ligne Type d'accs Cl Dfinition-cl Type de cl Composantes-cls
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
Insrer
Lire
Modifier
Supprimer
SAP AG 1999
Vous pouvez excuter les oprations suivantes sur des enregistrements individuels de tables internes : APPEND ajoute le contenu d'une structure qui a le mme type que la ligne d'une table interne. Cette opration peut tre utilise uniquement avec des tables standard. INSERT insre le contenu d'une structure qui a le mme type que la ligne de table interne. Pour une table standard, cela provoque un APPEND ; pour une table trie, cela provoque une insertion la bonne place ; pour une table d'adresses calcules, cela provoque une insertion suivant l'algorithme d'adresse calcule . READ la ligne. copie le contenu d'une ligne de table interne vers une structure qui a le mme type que
MODIFY crase une ligne de table interne avec le contenu d'une structure qui a le mme type que la ligne.. DELETE supprime une ligne de table interne. COLLECT insre le contenu d'une structure qui a le mme type que la ligne d'une table interne vers une table interne sous une forme compresse. Cette instruction peut tre utilise uniquement pour des tables dont les zones non cl sont toutes numriques. Les valeurs numriques sont cumules pour des cls identiques. Vous trouverez des informations dtailles sur les instructions ABAP dcrites dans cette diapositive dans la documentation mots-cls ABAP.
(C) SAP AG
BC400
4-31
ENDLOOP.
Supprimer
Insrer lignes multiples partir d'une table interne Ajouter Lignes multiples partir d'une table interne
SAP AG 1999
Vous pouvez excuter les oprations suivantes sur des ensembles d'enregistrements de tables internes : LOOP ... ENDLOOP LOOP place une par une les lignes de table interne dans la structure spcifie dans la clause INTO. La structure doit avoir le mme type que la ligne de table interne. Toutes les oprations sur un enregistrement individuel peuvent tre excutes l'intrieur de la boucle. Dans ce cas, le systme fournit les informations sur la ligne traiter dans l'opration d'enregistrement individuel. DELETE supprime les lignes de table interne qui dfinissent la condition <condition>. INSERT copie le contenu de plusieurs lignes d'une table interne vers une autre table interne. APPEND ajoute le contenu de plusieurs lignes d'une table interne vers une autre table standard. Vous trouverez des informations dtailles sur les instructions ABAP dcrites dans cette diapositive dans la documentation mots-cls pour tous les mots-cls ABAP utiles.
(C) SAP AG
BC400
4-32
Trier
SORT SORT
itab <conditions>
CLEAR CLEAR
itab.
SAP AG 1999
Vous pouvez excuter les oprations suivantes sur des tables internes : SORT ou 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
* 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
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
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
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
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
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
Types Types Objets es donn Objets de de donnes donnes Attributs Attributs des des instructions instructions ABAP ABAP
SAP AG 1999
(C) SAP AG
BC400
4-40
Programme ABAP
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
Table T100
S ID N
Texte du message
038 Aucune donne n'existe pour cette slection (insrez une autre valeur) ... ... 049 La compagnie arienne & n'existe pas 078 078 Division Entrepar pour la compagnie arienne & n'existe pas zro ... ...
Il existe un type de dialogue spcial appel le message utilisateur pour les situations d'erreur. Les messages sont dclenchs par l'instruction MESSAGE. Les messages peuvent tre trouvs dans la table T100. Ils sont organiss selon la langue, une classe de messages et un numro trois chiffres. Les messages peuvent contenir jusqu' 4 variables, identifies comme &1, &2, &3, et &4. Si vous souhaitez diter le caractre & et que vous ne souhaitez pas l'utiliser comme une variable, doublez-le, par exemple : "C'est un message avec &&". Dans les longs textes de message, utilisez &v1&, &v2&, &v3&, et &v4& pour leurs variables correspondantes. Vous pouvez crer vos propres classes de messages en utilisant des noms de classes commenant par Y ou par Z.
(C) SAP AG
BC400
4-42
Annn Xnnn MESSAGE Ennn WITH <field1> <field2> <field3> <field4>(<message-class>). Wnnn Innn Snnn
SAP AG 1999
Envoyez des messages avec l'instruction MESSAGE. La langue pour les messages dans la tabe T100 est automatiquement paramtre comme la langue de travail de l'utilisateur. Vous pouvez dfinir la classe de messages suivant le paramtre MESSAGE-ID de l'instruction REPORT. La classe de messages est ds lors paramtre pour l'ensemble du rapport. Introduisez le numro de message dans l'instruction MESSAGE. Introduisez le type de message juste en face du numro de message trois chiffres, ce dernier dtermine comment l'utilisateur du rapport ragit aux messages de dialogue (voir diapositive suivante). Paramtrez les valeurs pour les variables (jusqu' un maximum de quatre) suivant le paramtre WITH. Les zones et les littraux sont galement autoriss. La zone au niveau i remplace donc la variable &i du message. Si les variables du message sont identifies par & ou $, ces caractres gnriques sont fournis avec des valeurs indpendantes de la position des zones de l'instruction message. Outre l'utilisation d'une classe de messages avec l'instruction REPORT, vous pouvez galement ajouter une classe de messages diffrente la commande MESSAGE en introduisant l'ID entre parenthses directement aprs le numro de message. Cependant, cette classe de messages n'est valable que pour un message individuel. Exemple : MESSAGE E004(UD). Utilisez la syntaxe suivante chaque fois que vous souhaitez envoyer un message dynamique : MESSAGE ID <mid> TYPE <mtype> NUMBER <mnr> WITH <field1> <field2> <field3> <field4>. Les zones systme SY-MSGID, SY-MSGTY et SY-MSGNO sont fournies avec la classe de messages, le type de messages et le numro de message respectivement, et les zones systme SY-MSGV1 SY-MSGV4 avec les zones des caractres gnriques.
(C) SAP AG
BC400
4-43
Aide l'diteur Synthse ABAP Mot-cl ABAP Nouvelles caractristiques de ABAP Documentation ABAP et exemples
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
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).
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
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.
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
1-4
(C) SAP AG
BC400
4-49
*&-----------------------------------------------------------------*
REPORT
sapbc400tss_itab_loop
START-OF-SELECTION. * Lire toutes les zones des enregistrements de la table de base de donnes SPFLI dans * La table interne it_spfli. SELECT * FROM spfli INTO TABLE it_spfli. * Au moins un enregistrement slectionn IF sy-subrc = 0. * Copier chaque enregistrement individuel de la table interne vers la structure WA_SPFLI * afin denregistrer des donnes sur la liste LOOP AT it_spfli INTO wa_spfli. WRITE: / wa_spfli-carrid, wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDLOOP.
(C) SAP AG BC400 4-50
ENDIF.
(C) SAP AG
BC400
4-51
Contenu :
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
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 Informations sur sur les les tables tables de de base base de de donnes donnes Lecture Lecture de de tables tables de de base base de de donnes donnes Contrle Contrle d'autorisations d'autorisations Lecture Lecture de de tables tables de de base base de de donnes donnes multiples multiples
SAP AG 1999
(C) SAP AG
BC400
5-3
Dictionnaire ABAP Table transparente SPFLI : Description des attributs de la table de base de donnes SPFLI 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
le
-c l
ic
5-4
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
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
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
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
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
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
SPFLI Liste des vols MANDT CARRID CONNID AIRPFROM AIRPTO DEPTIME .....
SBOOK Rservations MANDT CARRID CONNID FLDATE BOOKID CUSTOMID COUNTER AGENCYNUM .....
11001
11001 H
11001 H
11001 H
Compagnie arienne
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 MANDT CARRID CONNID COUNTRYFR CITYFROM AIRPFROM COUNTRYTO CITYTO AIRPTO FLTIME DEPTIME ARRTIME DISTANCE DISTID FLTYPE
... 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
Informations Informations sur sur les les tables tables de de base base de de donnes donnes Lecture Lecture de de tables tables de de base base de de donnes donnes Contrle Contrle d'autorisations d'autorisations Lecture Lecture de de tables tables de de base base de de donnes donnes multiples multiples
SAP AG 1999
(C) SAP AG
BC400
5-10
FROM <table>
Quelle(s) table(s) ?
Quelles lignes ?
Ligne individuelle
}
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
SELECT ...
Open SQL
Conversion spcifique de base de Base de donnes SQL donnes Interface de base de donnes scarr
SAP AG 1999
Les instructions Open SQL composent un sous-ensemble de Standard SQL qui est entirement intgr dans le langage ABAP. Vous les utilisez pour accder la base de donnes selon une procdure uniforme partir de vos programmes, quel que soit le systme de base de donnes. Les instructions Open SQL sont converties en instructions SQL spcifiques de la base de donnes par l'interface de base de donnes.
(C) SAP AG
BC400
5-12
SELECT SINGLE * FROM scarr INTO wa_scarr WHERE carrid = pa_car. IF sy-subrc = 0. ...
scarr
SAP AG 1999
L'instruction SELECT SINGLE* vous permet de lire une ligne individuelle partir d'une table de base de donnes. Toutes les zones-cls doivent alors comporter la clause WHERE. Elle informe l'interface de base de donnes que toutes les colonnes appartenant cette ligne doivent tre lues. Si vous souhaitez uniquement une slection spcifique de colonnes, vous pouvez y insrer une structure. Vous devez introduire le nom de la structure dans laquelle vous dsirez que l'interface de base de donnes copie un enregistrement de donnes aprs la clause INTO. Cette structure doit tre identique celle des colonnes de la table, qui sont lues et alignes gauche. Si vous utilisez l'option CORRESPONDING FIELDS OF dans la clause INTO, vous pouvez remplir l'espace de travail cible composante par composante. Le systme ne retient que celles qui portent le mme nom que les colonnes de la table. Si vous n'indiquez pas l'option, il complte l'espace de travail partir de la gauche, indpendamment de sa structure. Si le systme trouve l'entre de table rpondant aux conditions spcifies, SY-SUBRC adopte la valeur 0. L'option SINGLE informe la base de donnes qu'une ligne individuelle doit tre lue. La base de donnes termine la recherche une fois cette ligne trouve. SELECT SINGLE apporte donc une meilleure performance d'accs un enregistrement individuel qu'une boucle SELECT, si vous fournissez les valeurs de toutes les zones-cls.
(C) SAP AG
BC400
5-13
Boucles SELECT
Objets de donnes
Programme ABAP
SELECT SELECT carrid connid fldate seatsocc seatsmax FROM sflight INTO wa_sbc400focc WHERE carrid = pa_car.
Instructions pour chaque enregistrement lu
Si vous n'utilisez pas l'option SINGLE dans l'instruction SELECT, le systme lit plusieurs enregistrements multiples de la base de donnes. La liste des zones dtermine les colonnes dont les donnes doivent tre lues. Le nombre de lignes lire peut tre limit par la clause WHERE. Elle effectue des restrictions soit selon les zones-cls de la table de base de donnes, soit selon un index secondaire. Vous trouverez des informations complmentaires sur les zones-cls et les index secondaires dans le Dictionnaire ABAP. Double-cliquez sur la clause FROM de la table pour y accder. Cette clause ne doit comporter que le nom des zones de table que vous voulez lire. Le nom de la table laquelle vous voulez accder se trouve dans la clause FROM. (Exemple d'une instruction correcte : SELECT ... FROM spfli WHERE carrid = ... , exemple d'une instruction incorrecte : SELECT ...FROM spfli WHERE spfli-carrid = ... ) De multiples conditions logiques peuvent tre ajoutes dans la clause WHERE en utilisant AND ou OR. La base de donnes envoie les donnes l'interface sous forme de piles. Le systme d'excution ABAP copie ligne par ligne les enregistrements de donnes dans la zone cible en utilisant une boucle. Il effectue galement le traitement squentiel de toutes les instructions situes entre SELECT et ENDSELECT. SY-SUBRC = 0, lorsque le systme a pu slectionner au moins une entre. Une fois l'instruction SELECT excute dans chaque passage de boucle, la zone de systme SY-DBCNT contient le nombre de lignes lues. Aprs l'instruction ENDSELECT, il contient le nombre total de lignes lues.
(C) SAP AG
BC400
5-14
Objets de donnes
Programme ABAP
SELECT carrid connid fldate seatsmax seatsocc FROM sflight INTO TABLE itab_focc WHERE carrid = pa_car. Interface de base de donnes
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
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
...
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
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
Objet : S_CARRID
CARRID (compagnie arienne) ACTVT (Activit)
ACTVT: 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
ACTVT
03 02 01 x x x x x x
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
S_CARRID
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
Informations Informations sur sur les les tables tables de de base base de de donnes donnes Lecture Lecture de de tables tables de de base base de de donnes donnes Contrle Contrle d'autorisations d'autorisations Lecture Lecture de de tables tables de de base base de de donnes donnes multiples multiples
SAP AG 1999
(C) SAP AG
BC400
5-23
Objet
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
...
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
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
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.
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.
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
2-7
2-8
(C) SAP AG
BC400
5-30
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.
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
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
*&--------------------------------------------------------------*
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
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
*&--------------------------------------------------------------*
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
* 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
*&--------------------------------------------------------------*
REPORT
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
Contenu :
Blocs vnements ABAP Sous-programmes
SAP AG 1999
(C) SAP AG
BC400
6-1
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
Bloc vnement
Interface
Module
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
Bloc vnement
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
Lancement du programme
Programme ABAP
pa_date 20000101
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
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
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
REPORT ...
INITIALIZATION. INITIALIZATION.
pa_date = pa_date - 7.
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
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
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
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
SAP AG 1999
Vous devez dterminer le primtre fonctionnel d'un sous-programme et examiner son nom, son interface et les commentaires. Si le sous-programme contient la fonctionnalit requise, vous avez ensuite besoin des informations suivantes pour tre en mesure d'appeler le sous-programme : nom du sous-programme les paramtres d'interface auxquels il a accs (uniquement en mode lecture) : les paramtres sont rpertoris aprs l'option USING. Le type et l'ordre des paramtres d'interface sont importants. les paramtres d'interface qu'il modifie : les paramtres sont rpertoris aprs l'option CHANGING. Le type et l'ordre des paramtres d'interface sont importants.
(C) SAP AG
BC400
6-10
Programme ABAP
Bloc vnement
Lorsqu'un sous-programme est appel, tous les paramtres d'interface doivent tre remplis par des valeurs. Il existe une distinction entre les paramtres suivants : aprs USING sont indiqus les paramtres que le sous-programme doit seulement lire ; aprs CHANGING sont indiqus les paramtres que le sous-programme modifie. Si le sous-programme est appel partir du bloc de traitement ABAP par une instruction PERFORM, le systme interrompt le bloc de traitement pour traiter le sous-programme de manire squentielle. Lorsque la dernire ligne du sous-programme (ENDFORM.) est atteinte, le systme excute le traitement qui suit l'instruction PERFORM. Vous pouvez retrouver le droulement au moment de l'excution en mode dbogage. Vous avez plusieurs options : traiter le programme entier, sous-programmes inclus, ligne par ligne, en utilisant Pas pas ; excuter un bloc de traitement ligne par ligne en utilisant Excuter. Les sous-programmes sont alors excuts comme un tout ; quitter le traitement pas pas d'un sous-programme et retourner au programme appelant en utilisant Retour.
(C) SAP AG
BC400
6-11
a1
a2
a3
fv1
fv2
fr3
SAP AG 1999
La mthode utilise pour transmettre les paramtres d'interface se trouve dans l'interface du sousprogramme. Les paramtres peuvent tre appels soit par rfrence soit par valeur. Appel par rfrence : l'adresse du paramtre effectif est transmis. Dans le sous-programme, la variable est adresse en utilisant le nom du paramtre formel. Les modifications ont un effet immdiat sur la variable globale. Si seul le nom du paramtre formel est spcifi dans l'interface du sous-programme, le paramtre est alors appel par rfrence. Appel par valeur : lorsque le sous-programme est appel, une variable locale est cre avec le nom du paramtre formel et la valeur du paramtre effectif est copie vers le paramtre formel. Deux types d'appel par valeur existent : Appel par valeur : le paramtre formel est transmis dans l'interface aprs la clause USING comprenant l'option VALUE( <nom paramtre>). Lorsque le sous-programme est appel, le paramtre effectif est copi vers le paramtre formel. Les modifications apportes au paramtre formel affectent uniquement la copie locale, et non le paramtre effectif. Appel par valeur : le paramtre formel est transmis dans l'interface aprs la clause CHANGING comprenant l'option VALUE( <nom paramtre>). Lorsque le sous-programme est appel, le paramtre effectif est copi vers le paramtre formel. Les modifications initialement effectues sur le paramtre formel affectent uniquement la copie locale. Lorsque l'instruction ENDFORM est atteinte, la valeur du paramtre formel est recopie dans le paramtre effectif.
(C) SAP AG
BC400
6-12
Paramtre de saisie
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
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
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.
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
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
*&--------------------------------------------------------------* * text
text
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.
*&--------------------------------------------------------------* * 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
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
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
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
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
002
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
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
START-OF-SELECTION
AT LINE-SELECTION
Mmoire tampon pour liste dtaille
Temps
Dans des programmes excutables, vous pouvez utiliser le bloc vnement AT LINE-SELECTION pour crer des listes dtailles. 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
Liste de base
sy-lsind
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
REPORT sapbc400udd_secondary_list_a. START-OF-SELECTION. WRITE: / text-001 COLOR col_heading, / 'sy-lsind', sy-lsind color 2.
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
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
Zone HIDE
Ligne ... 5 6 ... 11 wa_spflicarrid ... LH LH ... SQ wa_spfliconnid ... 0400 0402 ... 0002
REPORT sapbc400udd_example_2. ... START-OF-SELECTION. SELECT * FROM spfli INTO wa_spfli. WRITE:/ wa_spfli-carrid, wa_spfli-connid, wa_spfli-airpfrom, wa_spfli-airpto, wa_spfli-deptime. HIDE: wa_spfli-carrid, wa_spfli-connid. ENDSELECT. SAP AG 1999
Lorsque l'vnement AT LINE-SELECTION est trait, les objets de donnes d'un programme contiennent les mmes valeurs que celles affiches auparavant dans la liste de base. Cependant, une liste dtaille ncessite souvent des donnes slectionnes dans la liste de base elle-mme. Vous pouvez utiliser la zone HIDE pour stocker certaines donnes de la ligne que vous avez slectionne et les insrer automatiquement o vous en avez besoin dans l'objet de donnes correspondant d'une liste dtaille. Lorsque vous crez une liste de base, dterminez au pralable les informations classer en fonction de la position de leur ligne. Pour cela, utilisez le mot-cl ABAP HIDE, suivi de la liste des objets de donnes voulus. Le systme mmorise automatiquement le nom et le contenu de l'objet de donnes, selon la position de sa ligne dans la liste.
(C) SAP AG
BC400
7-12
Slection de ligne
Zone HIDE
Ligne
Vol Dpart Destination Horaire LH 0400 FRA JFK 10:10:00 LH 0402 FRA JFK 13:30:00 ... SQ 0002 SIN SFO 09:30:00
... 5 6 ... 11
?? LH 0402 ??
??
??
wa_spfli
Ds que l'vnement interactif (AT LINE-SELECTION dans cet exemple) est appel en plaant le curseur sur une ligne et en double-cliquant ou slectionnant ensuite l'icne Slectionner, les valeurs de cette ligne stockes dans la zone HIDE sont recopies dans les zones correspondantes.
(C) SAP AG
BC400
7-13
REPORT sapbc400udd_example_2. ... Symboles de texte : AT LINE-SELECTION. IF sy-lsind = 1. WRITE: text-001, wa_spfli-carrid, wa_spfli-connid. 001 Correspondances
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
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
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.
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
*&--------------------------------------------------------------*
REPORT
sapbc400uds_detail_list.
CONSTANTS actvt_display TYPE activ_auth VALUE '03'. DATA: wa_flight TYPE sbc400focc, wa_sbook TYPE sbook.
START-OF-SELECTION. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD pa_car ID 'ACTVT' FIELD actvt_display.
CASE sy-subrc. WHEN 0. SELECT carrid connid fldate seatsmax seatsocc FROM sflight INTO CORRESPONDING FIELDS OF wa_flight WHERE carrid = pa_car. wa_flight-percentage = 100 * wa_flight-seatsocc / wa_flight-seatsmax. WRITE : / wa_flight-carrid COLOR COL_KEY, wa_flight-connid COLOR COL_KEY, wa_flight-fldate COLOR COL_KEY, wa_flight-seatsocc, wa_flight-seatsmax, wa_flight-percentage,'%'. * Cacher les valeurs de zones-cls correspondant la ligne effective
(C) SAP AG BC400 7-18
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
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
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
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
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
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
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
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
s_carr_id
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
Temps
Quand le bloc vnement INITIALIZATION a t trait, l'cran de slection est envoy au serveur de prsentation. PARAMETERS permet de transporter les valeurs dfinies de l'objet de donnes dans les zones de saisie du mme nom de l'cran de slection. L'utilisateur peut alors modifier les valeurs des zones de saisie. Si l'utilisateur clique ensuite sur la fonction "Excuter", les valeurs des zones de saisie sont transportes vers les objets de donnes portant le mme nom du programme et peuvent tre values dans les blocs de traitement ABAP.
(C) SAP AG
BC400
8-10
REPORT ... DATA wa_spfli TYPE spfli. PARAMETERS pa_car TYPE s_carr_id. ... SELECT SELECT carrid connid cityfrom cityto ... FROM spfli INTO CORRESPONDING FIELDS OF wa_spfli pa_car WHERE carrid = pa_car. WRITE: / wa_spfli-carrid, wa_spfli-connid, wa_spfli-fldate, ... . ENDSELECT ENDSELECT.
SAP AG 1999
Si vous avez utilis l'instruction PARAMETERS pour affecter une zone de saisie la fonction de zone cl d'une table, vous pouvez limiter la slection de donnes en indiquant la clause WHERE dans l'instruction SELECT. Dans notre exemple, seuls les enregistrements de donnes dont la zone-cl CARRID a la mme valeur que celle contenue dans l'objet de donnes pa_car lors de l'excution sont lus dans la table SPFLI.
(C) SAP AG
BC400
8-11
OPTIONS SELECT
Programme ABAP
cran de slection
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
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.
Temps
Si vous saisissez plusieurs valeurs ou plages de valeurs et choisissez "Excuter", le systme les place dans la table interne.
(C) SAP AG
BC400
8-13
REPORT ... DATA WA_SPFLI TYPE SPFLI. SELECT-OPTIONS so_carr FOR wa_spfli-carrid. ... SELECT carrid connid cityfrom cityto ... FROM spfli INTO CORRESPONDING FIELDS OF wa_spfli so_carr WHERE carrid IN so_carr. WRITE: / wa_spfli-carrid, wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, ... ENDSELECT ENDSELECT.
SAP AG 1999
Notre exemple indique comment dlimiter une plage de slection dans une base de donnes pour une option de slection. Interprtation des conditions dclares par SELECT-OPTIONS dans une table interne : si la table interne est vide : la condition <zone> IN <selname> est toujours vraie ; si elle ne contient que des conditions d'inclusion simples i1, ..., in : le rsultat est la condition complexe ( i1 OR ... OR in ) ; si la table interne ne contient que des conditions d'exclusion simples e1, ..., em : le rsultat est la condition combine ( NOT e1 ) AND ... AND ( NOT em ); si la table interne runit les conditions d'inclusion simples i1, ..., in et les conditions d'exclusion simples e1, ..., em, le rsultat est la condition combine ( i1 OR ... OR in ) AND ( NOT e1 ) AND ... AND ( NOT em ).
(C) SAP AG
BC400
8-14
Programme ABAP
INITIALIZATION.
AT SELECTION-SCREEN.
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
Programme ABAP
INITIALIZATION.
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
* 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
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
(C) SAP AG
BC400
8-19
(C) SAP AG
BC400
8-20
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
*&--------------------------------------------------------------*
REPORT
sapbc400uds_sel_screen.
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
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
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
Droulement du programme
flexible
100
120
200 300
140
Aide la recherche
SAP AG 1999
Les dynpros sont plus que de simples moniteurs dots de zones de saisie et d'dition. Vous utilisez les dynpros intgrs au Dictionnaire ABAP pour effectuer des contrles de cohrence automatiques sur leurs zones de saisie. Ces contrles portent sur les saisies, les types, les cls et les valeurs fixes. Ils reposent tous sur les informations contenues dans le Dictionnaire ABAP. Vous pouvez effectuer des contrles complmentaires spcifiques du programme. Des techniques adaptes aux dynpros vous permettent de vrifier l'ordre dans lequel ces contrles sont effectus. Lorsqu'une erreur est dtecte, la zone concerne est appele et raffiche pour une nouvelle saisie. Le layout des dynpros est galement trs flexible. Les zones de saisie, les zones de sortie, les cases d'option, les cases cocher, et mme les boutons de commande peuvent tre placs sur les dynpros. Ils permettent aux utilisateurs de dterminer la direction dans laquel le programme va procder. Les programmes contenant des dynpros se caractrisent donc par une grande souplesse.
(C) SAP AG
BC400
9-3
Code de transaction
100 120
200
140
SAP AG 1999
Vous pouvez appeler un dynpro partir de n'importe quel bloc de traitement ABAP. Pour lier entre eux plusieurs dynpros et les appeler partir d'un programme, appelez le premier. - Certains programmes ABAP se composent uniquement de dynpros et des blocs de traitement correspondants. Dans ce cas, le premier dynpro est appel directement en utilisant un code de transaction.
(C) SAP AG
BC400
9-4
Exemple de dynpro
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
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
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
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
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
Attributs
T
SDYN_CONN-CARRID
Colonne
FCode
FType
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
Attr. gn.
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
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
Dynpro 100
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
Screen 100
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
Screen 100
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
! ! ! !
! ! !
! !
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
START-OF-SELECTION. * SELECT carrid connid airpfrom cityfrom airpto cityto INTO CORRESPONDING FIELDS OF wa_spfli FROM spfli. WRITE: / wa_spfli-carrid COLOR COL_KEY, wa_spfli-connid COLOR COL_KEY, ... . * zones-cls mises en buffer HIDE: wa_spfli-carrid, wa_spfliHIDE: wa_spfli-carrid, wa_spfli-connid. connid. ENDSELECT. AT LINE-SELECTION. SELECT SINGLE * FROM spfli INTO spfli wa_spfli SELECT SINGLE * FROM WHEREwa_spfli carrid = wa_spfli-carrid INTO AND carrid connid==wa_spfli-carrid wa_spfli-connid. WHERE MOVE-CORRESPONDING wa_spfli sdyn_conn. AND connid to = wa_spfli-connid. CALL SCREEN 100.
SAP AG 1999
Pour afficher des donnes sur le dynpro, la structure TABLES doit comporter les donnes actuelles avant que le dynpro ne soit envoy au serveur de prsentation. L'exemple ci-dessus montre une manire d'y parvenir. L'instruction HIDE s'utilise pour placer des zones-cls des tables de base de donnes se rfrant la ligne de liste dans la zone HIDE. Les donnes effectives de la ligne slectionne deviennent ensuite disponibles dans les zones wa_spfli-carrid et wa_spfli-connid l'vnement AT LINE-SELECTION. L'enregistrement de donnes est lu depuis la base de donnes en utilisant SELECT SINGLE. Ceci garantit que la structure contienne les donnes jour, mme si l'utilisateur vient de les modifier. Elle doit tre du mme type que la ligne de table, pour que les zones correctes soient accessibles pour toutes les donnes de l'enregistrement. Les zones correspondantes sont copies vers la structure TABLES sdyn_conn en utilisant MOVECORRESPONDING. Le systme transporte automatiquement les donnes de la structure vers les zones du dynpro.
(C) SAP AG
BC400
9-17
Vol Dpart Destination barre d'tat Dpart LH 0400 FRA Francfort JFK New York LH 0402 FRA Francfort JFK New York ... Dynpro SQ 0002 SIN Singapour SFO San Francisco Modifier donnes donnes de vol C
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
Attributs
T
RETOUR
FType
SAP AG 1999
Pour dfinir la fonction de boutons de commande spcifiques, vous devez affecter ces boutons un code de fonction. Vous pouvez le faire soit sur le dynpro des attributs, soit dans la liste des zones du Screen Painter graphique.
(C) SAP AG
BC400
9-20
diteur ABAP TABLES: sdyn_conn. DATA: DATA: ok_code ok_code like LIKE sy-ucomm. sy-ucomm.
Screen Painter
Code de fonction
...
OK
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
MODULE <name>.
PAI
MODULE <name>.
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
Objets de donnes
Programme ABAP
100
PBO
PAI
Attributs de dynpro
Dynpro suivant
Dynpro suivant 0
Si vous entrez 0 dans la zone Dynpro suivant ou si vous la laissez vide, le systme traite d'abord la totalit du dynpro, puis reprend le traitement du programme au point o le dynpro a t appel.
(C) SAP AG
BC400
9-23
Objets de donnes
Programme ABAP
100
PBO
PAI
Attributs de dynpro
Dynpro suivant
100
Si vous paramtrez 100 le dynpro suivant du dynpro 100, le systme traite nouveau ce dynpro aprs avoir fini de traiter le module PAI.
(C) SAP AG
BC400
9-24
Objets de donnes
Programme ABAP
100
PBO
PAI
Attributs de dynpro
Dynpro suivant
100
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
Sauvegarder
Retour
MODULE user_command_0100 INPUT. * LOGIQUE DE PROGRAMME CASE ok_code. WHEN 'BACK'. ... WHEN 'SAVE'. ... ENDCASE. ENDMODULE.
SAP AG 1999
A l'aide de la zone OK_CODE,diffrentes logiques de programme peuvent maintenant tre excutes par les modules PAI en fonction du choix de l'utilisateur. Si une zone OK_CODE n'est pas rinitialise, des erreurs risquent de se produire car les boutons de commande ne sont pas tous dots d'un code de fonction. Il existe deux manires d'y parvenir : initialisez la zone OK_CODE dans le module PBO. Elle est alors mise sa valeur initiale au moment du PAI, moins que l'utilisateur ait excut une action utilisateur laquelle est affect un code de fonction. Dans ce cas, la zone OK_CODE contient le code de fonction ; utilisez une zone auxiliaire, et dans un module du PAI, copiez le contenu de la zone OK_CODE dans la zone auxiliaire. Rinitialisez alors la zone OK_CODE. Dans ce cas c'est la zone auxiliaire qui doit tre teste dans le module PAI pour valuer le code de fonction.
(C) SAP AG
BC400
9-26
Oui
Non
Annuler
Crer module PAI Module PAI Inclure slection ZBC400_00_DYNPRO diteur ABAP Inclure Programme principal USER_COMMAND_0100
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
. . 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
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
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
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.
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.
(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.
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
Texte
Retour Sauvegarder ou icne ICON_SYSTEM_SAVE
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 :
Action
Aucun D'abord :
BC400
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
*&--------------------------------------------------------------*
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
*&--------------------------------------------------------------*
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.
* 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
*&--------------------------------------------------------------*
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.
*&--------------------------------------------------------------*
(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
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
Traiter
Saut
Systme
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
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
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
%PC P++
RW P--
%EX CHOISIR P-
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
Liste
SAUVERETOUR GARDER
PRI P+
%PC P++
RW P--
%EX CHOISIR P-
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
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
BASE
La fonction "Ajuster modle" du menu Autres fonctions vous permet d'inclure des codes de fonction standardiss dans votre statut. Cette fonction vous permet galement d'inclure des objets d'un statut de votre choix votre statut existant. Il vous permet de choisir des normes pour des statuts de liste et d'crans de slection, ou d'utiliser tout autre statut d'un autre programme ABAP.
(C) SAP AG
BC400
10-8
Barres de menus B. d'outils d'applic. Positions 1-7 Affectation de touches de fonction Barre d'outils standard
SAUVEGARDER
Barre de menus des donnes de base Barre d'outils d'application des donnes de base
CHOISIR
RETOUR
%EX
RW
PRI
%SC
P--
P-
PICK
Choisir
Pour affecter un code une touche de fonction, entrez-le dans l'une des sections d'affectation de touches. Les statuts de type "Liste" acceptent galement des codes de fonction standard. 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
Saut
Code Enonc
PRI %PC
Imprimer
Sauveg. ds fichier PC
RETOUR
Retour
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
inactive
%PC P++
RW P--
%EX CHOISIR P-
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
Statut GUI Le titre 100 n'existe pas. Voulez-vous crer cet objet ? Oui Non Annuler
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
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
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
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.
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
PF-STATUS 'LISTE'
(Note : le texte situ entre les deux apostrophes doit apparatre en majuscules).
PF-STATUS 'LISTE'
Le systme affiche une bote de dialogue contenant les mots "Le statut interface GUI LISTE nexiste pas". Voulez-vous le crer ? Slectionnez pour confirmer. 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
.
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.
*&--------------------------------------------------------------*
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
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. * set title and status of screen 100 set titlebar 'DYNPRO'. set pf-status 'DYNPRO'. endmodule. " SET_STATUS_0100 OUTPUT
*&-------------------------------------------------------* * 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
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
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
Objet
Groupe de fonctions
Objet de gestion
SAP AG 1999
Le systme R/3 offre plusieurs techniques que vous pouvez utiliser pour permettre la rutilisation de la logique applicative. Modules de fonction : peuvent tre appels partir de tout programme ABAP. Les paramtres sont galement transfrs l'interface. Les modules de fonction apparents sont organiss en groupes de fonctions. Une logique de programme et des dialogues utilisateur peuvent tre encapsuls dans les modules de fonction ; des objets : vous pouvez utiliser l'extension compatible "objets ABAP" pour crer des instances d'objets l'excution, avec rfrence aux classes centrales ; des BAPI : mthodes d'objets de gestion, qui sont disponibles grce au Business Object Repository (BOR) ; des bases de donnes logiques : programmes d'acquisition de donnes qui peuvent s'associer des programmes excutables. Elles transfrent les donnes l'aide de structures de hirarchie logiques. Elles permettent l'accs des crans de slection et contiennent des contrles d'autorisation.
(C) SAP AG
BC400
11-3
Groupes Groupes de de fonctions fonctions et et modules modules de de fonction fonction Objets Objets et et mthodes mthodes Objets Objets de de gestion gestion et et BAPI BAPI Bases Bases de de donnes donnes logiques logiques
SAP AG 1999
(C) SAP AG
BC400
11-4
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
Inte r fac e
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
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
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
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
11-8
Oui
Non
SAP AG 1999
Dans de nombreux programmes, une bote de dialogue apparat lorsque l'utilisateur a choisi Annuler. Cette bote de dialogue contient toujours la phrase : "Les donnes seront perdues." Les deux lignes qui la suivent sont spcifiques du contexte, tout comme le titre. L'utilisateur a le choix entre deux options : "Oui" ou "Non". Cette bote de dialogue est encapsule dans le module de fonction.
(C) SAP AG
BC400
11-9
STO1
<ligne de texte>
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
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
Scnario : vous crez un programme dans Object Navigator et quittez l'cran des attributs. Vous voulez savoir s'il est enregistr sous une forme rutilisable. 1. Premire mthode : dans le dbogueur, apposez un point d'arrt dans CALL SCREEN. En cas de russite, le bloc de traitement actuel (sous-programme, module de fonction ou bloc vnement) sera rpertori sous " CALLS"en mode dbogage. Vous pouvez alors examiner l'appel et les paramtres transmis l'interface. 2. Deuxime mthode : dans le dbogueur, apposez un point d'arrt CALL FUNCTION. En cas de russite, le bloc de traitement actuel (sous-programme, module de fonction ou bloc vnement) sera rpertori sous " CALLS"en mode dbogage. Vous pouvez alors examiner l'appel et les paramtres transmis l'interface. 3. Troisime mthode : cliquez sur une zone de texte de la bote de dialogue standard, appuyez ensuite sur F1 et choisissez Infos techniques. Naviguez jusqu' l'cran et afficher les cas d'emploi pour des programmes, regardez ensuite les modules de fonction qui l'utilisent. 4. Quatrime mthode : dans la bote de dialogue Sauvegarder, affichez l'aide (F1) et ensuite Infos techniques. Naviguez jusqu' l'cran pour examiner la logique d'excution et ses modules. 5. Cinquime mthode : dans la hirarchie des composantes, indiquez la composante qui vous intresse (dans ce cas, Services de base), slectionnez-la, naviguez jusqu'au systme d'information du Repository, et regardez sous Programmation -> Gnrateur de modules de fonction -> Modules de fonction et slectionnez Unqt librs.
(C) SAP AG
BC400
11-11
Module de fonction
Attributs 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
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
PAI
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
Modle
Insrer instruction CALL FUNCTION ... ... ... ... POPUP_TO_CONFIRM_LOSS_OF_DATA
CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA' EXPORTING ligne de texte = titre = IMPORTING rponse = CASE SY-SUBRC.
SAP AG 1999
Pour ce faire, utilisez un modle d'instruction de l'diteur ABAP (bouton de commande "Modle"), puis saisissez le nom du module de fonction. Le systme gnre alors l'instruction ABAP CALL FUNCTION '<nom module de fonction>', qui comprend l'interface du module de fonction, et l'insre dans le programme l'emplacement du curseur. Entrez les paramtres effectifs, et crivez les instructions qui traiteront toute ventuelle exception. Affectez la valeur des paramtres d'interface de faon explicite par le nom du paramtre effectif. Pour le programme appelant, les paramtres transmettre au module de fonction sont exports ; ceux transmettre du module de fonction au programme sont imports. Il n'est pas obligatoire d'affecter un paramtre effectif un paramtre optionnel. Dans ce cas, mettez la ligne concerne en commentaire. N'oubliez pas que, lors de l'affectation des paramtres d'un module de fonction, le paramtre du module de fonction se trouve toujours gauche, tandis que le paramtre effectif est droite.
(C) SAP AG
BC400
11-15
Objets et mthodes
Groupes Groupes de de fonctions fonctions et et modules modules de de fonction fonction Objets Objets et et mthodes mthodes Objets Objets de de gestion gestion et et BAPI BAPI Bases Bases de de donnes donnes logiques logiques
SAP AG 1999
(C) SAP AG
BC400
11-16
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
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
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
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
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
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
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
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
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
Imprimer
Barre d'outils
AA AA AA AA LH LH LH LH LH
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
START-OFSELECTION.:
SAP AG 1999
Un conteneur SAP peut contenir d'autres controls (par exemple, SAP ALV Grid Control, Tree Control, SAP Picture Control, SAP Splitter Control, etc.). Il gre ces controls de manire logique dans une collection d'objets et fournit un domaine physique pour l'affichage. Chaque control existe dans un conteneur. Comme les conteneurs sont eux-mmes des controls, ils peuvent s'imbriquer les uns dans les autres. Un conteneur est le parent des controls qu'il contient.
(C) SAP AG
BC400
11-27
Domaine
CL_GUI_CUSTOM_CONTAINER CL_GUI_ALV_GRID
Custom container
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
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 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
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
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
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
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
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
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
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
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
Composante de gestion
Composante B de gestion
Composante de gestion
Un BAPI est une interface qui peut s'utiliser dans de nombreuses applications. Par exemple : - les composantes applicatives Internet permettent l'accs des fonctions R/3 individuelles sur Internet ou Intranet pour des utilisateurs sans exprience R/3 ; - la composition des composantes R/3 permet une communication entre les objets de gestion et les diffrentes composantes R/3 (applications) ; - VisualBasic/JAVA/C++ : des clients externes (par exemple, des GUI alternatifs) peuvent accder directement aux objets de gestion et leurs traitements.
(C) SAP AG
BC400
11-38
Mthodes : FlightBooking.GetList FlightBooking.GetDetail FlightBooking.CreateFromData FlightBooking.Cancel Compagnie arienne Numro de correspondance Date du vol Numro de rservation
SAP AG 1999
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
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
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
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
Hirarchique
Alphabtique
Dtail
Documentation
Outils
Projet
Slection d'outils Gnrateur d'objets Gnrateur de modules de fonction Dictionnaire ABAP Contrles de cohrence BAPI Cration de liste BAPI
Cancel CreateFromData Entre donnes rserv. Retour Donnes de rservation GetDetail GetList FlightCustomer FlightConnection
SAP AG 1999
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
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
Hirarchique
Alphabtique
Dtail
Documentation
Outils
Projet
Slection d'outils Gnrateur d'objets Gnrateur de modules de fonction Dictionnaire ABAP Contrles de cohrence BAPI Cration de liste BAPI
Afficher
SAP AG 1999
Dans la version 4.6, les BAPI sont implments par des modules de fonction. Vous pouvez afficher le module de fonction du BAPI choisi en utilisant le BAPI Explorer : slectionnez le BAPI dans le domaine de hirarchie ; dans la fentre d'affichage des informations dtailles, choisissez l'onglet Outils ; choisissez le Gnrateur de fonctions, le systme affiche le nom du module de fonction ; choisissez Afficher.
(C) SAP AG
BC400
11-46
R/3
Business Object Repository Objet de gestion A : Mthode 1 = M1 Mthode 2 = 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
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
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
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
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
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
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
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
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
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.
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
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
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.
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
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-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
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
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.
PROCESS BEFORE OUTPUT. MODULE STATUS_0100. module create_control. * PROCESS AFTER INPUT. module copy_ok_code. MODULE USER_COMMAND_0100.
*&---------------------------------------------------------------------*
MODULE create_control OUTPUT. IF container_r IS INITIAL. CREATE OBJECT container_r EXPORTING container_name = 'CONTAINER_1'.
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
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
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
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
LUW SAP
SAP AG 1999
Une LUW SAP (unit logique de travail) est une srie d'tapes logiques runies dans un processus de gestion R/3. Les tapes de la chane de traitement du processus de gestion doivent tre logiquement lies. Les LUW SAP fonctionnent selon le principe du "tout ou rien" : le systme effectue toutes les tapes ou aucune. Le processus de gestion reprsent dans une LUW doit tre lmentaire. Ainsi, le processus intervenant depuis la commande d'un client jusqu' la facturation est trop complexe pour tenir dans une seule LUW. Dans ce cas, scindez-le en segments indpendants plus petits qui forment chacun une "transaction" dans le systme R/3. Le caractre "lmentaire" de votre processus dpend de sa nature et de la faon dont vous l'aurez conu.
(C) SAP AG
BC400
12-4
Stade intermdiaire
Stade cohrent 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
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
Dure Dure
SAP AG 1999
Objet bloqu
(C) SAP AG
BC400
12-8
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
Leve du blocage
Dure Dure
SAP AG 1999
Objet bloqu
(C) SAP AG
BC400
12-10
Leve du 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
Dans notre programme d'exemple, il est normal d'crire une entre de blocage, avant que l'enregistrement de donnes ne soit lu et l'cran trait. Vous crivez une entre de blocage en appelant un module de fonction ENQUEUE pour un objet de blocage appropri. Vous trouverez quels objets de blocage accdent une table de base de donnes dans les Cas d'emploi de celle-ci du Dictionnaire ABAP. Les modules de fonction "blocage" et "dblocage" de l'objet de blocage slectionn requirent uniquement les conventions de nom ENQUEUE_<Nom de l'objet de blocage> et DEQUEUE_<Nom de l'objet de blocage>. En rgle gnrale, vous devez uniquement transfrer les zones-cls de l'interface. Les valeurs par dfaut sont transmises tous les autres paramtres.
(C) SAP AG
BC400
12-12
Notre programme d'exemple montre une seule mise jour concernant une seule table. Vous pouvez donc mettre jour la base de donnes directement depuis un work process de dialogue, la technique la plus facile. Les instructions ABAP qui mettent jour la base de donnes sont toutes excutes dans une seule LUW BD. Vous ne devez JAMAIS inclure un dialogue utilisateur entre deux mises jour de la BD. NOTE : ceci inclut les messages d'erreur. En cas d'erreur, le programme doit tre interrompu par un message "Fin anormale" pour qu'un rollback s'excute automatiquement. Des mises jour de base de donnes plus complexes sont excutes par des modules mise jour. Pour plus d'informations, reportez-vous BC414 Programmation des mises jour de la base de donnes.
(C) SAP AG
BC400
12-13
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
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
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
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 ...
SAP AG 1999
(C) SAP AG
BC400
13-4
Originaux et copies
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
Objet client
Objet client
Copie
Transport correction
Objet SAP
Objet SAP
Objet SAP
Copie
Transport rparation
SAP AG 1999
La modification d'un original s'appelle une correction. Le systme enregistre ces modifications dans une demande contenant des tches de type "dveloppement/correction". Si une copie est modifie (donc, si un objet n'est pas modifi dans son systme original), cette modification s'enregistre dans une tche de type "rparation". Une modification d'un objet SAP s'appelle une rparation. Les modifications effectues dans vos propres objets (par ex. une urgence du systme de production) peuvent galement s'inscrire en mme temps dans les originaux du systme de dveloppement. Il est impratif d'enregistrer galement les modifications effectues dans vos copies immdiatement dans vos originaux !! Ce n'est pas possible pour les objets SAP car les originaux ne sont pas dans vos systmes.
(C) SAP AG
BC400
13-6
Objet client
Objet client
Copie
Objet SAP
Objet SAP
Objet SAP
Copie
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
SAP AG 1999
(C) SAP AG
BC400
13-8
Niveaux de modification
Tches applicatives R/3 ( Standard SAP)
Programmes client
Modification
Extension
Dveloppement client
Dictionnaire ABAP
Extension de table Exit de zone
Exit client
Exit de module de fonction Exit d'cran Exit de menu
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
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
Menu 1
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
(C) SAP AG
BC400
13-12
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
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
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
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
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
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
?
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
Objets modifis modifis Afficher tous les objets de type X qui ont t modifis par l'utilisateur Y en date du JJMMAA
SAP AG 1999
(C) SAP AG
BC400
14-2
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
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
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
Transport de donnes
pa_carr sdyn_conn sdyn_conn
TABLES sdyn_conn. PARAMETERS pa_carr LIKE spfli-carrid. MOVE pa_carr TO sdyn_conn-carrid. CALL SCREEN 100.
SAP AG 1999
L'instruction PARAMETERS est un lment de langage dclaratif qui tablit des zones internes dans un tat. Contrairement ce qui se produit avec l'instruction DATA, les zones dclares avec PARAMETERS figurent sur l'cran de slection pour la saisie. Avec l'instruction PARAMETERS, vous utilisez les options TYPE et LIKE, comme avec l'instruction DATA. De mme que vous utilisez DATA avec VALUE pour affecter une valeur initiale, vous spcifiez l'option DEFAULT dans l'instruction PARAMETERS pour fixer la valeur par dfaut de la zone. Cette valeur est un littral, une constante ou une zone systme extraite lors du traitement de l'tat (sydatum, par exemple). Servant d'interface vers l'cran pour toutes les zones, l'instruction TABLES dclare un objet de donnes interne servant d'interface cran pour toutes les zones se rfrant au mme objet du Dictionnaire. L'instruction TABLES dfinit un espace de travail appropri dans votre programme ABAP pour les donnes entres dans un cran ou transfres du programme vers l'cran.
(C) SAP AG
BC400
14-6
CLEAR <wa>.
CLEAR <itab>.
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
DATA
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
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
DO
<n>
TIMES.
Instructions
Instructions
ENDWHILE.
ENDDO.
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
EXIT.
WHILE COUNTER GT 0.
Instructions
DO.
Instructions
CHECK sy-subrc = 0.
Instructions
ENDWHILE.
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
vnements :
START-OF-SELECTION GET END-OF-SELECTION
vnements :
INITIALIZATION AT SELECTION-SCREEN ... ...
Sous-programmes FORM
SAP AG 1999
Lorsque la condition logique suivant le mot-cl n'est pas remplie, utilisez en dehors de la boucle l'instruction CHECK <condition logique> de ABAP pour terminer prmaturment un bloc de traitement. Utilisez aussi l'instruction EXIT en dehors de la boucle pour terminer un bloc de traitement en cours. Cependant, plusieurs vnements font exception cette rgle. Terminez prmaturment votre programme par l'instruction EXIT, incluse dans leurs blocs de temps. Dans ce cas, une liste s'affiche immdiatement aprs le traitement de l'instruction EXIT.
(C) SAP AG
BC400
14-13
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.
SAP AG 1999
(C) SAP AG
BC400
14-15
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
SAP AG 1999
(C) SAP AG
BC400
14-16
Internet / Intranet
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
Exceptions Exceptions
OCC_GT_MAX MAX_EQ_0
FUNCTION bc400_free_seats.
. . .
IF seatsmax = 0. RAISE max_eq_0. ELSEIF seatsocc > seatsmax. RAISE occ_gt_max. ENDIF.
. . .
ENDFUNCTION.
SAP AG 1999
Pour anticiper d'ventuelles erreurs et viter qu'elles ne se rpercutent sur l'excution, affectez-leur un nom dans l'interface du module de fonction. Ensuite, dclenchez-les partir du code de programme par l'instruction RAISE. Chaque programme appelant le module interprtera ces exceptions en testant sy-subrc. Dans un module de fonction, vous pouvez galement garantir l'affichage d'un message d'erreur en cas d'exception, mme si elle n'est pas traite explicitement par le programme appelant. Pour plus d'informations, reportez-vous la documentation, au mot-cl MESSAGE ... RAISING.
(C) SAP AG
BC400
14-18
Exceptions
REPORT. DATA: free_seats LIKE sflight-seatsmax. PARAMETERS: pa_occ LIKE sflight-seatsocc, pa_max LIKE sflight-seatsmax. START-OF-SELECTION. CALL FUNCTION 'BC400_FREE_SEATS' EXPORTING seatsmax = pa_max seatsocc = pa_occ IMPORTING seatsfree = free_seats EXCEPTIONS occ_gt_max = 1 max_eq_0 = 2 others = 3. CASE sy-subrc. WHEN 1. WRITE text-ex1. WHEN 2. WRITE text-ex2. WHEN 3. WRITE text-oth. ENDCASE.
SAP AG 1999
(C) SAP AG
BC400
14-19
Couleurs/icnes/symboles
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
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
Serveur externe
Fichiers squentiels
SAP AG 1999
Lorsque vous transfrez des donnes entre un autre systme SAP ou un systme externe et votre propre systme SAP, vous devez prserver leur intgrit. Vous devez donc soumettre ces transferts aux mmes contrles que les transferts effectus en mode dialogu. Dans les transactions, les contrles en mode dialogu sont trs exhaustifs et, pour partie, interapplications : il vous est donc trs difficile d'en programmer vous-mme. Par consquent, il vaut mieux effectuer le contrle de transactions l'aide des mmes contrles que dans le mode dialogu de SAP. Ceci signifie, dans la pratique, que les transactions SAP servent galement au transfert de donnes. Les techniques utilises pour le transfert de donnes externes s'appellent "processus de batch input". SAP offre des procdures de transfert de donnes externes standardises pour de nombreux domaines de R/3. Ces procdures utilisent les techniques de programmation batch input, call transaction et direct input. Pour accder aux procdures standard de transfert de donnes SAP, utilisez l'atelier de reprise des donnes (transaction SXDA). Si aucune procdure SAP n'est possible, programmez des transferts au cas par cas en utilisant le batch input ou la call transaction.
(C) SAP AG
BC400
14-21
CALL TRANSACTION :
Fichier squentiel
DIRECT INPUT :
Fichier squentiel
Fichier d'attente
CALL TRANSACTION
Fonction Fonction de de batch batch input input Fonction Fonction d'application d'application Fonction Fonction d'application d'application
(C) SAP AG
BC400
14-22
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
SAP AG 1999
Utilisez cette technique pour programmer des clusters d'crans intgrs, sans devoir revenir continuellement au code source et les appeler par CALL SCREEN.
(C) SAP AG
BC400
14-23
tape de dialogue
PBO
PAI
Ordre UPDATE
PBO
PAI
Ordre INSERT
PBO
PAI
Ordre DELETE
Log table
Ordre UPDATE Ordre INSERT Ordre DELETE
UPDATE
INSERT
DELETE
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