Académique Documents
Professionnel Documents
Culture Documents
BC400 PDF
BC400 PDF
concept et outils
BC400
R/3 System
Release 46B
17.08.2000
0
BC400 Introduction à ABAP Workbench : concept
et outils
BC400
Introduction à
ABAP Workbench :
Concept et outils
ã SAP AG 1999
ã SAP AG 1999
n Système R/3
n Version 4.6A
n Novembre 1999
n Numéro d'article 5003 4914
ã SAP AG 1999
n Marques déposées :
n Microsoft ®, Windows ®, NT ®, PowerPoint ®, WinWord ®, Excel ®, Project ®, SQL-Server ®,
Multimedia Viewer ®, Video for Windows ®, Internet Explorer ®, NetShow ®, et HTML Help ®
sont des marques déposées de Microsoft Corporation.
n Lotus ScreenCam ® est une marque déposée de Lotus Development Corporation.
n Vivo ® et VivoActive ® sont des marques déposées de RealNetworks, Inc.
n ARIS Toolset ® est une marque déposée de IDS Prof. Scheer GmbH, Saarbruck
n Adobe ® et Acrobat ® sont des marques déposées de Adobe Systems Inc.
n TouchSend Index ® est une marque déposée de TouchSend Corporation.
n Visio ® est une marque déposée de Visio Corporation.
n IBM ®, OS/2 ®, DB2/6000 ® et AIX ® sont des marques déposées de IBM Corporation.
n Indeo ® est une marque déposée de Intel Corporation.
n Netscape Navigator ®, et Netscape Communicator ® sont des marques déposées de Netscape
Communications, Inc.
n OSF/Motif ® est une marque déposée de Open Software Foundation.
n ORACLE ® est une marque déposée de ORACLE Corporation, California, USA.
n INFORMIX ®-OnLine for SAP est une marque déposée de Informix Software Incorporated.
n UNIX ® et X/Open ® sont des marques déposées de SCO Santa Cruz Operation.
n ADABAS ® est une marque déposée de Software AG
n 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 déposées 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 déposées de SAP AG.
n Les autres produits, services, logos, ou noms de marques sont des marques ou marques déposées de
leurs propriétaires respectifs.
l Connaissances en programmation
l Cours de formation SAP 50 : technologie de base
ã SAP AG 1999
l Participants :
n Membres du projet
l Durée : 5 jours
ã SAP AG 1999
ã SAP AG 1999
ã SAP AG 1999
ã SAP AG 1999
Chapitre 1 Introduction
Chapitre 2 Déroulement du programme dans un programme ABAP
Chapitre 3 Introduction à ABAP Workbench
Chapitre 4 Instructions et déclarations de données ABAP
Chapitre 5 Dialogues base de données I
(lecture à partir de la base de données)
Chapitre 6 Modularisation interne du programme
Chapitre 7 Dialogues utilisateur : liste
Chapitre 8 Dialogues utilisateur : écran de sélection
Chapitre 9 Dialogues utilisateur : écran
Chapitre 10 Interfaces
ã SAP AG 1999
Exercices
Solutions
Annexes
ã SAP AG 1999
Aéroport de départ
ã SAP AG 1999
Contenu :
l Architecture client / serveur
l Programme type avec affichage de données sous forme
de liste
l Programme type avec affichage de données sur un
écran
l Quelles sont les composantes du programme ABAP
développées et dans quels chapitres ?
ã SAP AG 1999
Architecture
Architecture client
client // serveur
serveur
Programme
Programme type
type avec
avec affichage
affichage de
de données
données sous
sous forme
forme de
de liste
liste
Programme
Programme type
type avec
avec affichage
affichage de
de données
données sur
sur un
un écran
écran
Quelles
Quelles sont
sont les
les composantes
composantes du
du programme
programme ABAP
ABAP développées
développées
et
et dans
dans quels
quels chapitres
chapitres ??
ã SAP AG 1999
Présentation
Serveur
Niveau SAPGUI SAPGUI SAPGUI SAPGUI SAPGUI SAPGUI
Répartiteur Répartiteur
Application
Serveur
Niveau Processus Processus Processus Processus
de travail de travail de travail de travail
ã SAP AG 1999
n Le système R/3 a une architecture logicielle modulaire qui suit les principes orientés logiciel
client/serveur.
n Le système R/3 affecte des présentations, des applications, et des enregistrements de données à
différents ordinateurs. Il sert de base à l'évolutivité du système R/3.
n Le niveau le plus bas est le niveau base de données. Les données y sont gérées grâce à un système
de gestion de base de données relationnelle (RDBMS). Outre les données de base et les données de
mouvement, les programmes et les métadonnées qui décrivent le système R/3 y sont également
stockés et gérés.
n Les programmes ABAP, qui comprennent aussi bien les applications fournies par SAP que celles que
vous développez vous-même, sont exécutés au niveau application. Ils exploitent des données
appelées au niveau base de données et y stockent de nouvelles informations.
n Le troisième niveau est le niveau présentation (SAPGUI). Ce niveau comprend l'interface
utilisateur par lequel un utilisateur final peut accéder à une application, entrer de nouvelles données
et recevoir les résultats d'un processus de travail.
n La répartition technique du logiciel est indépendante de sa localisation physique dans le système.
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 présentation peuvent être réparties sur un nombre x de stations. La distribution
horizontale des composantes des bases de données dépend toutefois du type de base installé.
Présentation
Serveur
Niveau
Processus de travail
Base de
données
ã SAP AG 1999
n Ce graphique peut être simplifié pour la plupart des sujets discutés pendant le cours. L'interaction
entre les programmes ABAP et leurs utilisateurs sera notre principal intérêt pendant ce cours. La
compréhension de la conception d'un programme ABAP passe avant celle des processus exacts
impliqués dans la répartition d'utilisateurs sur un serveur d'application. Nous allons donc travailler
avec un graphique simplifié qui n'indique pas formellement le répartiteur et le processus de travail.
Certaines diapositives seront, cependant, améliorées pour inclure ces détails lorsqu'ils s'appliquent à
la programmation ABAP.
n Les programmes ABAP sont traitées sur le serveur d'application. La conception de dialogues
utilisateur et de dialogues base de données est dès lors de grande importance lors de l'écriture de
programmes applicatifs.
Écran
Boîte noire
Écran de sélection
Liste
ã SAP AG 1999
Temps
n L'utilisateur s'intéresse principalement à la façon dont l'opération se déroule et dont les données
peuvent être introduites et affichées depuis l'opération. Les détails techniques, comme savoir si un
seul programme est exécuté ou si de multiples programmes sont appelés de manière implicite, ou les
différences techniques entre les types d'écran affichés, sont généralement moins importants pour
l'utilisateur. L'utilisateur ne doit pas nécessairement connaître le déroulement précis du programme
ABAP sur le serveur d'application. Le système R/3 comme les serveurs d'application et la base de
données sont représentés par une boîte noire pour l'utilisateur.
n Il existe, cependant, trois types d'écran techniquement distincts (écrans, écrans de sélection, et listes)
qui offrent différents services à l'utilisateur. Le travail du développeur est de déterminer quel type de
dialogue utilisateur convient le mieux aux besoins de l'utilisateur.
Table de
base de
données
Bloc de
traitement
ABAP
ã SAP AG 1999
n Lorsque l'utilisateur exécute une action utilisateur (en choisissant, par exemple, Entrée, une touche
de fonction, une fonction du menu ou un bouton de commande), le contrôle passe du serveur de
présentation au serveur d'application et certaines parties du programme ABAP sont exécutées. Si un
dialogue utilisateur supplémentaire est lancé lors du programme ABAP, le système envoie un écran
au serveur de présentation et le contrôle est à nouveau transféré au serveur de présentation.
Architecture
Architecture client
client // serveur
serveur
Programme
Programme type
type avec
avec affichage
affichage de
de données
données sous
sous forme
forme de
de liste
liste
Programme
Programme type
type avec
avec affichage
affichage de
de données
données sur
sur un
un écran
écran
Quelles
Quelles composantes
composantes des
des programmes
programmes ABAP
ABAP sont
sont développées
développées
dans
dans quels
quels chapitres
chapitres ??
ã SAP AG 1999
Lancement Repository
du programme
Table de
base de
données
n Chaque fois qu'un utilisateur se connecte au système, un écran s'affiche. À partir de cet écran,
l'utilisateur peut démarrer un programme en utilisant son chemin de menus.
Objets de données
Table de
base de
données
Bloc de
traitement
ABAP
n 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 mémoire pour
les variables et les objets de données complexes, les informations d'écrans pour dialogues utilisateur
et les blocs de traitement ABAP. Le runtime system reçoit les informations de programme du
Repository, qui représente une partie spécifique de la base de données.
n Le programme type a un écran de sélection comme dialogue utilisateur, une variable et une structure
comme objets de données et un bloc de traitement ABAP. La liste utilisée pour afficher les données
est créée de manière dynamique au moment de l'exécution.
n Le déroulement ultérieur du programme est contrôlé par le runtime system ABAP.
Objets de données
Table de
base de
données
Bloc de
traitement
ABAP
n Comme le programme contient un écran de sélection, le runtime system ABAP l'envoie au serveur
de présentation au début du traitement du programme. Le serveur de présentation contrôle le
déroulement du programme aussi longtemps que l'utilisateur remplit les zones de saisie.
n Les écrans de sélection permettent aux utilisateurs d'entrer des critères de sélection requis par le
programme.
Objets de données
Table de
base de
données
Bloc de
traitement
ABAP
n Dès que l'utilisateur a terminé d'introduire des données dans l'écran de sélection, il ou elle peut lancer
un traitement supplémentaire en sélectionnant "Exécuter". Chaque saisie de données de l'écran de
sélection est automatiquement placée dans son objet de données correspondant du programme et le
runtime system ABAP reprend le contrôle du traitement. Notre programme type contient un seul bloc
de traitement ABAP. Le runtime system déclenche un traitement séquentiel de ce bloc de traitement
ABAP.
n Si les entrées effectuées par l'utilisateur ne possèdent pas le type correct, un message d'erreur
apparaît alors automatiquement. L'utilisateur doit corriger ses entrées.
Objets de données
Table de
base de
données
Bloc de
traitement
ABAP
n Le bloc de traitement ABAP possède un accès à la base de données en mode lecture qui y a été
programmé. Le programme transmet également à la base de données les informations indiquant à
quel tableau de la base de données elle doit accéder et quelle ligne du tableau elle doit lire.
Objets de données
Table de
base de
données
Bloc de
traitement
ABAP
Objets de données
Table de
base de
données
Bloc de
traitement
ABAP
n La structure d'affichage de la liste suivante a aussi été programmée dans le bloc de traitement. Une
fois tous les traitements effectués, le runtime system envoie l'écran de synthèse au serveur de
présentation.
Architecture
Architecture client
client // serveur
serveur
Programme
Programme type
type avec
avec affichage
affichage de
de données
données sous
sous forme
forme de
de liste
liste
Programme
Programme type
type avec
avec affichage
affichage de
de données
données sur
sur un
un écran
écran
Quelles
Quelles sont
sont les
les composantes
composantes du
du programme
programme ABAP
ABAP développées
développées
et
et dans
dans quels
quels chapitres
chapitres ??
ã SAP AG 1999
n Dans cette partie du chapitre, l'utilisateur lance un deuxième programme type là où un identificateur
de compagnie aérienne peut être introduit sur l'écran de sélection initial. Ce programme utilise par la
suite ces saisies d'information sur l'écran de sélection pour retrouver le "nom complet de la
compagnie aérienne" et la "devise locale de la compagnie aérienne" dans la base de données et les
afficher sur un écran pour l'utilisateur.
Table de
base de
données
Écran Bloc de
traitement
ABAP
n 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 sélection, un écran,
et une variable et deux structures pour objets de données.
Table de
base de
données
Écran Bloc de
traitement
ABAP
n Comme le programme contient un écran de sélection, le runtime system ABAP l'envoie au serveur
de présentation au début du traitement du programme.
Table de
base de
données
Écran Bloc de
traitement
ABAP
n Dès que l'utilisateur a terminé d'introduire des données dans l'écran de sélection, il ou elle peut lancer
un traitement supplémentaire en sélectionnant "Exécuter". Chaque saisie de données de l'écran de
sélection est alors automatiquement placée dans son objet de données correspondant du programme
et le runtime system ABAP reprend le contrôle du traitement. Le runtime system lance alors un
traitement séquentiel du bloc de traitement ABAP qui suit l'écran de sélection.
Table de
base de
données
Écran Bloc de
traitement
ABAP
n Le bloc de traitement ABAP possède un accès à la base de données en mode lecture qui y a été
programmé. Le programme transmet également à la base de données les informations indiquant à
quel tableau de la base de données elle doit accéder et quelle ligne du tableau elle doit lire.
Table de
base de
données
Écran Bloc de
traitement
ABAP
Table de
base de
données
Écran Bloc de
traitement
ABAP
Process
Before
Output
n À ce stade, le bloc de traitement ABAP lance le traitement de l'écran. Cette étape est souvent
exprimée simplement par "Le programme appelle l'écran". Cependant, en réalité, chaque écran
possède son propre bloc de traitement qui est traité de manière séquentielle avant que le runtime
system envoie l'écran au serveur de présentation (Process Before Output). Ceci permet d'utiliser
l'écran de manière très flexible.
Table de
base de
données
Écran Bloc de
traitement
ABAP
Process
Before
Output
n Une fois le bloc de traitement de l'écran traité, le runtime system ABAP envoie l'écran au serveur de
présentation. Pendant ce traitement, les données sont transportées vers les zones de l'écran depuis
une structure qui sert d'interface à l'écran.
Table de
base de
données
Écran Bloc de
traitement
ABAP
Process
Before
Output
Process
After
Input
n Dès que l'utilisateur exécute une action utilisateur (en sélectionnant par exemple Entrée, une touche
de fonction, une fonction de menus ou un bouton de commande), le contrôle est repris par le système
de durée d'exécution du serveur d'application. Les zones de dynpro sont transportées vers la structure
qui sert d'interface à l'écran et un bloc de traitement spécial appartenant à l'écran est lancé. Ce bloc
de traitement est toujours traité immédiatemment après une action utilisateur (Process After Input).
Table de
base de
données
Écran Bloc de
traitement
ABAP
Process
Before
Output
Process
After
Input
n 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.
Architecture
Architecture client
client // serveur
serveur
Programme
Programme type
type avec
avec affichage
affichage de
de données
données sous
sous forme
forme de
de liste
liste
Programme
Programme type
type avec
avec affichage
affichage de
de données
données sur
sur un
un écran
écran
Quelles
Quelles sont
sont les
les composantes
composantes du
du programme
programme ABAP
ABAP développées
développées
et
et dans
dans quels
quels chapitres
chapitres ??
ã SAP AG 1999
Chapitre 1 Introduction
Chapitre 2 Déroulement du programme dans un programme ABAP
Chapitre 3 Introduction à ABAP Workbench
Chapitre 4 Instructions et déclarations de données ABAP
Chapitre 5 Dialogues base de données I
(lecture à partir de la base de données)
Chapitre 6 Modularisation interne du programme
Chapitre 7 Dialogues utilisateur : liste
Chapitre 8 Dialogues utilisateur : écran de sélection
Chapitre 9 Dialogues utilisateur : écran
Chapitre 10 Interfaces
ã SAP AG 1999
Exercices
Solutions
Annexes
ã SAP AG 1999
Contenu :
l Repository et Workbench
l Analyse d'un programme existant
l Premier projet : adapter une copie d'un programme
existant pour remplir des besoins spécifiques
ã SAP AG 1999
ã SAP AG 1999
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 spécifiques
des besoins spécifiques
ã SAP AG 1999
Présentation
Serveur
Niveau
ã SAP AG 1999
n La base de données, comme le Repository, contient des tables de customizing et des tables
applicatives qui sont généralement dépendant mandant.
n Le Repository contient tous les objets de développement, par exemple, des programmes, des
définitions de tables de base de données et de types globaux. Les objets de développement sont par
conséquent aussi connus comme objets du Repository. Les objets du Repository ne sont pas
dépendant mandant.. Vous pouvez donc les visualiser et les utiliser pour tout mandant.
par BC400-00
FI HR MM
SD WM
MM MM
MM
Cust.
Classes de développement
Modules de fonction
Programmes
Tables
...
ã SAP AG 1999
n Tous les objets de développement créés avec les outils de développement de ABAP Workbench sont
classés comme objets du repository et sont stockés de manière centrale dans le Repository R/3..
n Le Repository R/3 est une partie spéciale de la base de données centrale du système SAP.
n Le Repository s'organise selon l'application. Chaque application est encore subdivisée de façon
logique en classes de développement.
n Les objets du Repository sont souvent composés de sous-objets qui sont eux-mêmes des objets du
Repository.
n Chaque objet du Repository doit être affecté à une classe de développement lors de sa création.
n Vous pouvez utiliser le système d'information du Repository pour chercher des objets du
Repository selon plusieurs critères.
+ CA Composantes inter-applications
+ AC Gestion comptable - Généralités
+ FI Comptabilité financière
...
Comptabilité financière 'système de base' FBAS
...
+ FI-GL Gestion comptable grand livre
+ FI-LC Consolidation
...
+ TR Trésorerie
+ CO Contrôle de gestion
+ ...
Composantes applicatives
Système d'information
Classe de développement
Sous-arbre sélectionné
ã SAP AG 1999
n Vous pouvez visualiser la structure du Repository dans la hiérarchie des applications. Vous pouvez
naviguer vers la hiérarchie des applications à partir de l'écran initial en utilisant Outils-> ABAP
Workbench -> Synthèse-> Hiérarchie des applications. (Transaction SE81).
n Les composantes applicatives sont affichées selon une arborescence de la hiérarchie des applications.
En développant une composante, vous affichez toutes les classes de développement qui sont
affectées à cette composante.
n Vous pouvez sélectionner un sous-arbre et naviguer à partir de la hiérarchie des applications vers le
système d'information du Repository. Le système collecte ensuite toutes les classes de
développement pour le sous-arbre sélectionné et les transfère vers le système d'information.
n Vous pouvez utiliser le système d'information du Repository pour chercher des objets spécifiques du
Repository. Des critères de recherche sont disponibles pour les différents types d'objets du
Repository.
n Vous pouvez naviguer vers le système d'information du Repository en utilisant
Le bouton de commande Système d'information dans la hiérarchie des applications
Le chemin de menus Outils -> ABAP Workbench -> Synthèse-> Système d'information
Débogueur
Screen Painter
Menu Painter Object
FI HR MM
Navigator
SD WM
MM
Cust. Dictionnaire
ABAP
Éditeur ABAP
Générateur de
modules de
fonction
Générateur de classes
ã SAP AG 1999
n ABAP Workbench contient différents outils pour le traitement d'objets du Repository. Ces outils
vous fournissent une large gamme d'assistance qui couvre l'ensemble du cycle de développement du
logiciel.
Les outils les plus importants à la création et à l'édition d'objets du Repository sont :
n Éditeur ABAP pour l'écriture et l'édition du code de programme
n Dictionnaire ABAP pour le traitement des définitions de tables de base de données et la
récupération de types globaux
n 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)
n Screen Painter pour la conception d'écrans (programmes dynamiques) de dialogues utilisateur
n Générateur de modules de fonction pour l'affichage et le traitement de modules de fonction
(routines avec des interfaces définis qui sont disponibles dans tout le système)
n Générateur de classes pour l'affichage et le traitement des classes centrales
n Il existe deux manières différentes 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 série d'objets suivante...
Soit vous travaillez avec Object Navigator: Cette transaction vous fournit une synthèse sous
forme d'arborescence de tous
les objets d'une classe de développement ou d'un programme.
ã SAP AG 1999
ã SAP AG 1999
SAPBC400WBT_GETTING_STARTED
Types d'objets de programme
Structures du dictionnaire
SBC400_CARRIER Éditeur
Zones
PA_CAR Éditeur
WA_BC400
Événements
START-OF-SELECTION Éditeur
Écrans
0100 Screen Painter
1000
Navigation
Navigationforward : : si un objet n'existe pas encore, vous créez
forward
l'objet en double-cliquant sur son nom.
ã SAP AG 1999
n Vous pouvez utiliser le menu contextuel pour afficher des objets à partir d'une liste d'objets. Le
système sélectionne alors automatiquement l'outil adéquat pour le traitement de l'objet sélectionné.
n Si l'objet de la liste d'objets que vous souhaitez n'est pas disponible dans le système, vous pouvez le
créer en double-cliquant. Ce qui s'appelle navigation forward.
Repository
Repository et
et Workbench
Workbench
Analyse
Analyse d'un
d'un programme
programme existant
existant
Déterminer
Déterminer le
le périmètre
périmètre fonctionnel
fonctionnel :: exécuter
exécuter un
un programme
programme
Analyse
Analyse statistique
statistique :: liste
liste d'objets
d'objets
Analyse
Analyse dynamique
dynamique :: mode
mode débogage
débogage
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
Système
F1
Statut
Info techniques
Nom du programme
Nom d'écran Nom de zone
(= numéro de dynpro) Type de zone
ã SAP AG 1999
SAPBC400WBT_GETTING_STARTED
Types d'objets de programme
Structures du dictionnaire
SBC400_CARRIER
Zones
PA_CAR
WA_BC400
Événements
START-OF-SELECTION
Écrans
0100
1000
ã SAP AG 1999
n Vous pouvez afficher une synthèse des objets de programme en utilisant la liste d'objets du
programme dans Object Navigator.
n La hiérarchie ne montre que les types d'objets pour lesquels des objets existent.
n Vous pouvez afficher les objets dans la liste secondaire de Object Navigator en doucle-cliquant ou en
utilisant le menu contextuel.
ã SAP AG 1999
n Si vous démarrez un programme à partir de la liste d'objets de Object Navigator en utilisant le menu
contextuel, vous avez deux options.
Choisir Exécuter -> Direct pour exécuter le programme directement.
Choisir Exécuter -> Débogage pour exécuter le programme en mode débogage.
Zones
Programme principal ZJJ_KURS_000 Point d'arithmétique fixe
Pas
Code source de à pas ZJJ_FORMS $ 15 - 30 #
n Le démarrage du programme en mode débogage vous permet d'exécuter le programme ligne par
ligne en utilisant l'icône "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 entrée en double-cliquant sur le nom de zone du code affiché.
X
SAP
Débogueur ABAP
Point de surveillance ❁
chws
Zones
Programme principal ZJJ_KURS_000 Point d'arithmétique fixe
Continuer
Code source de ZJJ_FORMS $ 15 - 30 #
n Vous pouvez apposer un point d'arrêt en double-cliquant en face d'une ligne de code source en mode
débogage. Si vous cliquez sur l'icône "Continuer", le programme sera exécuté jusqu'à l'endroit où le
point d'arrêt suivant est défini.
n Vous pouvez trouver des informations relatives aux points d'arrêt dans le chapitre Instructions et
déclarations de données ABAP.
TABLES sbc400_carrier.
DATA wa_sbc400 TYPE sbc400_carrier.
PARAMETERS pa_car TYPE scarr-carrid.
START-OF-SELECTION
START-OF-SELECTION.
SELECT SINGLE * FROM scarr
INTO CORRESPONDING FIELDS OF wa_sbc400
WHERE carrid = pa_car.
IF sy-subrc = 0.
IF
MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier.
CALL SCREEN 100.
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
ã SAP AG 1999
START-OF-SELECTION.
* Read data record from database table SCARR Commentaire
WRITE:/
WRITE: / wa_sbc400-carrid COLOR COL_KEY,, Chaîne d’instructions
wa_sbc400-carrname,,
wa_sbc400-currcode..
ENDIF.
ã SAP AG 1999
n Des instructions consécutives comportant des mots-clés initiaux identiques peuvent être
condensées dans une seule instruction en chaîne.
Dans des instructions en chaîne, la partie initiale de l'instruction contenant le mot-clé doit être
suivie par un deux-points.
Les éléments individuels qui suivent le deux-points doivent toujours être séparés par des virgules.
Des espaces vides sont autorisés avant et après toute ponctuation (deux-points, virgules, points).
N'oubliez pas que le système continue de considérer les parties individuelles d'une instruction en
chaîne comme des instructions complètes indépendantes l'une de l'autre.
n Il existe deux manières d'insérer des commentaires dans un programme :
Un astérisque (*) dans la colonne 1 vous permet de désigner toute la ligne comme commentaire.
Les guillemets (") placés au milieu d'une ligne désignent le reste de la ligne comme commentaire.
ENDIF.
ã SAP AG 1999
n Vous pouvez afficher des informations détaillées sur de simples objets dans l'Éditeur en double-
cliquant :
Un double-clic sur le nom de la table de base de données affiche la définition d'une table de base
de données en utilisant le dictionnaire ABAP dans la fenêtre 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
données est défini.
Un double-clic sur un numéro d'écran affiche l'écran en utilisant le Screen Painter dans la fenêtre
d'objets de Object Navigator.
n Utilisez la fonction Retour pour revenir sur l'affichage du code source du programme dans l'Éditeur.
n Vous pouvez également mettre un point d'arrêt dans n'importe quelle ligne du code source dans
l'Éditeur. Ensuite, démarrez le programme sans sélectionner le mode débogage. Le programme
s'exécutera alors jusqu'à l'endroit où le point d'arrêt est défini. À cet endroit, le mode débogage est
lancé.
Aide
i Aide de l'Éditeur
Synthèse ABAP
Terme ABAP WRITE
START-OF-SELECTION. Nouveautés 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-clés
ã SAP AG 1999
n Plusieurs manières de naviguer dans la documentation mots-clés 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'icône Information affiche une boîte de dialogue qui vous offre plusieurs vues de la
documentation mots-clés.
TABLES sbc400_carrier.
DATA wa_sbc400 TYPE sbc400_carrier. 1
PARAMETERS pa_car TYPE scarr-carrid.
START-OF-SELECTION.
SELECT SINGLE * FROM scarr
INTO CORRESPONDING FIELDS OF wa_sbc400 2
WHERE carrid = pa_car.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier.
CALL SCREEN 100. 3
MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400.
ã SAP AG 1999
n Si vous désirez des informations plus précises sur des parties du code source, vous pouvez analyser
le code source. Les diapositives suivantes expliquent les instructions les plus importantes du
programme type.
TABLES sbc400_carrier.
DATA wa_sbc400 TYPE sbc400_carrier. 1
PARAMETERS pa_car TYPE scarr-carrid.
Programme ABAP
sbc400_carrier
wa_sbc400 Objets de données
pa_car
ã SAP AG 1999
n Il existe plusieurs instructions que vous pouvez utiliser pour définir des objets de données.
L'instruction TABLES se réfère toujours à un type global d'une structure plate qui est définie dans
le dictionnaire ABAP. Le type de structure pour l'objet de données du programme est tiré du
dictionnaire. Le nom de l'objet de données est identique au nom du type de structure. Ils sont
généralement utilisés comme un interface à l'écran.
L'instruction DATA est généralement utilisée pour définir des objets de données locaux. Le type
d'objets de données est spécifié en utilisant l'option TYPE.
L'instruction PARAMETERS définit non seulement un objet de données élémentaires, mais aussi
une zone de saisie sur l'écran de sélection standard qui est traité lors du lancement du programme.
n Lorsque vous activez un programme, une version de chargement interne est générée. Un écran de
sélection est généré à partir de l'instruction PARAMETERS. Lorsque le programme démarre, les
zones de mémoire deviennent disponibles pour les objets de données.
n Vous trouverez des informations complémentaires sur les objets de données dans le chapitre intitulé
Instructions et déclarations de données ABAP, ou dans la documentation mots-clés.
Programme ABAP
Objets de données
pa_car Table de
pa_car
base de
données
wa_sbc400
wa_sbc400
SCARR
Bloc de
traitement
ABAP
ã SAP AG 1999
n L'instruction SELECT s'assure que les données se lisent à partir de la base de données. Afin de lire
un enregistrement à partir d'une table de base de données, les informations suivantes doivent être
transférées dans la base de données :
À partir de quelle table de base de données se lisent les données ? (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 données ont
quelles valeurs. Pour une instruction SELECT SINGLE, la condition doit être formulée de sorte
qu'une ligne soit spécifiée sans aucune ambiguité.
Programme ABAP
Objets de données
pa_car
pa_car Table de
base de
wa_sbc400
wa_sbc400 données
SCARR
Bloc de
traitement
ABAP
ã SAP AG 1999
n Les données fournies par la base de données sont transformées en objets de données locales. La
clause INTO spécifie les objets de données dans lesquels vous souhaitez copier les données. Dans cet
exemple, les données sont copiées dans les composantes du même nom dans la structure
wa_sbc400.
Programme ABAP
Objets de données
sbc400_carrier
Process
After
Input
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, 4
wa_sbc400-currcode.
ENDIF.
ã SAP AG 1999
n ABAP contient des instructions (WRITE, SKIP, ULINE) qui vous permettent de créer une liste.
n Les instructions WRITE affichent le contenu de zone, formaté selon leur type de données, sous forme
de liste.
n Des instructions WRITE consécutives affichent des données dans la même ligne d'édition. Les
messages continuent sur la ligne suivante lorsque la première est remplie.
n Vous pouvez placer une information de positionnement devant chaque information à éditer. Ceci
vous permet de déterminer des passages à la page/ligne suivante (/), des longueurs d'édition (l) et
des débuts de colonnes (p). Vous trouverez des informations complémentaires sur les options
d'édition dans la documentation mots-clés sous WRITE.
n L'édition de liste peut être affichée en couleurs.
n La liste complète apparaît automatiquement à la fin du bloc de traitement.
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 spécifiques
des besoins spécifiques
ã SAP AG 1999
Programme source
Compagnie aérienne
ID LH
Compagnie LH LH Lufthansa DEM
Nom LUFTHANSA
aérienne
Devise locale DEM
Copie adaptée :
Compagnie aérienne
ID LH
Compagnie LH LH Lufthansa DEM
Nom LUFTHANSA
aérienne
Devise locale DEM WALTERS
Utilisateur WALTERS
ã SAP AG 1999
n Le premier projet est d'étendre un programme existant. Comme aucune extension n'est autorisée dans
le programme et que les modifications sont à éviter, la première étape est de copier le programme et
ensuite de le modifier.
n Vous devez allouer à un projet du système les modifications aux programmes existants, exactement
comme vous le feriez pour créer des copies de programmes ou des nouveaux programmes. Par
conséquent, les diapositives suivantes s'occupent d'abord de savoir comment un projet est représenté
dans le système R/3.
Ordre de
modification
FI HR MM
FI HR MM
SD WM
MM SD WM
Cust. MM
Cust.
Système de développement
Système de production
ã SAP AG 1999
n Les projets sont toujours implémentés dans un système de développement et transportés ensuite vers
le système suivant. Un critère décisif pour la combinaison de projets est d'aillleurs de savoir quels
objets du Repository doivent être transportés ensemble en raison de leurs dépendances. Vous
trouverez des informations complémentaires sur l'organisation d'un projet dans le chapitre intitulé
Logistique logicielle et adaption logicielle.
n Les objets du Repository sont automatiquement liés aux systèmes de correction et de transport
lorsqu'ils sont affectés à une classe de développement transportable (pas $TMP).
n Une fois le développement terminé, les objets du Repository sont transportés dans les systèmes de
test ou systèmes de production au moyen de certains chemins prédéfinis.
n L'outil Workbench Organizer (WBO) de ABAP Workbench organise toutes les tâches de
développement appartenant aux objets du Repository.
Chef de projet :
CARSON
Équipe :
CARSON
BC400-00
BC400-01
BC400-02
BC400-03
...
ã SAP AG 1999
Chef de projet :
CARSON
Workbench Organizer : demandes
Équipe :
Ordres de modification de l'utilisateur BC400-00
CARSON Modifiable Chef de projet
Transportable
BC400-00 Numéro de la modification IT3K900051 CARSON
IT3K900052 CARSON
BC400-01 Numéro de membre d'équipe
(affecté par le système) IT3K900053 BC400-00
ã SAP AG 1999
n Au début d'un projet de développement, le chef de projet doit créér 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 numéro de projet à l'ordre de modification (<sid>K9<nnnnn>. Exemple :
C11K900001). <sid>est le numéro de système.
n Ensuite, le Workbench Organizer (WBO) crée une tâche pour chaque employé affecté à l'ordre de
modification. Dorénavant, lorsqu'un employé alloue un objet du Repository à l'ordre de modification,
l'objet du Repository sera automatiquement répertorié dans la tâche de l'employé. Dès lors, tous les
objets du Repository sur lesquels un employé travaille pendant un programme de développement
sont collectés dans son dossier tâche.
n Lors de la modification d'un objet du Repository, un développeur l'affecte à l'ordre de modification.
Contrairement aux divisions fonctionnelles logiques qui séparent les classes de développement, les
ordres de modification sont liés au projet. Donc, bien qu'un programme appartienne toujours à une
seule classe de développement, il peut, à différents moments, appartenir à des ordres de modification
différents.
Équipe :
CARSON
BC400-00
BC400-01
BC400-02
BC400-03
Info techniques
Créer
Modifier Programme source SAPBC400WBT_GETTING_STARTED
Afficher
Contrôler Programme cible ZBC400_00_GETTING_STARTED
Activer
Exécuter
Copier
... Copier
Infos techniques
! Source
! Éléments de texte
! Documentation
Variantes
Interfaces
! Écrans
Includes
n Les noms de programme commençant par Y ou Z, ou par SAPMZ ou SAPMY, sont réservés aux
développements clients. Vous pouvez également avoir un espace nom réservé aux développements
clients. Vous trouverez des informations complémentaires sur les espaces noms clients pour
plusieurs objets du Repository dans la bibliothèque SAP sous Composantes de base -> Sytème de
transport et de modification (BC-CTS) -> Espaces noms BC et conventions de noms.
n Vous pouvez copier un programme à partir de la liste d'objets d'une classe de développement ou un
programme. À cette fin, placez simplement votre curseur sur le nom du programme que vous désirez
copier et cliquez sur le bouton droit de la souris. Choisissez Copier. Le système affiche une boîte de
dialogue dans laquelle vous pouvez introduire un nouveau nom pour votre copie. La confirmation de
vos entrées en utilisant le bouton de commande adéquat de la barrre d'outils d'application permet au
système d'afficher une boîte de dialogue dans laquelle vous pouvez sélectionner les sous-objets que
vous désirez copier avec le programme. Donc, vous devez décider quels sous-objets vous désirez
copier avec le programme AVANT de commencer la procédure de copie. Après la confirmation de
ces entrées, le système affiche encore une autre boîte de dialogue dans laquelle vous pouvez
sauvegarder des objets du Repository.
n Si vous copiez un programme qui contient des includes, une autre boîte de dialogue est affichée
avant celle-ci, dans laquelle vous pouvez choisir quels includes vous désirez copier et leur attribuer
de nouveaux noms.
Objet local
ã SAP AG 1999
Source de rapport
ZBC400_00_GETTING_STARTED
Ordre
ã SAP AG 1999
n Tous les objets du Repository qui sont créés ou modifiés doivent être affectés à 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 tâche dans cet ordre de modification Affectez tous vos objets du Repository
(classes de développement, programmes, etc.) à cet ordre de modification.
n Vous pouvez afficher tous les ordres de modifications dans lesquels vous avez une tâche en utilisant
le bouton de commande "Ordres propres".
n Pour des informations complémentaires sur l'organisation du projet d'un point de vue de gestion de
projet (y compris créer des tâches), référez-vous au chapitre sur la logistique logicielle.
Attributs Titres
Adapter titre
Attributs
Modifier la langue
originale
en langue de travail
ã SAP AG 1999
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.
ã SAP AG 1999
ZBC400_00_GETTING_STARTED
Types d'objets de programme
Structures du dictionnaire
Zones
Événements
Écrans
0100 Clic sur le bouton droit Modifier
1000
Mise en page
Compagnie aérienne
ID
sbc400_carrier
Nom
Devise locale
ã SAP AG 1999
n 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'icône "Mise en page" pour naviguer vers l'éditeur graphique d'agencement d'écran.
n Celui-ci contient une icône pour créer des zones de saisie/sortie se référant aux types globaux. Entrez
un type de structure qui est défini dans le dictionnaire ABAP. Toutes les zones de ce type de
structure sont affichées pour sélection. Vous ne pouvez pas sélectionner les zones qui sont déjà
contenues dans l'écran. Ceci est indiqué par un petit cadenas à côté de la zone.
n L'outil d'affichage et de gestion des types globaux est appelé le dictionnaire ABAP. Vous pouvez
trouver des informations complémentaires sur les types globaux dans le chapitre Instructions et
déclarations de données ABAP.
l Contrôle
Contrôle de syntaxe : un bouton de commande vous permet
d'effectuer un contrôle de la syntaxe.
l Sauvegarde de programmes : enregistrement temporaire : le
code est enregistré dans le Repository et reste visible dans
tout le système. Au moment de l'exécution, la version active
est lancée.
l Activation du programme : le programme est visible dans tout
le système après l'activation et vous pouvez l'exécuter
ultérieurement.
l Contrôle
Contrôle du programme étendu : implique des vérifications
plus complètes et peut uniquement être exécuté avec des
programmes déjà activés.
ã SAP AG 1999
ã SAP AG 1999
Programme : SAPBC400WBT_GETTING_STARTED
1-1 Ouvrez une liste d’objets pour la classe de développement BC400. Trouvez le
programme SAPBC400WBT_GETTING_STARTED, et ouvrez sa liste d’objets.
Tout au long de l’exercice, assurez-vous que vous restez en mode affichage.
1-3 Utilisez la liste d’objets dans Object Navigator pour examiner le programme.
1-3-1 Quels objets de données trouvez-vous ? (Utilisez la liste d’objets du
programme) Où sont-ils définis ? (Utilisez la navigation) Où sont-ils
utilisés ? (Utilisez les cas d’emploi).
1-3-2 Quels objets de données du programme ABAP correspondent à la zone de
saisie de l’écran de sélection ? (Cherchez dans la liste d’objets un objet de
données comportant le même nom que la zone que vous avez découverte à
l’étape 1-2-5.)
1-3-3 Quelles instructions traite l’écran ? (Regardez dans le code source ou
utilisez un cas d’emploi pour le numéro d’écran.)
1-3-4 Naviguez jusqu’à l’écran, et ensuite jusqu’à la structure graphique. Cliquez
sur une zone de sortie. Dans l’Éditeur d’agencement graphique, où apparaît
le nom de zone que vous avez découvert à l’étape 1-2-5 ?
Programme : ZBC400_##_GETTING_STARTED
Modèle : SAPBC400WBT_GETTING_STARTED
Solution modèle : SAPBC400WBS_GETTING_STARTED
*&--------------------------------------------------------------*
*& Report SAPBC400WBS_GETTING_STARTED *
*&--------------------------------------------------------------*
REPORT sapbc400wbs_getting_started .
TABLES: sbc400_carrier.
DATA: wa_sbc400 TYPE sbc400_carrier.
PARAMETERS: pa_car TYPE scarr-carrid.
START-OF-SELECTION
* Sélectionner toutes les zones d’un enregistrement de données depuis
la table de base de données SCARR.
SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400
WHERE carrid = pa_car.
* Au moins un enregistrement peut être sélectionné.
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.
Dynpro 100:
Nouvelles zones sur dynpro 100 : SBC400_CARRIER-UNAME
SBC400_CARRIER-UZEIT
SBC400_CARRIER-DATUM
Contenu :
l Types
l Objets de données
n Objets de données élémentaires
n Structures
n Tables internes
l Attributs des instructions ABAP
ã SAP AG 1999
Programme
ABAP
Code
Source Runtime
ABAP system
ABAP
ã SAP AG 1999
n Le contenu de ce chapitre se concentre sur la définition des objets de données et des instructions
ABAP déterminées.
Types
Types
Objets
Objets de
de données
données
données
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
ã SAP AG 1999
Zones d'entrée/sortie
Paramètres d'interface
pour des fonctions/méthodes
Paramètres d'interface
Objets de données pour des sous-programmes
Programme
ABAP ce
er fa de
t e
Code In ul ion
d t
Source Mo onc
ABAP f
Interface
Fonction
Sous- fonctions
programmes
ã SAP AG 1999
Types locaux :
Attributs techniques uniquement Types globaux dans
le dictionnaire ABAP
Programme Attributs techniques
ABAP et sémantiques
ce
erfa de
t
Code In ules on
i
Source od ct
M f on
ABAP Interface
Groupe de
Sous- fonctions
programme
ã SAP AG 1999
Descripteur de zone
Zone de saisie Élément de données : type technique
Descripteur de zone
Documentation de
Compagnie zones
aérienne (Aide F1)
F1 Aide à la recherche
(Aide F4)
Aide
Identificateur de la compagnie aérienne Nom abrégé
Cette zone contient l'identificateur de la compagnie aérienne
ID Compagnie aérienne
Aide d'applications Info techniques
AA American Airlines
AF Air France
BA British Airways
DL Delta Airlines
LH Lufthansa
Variable de zone de saisie
NU Japan Transocean Air.
QF Quantas Airways
SA South African Air.
SQ Singapore Airlines
UA United Airlines
ã SAP AG 1999
n Les types élémentaires du dictionnaire sont appelés éléments de données. Ils contiennent des
informations aussi bien sémantiques que techniques (type technique, longueur, nombre de
décimales).
n Un élément de données peut contenir les informations sémantiques suivantes :
Descripteur de zone : ce texte apparaît sur les écrans et les écrans de sélection à gauche, juste à
côté des zones de saisie et de sortie. Un descripteur de zone peut avoir l'une des trois longueurs
possibles. Vous devez sélectionner l'un des différents descripteurs de zone lorsque vous créez 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 élément de données peut être lié à une aide à la recherche. Cette aide à la
recherche définit l'aide aux valeurs fournie par la touche de fonction F4 ou l'icône correspondante.
ic
Cl
le -
F1
ub
Do
Aide
ic
CONNID
Cl
Structure SBC400_CARRIER bl
e- ...
Nom de zone CARRID
u
Do
Élément de S_CARR_ID
données
ã SAP AG 1999
n Vous trouverez des informations complémentaires sur les types élémentaires 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'élément de données.
pour les types locaux de programmes ou des objets de données : double-cliquez sur la zone.
n Les types techniques et les domaines techniques peuvent être directement affectés aux éléments de
données. Si vous souhaitez des informations complémentaires sur d'autres éléments de données se
référant au même domaine, vous pouvez naviguer jusqu'au domaine à partir de l'élément de données
en double-cliquant sur son nom et en exécutant ensuite la fonction Cas d'emploi.
ã SAP AG 1999
n Vous pouvez rechercher des éléments de données en utilisant la hiérarchie des applications et le
système d'information du Repository.
Dans la hiérarchie des applications, sélectionner les composantes à scanner.
Allez dans le système d'information.
Choisissez Dictionnaire ABAP --> Objets de base --> Éléments de données et réduisez la
recherche.
n Si vous allez dans le système d'information à partir de la hiérarchie des applications, les classes de
développement des composantes applicatives sélectionnées sont automatiquement sélectionnées.
n Vous pouvez également aller directement dans le système d'information. Si vous ne sélectionnez pas
de classe de développement, l'ensemble du repository est scanné.
Aide à la déclaration
de types de données locaux
F1
<type>
TYPES <user_defined_type> TYPE <type>.
Types:
Do
u bl
e-
Aide à la déclaration Cl
ic
de types de données locaux
Navigation vers des
F1 déclarations de types de
données locaux
DATA
DATA:<data_object> TYPE <type>.Double-Clic
TYPE <type> ou des déclarations de
types de données du
dictionnaire ABAP
F1
Documentation mots-clés
pour types intégrés
ã SAP AG 1999
n Lorsque vous définissez des types ou des variables simples, vous pouvez vous référer à un type
prédéfini. Pour des informations complémentaires, référez-vous à la documentation mots-clés sous
TYPES ou DONNÉES.
C Caractère
N Texte numérique
D Date (YYYYMMDD)
T Heure (HHMMSS)
X Octet (heXadecimal)
I Integer
P Nombre packé
F Virgule flottante
STRING Chaîne de caractères
XSTRING Chaîne d'octets (X String)
Types
Types
Objets
Objets de
de données
données
données
Objets
Objets de
de données
données élémentaires
données élémentaires
élémentaires
Structures
Structures
Tables
Tables internes
internes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
ã SAP AG 1999
<user-defined-type>.
<ABAP-dictionary-type>.
ã SAP AG 1999
n Affectez des types d'objets de données en référant votre objet soit à un type ABAP intégré, soit à un
type défini par l'utilisateur, ou encore à un objet du dictionnaire ABAP.
n Si une variable v2 se réfère à une variable v1 en utilisant l'option LIKE ( DATA v2 LIKE v1.
), v2 hérite alors son type de v1.
Types
Types
Objets
Objets de
de données
données
données
Objets
Objets de
de données
données élémentaires
données élémentaires
élémentaires
Structures
Structures
Tables
Tables internes
internes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
ã SAP AG 1999
SAPBC400WBT_GETTING_STARTED
Types d'objets de programme
Structures du dictionnaire
Zones Clic sur le bouton droit Créer
PA_CAR
WA_BC400 Clic sur le bouton droit
Modifier
Événements
Afficher
START-OF-SELECTION
Cas d'emploi
Écrans
0100
1000
ã SAP AG 1999
n Les objets de données élémentaires apparaissent dans la liste d'objets du programme sous le noeud
"Zones".
n À 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 données est défini.
n Vous pouvez utiliser la fonction Cas d'emploi pour afficher toutes les lignes du code source où
l'objet de données est utilisé.
Programme
carrid ABAP
counter
s_carr_id
ã SAP AG 1999
Littéral numérique
715, -431
Nombre entier (un signe moins est
placé en face de nombres négatifs)
Littéral alphanumérique
ã SAP AG 1999
n Vous définissez les constantes en utilisant le mot-clé ABAP CONSTANTS. L'option VALUE est
requise pour les constantes. Elle définit leur valeur.
n ABAP reconnaît deux types de littéraux : littéraux numériques et littéraux alphanumériques. Ce
dernier se trouve toujours entre des guillemets ( " ).
n Les nombres entiers (précédés d'un signe moins s'ils sont négatifs) sont stockés comme des littéraux
numériques soit de type I (jusqu'à neuf chiffres compris) ou de type P (dix chiffres ou plus).
n Tous les autres littéraux (caractère, nombres avec décimales, nombres de virgule flottante) sont
stockés comme des littéraux alphanumériques de type de données C. Si un littéral est affecté à une
variable qui n'est pas de type C, une conversion de type est alors exécutée. Les règles de conversion
sont décrites dans la documentation mots-clés sous MOVE.
n Si vous souhaitez ajouter des guillemets ( " ) dans un littéral alphanumérique, vous devez les
introduire deux fois.
n Vous pouvez créer des littéraux alphanumériques traduisibles, ou symboles de texte, pour tous les
programmes ABAP. Utilisez la boîte de dialogue Types d'objets de programme pour obtenir l'écran
de gestion des symboles de texte.
Déclarations de données :
CONSTANTS c_qf TYPE s_carr_id VALUE 'QF'.
DATA: gd_carrid1 TYPE s_carr_id,
gd_carrid2 TYPE s_carr_id VALUE 'LH',
counter type I.
gd_carrid1 gd_carrid2 counter
Lancement du programme c_qf QF
LH 0000
CLEAR
CLEAR: gd_carrid1,
gd_carrid2,
counter. 0000
Programme ABAP
Temps
ã SAP AG 1999
n 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 données.
n Chaque zone élémentaire est considérée comme standard quand elle possède une valeur intiale
propre à son type. Vous pouvez paramétrer vous-même une valeur de départ pour une zone
élémentaire en utilisant l'option VALUE. Une fois l'option VALUE paramétrée, vous devez seulement
spécifier un objet de données fixe.
n Vous pouvez copier le contenu de zone d'un objet de données vers un autre objet de données avec
l'instruction MOVE. Si les deux objets de données ont des types différents, le type est
automatiquement converti si une règle 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.
n Vous trouverez des informations détaillées sur la copie et les règles de conversion dans la
documentation mots-clés sous MOVEou dans le cours de formation BC402.
n L'instruction CLEAR réinitialise le contenu de zone d'une variable par la valeur initiale du type
déterminé. Vous trouverez des informations détaillées sur les valeurs initiales d'un type déterminé
dans la documentation mots-clés sous CLEAR.
Déclarations de données :
DATA: gd_max TYPE sbc400focc-seatsocc,
gd_occ TYPE sbc400focc-seatsmax,
gd_percentage TYPE sbc400focc-percentage.
Programme ABAP
ã SAP AG 1999
n Vous pouvez faire précéder 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.
n Vous trouverez des informations détaillées sur les opérations et les fonctions disponibles dans la
documentation mots-clés sous COMPUTE.
WHEN OTHERS.
Instructions
IF <logical expression>.
ENDCASE.
Instructions
ELSEIF <logical expression>.
Instructions
ELSEIF <logical expression>.
Instructions
ELSE.
Instructions
ENDIF.
ã SAP AG 1999
Zones
Programme principal ZJJ_KURS_000 Point d'arithmétique fixe
Pas
Code source de à ZJJ_FORMS
pas $ 15 - 30 #
ã SAP AG 1999
n Vous pouvez retrouver le contenu de jusqu'à huit variables en mode débogage si vous indiquez les
noms de zone sur le côté gauche ou si vous créez l'entrée par un double-clic sur un nom de zone.
n Vous pouvez modifier les valeurs de zone au moment de l'exécution en écrasant la valeur actuelle et
en choisissant l'icône "Modifier".
Programme
Nom de zone
Opérateur relationnel
Comp. zone/valeur
ã SAP AG 1999
n Pour la version 4.6, vous êtes autorisé à paramétrer jusqu'à dix points de surveillance et à les relier en
utilisant les opérateurs logiques AND et OR. Les points de surveillance sont des points d'arrêt attachés
à la zone. Vous pouvez créer les types suivants de points de surveillance :
Variable <opérateur> valeur : le système arrête le traitement si l'expression logique est vraie. Le
témoin "zone de comparaison" n'est pas sélectionné et la valeur est insérée dans "Comp.
zone/valeur".
Variable 1 <opérateur> variable 2 : le système arrête le traitement si l'expression logique est vraie.
Le témoin "zone de comparaison" est sélectionné et la variable 2 est insérée dans "Comp.
zone/valeur".
Variable : le système arrête le traitement chaque fois que la valeur de la variable change.
Types
Types
Objets
Objets de
de données
données
données
Objets
Objets de
de données
données élémentaires
données élémentaires
élémentaires
Structures
Structures
Tables
Tables internes
internes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
ã SAP AG 1999
Définition de structure
wa_spfli Programme
ABAP
sdyn_conn
ã SAP AG 1999
n Vous pouvez définir des objets de données structurés (également appélés 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 même des tables peuvent devenir des
sous-objets de votre structure originale.
n Deux différents types de structure existent dans les programmes ABAP :
des structures définies par
DATA <name> TYPE <structure_type>.
Ces types de structure servent de zones cibles pour les accès à la base de données ou pour les
calculs exécutés localement dans le programme. Vous pouvez déclarer ces types de structure soit
dans le dictionnaire ABAP soit localement dans le programme. Pour des informations
complémentaires sur la manière de déclarer des structures locales, référez-vous à la documentation
mots-clés sous TYPES.
des structures définies par
TABLES <ABAP-Dictionary-Structure>.
Ces types de structure sont techniquement gérés dans leur propre domaine. Pour la version 4.0, les
structures TABLES doivent être utilisées uniquement comme des structures d'interface pour des
écrans.
wa_scarr Programme
mandt carrid carrname currcode ABAP
wa_scarr-carrid
wa_scarr-carrid = 'LH'.
ã SAP AG 1999
wa_sbc400focc
ã SAP AG 1999
Débogueur ABAP
Watchpoint ❁
chws
Zones
Programme principal ZJJ_KURS_000 Point d'arithmétique fixe
Code source de ZJJ_FORMS $ 15 - 30 #
ã SAP AG 1999
n 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 entrée, vous affichez la zone de vue de la
structure.
Types
Types
Objets
Objets de
de données
données
données
Objets
Objets de
de données
données élémentaires
données élémentaires
élémentaires
Structures
Structures
Tables
Tables internes
internes
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
ã SAP AG 1999
LH 0400 6,162
Type de table
QF 0005 10,000 Accès avec index
SQ 0866 1,625 5
Type d'accès de données
UA 0007 2,572 UA 0007
ã SAP AG 1999
n Vous devez définir les informations suivantes afin de spécifier entièrement un type de table :
Type de ligne : vous pouvez enregistrer les informations dans les colonnes requises, leurs noms et types, en
définissant un type de structure comme type de ligne.
Clé : une clé correctement spécifiée doit définir quelles colonnes doivent être des colonnes-clé. Dans quel
ordre ? La clé doit-elle désigner un seul enregistrement de la table interne (clé unique) ? Les clés uniques ne
peuvent pas être définies pour tous les types de table.
Type de table : il existe trois types de table : les tables standard, les tables triées et les tables d'adresses
calculées. C'est le type d'accès qu'on utilise principalement pour choisir le type de table.
n Le type d'accès définit comment ABAP accède aux entrées de tables individuelles. Deux types différents
d'accès de données existent dans ABAP, l'accès par index et l'accès avec une clé.
n L'accès par index implique l'utilisation de l'index d'enregistrement de données que le système gère pour
accéder aux données.
Exemple: l'accès en mode lecture à un enregistrement de données comportant l'index 5 fournit le cinquième
enregistrement de données de votre table interne (quantité d'accès : un seul enregistrement de données).
n L'accès avec une clé implique l'utilisation d'un critère de recherche, généralement la clé de table ou la clé de
table générique, pour accéder aux données.
Exemple : l'accès en mode lecture, utilisant un critère de sélection "UA 0007", à une table interne de clé
unique CARRID CONNID et aux données décrites ci-dessus fournit exactement un enregistrement de
données.
TABLES
Accès avec n n
Index
Accès avec
Clé
ã SAP AG 1999
n Un autre attribut de table interne est le type de table. Les tables internes peuvent être divisées en trois
types de table selon leur moyen d'accès aux données :
- les tables standard gèrent de manière interne un index linéaire. Ce type de table peut être
accédé en utilisant soit l'index de table soit des clés.
- les tables triées sont triées selon la clé et sauvegardées. Un index linéaire est ici aussi géré de
manière interne. Ce type de table peut être accédé en utilisant soit l'index de table soit des clés.
- les tables d'adresses de calculs ne gèrent pas d'index linéaire de manière interne. Vous pouvez
seulement y accéder en utilisant des clés.
n Le type de table que vous utilisez dépend généralement du moyen d'accès à ces entrées de table.
Utilisez des tables standard lorsque l'accès aux entrées s'effectue généralement avec l'index, utilisez
une table triée lorsque l'accès aux entrées s'effectue généralement avec des clés, et des tables
d'adresses calculées lorsque l'accès aux entrées s'effectue exclusivement avec des clés.
n Dans ce cours, nous discuterons uniquement de la syntaxe des tables standard.
Programme ABAP
itab_flightinfo
sbc400_t_sbc400focc .
DATA it_flightinfo type sbc400_t_sbc400focc
ã SAP AG 1999
n Les types de table peuvent être définis de manière locale dans un programme ou de manière centrale
dans le dictionnaire ABAP.
n Pour définir un objet de données de type table, spécifiez le type comme un type de table global ou un
type de table local.
n Vous trouverez des informations détaillées sur la déclaration de types de table dans la documentation
ou dans le cours BC402.
Ajouter APPEND
APPEND wa_itab to itab.
ã SAP AG 1999
n Vous pouvez exécuter les opérations suivantes sur des enregistrements individuels de tables internes
:
APPEND ajoute le contenu d'une structure qui a le même type que la ligne d'une table interne.
Cette opération peut être utilisée uniquement avec des tables standard.
INSERT insère le contenu d'une structure qui a le même type que la ligne de table interne. Pour
une table standard, cela provoque un APPEND ; pour une table triée, cela provoque une
insertion à la bonne place ; pour une table d'adresses calculées, cela provoque une
insertion suivant l'algorithme d'adresse calculée .
READ copie le contenu d'une ligne de table interne vers une structure qui a le même type que
la ligne.
MODIFY écrase une ligne de table interne avec le contenu d'une structure qui a le même type que
la ligne..
DELETE supprime une ligne de table interne.
COLLECT insère le contenu d'une structure qui a le même type que la ligne d'une table interne
vers une table interne sous une forme compressée. Cette instruction peut être utilisée
uniquement pour des tables dont les zones non clé sont toutes numériques. Les valeurs
numériques sont cumulées pour des clés identiques.
n Vous trouverez des informations détaillées sur les instructions ABAP décrites dans cette diapositive
dans la documentation mots-clés ABAP.
Insérer
lignes multiples
à partir d'une INSERT itab2 <condition2>
table interne FROM itab1 <condition1>.
Ajouter
Lignes multiples APPEND
INSERT itab2 <condition2>
à partir d'une FROM itab1 <condition1>.
table interne
ã SAP AG 1999
n Vous pouvez exécuter les opérations suivantes sur des ensembles d'enregistrements de tables internes
:
LOOP ... ENDLOOP LOOP place une par une les lignes de table interne dans la structure
spécifiée dans la clause INTO. La structure doit avoir le même type que la ligne de table
interne. Toutes les opérations sur un enregistrement individuel peuvent être exécutées à
l'intérieur de la boucle. Dans ce cas, le système fournit les informations sur la ligne à
traiter dans l'opération d'enregistrement individuel.
DELETE supprime les lignes de table interne qui définissent 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.
n Vous trouverez des informations détaillées sur les instructions ABAP décrites dans cette diapositive
dans la documentation mots-clés pour tous les mots-clés ABAP utiles.
Trier SORT
SORT itab <conditions>
ã SAP AG 1999
n Vous pouvez exécuter les opérations suivantes sur des tables internes :
SORT trie des tables selon n'importe quelle colonne ou selon les colonnes par ordre croissant
ou décroissant. Les tables de type SORTED TABLE ne peuvent être retriées.
CLEAR 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 libère la mémoire allouée à la table.
it_flightinfo
wa_flightinfo
ã SAP AG 1999
n 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.
n Utilisez l'instruction INSERT pour insérer des lignes dans des tables triées ou d'adresses calculées.
n INSERT fonctionne comme APPEND dans des tables standard.
it_flightinfo
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
n Vous pouvez lire et traiter le contenu d'une table interne avec l'instruction LOOP. Dans cet exemple,
une ligne est chaque fois copiée de la table interne it_flightinfo vers la structure wa_flightinfo. Les
zones de la structure peuvent alors être traitées. Une liste est établie à partir des zones avec
l'instruction WRITE.
n Si vous souhaitez modifier le contenu de la table interne, modifiez d'abord la valeur des zones de
structure à l'intérieur de la boucle et écrasez ensuite la ligne de table interne comportant l'instruction
MODIFY.
ENDLOOP.
n L'option INDEX vous permet de limiter l'accès à un certain nombre de lignes. Vous pouvez exécuter
des opérations d'index uniquement dans les tables de type index. Les tables standard comme les
tables triées y sont gérées.
n L'exemple du haut montre la syntaxe pour le traitement de la boucle, qui scanne uniquement les cinq
premières lignes de la table interne.
n L'exemple du bas montre la syntaxe pour la lecture de la troisième ligne de la table interne.
ENDLOOP.
ã SAP AG 1999
n L'option WHERE vous permet de limiter l'accès à des lignes comportant certaines valeurs dans des
zones-clés. Les opérations-clés sont gérées pour tous les types de table. L'accès-clé aux tables triées
ou d'adresses calculées est plus efficace que l'accès-clé aux tables standard.
n 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 triée est la plus
appropriée pour ce type de traitement. Le traitement en boucle avec l'option WHERE est géré pour les
tables triées et les tables standard.
n L'exemple du bas montre la syntaxe pour la lecture d'une ligne de la table interne avec une clé
correctement spécifiée. Le code retour sy-subrc est remis à zéro si la table interne contient cette
ligne. La table d'adresses calculées est la plus appropriée pour l'accès avec clé à un enregistrement
individuel. Ce type d'accès est géré pour tous les types de table. Veuillez noter que toutes les zones-
clés doivent être définies en accès-clés avec l'option WITH TABLE KEY. Il est facile de confondre
cette option avec l'option WITH KEY, qui autorisait déjà l'accès-clé aux tables standard avant la
version 4.0, lorsqu'il n'était pas encore possible de définir de manière explicite les colonnes-clé.
Débogueur ABAP
Point de surveillance ❁
chws
Tableau
Programme principal ZJJ_KURS_000 Point d'arithmétique fixe
Code source de ZJJ_FORMS $ 15 - 30 #
ã SAP AG 1999
n Vous pouvez retrouver le contenu d'une table interne en mode débogage en sélectionnant "Table" et
en indiquant le nom de table interne.
READ TABLE <itab> INDEX <n> INTO <wa>. READ TABLE <itab> INDEX <n>.
WRITE <wa>-<field>. WRITE <itab>-<field>.
ã SAP AG 1999
n Les tables internes peuvent être définies avec ou sans ligne d'en-tête. Une table interne avec ligne
d'en-tête consiste en un espace de travail (la ligne d'en-tête) et le corps actuel de la table, qui sont
tous deux adressés par le même nom. La manière dont le nom va être interprété dépend du contexte
dans lequel il est utilisé. Par exemple : en MOVE, le nom est interprété pour signifier la ligne d'en-
tête, alors qu'en SORT, il est interprété comme le corps de table.
n Vous pouvez déclarer une table interne avec une ligne d'en-tête en utilisant l'option WITH HEADER
LINE.
n Afin d'éviter toute confusion, il est recommandé de créer des tables internes sans lignes d'en-tête.
Cependant, vous pouvez utiliser une syntaxe abrégée pour certaines opérations dans des tables
internes avec lignes d'en-tête.
Types
Types
Objets
Objets de
de données
données
données
Attributs
Attributs des
des instructions
instructions ABAP
ABAP
ã SAP AG 1999
AA
AL Non disponible
LH
QF
itab
IF sy-subrc ne 0. 4 Code retour 4
* Message
...
ENDIF.
Temps
ã SAP AG 1999
n Un nombre d'instructions ABAP possèdent un code retour. De nombreuses exceptions sont détectées,
selon l'instruction. Si une telle exception apparaît, une valeur est stockée dans la zone sy-subrc et
l'instruction se termine. La documentation mots-clés pour une instruction déterminée décrit les
exceptions et leurs valeurs. Lorsque vous lancez un programme, une structure appelée sy est
automatiquement fournie comme objet de données. Cette structure contient plusieurs zones qui sont
remplies par le système. Vous pouvez accéder à ces zones à partir du programme. Une des zones de
cette structure est la zone subrc. Vous ne devez dès lors pas créer d'objet de données pour le code
retour.
n Dans cet exemple, une ligne devrait se lire à partir de la table interne itab avec un accès clé. Il n'y a
aucune ligne avec la clé requise au moment de l'exécution. L'instruction READ se termine alors et la
valeur 4 est placée dans la zone sy-subrc. La zone sy-subrc est testée dans le programme
immédiatement après l'instruction READ.
.
.
MESSAGE E050(BC400).
S078(BC400) WITH c_ua.
Table T100
S ID N° Texte du message
EN BC400 038 Aucune donnée n'existe pour cette sélection (insérez une autre valeur)
... ... ... ...
EN BC400 049 La compagnie aérienne & n'existe pas
EN BC400 078
078 Division
Entréepar pour zérola compagnie aérienne & n'existe pas
... ... ... ...
Entrée
Entrée pour la compagnie aérienne
aérienne UA n'existe pas
ã SAP AG 1999
n Il existe un type de dialogue spécial appelé le message utilisateur pour les situations d'erreur. Les
messages sont déclenchés par l'instruction MESSAGE.
n Les messages peuvent être trouvés dans la table T100. Ils sont organisés selon la langue, une classe
de messages et un numéro à trois chiffres.
n Les messages peuvent contenir jusqu'à 4 variables, identifiées comme &1, &2, &3, et &4. Si vous
souhaitez éditer le caractère & et que vous ne souhaitez pas l'utiliser comme une variable, doublez-le,
par exemple : "C'est un message avec &&".
n Dans les longs textes de message, utilisez &v1&, &v2&, &v3&, et &v4& pour leurs variables
correspondantes.
n Vous pouvez créer vos propres classes de messages en utilisant des noms de classes commençant par
Y ou par Z.
Annn
Xnnn
MESSAGE Ennn WITH <field1> <field2> <field3> <field4>(<message-class>).
Wnnn
Innn
Snnn
ã SAP AG 1999
n Envoyez des messages avec l'instruction MESSAGE. La langue pour les messages dans la tabe T100
est automatiquement paramétrée comme la langue de travail de l'utilisateur. Vous pouvez définir la
classe de messages suivant le paramètre MESSAGE-ID de l'instruction REPORT. La classe de
messages est dès lors paramétrée pour l'ensemble du rapport. Introduisez le numéro de message dans
l'instruction MESSAGE.
n Introduisez le type de message juste en face du numéro de message à trois chiffres, ce dernier
détermine comment l'utilisateur du rapport réagit aux messages de dialogue (voir diapositive
suivante).
n Paramétrez les valeurs pour les variables (jusqu'à un maximum de quatre) suivant le paramètre
WITH. Les zones et les littéraux sont également autorisés. La zone au niveau i remplace donc la
variable &i du message. Si les variables du message sont identifiées par & ou $, ces caractères
génériques sont fournis avec des valeurs indépendantes de la position des zones de l'instruction
message.
n Outre l'utilisation d'une classe de messages avec l'instruction REPORT, vous pouvez également
ajouter une classe de messages différente à la commande MESSAGE en introduisant l'ID entre
parenthèses directement après le numéro de message. Cependant, cette classe de messages n'est
valable que pour un message individuel. Exemple : MESSAGE E004(UD).
n 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>.
n Les zones système SY-MSGID, SY-MSGTY et SY-MSGNO sont fournies avec la classe de messages,
le type de messages et le numéro de message respectivement, et les zones système SY-MSGV1 à
SY-MSGV4 avec les zones des caractères génériques.
i Aide à l'éditeur
Synthèse ABAP
Mot-clé ABAP
Nouvelles caractéristiques de ABAP
Documentation ABAP et exemples
ã SAP AG 1999
Programme : ZBC400_##_GETTING_STARTED
Solution modèle : SAPBC400WBS_GETTING_STARTED
1-2 Vérifiez que toutes les données sont initiales. Pour cela, indiquez leur nom dans les
noms de zones (onglet Zones du débogueur). Examinez le contenu (initial), la
structure et le type des données en double-cliquant sur chacun d'eux.
1-4 Observez maintenant comment les zones sont copiées de WA_SBC400 vers
SBC400_CARRIER. Quelles valeurs de zone sont copiées ?
1-5 L’instruction CALL SCREEN 100 traite le dynpro 100. Sur l’écran, saisissez les
valeurs propres au nom d’utilisateur, la date et l’heure, et continuez le programme.
Observez maintenant comment les zones sont copiées de SBC400_CARRIER vers
WA_SBC400.
(C) SAP AG BC400 4-46
1-6 Pour terminer, observez comment l’instruction WRITE construit la liste. N’oubliez
pas qu’un bouton supplémentaire apparaît dans la barre d’outils d’application après
la première instruction WRITE, qui vous permet d’afficher à tout moment le
contenu actuel du buffer de liste.
1-8 Répétez l’étape 1-1. Définissez un point d'arrêt à l'instruction CALL SCREEN, et
un point de surveillance pour la zone SBC400_CARRIER-UNAME et testez-le.
Chaque fois que le programme s’arrête, utilisez la fonction "Continuer" (F8) du
débogueur pour poursuivre le traitement.
Créez un programme pour afficher tous les vols sur une liste.
Pour ce faire, lisez le contenu de la table de base de données SPFLI dans
une table interne. Utilisez ensuite une structure LOOP … ENDLOOP
pour afficher les lignes de la table interne dans une liste.
Programme : ZBC400_##_ITAB_LOOP
Solution modèle : SAPBC400TSS_ITAB_LOOP
2-2 Dans votre programme, créez une table interne avec la structure de ligne de la table
SPFLI.
2-3 Pour consulter les données de la table de base de données SPFLI et les placer dans
la table interne, utilisez l’instruction ABAP suivante dans votre programme :
SELECT * FROM SPFLI INTO TABLE <itab>.
<itab> est le nom de la table interne.
2-4 Affichez les données de la table interne dans une liste. Utilisez les instructions
LOOP … ENDLOOP.
*&-----------------------------------------------------------------*
*& Report SAPBC400TSS_ITAB_LOOP *
*& *
*&-----------------------------------------------------------------*
REPORT sapbc400tss_itab_loop .
START-OF-SELECTION.
* Lire toutes les zones des enregistrements de la table de base de
données SPFLI dans
* La table interne it_spfli.
SELECT * FROM spfli INTO TABLE it_spfli.
* Au moins un enregistrement sélectionné
IF sy-subrc = 0.
* Copier chaque enregistrement individuel de la table interne vers la
structure WA_SPFLI
* afin d’enregistrer des données 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.
Contenu :
l Informations sur les tables de base de données
l Lecture de tables de base de données
l Contrôle d'autorisations
l Lecture de tables de base de données multiples
ã SAP AG 1999
ã SAP AG 1999
Informations
Informations sur
sur les
les tables
tables de
de base
base de
de données
données
Lecture
Lecture de
de tables
tables de
de base
base de
de données
données
Contrôle
Contrôle d'autorisations
d'autorisations
Lecture
Lecture de
de tables
tables de
de base
base de
de données
données multiples
multiples
ã SAP AG 1999
Dictionnaire ABAP
ic
l
-c
le
Bloc de traitement ABAP
b
ou
D
spfli ...
SELECT SINGLE * FROM spfli
ã SAP AG 1999
n Les tables de base de données sont administrées dans le Dictionnaire ABAP. C'est ici que vous
trouvez les informations actuelles sur les attributs techniques de la table de base de données. La table
de base de données qui a été créée dans la base de données en utilisant le même type de ligne et nom
est appelée table transparente dans le Dictionnaire ABAP.
n Il existe différents moyens par lesquels vous pouvez naviguer vers les tables transparentes dans le
Dictionnaire ABAP :
choisissez Outils->ABAP Workbench->Développement->Dictionnaire pour appeler le dictionnaire
ABAP directement et insérer le nom de la table transparente dans la zone de saisie appropriée, 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.
Hiérachie des
Rechercher
Éditeur applications
des composantes
Sélectionner
réutilisables
Rechercher composantes
l'instruction d'application
SELECT Repository
Informations
Démarrer
Le système
en mode débogage
Insérer un point
d'arrêt dans
l'instruction SELECT
Sur Zones de structure
des zones d'écran dans le Dictionnaire ABAP
Liste F1 Double-clic
d'objets du Infos techniques sur un élément de
programme Double-clic données
Sous-programmes sur une zone Liste des cas d'emploi
d'écran dans les tables
Ville de départ
Aéroport de départ
ã SAP AG 1999
n Tous les cours ABAP utilisent le même modèle de données de système de réservation aérienne. À ce
stade, nous vous présenterons un simple aperçu du modèle de données de vol ; vous trouverez des
informations détaillées à ce sujet tout au long du cours.
n En tant que voyageur désireux 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'intéresse ?
Comment rendre des conditions de voyage optimales ? Par exemple, quel est le vol le moins cher,
la connexion la plus rapide et la plus adaptée ...?
n L'agence de voyages a un point de vue légèrement différent. Toutes les données techniques
nécessaires pour réaliser un modèle sont organisées et enregistrées dans les tables d'une base de
données centrale, en fonction de la structure de la base concernée. La quantité d'informations
stockées dépasse largement les besoins d'une agence de voyages. L'agence veut avant tout savoir
quel client a effectué une réservation, à quelle date, combien le passager a payé, etc. Ces différentes
vues et leurs exigences respectives démontrent la nécessité d'utiliser des programmes d'organisation
de données qui répondent à tous les besoins des utilisateurs.
BC_TRAVLAG T
Agence de CR
voyages
BC_GEOCITY T
Ville
A BC_CITAIRP T BC_COUNTER T
Affectation Agence CR
Ville - commerciale
A
BC_AIRPORT T aéroport
Aéroport R BC_CUSTOM T
R Client
Heure
ã SAP AG 1999
n Toutes les informations logiquement interdépendantes contiennent des entités. Le modèle de données
ABAP comporte des entités individuelles :
toutes les villes ;
tous les aéroports ;
toutes les compagnies aériennes ;
tous les itinéraires de vol ;
tous les vols.
n Ces éléments sont tous liés les uns aux autres par des rapports prédéterminés :
les routes aériennes relient forcément deux aéroports ;
un itinéraire se caractérise par une compagnie aérienne, un aéroport de départ, un aéroport de
destination et un horaire de départ ;
sur une destination donnée, il peut exister des vols à de nombreuses dates au cours d'une année ;
mais la route aérienne correspondante doit nécessairement exister au préalable pour que le vol soit
créé ;
tous les aéroports situés à proximité des villes sont affectés aux villes.
n Ce modèle permet de gérer toutes les données nécessaires, sans redondance ; il est conçu pour qu'une
agence de voyages accède à des informations intéressantes du point de vue de sa clientèle.
Heure
ã SAP AG 1999
n Tous les exemples et exercices contenus dans les cours ABAP ainsi que toute la documentation
présentent le modèle de système de réservation aérienne de SAP. Tous les objets du Repository du
modèle se trouvent dans la classe de développement BC_DATAMODEL.
n Voici quelques-unes des tables de données de vol le plus fréquemment employées dans les
formations ABAP :
SPFLI : table des liaisons aériennes ;
SFLIGHT : table des vols ;
SBOOK : table des réservations.
Index
ã SAP AG 1999
n Toutes les informations relatives aux attributs techniques de la table sont accessibles quand vous
naviguez jusqu'à sa définition dans le Dictionnaire ABAP.
n Les informations suivantes sont intéressantes pour augmenter la performance des accès à la base de
données :
zones clés : si les enregistrements demandés à la base de données sont retrouvés selon les zones de
clés, l'optimiseur de la base de données peut exécuter l'accès 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 sélectionner des
enregistrements. Le bouton de commande "Index" permet des les afficher dans une boîte de
dialogue. Vous pouvez choisir un index en double-cliquant simplement dessus. Le système affiche
ensuite un écran comportant des informations complémentaires sur cet index.
Informations
Informations sur
sur les
les tables
tables de
de base
base de
de données
données
Lecture
Lecture de
de tables
tables de
de base
base de
de données
données
Contrôle
Contrôle d'autorisations
d'autorisations
Lecture
Lecture de
de tables
tables de
de base
base de
de données
données multiples
multiples
ã SAP AG 1999
Ligne individuelle
} Lignes multiples
}
Colonne
spécifique
ã SAP AG 1999
Programme ABAP
Objets de
pa_car
données
wa_
wa_scarr
Bloc de
traitement
ABAP Conversion
spécifique
SELECT ... Open SQL de base de Base de données SQL
données
Interface de
scarr
base de
données
Système d'exécution ABAP
ã SAP AG 1999
n Les instructions Open SQL composent un sous-ensemble de Standard SQL qui est entièrement
intégré dans le langage ABAP. Vous les utilisez pour accéder à la base de données selon une
procédure uniforme à partir de vos programmes, quel que soit le système de base de données. Les
instructions Open SQL sont converties en instructions SQL spécifiques de la base de données par
l'interface de base de données.
Programme ABAP
pa_car Table
Objets de données
de base de
wa_
wa_scarr données
SCARR
ã SAP AG 1999
n L'instruction SELECT SINGLE* vous permet de lire une ligne individuelle à partir d'une table de
base de données. Toutes les zones-clés doivent alors comporter la clause WHERE. Elle informe
l'interface de base de données que toutes les colonnes appartenant à cette ligne doivent être lues. Si
vous souhaitez uniquement une sélection spécifique de colonnes, vous pouvez y insérer une
structure.
n Vous devez introduire le nom de la structure dans laquelle vous désirez que l'interface de base de
données copie un enregistrement de données après la clause INTO. Cette structure doit être
identique à celle des colonnes de la table, qui sont lues et alignées à gauche.
n Si vous utilisez l'option CORRESPONDING FIELDS OF dans la clause INTO, vous pouvez
remplir l'espace de travail cible composante par composante. Le système ne retient que celles qui
portent le même nom que les colonnes de la table. Si vous n'indiquez pas l'option, il complète
l'espace de travail à partir de la gauche, indépendamment de sa structure.
n Si le système trouve l'entrée de table répondant aux conditions spécifiées, SY-SUBRC adopte la
valeur 0.
n L'option SINGLE informe la base de données qu'une ligne individuelle doit être lue. La base de
données termine la recherche une fois cette ligne trouvée. SELECT SINGLE apporte donc une
meilleure performance d'accès à un enregistrement individuel qu'une boucle SELECT, si vous
fournissez les valeurs de toutes les zones-clés.
ã SAP AG 1999
n Si vous n'utilisez pas l'option SINGLE dans l'instruction SELECT, le système lit plusieurs
enregistrements multiples de la base de données. La liste des zones détermine les colonnes dont les
données doivent être lues.
n Le nombre de lignes à lire peut être limité par la clause WHERE. Elle effectue des restrictions soit
selon les zones-clés de la table de base de données, soit selon un index secondaire. Vous trouverez
des informations complémentaires sur les zones-clés et les index secondaires dans le Dictionnaire
ABAP. Double-cliquez sur la clause FROM de la table pour y accéder.
n Cette clause ne doit comporter que le nom des zones de table que vous voulez lire. Le nom de la
table à laquelle vous voulez accéder 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 = ... )
n De multiples conditions logiques peuvent être ajoutées dans la clause WHERE en utilisant AND ou
OR.
n La base de données envoie les données à l'interface sous forme de piles. Le système d'exécution
ABAP copie ligne par ligne les enregistrements de données dans la zone cible en utilisant une
boucle. Il effectue également le traitement séquentiel de toutes les instructions situées entre SELECT
et ENDSELECT.
n SY-SUBRC = 0, lorsque le système a pu sélectionner au moins une entrée. Une fois l'instruction
SELECT exécutée dans chaque passage de boucle, la zone de système SY-DBCNT contient le
nombre de lignes lues. Après l'instruction ENDSELECT, il contient le nombre total de lignes lues.
Interface de
IF sy-subrc = 0. base de
... données
ã SAP AG 1999
n L'option INTO TABLE <itab> copie le contenu de l'interface de base de données dans la table
interne itab. Cette opération s'appelle ARRAY FETCH.
n Comme les ARRAY FETCH ne constituent pas une boucle, aucune instruction ENDSELECT n'est
utilisée.
n SY-SUBRC = 0, lorsque le système a lu au moins une entrée de table.
n Pour plus d'informations sur les array fetch et sur les tables internes, reportez-vous au chapitre
Tables internes.
Programme ABAP
ã SAP AG 1999
n La clause INTO spécifie les objets de données dans lesquels vous souhaitez placer les données de la
table. Vous pouvez :
définir dans votre programme une structure plate qui comporte les zones dans le même 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 données 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 ...
Programme ABAP
n Si vous utilisez la clause INTO CORRESPONDING FIELDS, les données sont placées dans les
zones de structure du même nom.
n Avantages de cette construction :
la structure ne doit pas être structurée comme la liste des zones et ne doit pas être alignée à gauche
;
elle est facile à gérer, 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 même nom et type.
n Désavantages de cette construction :
INTO CORRESPONDING FIELDS est plus intensif au moment de l'exécution que INTO. La
durée d'exécution peut par conséquent se prolonger.
n Si vous souhaitez placer des données dans des colonnes de table interne de même nom en utilisant
une création de tableaux, utilisez INTO CORRESPONDING FIELDS OF TABLE <itab>.
Informations
Informations sur
sur les
les tables
tables de
de base
base de
de données
données
Lecture
Lecture de
de tables
tables de
de base
base de
de données
données
Contrôle
Contrôle d'autorisations
d'autorisations
Lecture
Lecture de
de tables
tables de
de base
base de
de données
données multiples
multiples
ã SAP AG 1999
Fiches
utilisateur
Écran de BC400-00
sélection CONTRÔLE
D'AUTORISATION Profil1
Profil2
Profil S_CARRID
Autorisation pour
Non SY-SUBRC Autorisation
Note
= 0 Object S_CARRID
? Autorisation pour
Oui Autorisation
Object S_CARRID
SELECT
Profil4
Autorisation pour
Autorisation
Object S_TCODE
ã SAP AG 1999
n Vous devez exécuter un contrôle d'autorisation avant d'accéder à la table de base de données. Vous
devez programmer vous-même ces contrôles d'autorisation. AUTHORITY-CHECK vérifie d'abord
s'il existe pour l'utilisateur une autorisation contenant toutes les valeurs requises. Vous contrôlez
ensuite la valeur du code dans la zone système 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
possède pas l'autorisation requise ; vous devez afficher un message et choisir l'action appropriée.
n Vous apprendrez plus loin à rendre les zones d'écran de sélection disponibles pour la saisie, si vous
effectuez le contrôle d'autorisation juste après l'écran de sélection. Vous apprendrez aussi à éditer un
message lorsque l'utilisateur n'a pas l'autorisation requise.
"Afficher" autorisation
pour Objet S_CARRID
CARRID: *
ACTVT: Afficher
Objet : S_CARRID
CARRID (compagnie aérienne)
ACTVT (Activité)
"Modifier" autorisation
pour Objet S_CARRID
Activités : CARRID: LH
Créer = 01
Modifier = 02 ACTVT: Modifier
Afficher = 03
ã SAP AG 1999
n Toutes les données du système SAP doivent être protégées contre les accès non autorisés.
n Lorsque l'utilisateur gère des données de base, l'administrateur système lui donne une autorisation.
Pendant ce processus, vous devrez déterminer exactement à quelles données les utilisateurs ont
l'autorisation d'accéder et quel type d'accès doit être autorisé. Par exemple, vous voulez peut-être
permettre aux utilisateurs d'afficher des données pour toutes les compagnies aériennes, mais
uniquement de modifier des données pour certaines zones sélectionnées. Dans ce cas, le système doit
chercher une combinaison des zones "activité" et "compagnie aérienne" chaque fois qu'il exécute un
contrôle d'autorisation.
n Les objets d'autorisation définissent simplement la combinaison des zones qui doivent être adressées
simultanément et servir de modèles pour les autorisations et les contrôles 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 "Développement" de ABAP Workbench. Une liste
complète de tous les objets de développement, triée selon la classe et comprenant leurs zones
correspondantes et la documentation, fait partie de cette transaction.
Paramétrer toutes
les autorisations
AUTHORITY-CHECK pour Objet S_CARRID
Object S_CARRID Contrôle
ID 'CARRID' FIELD 'LH' ACTVT
ID 'ACTVT' FIELD '02'.
03 x x x x x
Résultats
IF sy-subrc ne 0. d'état 02 x
* Appropriate system reaction
01
* to failed check
ENDIF. CARRID
AA AZ DL LH UA
ã SAP AG 1999
n Pour effectuer des contrôles d'autorisation dans des programmes, vous devez spécifier l'objet et les
valeurs dont l'utilisateur a besoin pour accéder à cet objet. Ne précisez pas le nom de l'autorisation.
n Notre exemple contrôle si l'utilisateur est autorisé pour l'objet S_CARRID, qui a la valeur "LH"
dans la zone CARRID (compagnie aérienne) et la valeur "02" pour "Modifier" dans la zone ACTVT
(activité). Vous trouverez les abréviations des activités possibles dans les tables TACT et TACTZ,
mais également dans les objets appropriés.
n Important : l'instruction Authority-Check exécute le contrôle d'autorisation et retourne une valeur
de code retour adéquate dans SY-SUBRC. Lorsque vous contrôlez ce code retour, vous pouvez
spécifier les conséquences d'une autorisation manquante (par exemple : terminer le programme, ou
afficher un message et ignorer certaines lignes du code).
Modèle
Insérer instruction
...
...
AUTHORITY-CHECK S_CARRID
...
...
ENDIF. Processus
code retour
ã SAP AG 1999
n Vous devez spécifier toutes les zones de l'objet dans AUTHORITY-CHECK, sinon vous recevez un
code retour différent de zéro. Si vous ne voulez pas exécuter le contrôle d'une zone déterminée,
entrez DUMMY après le nom de zone. Par exemple : lors de l'appel d'une transaction pour modifier les
données de vol, il est normal de vérifier si l'utilisateur est autorisé à modifier les entrées d'une
compagnie aérienne déterminée : AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'ACTVT' FIELD '02' ID 'CARRID' DUMMY.
n Principaux codes de retour dans AUTHORITY-CHECK :
- 0 : l'utilisateur dispose d'une autorisation contenant les valeurs nécessaires ;
- 4 : l'utilisateur ne dispose pas de l'autorisation requise ;
- 8 : le contrôle n'a pas abouti car les zones de l'objet n'ont pas toutes été spécifiées.
n Vous trouverez une liste complète des codes de retour dans la documentation, au mot-clé
AUTHORITY-CHECK.
n Vous pouvez également spécifier une zone individuelle après l'option FIELD, mais pas de table de
sélection. Pour effectuer un contrôle AUTHORITY-CHECK sur toutes les valeurs d'une table de
sélection, utilisez les modules fonction.
Informations
Informations sur
sur les
les tables
tables de
de base
base de
de données
données
Lecture
Lecture de
de tables
tables de
de base
base de
de données
données
Contrôle
Contrôle d'autorisations
d'autorisations
Lecture
Lecture de
de tables
tables de
de base
base de
de données
données multiples
multiples
ã SAP AG 1999
Méthodes des
classes générales
BAPI
Objet de
gestion
ce
r fa s
te e
In dul on
Base de o cti
M n
données fo
logique Groupe de
fonctions
ã SAP AG 1999
n Utilisez les composantes réutilisables disponibles qui englobent la recherche de données complexes.
Quatre techniques possibles :
méthodes de classes générales ;
méthodes d'objets de gestion ;
modules fonction ;
des bases de données logiques sont des programmes de recherche de données fournis par SAP qui
renvoient les données de manière hiérarchique dans une séquence logique.
n Vous trouverez des informations sur les nombreuses techniques dans le chapitre Réutiliser les
composantes.
SPFLI SCARR
Mandt Carrid Connid ... Cityfrom ... Mandt Carrid Carrname ...
VUE
Mandt Carrid Connid Cityfrom Carrname
ã SAP AG 1999
n Les vues s'appliquent à différentes tables du Dictionnaire ABAP. Elles contiennent des zones issues
d'une très grande table ou de plusieurs tables.
n Utilisez les vues pour regrouper les informations des zones de différentes tables, les présenter sous
une forme spécifique et travailler dans le système R/3.
n Vous utilisez principalement les vues pour la programmation en ABAP et pour l'aide en ligne (F4).
n Si aucune des composantes appropriées à vos objectifs n'est disponible, vous pouvez exécuter un
accès complexe à la base de données à l'aide des instructions ABAP-OPEN- SQL. Vous devez
comparer les mérites de ces nombreuses techniques. Comme l'utilisation d'une technique inadéquate
peut donner lieu à de considérables problèmes de performance, vous trouverez des informations
complémentaires sur la performance optimale des accès à la base de données dans la documentation
ou dans le cours BC490 Analyse des performances ABAP.
ã SAP AG 1999
Créez un programme qui affiche tous les vols d’une compagnie aérienne
sélectionnée dans une liste. Dans le programme, vous devez également
calculer le taux de remplissage de chaque vol et ensuite l’afficher.
Les données de vol se trouvent dans la table de base de données
SFLIGHT.
Programme : ZBC400_##_SELECT_SFLIGHT
Solution modèle : SAPBC400DDS_SELECT_SFLIGHT
1-2 Créez une structure en référence à la structure SBC400FOCC, qui est définie dans
le Dictionnaire ABAP. Pour découvrir les composantes de cette structure,
consultez sa définition dans le Dictionnaire ABAP.
1-3 Limitez les lignes de la sélection de base de données par une clé primaire. Pour
connaître les zones clé, regardez la définition de SFLIGHT du Dictionnaire
ABAP. La zone MANDT est automatiquement complétée par le système.
Programmez un écran de sélection dans lequel l’utilisateur peut entrer une valeur
pour la deuxième zone-clé (CARRID).
1-4 Lisez tous les vols de la table de base de données SFLIGHT qui correspondent à la
compagnie aérienne indiquée dans l’écran de sélection par l’utilisateur. Utilisez un
bloc SELECT … ENDSELECT. Entrez les données ligne par ligne dans la
structure que vous avez créée à l’exercice 1-2. Assurez-vous que vous lisez
uniquement les zones de la table de base de données pour lesquelles il existe
également une zone cible dans la structure. Veillez à spécifier les zones-clé dans la
sélection, de sorte que la base de données puisse utiliser l’index primaire.
(C) SAP AG BC400 5-27
1-5 Dans la boucle SELECT, calculez le pourcentage d’occupation en utilisant la zone
correspondante de l’espace de travail. Affectez le résultat à la zone POURCENTAGE
de votre structure.
1-6 Créez une liste affichant les informations consultées dans la base de données, et le
pourcentage d’occupation de chaque vol.
Programme : ZBC400_##_SELECT_SFLIGHT_ITAB
Solution modèle : SAPBC400DDS_SELECT_SFLIGHT_TAB
2-2 Outre votre structure qui se réfère au type du Dictionnaire ABAP SBC400FOCC,
créez une table interne avec le type ligne SBC400FOCC. Utilisez les Cas d’emploi
pour le type de ligne du Dictionnaire ABAP SBC400FOCC pour y trouver un type
de table adéquat.
2-3 Remplissez la table interne ligne par ligne en utilisant une instruction APPEND dans
la boucle SELECT.
2-5 Affichez le contenu trié de la table interne dans une liste. Pour ce faire, utilisez une
structure LOOP … ENDLOOP.
2-7 Remplacez la boucle SELECT par un ARRAY FETCH et complétez la table interne
avec les données appropriées de la table SFLIGHT. La colonne du pourcentage
d’occupation contient uniquement des valeurs initiales.
Programme : ZBC400_##_AUTHORITY_CHECK
Solution modèle : SAPBC400DDS_AUTHORITY_CHECK,
SAPBC400DDS_AUTHORITY_CHECK_2 et
SAPBC400DDS_AUTHORITY_CHECK_3
3-2 ajoutez un contrôle d’autorisation qui contrôle l’objet S_CARRID ; vérifiez que
la base de données n’est pas accessible à l’utilisateur qui ne dispose pas
d’autorisation de la compagnie aérienne saisie dans l’écran de sélection ; vérifiez
au contraire que le programme affiche un message d’erreur approprié.
3-3 Redémarrez votre programme. Sur l’écran de sélection, essayez d’entrer AA pour la
compagnie aérienne, ensuite UA.
*&--------------------------------------------------------------*
*& Report SAPBC400DDS_SELECT_SFLIGHT
*
*&--------------------------------------------------------------*
REPORT sapbc400dds_select_sflight .
START-OF-SELECTION.
* Sélectionner tous les enregistrements de la table de base de
données SFLIGHT correspondant
* à carrier PA_CAR
SELECT carrid connid fldate seatsmax seatsocc FROM sflight
INTO CORRESPONDING FIELDS OF wa_flight
WHERE carrid = pa_car.
* Calculer l’occupation de chaque vol
wa_flight-percentage =
100 * wa_flight-seatsocc / wa_flight-seatsmax.
* Créer 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.
*&--------------------------------------------------------------*
*& Report SAPBC400DDS_SELECT_SFLIGHT_TAB *
*& *
*&--------------------------------------------------------------*
REPORT sapbc400dds_select_sflight_tab .
START-OF-SELECTION.
FACULTATIF:
*&--------------------------------------------------------------*
*& Report SAPBC400DDS_SELECT_ARRAY_FETCH *
*& *
*&--------------------------------------------------------------*
REPORT sapbc400dds_select_array_fetch .
ENDIF.
Solution modèle :
Programmes SAPBC400DDS_AUTHORITY_CHECK,
SAPBC400DDS_AUTHORITY_CHECK_2 et
SAPBC400DDS_AUTHORITY_CHECK_3
*&--------------------------------------------------------------*
*& Report SAPBC400DDS_AUTHORITY_CHECK *
*& *
*&--------------------------------------------------------------*
REPORT sapbc400dds_authority_check_#.
CONSTANTS actvt_display TYPE activ_auth value '03'.
DATA: wa_flight TYPE sbc400focc,
...
PARAMETERS: pa_car TYPE sflight-carrid.
START-OF-SELECTION.
* Authority-Check: l’utilisateur est-il autorisé à lire les données
pour la compagnie aérienne
* PA_CAR?
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD pa_car
ID 'ACTVT' FIELD actvt_display.
CASE sy-subrc.
* L’utilisateur est autorisé
WHEN 0.
* SELECT loop or Array Fetch ...
* L’utilisateur ne possède pas l'autorisation ou autre erreur de
authority-check
WHEN OTHERS.
WRITE: / 'Authority-Check Error'(001).
ENDCASE.
Contenu :
l Blocs événements ABAP
l Sous-programmes
ã SAP AG 1999
ã SAP AG 1999
Bloc
événement
Définitions de
Bloc zone et type local
événement
Écran de sélection
Process
Bloc Module Before
événement Output
ã SAP AG 1999
n Un programme ABAP est un ensemble de blocs de traitement. Un bloc de traitement est une section
passive du code du programme qui est traitée de manière séquentielle à son démarrage.
n Les blocs de traitement représentent les plus petites unités en ABAP. Il est impossible de les
décomposer et donc de les imbriquer.
n De nombreux types de blocs de traitement ABAP existent :
les blocs événements sont des blocs de traitement ABAP appelés par le processeur ABAP. Ils
peuvent logiquement appartenir au programme exécutable, à l'écran de sélection, à la liste ou à
l'écran. Ce chapitre traite des blocs événements qui appartiennent au programme exécutable. Vous
trouverez des informations sur les blocs événements qui appartiennent à l'écran de sélection, à la
liste ou à l'écran dans les chapitres sur les dialogues utilisateur.
le traitement des sous-programmes se déclenche par une instruction ABAP. Les paramètres
peuvent être transférés 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
conséquent, les modules seront traités dans le chapitre Dialogues utilisateur : dynpros.
n Les zones de mémoire sont accessibles pour tous les objets de données générales d'un programme,
lorsque celui-ci est lancé. Les instructions de déclaration ABAP ne sont dès lors pas des
composantes des blocs de traitement ABAP mais sont rassemblées à partir du code source général en
utilisant une recherche lorsque le programme est généré. Les objets de données locales des sous-
programmes en sont des exceptions.
pa_date = pa_date - 7.
WRITE pa_date.
ã SAP AG 1999
n Les programmes étudiés jusqu'à présent ne comportaient qu'un seul bloc de traitement, qui s'ajoutait
à la déclaration des données. Dans de tels cas, il est inutile de déclarer le bloc de façon explicite.
Cependant, dans des programmes plus complexes, plusieurs blocs de traitement différents sont
nécessaires, et leur type et nom sont spécifiés.
n Notre programme est un exemple de blocs événements. Il contient une valeur de saisie pour une date
sur un écran de sélection. La valeur par défaut est la date de la semaine précédente. L'instruction
PARAMETERS ne peut remplir cette valeur, car un calcul est requis. L'option DEFAULT de
l'instruction PARAMETERS permet à l'objet de données de remplir la valeur par défaut au démarrage
du programme. Les valeurs par défaut peuvent être des littéraux ou des zones de la structure sy. Le
système d'exécution complète la zone sy-datum par la date effective au démarrage du programme.
Utilisez l'événement INITIALIZATION pour modifier des variables à l'exécution, mais avant
l'envoi de l'écran de sélection standard. START-OF-SELECTION est un bloc événement pour créer
des listes.
n Les déclarations globales sont reconnues par le système grâce au mot-clé déclaratif qu'elles utilisent.
Elles constituent un bloc de traitement logique (indépendamment de leur emplacement dans le code
source). Lorsque vous générez le programme, le système recherche dans le code source les
instructions déclaratives. Toutefois, pour plus de lisibilité, regroupez ces déclarations au début du
programme. L'instruction PARAMETERS représente un des éléments du langage déclaratif. Lorsque
le programme est généré, un écran de sélection comportant des informations sur l'objet de données
élémentaire du type spécifié est également généré.
??
Mémoire-
START-OF-SELECTION.
tampon
de liste
WRITE pa_date. pour
liste de base
Temps
ã SAP AG 1999
n Les événements les plus simples sont ceux destinés à un programme exécutable (type 1).
n Le processeur ABAP appelle des blocs événements dans une séquence désignée pour générer et
traiter des listes.
n le bloc événement INITIALIZATION est le premier à être appelé ;
n un écran de sélection est ensuite envoyé au serveur de présentation ;
n dès que vous quittez l'écran de sélection, START-OF-SELECTION est appelé ;
n si le bloc événement START-OF-SELECTION contient des instructions ABAP WRITE, SKIP
ou ULINE, un buffer de liste est rempli ;
n un buffer de liste est ensuite envoyé au serveur de présentation sous forme de liste.
n Les événements sont des blocs de traitement appelés par le processeur ABAP. Celui-ci détermine
l'ordre de traitement des événements.
n Un programme exécutable comporte différents événements correspondant aux tâches de création de
listes.
REPORT ...
INITIALIZATION.
INITIALIZATION. " Default values for selection screen
pa_date = pa_date - 7.
START-OF-SELECTION.
START-OF-SELECTION. " Start of data processing
WRITE pa_date.
ã SAP AG 1999
n Dans les programmes ABAP, chaque événement est introduit par un mot-clé événementiel. Il se
termine lorsque le bloc de traitement suivant démarre. Aucune instruction ABAP ne conclut un
événement de manière explicite.
n Les événements sont appelés par le processeur ABAP. L'ordre dans lequel vous les placez dans un
programme importe peu : le système les appelle toujours dans un ordre donné.
n START-OF-SELECTION est le premier événement pour générer une liste. Le processeur ABAP
l'appelle si vous sélectionnez le bouton "Exécuter".
n INITIALIZATION est un événement que vous utilisez pour définir un grand nombre de valeurs par
défaut. Ce bloc événement vous permet de paramétrer des valeurs par défaut qui ne peuvent être
déterminées qu'à l'exécution. Dans l'exemple ci-dessus, la date "Il y a une semaine" est calculée et
placée dans l'objet de données pa_date. Le processeur ABAP envoie ensuite au serveur de
présentation un écran de sélection comportant par défaut la valeur calculée. La valeur peut, bien sûr,
être encore modifiée par l'utilisateur.
l Fonctions encapsulées
l Programmes mieux
structurés qui peuvent
Bloc de
traitement
être lus et compris plus
Interface facilement
Sous-
programmes
l Gestion de programmes
Interface
plus facile
Sous-
programmes l Peut être réutilisé de
manière locale dans le
programme
l Bloc de traitement avec
interface
ã SAP AG 1999
n Les sous-programmes sont des blocs de traitement comportant une interface définie qui peuvent être
appelés par n'importe quel bloc de traitement en utilisant une instruction ABAP. Ils permettent
l'encapsulation interne de programmes.
SAPBC400PBD_FORMS
Types d'objets du programme
Structures du Dictionnaire
Zones
Événements
Sous-programmes
AUTHORITY_SCARRID
FILL_ITAB Cliquer sur le bouton droit
WRITE_ITAB Modifier
Afficher
Cas d'emploi
ã SAP AG 1999
n Vous pouvez naviguer vers les sous-programmes à partir d'une liste d'objets du programme.
n Les cas d'emploi d'un sous-programme affichent toutes les lignes du programme qui appellent le
sous-programme.
*&--------------------------------------------------------------------*
*& Form FILL_ITAB
*&--------------------------------------------------------------------*
* Filling internal table with records of sflight with
* carrid = p_carrid, calculate percentage
*---------------------------------------------------------------------*
* -->P_carrid carrier id
* <--P_IT_FLIGHT internal standard table with line type sbc400focc
*---------------------------------------------------------------------*
fill_itab USING
FORM fill_itab value( p_carrid) TYPE s_carr_id
CHANGING p_it_flight TYPE sbc400_t_sbc400focc.
...
ã SAP AG 1999
n Vous devez déterminer le périmètre 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 paramètres d'interface auxquels il a accès (uniquement en mode lecture) : les paramètres
sont répertoriés après l'option USING. Le type et l'ordre des paramètres d'interface sont
importants.
les paramètres d'interface qu'il modifie : les paramètres sont répertoriés après l'option
CHANGING. Le type et l'ordre des paramètres d'interface sont importants.
Programme ABAP
Bloc événement
PERFORM fill_itab
USING pa_carr
CHANGING itab.
p_carrid
p_it_flight
fill_itab
Temps
ã SAP AG 1999
n Lorsqu'un sous-programme est appelé, tous les paramètres d'interface doivent être remplis par des
valeurs. Il existe une distinction entre les paramètres suivants :
après USING sont indiqués les paramètres que le sous-programme doit seulement lire ;
après CHANGING sont indiqués les paramètres que le sous-programme modifie.
n Si le sous-programme est appelé à partir du bloc de traitement ABAP par une instruction PERFORM,
le système interrompt le bloc de traitement pour traiter le sous-programme de manière séquentielle.
Lorsque la dernière ligne du sous-programme (ENDFORM.) est atteinte, le système exécute le
traitement qui suit l'instruction PERFORM.
n Vous pouvez retrouver le déroulement au moment de l'exécution en mode débogage. Vous avez
plusieurs options :
traiter le programme entier, sous-programmes inclus, ligne par ligne, en utilisant Pas à pas ;
exécuter un bloc de traitement ligne par ligne en utilisant Exécuter. Les sous-programmes sont
alors exécutés comme un tout ;
quitter le traitement pas à pas d'un sous-programme et retourner au programme appelant en
utilisant Retour.
a1 a2 a3
Paramètres effectifs
START-OF-SELECTION.
Appel par référence
:
PERFORM form1 USING a1
PERFORM
CHANGING a2 a3.
Appel par valeur
FORM form1 USING VALUE(fv1)
CHANGING VALUE(fv2)
fr3 .
:
Appel par valeur et par résultat ENDFORM.
ENDFORM.
ã SAP AG 1999
n La méthode utilisée pour transmettre les paramètres d'interface se trouve dans l'interface du sous-
programme. Les paramètres peuvent être appelés soit par référence soit par valeur.
n Appel par référence : l'adresse du paramètre effectif est transmis. Dans le sous-programme, la
variable est adressée en utilisant le nom du paramètre formel. Les modifications ont un effet
immédiat sur la variable globale. Si seul le nom du paramètre formel est spécifié dans l'interface du
sous-programme, le paramètre est alors appelé par référence.
n Appel par valeur : lorsque le sous-programme est appelé, une variable locale est créée avec le nom
du paramètre formel et la valeur du paramètre effectif est copiée vers le paramètre formel. Deux
types d'appel par valeur existent :
Appel par valeur : le paramètre formel est transmis dans l'interface après la clause USING
comprenant l'option VALUE( <nom paramètre>). Lorsque le sous-programme est appelé, le
paramètre effectif est copié vers le paramètre formel. Les modifications apportées au paramètre
formel affectent uniquement la copie locale, et non le paramètre effectif.
Appel par valeur : le paramètre formel est transmis dans l'interface après la clause CHANGING
comprenant l'option VALUE( <nom paramètre>). Lorsque le sous-programme est appelé, le
paramètre effectif est copié vers le paramètre formel. Les modifications initialement effectuées sur
le paramètre formel affectent uniquement la copie locale. Lorsque l'instruction ENDFORM est
atteinte, la valeur du paramètre formel est recopiée dans le paramètre effectif.
n Les paramètres de l'interface sont dits "formels" ; les paramètres transmis au sous-programme sont
dits "effectifs".
n Le nombre de paramètres effectifs doit être identique à celui des paramètres formels. Les paramètres
optionnels ne sont pas autorisés. Les paramètres sont affectés dans l'ordre de leur liste.
n Lorsque vous appelez un sous-programme par PERFORM, le système vérifie si le type des
paramètres effectifs de l'instruction PERFORM est compatible avec celui des paramètres formels.
Différents types de contrôles sont exécutés pour différents types.
n Contrôle complet du type :
n TYPE D, F, I, T ou <type dictionnaire>. Ces types sont entièrement spécifiés. Le
système contrôle si le type de données du paramètre effectif est identique à celui du paramètre
formel dans son intégralité.
n Contrôle partiel par types génériques :
n TYPE C, N, P ou X : le système contrôle si le paramètre effectif est de type C, N, P ou
X. La longueur du paramètre et le nombre de décimales dans l'option DECIMALS (type P) sont
transférés du paramètre effectif vers le paramètre formel.
n TYPE <type générique du dictionnaire > : le paramètre formel hérite de toutes
les informations non spécifiées concernant un type générique du Dictionnaire, depuis un
paramètre formel.
n L'interface se définit dans la routine FORM. Dans l'instruction PERFORM, USING et CHANGING
n'ont qu'une valeur informative.
ã SAP AG 1999
Programme : ZBC400_##_FORMS
Solution modèle : SAPBC400PBS_FORMS
1-4 Facultatif:
Encapsulez l'édition des données dans un sous-programme. Appelez le sous-
programme après la boucle SELECT. Transmettez la table interne contenant les
données consultées en utilisant l’interface. Spécifiez les types des paramètres
d’interface. Affichez les données à partir du sous-programme en utilisant une
structure LOOP… ENDLOOP . Pour ce faire, créez la zone de travail de table
demandée comme un objet de données local dans le sous-programme. Pour
spécifier le type de la structure locale, utilisez l’instruction ABAP DATA: <WA >
LIKE LINE OF <ITAB>.
*&--------------------------------------------------------------*
*& Report SAPBC400PBS_FORMS *
*& *
*&--------------------------------------------------------------*
REPORT sapbc400pbs_forms.
CONSTANTS actvt_display TYPE activ_auth VALUE '03'.
DATA: wa_flight TYPE sbc400focc,
it_flight TYPE sbc400_t_sbc400focc.
PARAMETERS: pa_car TYPE sflight-carrid.
DATA: returncode LIKE sy-subrc.
START-OF-SELECTION.
* Authority-Check:
PERFORM authority_scarrid USING pa_car actvt_display
CHANGING returncode.
CASE returncode.
* L’utilisateur 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.
* L’utilisateur n’est pas autorisé ou autre erreur de authority-check
WHEN OTHERS.
WRITE: / 'Authority-Check Error'(001).
ENDCASE.
*&--------------------------------------------------------------*
*& Form WRITE_LIST
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* -->P_IT_FLIGHT text
*---------------------------------------------------------------*
FORM write_list USING p_it_flight TYPE sbc400_t_sbc400focc.
DATA: wa LIKE LINE OF p_it_flight.
LOOP AT p_it_flight INTO wa.
WRITE: / wa-carrid COLOR COL_KEY,
wa-connid COLOR COL_KEY,
wa-fldate COLOR COL_KEY,
wa-seatsocc,
wa-seatsmax,
wa-percentage,'%'.
ENDLOOP.
ENDFORM. " WRITE_LIST
Contenu :
l Attributs et avantages des listes
l Listes de base
l Liste des événements
l Listes interactives
l Exemple de syntaxe : listes détaillées
ã SAP AG 1999
ã SAP AG 1999
Écran
Fonctions multilingues
CA ID PRICE
AA 2602 2400
AA 2602 2500
Total 7800
Imprimer
ã SAP AG 1999
n Le principal objectif d'une liste est d'éditer des données d'une manière qui peut être facilement
comprise par l'utilisateur ; cette édition prend souvent la forme d'un tableau. Dans R/3, elles
répondent à des besoins de gestion spécifiques :
n elles sont indépendantes de langue. Les textes et intitulés apparaissent dans la langue de travail
dès que la traduction adéquate est disponible ;
n elles peuvent éditer des valeurs monétaires dans de nombreuses devises ;
n L'édition de listes s'effectue :
n à l'écran : c'est ici que vous ajoutez couleurs et icônes,
n sur une imprimante,
n sur Internet/intranet : conversion automatique en format HTML ;
n vous pouvez également sauvegarder des listes dans le système R/3 ou les éditer pour un
traitement par un logiciel commercial externe (un tableur, par exemple).
Retour/Terminer/Annuler
Défiler
Imprimer
ã SAP AG 1999
: Titre/intitulés
Liste
:
Intitulé de liste
Sauvegarder
Intitulé de colonne
ã SAP AG 1999
n Chaque liste comporte un intitulé et jusqu'à quatre lignes d'intitulé de colonnes. Il existe deux
manières différentes d'utiliser ces outils :
n à partir de l'Éditeur : fonctions de gestion d'éléments de texte ;
n à partir de la liste elle-même. Si vous sauvegardez, activez et exécutez ensuite votre programme
pour créer la liste, vous pouvez introduire aussi bien les intitulés de liste que de colonnes en
choisissant le chemin de menus Système -> Liste -> Intitulés de liste. L'avantage principal de cette
méthode est que la liste reste affichée à l'écran. Cela facilite l'introduction des intitulés de colonnes.
n Lorsque vous relancerez le programme, les nouveaux intitulés apparaîtront automatiquement dans la
liste.
n Si vous ne saisissez pas d'intitulé, le titre du programme est sélectionné par défaut.
Programme
ã SAP AG 1999
n Les titres et intitulés font partie des éléments de texte d'un programme. Vous pouvez traduire tous
les éléments de texte dans d'autres langues. Ils s'affichent dans la langue définie sur l'écran de
connexion.
n Les symboles de texte forment un autre type d'élément de texte. Ceux-ci sont des objets de données
de littéraux alphanumériques spécifiques. Il s'agit de littéraux alphanumériques spéciaux que vous
traduisez sans modification du code source. Avec les symboles de texte, vous créez des listes non
tributaires d'une langue spécifique.
n Vous les écrivez de deux façons :
TEXT-<xxx> (où xxx est une chaîne de caractères de trois caractères de long) ;
'<text>'(<xxx>) (où xxx est une chaîne de caractères de trois caractères de long).
Lancement du
programme
Programme ABAP
Objets de données
Table de
base de
données
START-OF-SELECTION
Mémoire
tampon
de liste
ã SAP AG 1999
n Dans des programmes exécutables (type 1), les listes sont automatiquement affichées quand leurs
blocs événements correspondants sont traités. Ces blocs de traitement doivent cependant contenir
une instruction de création de liste. Celles-ci sont WRITE, SKIP, et ULINE.
n Les événements sont appelés dans un ordre adapté au traitement des listes :
n avant d'envoyer l'écran de sélection : INITIALIZATION ;
n après avoir quitté l'écran de sélection : START-OF-SELECTION.
n Toutes les éditions produites à partir de l'événement START-OF-SELECTION, de sous-
programmes ou de modules fonction, et traitées avant l'affichage d'une liste, sont temporairement
stockées dans le buffer de liste.
n Une fois tous les blocs événements de création de liste (par exemple START-OF-SELECTION)
traités, toutes les données du buffer de liste sont éditées sous la forme d'une liste.
Programme ABAP
Objets de données Table de
base de
données
Mémoire START-OF-SELECTION
tampon
pour
liste de
base
AT LINE-SELECTION
Mémoire
tampon
pour liste
détaillée
n Dans des programmes exécutables, vous pouvez utiliser le bloc événement AT LINE-SELECTION
pour créer des listes détaillées.
n Le système d'exécution ABAP :
affiche la liste de base quand les événements appropriés sont traités (par exemple, après START-
OF-SELECTION). Dans ce cas, la zone système sy-lsind contient la valeur 0 ;
traite le bloc événement AT LINE-SELECTION chaque fois que vous double-cliquez sur une
entrée. Si vous utilisez un statut standard, celui-ci apparaît automatiquement chaque fois que vous
choisissez l'icône Sélectionner, le poste du menu Sélectionner dans le menu Traiter, ou la touche
de fonction F2 ;
affiche les listes détaillées quand l'événement AT LINE-SELECTION est traité et augmente la
valeur contenue dans sy-lsind de un ;
affiche la liste détaillée à partir du niveau précédent de la hiérarchie de liste (n-1) chaque fois que
vous sélectionnez l'icône flèche verte à partir de la liste détaillée effective(n).
Listes détaill
détaillées
ées
Liste détaillée 1
sy-lsind 1
Listes détaill
détaillées
ées Liste détaillée 2
ã SAP AG 1999
REPORT sapbc400udd_secondary_list_a.
START-OF-SELECTION.
WRITE: / text-001 COLOR col_heading, Symboles de texte :
/ 'sy-lsind',
sy-lsind color 2. 001 Listes de base
ã SAP AG 1999
ã SAP AG 1999
n Nous allons maintenant écrire un programme en utilisant les listes de base et les listes détaillées.
n La liste de base de votre programme doit contenir des données de vol telles que le numéro de vol, la
compagnie aérienne, la ville et l'aéroport de départ, ainsi que les heures de départ et d'arrivée. Toutes
ces informations figurent dans la table SPFLI.
n L'utilisateur doit être en mesure d'accéder aux informations sur n'importe quel vol en double-cliquant
sur l'identificateur de compagnie aérienne et le numéro de vol. La date du vol s'affiche, ainsi que le
nombre de réservations. Ces données se trouvent dans la table SFLIGHT. Vous devez utiliser les
zones-clés SPFLI dans cette liste détaillée afin de lire les données adéquates dans SFLIGHT. Ces
opérations sont décrites dans les pages suivantes.
n Le programme type est nommé SAPBC400UDD_EXAMPLE_2 et fait partie de la classe de
développement BC400.
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.
ã SAP AG 1999
ENDSELECT.
n Lorsque l'événement AT LINE-SELECTION est traité, les objets de données d'un programme
contiennent les mêmes valeurs que celles affichées auparavant dans la liste de base. Cependant, une
liste détaillée nécessite souvent des données sélectionnées dans la liste de base elle-même. Vous
pouvez utiliser la zone HIDE pour stocker certaines données de la ligne que vous avez sélectionnée
et les insérer automatiquement où vous en avez besoin dans l'objet de données correspondant d'une
liste détaillée. Lorsque vous créez une liste de base, déterminez au préalable les informations à
classer en fonction de la position de leur ligne.
n Pour cela, utilisez le mot-clé ABAP HIDE, suivi de la liste des objets de données voulus. Le système
mémorise automatiquement le nom et le contenu de l'objet de données, selon la position de sa ligne
dans la liste.
Zone HIDE
?? LH 0402 ?? ?? ?? wa_spfli
REPORT sapbc400udd_example_2.
AT LINE-SELECTION.
WRITE: text-001, Symboles de texte :
wa_spfli-carrid,
wa_spfli-connid. 001 Correspondances
ã SAP AG 1999
n Dès que l'événement interactif (AT LINE-SELECTION dans cet exemple) est appelé en plaçant le
curseur sur une ligne et en double-cliquant ou sélectionnant ensuite l'icône Sélectionner, les valeurs
de cette ligne stockées dans la zone HIDE sont recopiées dans les zones correspondantes.
REPORT sapbc400udd_example_2.
...
Symboles de texte :
AT LINE-SELECTION.
IF sy-lsind = 1. 001 Correspondances
WRITE: text-001,
wa_spfli-carrid,
wa_spfli-connid.
WRITE:/ wa_sflight-fldate,
wa_sflight-seatsmax,
wa_sflight-seatsocc.
ENDSELECT.
ENDIF.
ã SAP AG 1999
n Vous créez une liste détaillée en remplissant le buffer de la liste détaillée dans le bloc événement AT
LINE-SELECTION en utilisant soit WRITE, SKIP, ou ULINE. Dans ce programme type, les
zones-clés pour la compagnie aérienne s'affichent et ses vols disponibles dans la table SFLIGHT
sont lues en utilisant une boucle SELECT. Veuillez noter que les informations spécifiques des lignes
de la compagnie aérienne sont disponibles uniquement en double-cliquant sur les objets de données
appropriés ; ceux-ci avaient été placés dans la zone HIDE lors de la création de la liste de base.
ã SAP AG 1999
Programme : ZBC400_##_DETAIL_LIST
Solution modèle : SAPBC400UDS_DETAIL_LIST
1-2 Assurez-vous que les zones-clés de la base de données SFLIGHT vous sont
accessibles pour la construction de la liste détaillée lorsque l’utilisateur sélectionne
un vol à partir d’une liste de base (double-cliquez ou appuyez sur F2 sur la ligne de
liste correspondante). (HIDE)
1-4 Dans la première ligne de cette liste, affichez les informations-clé à partir de la
ligne sélectionnée sur la liste de base. Sous cette ligne, affichez une ligne de
soulignement et une ligne vierge.
1-5 Affichez toutes les réservations pour le vol sélectionné à partir de la table de base
de données SBOOK. Utilisez une structure pour afficher les zones suivantes de la
table de base de données SBOOK sur la liste détaillée :
Exemple:
WRITE: wa_sflight-price CURRENCY wa_sflight-currency,
wa_sflight-currency.
*&--------------------------------------------------------------*
*& Report SAPBC400UDS_DETAIL_LIST *
*& *
*&--------------------------------------------------------------*
REPORT sapbc400uds_detail_list.
CONSTANTS actvt_display TYPE activ_auth VALUE '03'.
DATA: wa_flight TYPE sbc400focc,
wa_sbook TYPE sbook.
PARAMETERS: pa_car TYPE sflight-carrid.
START-OF-SELECTION.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD pa_car
ID 'ACTVT' FIELD actvt_display.
CASE sy-subrc.
WHEN 0.
SELECT carrid connid fldate seatsmax seatsocc FROM sflight
INTO CORRESPONDING FIELDS OF wa_flight
WHERE carrid = pa_car.
wa_flight-percentage =
100 * wa_flight-seatsocc / wa_flight-seatsmax.
WRITE : / wa_flight-carrid COLOR COL_KEY,
wa_flight-connid COLOR COL_KEY,
wa_flight-fldate COLOR COL_KEY,
wa_flight-seatsocc,
wa_flight-seatsmax,
wa_flight-percentage,'%'.
* Cacher les valeurs de zones-clés correspondant à la ligne effective
Contenu :
l Attributs et avantages des écrans de sélection
l Définir des écrans de sélection
l Évaluer une entrée utilisateur pour limiter la sélection de
base de données
l Événements d'écran de sélection
l Exemple de syntaxe : contrôles de saisie
supplémentaires avec dialogue d'erreur
ã SAP AG 1999
ã SAP AG 1999
Programme ABAP
Table de
base de
Objets de données données
Bloc de
traitement
ABAP
ã SAP AG 1999
n Utilisez ces écrans pour saisir les critères de sélection requis par le programme.
n Si vous créez une liste contenant des données d'une très grande table de base de données, vous
pouvez utiliser un écran de sélection pour limiter la quantité de données sélectionnée. Au moment de
l'exécution, spécifiez une plage de valeurs pour une des zones-clés ; seules les données comprises
dans cette plage sont lues dans la base et affichées dans la liste. Ceci réduit considérablement la
charge du réseau.
Contrôles
Contrôles de type
Fonctions multilingues
Entrée
Entrée
valeur
...
Variantes
Aide à la recherche
ã SAP AG 1999
n Les écrans de sélection sont des masques de saisie. L'utilisateur y entre des sélections, ce qui réduit
la quantité de données à lire dans la base. L'utilisateur peut :
sélectionner des zones individuelles ;
introduire des entrées complexes : plages de valeurs, opérations, modèles ;
sauvegarder comme variantes des zones de sélection remplies ;
utiliser l'aide à la saisie et les aides à la recherche en sélectionnant la touche de fonction F4 ou le
bouton de commande des entrées possibles.
n Vous pouvez traduire les textes de sélection dans d'autres langues pour les afficher dans la langue de
travail choisie par l'utilisateur.
n Le système effectue automatiquement un contrôle des types. En cas de saisie d'une valeur d'un type
incorrecte, un message d'erreur s'affiche. La zone concernée est alors prête à accepter la nouvelle
saisie.
Compagnie
SELECT-OPTIONS ... aérienne LH to ...
Compagnie aérienne
Valeur individuelle
Supérieur ou égal
Inférieur
Inférieur ou égal
Supérieur
SIGN OPTION LOW Valeurs simples
Inférieur
I GE LH Plages de valeurs
Différent
Exclusion de valeurs simples
Exclusion de plages de valeurs
Sélectionner
Exclure de la sélection
ã SAP AG 1999
n Les écrans de sélection vous permettent de saisir des sélections complexes tout comme des sélections
de valeurs individuelles. Les options de sélection programmables sont les suivantes :
n définition d'options de sélection ;
n saisie de plusieurs valeurs ou de plages de valeurs ;
n définition de critères d'exclusion.
n Chaque écran de sélection contient un icone Informations. Sélectionnez cet icone pour afficher des
informations complémentaires.
Zone de tables
Zones de structure
Aide à la recherche
Aide à la recherche
Tables de contrôle
Élément de données
Dictionnaire ABAP
ã SAP AG 1999
n Si vous référencez une zone de saisie d'après un objet du Dictionnaire ABAP doté d'une aide à la
recherche, le système fournit automatiquement une aide sur les valeurs possibles.
n Pour adapter cette aide à vos besoins, il est possible de définir une aide à la recherche dans le
Dictionnaire ABAP.
Fonctions multilingues
Programme
Ville de départ
ã SAP AG 1999
n Sur l'écran de sélection, le nom des variables figure à côté des zones de saisie. Cependant, vous
pouvez les remplacer par des textes de sélection, que vous pouvez ensuite traduire dans toutes les
langues souhaitées. Les textes de sélection sont affichés dans la langue de travail de l'utilisateur.
Compagnie
aérienne AA à LH ...
Ville de départ
Variante
CARRIER_AA_TO_LH:
zone de saisie Hide
Compagnies aériennes
AA à LH
Ville de départ
ã SAP AG 1999
n Vous pouvez définir et stocker des variantes pour tout écran de sélection. Lancez le programme et
sélectionnez Variantes -> Sauvegarder comme variante.
n Les variantes facilitent l'utilisation des écrans de sélection grâce aux fonctions suivantes :
n pré-affectation de valeurs aux zones de saisie ;
n masquage de zones de saisie ;
n sauvegarde de ces paramètres en vue d'une réutilisation
n Une variante peut renvoyer à plusieurs écrans de sélection.
n Les variantes sont dépendantes du mandant.
n En cliquant sur l'icone Informations d'un écran de sélection, vous obtenez des renseignements
complémentaires sur les variantes. Consultez également le cours BC405 Reporting dans ABAP
Workbench.
Programme ABAP
pa_car
Référence
Dictionnaire
Zones et types définis localement ABAP
PARAMETERS pa_car
TYPE s_carr_id.
Écran de s_carr_id
sélection
Bloc de
traitement
ABAP
ã SAP AG 1999
n Dans un programme exécutable, une seule instruction PARAMETERS suffit pour générer un écran de
sélection standard.
n L'instruction PARAMETERS <nom> TYPE <type> comme l'instruction PARAMETERS <nom>
LIKE <objet de données> génèrent toutes deux une zone de saisie simple sur l'écran de
sélection, et un objet de données <nom> du type spécifié.
n Si l'utilisateur saisit une valeur et choisit "Exécuter", cette valeur est placée dans l'objet de données
interne <nom> du programme. Le système n'autorise que les entrées de type approprié.
Programme ABAP
pa_car
pa_car
pa_car
Bloc de
traitement
ABAP
n Quand le bloc événement INITIALIZATION a été traité, l'écran de sélection est envoyé au serveur
de présentation. PARAMETERS permet de transporter les valeurs définies de l'objet de données dans
les zones de saisie du même nom de l'écran de sélection.
n L'utilisateur peut alors modifier les valeurs des zones de saisie. Si l'utilisateur clique ensuite sur la
fonction "Exécuter", les valeurs des zones de saisie sont transportées vers les objets de données
portant le même nom du programme et peuvent être évaluées dans les blocs de traitement ABAP.
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
n 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 sélection de données en indiquant la clause WHERE dans
l'instruction SELECT.
n Dans notre exemple, seuls les enregistrements de données dont la zone-clé CARRID a la même
valeur que celle contenue dans l'objet de données pa_car lors de l'exécution sont lus dans la table
SPFLI.
gd_carrid
Bloc de
traitement
ABAP
ã SAP AG 1999
Programme ABAP
so_carr
so_
so_carr
wa_scarr
gd_carrid
Bloc de
traitement
ABAP
n Si vous saisissez plusieurs valeurs ou plages de valeurs et choisissez "Exécuter", le système les place
dans la table interne.
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
n Notre exemple indique comment délimiter une plage de sélection dans une base de données pour une
option de sélection.
n Interprétation des conditions déclarées par SELECT-OPTIONS dans une table interne :
n si la table interne est vide : la condition <zone> IN <selname> est toujours vraie ;
n si elle ne contient que des conditions d'inclusion simples i1, ..., in : le résultat est la
condition complexe ( i1 OR ... OR in ) ;
n si la table interne ne contient que des conditions d'exclusion simples e1, ..., em : le résultat est
la condition combinée ( NOT e1 ) AND ... AND ( NOT em );
n si la table interne réunit les conditions d'inclusion simples i1, ..., in et les conditions
d'exclusion simples e1, ..., em, le résultat est la condition combinée ( i1 OR ... OR
in ) AND ( NOT e1 ) AND ... AND ( NOT em ).
Lancement du
programme
Programme ABAP
INITIALIZATION.
AT SELECTION-SCREEN.
Non
Oui START-OF-SELECTION
n Dans un programme exécutable, le système d'exécution ABAP génère un écran de sélection standard
si vous avez écrit au moins une instruction PARAMETERS ou SELECT-OPTIONS. L'écran de
sélection appartient à l'événement AT SELECTION-SCREEN.
n L'écran de sélection s'affiche après l'événement INITIALIZATION.
n Lorsque vous appuyez sur la touche Entrée ou sur une touche de fonction, cliquez sur un bouton de
commande ou bien choisissez une fonction de menu, le système effectue un contrôle de type. Si les
entrées ne sont pas du type adéquat, il affiche un message d'erreur et attend une nouvelle entrée. Une
fois le type corrigé, il déclenche l'événement AT SELECTION-SCREEN.
n Le déroulement ultérieur du programme dépend de l'action utilisateur :
si l'utilisateur sélectionne F8 ou "Exécuter", l'événement suivant est appelé, dans ce cas, START-
OF-SELECTION ;
si l'utilisateur sélectionne toute autre fonction, l'écran de sélection se réaffiche.
Lancement
du programme Programme ABAP
INITIALIZATION.
AT SELECTION-SCREEN.
MESSAGE e001.
Non
Oui START-OF-SELECTION
n Utilisez l'événement AT SELECTION-SCREEN chaque fois que vous souhaitez programmer des
contrôles supplémentaires à un écran de sélection standard.
n Toute action utilisateur lance l'événement AT SELECTION-SCREEN. Si un dialogue d'erreur se
déclenche, le système revient à l'écran de sélection et toutes les zones de saisie sont de nouveau
accessibles. Un message s'affiche dans la ligne d'état.
n Pour des informations complémentaires sur l'instruction MESSAGE, référez-vous également à la
documentation mots-clés.
n Des informations complémentaires se trouvent dans la documentation mots-clés à AT
SELECTION-SCREEN.
ã SAP AG 1999
n Comme exemple de contrôle de saisie supplémentaire avec dialogue d'erreur, une zone de saisie pour
l'identificateur de la compagnie aérienne doit être ajoutée au programme.
n Un contrôle d'autorisation est exécuté sur l'écran de sélection :
si l'utilisateur possède l'autorisation d'affichage pour la compagnie aérienne sélectionnée, le
programme continue ;
si l'utilisateur ne possède pas l'autorisation d'affichage, l'écran de sélection se réaffiche et un
message d'erreur apparaît dans la barre d'état.
ã SAP AG 1999
Programme : ZBC400_##_SEL_SCREEN
Solution modèle : SAPBC400UDS_SEL_SCREEN
1-2 Complétez votre écran de sélection pour permettre à l’utilisateur de saisir une plage
de valeurs complexes pour le numéro de vol CONNID.
1-3 Utilisez la sélection de valeurs complexes pour filtrer les données sélectionnées à
partir de la table de base de données SFLIGHT.
1-4 Modifiez votre programme pour que l’utilisateur ne puisse pas continuer après
l’écran de sélection si le contrôle d’autorisation sur l’objet d’autorisation
S_CARRID échoue. Si le contrôle d’autorisation échoue, affichez un message
*&--------------------------------------------------------------*
*& Report SAPBC400UDS_SEL_SCREEN *
*& *
*&--------------------------------------------------------------*
REPORT sapbc400uds_sel_screen.
AT LINE-SELECTION.
IF sy-lsind = 1.
WRITE: / wa_flight-carrid, wa_flight-connid, wa_flight-fldate.
ULINE.
SKIP.
SELECT bookid customid custtype class order_date
smoker cancelled loccuram loccurkey
FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook
WHERE carrid = wa_flight-carrid
AND connid = wa_flight-connid
AND fldate = wa_flight-fldate.
WRITE: / wa_sbook-bookid,
wa_sbook-customid,
wa_sbook-custtype,
wa_sbook-class,
wa_sbook-order_date,
wa_sbook-smoker,
wa_sbook-cancelled,
wa_sbook-loccuram CURRENCY wa_sbook-loccurkey,
wa_sbook-loccurkey.
ENDSELECT.
ENDIF.
Contenu :
l Attributs et avantages des dynpros
l Créer des dynpros
l Layout
l Attributs de zone
l Logique d'exécution
l Transport de données
l Utiliser les boutons de commande et évaluer les actions
utilisateur
ã SAP AG 1999
ã SAP AG 1999
Déroulement Contrôles
Contrôles de type
du programme
flexible
100 120
200 140
Aide à la recherche
300
Contrôles
Contrôles de cohérence
cohérence
avec saisie de données
données
ã SAP AG 1999
n Les dynpros sont plus que de simples moniteurs dotés de zones de saisie et d'édition.
n Vous utilisez les dynpros intégrés au Dictionnaire ABAP pour effectuer des contrôles de cohérence
automatiques sur leurs zones de saisie. Ces contrôles portent sur les saisies, les types, les clés et les
valeurs fixes. Ils reposent tous sur les informations contenues dans le Dictionnaire ABAP.
n Vous pouvez effectuer des contrôles complémentaires spécifiques du programme. Des techniques
adaptées aux dynpros vous permettent de vérifier l'ordre dans lequel ces contrôles sont effectués.
n Lorsqu'une erreur est détectée, la zone concernée est appelée et réaffichée pour une nouvelle saisie.
Le layout des dynpros est également très flexible. Les zones de saisie, les zones de sortie, les cases
d'option, les cases à cocher, et même les boutons de commande peuvent être placés sur les dynpros.
Ils permettent aux utilisateurs de déterminer la direction dans laquel le programme va procéder.
n Les programmes contenant des dynpros se caractérisent donc par une grande souplesse.
Code de transaction
100 120
200 140
300
ã SAP AG 1999
n Vous pouvez appeler un dynpro à partir de n'importe quel bloc de traitement ABAP.
n 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.
Vol Départ
Départ Destination
LH 0400 FRA Francfort JFK New York
LH 0402 FRA Francfort JFK New York
...
SQ 0002 SIN Singapour SFO San Francisco Dynpro
Modifier données
données de vol
Compagnie aérienneLH
Numéro de vol 0400
Sauvegarder Retour
ã SAP AG 1999
n Dans les prochains chapitres, vous allez développer un programme de modification des données de
vol standard.
n Appelez le dynpro par un double-clic sur une des entrées de la liste de base "Liste des vols". Ce
dynpro affiche les données contenues dans la ligne sélectionnée, ainsi que des informations
complémentaires sur la compagnie aérienne. Vous pouvez modifier l'horaire de vol ainsi que
l'heure de départ.
n Pour revenir à la liste de base sans modifier de données, sélectionnez "Retour".
n Pour enregistrer les modifications dans la base de données, sélectionnez "Sauvegarder".
n Il est possible de modifier la base de données en utilisant des modules de fonction. Consultez le
chapitre Dialogues de base de données II pour en apprendre davantage sur ce processus.
Screen
Painter
ã SAP AG 1999
Vol Départ
Départ Destination
LH 0400 FRA Francfort JFK New York
LH 0402 FRA Francfort JFK New York
...
SQ 0002 SIN Singapour SFO San Francisco
Dynpro
Modifier données
données de vol
Compagnie aérienne
Numéro de vol
Aéroport de départ
Destination
Durée du vol
Heure de départ
ã SAP AG 1999
n Pour créer un dynpro, vous commencez par définir sa structure et les attributs de ses zones. Les
zones Compagnie aérienne, Numéro de vol, Aéroport de départ, et Aéroport d'arrivée doivent se
présenter comme des zones d'édition, Temps de vol et Heure de départ comme des zones de saisie.
n 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 sélectionnant la touche de fonction appropriée sur le dynpro.
ABAP
Créer un objet
:
AT LINE-SELECTION. Dynpro 100 n'existe pas.
: Voulez-vous créer l'objet ?
100. Double-clic
CALL SCREEN 100
: Oui Non Annuler
Screen
Painter Attributs de dynpro
Courte description Affichage de données supplémentaires
Type de dynpro
Normal
Sous-dynpro
Boîte de dialogue modale
Dynpro suivant 0
ã SAP AG 1999
T sdyn_conn
Compagnie aérienne
Numéro de vol
X
Aéroport de départ
Destination
Durée du vol
Heure de départ
ã SAP AG 1999
n Vous affectez des attributs aux zones d'un dynpro de deux façons :
n à partir du Dictionnaire, en utilisant les types et les attributs de zone fournis dans les
structures du Dictionnaire ABAP. Toutes les informations relatives à l'objet sont accessibles, y
compris des informations sémantiques sur ses éléments de données et ses liens avec des clés
externes. Le nom de la zone du Dictionnaire est automatiquement affecté à la zone du dynpro.
n à partir d'un programme, en utilisant les attributs de zone d'objets de données préalablement
définis dans un programme. Pour cela, une copie activée du programme doit déjà exister. Le
nom de l'objet de données est automatiquement affecté à la zone du dynpro.
n Vous pouvez définir facilement des éléments du dynpro tels que zones de saisie ou d'édition, textes
de mots-clés, bordures, etc., à partir de l'interface du Screen Painter graphique. Choisissez un
élément dans la colonne de gauche, puis placez-le sur le dynpro avec la souris.
n Pour effacer un élément du dynpro, sélectionnez-le avec la souris, puis choisissez "Effacer".
n Pour déplacer un élément du dynpro, cliquez dessus et faites glisser.
Attributs
T
Nom SDYN_CONN-CARRID
Compagnie aérienne Texte
Numéro de vol Ligne Colonne
X
Aéroport de départ
Destination
FCode FType
Durée du vol Dict Prog Disp
Heure de départ
Zone de saisie
Zone d'édition
Zone requise
...
ã SAP AG 1999
n Pour gérer les attributs de zone d'un dynpro, sélectionnez une zone et choisissez Attributs.
n Vous pouvez définir certaines zones comme obligatoires. ("Zone obligatoire"). Si la zone est initiale,
un point d'interrogation s'affiche en cours d'exécution.
n Si les zones obligatoires ne sont pas toutes remplies lors de l'exécution et qu'une action utilisateur
s'effectue, un dialogue d'erreur se déclenche et toutes les zones de saisie se réaffichent pour une
nouvelle entrée.
SBOOK-CARRID TEXT
SDYN_CONN-CARRID 5Text 14 16 16 .1
.. CHAR
ã SAP AG 1999
n Pour éditer les attributs de zones d'un dynpro, choisissez Liste des zones.
n La liste de zones s'affiche alors sous forme de table.
n Vous pouvez également accéder à cette fonction sous un format différent depuis le Screen Painter
graphique.
Vol Départ
Départ Destination
LH 0400 FRA Francfort JFK New York
LH 0402 FRA Francfort JFK New York
...
SQ 0002 SIN Singapour SFO San Francisco Dynpro
Modifier données
données de vol
Compagnie aérienne LH
Numéro de vol 0400
ã SAP AG 1999
n Dans la 2ème étape vous allez apprendre à programmer le transport de données d'une liste de base
vers votre dynpro.
n Pour l'utilisateur, le programme fonctionne comme suit :
n en double-cliquant sur une des lignes de la liste de base, vous accèdez à un dynpro. Celui-ci
affiche les principales informations concernant le vol qui l'intéresse. L'horaire et la durée du vol
s'affichent dans une zone de saisie et peuvent donc être modifiés ;
n l'utilisateur peut revenir à la liste de base de plusieurs façons.
n Sachant cela, cette partie du chapitre traitera :
n des conditions requises pour le transport automatique de données d'un programme vers une zone
de dynpro ;
n de la définition de l'interface du dynpro et de la programmation de transport de données vers les
objets de données de l'interface.
Programme ABAP
Objets de données
wa_spfli
sdyn_conn
sdyn_
sdyn_conn
Zones et types définis localement
Process
Before
Output
Process Bloc de
After traitement
Input ABAP
Dynpro 100
ã SAP AG 1999
n L'instruction TABLES déclare un objet de données interne servant d'interface au dynpro. Elle
renvoie toujours à une structure définie dans le Dictionnaire ABAP.
n Si une instruction TABLES et une zone de dynpro renvoient toutes deux à la même structure du
Dictionnaire, les données de cet objet sont transportées vers les zones de dynpro chaque fois que
celui-ci est appelé. Toute nouvelle saisie ou tout changement effectué sur le dynpro sont ensuite
transférés vers l'objet de données.
n Le Dictionnaire ABAP contient des structures dont les zones correspondent à différentes tables. Ces
tables correspondent à leur tour à une vue commerciale de différentes applications. Les programmes
créés dans le cadre de ce cours emploient une structure pour la gestion des données de base
(sdyn_conn), et une autre pour les réservations (sdyn_book). Si vous utilisez vos propres
structures comme interfaces, vous rendrez vos programmes plus faciles à comprendre et éviterez les
erreurs.
Programme ABAP
Objets de données
wa_spfli
sdyn_conn
sdyn_
sdyn_conn
Zones et types définis localement
Process Bloc de
After traitement
Input ABAP
Screen 100
n Le transport de données s'effectue automatiquement entre les zones de dynpro et les zones du
programme qui portent le même nom.
n Immédiatement avant l'envoi d'un dynpro au serveur de présentation (après que tous les
modules événements PBO ont été traités), le système copie le contenu des zones de l'espace de
travail ABAP dans leurs zones correspondantes de l'espace de travail du dynpro.
n Les instructions ABAP facilitent le transport de données entre les objets de données du programme
et l'espace de travail désigné comme interface du dynpro.
Programme ABAP
Objets de données
wa_spfli
sdyn_conn
sdyn_
sdyn_conn
Zones et types définis localement
Process Bloc de
After traitement
Input ABAP
Screen 100
n Le transport de données s'effectue automatiquement entre les zones de dynpro et les zones du
programme qui portent le même nom.
n Immédiatement après une action utilisateur (avant que le premier module PAI ne soit traité), le
système copie le contenu des zones de l'espace de travail du dynpro dans leurs zones
correspondantes de l'espace de travail ABAP.
n Les instructions ABAP facilitent le transport de données entre l'espace de travail désigné comme
interface du dynpro et les objets de données du programme.
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-clés mises en buffer
HIDE:
HIDE: wa_spfli-carrid,
wa_spfli-carrid, wa_spfli-
wa_spfli-connid.
connid.
ENDSELECT.
AT LINE-SELECTION.
SELECT SINGLE * FROM spfli
INTO spfli
SELECT SINGLE * FROM wa_spfli
WHEREwa_spfli
INTO carrid = wa_spfli-carrid
AND carrid
WHERE connid==wa_spfli-carrid
wa_spfli-connid.
MOVE-CORRESPONDING wa_spfli
AND connid to sdyn_conn.
= wa_spfli-connid.
n Pour afficher des données sur le dynpro, la structure TABLES doit comporter les données actuelles
avant que le dynpro ne soit envoyé au serveur de présentation. L'exemple ci-dessus montre une
manière d'y parvenir.
n L'instruction HIDE s'utilise pour placer des zones-clés des tables de base de données se référant à la
ligne de liste dans la zone HIDE. Les données effectives de la ligne sélectionnée deviennent ensuite
disponibles dans les zones wa_spfli-carrid et wa_spfli-connid à l'événement AT
LINE-SELECTION.
n L'enregistrement de données est lu depuis la base de données en utilisant SELECT SINGLE. Ceci
garantit que la structure contienne les données à jour, même si l'utilisateur vient de les modifier. Elle
doit être du même type que la ligne de table, pour que les zones correctes soient accessibles pour
toutes les données de l'enregistrement.
n Les zones correspondantes sont copiées vers la structure TABLES sdyn_conn en utilisant MOVE-
CORRESPONDING. Le système transporte automatiquement les données de la structure vers les
zones du dynpro.
Sauvegarder Retour
ã SAP AG 1999
n Dans l'étape 3, vous allez apprendre comment définir des codes fonction pour des boutons de
commande. Ces fonctions assurent le traitement de différents types de logique de programme, selon
le choix opéré.
n Pour l'utilisateur, le programme fonctionne comme suit :
n en double-cliquant sur une des lignes de la liste de base, vous accèdez à un dynpro. Celui-ci
affiche les principales informations concernant le vol qui l'intéresse. L'horaire et la durée de vol
peuvent être modifiés ;
n en sélectionnant le bouton de commande "Retour", l'utilisateur revient à la liste de base sans que
la base de données soit modifiée. Le message "Le dynpro a été quitté sans aucune modification"
s'affiche dans la barre d'état de la liste de base ;
n sélectionnez "Sauvegarder" pour écrire toutes vos modifications dans la base de données.
sélectionnez "Sauvegarder" pour écrire toutes vos modifications dans la base de données. Nous
reviendrons plus profondément sur cette étape dans le chapitre Dialogues de base de données II.
Dans la partie suivante, le bouton de commande est déjà préparé. Vous devez retourner à la liste
de base après avoir sélectionné le bouton de commande et un message doit s'afficher dans la
barre d'état ;
n Après avoir pressé Entrée, le dynpro s'affiche à nouveau.
n Les modifications de la base de données sont traitées dans le chapitre Dialogues de base de données
II.
n Sachant cela, cette partie du chapitre traitera de :
la logique d'exécution dans des blocs événements PBO et PAI ;
l'utilisation des modules PBO et PAI en tant que blocs de traitement ABAP pour la programmation
de dynpros ;
la manière de vérifier comment le programme continue en fonction du bouton de commande
sélectionné par l'utilisateur.
(C) SAP AG BC400 9-18
(C) SAP AG BC400 9-19
Définition de boutons de commande / affectation
de codes de fonction
Attributs
T
Nom BOUTON2
Compagnie aérienne Texte Retour
Numéro de vol Ligne
X Colonne
Aéroport de départ
Destination
FCode RETOUR FType
Durée du vol Dict Prog Disp
Heure de départ
Zone de saisie
Sauvegarder Retour Zone de sortie
...
ã SAP AG 1999
n Pour définir la fonction de boutons de commande spécifiques, 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.
Éditeur
ABAP
TABLES: sdyn_conn.
DATA:
DATA: ok_code
ok_code like
LIKE sy-ucomm.
sy-ucomm.
Screen
Painter
Attributs généraux
Nom de zone Texte de zone Code de fonction
BOUTON1 Sauvegarder SAUVEGARDER
BOUTON2 ... Retour ... RETOUR
OK OK_CODE
ã SAP AG 1999
n La zone OK_CODE est un objet de données qui intègre le code de fonction correspondant après
chaque action utilisateur.
n Le nom de zone OK_CODE doit toujours figurer sur la dernière ligne de la liste de zones du dynpro.
n Si vous définissez un objet de données correspondant portant le même nom dans l'espace de
déclaration d'un programme, le système place dans cet objet le code de fonction du bouton choisi au
moment de l'exécution. La zone sy-ucomm sert de zone de référence.
100
PBO
CALL SCREEN 100.
MODULE
<name>. MODULE <name>
OUTPUT.
ENDMODULE.
PAI
MODULE
<name>. MODULE <name>
INPUT.
ENDMODULE.
ã SAP AG 1999Temps
100
CALL SCREEN 100.
PBO
PAI
Attributs de dynpro
Dynpro
suivant 0 Dynpro suivant 0
ã SAP AG 1999Temps
n Si vous entrez 0 dans la zone Dynpro suivant ou si vous la laissez vide, le système traite d'abord la
totalité du dynpro, puis reprend le traitement du programme au point où le dynpro a été appelé.
100
CALL SCREEN 100.
PBO
PAI
Attributs de dynpro
Dynpro
suivant 100 Dynpro suivant 100
ã SAP AG 1999Temps
n Si vous paramétrez à 100 le dynpro suivant du dynpro 100, le système traite à nouveau ce dynpro
après avoir fini de traiter le module PAI.
100
CALL SCREEN 100.
PBO
PAI
SET SCREEN 0.
SET SCREEN 0.
0
Attributs de dynpro
Dynpro
suivant 100 Dynpro suivant 0
ã SAP AG 1999Temps
n Vous pouvez utiliser l'instruction ABAP SET SCREEN <nnnn> dans un module PAI pour
substituer de manière dynamique la valeur paramétrée dans l'attribut Dynpro suivant.
n Les zones Numéro de dynpro et Dynpro suivant comportent souvent le même numéro de dynpro.
Dans ce cas, lorsque vous choisissez Entrée, un contrôle de zone est effectué et le système revient au
même dynpro. Afin de quitter ce dynpro, vous devez définir un bouton de commande qui
déclenchera un changement Dynpro suivant dans le module PAI.
Screen
Painter Éditeur
ABAP
PROCESS BEFORE OUTPUT.
MODULE clear_ok_code. MODULE clear_ok_code OUTPUT.
CLEAR ok_code .
ENDMODULE.
ã SAP AG 1999
Inclure sélection
Inclure
ZBC400_00_DYNPRO Programme principal
Éditeur
ABAP
ENDMODULE.
ã SAP AG 1999
n Vous pouvez implémenter des appels tels que MODULE dans la logique d'exécution d'un dynpro
(événements PBO et PAI). Vous utilisez toutefois ABAP pour créer les modules.
n Il y a deux possibilités pour créer un module :
n par la navigation, faites un double-clic sur le nom du module à partir de l'Éditeur du Screen
Painter ;
n par Object Navigator, affichez votre programme, choisissez "Module PBO" ou "Module PAI'
dans Objets de programme et créez un nouvel objet de développement en cliquant sur l'icone
Créer.
n Vous pouvez appeler un même module depuis plusieurs dynpros. (Possible réutilisation)
n N'oubliez pas que les modules appelés aux événements PBO doivent être définis en utilisant
l'instruction MODULE ... OUTPUT. Les modules définis par MODULE ... INPUT ne peuvent être
appelés qu'à des événements PAI.
.
.
ã SAP AG 1999
n Dans cet exemple, deux boutons de commande doivent déclencher la modification de la valeur
affichée dans Dynpro suivant :
n "Retour" rétablit automatiquement cette valeur à 0. L'utilisateur est renvoyé au dernier dynpro
appelé avant celui-ci.
n "Sauvegarder" appelle l'affichage d'un message S. L'utilisateur accède alors à une liste de base
ou à une liste détaillée identique à celle affichée lorsque "Retour" est sélectionné.
ã SAP AG 1999
Programme : ZBC400_##_DYNPRO
Solution modèle : SAPBC400UDS_DYNPRO_1
Modèle : SAPBC400UDT_DYNPRO_1
1-3 La sélection d’une ligne de la liste de base (en double-cliquant ou en appuyant sur
F2) doit appeler un dynpro. Créez ce dynpro (numéro de dynpro 100) en utilisant la
fonction Navigation forward.
1-4 Pour les attributs, affectez le numéro de dynpro 0 comme numéro du dynpro
suivant, de sorte que l’utilisateur retourne à la liste de base après n’importe quelle
action utilisateur sur le dynpro 100.
• Le nom client NAME doit se copier sans label et doit s’afficher à côté du
numéro client.
• le nom client NAME doit s’afficher à côté du numéro client sans texte (attribut
Édition uniquement) ;
Programme : ZBC400_##_DYNPRO
Solution modèle : SAPBC400UDS_DYNPRO_2
2-2 Utilisez une zone de travail comme interface entre le programme et le dynpro.
Puisque vous avez fait référence à une structure du Dictionnaire pour les zones du
dynpro, vous devez utiliser l’instruction TABLES.
2-3 Assurez-vous que les zones-clés de la table de base de données SBOOK et le nom
client sont toujours renseignés (HIDE: ...) dans l’événement AT LINE-
SELECTION après sélection d’une ligne de la liste de base (double-cliquez ou
appuyez sur F2).
2-4 Le programme doit ensuite être complété afin de modifier les données de la base de
données. Assurez-vous que l’utilisateur dispose d’une autorisation de modification
pour la compagnie aérienne choisie.
Pour vous assurer qu’un double-clic sur une ligne de la liste de base permet
d’afficher des données à jour, l’enregistrement de données doit être consulté à partir
de la table de base de données SBOOK avant le traitement du dynpro.
2-5 Juste avant d'appeler le dynpro, copiez les données appropriées vers la zone de
travail TABLES, qui sert d’interface au dynpro.
Chapitre : Dynpro
Sujet : Transport de zone et traitement dynpro suivant
Programme : ZBC400_##_DYNPRO
Solution modèle : SAPBC400UDS_DYNPRO_3
3-2 Définissez deux boutons de commande sur le dynpro qui permettent à l’utilisateur
soit de retourner à la liste de base (PUSH_BACK), soit de sauvegarder les
modifications dans les données (PUSH_SAVE) :
*&--------------------------------------------------------------*
*& Report SAPBC400UDS_DYNPRO_1 *
*& *
*&--------------------------------------------------------------*
REPORT sapbc400uds_dynpro_1.
CONSTANTS: actvt_display TYPE activ_auth VALUE '03',
actvt_change TYPE activ_auth VALUE '02'.
START-OF-SELECTION.
SELECT id name FROM scustom INTO TABLE it_cust.
SELECT carrid connid fldate bookid customid
FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook
WHERE agencynum = pa_agnum.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
(C) SAP AG BC400 9-39
ID 'ACTVT' FIELD actvt_display.
IF sy-subrc = 0.
READ TABLE it_cust INTO wa_cust
WITH TABLE KEY id = wa_sbook-customid.
WRITE: / wa_sbook-carrid COLOR COL_KEY,
wa_sbook-connid COLOR COL_KEY,
wa_sbook-fldate COLOR COL_KEY,
wa_sbook-bookid COLOR COL_KEY,
wa_cust-name COLOR COL_KEY.
ENDIF.
ENDSELECT.
*&--------------------------------------------------------------*
*& Report SAPBC400UDS_DYNPRO_2 *
*& *
*&--------------------------------------------------------------*
REPORT sapbc400uds_dynpro_2.
CONSTANTS: actvt_display TYPE activ_auth VALUE '03',
actvt_change TYPE activ_auth VALUE '02'.
TABLES: sdyn_book.
PARAMETERS: pa_agnum TYPE s_agncynum.
DATA: wa_cust TYPE sbc400cust,
it_cust TYPE sbc400_t_sbc400cust.
DATA: wa_sbook TYPE sbook.
START-OF-SELECTION.
SELECT id name FROM scustom INTO TABLE it_cust.
AT LINE-SELECTION.
IF sy-lsind = 1.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
ID 'ACTVT' FIELD actvt_change.
IF sy-subrc = 0.
SELECT SINGLE * FROM sbook INTO wa_sbook
WHERE carrid = wa_sbook-carrid
AND connid = wa_sbook-connid
AND fldate = wa_sbook-fldate
AND bookid = wa_sbook-bookid.
IF sy-subrc <> 0.
MESSAGE i176(bc400).
ELSE.
MOVE-CORRESPONDING wa_sbook TO sdyn_book.
MOVE wa_scust-name TO sdyn_book-name.
CALL SCREEN 100.
ENDIF.
ELSE.
MESSAGE s047(bc400) WITH wa_sbook-carrid.
ENDIF.
ENDIF.
CLEAR wa_sbook.
*&--------------------------------------------------------------*
*& Report SAPBC400UDS_DYNPRO_3 *
*& *
*&--------------------------------------------------------------*
REPORT sapbc400uds_dynpro_3.
CONSTANTS: actvt_display TYPE activ_auth VALUE '03',
actvt_change TYPE activ_auth VALUE '02'.
TABLES: sdyn_book.
PARAMETERS: pa_agnum TYPE s_agncynum.
DATA: wa_cust TYPE sbc400cust,
it_cust TYPE sbc400_t_sbc400cust.
DATA: wa_sbook TYPE sbook.
DATA: ok_code LIKE sy-ucomm, save_ok LIKE ok_code.
START-OF-SELECTION.
SELECT id name FROM scustom INTO TABLE it_cust.
SELECT carrid connid fldate bookid customid
FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook
WHERE agencynum = pa_agnum.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
ID 'ACTVT' FIELD actvt_display.
IF sy-subrc = 0.
READ TABLE it_cust INTO wa_cust
WITH TABLE KEY id = wa_sbook-customid.
WRITE: / wa_sbook-carrid COLOR COL_KEY,
wa_sbook-connid COLOR COL_KEY,
AT LINE-SELECTION.
IF sy-lsind = 1.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
ID 'ACTVT' FIELD actvt_change.
IF sy-subrc = 0.
SELECT SINGLE * FROM sbook INTO wa_sbook
WHERE carrid = wa_sbook-carrid
AND connid = wa_sbook-connid
AND fldate = wa_sbook-fldate
AND bookid = wa_sbook-bookid.
IF sy-subrc <> 0.
MESSAGE i176(bc400).
ELSE.
MOVE-CORRESPONDING wa_sbook TO sdyn_book.
MOVE wa_scust-name TO sdyn_book-name.
CALL SCREEN 100.
ENDIF.
ELSE.
MESSAGE s047(bc400) WITH wa_sbook-carrid.
ENDIF.
ENDIF.
CLEAR wa_sbook.
*&--------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&--------------------------------------------------------------*
Contenu :
l Création d'interfaces dans le Menu Painter
l Titres
l Barres de menus
l Barres d'outils standard
l Barres d'outils d'application
ã SAP AG 1999
ã SAP AG 1999
Titre GUI
SET TITLEBAR <n>.
ã SAP AG 1999
SAP R/3
Liste
Données de vol de base Traiter Saut Système Aide
! é ! é ! ê ! ê
é ê
Imprimer Ctrl+P
Sauv. dans fich. PC MAJ+F8
Sauvegarder
Terminer MAJ+F3
ã SAP AG 1999
n Pour terminer, vous allez définir une interface utilisateur pour le programme exemple. Les différents
statuts doivent présenter les caractéristiques suivantes :
n la liste et l'écran doivent avoir la même barre de menus. Seules les fonctions exécutables sont en
caractères noirs ;
n dans la barre d'outils standard, seules les fonctions exécutables sont en couleur. La fonctionnalité du
dynpro ne sera modifiée en aucun cas ;
n la barre d'outils d'application figurant dans la liste de base doit comporter une icône "Choisir", tout
comme le statut de la liste standard ;
n l'écran doit avoir son propre titre.
Titre 100
Barres de menus
B. d'outils d'applic. Affectation
Affectation de
de touches
touches
Barres de menus
Données de base du B. d'outils d'applic. de
de fonction
fonction
vol Données de base du vol Affectation de touches
de fonction ;
Données de base du vol
Données de base du vol
Saut
ã SAP AG 1999
Statut
Statut "LISTE"
"LISTE"
Liste
ã SAP AG 1999
n 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 détermine quelles fonctions sont actives
(exécutables) ou inactives pour un dynpro déterminé. 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.
n D'un point de vue technique, un statut sert toujours de référence à une barre de menus, une barre
d'outils standard et une barre d'outils d'application.
n Nous allons maintenant définir le statut d'une liste.
START-OF-SELECTION.
Attributs de statut
Courte description Statut pour liste des vols
Type de statut
Statut de dialogue
Boîte de dialogue
Menu contextuel
ã SAP AG 1999
n Pour créer et gérer les statuts, vous pouvez utiliser une de ces trois possibilités :
la liste d'objets de Object navigator ;
la navigation, dans l'Editeur ABAP ;
le Menu Painter.
n Lorsque vous créez un statut, vous définissez de nouvelles barres de menus, barres d'outils
d'application et des affectations de touches (top down) ou vous utilisez des objets préexistants de
votre interface (bottom up), ou vous associez ces deux méthodes.
n Un nom de statut ne doit pas dépasser 20 caractères. (Les lettres doivent être en majuscules).
n En choisissant un type de statut, vous déterminez si un statut donné se réfère à un écran normal ou à
une boîte de dialogue. Les fonctions que vous utilisez dépendent de votre choix.
n Utilisez l'instruction SET PF-STATUS '<NOM>' pour rétablir le statut de la liste de base en le
programmant dans un des blocs de traitement traités avant l'envoi de cette liste.
Statut de liste
Écran de sélection
...
B. d'outils d'applic.
Affectation de Liste de sélection de ligne
touches de fonction
ã SAP AG 1999
n La fonction "Ajuster modèle" du menu Autres fonctions vous permet d'inclure des codes de
fonction standardisés 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 sélection, ou d'utiliser tout autre statut d'un autre programme ABAP.
CHOISIR
Positions 1-7
Affectation de
touches de fonction Affectation de touches des données de base
F2 PICK Choisir
F4
Maj-F8
n 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.
n Les affectations de touches se répartissent comme suit :
n barre d'outils standard : certains codes de fonction prédéfinis sont obligatoires pour les
fonctions Sauvegarder, Retour, Terminer, Annuler, Imprimer, ainsi que pour les icônes de
défilement et pour la touche Entrée. Affectez simplement ces codes à l'icône de la barre d'outils
standard ; ils seront automatiquement affectés aussi aux boutons de commande correspondants ;
n affectation recommandée des touches de fonction ;
n affectation libre des touches de fonction.
n Vous pouvez également définir des boutons sur une barre de boutons pour toutes les touches de
fonctions les plus fréquemment utilisées. Ces boutons se présentent sous forme d'icônes ou de
boutons portant un texte.
ã SAP AG 1999
n Pour votre barre de menus, certaines normes s'appliquent. Toutefois, celles-ci peuvent être
modifiées.
n Les barres de menus peuvent contenir jusqu'à huit menus. Vous en définissez six au maximum : les
menus Système et Aide s'ajoutent automatiquement.
Titre 100
Liste
Écran
0100
Statut "LISTE" Statut "ÉCRAN"
"ÉCRAN"
Barres de menus
Données de base Écran
du vol 0100
Données de base
B. d'outils d'applic. Affectation de touches
du vol
Données de base du vol de fonction
Traiter Données de base du vol
Saut
Liste des fonctions
inactive
Liste des
SAUVE- PRI %PC RW %EX
fonctions
RETOUR CHOISIR
GARDER standard
P+ P++ P-- P-
ã SAP AG 1999
n Pour terminer l'interface utilisateur de notre programme, il faut créer, en plus du statut de la liste de
base, un titre et un statut pour le dynpro. Le statut du dynpro doit renvoyer aux mêmes barre de
menus, barre d'outils d'application et affectations de touches que le statut de la liste. La seule
différence réside dans le fait qu'ici, toutes les fonctions standard sont "inactives", à l'exception de
"RETOUR" et de "SAUVEGARDER".
n Une interface comporte les objets suivants :
n fonctions ;
n menus ;
n barres de menus ;
n affectation de touches de fonction ;
n barre d'outils d'application ;
n statut ;
n titres.
Sauvegarder
Modifier les heures de vol
Titres
Continuer
ã SAP AG 1999
n Vous pouvez créer et gérer les titres dans l'une de ces trois possibilités :
n la liste d'objets du Repository Browser ;
n la navigation, dans l'Éditeur ABAP ;
n le Menu Painter.
n Pour définir le titre d'un dynpro, utilisez l'instruction SET TITLEBAR <nnn> de ABAP dans un
module PBO. nnn est une séquence numérotée de trois caractères. Si vous créez le module PBO
status_nnnn à l'aide de la navigation, cette instruction est automatiquement générée dans le
module et mise en commentaire. Pour l'activer, effacez l'astérisque et saisissez le numéro du titre.
Vous pouvez ensuite créer le titre en utilisant la navigation forward.
Statut ÉCRAN
Attributs de
statut
Statut pour liste des vols
Désignation
Statut de dialogue
Type de statut Boîte de dialogue
Menu contextuel
ã SAP AG 1999
ã SAP AG 1999
n Le statut de l'écran doit renvoyer aux mêmes barre de menus et affectations de touches que le statut
de la liste. Utilisez l'icône montrée ci-dessus pour afficher toutes les barres de menus et toutes les
affectations de touches de fonction déjà définies. Notre modèle de programme ne possède qu'une
seule barre de menus et qu'une seule affectation de touches de fonction que vous pouvez sélectionner
par un double-clic.
n Le statut contient les mêmes 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 :
sélectionnez 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 sélectionnez l'icône
Actif/Inactif de la barre de boutons.
ã SAP AG 1999
Programme : ZBC400_##_DYNPRO
Solution modèle : SAPBC400UDS_DYNPRO_4
1-2 Définissez d’abord un statut pour la liste. Utilisez la navigation pour créer le statut
(type : statut de dialogue). Ajoutez l’instruction ABAP appropriée dans le bloc de
traitement START-OF-SELECTION.
Le statut que vous vous créez doit correspondre au statut de la liste standard. Pour
créer vos propres affectations de touches de fonction, barre de boutons et barre de
menus, sélectionnez Autres fonctions -> Ajuster modèle-> 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. L’utilisateur doit être en mesure de
lancer cette fonction en sélectionnant l’icône Sauvegarder dans la barre d’outils
standard, ou Écritures dans le menu.
Désactivez le code de fonction SAUVEGARDER de ce statut.
1-3 Affectez un statut (type : statut de dialogue) à l’écran. Dans l’événement PROCESS
BEFORE OUTPUT, appelez un module qui comprenne l’instruction ABAP
appropriée.
(C) SAP AG BC400 10-18
Ne créez pas de nouvelles affectations de touches de fonction, barre de boutons ou
barre de menus. Au contraire, renvoyez-les aux objets que vous avez créés dans le
dernier exercice (1-2).
Activez les codes de fonction SAUVEGARDER et RETOUR. Sauvegardez l’interface.
1-2 Dans le texte du programme source, ajoutez l’instruction SET PF-STATUS 'LISTE' à
l’événement START-OF-SELECTION.
(Note : le texte situé entre les deux apostrophes doit apparaître en majuscules).
• Dans la ligne SET PF-STATUS 'LISTE' du programme, double-cliquez sur le nom du statut
LISTE.
Le système affiche une boîte de dialogue contenant les mots "Le statut
interface GUI ‘LISTE’ n’existe pas". Voulez-vous le créer ?
Sélectionnez pour confirmer.
Introduisez une courte description.
Sélectionnez le type de statut Statut de dialogue.
• Sélectionnez : Autres fonctions → Ajuster modèle → 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. Sélectionnez le mode Modification. Modifiez le
nom de la liste de menus par Écritures. Sélectionnez pour fermer la boîte de
dialogue.
• Double-cliquez sur l’affectation de la touche de fonction. Introduisez le code de
fonction SAUVEGARDER de la barre d’outils standard à côté de l’icône
• Pour rendre la fonction accessible dans le menu Écritures :
• double-cliquez sur Écritures ;
• créez une nouvelle ligne dans le menu ;
• introduisez le code SAUVEGARDER ;
• confirmez vos entrées ;
• sélectionnez pour fermer la boîte de dialogue.
• Placez le curseur sur le code de fonction SAUVEGARDER et désactivez la fonction
en utilisant .
• Activez le statut.
1-3 Affichez l’écran 100 en mode modification (en sélectionnant le numéro d’écran
dans la liste d’objets du programme et en utilisant le bouton droit de la souris). Dans la logique
d’exécution de l’événement PROCESS BEFORE OUTPUT, ajoutez l’instruction :
MODULE set_status_0100.
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.
AT LINE-SELECTION.
IF sy-lsind = 1.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD wa_sbook-carrid
ID 'ACTVT' FIELD actvt_change.
IF sy-subrc = 0.
SELECT SINGLE * FROM sbook INTO wa_sbook
WHERE carrid = wa_sbook-carrid
AND connid = wa_sbook-connid
AND fldate = wa_sbook-fldate
AND bookid = wa_sbook-bookid.
*&-------------------------------------------------------*
*& Module SET_STATUS_0100 OUTPUT
*&-------------------------------------------------------*
module set_status_0100 output.
* set title and status of screen 100
set titlebar 'DYNPRO'.
set pf-status 'DYNPRO'.
endmodule. " SET_STATUS_0100 OUTPUT
*&-------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&-------------------------------------------------------*
* Le déroulement d’un écran dynamique dépend d’une action
utilisateur.
*--------------------------------------------------------*
MODULE user_command_0100 INPUT.
Contenu :
l Groupes de fonctions et modules de fonction
l Objets et méthodes
l Objets de gestion et BAPI
l Bases de données logiques
ã SAP AG 1999
ã SAP AG 1999
Groupe de
fonctions
ABAP : Objet de
gestion
possibilités
techniques
Base de données
logique
Réutilisation
des composantes
ã SAP AG 1999
n Le système R/3 offre plusieurs techniques que vous pouvez utiliser pour permettre la réutilisation de
la logique applicative.
n Modules de fonction : peuvent être appelés à partir de tout programme ABAP. Les paramètres sont
également transférés à l'interface. Les modules de fonction apparentés sont organisés en groupes de
fonctions. Une logique de programme et des dialogues utilisateur peuvent être encapsulés dans les
modules de fonction ;
n des objets : vous pouvez utiliser l'extension compatible "objets ABAP" pour créer des instances
d'objets à l'exécution, avec référence aux classes centrales ;
n des BAPI : méthodes d'objets de gestion, qui sont disponibles grâce au Business Object Repository
(BOR) ;
n des bases de données logiques : programmes d'acquisition de données qui peuvent s'associer à des
programmes exécutables. Elles transfèrent les données à l'aide de structures de hiérarchie logiques.
Elles permettent l'accès à des écrans de sélection et contiennent des contrôles d'autorisation.
Groupes
Groupes de
de fonctions
fonctions et
et modules
modules de
de fonction
fonction
Objets
Objets et
et méthodes
méthodes
Objets
Objets de
de gestion
gestion et
et BAPI
BAPI
Bases
Bases de
de données
données logiques
logiques
ã SAP AG 1999
ã SAP AG 1999
e ion Mo In
fr ac onct du te
e f le rfa
In t d e 1 d c
le FM e fo e
odu FM 2 ncti
M on
Sous-
FM3 nction
Mod
Paramètres d'import
programmes
ule d 5
Interface
e
Inter
de f
Paramètres d'export
r fac
F
e fon
M
ule
face
Inte
Paramètres de modification
Mod
ction
Module de fonction
FM4 Exceptions
Interface
ã SAP AG 1999
n 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 unités modulaires dotées
d'interfaces ; ils peuvent être appelés depuis tout programme ABAP. Ceux qui agissent sur les
mêmes objets sont organisés en groupes de fonctions.
n Chaque groupe de fonctions peut contenir :
des objets de données, visibles et modifiables par tous les modules de fonction du groupe. Ces
objets de données restent actifs aussi longtemps que le groupe de fonctions reste actif ;
des sous-programmes, qui peuvent être appelés depuis tout module de fonction du groupe ;
des dynpros, qui peuvent être appelés depuis tout module de fonction du groupe.
Objets de données
locaux
Code source
Interface
Paramètres
Paramètres d'import Paramètres
Paramètres d'export Paramètres
Paramètres de modification Exceptions
sy-subrc
ã SAP AG 1999
n Les modules de fonction sont des unités modulaires dotées d'interfaces. L'interface peut contenir les
éléments suivants :
les paramètres d'import sont des paramètres transférés au module de fonction. En général, ils
sont affectés à des types standard du Dictionnaire ABAP. Ils peuvent également être facultatifs ;
les paramètres 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 paramètres de modification sont transférés vers le module de fonction où ils peuvent être
modifiés. Après traitement du module de fonction, le résultat est renvoyé au programme appelant.
Ces paramètres peuvent être facultatifs ;
les exceptions sont utilisées pour intercepter des erreurs. Si une erreur déclenche une exception
dans un module de fonction, celui-ci s'arrête. Vous pouvez affecter des exceptions à des nombres
du programme appelant pour positionner la zone système SY-SUBRC à cette valeur. Le
programme peut alors traiter ce code retour.
n Chaque module de fonction peut contenir des objets de données locaux et accéder à des objets de
données globaux appartenant à son groupe de fonctions. Il peut appeler tous les sous-programmes et
les écrans de ce groupe de fonctions.
n
fa ce ctio Mo In
du te
er fo n
le rfa
Int de 1 d c
le FM e fo e
odu FM 2 ncti
M on
FM3 nction
M od
e fo
ule d 5
e
rfac
Inter
F
le d
e fo
M
Inte
face
u
Mod
nc
tion
Module de fonction
FM4
Interface
ã SAP AG 1999
n Après appel du module de fonction, les données générales 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 données globales du groupe de fonctions est appelé, les autres modules de
fonction de ce même groupe de fonctions peuvent accéder à ces données lors de leur appel par le
programme.
Oui Non
ã SAP AG 1999
n Dans de nombreux programmes, une boîte de dialogue apparaît lorsque l'utilisateur a choisi Annuler.
Cette boîte de dialogue contient toujours la phrase : "Les données seront perdues." Les deux lignes
qui la suivent sont spécifiques du contexte, tout comme le titre. L'utilisateur a le choix entre deux
options : "Oui" ou "Non".
n Cette boîte de dialogue est encapsulée dans le module de fonction.
ligne de texte
STO1 titre
! <ligne de texte>
! <ligne de texte>
réponse réponse
Oui Non
Programme
ABAP
ã SAP AG 1999
n Vous pouvez éviter la programmation de cette boîte de dialogue si vous trouvez un module de
fonction existant contenant les propriétés suivantes :
des paramètres d'import pour le titre et les lignes de texte de deux variables ;
un paramètre d'export pour enregistrer la réponse ("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".
Éditeur Hiérarchie
Rechercher des composantes
l'instruction Sélectionner
CALL FUNCTION des
Démarrer en composantes
applicatives
mode débogage
du système
Insérer un point Sur un écran appelé par le d'information
d'arrêt dans module de fonction du Repository
l'instruction F1
CALL FUNCTION Info techniques
ou CALL SCREEN Nom de l'écran et
du programme principal
Sur l'écran Regarder un groupe de
sur lequel l'utilisateur fonctions dans Object
choisit "Annuler" Navigator
Examine logique Cas d'emploi pour numéro
d'exécution d'écran
dans l'événement
Process After
Input
Vous savez qu'un certain programme
ã SAP AG 1999 utilise le module de fonction
n Scénario : vous créez un programme dans Object Navigator et quittez l'écran des attributs. Vous
voulez savoir s'il est enregistré sous une forme réutilisable.
n 1. Première méthode : dans le débogueur, apposez un point d'arrêt dans CALL SCREEN. En cas de
réussite, le bloc de traitement actuel (sous-programme, module de fonction ou bloc événement) sera
répertorié sous " CALLS"en mode débogage. Vous pouvez alors examiner l'appel et les paramètres
transmis à l'interface.
n 2. Deuxième méthode : dans le débogueur, apposez un point d'arrêt à CALL FUNCTION. En cas de
réussite, le bloc de traitement actuel (sous-programme, module de fonction ou bloc événement) sera
répertorié sous " CALLS"en mode débogage. Vous pouvez alors examiner l'appel et les paramètres
transmis à l'interface.
n 3. Troisième méthode : cliquez sur une zone de texte de la boîte 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.
n 4. Quatrième méthode : dans la boîte de dialogue Sauvegarder, affichez l'aide (F1) et ensuite Infos
techniques. Naviguez jusqu'à l'écran pour examiner la logique d'exécution et ses modules.
n 5. Cinquième méthode : dans la hiérarchie des composantes, indiquez la composante qui vous
intéresse (dans ce cas, Services de base), sélectionnez-la, naviguez jusqu'au système d'information du
Repository, et regardez sous Programmation -> Générateur de modules de fonction -> Modules de
fonction et sélectionnez Unqt libérés.
Transmettre
Paramètres ... Ref. type ... Facultatif Valeur Description
LIGNE DE TEXTE 1 !
Les paramètres Nicht Optionale
LIGNE DE TEXTE 2 ! !
obligatoires Parameter des
TITRE
d'un module de fonction !
START_COLUMN Constructors
doivent être transmis ! !
START_ROW
à l'instruction müssen bei
! !
CALL FUNCTION CREATE OBJECT
versorgt werden
ã SAP AG 1999
n Dès que vous trouvez un module de fonction, vous devez en découvrir davantage sur son interface.
n Les paramètres obligatoires du module de fonction doivent être transmis à l'instruction CALL
FUNCTION. Pour savoir comment traiter les autres paramètres, référez-vous à la documentation sur
le module de fonction et sur les paramètres d'interface.
n Si la documentation n'est pas suffisamment précise, ou si elle n'est pas disponible dans votre langue
de travail, vous pouvez analyser le code source du module de fonction en sélectionnant l'onglet Code
source.
Documentation
• Courte description
• Fonction
• Exemple
• Notes
• Informations complémentaires
• Paramètre Test
• Exceptions
• Groupe de fonctions
Paramètres d'export
ã SAP AG 1999
n Vous pouvez tester les modules de fonction par l'environnement de test. Vous spécifiez les
paramètres d'IMPORT dans un modèle de saisie. Le résultat est transmis aux paramètres d'EXPORT,
puis s'affiche.
n En cas d'erreur, le système identifie l'exception déclenchée.
n La durée d'exécution du module de fonction s'affiche en micro-secondes. Ces valeurs sont soumises
aux mêmes conditions que l'analyse de durée d'exécution. Par conséquent, recommencez plusieurs
tests en utilisant les mêmes données.
n Vous pouvez enregistrer les données de test dans un répertoire prévu à cet effet.
n Pour tester les modules dotés de paramètres de table, utilisez la fonction test du Générateur de
modules de fonction.
n Vous pouvez créer des séquences de tests.
case answer.
WHEN
WHEN
...
ENDCASE.
Programme ABAP
ã SAP AG 1999
n 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. Après EXPORTING, le
système affecte les paramètres transmis au module de fonction. Après IMPORTING, le système
affecte les paramètres transférés du module de fonction au programme. La plupart des modules de
fonction gèrent des exceptions supplémentaires. Dès lors, après EXCEPTIONS, les exceptions sont
affectées à des valeurs qui seront utilisées dans la zone système sy-subrc, en cas d'erreur du
système. Le système affiche les noms des paramètres d'interface à gauche, les objets de données du
programme à droite.
Modèle
Insérer instruction
Le système
génère le CALL FUNCTION
code ABAP 'POPUP_TO_CONFIRM_LOSS_OF_DATA'
EXPORTING Entrer
ligne de texte = paramètres
titre = effectifs
IMPORTING
réponse =
CASE SY-SUBRC.
Traiter
ã SAP AG 1999
code retour
n Pour ce faire, utilisez un modèle d'instruction de l'Éditeur ABAP (bouton de commande "Modèle"),
puis saisissez le nom du module de fonction.
n Le système génère alors l'instruction ABAP CALL FUNCTION '<nom module de
fonction>', qui comprend l'interface du module de fonction, et l'insère dans le programme à
l'emplacement du curseur.
n Entrez les paramètres effectifs, et écrivez les instructions qui traiteront toute éventuelle exception.
Affectez la valeur des paramètres d'interface de façon explicite par le nom du paramètre effectif.
Pour le programme appelant, les paramètres à transmettre au module de fonction sont exportés ; ceux
à transmettre du module de fonction au programme sont importés. Il n'est pas obligatoire d'affecter
un paramètre effectif à un paramètre optionnel. Dans ce cas, mettez la ligne concernée en
commentaire.
n N'oubliez pas que, lors de l'affectation des paramètres d'un module de fonction, le paramètre du
module de fonction se trouve toujours à gauche, tandis que le paramètre effectif est à droite.
Groupes
Groupes de
de fonctions
fonctions et
et modules
modules de
de fonction
fonction
Objets
Objets et
et méthodes
méthodes
Objets
Objets de
de gestion
gestion et
et BAPI
BAPI
Bases
Bases de
de données
données logiques
logiques
ã SAP AG 1999
ã SAP AG 1999
ã SAP AG 1999
Modèle Maison
Réalité Arbre
Méthode
Méthode
Données Méthode Données Méthode
Méthode
Méthode
Grue
Méthode Bateau
Données Méthode
Méthode Méthode
Données Méthode
Méthode
ã SAP AG 1999
n Les objets sont au centre de l'approche orientée objet et représentent des entités concrètes ou
abstraites de la réalité. Ils sont définis selon leurs propriétés, qui sont elles-mêmes décrites par leur
structure interne et leurs attributs (données). Le comportement d'objet est décrit par des méthodes et
des événements (fonctions).
n Chaque objet forme une capsule, qui contient son caractère comme son comportement. Les objets
doivent permettre au modèle du domaine d'un problème d'être repris de la manière la plus précise
dans le modèle de conception pour sa solution.
carrid
carrid, Méthode connid
connid, publique : fldate
fdate Réserver customid
cas d'erreur
Attributs privés :
sièges libres Méthode
passagers publique :
Annuler
Vol annulé
carrid
connid
fldate
Cas d'erreur bookid
customid
ã SAP AG 1999
AA
0016
28.08.1999 LH
0400
28.08.1999
ã SAP AG 1999
n Généralement, lorsque les clients modifient une réservation par une agence de voyages, ils veulent
être certains d'avoir une place sur leur nouveau vol avant d'annuler le premier.
n Techniquement, ce sont deux objets du même type, mais dotés d'attributs-clés différents.
Classe "vol" :
modèle
d'objets
Objet vol 2 :
Objet vol 1 :
Instance de
Instance de
Classe "vol"
Classe "vol"
ã SAP AG 1999
n En programmation orientée objets, l'implémentation d'une telle classe est définie comme un objet
type. Les instances de cette classe se créent au moment de l'exécution. Le système crée ainsi des
objets d'un type d'objets (et donc, de la classe).
ref1 ref2
CREATE OBJECT ref1 AA
EXPORTING ... 0016 Vol
28.08.1999
ã SAP AG 1999
n Un programme ABAP qui modifie les réservations par des objets possède le déroulement de
programme suivant :
n Le programme démarre et le contexte du programme se charge. Les zones de mémoire deviennent
disponibles pour tous les objets de données globales du programme. Des variables de référence
deviennent également accessibles pour chaque objet. Lorsque vous démarrez le programme, vous
pouvez voir le résumé des objets de données devenus disponibles en développant 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 données ont été définis en utilisant, par exemple, une
instruction DATA ou TABLES. Les variables de référence sont définies par une instruction DATA:
<ref> TYPE REF TO <classe>.
n Les objets sont générés au moment de l'exécution, une fois l'instruction CREATE OBJECT traitée.
Cette instruction appelle une méthode spéciale nommée CONSTRUCTOR de manière implicite. Tous
les paramètres requis par le constructeur doivent être sépcifiés dans l'instruction CREATE
OBJECT. Notre exemple vous montre que seuls les attributs-clés doivent être transmis à
l'instruction.
n Dès que l'instruction CALL METHOD est traitée, la méthode est appelée. L'appel d'une méthode est
très différent de l'appel d'une fonction. En effet, l'objet dans lequel la méthode doit être traitée doit
être déclaré de manière explicite. Le système spécifie une variable de référence qui indique l'objet.
Le nom de la variable de référence est suivi de -> et du nom de la méthode.
l Intégration Office
l Business Add-ins (nouveau concept d'extension de
système)
l Contrôles
l Projets pilotes (déjà orientés objet)
ã SAP AG 1999
n Dans la version 4.6, les plus importants aspects du système d'extensions orientées objet du langage
ABAP sont :
n Intégration office : le système offre une nouvelle interface orientée objets, qui vous permettra
d'utiliser toutes les fonctions de produit Office R/3 ;
n Business Add-ins : une technologie d'extensions orientée objet, qui combine des avantages de
technologies existantes. Si vous incluez des Business Add-ins dans des programmes standard, vous
pouvez compléter le programme par des méthodes spéciales, sans devoir effectuer de modification ;
n Contrôles : le système R/3 vous permet de créer 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 exécute cette tâche ;
n Les projets pilotes sont déjà orientés objet.
ã SAP AG 1999
n Si des custom controls doivent être inclus sur le frontend, le SAPGUI réagit en leur servant de
conteneur. Les custom controls peuvent être des contrôles ActiveX et JavaBeans.
n Le système doit utiliser les Remote Function Call (RFC) pour le transfert de méthodes afin de créer
et d'utiliser un contrôle (ABAP OO) sur le frontend.
Barre d'outils
ã SAP AG 1999
n Sur le control, vous pouvez ajuster la largeur de colonne aux données affichées en la faisant glisser
ou en utilisant la fonction "Largeur optimale". Vous pouvez également modifier l'ordre des colonnes
si vous en sélectionnez une et que vous la faites glisser jusqu'à son nouvel emplacement.
n Les fonctions standard sont disponibles dans la barre d'outils du control. L'affichage des détails
affiche les zones de la ligne sur laquelle le curseur est positionné dans une boîte de dialogue modale.
n La fonction de tri de ALV Control est disponible pour toutes les colonnes demandées. Vous pouvez
paramétrer des critères de tri complexes pour trier les colonnes dans un ordre croissant ou
décroissant.
n Vous pouvez utiliser la fonction "Rechercher" pour rechercher une chaîne (recherche générique sans
*) par ligne ou par colonne dans un domaine déterminé.
n Vous pouvez utiliser la fonction "Cumul" pour demander les totaux d'une ou plusieurs colonnes
numériques. Vous pouvez utiliser la fonction "Sous-total" pour structurer des listes de niveaux de
groupe : sélectionnez les colonnes (colonnes non numériques uniquement) que vous voulez utiliser et
le control correspondant. Pour les fonctions "Imprimer" et "Télédécharger", ce ne sont pas seulement
les informations affichées à l'écran qui sont traitées, mais toute la liste.
n Vous avez également la possibilité de paramétrer des variantes d'affichage. Pour sauvegarder des
variantes, voir "Techniques avancées".
Process
Before
Output
Process
Domaine After
Input
Écran 100
START-OF-
Custom SELECTION.:
Container
Control
ã SAP AG 1999
n Un conteneur SAP peut contenir d'autres controls (par exemple, SAP ALV Grid Control, Tree
Control, SAP Picture Control, SAP Splitter Control, etc.). Il gère ces controls de manière logique
dans une collection d'objets et fournit un domaine physique pour l'affichage.
n Chaque control existe dans un conteneur. Comme les conteneurs sont eux-mêmes des controls, ils
peuvent s'imbriquer les uns dans les autres. Un conteneur est le parent des controls qu'il contient.
Domaine
CL_GUI_CUSTOM_CONTAINER
CL_GUI_ALV_GRID
Custom
Container Custom ALV Grid
Control container control
Générateur de classes
ã SAP AG 1999
n Vous trouverez dans le Générateur de classes des types d'objets pour la gestion des custom controls
et de ALV Grid Control. Au moment de l'exécution, le système crée deux objets : un du type
CL_GUI_CUSTOMER_CONTAINER et un du type CL_GUI_ALV_GRID. Ces objets contiennent
les méthodes nécessaires à la gestion des controls. Vous trouverez des informations complémentaires
sur les types d'objets (classes) et leurs méthodes associées dans le Générateur de classes.
CL_GUI_CUSTOM_CONTAINER
Superclasses
Méthodes
Constructeur
Classe CL_GUI_CUSTOM_CONTAINER
ã SAP AG 1999
n Vous pouvez naviguer dans le Générateur 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 système affiche
une arborescence pour la classe choisie. Double-cliquez sur le noeud racine pour afficher le domaine
de travail du Générateur de classes. Choisissez l'onglet Méthodes et sélectionnez la méthode pour
laquelle vous souhaitez des informations complémentaires. Choisissez le bouton Paramètres pour
afficher des informations complémentaires sur les paramètres d'interface.
n CL_GUI_CUSTOM_CONTAINER contient seulement la méthode CONSTRUCTOR. Lorsque vous
créez un objet dans un programme en utilisant CREATE OBJECT, vous devez transférer le
paramètre non optionnel CONTAINER_NAME. Le nom du domaine du conteneur à l'écran doit être
transmis à ce paramètre.
CL_GUI_ALV_GRID
Superclasses
Interfaces Paramètres non facultatifs
Attributs I_PARENT TYPE REF TO
Méthodes CL_GUI_CONTAINER
...
Constructeur
...
SET_TABLE_FOR_FIRST_DISPLAY
Vous devez transmettre le type
... de ligne de la table interne, p. ex.
type de structure du dictionnaire
Redéfinition to I_STRUCTURE_NAME
Événements
ã SAP AG 1999
n CL_GUI_ALV_GRID contient de nombreuses méthodes. Pour afficher une table interne de type de
ligne de structure du Dictionnaire ABAP en utilisant ALV Grid Control, vous devez connaître
uniquement les détails de trois méthodes :
n CONSTRUCTOR: la variable de référence indiquant l'objet (avec lequel le control du conteneur
communique) doit être transférée au constructeur ;
n la première fois que le contenu d'une table est affiché en utilisant ALV Grid Control, l'affichage est
implémenté par la méthode SET_TABLE_FOR_FIRST_DISPLAY. La table interne est transférée
au paramètre it_outtab. Dans ce cas, le transfert du paramètre non optionnel it_outtab ne
suffit pas. Les informations relatives à la structure de lignes doivent également être transférées à
l'objet. Dans le cas de zones numériques comportant une unité, les relations entre les zones doivent
être transférées - soit de manière explicite en utilisant une liste des zones, soit de manière 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 paramètre I_STRUCTURE_NAME ;
n REFRESH_TABLE_DISPLAY peut être appelé si la table interne a déjà été affichée en utilisant Grid
Control, et si le contenu de cette table diffère de celui indiqué à l'écran. Dans ce cas, le frontend
connaît déjà le type de ligne de la table interne et les zones de référence.
Domaine
Domaine d'écran :
Type : CUSTOM CONTROL
Nom : CONTENEUR_1
C Reformatage Taille minimale
Vertical : "X" 10
Horizontal : "X" 20
ã SAP AG 1999
n Pour réserver un domaine de l'écran à un contrôle EnjoySAP, ouvrez le Screen Painter et choisissez
le bouton Mise en page.
n 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, spécifiez la taille et la position du domaine de l'écran comme suit
: cliquez à l'endroit où vous voulez placer le coin supérieur gauche du custom control et gardez le
bouton de la souris appuyé. Faites glisser le curseur là où vous voulez placer le coin inférieur droit.
Dès que vous lâchez le bouton de la souris, le coin inférieur droit se fixe à une position.
Vous pouvez modifier à tout moment la taille et la position de la zone en glissant-déplaçant les
handles. Cette zone se comporte alors à nouveau comme une zone de sous-écran..
n Entrez un nouveau nom pour l'élément d'écran (CONTENEUR_1 dans notre exemple).
n Utilisez Redimentionnement vertical et Redimensionnement horizontal pour spécifier si la zone du
custom control doit être redimensionnée ou non lorsque l'écran principal est redimensionné. Vous
pouvez également paramétrer des valeurs minimales à ces attributs en utilisant Ligne Min. et
Colonne min.. Vous déterminez la taille maximale de la zone à sa création.
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, container _r
grid_r TYPE REF TO cl_gui_alv_grid,
grid_r
START-OF-SELECTION.
perform fill_itab USING gdt_spfli.
ã SAP AG 1999
CREATE OBJECT
CREATE OBJECT grid_r
grid_r
EXPORTING i_parent = =container_ref.
EXPORTING i_parent container_r.
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
n CREATE OBJECT crée un objet à l'exécution. Vous devez seulement indiquer la variable de
référence, comme elle est du même type d'objet que la classe.
n Pour générer 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 définie. Si l'instruction CREATE OBJECT est exécutée dans un autre
bloc de traitement ABAP, vous devez inclure le numéro de l'écran conteneur et le nom du
programme.
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
n Pour afficher les données dans un ALV Grid Control, vous devez les disposer dans une table interne.
Le système appelle ensuite la méthode qui reçoit le contenu et la structure de la table interne. La
méthode 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 transféré au paramètre
i_structure_name. La méthode reçoit 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.
n Si seul le contenu de la table interne est modifié pendant l'exécution du programme, il doit appeler la
méthode refresh_table_display avant le renvoi de l'écran dans la zone conteneur.
Groupes
Groupes de
de fonctions
fonctions et
et modules
modules de
de fonction
fonction
Objets
Objets et
et méthodes
méthodes
Objets
Objets de
de gestion
gestion et
et BAPI
BAPI
Bases
Bases de
de données
données logiques
logiques
ã SAP AG 1999
ã SAP AG 1999
BAPI
ã SAP AG 1999
n Un BAPI est un point d'entrée du système R/3, point auquel le système R/3 fournit un accès aux
objets de gestion et aux traitements.
n Chaque objet du BOR peut avoir différentes méthodes, une ou plusieurs d'entre elles peuvent être
exécutées comme des BAPI.
n Les BAPI peuvent avoir les fonctions suivantes :
- création d'un objet ;
- recherche des attributs d'un objet ;
- modification des attributs d'un objet.
Systèmes-satellite R/3 et
scénarios répartis (ALE)
Business
Workflow
Visual Basic/JAVA...
Internet /
Intranet
Composante Composante
de gestion B
de gestion
Composition
des Composante Développement
de gestion
composantes R/3 spécifique client et
partenaires
ã SAP AG 1999
n Un BAPI est une interface qui peut s'utiliser dans de nombreuses applications. Par exemple :
- les composantes applicatives Internet permettent l'accès à des fonctions R/3 individuelles sur
Internet ou Intranet pour des utilisateurs sans expérience R/3 ;
- la composition des composantes R/3 permet une communication entre les objets de gestion et
les différentes composantes R/3 (applications) ;
- VisualBasic/JAVA/C++ : des clients externes (par exemple, des GUI alternatifs) peuvent
accéder directement aux objets de gestion et à leurs traitements.
Méthodes :
FlightBooking.GetList
FlightBooking.GetDetail
FlightBooking.CreateFromData
FlightBooking.Cancel
Compagnie aérienne
Numéro de correspondance
Date du vol
Numéro de réservation
ã SAP AG 1999
Hiérarchie des
composantes
Composante applicative
Objet de gestion
Attributs-clés
Des informations
Méthodes API complémentaires sur
les sous-composantes sont
disponibles dans les autres
outils ABAP Workbench
Domaine de hiérarchie
ã SAP AG 1999
n Le BAPI Explorer Information vous permet d'afficher des informations complémentaires sur les
objets de gestion et les BAPI qui leur appartiennent. L'écran se divise en deux parties : un domaine
de hiérarchie et une fenêtre de détails. Le domaine de hiérarchie affiche la hiérarchie des
composantes. Vous pouvez développer une composante applicative pour trouver les objets de gestion
qui lui appartiennent. Si vous développez un objet de gestion individuel, le système affiche un sous-
arbre, vous indiquant quels attributs-clés et quelles méthodes API en dépendent. (API représente
Application Programming Interface).
ã SAP AG 1999
n Des symboles s'utilisent pour indiquer les objets de gestion, les attributs-clés et les BAPI. Vous
pouvez afficher la clé de ces symboles en utilisant le bouton Afficher légende.
FlightBooking
Compagnie aérienne
N° correspondance
Date du vol Attributs-clés
N° réservation
Cancel
CreateFromData Méthodes API
GetDetail
GetList
FlightCustomer
FlightConnection
ã SAP AG 1999
n Si vous développez le sous-arbre d'un objet de gestion dans le BAPI Explorer, le système affiche :
les attributs-clés, qui fournissent un identificateur unique à chaque objet de gestion ;
les méthodes spécifiques de l'instance, liées à l'instance identifiée par les attributs-clés ; le type
d'objet de gestion FlightBooking a une méthode spécifique à l'instance, GetDetail (qui renvoie
une structure comportant les détails d'une réservation). Les valeurs des attributs-clés doivent être
transférées à cette méthode ;
les méthodes non spécifiques de l'instance, appelées par toutes les instances d'un type d'objet.
FlightBooking en possède une, GetList (qui renvoie une liste de toutes les réservations, pour
lesquelles un objet de gestion existe déjà au moment de l'exécution).
Sélection d'outils
FlightBooking
Compagnie aérienne Générateur d'objets
N° correspondance Générateur de modules de fonction
Date du vol Dictionnaire ABAP
N° réservation Contrôles de cohérence BAPI
Création de liste BAPI
Cancel
CreateFromData
Entrée données réserv.
Retour Structure du Dictionnaire
BAPISBDTIN
Données de réservation
GetDetail Afficher
GetList
FlightCustomer
FlightConnection
ã SAP AG 1999
n Si vous développez la sous-structure d'une méthode, le système renvoie les noms de ses paramètres
d'import et d'export. Vous trouverez des informations complémentaires sur le typage des paramètres
d'interface en choisissant l'onglet Outils,et ensuite le Dictionnaire ABAP. Les paramètres d'interface
BAPI sont toujours typés par des types du Dictionnaire ABAP.
n Les BAPI ont généralement un paramètre d'export appelé RETURN. Celui-ci peut être soit une
structure, soit une table interne. Le paramètre RETURN contient des informations sur les erreurs
effectuées pendant le traitement du BAPI. Les BAPI n'ont pas d'exceptions.
Type d'objet
Zones-clés
Attributs
Méthodes
Événements
ã SAP AG 1999
n Pour afficher des informations complètes sur un type d'objet de gestion, utilisez l'outil Générateur
d'objets. Le système affiche une arborescence pour le type d'objet de gestion, y compris des
méthodes non API.
n Pour rechercher un objet de gestion, utilisez l'outil Business Object Repository (BOR). Cet outil
affiche la hiérarchie des composantes et tous les objets de données qui en dépendent. Vous pouvez
naviguer de cette arborescence vers le Générateur d'objets. Le système affiche automatiquement
l'objet adéquat.
l GetList
n Renvoie le contenu des zones-clés pour l'objet choisi
l GetDetail
n Renvoie les informations détaillées (attributs) pour l'objet
demandé
l CreateFromData
n Crée un nouvel objet dans R/3 et renvoie les informations le
concernant
ã SAP AG 1999
n Les BAPI de noms standardisés contiennent des méthodes standard. Cette page vous propose les
trois plus importantes.
Sélection d'outils
FlightBooking
Compagnie aérienne Générateur d'objets
N° correspondance Générateur de modules de fonction
Date du vol Dictionnaire ABAP
N° réservation Contrôles de cohérence BAPI
Création de liste BAPI
Annuler
CreateFromData
GetDetail
Module de fonction BAPI_SBOOK_GETDETAIL
Retour
Données de réserv.
GetList
Afficher
FlightCustomer
FlightConnection
ã SAP AG 1999
n Dans la version 4.6, les BAPI sont implémentés par des modules de fonction. Vous pouvez afficher
le module de fonction du BAPI choisi en utilisant le BAPI Explorer :
sélectionnez le BAPI dans le domaine de hiérarchie ;
dans la fenêtre d'affichage des informations détaillées, choisissez l'onglet Outils ;
choisissez le Générateur de fonctions, le système affiche le nom du module de fonction ;
choisissez Afficher.
Programme ABAP
PROGRAM ...
R/3
TABLES ...
DATA ... Business Object
Repository
MODULE init OUTPUT.
CALL FUNCTION 'BAPI_...' ... Objet de gestion A :
ENDMODULE. Méthode 1 = M1
Méthode 2 = M2
MODULE read_data INPUT.
CALL FUNCTION 'BAPI_...' ...
ENDMODULE. Modules de fonction :
BAPI_A_M1
MODULE confirm_reservation.
CALL FUNCTION 'BAPI_...'...
'BAPI_...' ... BAPI_A_M2
IF ... .
CALL
CALLFUNCTION
FUNCTION'BAPI_...'
'BAPI_...'...
...
ENDIF.
ENDMODULE.
ã SAP AG 1999
n Si vous voulez utiliser un BAPI dans un système R/3, vous pouvez directement appeler le module de
fonction qui le comporte. Vous constaterez que les informations relatives aux erreurs sont transférées
au programme en utilisant le paramètre 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.
l Aucune exception
l Les erreurs sont gérées par des paramètres d'export
(structures ou tables)
n Nom du paramètre : RETURN
n Structure du Dictionnaire ABAP (selon la version) :
BAPIRETURN, BAPIRETURN1,
BAPIRET1, BAPIRET2, BAPIRET2_FIX
ã SAP AG 1999
n Tout BAPI possède un paramètre d'interface, RETURN, qui contient les informations sur les cas
d'erreur. Ce paramètre est toujours d'un type du Dictionnaire ABAP. Vous devez donc inclure une
structure d'un type identique dans votre programme.
Groupes
Groupes de
de fonctions
fonctions et
et modules
modules de
de fonction
fonction
Objets
Objets et
et méthodes
méthodes
Objets
Objets de
de gestion
gestion et
et BAPI
BAPI
Bases
Bases de
de données
données logiques
logiques
ã SAP AG 1999
ã SAP AG 1999
SPFLI
SFLIGHT
SBOOK
ã SAP AG 1999
n Utilisez des bases de données logiques pour lire dans les bases de données des informations
logiquement cohérentes. Chaque base de données logique possède une structure comportant une
hiérarchie des tables et des vues à lire.
n Vous pouvez relier une seule base de données logique à chaque programme de type 1. Celle-ci
envoie ensuite à votre programme des entrées aux tables et aux vues. Seules les instructions de
traitement de données doivent donc être programmées.
Vous
Vous pouvez associer une base de données 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
événements spécifiques.
spécifiques.
ã SAP AG 1999
n Chaque base de données logique est encapsulée dans un programme conçu pour les accès fréquents à
ses informations.
n Ces accès ont été optimisés à l'aide d'Open SQL.
n Lorsque vous travaillez avec une base de données logique, vous ne devez pas programmer d'écran de
sélection car celui-ci est généré automatiquement.
n Le système contrôle les autorisations conformément au concept d'autorisation de SAP.
Données de Programme
la BD logique
NODES sflight.
SPFLI
GET sflight ... SFLIGHT
:
SBOOK
ã SAP AG 1999
Programme Base de
NODES: SPFLI, données
SFLIGHT. logique
START-OF-SELECTION.
GET spfli.
SPFLI
Runtime
system
GET sflight. SFLIGHT ABAP
SBOOK
Liste de base
END-OF-SELECTION.
ã SAP AG 1999
n Pour inclure une base de données logique à un programme de type 1, vous utilisez les attributs de ce
programme.
n Chaque noeud de la hiérarchie de base de données logique vous envoie un événement GET (en plus
des autres événements). (GET SPFLI, GET SFLIGHT, GET SBOOK dans notre exemple).
n Vous utilisez des événements GET pour programmer le traitement des enregistrements.
n Au moment de l'exécution, les événements qui créent des listes sont traités dans l'ordre suivant :
n START-OF-SELECTION.
n GET SPFLI et GET SFLIGHT, appelés de nombreuses fois dans une logique SELECT
imbriquée, en fonction de la structure de la base de données logique.
n END-OF-SELECTION, appelé après tous les événements GET et immédiatement avant l'envoi
de la liste au serveur de présentation.
REPORT bc400d_logical_database.
NODES: spfli, sflight.
START-OF-SELECTION. START-OF-SELECTION
WRITE: / 'START-OF-SELECTION' GET SPFLI DL 1699
color 3. GET SFLIGHT 25.08.1998
END-OF-SELECTION.
WRITE: 'END-OF-SELECTION'
color 3.
ã SAP AG 1999
n Au moment de l'exécution, les événements qui créent des listes sont traités dans l'ordre suivant :
n START-OF-SELECTION.
n GET spfli : le premier enregistrement de la table SPFLI correspondant aux critères de
sélection est placé dans l'espace de travail spfli, puis l'événement est traité ;
n GET sflight : le premier enregistrement de SFLIGHT correspondant aux critères de
sélection et à la clé de l'enregistrement SPFLI en cours est placé dans l'espace de travail
sflight, puis l'événement est traité ;
n GET sflight : l'enregistrement suivant dans la table SFLIGHT est placé dans l'espace de
travail sflight, puis l'événement est traité de nouveau ;
n GET sflight est appelé jusqu'à ce qu'aucun nouvel enregistrement ne soit plus trouvé ;
n GET spfli LATE est appelé avant que l'enregistrement du SPFLI suivant ne soit placé
dans l'espace de travail spfli ;
n GET spfli : l'enregistrement correspondant suivant de SPFLI est placé dans l'espace de
travail spfli ;
n ...
n END-OF-SELECTION est appelé immédiatement avant l'envoi de la liste.
SBOOK END-OF-SELECTION.
WRITE: 'END-OF-SELECTION'
color 3.
ã SAP AG 1999
n Les BD logiques sont incluses dans les programmes de type 1 en tant qu'attributs. Une seule BDL
peut être associée à un programme.
n Pour indiquer à la BD logique les zones dont vous avez besoin, utilisez l'option FIELDS de GET.
Si elle gère cette action, toutes les zones spécifiées seront lues.
n Pour placer les données d'une table dans une liste non fournie par votre BD logique, utilisez SELECT
pour programmer un accès supplémentaire à cette base.
ã SAP AG 1999
Programme : ZBC400_##_DYNPRO
Solution modèle : SAPBC400UDS_DYNPRO_5
Programme : ZBC400_##_ALV_GRID
Solution modèle : SAPBC400RUS_ALV_GRID
Programme : ZBC400_##_ALV_GRID
Solution modèle :
2-3 START-OF-SELECTION.
DATA:
container_r TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
grid_r TYPE REF TO CL_GUI_ALV_GRID.
2-7 à 2-9 :
Logique d'exécution :
Contenu :
l Processus de traitement élémentaire
l LUW BD : unité logique de travail Base de données
l Regroupement des modifications d'une base de données
l Concept de blocage
ã SAP AG 1999
ã SAP AG 1999
Présentation
Application
Dispatcher
Base de données
ã SAP AG 1999
n Le système R/3 de SAP repose sur une architecture client/serveur à trois niveaux : base de données,
serveur d'application et serveur de présentation.
n Cette architecture, qui répartit les requêtes des utilisateurs (dispatcher), est la base d'un système à
multi-utilisateurs, hautement performant et économique.
n Les utilisateurs équipés d'ordinateurs relativement lents accèdent aux work processes d'un petit
nombre de serveurs d'application beaucoup plus rapides (et plus onéreux). À chaque work process du
serveur d'application correspond un work process du serveur de base de données.
n Le dispatcher attribue un work process aux clients, et ce, au niveau du serveur de présentation et
pendant une durée déterminée. À son tour, le work process du serveur d'application utilise un work
process de la base de données. Quand le système a traité la saisie utilisateur dans une étape de
dialogue, les données-contexte de l'utilisateur et du programme sont copiées hors du work process,
laissant ainsi la place libre à un autre utilisateur.
n Cette architecture à trois niveaux est beaucoup plus évolutive qu'une architecture client-serveur
volumineuse réunissant en un seul niveau les serveurs de présentation et d'application. Comme elle
nécessite moins d'opérations en antémémoire, elle est plus économique.
Processus de
traitement élémentaire
LUW SAP
ã SAP AG 1999
n Une LUW SAP (unité logique de travail) est une série d'étapes logiques réunies dans un processus
de gestion R/3.
n Les étapes de la chaîne de traitement du processus de gestion doivent être logiquement liées.
n Les LUW SAP fonctionnent selon le principe du "tout ou rien" : le système effectue toutes les étapes
ou aucune.
n Le processus de gestion représenté dans une LUW doit être élémentaire. 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 indépendants plus petits qui forment chacun
une "transaction" dans le système R/3. Le caractère "élémentaire" de votre processus dépend de sa
nature et de la façon dont vous l'aurez conçu.
Stade Stade
cohérent 1 cohérent 2
COMMIT
ROLLBACK
ã SAP AG 1999
n Une LUW base de données est une suite d'opérations indissociables qui fait passer la base de
données d'un état cohérent à un autre état cohérent.
n Le système exécute une LUW BD soit intégralement, soit pas du tout.
n Les LUW BD se terminent par un commit de base de données. C'est seulement au COMMIT que
sont écrites définitivement les modifications de la base de données. Jusqu'au déclenchement du
COMMIT, vous pouvez annuler toutes vos modifications en provoquant un ROLLBACK.
LUW SAP
Dialogues utilisateur
Programme
ABAP
Modifications de la BD
LUW BD
ã SAP AG 1999
n Pour représenter un processus de gestion dans le système R/3 au moyen d'une LUW SAP, il faut des
dialogues utilisateur et un dialogue base de données. Une transaction garantit que les données
échangées entre le programme et l'utilisateur dans les dialogues utilisateur sont traitées dans la base
selon le principe du tout ou rien. Tous les changements de la LUW SAP doivent donc être traités
dans une seule LUW BD.
n Généralement, une LUW SAP contient plusieurs LUW BD.
n L'objectif de la programmation d'une transaction est de regrouper les segments du dialogue base de
données dans une seule LUW BD.
Étape de dialogue
ã SAP AG 1999
Blocage a réussi
Objet bloqué
Durée
Durée
ã SAP AG 1999
Blocage a réussi
Demande de blocage
Blocage a échoué
Objet bloqué
Durée
Durée
ã SAP AG 1999
1 3
Demande de blocage
Blocage a échoué
Objet bloqué
Durée
Durée
ã SAP AG 1999
1 3
2 4
ã SAP AG 1999
n Un blocage au niveau du serveur base de données ne vaut que pour une seule LUW BD. Il ne
s'applique donc pas à un objet portant sur la totalité d'une LUW SAP.
n Cela est dû au fait que le système R/3 comporte un mécanisme de blocage spécifique totalement
indépendant du système de blocage de base de données.
n Selon le concept de blocage SAP, les programmes placent les entrées dont ils ont besoin dans une
table de blocages.
n Vous pouvez écrire une entrée de blocage seulement si les entrées de table correspondantes ne sont
pas déjà bloquées. Le code retour indique au programme si le blocage a été correctement défini.
Testez le code retour de programme et réagissez en conséquence. Si un autre utilisateur a déjà bloqué
les entrées de table, affichez un message d'erreur.
n Avant de définir un blocage, vous devez spécifier l'objet de blocage approprié dans le Dictionnaire
ABAP. Cet objet indique les arguments servant à bloquer des entrées de la table.
n Lorsque vous activez un objet de blocage, le système génère deux modules de fonction : ENQUEUE
et DEQUEUE.
n Le mécanisme de blocage SAP ne définit que des blocages logiques. Il n'a donc d'effet que si tous
les programmes applicatifs sont conformes à ses principes.
REPORT SAPBC400TCD_ENQUEUE_DEQUEUE.
...
AT LINE-SELECTION.
PERFORM authorization_check USING wa_spfli-carrid '02'
CHANGING subrc.
IF subrc <> 0. MESSAGE e047(BC400) WITH wa_spfli-carrid. ENDIF.
ã SAP AG 1999
n Dans notre programme d'exemple, il est normal d'écrire une entrée de blocage, avant que
l'enregistrement de données ne soit lu et l'écran traité.
n Vous écrivez une entrée de blocage en appelant un module de fonction ENQUEUE pour un objet de
blocage approprié. Vous trouverez quels objets de blocage accèdent à une table de base de données
dans les Cas d'emploi de celle-ci du Dictionnaire ABAP. Les modules de fonction "blocage" et
"déblocage" de l'objet de blocage sélectionné requièrent uniquement les conventions de nom
ENQUEUE_<Nom de l'objet de blocage> et DEQUEUE_<Nom de l'objet de blocage>. En règle
générale, vous devez uniquement transférer les zones-clés de l'interface. Les valeurs par défaut sont
transmises à tous les autres paramètres.
REPORT SAPBC400TCD_ENQUEUE_DEQUEUE.
...
MODULE user_command_0100 INPUT.
CASE ok_code.
...
WHEN 'SAVE'.
MOVE-CORRESPONDING sdyn_conn TO wa_spfli.
CALL FUNCTION 'BC400_UPDATE_FLTIME'
EXPORTING
iv_carrid = wa_spfli-carrid
iv_connid = wa_spfli-connid
iv_fltime = wa_spfli-fltime
iv_deptime = wa_spfli-deptime
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE a149.
ELSE.
MESSAGE s148.
LEAVE TO SCREEN 0.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
ã SAP AG 1999
n Notre programme d'exemple montre une seule mise à jour concernant une seule table. Vous pouvez
donc mettre à jour la base de données directement depuis un work process de dialogue, la technique
la plus facile. Les instructions ABAP qui mettent à jour la base de données sont toutes exécutées
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'exécute automatiquement.
n Des mises à jour de base de données plus complexes sont exécutées par des modules mise à jour.
Pour plus d'informations, reportez-vous à BC414 Programmation des mises à jour de la base de
données.
ã SAP AG 1999
ã SAP AG 1999
ã SAP AG 1999
Logistique logicielle
Logistique logicielle
Modificationde
Modification deRR//33
ã SAP AG 1999
Planning : ...
Fin du développement
Chef de projet :
BC400-00
Les tâches sont libérées
BC400-01
Projet de contrôle
contrôle de qualité
qualité
• Contrôle
Contrôle de syntaxe
BC400-02 • Objets inactifs
• Cohérence
Cohérence de tâche
tâche
BC400-03 Documentation du projet
BC400-04
L'ordre de modification est libér
libéré
é
...
ã SAP AG 1999
Système
Système de développement
développement Système
Système suivant
Original Copie
Transport
Développement
ã SAP AG 1999
n Le Workbench Organizer note automatiquement le système dans lequel vous créez un objet du
Repository. L'original de cet objet du Repository se trouve donc dans ce système.
n La version initiale d'un objet n'existe que dans un seul système. Les autres systèmes n'en contiennent
que des copies.
n Le fait qu'il existe un système initial pour un objet garantit que celui-ci n'est modifié que dans le
système d'intégration. C'est dans ce système que vous développez ; tous les objets qui s'y trouvent
sont donc des originaux. Vous y modifiez les objets du Repository.
n Si vous transportez ensuite vos objets du Repository dans un système 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 système d'intégration avant de transporter les nouvelles versions dans
d'autres systèmes. Ainsi, l'état des objets reste cohérent d'un système à l'autre.
n Les originaux ne sont jamais écrasés durant un transport.
Système
Système de développement
développement Système
Système suivant
ã SAP AG 1999
n La modification d'un original s'appelle une correction. Le système enregistre ces modifications dans
une demande contenant des tâches de type "développement/correction".
n Si une copie est modifiée (donc, si un objet n'est pas modifié dans son système original), cette
modification s'enregistre dans une tâche de type "réparation". Une modification d'un objet SAP
s'appelle une réparation.
n Les modifications effectuées dans vos propres objets (par ex. une urgence du système de production)
peuvent également s'inscrire en même temps dans les originaux du système de développement. Il est
impératif d'enregistrer également les modifications effectuées dans vos copies immédiatement
dans vos originaux !!
n Ce n'est pas possible pour les objets SAP car les originaux ne sont pas dans vos systèmes.
Système
Système de développement
développement Système suivan
Système
Montée
Montée de version Montée
Montée de version
ã SAP AG 1999
n Un conflit peut se produire lorsque vous effectuez une montée de version, un support package, ou
d'autres ordres de transport de SAP vers votre système.
n Un conflit se produit si vous modifiez un objet SAP et qu'une nouvelle copie est effectuée par SAP
lors d'une montée de version. L'objet livré par SAP devient l'objet actif du Repository de votre
système R/3.
n Pour sauvegarder vos modifications, vous devez effectuer un ajustement de modification pour les
objets correspondants. La modification de nombreux objets SAP peut entraîner un retard substantiel
lors de l'exécution de la montée de version.
n Pour garantir la cohérence du système de développement et du système suivant, vous devez effectuer
l'ajustement de modification uniquement dans le système de développement. Les objets de
l'ajustement sont ensuite transportés vers les autres systèmes.
Logistique logicielle
Logistique logicielle
Modificationde
Modification deRR//33
ã SAP AG 1999
Développe-
Modification Extension ment client
l Modification l Dictionnaire ABAP l avec appel
n Extension de table
codée en dur d'objets SAP
n Exit de zone
l Modification l Exit client l sans appel
assistée n Exit de module de d'objets SAP
fonction
n Exit d'écran
n Exit de menu
l BTE, Business
Transaction Events
l BADI, Business add-in
l Exit utilisateur
ã SAP AG 1999
Non
Oui
n Avant de modifier le standard, vérifiez si vous ne pouvez pas obtenir le résultat voulu en utilisant le
Customizing ou le concept d'extension.
n Vous utilisez les extensions pour modifier le logiciel SAP, tout en évitant d'en réparer la copie. Vous
modifiez ou complétez des fonctions sans avoir à réparer le logiciel manuellement lors des montées
de version. Les différents types d'extension sont cités plus loin dans ce chapitre.
n Vous pouvez demander une extension dans le SAPNet - R/3 Frontend.
Zone x
Exit de dynpro
Zone y
Exit de zone
ã SAP AG 1999
l Exits de programme :
n exits prédéfinis pour les programmes applicatifs.
l Extensions du Dictionnaire :
n append de table : vous permet d'ajouter des zones
supplémentaires à des tables standard ;
n informations sémantiques des éléments de données :
utilisation d'une extension pour modifier la description ou la
documentation d'une zone (F1, aide).
ã SAP AG 1999
Système client
ZABAP
Ajouter développeur
Programme
Vous ne figurez pas dans la liste des
développeurs. Veuillez vous inscrire
dans le SAPNet - R/3 Frontend.
Une fois inscrit, vous recevrez
une clé d'accès.
SAPNet
THIERRY
R/3 Utilisateur
Frontend Clé 07319180563617100772
ã SAP AG 1999
n Pour commencer à développer des programmes dans le système R/3, vous devez demander une clé
au SAPNet - R/3 Frontend. Vous êtes alors inscrit dans la liste des développeurs. La clé vous sera
demandée la première fois que vous créerez ou modifierez un objet du Repository. Le système
attribue des clés en fonction de la référence client et du nom de l'utilisateur.
n Pour vous inscrire :
- connectez-vous au SAPNet - R/3 Frontend. Si vous n'êtes pas un utilisateur du système,
demandez à un collègue de se connecter pour vous et de vous inscrire. (Toutefois, le nom de
votre collègue sera enregistré comme auteur de l'inscription) ;
- choisissez Inscription. L'écran Enregistrer modifications d'objets SAP apparaît ;.
- saisissez le nom d'utilisateur R/3. Le système affiche une clé de 20 caractères ;
- saisissez la clé de votre système R/3 soit manuellement, soit par couper-coller à partir du
SAPNet R/3 Frontend.
n SSCR signifie SAP Software Change Registration.
ã SAP AG 1999
Système client
ZABAP
Ajouter développeur
Programme
Vous ne figurez pas dans la liste des
développeurs. Veuillez vous inscrire
dans le SAPNet - R/3 Frontend.
Une fois inscrit, vous recevrez
une clé d'accès.
SAPNet
THIERRY
R/3 Utilisateur
Frontend Clé 07319180563617100772
ã SAP AG 1999
n Pour commencer à développer des programmes dans le système R/3, vous devez demander une clé
au SAPNet - R/3 Frontend. Vous êtes alors inscrit dans la liste des développeurs. La clé vous sera
demandée la première fois que vous créerez ou modifierez un objet du Repository. Le système
attribue des clés en fonction de la référence client et du nom de l'utilisateur.
n Pour vous inscrire :
- connectez-vous au SAPNet - R/3 Frontend. Si vous n'êtes pas un utilisateur du système,
demandez à un collègue de se connecter pour vous et de vous inscrire. (Toutefois, le nom de
votre collègue sera enregistré comme auteur de l'inscription) ;
- choisissez Inscription. L'écran Enregistrer modifications d'objets SAP apparaît ;.
- saisissez le nom d'utilisateur R/3. Le système affiche une clé de 20 caractères ;
- saisissez la clé de votre système R/3 soit manuellement, soit par couper-coller à partir du
SAPNet R/3 Frontend.
n SSCR signifie SAP Software Change Registration.
ã SAP AG 1999
ã SAP AG 1999
? ?
Recherche par attribut Cas d'emploi
Afficher tous les objets de type X Afficher tous les objets de type X
avec attribut Y qui utilisent l'attribut Y
Informations sur
les tables et
leurs relations Objets modifiés
modifiés
ã SAP AG 1999
? ?
Affectation à
une classe de développement
Éditeur
Objet de programme
ã SAP AG 1999
n Pour créer un nouveau programme, vous devez saisir tout d'abord des informations d'ordre
administratif.
n Les programmes doivent être affectés à une classe de développement spécifique. . Celle-ci classe le
programme logiquement. Vous le faites une fois pour toutes, lorsque vous créez l'objet du
Repository (la classe de développement sera à son tour affectée logiquement à la composante
appropriée).
n Vous devez aussi définir des attributs du programme. Parmi ceux-ci, le type de programme est
particulièrement important. Il détermine le mode d'exécution du programme dans un environnement
client/serveur R/3 si, par exemple, le texte source qui en résulte constitue un programme exécutable
ou un segment de code réutilisable.
n Enfin, un programme doit être affecté à un projet de Workbench Organizer (ordre de
modification). Celle-ci classe l'objet du Repository chronologiquement. Dès qu'un projet arrive à
son terme, vous affectez un programme à un nouveau projet.
n Vous éditez le programme uniquement après cette classification.
ã SAP AG 1999
TYPE-POOL Z400.
TYPES: z400_name_type(25) TYPE C,
BEGIN OF z400_flightrec_type,
... ,
END OF z400_flightrec_type.
ABAP
REPORT ... .
TYPE-POOLS z400.
DATA: name TYPE z400_name_type,
wa TYPE z400_flightrec_type.
... .
ã SAP AG 1999
n Vous définissez des types de données dans un type-pool du Dictionnaire ABAP, plutôt que dans un
programme ABAP.
n Le nom d'un groupe de types du Dictionnaire ABAP ne doit pas dépasser 5 caractères. Les noms des
types contenus dans le groupe de types <typepool> doivent commencer par <typepool>, suivi d'un
trait de soulignement.
n Dans les programmes ABAP, vous devez déclarer les types appartenant à un groupe de types par la
commande TYPE-POOLS.
PA_CARR Compagnie
aérienne
Numéro de vol
Continuer
Transport de données
pa_carr
sdyn_conn
sdyn_conn
TABLES sdyn_conn.
PARAMETERS pa_carr LIKE spfli-carrid.
ã SAP AG 1999
n L'instruction PARAMETERS est un élément de langage déclaratif qui établit des zones internes dans
un état. Contrairement à ce qui se produit avec l'instruction DATA, les zones déclarées avec
PARAMETERS figurent sur l'écran de sélection pour la saisie.
n Avec l'instruction PARAMETERS, vous utilisez les options TYPE et LIKE, comme avec l'instruction
DATA.
n De même que vous utilisez DATA avec VALUE pour affecter une valeur initiale, vous spécifiez
l'option DEFAULT dans l'instruction PARAMETERS pour fixer la valeur par défaut de la zone. Cette
valeur est un littéral, une constante ou une zone système extraite lors du traitement de l'état (sy-
datum, par exemple).
n Servant d'interface vers l'écran pour toutes les zones, l'instruction TABLES déclare un objet de
données interne servant d'interface écran pour toutes les zones se référant au même objet du
Dictionnaire.
n L'instruction TABLES définit un espace de travail approprié dans votre programme ABAP pour les
données entrées dans un écran ou transférées du programme vers l'écran.
ã SAP AG 1999
n Pour rétablir la valeur initiale du contenu d'un objet de données en fonction de son type, utilisez
l'instruction CLEAR.
n Les entrées de table interne sont du même type. Une seule instruction CLEAR suffit donc pour
effacer l'intégralité d'une table.
n CLEAR <wa> initialise l'espace de travail <wa>.
Type
TYPES
Constante
CONSTANTS
Paramètre de saisie
PARAMETERS
Espace de travail
TABLES
ã SAP AG 1999
n Dans le chapitre Tables internes et dans la section Écrans de sélection du chapitre consacré aux
Dialogues, vous découvrirez une autre instruction déclarative : SELECT-OPTIONS Définition
d'options de sélection
n Pour afficher un récapitulatif complet des instructions déclaratives 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-clés par type.
Pour convertir un type non compatible, il faut qu'il existe une règle de
conversion définie
ã SAP AG 1999
n Si vous affectez un objet de données à un autre de type différent, ABAP effectue une conversion de
type, à condition qu'une règle de conversion ait été établie pour les types concernés.
... <zone1><opérateur>
<opérateur><zone2> ...
Opérateur
Opérateur Signification
Instructions ENDWHILE.
ENDDO.
ã SAP AG 1999
ã SAP AG 1999
EXIT CHECK :
Si condition logique non
remplie, ...
Événements : Fin de
programme,
START-OF-SELECTION la liste s'affiche
GET
END-OF-SELECTION
Événements :
Aller à la fin du bloc
INITIALIZATION
AT SELECTION-SCREEN ...
de traitement
...
Sous-programmes FORM
ã SAP AG 1999
n 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 prématurément un bloc de
traitement.
n Utilisez aussi l'instruction EXIT en dehors de la boucle pour terminer un bloc de traitement en cours.
Cependant, plusieurs événements font exception à cette règle. Terminez prématurément votre
programme par l'instruction EXIT, incluse dans leurs blocs de temps. Dans ce cas, une liste s'affiche
immédiatement après le traitement de l'instruction EXIT.
ã SAP AG 1999
Création de programme
Repository Browser :
Programme <nom>
Création de programme
avec TOP INCL.
ã SAP AG 1999
Groupe de fonctions
ã SAP AG 1999
Développement spécifique
client et partenaires
Modules de RFC
fonction
Parallèle
asynchrone Encapsulation:
• fonctions
• dialogues
ã SAP AG 1999
n Vous pouvez appeler les modules de fonction soit de manière asynchrone, soit en parallèle.
n Vous pouvez y encapsuler des dialogues utilisateurs.
n Vous pouvez créer des modules de fonction que vous appellerez en Remote. Ceux-ci peuvent alors
être lancés de manière externe:
n à partir du World Wide Web, pour accéder à un système R/3 ;
n à partir d'un autre système R/3 ;
n à partir de vos propres programmes (Visual Basic, JAVA ou C++, par exemple).
Exceptions
IF seatsmax = 0.
RAISE max_eq_0.
Définition d'une exception ELSEIF seatsocc > seatsmax.
RAISE occ_gt_max.
ENDIF.
.
.
Levée d'une exception .
ENDFUNCTION.
ã SAP AG 1999
n Pour anticiper d'éventuelles erreurs et éviter qu'elles ne se répercutent sur l'exécution, affectez-leur
un nom dans l'interface du module de fonction. Ensuite, déclenchez-les à partir du code de
programme par l'instruction RAISE. Chaque programme appelant le module interprétera ces
exceptions en testant sy-subrc.
n Dans un module de fonction, vous pouvez également garantir l'affichage d'un message d'erreur en
cas d'exception, même si elle n'est pas traitée explicitement par le programme appelant. Pour plus
d'informations, reportez-vous à la documentation, au mot-clé MESSAGE ... RAISING.
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
REPORT sapbc400udd_example_1a.
INCLUDE <LISTE>.
:
WRITE: / wa_spfli-carrid COLOR col_key,
iicon_date AS ICON,
ã SAP AG 1999
n 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'arrière-plan, activées soit par une valeur numérique, soit par un nom symbolique
correspondant à l'endroit où ils apparaissent dans une liste standard.
0 col_backgroundArrière-plan
1 col_heading En-têtes
2 col_normal Saisies de liste
3 col_total Totaux
4 col_keyColonnes-clé
5 col_positive Valeurs seuils positives
6 col_negative Valeurs seuils négatives
7 col_group Niveaux de contrôle
n Pour créer des listes en couleur, suivez les instructions fournies par SAP. Vous trouverez des
exemples dans la transaction LIBS.
n Pour ajouter des icônes dans une liste, utilisez l'instruction WRITE avec l'option AS ICON. Pour
utiliser cette option, insérez au préalable l'include <LIST> dans votre programme.
n Vous trouverez un récapitulatif de toutes les icônes disponibles soit dans la documentation, au mot-
clé WRITE, soit dans la structure de l'instruction WRITE.
Serveur
externe
Fichiers Interfaces /
séquentiels contrôles
SAP
ã SAP AG 1999
n Lorsque vous transférez des données entre un autre système SAP ou un système externe et votre
propre système SAP, vous devez préserver leur intégrité.
n Vous devez donc soumettre ces transferts aux mêmes contrôles que les transferts effectués en mode
dialogué.
n Dans les transactions, les contrôles en mode dialogué sont très exhaustifs et, pour partie, inter-
applications : il vous est donc très difficile d'en programmer vous-même.
n Par conséquent, il vaut mieux effectuer le contrôle de transactions à l'aide des mêmes contrôles que
dans le mode dialogué de SAP. Ceci signifie, dans la pratique, que les transactions SAP servent
également au transfert de données.
n Les techniques utilisées pour le transfert de données externes s'appellent "processus de batch input".
n SAP offre des procédures de transfert de données externes standardisées pour de nombreux domaines
de R/3. Ces procédures utilisent les techniques de programmation batch input, call transaction et
direct input. Pour accéder aux procédures standard de transfert de données SAP, utilisez l'atelier
de reprise des données (transaction SXDA). Si aucune procédure SAP n'est possible, programmez
des transferts au cas par cas en utilisant le batch input ou la call transaction.
Table
Table BDC
BDC Table
Table BDC
BDC
Fichier Programme
d'attente CALL de transfert
TRANSACTION ABAP
Fonction
Fonction de
de batch
batch input
input
Fonction
Fonction d'application
d'application Fonction
Fonction d'application
d'application
0 0
CALL SCREEN 100
ã SAP AG 1999
n Utilisez cette technique pour programmer des clusters d'écrans intégrés, sans devoir revenir
continuellement au code source et les appeler par CALL SCREEN.
Étape de dialogue
PBO PAI PBO PAI PBO PAI
Ordre INSERT
Ordre DELETE
COMMIT WORK
Processus de mise à jour
UPDATE INSERT DELETE
Processus de base
de données
ã SAP AG 1999
n La mise à jour est un autre moyen de regrouper les modifications d'une base de données à la fin d'une
LUW SAP. Au lieu de transférer les mises à jour directement dans la base, vous saisissez des ordres
de mise à jour dans une log table.
n L'étape "dialogue" de la LUW SAP se termine quand le système atteint l'instruction COMMIT WORK.
Le système R/3 déclenche alors un processus de travail spécial, appelé processus de travail de mise à
jour, qui traite les ordres enregistrés dans la table. La LUW SAP s'achève lorsque la mise à jour de la
base est terminée.
n Les phases "dialogue" et "mise à jour" de la LUW SAP peuvent se dérouler de façon synchrone ou
asynchrone.
n L'avantage de la mise à jour par rapport aux regroupements effectués 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 inconvénient est qu'elle offre moins de performances.
n La mise à jour asynchrone convient lorsque le temps de réponse est un facteur important et que les
modifications sont suffisamment complexes pour justifier l'investissement lié à l'utilisation de la log
table.
n La mise à jour synchrone convient lorsque vous avez immédiatement besoin des données modifiées
et que les modifications sont suffisamment complexes pour justifier l'investissement lié à l'utilisation
de la log table.