BC400 Introduction à ABAP Workbench : concept et ... - Index of - Free

193 downloads 1065 Views 3MB Size Report
17 août 2000 ... BC400. 0-3. SAP AG. Le logo SAP et tous les autres produits, services, logos, ou noms de marques sont également des marques ou marques ...
BC400 Introduction à ABAP Workbench : 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

(C) SAP AG

BC400

0-1

Copyright

Copyright 2000 SAP AG. Tous droits réservés. Toute représentation ou reproduction de ce manuel, même partielle, par quelque procédé et à quelque fin que ce soit, est interdite sans l’autorisation écrite explicite de SAP AG. Les informations contenues dans ce manuel peuvent être modifiées ou complétées sans préavis. Tous droits réservés.

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

(C) SAP AG

BC400

0-3

ABAP Workbench Niveau 2

3 jours BC402 Techniques de programmation ABAP 3 jours BC404 ABAP Objects Programmation orientée objets dans R/3 BC405

3 jours

Reporting dans ABAP Workbench BC410

5 jours

Programmation interactive BC400

5 jours

Introduction à ABAP Workbench MBC40

2 jours

Gestion des projets de développement ABAP

ã SAP AG 1999

(C) SAP AG

BC420 5 jours ABAP Workbench Interface de données 2 jours BC430 Dictionnaire de données ABAP BC460 3 jours Edition et impression de formulaires dans SAPscripts 2 jours CA610 CATT - Test Workbench et Computer Aided Test Tool

BC400

Niveau 3 BC414 2 jours Programmation des mises à jour de la base de données BC415 2 jours ABAP Workbench Interfaces de communication BC425 3 jours Extensions et modifications BC412 2 jours Programmation de dialogues à l'aide des contrôles EnjoySAP BC440 5 jours

BC490 3 jours Analyses des performances ABAP

Développement des applications sur Internet Cours supplémentaires recommandés : Business Process Technologies CA925, CA926, CA927 BC095 (Technologie d'intégration) BC619 (ALE), BC620, BC621

0-4

Connaissances requises

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

ã SAP AG 1999

(C) SAP AG

BC400

0-5

À qui s'adresse ce cours ?

l Participants : n

Membres du projet

l Durée : 5 jours

ã SAP AG 1999

Notes aux participants n

Les supports de cours ne constituent pas un programme d'auto-formation. Ils sont conçus uniquement dans le but de compléter les explications fournies par l'animateur. Un espace est laissé à votre disposition sur ces supports pour vous permettre de prendre des notes.

n

Vous n'aurez probablement pas le temps pendant le cours de terminer tous les exercices. Les exercices fournissent des exemples complémentaires aux sujets discutés pendant ce cours. Vous pouvez également les utiliser comme aide pour développer vos connaissances après la fin du cours.

(C) SAP AG

BC400

0-6

Concept et outils de ABAP Workbench : contenu

l Objectif global du cours l Détail des objectifs l Table des matières l Synoptique l Scénario de gestion l Introduction au cours

ã SAP AG 1999

(C) SAP AG

BC400

1-1

Objectif du cours

À la fin de ce cours, vous serez en mesure : l de comprendre les diverses applications d'ABAP Workbench, notamment n

les différentes méthodes qui facilitent le dialogue avec l'utilisateur et

n

les modalités de dialogue avec la base de données

ã SAP AG 1999

(C) SAP AG

BC400

1-2

Objectifs du cours

À la fin de ce cours, vous serez en mesure : l de créer un programme ABAP comprenant des dialogues utilisateur et des dialogues base de données l de décrire divers objets de développement (objets du Repository) et leur mode d'emploi l de créer des exemples simples d'objets du Repository introduits dans le cours à l'aide des outils adéquats d'ABAP Workbench appropriés à chaque cas

ã SAP AG 1999

(C) SAP AG

BC400

1-3

Table des matières

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

(C) SAP AG

BC400

1-4

Table des matières

Chapitre 11

Réutiliser les composantes

Chapitre 12

Dialogues base de données II (Modifier la base de données)

Chapitre 13

Logistique logicielle et comparaison logicielle

Exercices Solutions Annexes ã SAP AG 1999

(C) SAP AG

BC400

1-5

Scénario de gestion

Aéroport de départ

Ce cours vous permettra de développer plusieurs programmes destinés à assister des agences de voyage. Certains de leurs besoins types nécessitent :

Destination

l

Ville de départ

d'établir des connexions de vol à des dates précises de procéder à des réservations sur des vols spécifiques l de déterminer des informations complémentaires de vol, comme l le prix Ville de destination l la capacité. l

ã SAP AG 1999

(C) SAP AG

BC400

1-6

Déroulement du programme dans un programme ABAP

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

(C) SAP AG

BC400

2-1

Synthèse

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

(C) SAP AG

BC400

2-2

Architecture client / serveur

Présentation Serveur Niveau

SAPGUI

SAPGUI

SAPGUI

Répartiteur

Application Serveur Niveau

Base de données

SAPGUI

SAPGUI

SAPGUI

Répartiteur

Processus de travail

Processus de travail

Processus de travail

Processus de travail

Processus de travail

Processus de travail

Processus de travail

Processus de travail

ã SAP AG 1999

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

(C) SAP AG

BC400

2-3

Vue orientée utilisateur

Présentation Serveur Niveau

Processus de travail

Application Serveur Niveau

Programme ABAP

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.

(C) SAP AG

BC400

2-4

Déroulement du programme : que voit l'utilisateur

Écran de sélection

Boîte noire

Écran

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.

(C) SAP AG

BC400

2-5

Interaction entre les niveaux du serveur

Lancement du programme

Programme ABAP Bloc de traitement ABAP

Table de base de données Bloc de traitement ABAP

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

(C) SAP AG

BC400

2-6

Synthèse

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

n

Dans cette partie du chapitre, l'utilisateur a choisi de lancer un programme là où un identificateur de compagnie aérienne peut être introduit sur l'écran de sélection initial. Le programme utilise par la suite ces informations 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 affiche sous forme de liste pour l'utilisateur.

(C) SAP AG

BC400

2-7

Programme type 1 : lancement du programme

Lancement du programme

Repository

Table de base de données

ã SAP AG 1999

n

Temps

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.

(C) SAP AG

BC400

2-8

Le système charge le contexte du programme

Lancement du programme

Programme ABAP

Repository

Écran de sélection Objets de données

Table de base de données Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

Temps

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.

(C) SAP AG

BC400

2-9

Le runtime system envoie l'écran de sélection

Lancement du programme

Programme ABAP

Objets de données

Table de base de données Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

Temps

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.

(C) SAP AG

BC400

2-10

Saisies d'écran de sélection insérées dans des objets de données

Lancement du programme

Programme ABAP

Objets de données

Table de base de données Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

Temps

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.

(C) SAP AG

BC400

2-11

Le programme demande un enregistrement de données de la base de données

Lancement du programme

Programme ABAP

Objets de données

Table de base de données Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

n

Temps

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.

(C) SAP AG

BC400

2-12

La base de données renvoie un enregistrement de données au programme

Lancement du programme

Programme ABAP

Objets de données

Table de base de données Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

n

Temps

La base de données renvoie au programme l'enregistrement de données demandé et le runtime system s'assure que ces données sont stockées dans les objets de données appropriés. Normalement, une structure est la zone cible pendant l'accès à un enregistrement individuel. La structure contient des variables pour toutes les zones requises par la base de données.

(C) SAP AG

BC400

2-13

Le runtime system envoie une liste

Lancement du programme

Programme ABAP

Objets de données

Table de base de données Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

n

Temps

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.

(C) SAP AG

BC400

2-14

Synthèse

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.

(C) SAP AG

BC400

2-15

Programme type 2 : lancement du programme

Programme ABAP Objets de données

Lancement du programme

Repository Table de base de données

Écran

Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

n

Temps

Lorsque l'utilisateur lance le programme, le contexte du programme est d'abord chargé. Pourtant, notre programme type comporte cette fois trois blocs de traitement, un écran de sélection, un écran, et une variable et deux structures pour objets de données.

(C) SAP AG

BC400

2-16

Le runtime system ABAP envoie un écran

Programme ABAP Objets de données

Lancement du programme

Table de base de données Écran

Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

n

Temps

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.

(C) SAP AG

BC400

2-17

L'utilisateur quitte l'écran de sélection

Programme ABAP Objets de données

Lancement du programme

Table de base de données Écran

Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

n

Temps

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.

(C) SAP AG

BC400

2-18

Le programme demande un enregistrement de données à la base de données

Programme ABAP Objets de données

Lancement du programme

Table de base de données Écran

Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

n

Temps

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.

(C) SAP AG

BC400

2-19

La base de données renvoie l'enregistrement de données

Programme ABAP Objets de données

Lancement du programme

Table de base de données Écran

Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

n

Temps

La base de données renvoie au programme l'enregistrement de données demandé et le runtime system s'assure que ces données sont stockées dans les objets de données appropriés. Normalement, une structure est la zone cible pendant l'accès à un enregistrement individuel. La structure contient des variables pour toutes les zones requises par la base de données.

(C) SAP AG

BC400

2-20

Le programme appelle l'écran

Programme ABAP Objets de données

Lancement du programme

Table de base de données Écran

Bloc de traitement ABAP

Process Before Output

Runtime system ABAP ã SAP AG 1999

n

Temps

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

(C) SAP AG

BC400

2-21

Le runtime system ABAP envoie l'écran de sélection

Programme ABAP Objets de données

Lancement du programme

Table de base de données Écran

Bloc de traitement ABAP

Process Before Output

Runtime system ABAP ã SAP AG 1999

n

Temps

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.

(C) SAP AG

BC400

2-22

L'utilisateur exécute une action utilisateur

Programme ABAP Objets de données

Lancement du programme

Table de base de données Écran

Bloc de traitement ABAP

Process Before Output Process After Input

Runtime system ABAP ã SAP AG 1999

n

Temps

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

(C) SAP AG

BC400

2-23

Le traitement du bloc de traitement ABAP recommence

Programme ABAP Objets de données

Lancement du programme

Table de base de données Écran

Bloc de traitement ABAP

Process Before Output Process After Input

Runtime system ABAP ã SAP AG 1999

n

Temps

Une fois que le bloc de traitement "Process After Input" traité, le programme type continue de traiter le bloc de traitement ABAP qui appelait en premier lieu l'écran.

(C) SAP AG

BC400

2-24

Synthèse

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

(C) SAP AG

BC400

2-25

Table des matières

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

(C) SAP AG

BC400

2-26

Table des matières

Chapitre 11

Réutiliser les composantes

Chapitre 12

Dialogues base de données II (Modifier la base de données)

Chapitre 13

Logistique logicielle et comparaison logicielle

Exercices Solutions Annexes ã SAP AG 1999

(C) SAP AG

BC400

2-27

Introduction à ABAP Workbench

Contenu : l Repository et Workbench l Analyse d'un programme existant l Premier projet : adapter une copie d'un programme existant pour remplir des besoins spécifiques

ã SAP AG 1999

(C) SAP AG

BC400

3-1

Introduction à ABAP Workbench : objectifs

À la fin de ce chapitre, vous serez en mesure : l d'utiliser les différents types de navigation disponibles d'ABAP Workbench pour analyser un programme existant l d'apporter de simples modifications aux dialogues utilisateur d'un programme existant en utilisant les outils Éditeur et Screen Painter ABAP

ã SAP AG 1999

(C) SAP AG

BC400

3-2

Synthèse : Introduction à ABAP Workbench

Repository Repository et et Workbench Workbench Analyser Analyser un un programme programme existant existant Premier Premier projet projet :: adapter adapter un un programme programme existant existant àà des besoins spécifiques des besoins spécifiques

ã SAP AG 1999

(C) SAP AG

BC400

3-3

Repository R/3

Présentation Serveur Niveau

Application Serveur Niveau

Base de données

Programme ABAP

Indépendant du mandant

Dépendant du mandant

Repository

Tables de customizing Tables applicatives

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

(C) SAP AG

BC400

3-4

Structure du Repository

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.

(C) SAP AG

BC400

3-5

Hiérarchie des applications SAP SAP +  +  + 

+  +  + 

Hiérarchie des applications CA AC FI

Composantes inter-applications Gestion comptable - Généralités Comptabilité financière ... Comptabilité financière 'système de base' FBAS ... Gestion comptable grand livre + FI-GL  Consolidation + FI-LC  ... 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.

(C) SAP AG

BC400

3-6

Système d'information du Repository Système d'information du Repository Business Engineering Dictionnaire ABAP Objets de base Tables de base de données Vues Éléments de données Structures Types de table ... Autres objets Zones Programmation Générateur de modules de fonction Bibliothèque de programmes Environnement de programme Sous-objets du programme Objets ABAP Bibliothèque de classes Composantes de classes Composantes d'interfaces Envir. ã SAP AG 1999

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 Ÿ Transaction SE84 dans la zone de commande.

(C) SAP AG

BC400

3-7

Outils de ABAP Workbench

Débogueur

Screen Painter Menu Painter

FI

HR

MM

SD

Object Navigator

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.

(C) SAP AG

BC400

3-8

Structure d'écran dans Object Navigator Afficher liste d'objets

Fermer navigateur Domaine pour l'affichage d'une liste d'objets sous la forme d'une hiérarchie

Clic du bouton droit de la souris

Domaine pour l'affichage ou le traitement d'un objet du Repository

Menu contextuel

Clic du bouton droit de la souris

Menu contextuel

La taille du domaine d'affichage peut être changée

ã SAP AG 1999

n

L'écran d'Object Navigator est divisé en deux domaines : Ÿ Un domaine pour l'affichage d'une liste d'objets comme une hiérarchie Ÿ La fenêtre d'objets, dans laquelle les objets peuvent être affichés et traités.

n

Vous pouvez masquer le domaine de hiérarchie en utilisant le bouton de commande "Fermer navigateur".

n

Vous pouvez afficher la liste d'objets pour l'objet actuellement affiché dans la fenêtre d'objets en utilisant l'icône "Liste d'objets".

n

Vous pouvez séletionner des fonctions du menu contextuel dans les deux domaines d'écran. Vous pouvez uniquement sélectionner les fonctions qui correspondent à l'affichage ou le traitement de l'objet sur lequel le curseur est positionné. Cliquez sur le bouton droit de la souris pour afficher le menu contextuel. (Cliquez sur le bouton de gauche si vous avez paramétré votre souris pour les gauchers).

(C) SAP AG

BC400

3-9

Fonctions de navigation du domaine de hiérarchie

classe de développement

BC400

Hiérarchie des applications Classe de développement Programme Groupe de fonctions Classe Objets locaux

Liste d'objets précédente BC400 Types d'objets de programme Objets du dictionnaire Programmes SAPBC400WBD_GETTING_STA SAPBC400WBT_GETTING_STA Groupes de fonctions BC400 Classes CL_BC400

Liste d'objets suivante Liste d'objets supérieure Favoris Ajouter Traiter Programmes Historique Actualiser liste d'objets

ã SAP AG 1999

n

Les objets du Repository sont organisés dans la hiérarchie. n

Chaque composante applicative consiste en de multiples classes de développement.

n

Chaque classe de développement peut contenir plusieurs types différents d'objets du Repository : programmes, groupes de fonctions, objets du dictionnaire ABAP, ...

n

Chaque objet du Repository peut comporter différents types d'objets : Les programmes peuvent contenir des données globales, des types, des zones, des évènements, ... Les groupes de fonctions peuvent contenir des données globales, des modules de fonction, ...

n

Vous pouvez introduire le type de la liste d'objets et le nom d'objets dans la partie supérieure du domaine de hiérarchie. La liste d'objets est ensuite affichée dans le domaine de hiérarchie.

n

Un double-clic sur un sous-objet de la liste d'objets affiche la liste d'objet pour l'objet sélectionné dans le domaine de hiérarchie.

n

Un double-clic sur un objet qui n'a pas de liste d'objets affiche cet objet dans la fenêtre d'objets.

n

Vous pouvez utiliser les icônes pour naviguer en historique ou en hiérarchie entre les listes d'objets.

n

Vous pouvez ajouter des listes d'objets que vous traitez fréquemment dans vos favoris.

(C) SAP AG

BC400

3-10

Affichage des objets de programme dans la fenêtre d'objets 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

Éditeur Éditeur

Éditeur Screen Painter

Navigation : un double-clic sur un objet de programme existant Navigation: lance l'outil Workbench correspondant dans la fenêtre d'objets et vous amène à l'endroit correct de l'objet. Navigation forward : : si un objet n'existe pas encore, vous créez Navigation 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.

(C) SAP AG

BC400

3-11

Analyse d'un programme existant

Repository Repository et et Workbench Workbench Analyse Analyse d'un d'un programme programme existant existant 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

(C) SAP AG

BC400

3-12

Déterminer le périmètre fonctionnel : exécuter un programme Écran de sélection

Écran

Liste

Compagnie aérienne Compagnie aérienne

ID AA American Airlines USD

Nom Devise locale

Système F1 Statut Info techniques Nom du programme Nom d'écran (= numéro de dynpro)

Nom de zone Type de zone

ã SAP AG 1999

n

Il existe plusieurs manières de démarrer un programme : Ÿ Vous pouvez démarrer un programme à partir de la liste d'objets de Object Navigator en utilisant le menu contextuel ou en utilisant l'icône "Test". Ÿ Si le programme possède un code de transaction, vous pouvez également l'ajouter au menu. Vous cliquez alors sur l'option du menu avec la souris. Ÿ Vous pouvez ajouter des programmes à la liste des favoris sur l'écran initial. Les programmes peuvent également devenir disponibles en utilisant les groupes d'activités de l'écran initial. Vous sélectionnez ensuite le programme dans la hiérarchie de l'écran initial.

n

Vous pouvez déterminer le périmètre fonctionnel en exécutant le programme.

n

Quel que soit l'écran, vous pouvez accéder aux informations sur le nom du programme et le numéro d'écran en utilisant Système -> Statut. Un écran de sélection standard a le numéro d'écran 1000.

n

Vous pouvez accéder aux informations concernant le nom de zone et le type de zone de n'importe quelle zone de l'écran en utilisant F1 -> Info. techniques.

(C) SAP AG

BC400

3-13

Vue statique des objets de programme : liste d'objets

SAPBC400WBT_GETTING_STARTED Types d'objets de programme Structures du dictionnaire SBC400_CARRIER Zones PA_CAR WA_BC400 É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.

(C) SAP AG

BC400

3-14

Démarrage de programmes SAPBC400WBT_GETTING_STARTED Clic sur le bouton droit Types d'objets de programme Exécuter Structures du dictionnaire Traitement direct Zones PA_CAR Débogage WA_BC400 Événements START-OF-SELECTION Écrans 0100 1000 Includes

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

(C) SAP AG

BC400

3-15

Déterminer l'utilisation séquentielle d'objets de programme : mode débogage X

SAP

Débogueur ABAP



chws

Point de surveillance Zones Programme principal

Pas Code source de

à pas

ZJJ_KURS_000 ZJJ_FORMS

Point d'arithmétique fixe

$

15 -

30

#

SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 WHERE carrid = pa_car. " IF sy-subrc = 0. MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. CALL SCREEN 100. MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. 1 - 4 $ LH

Variante wa_sbc400-carrid

SY-SUBRC

0

SY-TABIX

Variante

0

SY-DBCNT BIN (1) (000)

ã SAP AG 1999

n

ds0025 INS

1

o

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

(C) SAP AG

BC400

3-16

Points d'arrêt en mode débogage X

SAP

Débogueur ABAP



chws

Point de surveillance Zones ZJJ_KURS_000

Programme principal

Point d'arithmétique fixe

Continuer ZJJ_FORMS Code source de

$

15 -

30

#

"SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 WHERE carrid = pa_car. IF sy-subrc = 0. MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. STOP CALL SCREEN 100. MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. 1 - 4 $ LH

Variante wa_sbc400-carrid

SY-SUBRC

0

SY-TABIX

Variante

0

SY-DBCNT BIN (1) (000)

ã SAP AG 1999

ds0025 INS

1

o

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.

(C) SAP AG

BC400

3-17

Syntaxe générale ABAP TABLES DATA PARAMETERS

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

START-OF-SELECTION START-OF-SELECTION. SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 WHERE carrid = pa_car. IF sy-subrc = 0. IF MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. CALL SCREEN 100. MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. WRITE WRITE WRITE ENDIF. ENDIF

Mot-clé ABAP

wa_sbc400-carrid COLOR COL_KEY. wa_sbc400-carrname. wa_sbc400-currcode.

Options (dépendantes du mot-clé)

Point (termine toutes les instructions ABAP)

ã SAP AG 1999

n

Les programmes ABAP sont composés d'instructions individuelles.

n

Chaque instruction se termine par un point.

n

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

n

Les mots doivent toujours être séparés d'au moins un espace.

n

Vous pouvez indenter les instructions.

n

Les instructions peuvent occuper plus d'une ligne.

n

Vous pouvez avoir de multiples instructions sur une seule ligne.

(C) SAP AG

BC400

3-18

Commentaires et chaîne d'instructions

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

Commentaire

SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 WHERE carrid = pa_car. IF sy-subrc = 0. MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. CALL SCREEN 100. " Process screen 100 Commentaire MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. WRITE:/ WRITE: / wa_sbc400-carrid COLOR COL_KEY,, wa_sbc400-carrname,, wa_sbc400-currcode.. ENDIF.

Chaîne d’instructions

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

(C) SAP AG

BC400

3-19

Navigation dans l'Éditeur Définition de table de base de données dans le dictionnaire ABAP

Définition de structure (ou de zone structurée)

Do ub Do leub Cl lei START-OF-SELECTION. c Cl ic scarr SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 wa_sbc400 WHERE carrid = pa_car. IF sy-subrc = 0. MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. Double-Clic CALL SCREEN 100 100. Définition d'écran MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. (dans Screen Painter)

WRITE: / wa_sbc400-carrid COLOR COL_KEY, wa_sbc400-carrname, wa_sbc400-currcode.

STOP

ENDIF.

ã SAP AG 1999

n

Vous pouvez afficher des informations détaillées sur de simples objets dans l'Éditeur en doublecliquant : Ÿ 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é.

(C) SAP AG

BC400

3-20

Documentation mots-clés Aide

i

Aide de l'Éditeur Synthèse ABAP WRITE Terme ABAP 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.

(C) SAP AG

BC400

3-21

Code source de programme type TABLES DATA PARAMETERS

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

START-OF-SELECTION. SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 WHERE carrid = pa_car. IF sy-subrc = 0. MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. CALL SCREEN 100. MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. WRITE: / wa_sbc400-carrid COLOR COL_KEY, wa_sbc400-carrname, wa_sbc400-currcode. ENDIF.

1

2

3

4

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

(C) SAP AG

BC400

3-22

Objets de données et écrans de sélection TABLES DATA PARAMETERS

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

1

Lorsque vous générez un programme en utilisant la fonction "Activer", le système génère automatiquement un écran de sélection d'un type de zone de saisie pa_car.

Lorsque vous exécutez un programme, toutes les variables nécessaires, structures, et écrans de sélection sont créés. Programme ABAP

sbc400_carrier Objets de données

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

(C) SAP AG

BC400

3-23

Dialogues de base de données 1 :

Programme ABAP Objets de données

Table de base de données SCARR

pa_car pa_car wa_sbc400 wa_sbc400 Bloc de traitement ABAP

SELECT SINGLE * FROM scarr Système d'exécution INTO CORRESPONDING FIELDS ABAP OF wa_sbc400 CARRID = pa_car. pa_car WHERE carrid IF sy-subrc = 0. ...

2

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

(C) SAP AG

BC400

3-24

Dialogues de base de données 2 :

Programme ABAP Objets de données

Table de base de données SCARR

pa_car pa_car wa_sbc400 wa_sbc400 Bloc de traitement ABAP

SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 WHERE carrid = pa_car. IF sy-subrc = 0. ...

2

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

(C) SAP AG

BC400

3-25

Traitement des écrans

Programme ABAP Objets de données

sbc400_carrier Bloc de traitement ABAP

CALL SCREEN 100.

Process Before Output

3

Process After Input

Runtime system ABAP ã SAP AG 1999

Temps

n

L'instruction CALL SCREEN appelle un écran.

n

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

n

Un écran est un objet du Repository indépendant, mais qui appartient au programme.

n

Vous pouvez définir des zones de saisie sur un écran qui se réfèrent au dictionnaire ABAP. Les écrans exécutent automatiquement des contrôles de cohérence sur toutes les saisies et fournissent tous les dialogues d'erreur qui s'avéreraient nécessaires. Par conséquent, les écrans ne sont pas que des simples modèles pour introduire des données ; ils sont en fait des programmes dynamiques (dynpros).

n

L'instruction TABLES déclare un objet de structure qui sert d'interface à l'écran. Toutes les données de cette structure s'insèrent automatiquement dans leurs zones d'écran correspondantes lorsque l'écran est appelé par l'instruction CALL SCREEN. Les données introduites par l'utilisateur à l'écran sont transférées vers leurs zones correspondantes du programme après chaque action utilisateur (après avoir choisi Saisir, par exemple).

(C) SAP AG

BC400

3-26

Création de listes

START-OF-SELECTION. SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 WHERE carrid = pa_car. IF sy-subrc = 0. MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. CALL SCREEN 100. MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. WRITE WRITE: / wa_sbc400-carrid COLOR COL_KEY, wa_sbc400-carrname, wa_sbc400-currcode. ENDIF.

4

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

(C) SAP AG

BC400

3-27

Synthèse : Introduction à ABAP Workbench

Repository Repository et et Workbench Workbench Analyser Analyser un un programme programme existant existant Premier Premier projet projet :: adapter adapter un un programme programme existant existant àà des besoins spécifiques des besoins spécifiques

ã SAP AG 1999

(C) SAP AG

BC400

3-28

Premier projet : Programme source Compagnie aérienne Compagnie aérienne

LH

ID

LH

Nom

LUFTHANSA

LH Lufthansa DEM

Devise locale DEM

Copie adaptée : Compagnie aérienne Compagnie aérienne

LH

ID

LH

Nom

LUFTHANSA

LH Lufthansa DEM

Devise locale DEM Utilisateur

WALTERS

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.

(C) SAP AG

BC400

3-29

Transporter des objets du Repository

Ordre de modification

FI

HR

MM FI

SD

HR

MM

WM MM

SD Cust.

WM MM Cust.

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.

(C) SAP AG

BC400

3-30

Exemple de projet : cours BC400 Horaire :

Lundi

Mardi

Mercredi

Jeudi

Vendredi

Chef de projet : CARSON Équipe : CARSON BC400-00 BC400-01 BC400-02 BC400-03 ... Activités des employés (ici : exercices)

Fin du développement

ã SAP AG 1999

n

Chaque projet requiert les informations suivantes : Ÿ Nom du chef de projet ? Ÿ Quel périmètre fonctionnel doit être couvert par l'objet ? Quels objets du Repository ont été modifiés ou créés ? Ÿ Quelle est la période du projet ? Ÿ Noms des participants au projet ?

n

À titre d'exemple, nous allons organiser le cours BC400 comme un projet. Ÿ Le professeur est le chef de projet. Ÿ Les programmes doivent être développés pour chaque sujet. (Il s'agit de programmes types du professeur et d'exercices de groupes d'exercices) Ÿ Ce projet doit être terminé vendredi à 15h. Ÿ Les noms d'utilisateur des participants (dans ce cas, des groupes d'exercices) sont BC400-XX.

(C) SAP AG

BC400

3-31

Représentation du projet dans Workbench Organizer

Chef de projet : CARSON Équipe : CARSON

Workbench Organizer : demandes Ordres de modification de l'utilisateur BC400-00

Chef de projet

Modifiable Transportable

BC400-00

Numéro de la modification

BC400-01

Numéro de membre d'équipe (affecté par le système) (Tâche)

BC400-02

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

BC400-03 ...

Objets du Repository modifié ou créé par BC400-00

Programme ABAP IT3K900054 BC400-01 IT3K900055 BC400-02 IT3K900056 BC400-03 IT3K900057

ã SAP AG 1999

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 (K9. Exemple : C11K900001). 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.

(C) SAP AG

BC400

3-32

Compléter le processus de développement Horaire :

...

Chef de projet : CARSON

Jeudi

Vendredi

L'ordre est libéré

Contrôle de qualité de l'ensemble du projet Documentation du projet

Fin du développement

Équipe : CARSON BC400-00 BC400-01 BC400-02 BC400-03 ...Contrôle de qualité de tout le Repository par BC400-00 Documentation de la tâche complète

ã SAP AG 1999

La tâche est libérée

n

Lorsque le développement est terminé, le développeur effectue un dernier contrôle de qualité et libère la tâche. Les objets et les blocages d'objets sont transférés de la tâche vers l'ordre de modification. Cependant, tous les employés affectés à l'ordre de modification peuvent toujours modifier l'objet car le Workbench Organizer créera automatiquement une nouvelle tâche si cela s'avère nécessaire.

n

Lorsque le projet est terminé, le chef de projet vérifie la cohérence de l'ordre et le chef de projet effectue l'ordre de modification. Les blocages des objets de l'ordre sont libérés.

n

Les objets du Repository sont ensuite exportés vers le répertoire central des transports.

n

Les objets ne sont pas importés automatiquement dans le système cible. Par contre, l'administrateur système utilise le programme de contrôle du transport tp au niveau du système d'exploitation. Ensuite, le développeur vérifie le protocole d'importation.

(C) SAP AG

BC400

3-33

Copie de programmes Créer Modifier Afficher Contrôler Activer Exécuter Copier ...

Info techniques Programme source SAPBC400WBT_GETTING_STARTED Programme cible

ZBC400_00_GETTING_STARTED

Copier Infos techniques ! ! !

!

Source Éléments de texte Documentation Variantes Interfaces Écrans Includes Copier

Ordres (Organizer)

ã SAP AG 1999

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.

(C) SAP AG

BC400

3-34

Sauvegarde de programmes

Créer une entrée du catalogue d'objets Objet

R3TR PROG ZBC400_00_GETTING_STARTED

Attributs Classe de développement ZBC400_00 Personne responsable

BC400-00

Système original

IT3

Langue originale

DE

Les nouveaux programmes doivent être affectés à une classe de développement

Objet local

ã SAP AG 1999

n

Affectez le programme à une classe de développement, afin d'être en mesure de le sauvegarder. Votre nom est automatiquement entré dans le système comme personne responsable de la nouvelle copie du programme. Vérifiez si toutes les entrées sont correctes et ensuite choisissez Sauvegarder.

(C) SAP AG

BC400

3-35

Affectation d'un ordre de modification Workbench Organizer : ordres transportables Source de rapport ZBC400_00_GETTING_STARTED Ordre IT3K900051

Ordre de modification transportable

Exercices pour les participants du cours BC400 en date du 8 mai 2000 Mes ordres

Workbench Organizer : ordres transportables Modifier des ordres impliquant l'utilisateur BC400-0 Modifiable

Double-clic sur le numéro de l'ordre

Transportable IT3K900051 CARSON IT3K900052 CARSON IT3K900053 BC400-00 IT3K900054 BC400-01

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

(C) SAP AG

BC400

3-36

Adaptatation des désignations Types d'objets du programme Double-clic Sélection d'objets Nom du programme ZBC400_00_GETTING_STARTED

Programme ... Attributs

ABAP : attributs de programme ... Titres Adapter titre Attributs

Modifier la langue originale en langue de travail

ã SAP AG 1999

n

Vous pouvez adapter les désignations (= titre) comme suit : Ÿ Double-cliquez sur les types d'objets de programme dans la liste d'objets d'Object Navigator. Ÿ Choisissez les attributs. Ÿ Cliquez sur l'icône "Modifier". Ÿ Si la langue originale du programme source n'est pas identique à la langue de travail, une boîte de dialogue apparaît pour vous demander si vous désirez modifier le titre dans la langue originale ou si vous désirez modifier la langue originale. Ÿ Vous pouvez désormais adapter le titre.

n

Le titre modifié apparaît sous forme de désignation à côté du nom du programme dans la liste d'objets d'Object Navigator.

(C) SAP AG

BC400

3-37

Adaptation du code source

START-OF-SELECTION. SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 WHERE carrid = pa_car. IF sy-subrc = 0. MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. CALL SCREEN 100. MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. WRITE: / wa_sbc400-carrid COLOR COL_KEY, wa_sbc400-carrname, wa_sbc400-currcode. ULINE. WRITE wa_sbc400-uname. ENDIF. Contrôle de syntaxe

ã SAP AG 1999

n

Pour adapter le code source, naviguez dans l'Éditeur (menu contextuel).

n

Pour adapter la liste, ajoutez une instruction ULINE et une instruction WRITE. Vous trouverez des informations complémentaires sur ces instructions dans la documentation mots-clés.

n

Vous pouvez exécuter un contrôle de syntaxe après avoir modifié le code source.

(C) SAP AG

BC400

3-38

Modification des écrans ZBC400_00_GETTING_STARTED Types d'objets de programme Structures du dictionnaire Zones Événements Écrans 0100 Clic sur le bouton droit 1000

Modifier

Mise en page

Compagnie aérienne ID sbc400_carrier

Nom Devise locale

Zone de saisie et descripteur de zone

Utilisateur

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

(C) SAP AG

BC400

3-39

Sauvegarde et activation

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

n

Un contrôle de syntaxe lancé à partir de l'Éditeur se rattache au contenu actuel de l'Éditeur.

n

Dès que vous avez sauvegardé le programme, ce code source est visible dans tout le système. Vous pouvez utiliser le menu contextuel pour exécuter un contrôle de syntaxe qui englobe toutes les composantes du programme. Le lancement du programme à partir du menu contextuel de la liste d'objets s'assure que la version active est lancée.

n

Dès que vous avez activé le programme, la version active peut être exécutée dans tout le système.

n

Vous pouvez exécuter un contrôle de programme étendu pour des programmes activés en utilisant le menu contextuel ou l'option du menu. Ces contrôles sont considérablement plus étendus que le contrôle de syntaxe.

(C) SAP AG

BC400

3-40

Introduction à ABAP Workbench : résumé du chapitre

Vous êtes maintenant capable : l d'utiliser les différents types de navigation disponibles de ABAP Workbench pour analyser un programme existant l d'apporter de simples modifications aux dialogues utilisateur d'un programme existant en utilisant les outils Éditeur et Screen Painter ABAP

ã SAP AG 1999

(C) SAP AG

BC400

3-41

Exercices

(C) SAP AG

BC400

3-42

(C) SAP AG

BC400

3-43

Chapitre : ABAP Workbench Sujet : Analyser un programme

À la fin de ces exercices, vous serez en mesure : • d’utiliser les fonctions de navigation pour examiner la structure d’un programme

Le programme SAPBC400WBT_GETTING_STARTED contient un écran de sélection qui permet à l’utilisateur d’introduire le code d’une compagnie aérienne. Les coordonnées de la compagnie aérienne apparaissent ainsi à l’écran. Lorsque l’utilisateur appuie sur Enter, les données s’affichent sous forme de liste. Naviguez à travers le code du programme et les autres composantes afin de comprendre la structure et le déroulement du programme. 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-2

Exécutez le programme pour comprendre comment il fonctionne. Une zone de saisie apparaît sur l’écran de sélection. 1-2-1 Quelles informations devez-vous fournir au programme ? (Utilisez le bouton aide F1 pour la zone de saisie) 1-2-2 Quelles valeurs pouvez-vous introduire ? (Utilisez l’aide à la saisie F4) 1-2-3 Quelles informations le programme fournit-il ? 1-2-4 Quels types de dialogues utilisateur le programme contient-il ? Trouvez le numéro de l’écran de sélection et l’écran dynpro en sélectionnant Système → Statut.

(C) SAP AG

BC400

3-44

1-2-5 Quels sont les noms des zones de saisie sur l’écran de sélection et des zones de sortie sur l’écran ? Pour trouver les noms, utilisez le bouton d’aide F1 pour chaque zone et sélectionnez Infos techniques. 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 ?

1-4

Naviguez jusqu’au code source du programme. 1-4-1 Quelle instruction forme la liste ? Ouvrez la documentation mots-clés pour cette instruction. Comment créez-vous un renvoi à la ligne automatique ? 1-4-2 Quelle instruction est responsable du dialogue base de données ? À partir de quelle table de la base de données se lisent les données ? Naviguez jusqu’à la définition de la table de base de données. Quels types de colonnes se trouvent dans la table ? 1-4-3 Une seule ligne est lue à partir de la table de base de données. Dans quel objet de données se trouve l’information indiquant quelle ligne doit être lue ? Quand se complète la variable comportant les informations sur la ligne à lire de la base de données ?

(C) SAP AG

BC400

3-45

Chapitre : ABAP Workbench Sujet : Adapter un programme à des besoins spécifiques

À la fin de ces exercices, vous serez en mesure : • de copier des programmes et les modifier en utilisant l’Éditeur et Screen Painter ABAP ; • d’utiliser le contrôle de syntaxe pour identifier de simples erreurs.

Programme : Modèle :

ZBC400_##_GETTING_STARTED SAPBC400WBT_GETTING_STARTED

Solution modèle :

SAPBC400WBS_GETTING_STARTED

2-1

Copiez le programme SAPBC400WBT_GETTING_STARTED avec toutes ses composantes vers ZBC400_##_GETTING STARTED et affectez-le à votre classe de développement ZBC400_## et l'ordre de modification de votre projet, "BC400…". (## est votre numéro de groupe.)

2-2

Complétez le programme comme suit : 2-2-1 Ajoutez l’instruction 'ULINE.' au programme et effectuez un contrôle de syntaxe. Faites délibérément une erreur de syntaxe et utilisez le contrôle de syntaxe pour la retrouver. Activez le programme et redémarrez-le. Quelles sont les modifications ? Lancez le contrôle étendu du programme. 2-2-2 Modifiez le programme de sorte que des zones de saisie apparaissent à l’écran pour le nom d’utilisateur, l’heure et la date. Naviguez jusqu’au Screen Painter en double-cliquant sur le numéro d’écran. Ceci vous amène à la logique d’exécution de l’écran. Vérifiez que l’éditeur graphique est activé (Utilitaires →Options). Lancez l’éditeur graphique en sélectionnant le bouton de commande adéquat de la barre d’outils d’application. Vérifiez que vous êtes en mode modification. Définissez les zones supplémentaires conformément au dictionnaire ABAP. Comme structure de référence, utilisez SBC400_CARRIER et sélectionnez les zones UNAME, UZEIT et DATUM. Activez l’écran.

(C) SAP AG

BC400

3-46

2-3

(C) SAP AG

Affichez les zones supplémentaires dans la liste. Utilisez l’instruction WRITE. Affichez les données sur une nouvelle ligne, séparée des autres zones par une ligne horizontale. À cet effet, utilisez les mots-clés ABAP SKIP et ULINE. Vérifiez les erreurs de syntaxe de votre programme, ensuite activez-le, et démarrez-le.

BC400

3-47

Solutions Chapitre : ABAP Workbench Sujet : Analyser un programme

1-2

Analyse par l’exécution d’un programme : 1-2-1 Vous devez ajouter le code d’une compagnie aérienne au programme. Ces informations peuvent être affichées à partir de la zone de saisie en utilisant F1. 1-2-2 Les valeurs autorisées ici dépendent du contenu de la table de base de données SCARR. Vous pouvez afficher l’aide à la saisie depuis la zone de saisie en utilisant F4. 1-2-3 Le programme affiche des informations détaillées sur la compagnie aérienne sélectionnée. Ces informations s’affichent d’abord à l’écran et ensuite sous forme de liste. 1-2-4 Le programme contient un écran de sélection comportant le numéro de dynpro 1000, un écran numéro 100 et une liste. 1-2-5 Le nom de zone de la zone de saisie sur l’écran de sélection est pa_car et les noms des zones de sortie sur l’écran sont sbc400_carriercarrid, sbc400_carrier-carrname et sbc400_carriercurrcode. Vous pouvez afficher les noms de zone en utilisant F1 → Infos techniques, ensuite regardez la boîte portant l’intitulé Description de zone pour batch input.

1-3

Analyse avec la liste d’objets du programme. 1-3-1 Le programme a les structures sbc400_carrier et wa_sbc400, et l’objet de données élémentaire pa_car. 1-3-2 La variable pa_car appartient à la zone de saisie du même nom. 1-3-3 L’instruction CALL SCREEN 100 lance Dynpro 100. 1-3-4 Le nom de zone apparaît dans une zone de saisie au-dessus du domaine réservé à la structure d’écran.

1-4 1-4-1 La liste est structurée en utilisant l’instruction WRITE. Le symbole / placé après l’instruction WRITE crée un renvoi à la ligne automatique. 1-4-2 L’instruction SELECT est responsable du dialogue base de données. Les données se lisent à partir de la table de base de données SCARR. Le nom de la table de base de données est spécifié dans la clause FROM de l’instruction SELECT. La table de base de données a les zones MANDT, CARRID, CARRNAME, CURRCODE et URL. 1-4-3 Les informations sur la ligne à lire se trouvent dans l’objet de données pa_car. Il se trouve dans la clause WHERE de l’instruction SELECT. La (C) SAP AG

BC400

3-48

valeur de saisie de l’écran de sélection remplit automatiquement l’objet de données pa_car dès que l’utilisateur sélectionne la fonction Exécuter sur l’écran de sélection.

(C) SAP AG

BC400

3-49

Chapitre : ABAP Workbench Sujet : Adapter un programme à des conditions exceptionnelles

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.

* Éditer les données dans la liste. WRITE: / wa_sbc400-carrid COLOR COL_KEY, wa_sbc400-carrname, wa_sbc400-currcode. * Ajouter une ligne vide. (C) SAP AG

BC400

3-50

SKIP. * Ajouter une ligne horizontale. ULINE. * Éditer le nom de l'utilisateur, l'heure et la date sur la liste WRITE: / wa_sbc400-uname, wa_sbc400-uzeit, wa_sbc400-datum. ENDIF.

Dynpro 100: Nouvelles zones sur dynpro 100 : SBC400_CARRIER-UNAME SBC400_CARRIER-UZEIT SBC400_CARRIER-DATUM

(C) SAP AG

BC400

3-51

Instructions ABAP et déclarations de données

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

(C) SAP AG

BC400

4-1

Instructions ABAP et déclarations de données : objectifs du chapitre

À la fin de ce chapitre, vous serez en mesure : l de décrire les différents types de données différents et leur utilisation l de définir des objets de données élémentaires, des structures et des tables internes l d'utiliser le mode débogage pour observer comment les valeurs des objets de données individuels changent lors du traitement l de programmer plusieurs opérations importantes impliquant des objets de données, et l de trouver des informations sur les nombreux codes retour utilisés par les instructions ABAP et de les évaluer dans des programmes. ã SAP AG 1999

(C) SAP AG

BC400

4-2

L'architecture client/serveur R/3

Programme ABAP Code Source ABAP

Runtime system ABAP

ã SAP AG 1999

n

Le contenu de ce chapitre se concentre sur la définition des objets de données et des instructions ABAP déterminées.

(C) SAP AG

BC400

4-3

Synthèse : types

Types Types Objets ées donn Objets de de données données Attributs Attributs des des instructions instructions ABAP ABAP

ã SAP AG 1999

(C) SAP AG

BC400

4-4

Utiliser les types Les types décrivent les attributs de : Zones d'entrée/sortie Paramètres d'interface pour des sous-programmes

Objets de données

Programme ABAP Code Source ABAP

Interface Sousprogrammes

Paramètres d'interface pour des fonctions/méthodes

ce r fa de e t e In ul ion d t Mo onc f

Fonction fonctions

ã SAP AG 1999

n

Les types décrivent les attributs Ÿ des zones de saisie et de sortie sur les écrans, Ÿ des objets de données Ÿ des paramètres d'interface : les contrôles de types sont exécutés chaque fois qu'une fonction ou qu'un sous-programme est appelé, en accord avec le type du paramètre d'interface. Des conflits de type sont déjà identifiés pendant le processus d'édition et les erreurs de syntaxe appropriées affichées.

(C) SAP AG

BC400

4-5

Types de données locaux et généraux Les types peuvent être définis de manière locale dans un programme ou de manière centrale dans le dictionnaire

Types locaux : Attributs techniques uniquement Programme ABAP Code Source ABAP

Interface Sousprogramme

Types globaux dans le dictionnaire ABAP Attributs techniques et sémantiques ce rfa de e t In ules on i od ct M f on Groupe de fonctions

ã SAP AG 1999

n

Les types locaux sont utilisés dans des programmes Ÿ si seuls des attributs techniques sont nécessaires et qu'aucun attribut sémantique n'est requis et Ÿ si les types sont uniquement utilisés localement dans un programme.

n

Types globaux ( = types du dictionnaire ABAP) sont utilisés Ÿ si vous souhaitez utiliser les types de manière externe (par exemple, pour définir les paramètres d'interface des fonctions générales ou les objets de données du programme qui servent d'interface à la base de données ou au serveur de présentation), Ÿ si vous souhaitez également des informations sémantiques (par exemple, sur les écrans avec des zones de saisie et de sortie).

n

Vous trouverez des informations complémentaires sur le stockage central des informations sémantiques dans ce chapitre.

(C) SAP AG

BC400

4-6

Utilisation des types élémentaires du dictionnaire Descripteur de zone Zone de saisie

Élément de données : type technique Descripteur de zone Documentation de zones (Aide F1) Aide à la recherche (Aide F4)

Compagnie aérienne

F1 Aide Identificateur de la compagnie aérienne

Nom abrégé

Cette zone contient l'identificateur de la compagnie aérienne

Aide d'applications

Info techniques

Variable de zone de saisie

ã SAP AG 1999

ID

Compagnie aérienne

AA AF BA DL LH NU QF SA SQ UA

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

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.

(C) SAP AG

BC400

4-7

Recherche des types du dictionnaire ABAP 1

Do ub le -

Cl ic

DATA wa_flight_occ TYPE sbc400focc

F1 Aide

Infos techniques

Élément de données S_CARR_ID

DoZones ub le Cli

Infos techniques

S_CARR_ID

types de zone

c CARRID S_CARR_ID CONNID ...

Do u

SBC400_CARRIER CARRID

bl eCl ic

Données de zone Structure Nom de zone Élément de données

Type de structure SBC400FOCC

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

(C) SAP AG

BC400

4-8

Recherche des types du dictionnaire ABAP 2 Hiérarchie des applications Sélectionner sous-arbre Système d'information Système d'information du Repository Business Engineering Dictionnaire ABAP Système d'information du Repository : éléments de données Objets de base Tables de base de données Vues Éléments de données Sélections standard Structures Élément de données Types de table Domaines Courte description

Autres objets Zones Programmation Objets ABAP Environnement

Descripteur de zone Type de données Longueur Classe de développement

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

(C) SAP AG

BC400

4-9

Types de données locaux dans les programmes Aide à la déclaration de types de données locaux

F1 TYPES TYPE . Types: Do u Aide à la déclaration de types de données locaux

F1 TYPE DATA DATA: TYPE .Double-Clic

F1

bl

eCl ic Navigation vers des déclarations de types de données locaux ou des déclarations de types de données du dictionnaire ABAP

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)

(C) SAP AG

BC400

4-10

Synthèse : Objets de données

Types Types Objets ées donn Objets de de données données Objets ées élémentaires émentaires donn él Objets de de données données élémentaires Structures Structures Tables Tables internes internes Attributs Attributs des des instructions instructions ABAP ABAP

ã SAP AG 1999

(C) SAP AG

BC400

4-11

Définition d'objets de données

. DATA: TYPE .

DATA: LIKE .

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

(C) SAP AG

BC400

4-12

Synthèse : Objets de données élémentaires

Types Types Objets ées donn Objets de de données données Objets ées élémentaires émentaires donn él Objets de de données données élémentaires Structures Structures Tables Tables internes internes Attributs Attributs des des instructions instructions ABAP ABAP

ã SAP AG 1999

(C) SAP AG

BC400

4-13

Objets de données dans une liste d'objets d'un programme SAPBC400WBT_GETTING_STARTED Types d'objets de programme Structures du dictionnaire Clic sur le bouton droit Zones PA_CAR WA_BC400 Clic sur le bouton droit Événements START-OF-SELECTION Écrans 0100 1000

Créer Modifier Afficher Cas d'emploi

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

(C) SAP AG

BC400

4-14

Définition d'objets de données élémentaires

Programme ABAP

carrid counter

s_carr_id

DATA: carrid counter

TYPE s_carr_id, TYPE I.

ã SAP AG 1999

n

Règles d'appelation des objets de données : - un nom peut comporter 30 caractères maximum (lettres, nombres, ou symboles). - les symboles suivants NE SONT PAS autorisés : ( ) +. , : - SPACE est une zone prédéfinie.

n

Pour des raisons de compatibilité, il est encore possible de construire des objets de données dans l'instruction DATA sans devoir d'abord définir le type localement dans le programme avec une instruction TYPES. Outre les informations du type, des valeurs par défaut sont également définies pour les types génériques suivants : Ÿ Avec des types de données P,N,C, et X, vous pouvez indiquer une longueur (en octets) entre parenthèses après le nom du type. Si aucune longueur n'est indiquée, la longueur par défaut de ce type de données est utilisée. Vous pouvez trouver les longueurs standard dans la documentation mots-clés pour TYPES et DATA. Ÿ Avec un type de données P, vous pouvez utiliser l'option DECIMALS pour déterminer le nombre de décimales qui devrait être utilisé (jusqu'à un maximum de 14). Si cette option manque, le nombre de décimales est mis à zéro. Ÿ Si aucun type n'est indiqué, la zone deviendra automatiquement une zone de type C.

(C) SAP AG

BC400

4-15

Littéraux et constantes

CONSTANTS TYPE VALUE .

CONSTANTS: PI TYPE P DECIMALS 4 VALUE '3.1415', BOSS(4) TYPE C VALUE 'Hugo'.

Littéral numérique 715, -431 Nombre entier (un signe moins est placé en face de nombres négatifs) Littéral alphanumérique 'abc', '2.17', '1.213E15', '0FFF', 'A''B' Séquence de caractères terminée par des guillemets simples, 255 caractères max.

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

(C) SAP AG

BC400

4-16

Modification des variables : copie et initialisation 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 LH 0000

Lancement du programme c_qf QF

MOVE c_gf TO gd_carrid1.

QF

LH

0000

gd_carrid2 = gd_carrid1.

QF

QF

0000

ADD 1 TO counter.

QF

QF

0001

CLEAR CLEAR: gd_carrid1, gd_carrid2, counter.

0000

Programme ABAP

Runtime system ABAP Temps ã SAP AG 1999

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.

(C) SAP AG

BC400

4-17

Exécution des calculs COMPUTE

exécute des calculs (le mot-clé est facultatif)

Déclarations de données : DATA: gd_max TYPE sbc400focc-seatsocc, gd_occ TYPE sbc400focc-seatsmax, gd_percentage TYPE sbc400focc-percentage.

COMPUTE

gd_percentage = gd_occ * 100 / gd_max.

* Seconde possibilité du même calcul

gd_percentage = gd_occ * 100 / gd_max.

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.

(C) SAP AG

BC400

4-18

Évaluation du contenu d'une zone

CASE . WHEN . Instructions

WHEN OR . Instructions

WHEN OTHERS. Instructions

IF .

ENDCASE.

Instructions

ELSEIF . Instructions

ELSEIF . Instructions

ELSE. Instructions

ENDIF. ã SAP AG 1999

n

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

n

CASE ... ENDCASE: Ÿ seule une des séquences des instructions s'exécute Ÿ l'instruction WHEN OTHERS est facultative

n

IF ... ENDIF: Ÿ les expressions logiques possibles sont décrites dans la documentation mots-clés sous IF Ÿ les instructions ELSE et ELSEIF sont facultatives Ÿ si l'expression logique est vraie, la séquence d'instructions suivante s'exécute Ÿ si l'expression logique n'est pas vraie, la section ELSE ou ELSEIF est traitée. S'il n'y a aucune instruction ELSE ni d'instruction complémentaire ELSEIF, le programme continue après l'instruction ENDIF Ÿ vous pouvez inclure autant d'instructions ELSEIF que vous voulez entre IF et ENDIF. Une seule séquence d'instructions sera exécutée.

(C) SAP AG

BC400

4-19

Observation du flux de données dans le débogueur : zone X

SAP

Débogueur ABAP



chws

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

Point d'arithmétique fixe

$

15 -

30

#

SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF wa_sbc400 WHERE carrid = pa_car. " IF sy-subrc = 0. MOVE-CORRESPONDING wa_sbc400 TO sbc400_carrier. CALL SCREEN 100. MOVE-CORRESPONDING sbc400_carrier TO wa_sbc400. Noms de zones

pa_car

1 - 4

$

Contenus de zones

LH

ã SAP AG 1999

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

(C) SAP AG

BC400

4-20

Observation du flux de données dans le débogueur : point de surveillance Point de surveillance Créer/modifier un point de surveillance Point de surveillance locale (uniquement dans un programme déterminé) Programme Nom de zone Opérateur relationnel Zone de comparaison (valeur de comparaison si aucune sélection) Comp. zone/valeur

No. Local Programme 1 2 3 ... 10

Nom de zone

Opérateur

Opérateur logique entre des points de surveillance

Zone Comp. zone/valeur

OU

ET

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

(C) SAP AG

BC400

4-21

Vue générale : structures

Types Types Objets ées donn Objets de de données données Objets ées élémentaires émentaires donn él Objets de de données données élémentaires Structures Structures Tables Tables internes internes Attributs Attributs des des instructions instructions ABAP ABAP

ã SAP AG 1999

(C) SAP AG

BC400

4-22

Définition des structures avec une référence de type du dictionnaire Dictionnaire ABAP : Structure sdyn_conn Nom de zone : Type de zone : mandt s_mandt carrid s_carr_id connid s_conn_id fldate s_date ... ... Définition de structure wa_spfli sdyn_conn

Programme ABAP

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

(C) SAP AG

BC400

4-23

Adressage des zones d'une structure

wa_scarr mandt carrid carrname

currcode

Programme ABAP

Des zones de structure sont toujours adressées selon -

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

SELECT SINGLE * FROM scarr INTO wa_scarr WHERE carrid = wa_scarr-carrid. WRITE: /wa_scarr-carrid wa_spfli-carrid, wa_spfli-carrname. wa_scarr-carrname.

ã SAP AG 1999

n

Les zones d'une structure sont toujours adressées selon -.

(C) SAP AG

BC400

4-24

Affectation de valeurs zone à zone MOVE-CORRESPONDING TO .

DATA: wa_sflight TYPE sflight, wa_sbc400focc TYPE sbc400focc. ... MOVE-CORRESPONDING MOVE-CORRESPONDING wa_sflight wa_sflight TO TO wa_sbc400focc. wa_sbc400focc.

MANDT 401

CARRID LH

CONNID 0400

CARRID LH

FLDATE 20000513

... ...

CONNID FLDATE 0400 20000513

SEATSMAX 280

SEATSOCC ... 100 ... wa_sflight

SEATSMAX 280

SEATSOCC POURCENTAGE 100

wa_sbc400focc ã SAP AG 1999

n

Les instructions MOVE-CORRESPONDING TO transportent des valeurs zone par zone entre les structures et . Ceci fonctionne uniquement si les composantes portent des noms identiques.

n

Le système cherche toutes les zones dans dont les noms apparaissent également dans et transporte la zone - vers - quand les noms sont identiques. Toutes les autres zones restent inchangées.

(C) SAP AG

BC400

4-25

Structures dans le débogueur

Débogueur ABAP



chws

Watchpoint Zones Programme principal ZJJ_KURS_000 ZJJ_FORMS Code source de

Point d'arithmétique fixe

$

15 -

30

#

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

ã SAP AG 1999

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.

(C) SAP AG

BC400

4-26

Vue générale : Tables internes

Types Types Objets ées donn Objets de de données données Objets ées élémentaires émentaires donn él Objets de de données données élémentaires Structures Structures Tables Tables internes internes Attributs Attributs des des instructions instructions ABAP ABAP

ã SAP AG 1999

(C) SAP AG

BC400

4-27

Type de table

CARRID CONNID DISTANCE

Type de lignes Clé Clé

Zones-clés

AA LH

0017 0400

2,572 6,162

LH

0400

6,162

QF

0005

10,000

SQ

0866

1,625

UA

0007

2,572

Séquence Clé unique / non-unique

Type de table Accès avec index 5 Type d'accès de données UA 0007 Accès avec clé

Vous ne devez pas déterminer le nombre de lignes de votre table ; le runtime system ABAP le détermine au moment de l'exécution (extension de table dynamique).

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

(C) SAP AG

BC400

4-28

Types de table

TABLES TABLE DES INDEX

TABLE STANDARD

Accès avec Index

TABLE D'ADRESSES CALCULÉES CALCULÉES

TABLE TRIÉE TRIÉE

n

n

Accès avec Clé Clé unique / non-unique Type d'accès

NON- UNIQUE

Principalement index

UNIQUE | NON-UNIQUE

Principalement clés

UNIQUE

Uniquement des clés

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

(C) SAP AG

BC400

4-29

Déclaration de tables internes en référence au Dictionnaire

sbc400_t_sbc400focc

Dictionnaire ABAP : type de table Type de ligne et accès Type de ligne Type d'accès Clé

Définition-clé Type de clé Composantes-clés

SBC400FOCC Table standard Composantes-clés non-unique CARRID CONNID FLDATE

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.

(C) SAP AG

BC400

4-30

Traitement des enregistrements individuels Ajouter

APPEND APPEND wa_itab to itab.

Insérer

INSERT wa_itab INTO itab .

Lire

READ TABLE itab INTO wa_itab .

Modifier

MODIFY TABLE itab .

Supprimer

DELETE itab . DELETE

ã 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 la ligne.

copie le contenu d'une ligne de table interne vers une structure qui a le même type que

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

(C) SAP AG

BC400

4-31

Traitement d'enregistrements par groupes Loop: Pour toutes les opérations

LOOP AT itab INTO wa_itab.

ENDLOOP.

Supprimer

DELETE itab .

Insérer lignes multiples à partir d'une table interne

INSERT itab2 FROM itab1 .

Ajouter Lignes multiples à partir d'une table interne

APPEND INSERT itab2 FROM itab1 .

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

(C) SAP AG

BC400

4-32

Autres options de traitement

Trier

SORT SORT

itab

Remise à la valeur initiale du contenu d'une table interne

CLEAR CLEAR

itab.

ã SAP AG 1999

n

Vous pouvez exécuter les opérations suivantes sur des tables internes : Ÿ SORT ou

trie des tables selon n'importe quelle colonne ou selon les colonnes par ordre croissant 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

(C) SAP AG

supprime la table interne et libère la mémoire allouée à la table.

BC400

4-33

Exemple : remplir une table interne ligne par ligne

* Déclaration de table interne et d'espace de travail DATA: it_flightinfo TYPE sbc400_t_sbc400focc. DATA: wa_flightinfo TYPE sbc400focc.

it_flightinfo

wa_flightinfo * Remplir une structure wa_flightinfo avec des valeurs ... * Ajouter la structure wa_flightinfo dans une table * interne APPEND wa_flightinfo TO it_flightinfo.

ã SAP AG 1999

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.

(C) SAP AG

BC400

4-34

Exemple : lecture du contenu de table interne à l'aide d'une boucle * Déclaration de table interne et d'espace de travail DATA: it_flightinfo TYPE sbc400_t_sbc400focc. DATA: wa_flightinfo TYPE sbc400focc. it_flightinfo

wa_flightinfo LOOP AT it_flightinfo INTO wa_flightinfo. WRITE: /

wa_flightinfo-carrid, wa_flightinfo-connid, wa_flightinfo-fldate, wa_flightinfo-seatsmax, wa_flightinfo-seatsocc, wa_flightinfo-percentage, '%'.

ENDLOOP. ENDLOOP. ã SAP AG 1999

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.

(C) SAP AG

BC400

4-35

Exemple : lecture de tables internes à l'aide l'index LOOP AT it_flightinfo INTO wa_flightinfo FROM 11 TO TO 5. 5. FROM WRITE: / wa_flightinfo-carrid, wa_flightinfo-connid, wa_flightinfo-fldate, wa_flightinfo-seatsmax, wa_flightinfo-seatsocc, wa_flightinfo-percentage, '%'. ENDLOOP.

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

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.

(C) SAP AG

BC400

4-36

Exemple : lecture des tables internes à l'aide de clés LOOP AT it_flightinfo INTO wa_flightinfo WHERE carrid carrid == 'LH' 'LH'. WHERE WRITE: / wa_flightinfo-carrid, wa_flightinfo-connid, wa_flightinfo-fldate, wa_flightinfo-seatsmax, wa_flightinfo-seatsocc, wa_flightinfo-percentage, '%'. ENDLOOP. READ TABLE it_flightinfo INTO wa_flightinfo WITH TABLE KEY carrid = 'LH' 'LH'. connid connid == '0400' '0400' fldate == sy-datum. sy-datum. fldate IF sy-subrc = 0. WRITE: / wa_flightinfo-seatsmax, wa_flightinfo-seatsocc, wa_flightinfo-percentage, '%'. ENDIF. ã SAP AG 1999

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

(C) SAP AG

BC400

4-37

Tables internes en mode débogage Débogueur ABAP



chws

Point de surveillance

Tableau Programme principal ZJJ_KURS_000 ZJJ_FORMS Code source de

Point d'arithmétique fixe

$

15 -

30

#

LOOP AT it_flightinfo INTO wa_flightinfo. WRITE: / wa_flightinfo-carrid, " wa_flightinfo-connid, Table interne

it_flightinfo

Type Standard

1

Carrid Connid Fldate

Seatsmax Seatsocc Pourcentage

1 2 3 4 5 6 7 8

AA AA AA AA LH LH LH LH

660 660 660 660 280 280 280 280

0017 0017 0017 0017 0400 0400 0400 0400

20000512 20000724 20000828 20001224 20000626 20000715 20001113 20001212

66 120 560 470 240 123 273 280

66 120 560 470 240 123 273 280

ã SAP AG 1999

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.

(C) SAP AG

BC400

4-38

Tables internes avec lignes d'en-tête DATA

TYPE [WITH [WITH HEADER HEADER LINE] LINE].

Espace de travail

Ligne d'en-tête

Table interne

Table interne

CARRID AA LH

CARRID

CONNID

CONNID

0017

AA

0017

0400

LH

0400

APPEND TO . MODIFY INDEX FROM .

APPEND . MODIFY INDEX .

LOOP AT INTO . WRITE -. ENDLOOP.

LOOP AT . WRITE -. ENDLOOP.

READ TABLE INDEX INTO . WRITE -.

READ TABLE INDEX . WRITE -.

ã 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'entê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.

(C) SAP AG

BC400

4-39

Synthèse : Attributs des instructions ABAP

Types Types Objets ées donn Objets de de données données Attributs Attributs des des instructions instructions ABAP ABAP

ã SAP AG 1999

(C) SAP AG

BC400

4-40

Codes retour d'instruction ABAP CONSTANTS c_ua TYPE s_carr_id VALUE 'UA'.

Programme ABAP

sy-subrc 0 Function de base en LECTURE

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

Non disponible

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

Code retour 4

4

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

(C) SAP AG

BC400

4-41

Messages utilisateur : synthèse

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

Table T100 S

ID

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



Texte du message

038 Aucune donnée n'existe pour cette sélection (insérez une autre valeur) ... ... 049 La compagnie aérienne & n'existe pas 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.

(C) SAP AG

BC400

4-42

Syntaxe : instructions MESSAGE

Annn Xnnn MESSAGE Ennn WITH (). 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 TYPE NUMBER WITH .

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.

(C) SAP AG

BC400

4-43

Comportement des messages au moment de l'exécution Aide

i

Aide à l'éditeur Synthèse ABAP Mot-clé ABAP Nouvelles caractéristiques de ABAP Documentation ABAP et exemples

Documentation ABAP et exemples ? Programmation ABAP - BC ? Introduction à ABAP ? Langage de programmation ABAP ? Dialogues utilisteur ABAP Exemple de message simple Démonstration de tous les types de messages ? ... ã SAP AG 1999

n

Il existe six différents types de messages : A, X, E, I, S ou W. Le comportement des messages au moment de l'exécution dépend du contexte. Ces lettres ont la signification suivante : A Abend

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

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

Le comportement au moment de l'exécution dépend du contexte

W Warning

Le comportement au moment de l'exécution dépend du contexte

I Information Le traitement est interrompu, le message s'affiche dans une boîte de dialogue et le programme continue lorsque le message a été confirmé avec ENTRÉE. S Suite Le message apparaît sur la barre d'état de l'écran suivant n

Vous trouverez un programme pour tester le comportement au moment de l'exécution dans les programmes types de la documentation. Vous trouverez des programmes types avec un code de tansaction ABAPDOCU dans l’Éditeur avec l'icône "Information" et la case d'option de Documentation ABAP et exemples.

(C) SAP AG

BC400

4-44

Instructions ABAP et déclarations de données : résumé du chapitre

Vous êtes maintenant capable : l de décrire les différents types de données différents et leur utilisation l de définir des objets de données élémentaires, des structures et des tables internes l d'utiliser le mode débogage pour observer comment les valeurs des objets de données individuels changent lors du traitement l de programmer plusieurs opérations importantes impliquant des objets de données, et l de trouver des informations sur les différents codes retour utilisés par les instructions ABAP et de les évaluer dans des programmes. ã SAP AG 1999

(C) SAP AG

BC400

4-45

Exercices Chapitre : Objets de données et instructions Sujet : Structures et affectations de valeurs

À la fin de ces exercices, vous serez en mesure : • d’utiliser le débogueur pour comprendre comment un programme fonctionne et comment les données sont transférées entre les objets du programme ; • d’utiliser l’instruction MOVE-CORRESPONDING pour affecter des valeurs entre les structures. Déboguez le programme que vous avez écrit pendant les exercices jusqu’au dernier chapitre (ou la solution modèle correspondante).

Programme :

ZBC400_##_GETTING_STARTED

Solution modèle :

SAPBC400WBS_GETTING_STARTED

1-1

Démarrez le programme ZBC400_##_GETTING_STARTED. Sur l’écran de sélection, saisissez le code de la compagnie aérienne 'LH'. Dans la zone de commande, saisissez '/h', ensuite sélectionnez Exécuter. Vous êtes maintenant en mode débogage.

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

Déroulez le programme en utilisant la fonction Pas à pas (F5). Quelles composantes de la structure WA_SBC400 sont remplies par l’instruction SELECT ? Quelle est la valeur de la zone système SY-SUBRC après l’instruction ?

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

Redémarrez le programme en mode débogage. Ajoutez un point d’arrêt à l’instruction MOVE-CORRESPONDING.

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.

(C) SAP AG

BC400

4-47

Chapitre : Objets de données et instructions Sujet : Tables internes

À la fin de ces exercices, vous serez en mesure : • de déclarer des tables internes avec référence à un type de table défini dans le dictionnaire ABAP ; • d’utiliser les instructions LOOP…ENDLOOP pour traiter des données mises dans le buffer de la table interne. 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-1

Créez un programme nommé ZBC400_##_ITAB_LOOP et sans TOP include. Affectez votre programme à la classe de développement ZBC400_## et l'ordre de modification pour votre projet “BC400…” (## est votre numéro de groupe).

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

(C) SAP AG

BC400

4-48

Solutions Chapitre : Objets de données et instructions Sujet : Structures et affectations de valeurs

1-3

Quelles composantes de la structure SBC400_CARRID sont remplies par l’instruction SELECT ? MANDT, CARRID, CARRNAME, CURRCODE Quelle valeur a SY-SUBRC après l’instruction SELECT ? SY-SUBRC a la valeur 0, car la compagnie aérienne LH (Lufthansa) est gérée dans la table SCARR.

1-4

Quelles valeurs de zone sont copiées ? MANDT, CARRID, CARRNAME, CURRCODE

(C) SAP AG

BC400

4-49

Chapitre : Objets de données et instructions Sujet : Tables internes

Solution modèle SAPBC400TSS_ITAB_LOOP

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

SAPBC400TSS_ITAB_LOOP

*&

* *

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

REPORT

sapbc400tss_itab_loop

.

DATA: it_spfli TYPE sbc400_t_spfli. DATA: wa_spfli TYPE spfli.

START-OF-SELECTION. * Lire toutes les zones des enregistrements de la table de base de 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. (C) SAP AG

BC400

4-50

ENDIF.

(C) SAP AG

BC400

4-51

Dialogues base de données I

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

(C) SAP AG

BC400

5-1

Dialogues base de données 1 : objectifs du chapitre

À la fin de ce chapitre, vous serez en mesure : l d'obtenir des informations sur les tables de base de données à partir du Dictionnaire ABAP l de répertorier plusieurs moyens de trouver des tables de base de données l de programmer un accès en mode lecture à des lignes et colonnes spécifiques d'une table de base de données particulière l d'appliquer des contrôles d'autorisation l de répertorier les différents types de possibilités d'accès en mode lecture pour des table de base de données ã SAP AG 1999

(C) SAP AG

BC400

5-2

Informations sur les tables de base de données

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

(C) SAP AG

BC400

5-3

Informations dans le Dictionnaire ABAP

Dictionnaire ABAP Table transparente SPFLI : Description des attributs de la table de base de données SPFLI

ou b D

Bloc de traitement ABAP

le

-c l

ic

SPFLI

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.

(C) SAP AG

BC400

5-4

Recherche sur des tables de base de données

Rechercher des composantes réutilisables

Éditeur Rechercher l'instruction SELECT Démarrer en mode débogage Insérer un point d'arrêt dans l'instruction SELECT

Sur des zones d'écran

Liste d'objets du programme Sous-programmes

ã SAP AG 1999

n

Hiérachie des applications Sélectionner composantes d'application Repository Informations Le système

Zones de structure dans le Dictionnaire ABAP

F1 Infos techniques Double-clic sur une zone d'écran Vous fournit les noms des programmes qui accèdent à la table de base de données

Double-clic sur un élément de données Liste des cas d'emploi dans les tables

Vous fournit une structure connue dans le dictionnaire

Pour rechercher des tables de bases de données : Ÿ Hiérarchie des applications et Système d'information du Repository : vous pouvez choisir des composantes applicatives dans la Hiérarchie des applications et passer directement dans le Système d'information du Repository. Vous pouvez également rechercher des tables selon leurs courtes descriptions (parmi d'autres critères).

n

Si vous connaissez le nom d'un programme qui a accès aux tables de bases de données que vous cherchez : Ÿ Zone de saisie sur un écran : si vous connaissez un programme qui contient un écran avec des zones de saisie connectées à la table recherchée, choisissez F1->Infos techniques et naviguez vers le dictionnaire ABAP en double-cliquant sur le nom technique de la zone d'écran. Il s'agit souvent d'une zone dans une structure. Double-cliquez sur l'élément de données et utilisez la fonction Cas d'emploi pour rechercher des tables transparentes selon le type de zone. Ÿ Débogueur : si vous connaissez le nom d'un programme qui a accès aux tables de bases de données que vous cherchez, vous pouvez lancer ce programme en mode débogage et apposer un point d'arrêt dans l'instruction SELECT. Ÿ Editeur : recherchez l'instruction SELECT. Ÿ Liste d'objets de Object Navigator : prélevez les sous-programmes qui forment les accès à la base de données.

n

Si vous connaissez une zone de structure du Dictionnaire ABAP : Ÿ double-cliquez sur l'élément de données et utilisez la fonction Cas d'emploi pour rechercher des tables transparentes selon le type de zone.

(C) SAP AG

BC400

5-5

Modèle de système de réservation aérienne des cours ABAP

Ville de départ

Aéroport de départ

Tâches de l'agence de voyage : Destination l disponibilité des aéroports l disponibilité des compagnies aériennes à l'heure souhaitée l disponibilité des vols à la date souhaitée l informations de vol complémentaires : prix, capacité, ... Ville de destination

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

(C) SAP AG

BC400

5-6

Modèle de données BC_TRAVLAG T CR

Agence de voyages BC_GEOCITY T

Ville A

BC_AIRPORT

T

BC_CITAIRP

Agence commerciale

Affectation Ville aéroport

A

Aéroport

BC_COUNTER T

T

CR

R

BC_CUSTOM T

R

Client H

BC_CARRIER T

Compagnie aérienne

BC_PLANFLI H

T

Liste des vols

BC_SFLIGHT H

T

Vol

BC_BOOKING T H

Réservations

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.

(C) SAP AG

BC400

5-7

Réalisation dans le Dictionnaire ABAP :

SCARR

SPFLI

SFLIGHT

SBOOK

Compagnie aérienne

Liste des vols

Vol

Réservations

MANDT CARRID CARRNAME .....

MANDT CARRID CONNID AIRPFROM AIRPTO DEPTIME .....

MANDT CARRID CONNID FLDATE SEATSMAX SEATSOCC .....

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

H 11001

Compagnie aérienne

11001 H

Liste des vols

11001 H

Vol

11001 H

Réservations

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.

(C) SAP AG

BC400

5-8

Zones-clés et index secondaires Index

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

Clé ... Type de zone ! ! !

... Courte description

S_MANDT S_CARR_ID S_CONN_ID LAND1 S_FROM_CIT S_FROMAIRP LAND1 S_TO_CITY S_TOAIRP S_FLTIME S_DEP_TIME S_ARR_TIME S_DISTANCE S_DISTID S_FLTYPE

...

... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

ã SAP AG 1999

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.

(C) SAP AG

BC400

5-9

Lecture de tables de base de données

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

(C) SAP AG

BC400

5-10

SELECT : vue d'ensemble

Quelles colonnes ?SELECT

FROM

Quelle(s) table(s) ?

INTO Vers quelles zones ? WHERE

Quelles lignes ?

Ligne individuelle

}

Lignes multiples

} Colonne spécifique

ã SAP AG 1999

n

L'instruction SELECT d'Open SQL lit des données dans la base.

n

Elle repose sur une logique complexe que vous utilisez pour accéder à de nombreux types de table.

n

L'instruction consiste en une série de clauses, chacune d'elle possédant une tâche différente. - La clause SELECT spécifie : si le résultat de la sélection doit se présenter sur une ou plusieurs lignes ; les zones qui doivent être incluses dans le résultat ; si le résultat peut contenir deux lignes identiques ou plus. - La clause INTO spécifie l'objet de donnés interne du programme dans lequel vous souhaitez placer les données sélectionnées. - La clause FROM spécifie la source des données (table de base de données ou vue). - La clause WHERE spécifie les conditions que les résultats de la sélection doivent remplir. En fait, il détermine donc quelles sont les lignes à inclure dans la table de résultats. - Vous trouverez des informations sur les autres clauses dans l'index de l'Éditeur ABAP, au motclé SELECT.

(C) SAP AG

BC400

5-11

Requête adressée à la base de données

Programme ABAP Objets de données

pa_car wa_ wa_scarr

Bloc de traitement ABAP

SELECT ...

Open SQL

Conversion spécifique de base de Base de données SQL données Interface de base de données

scarr

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.

(C) SAP AG

BC400

5-12

Traitement des enregistrements individuels

Programme ABAP Objets de données

Table de base de données SCARR

pa_car wa_ wa_scarr

Bloc de traitement ABAP

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

Table de base de données

scarr

Système d'exécution ABAP

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

(C) SAP AG

BC400

5-13

Boucles SELECT

Objets de données

Programme ABAP

Table de base de données SFLIGHT

pa_car wa_sbc400focc wa_sbc400focc Bloc de traitement ABAP

SELECT SELECT carrid connid fldate seatsocc seatsmax FROM sflight INTO wa_sbc400focc WHERE carrid = pa_car. Instructions pour chaque enregistrement lu

ENDSELECT ENDSELECT. IF sy-subrc = 0. ...

Interface de base de données

Système d'exécution ABAP ã 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.

(C) SAP AG

BC400

5-14

Accès à des tableaux

Objets de données

Programme ABAP

pa_car

Table de base de données SFLIGHT

itab_ itab_focc

Bloc de traitement ABAP

SELECT carrid connid fldate seatsmax seatsocc FROM sflight INTO TABLE itab_focc WHERE carrid = pa_car. Interface de base de données

IF sy-subrc = 0. ... Système d'exécution ABAP ã SAP AG 1999

n

L'option INTO TABLE 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.

(C) SAP AG

BC400

5-15

Clauses INTO Programme ABAP

DATA wa_sbc400focc TYPE sbc400focc. SELECT SINGLE carrid connid fldate seatsmax seatsocc FROM sflight INTO wa_sbc400focc wa_sbc400focc WHERE carrid = pa_car AND connid = pa_con AND fldate = pa_date. Même type que la colonne lue

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

(C) SAP AG

BC400

5-16

INTO CORRESPONDING FIELDS Programme ABAP

DATA wa_sdyn_conn TYPE sdyn_conn. SELECT SINGLE carrid connid deptime FROM spfli INTO CORRESPONDING FIELDS OF wa_sdyn_conn WHERE carrid = pa_car AND connid = pa_con. Même nom que la colonne lue mandt carrid connid

mandt carrid connid

...

...

deptime

deptime

ã SAP AG 1999

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 .

(C) SAP AG

BC400

5-17

Contrôles d'autorisation

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

(C) SAP AG

BC400

5-18

Contrôles d'autorisations dans des programmes ABAP

Fiches utilisateur Écran de sélection

BC400-00

CONTRÔLE D'AUTORISATION

Profil1 Profil2

Note

Non

Profil S_CARRID Autorisation pour Autorisation Object S_CARRID Autorisation pour Autorisation Object S_CARRID

SY-SUBRC = 0 ?

Oui SELECT

Profil4 Autorisation pour Autorisation Object S_TCODE

ã SAP AG 1999

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.

(C) SAP AG

BC400

5-19

Objets d'autorisation et autorisations

"Afficher" autorisation pour Objet S_CARRID CARRID: * ACTVT: Afficher

Objet : S_CARRID CARRID (compagnie aérienne) ACTVT (Activité)

Activités : Créer Modifier Afficher

"Modifier" autorisation pour Objet S_CARRID CARRID: LH

= = =

01 02 03

ACTVT: Modifier

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

(C) SAP AG

BC400

5-20

AUTHORITY-CHECK

AUTHORITY-CHECK Object S_CARRID Contrôle ID 'CARRID' FIELD 'LH' ID 'ACTVT' FIELD '02'.

IF sy-subrc ne 0. * Appropriate system reaction * to failed check

Résultats d'état

Paramétrer toutes les autorisations pour Objet S_CARRID

ACTVT 03 02

x

x

x

x

x

x

01

ENDIF.

AA AZ DL LH UA

CARRID

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

(C) SAP AG

BC400

5-21

Insertion d'AUTHORITY-CHECK dans des programmes Modèle Insérer instruction ... ... AUTHORITY-CHECK ... ...

S_CARRID

AUTHORITY-CHECK OBJECT 'S_CARRID'

Le système génère le code ABAP

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

Vous insérez des variables et des paramètres

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.

(C) SAP AG

BC400

5-22

Lecture de tables de base de données multiples

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

(C) SAP AG

BC400

5-23

Synthèse : lecture de tables de base de données multiples Utilisez les composantes fournies par SAP qui englobent la recherche de données

Objet

Méthodes des classes générales

BAPI Objet de gestion

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

Base de données logique

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

(C) SAP AG

BC400

5-24

Dictionnaire ABAP : vues

SPFLI Mandt Carrid Connid

SCARR

... Cityfrom ...

Mandt Carrid Carrname

...

VUE Mandt Carrid Connid Cityfrom Carrname

ã SAP AG 1999

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.

(C) SAP AG

BC400

5-25

Dialogues base de données 1 : résumé du chapitre

Vous êtes maintenant capable : l d'obtenir des informations sur les tables de base de données à partir du Dictionnaire ABAP l de répertorier plusieurs moyens de trouver des tables de base de données l de programmer un accès en mode lecture à des lignes et colonnes spécifiques d'une table de base de données particulière l d'appliquer des contrôles d'autorisation l Répertorier les différents types de possibilités d'accès en mode lecture pour des tables de base de données.

ã SAP AG 1999

(C) SAP AG

BC400

5-26

Exercices

Chapitre : Dialogues base de données 1 Sujet : Boucles SELECT

À la fin de ces exercices, vous serez en mesure : • d’utiliser l'instruction ABAP SELECT...ENDSELECT pour lire les données de la table de base de données dans votre programme.

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

Créez le programme ZBC400_##_SELECT_SFLIGHT sans TOP include. Affectez votre programme à la classe de développement ZBC400_## et à l'ordre de modification pour votre projet "BC400…" (## est votre numéro de groupe).

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.

(C) SAP AG

BC400

5-28

Chapitre : Dialogues base de données 1 Sujet : Boucles SELECT et chargement des tables internes

À la fin de ces exercices, vous serez en mesure : d’utiliser l'instruction ABAP SELECT … ENDSELECT pour lire les données d’une table de base de données de votre programme et de remplir une table interne.

La tâche est identique à celle de l’exercice 1. Affichez sur la liste les données triées en fonction du pourcentage d’occupation. Pour ce faire, vous devez remplir une table interne avec les données demandées et ensuite les trier selon la zone d’occupation.

Programme :

ZBC400_##_SELECT_SFLIGHT_ITAB

Solution modèle :

SAPBC400DDS_SELECT_SFLIGHT_TAB

2-1

Copiez votre programme ZBC400_##_SELECT_SFLIGHT ou la solution modèle SAPBC400DDS_SELECT_SFLIGHT vers le nom ZBC400_##_SELECT_SFLIGHT_ITAB. Affectez votre programme à la classe de développement ZBC400_## et à l'ordre de modification pour votre projet "BC400…" (## est votre numéro de groupe).

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

Triez la table interne sur le taux de remplissage.

2-5

Affichez le contenu trié de la table interne dans une liste. Pour ce faire, utilisez une structure LOOP … ENDLOOP.

(C) SAP AG

BC400

5-29

FACULTATIF : Solution modèle : SAPBC400DDS_SELECT_ARRAY_FETCH 2-6

Copiez le programme ZBC400_##_SELECT_SFLIGHT_ITAB vers le programme ZBC400_##_ARRAY_FETCH_SFLIGHT.

2-7

Remplacez la boucle SELECT par un ARRAY FETCH et 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.

2-8

Calculez le pourcentage d’occupation pour chaque ligne de la table interne en utilisant une boucle, et modifiez la ligne en utilisant une instruction MODIFY. Pour découvrir comment utiliser MODIFY dans une boucle, référez-vous à la documentation mot-clé.

(C) SAP AG

BC400

5-30

Chapitre : Dialogues base de données 1 Sujet : Contrôles d’autorisations

À la fin de ces exercices, vous serez en mesure : • d’effectuer des contrôles d’autorisations.

Modifiez vos programmes ZBC400_##_SELECT_SFLIGHT et ZBC400_##_SELECT_SFLIGHT_ITAB de sorte que les données puissent être consultées à partir de la base de données et affichées dans la liste seulement si l’utilisateur dispose de l’autorisation pour la compagnie aérienne demandée.

Programme :

ZBC400_##_AUTHORITY_CHECK

Solution modèle :

SAPBC400DDS_AUTHORITY_CHECK, SAPBC400DDS_AUTHORITY_CHECK_2 et SAPBC400DDS_AUTHORITY_CHECK_3

3-1

Modifiez vos programmes ZBC400_##_SELECT_SFLIGHT et ZBC400_##_SELECT_SFLIGHT_ITAB comme suit :

3-2

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

(C) SAP AG

BC400

5-31

Solutions

Chapitre : Dialogues base de données 1 Sujet : Boucles SELECT

Solution modèle : Programme SAPBC400DDS_SELECT_SFLIGHT *&--------------------------------------------------------------* *& Report *

SAPBC400DDS_SELECT_SFLIGHT

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

sapbc400dds_select_sflight

.

DATA: wa_flight TYPE sbc400focc. PARAMETERS: pa_car TYPE s_carr_id.

START-OF-SELECTION. * 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.

(C) SAP AG

BC400

5-32

Chapitre : Dialogues base de données 1 Sujet : Boucles SELECT et chargement des tables internes

Solution modèle : Programme SAPBC400DDS_SELECT_SFLIGHT_TAB

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

SAPBC400DDS_SELECT_SFLIGHT_TAB

*&

* *

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

REPORT

sapbc400dds_select_sflight_tab

.

DATA: wa_flight TYPE sbc400focc, it_flight TYPE sbc400_t_sbc400focc. PARAMETERS: pa_car TYPE s_carr_id.

START-OF-SELECTION.

* 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 table interne APPEND wa_flight TO it_flight. ENDSELECT. * Trier table interne SORT it_flight by percentage. * Créer liste à partir de la table interne triée (C) SAP AG

BC400

5-33

LOOP AT it_flight into wa_flight.

WRITE: / wa_flight-carrid COLOR COL_KEY, wa_flight-connid COLOR COL_KEY, wa_flight-fldate COLOR COL_KEY, wa_flight-seatsocc, wa_flight-seatsmax, wa_flight-percentage,'%'. ENDLOOP.

(C) SAP AG

BC400

5-34

Chapitre : Dialogues base de données 1 Sujet : Création de tableaux (facultatif)

FACULTATIF: Solution modèle : Program SAPBC400DDS_SELECT_ARRAY_FETCH *&--------------------------------------------------------------* *& Report

SAPBC400DDS_SELECT_ARRAY_FETCH

*&

* *

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

REPORT

sapbc400dds_select_array_fetch

.

DATA: wa_flight TYPE sbc400focc, it_flight TYPE sbc400_t_sbc400focc. PARAMETERS: pa_car TYPE sflight-carrid. *---------------------------------------------------------------* Facultatif: * Création de tableaux pour compléter les 5 premières colonnes de la table interne, *---------------------------------------------------------------SELECT carrid connid fldate seatsmax seatsocc FROM sflight INTO CORRESPONDING FIELDS OF TABLE it_flight WHERE carrid = pa_car.

* Un enregistrement au moins est sélectionné IF sy-subrc = 0. *Calculer le pourcentage dans une boucle et modifier la table interne à compléter * 6e colonne de la table interne LOOP AT it_flight INTO wa_flight. wa_flight-percentage = 100 * wa_flight-seatsocc / wa_flight-seatsmax. MODIFY it_flight from wa_flight. ENDLOOP. (C) SAP AG

BC400

5-35

SORT it_flight by percentage.

* Nouvelle boucle sur la table interne pour écrire le contenu des enregistrements sur une liste LOOP AT it_flight INTO wa_flight.

WRITE : / wa_flight-carrid COLOR COL_KEY, wa_flight-connid COLOR COL_KEY, wa_flight-fldate COLOR COL_KEY, wa_flight-seatsocc, wa_flight-seatsmax, wa_flight-percentage,'%'. ENDLOOP.

ENDIF.

(C) SAP AG

BC400

5-36

Chapitre : Dialogues base de données 1 Sujet : Contrôles d’autorisations

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.

(C) SAP AG

BC400

5-37

(C) SAP AG

BC400

5-38

Modularisation interne du programme

Contenu : l Blocs événements ABAP l Sous-programmes

ã SAP AG 1999

(C) SAP AG

BC400

6-1

Modularisation interne du programme : objectifs du chapitre

À la fin de ce chapitre, vous serez en mesure de : l d'expliquer le fonctionnement d'un programme contenant des événements au moment de l'exécution en utilisant INITIALIZATION et START-OF-SELECTION comme exemples l d'encapsuler des fonctions dans un sousprogramme simple avec un interface.

ã SAP AG 1999

(C) SAP AG

BC400

6-2

Éléments possibles d'un programme ABAP

Bloc événement

Définitions de zone et type local

Bloc événement Écran de sélection

Module

Bloc événement Interface

Bloc événement

Module

Sousprogrammes

Process Before Output Process After Input

Écran

ã 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 sousprogrammes en sont des exceptions.

(C) SAP AG

BC400

6-3

Exemple : programme ABAP comportant des blocs événements et un écran de sélection

Définitions de zone et de type local

Écran de sélection généré par generates

PARAMETERS pa_date LIKE sy-datum DEFAULT sy-datum.

INITIALIZATION

Bloc événement

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

Bloc événement

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

(C) SAP AG

BC400

6-4

Comportement d'un programme type pendant l'exécution

Programme ABAP

Lancement du programme

pa_date 20000101

INITIALIZATION. pa_date = pa_date - 7. 19991225

?? START-OF-SELECTION. WRITE pa_date.

Mémoiretampon de liste pour liste de base

Système d'exécution ABAP 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.

(C) SAP AG

BC400

6-5

Blocs événements dans des programmes exécutables

Programme ABAP

l

Introduit par un mot-clé événementiel

l

Un événement est délimité par le début du bloc de traitement suivant

l

À différents blocs événements correspondent différentes tâches

l

Le processeur ABAP détermine l'ordre de traitement des événements

l

Bloc événement par défaut : START-OF-SELECTION

INITIALIZATION.

START-OF-SELECTION.

Système d'exécution ABAP Temps ã SAP AG 1999

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.

(C) SAP AG

BC400

6-6

Blocs événements : syntaxe

REPORT ...

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

INITIALIZATION. INITIALIZATION.

" Default values for selection screen

pa_date = pa_date - 7.

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

" Start of data processing

WRITE pa_date.

Le traitement des blocs événements du code source ne dépend pas de l'ordre par lequel ils sont appelés dans le runtime system. call ã 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.

(C) SAP AG

BC400

6-7

Programme comportant des sous-programmes

Bloc de traitement

Interface

l

Fonctions encapsulées

l

Programmes mieux structurés qui peuvent être lus et compris plus facilement

l

Gestion de programmes plus facile

l

Peut être réutilisé de manière locale dans le programme

l

Bloc de traitement avec interface

Interface Sousprogrammes

Sousprogrammes

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

(C) SAP AG

BC400

6-8

Sous-programmes dans une liste d'objets

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.

(C) SAP AG

BC400

6-9

Exemple de syntaxe : interface du sous-programme *&--------------------------------------------------------------------* *& Form FILL_ITAB *&--------------------------------------------------------------------* * Filling internal table with records of sflight with * carrid = p_carrid, calculate percentage *---------------------------------------------------------------------* * -->P_carrid carrier id * 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.

(C) SAP AG

BC400

7-5

Fonctions multilingues

Programme Code source

Éléments de texte Titre/en-têtes Titre/en-têtes Intitulé de liste

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

EN Creation Date DE Erstellungsdatum FR Date de création

Symboles de texte 001

002

EN Creation Date DE Erstellungsdatum FR Date de création : EN Created by

Creation date: 01.01.1998 Created by: WITTMANN

ã 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- (où xxx est une chaîne de caractères de trois caractères de long) ; Ÿ ''() (où xxx est une chaîne de caractères de trois caractères de long).

(C) SAP AG

BC400

7-6

Listes d'un programme exécutable

Lancement du programme Programme ABAP Objets de données

Table de base de données START-OF-SELECTION Mémoire tampon de liste

Système d'exécution ABAP ã 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 sousprogrammes 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.

(C) SAP AG

BC400

7-7

Listes détaillées

Programme ABAP Objets de données

Mémoire tampon pour liste de base

Table de base de données

START-OF-SELECTION

AT LINE-SELECTION Mémoire tampon pour liste détaillée

Système d'exécution ABAP ã SAP AG 1999

Temps

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

(C) SAP AG

BC400

7-8

Exemple : une liste détaillée simple

Programme de démonstration ...

Liste de base

Liste de base

sy-lsind

0

Listes détaill ées détaillées Liste détaillée 1 sy-lsind

Listes détaill ées détaillées sy-lsind

2

1

Liste détaillée 2 Jusqu'à vingt listes détaillées

ã SAP AG 1999

n

Fonctionnement des listes présentées dans notre exemple : - la liste de base présente la mention "Liste de base" et la zone système sy-lsind ; - vous pouvez appeler la liste détaillée 1 grâce à un double-clic ou en sélectionnant son icône correspondante à partir de la barre d'outils d'application ou son entrée de menu, ou encore en utilisant la touche de fonction F2. La "liste détaillée" apparaît ensuite et la zone système sylsind a la valeur 1 ; - en répétant cette action, vous devriez appeler la liste détaillée 2, là où la zone système sylsind contient la valeur 2 (qui représente le niveau effectif de la liste détaillée) ; - En répétant cette action, vous augmentez la valeur sy-lsind de un jusqu'à une valeur de vingt (le nombre maximum possible de listes détaillées) ; - En sélectionnant la flèche verte, l'utilisateur redescend d'une liste vers la liste de base.

(C) SAP AG

BC400

7-9

Syntaxe : une liste détaillée simple

REPORT sapbc400udd_secondary_list_a. START-OF-SELECTION. WRITE: / text-001 COLOR col_heading, / 'sy-lsind', sy-lsind color 2.

Symboles de texte : 001

Listes de base

002

Listes détaillées

AT AT LINE-SELECTION. LINE-SELECTION. WRITE: / text-002 COLOR col_heading. ULINE. WRITE: / 'sy-lsind', sy-lsind color 4.

ã SAP AG 1999

n

Une liste détaillée peut se programmer comme suit : n

vous créez une liste de base en remplissant le buffer de la liste de base dans un bloc événement approprié (dans ce cas START-OF-SELECTION) en utilisant soit WRITE, SKIP, ou ULINE ;

n

utilisez le bloc événement AT LINE-SELECTION lorsque vous programmez des listes détaillées. Chaque fois que vous utilisez WRITE, SKIP, ou ULINE dans ce bloc évenement, vous remplissez le buffer de liste du niveau n+1 ;

n

vous pouvez programmer la navigation entre les listes détaillées en testant la zone sy-lsind dans le bloc événement AT LINE-SELECTION.

(C) SAP AG

BC400

7-10

Exemple de listes détaillées

Liste des vols Vol Départ Destination LH 0400 FRA Francfort JFK New York LH 0402 FRA Francfort JFK New York ... SQ 0002 SIN Singapour SFO San Francisco

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

Détail : vols Vous avez choisi Date du vol 19.12.1998 20.12.1998 24.12.1998

LH Max.

0402 Occ.

380 380 380

240 270 380

ã SAP AG 1999

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.

(C) SAP AG

BC400

7-11

Zone HIDE

HIDE . Buffer de liste de base

Zone HIDE

Ligne ... 5 6 ... 11

ã

Ligne

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

JFK JFK

10:10:00 13:30:00

SFO

09:30:00

... 5 6 ... 11

wa_spflicarrid ... LH LH ... SQ

wa_spfliconnid ... 0400 0402 ... 0002

REPORT sapbc400udd_example_2. ... START-OF-SELECTION. SELECT * FROM spfli INTO wa_spfli. WRITE:/ wa_spfli-carrid, wa_spfli-connid, wa_spfli-airpfrom, wa_spfli-airpto, wa_spfli-deptime. HIDE: wa_spfli-carrid, wa_spfli-connid. ENDSELECT. SAP AG 1999

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.

(C) SAP AG

BC400

7-12

Sélection de ligne

Zone HIDE Ligne Vol Départ Destination Horaire LH 0400 FRA JFK 10:10:00 LH 0402 FRA JFK 13:30:00 ... SQ 0002 SIN SFO 09:30:00

wa_spfli-carrid

wa_spfli-connid

... LH LH ... SQ

... 0400 0402 ... 0002

... 5 6 ... 11

?? LH 0402 ??

??

??

wa_spfli

REPORT sapbc400udd_example_2. AT LINE-SELECTION. WRITE: text-001, wa_spfli-carrid, wa_spfli-connid.

Symboles de texte : 001

Correspondances

ã SAP AG 1999

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.

(C) SAP AG

BC400

7-13

Sélection de lignes : syntaxe

REPORT sapbc400udd_example_2. ... Symboles de texte : AT LINE-SELECTION. IF sy-lsind = 1. WRITE: text-001, wa_spfli-carrid, wa_spfli-connid.

001

Correspondances

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

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.

(C) SAP AG

BC400

7-14

Dialogues utilisateur : listes : résumé du chapitre

Vous êtes maintenant capable : l de décrire les attributs et les avantages d'une liste l d'écrire un programme qui affiche les détails d'une ligne à partir de votre liste de base vers une liste interactive dès que l'utilisateur double-clique sur cette ligne l d'expliquer le déroulement de votre programme à l'exécution pendant l'événement AT LINESELECTION

ã SAP AG 1999

(C) SAP AG

BC400

7-15

Dialogues utilisateur – listes : exercices Chapitre : Dialogues utilisateur : listes Sujet : Listes détaillées

À la fin de ces exercices, vous serez en mesure : • de créer une liste détaillée dans votre programme.

Modifiez votre programme ZBC400_##_SELECT_SFLIGHT ou la solution modèle correspondante comme suit : quand vous avez sélectionné un vol sur la liste de base (double-cliquez ou appuyez sur F2 sur la ligne de liste appropriée), affichez une liste détaillée contenant toutes les réservations du vol sélectionné.

Programme :

ZBC400_##_DETAIL_LIST

Solution modèle :

SAPBC400UDS_DETAIL_LIST

1-1

Copiez votre programme ZBC400_##_SELECT_SFLIGHT ou la solution modèle correspondante SAPBC400DDS_AUTHORITY_CHECK vers le nouveau programme ZBC400_##_DETAIL_LIST. Affectez votre programme à la classe de développement ZBC400_## et à l'ordre de modification pour votre projet "BC400…" (## est votre numéro de groupe).

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

Ajoutez l'événement AT LINE-SELECTION à votre programme pour vous permettre de construire la liste détaillée.

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 :

(C) SAP AG

BC400

7-16

BOOKID, CUSTOMID, CUSTTYPE CLASS, ORDER_DATE, SMOKER, CANCELLED, LOCCURAM, LOCCURKEY. 1-6

Affichez les zones BOOKID et CUSTOMID dans la couleur COL_KEY.

1-7

Assurez-vous que le montant de devise LOCCURAM correspond au format de la devise LOCCURKEY. Utilisez le complément CURRENCY dans l’instruction WRITE. Exemple: WRITE: wa_sflight-price CURRENCY wa_sflight-currency, wa_sflight-currency.

(C) SAP AG

BC400

7-17

Solutions

Chapitre : Dialogues utilisateur : listes Sujet : Listes détaillées

Solution type SAPBC400UDS_DETAIL_LIST *&--------------------------------------------------------------* *& Report

SAPBC400UDS_DETAIL_LIST

*&

* *

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

REPORT

sapbc400uds_detail_list.

CONSTANTS actvt_display TYPE activ_auth VALUE '03'. DATA: wa_flight TYPE sbc400focc, wa_sbook

TYPE sbook.

PARAMETERS: pa_car TYPE sflight-carrid.

START-OF-SELECTION. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD pa_car ID 'ACTVT'

FIELD actvt_display.

CASE sy-subrc. WHEN 0. SELECT carrid connid fldate seatsmax seatsocc FROM sflight INTO CORRESPONDING FIELDS OF wa_flight WHERE carrid = pa_car. wa_flight-percentage = 100 * wa_flight-seatsocc / wa_flight-seatsmax. WRITE : / wa_flight-carrid COLOR COL_KEY, wa_flight-connid COLOR COL_KEY, wa_flight-fldate COLOR COL_KEY, wa_flight-seatsocc, wa_flight-seatsmax, wa_flight-percentage,'%'. * Cacher les valeurs de zones-clés correspondant à la ligne effective (C) SAP AG

BC400

7-18

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

* Le programme continue si une ligne est sélectionnée sur la liste de base AT LINE-SELECTION. IF sy-lsind = 1.

* Les zones-clés sont retransférées de la zone mémoire HIDE vers des objets de données ABAP WRITE: / wa_flight-carrid, wa_flight-connid, wa_flight-fldate. ULINE. SKIP. * Sélectionner des réservations, qui dépendent d’un vol sélectionné 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.

* Créer une liste détaillée WRITE: / wa_sbook-bookid, wa_sbook-customid, wa_sbook-custtype, wa_sbook-class, wa_sbook-order_date, wa_sbook-smoker, wa_sbook-cancelled, wa_sbook-loccuram CURRENCY wa_sbook-loccurkey, wa_sbook-loccurkey. ENDSELECT. ENDIF.

(C) SAP AG

BC400

7-19

Dialogues utilisateur : écrans de sélection

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

(C) SAP AG

BC400

8-1

Dialogues utilisateur : écrans de sélection : objectifs du chapitre

À la fin de ce chapitre, vous serez en mesure : l de décrire les attributs et les avantages des écrans de sélection l d'écrire un programme qui permet à l'utilisateur de saisir des plages de valeurs dans un écran de sélection qui peuvent être utilisées pour limiter le nombre d'enregistrements remontés de la base de données l d'écrire un programme qui comporte des contrôles de saisie supplémentaires sur son écran de sélection renvoyant cet écran en cas d'erreur

ã SAP AG 1999

(C) SAP AG

BC400

8-2

Écran de sélection

Programme ABAP

Objets de données

Table de base de données

Bloc de traitement ABAP

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

(C) SAP AG

BC400

8-3

Écran de sélection

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.

(C) SAP AG

BC400

8-4

Saisie de sélections

SELECT-OPTIONS ... PARAMETERS ...

Compagnie aérienne

LH

to

...

Ville de départ

Gérer les options de sélection sélection

Compagnie aérienne Valeur individuelle Supérieur ou égal Inférieur Inférieur ou égal Supérieur SIGN OPTION LOW Inférieur I GE LH Différent

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

Sélectionner Exclure de la sélection ã SAP AG 1999

n

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.

Chaque écran de sélection contient un icone Informations. Sélectionnez cet icone pour afficher des informations complémentaires.

(C) SAP AG

BC400

8-5

Aide à la recherche

DATA: wa LIKE spfli. Compagnie PARAMETERS pa_car TYPE spfli-carrid. aérienne SELECT-OPTIONS so_conn FOR wa-connid. Vol n° à ID

No. 0400

Aéroport Aéroport de départ d'arrivée FRA JFK

Heure de départ 10:10:00

LH LH

0402

FRA

13:30:00

JFK

Zone de tables Zones de structure Aide à la recherche Aide à la recherche Tables de contrôle

Dictionnaire ABAP

Élément de données

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

(C) SAP AG

BC400

8-6

Textes de sélection Fonctions multilingues

Programme Code source

Éléments de texte

REPORT bc400td_selection_screen. : SELECT-OPTIONS so_carr FOR ... PARAMETERS pa_city TYPE ...

Compagnie aérienne

LH

à

...

Titre/en-têtes Symboles de texte

Textes de sélection SO_CARR

EN Airline carrier DE

PA_CITY

EN Departing from DE

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.

(C) SAP AG

BC400

8-7

Variantes

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.

(C) SAP AG

BC400

8-8

Instruction PARAMETERS

Programme ABAP

pa_car Zones et types définis localement

Référence Dictionnaire ABAP

PARAMETERS pa_car TYPE s_carr_id. Écran de sélection

s_carr_id

Bloc de traitement ABAP

Système d'exécution 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 TYPE comme l'instruction PARAMETERS LIKE génèrent toutes deux une zone de saisie simple sur l'écran de sélection, et un objet de données 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 du programme. Le système n'autorise que les entrées de type approprié.

(C) SAP AG

BC400

8-9

Transport de données

Programme ABAP

pa_car pa_car pa_car Zones et types définis localement

pa_car PARAMETERS pa_car TYPE s_carr_id. Écran de sélection Écran de sélection Bloc de traitement ABAP

Système d'exécution ABAP ã SAP AG 1999

Temps

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.

(C) SAP AG

BC400

8-10

Utilisation de Parameters dans l'instruction SELECT 1

REPORT ... DATA wa_spfli TYPE spfli. PARAMETERS pa_car TYPE s_carr_id. ... SELECT SELECT carrid connid cityfrom cityto ... FROM spfli INTO CORRESPONDING FIELDS OF wa_spfli pa_car WHERE carrid = pa_car. WRITE: / wa_spfli-carrid, wa_spfli-connid, wa_spfli-fldate, ... . ENDSELECT ENDSELECT.

ã SAP AG 1999

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.

(C) SAP AG

BC400

8-11

OPTIONS SELECT

option Sign low

Programme ABAP

high so_carr gd_carrid Zones et types définis localement

Écran de sélection

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

Bloc de traitement ABAP

Système d'exécution ABAP ã SAP AG 1999

n

n

L'instruction SELECT-OPTIONS FOR définit une option de sélection : elle place deux zones de saisie sur l'écran de sélection, qui est de même type que celui défini dans la référence. Cela permet alors à l'utilisateur de saisir une plage de valeurs ou des sélections complexes. L'instruction définit également une table interne comportant les quatre colonnes suivantes : n

sign : détermine si la valeur ou la plage de valeurs concernée doit être incluse ou non dans la sélection ;

n

option : contient l'opérateur. Vous trouverez la liste des opérateurs possibles dans la documentation mot-clé de l'instruction SELECT-OPTIONS ;

n

low : contient soit la limite inférieure d'une plage de valeurs, soit une valeur unique ;

n

high : contient la limite supérieure d'une plage de valeurs.

La table de sélection renvoie toujours à un objet de données déjà déclaré. Celui-ci sert de zone cible pendant la sélection de base de données, tandis que la table de sélection regroupe les valeurs possibles. Une version spéciale de la clause WHERE existe pour la sélection de base de données. Elle détermine si la base de données contient ou non la zone correspondante dans sa réserve de valeurs possibles.

(C) SAP AG

BC400

8-12

Transport de données

Programme ABAP

so_carr so_ so_carr gd_carrid

wa_scarr

Zones et types définis localement Écran de sélection

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

Écran de sélection Bloc de traitement ABAP

Système d'exécution ABAP ã SAP AG 1999

n

Temps

Si vous saisissez plusieurs valeurs ou plages de valeurs et choisissez "Exécuter", le système les place dans la table interne.

(C) SAP AG

BC400

8-13

Utilisation de Parameters dans l'instruction SELECT 2

REPORT ... DATA WA_SPFLI TYPE SPFLI. SELECT-OPTIONS so_carr FOR wa_spfli-carrid. ... SELECT carrid connid cityfrom cityto ... FROM spfli INTO CORRESPONDING FIELDS OF wa_spfli so_carr WHERE carrid IN so_carr. WRITE: / wa_spfli-carrid, wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, ... ENDSELECT ENDSELECT.

.

ã SAP AG 1999

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

(C) SAP AG

BC400

8-14

Événements d'écran de sélection Lancement du programme

Programme ABAP

INITIALIZATION.

AT SELECTION-SCREEN.

Non Oui START-OF-SELECTION Système d'exécution ABAP ã SAP AG 1999

Temps

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, STARTOF-SELECTION ; Ÿ si l'utilisateur sélectionne toute autre fonction, l'écran de sélection se réaffiche.

(C) SAP AG

BC400

8-15

Dialogues d'erreur dans AT SELECTION-SCREEN Lancement du programme

Programme ABAP

INITIALIZATION.

AT SELECTION-SCREEN. MESSAGE e001.

Non Oui START-OF-SELECTION Système d'exécution ABAP ã SAP AG 1999

Temps

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.

(C) SAP AG

BC400

8-16

AT SELECTION-SCREEN : syntaxe

PARAMETERS: pa_car TYPE s_carr_id.

* Premier événement traité après avoir quitté l'écran de sélection AT SELECTION-SCREEN. AT SELECTION-SCREEN. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD pa_car ID 'ACTVT' FIELD actvt_display. IF sy-subrc 0. MESSAGE e045(bc400) WITH pa_car. * Remontrer l'écran de sélection et indiquer message dans barre d'état MESSAGE e045(bc400) WITH pa_car. ENDIF.

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

(C) SAP AG

BC400

8-17

Dialogue utilisateur : écrans de sélection : résumé du chapitre

Vous êtes maintenant capable : l de décrire les attributs et les avantages des écrans de sélection ; l d'écrire un programme qui permet à l'utilisateur de saisir des plages de valeurs dans un écran de sélection qui peuvent être utilisées pour limiter le nombre d'enregistrements de données retrouvés à partir de la base de données ; l d'écrire un programme qui comporte des contrôles de saisie supplémentaires sur son écran de sélection renvoyant cet écran en cas d'erreur.

ã SAP AG 1999

(C) SAP AG

BC400

8-18

Écran de sélection : exercices

(C) SAP AG

BC400

8-19

(C) SAP AG

BC400

8-20

Chapitre : Écran de sélection

À la fin de ces exercices, vous serez en mesure : • d’utiliser l’instruction ABAP SELECT-OPTIONS pour saisir des valeurs complexes sur un écran de sélection standard ; • de tenir compte de valeurs complexes dans une sélection de base de données ; • de programmer un message d’erreur pour un écran de sélection standard. Complétez votre programme ZBC400_##_DETAIL_LIST ou la solution modèle correspondante comme suit. Fournissez à l’utilisateur un moyen de saisir une plage de valeurs complexes pour le numéro de vol. Tenez compte des valeurs dans votre sélection de base de données. De plus, modifiez votre programme pour que l’utilisateur puisse continuer après l'écran de sélection seulement si le contrôle d’autorisation pour la compagnie aérienne souhaitée réussit. Programme :

ZBC400_##_SEL_SCREEN

Solution modèle :

SAPBC400UDS_SEL_SCREEN

1-1

Copiez votre programme ZBC400_##_DETAIL_LIST ou la solution modèle correspondante SAPBC400_UDS_DETAIL_LIST vers le programme ZBC400_##_SEL_SCREEN. Affectez votre programme à la classe de développement ZBC400_## et à l'ordre de modification pour votre projet "BC400…" (## est votre numéro de groupe).

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

(C) SAP AG

BC400

8-21

d’erreur appropié à partir de la classe de messages BC400, et permettez à l’utilisateur de saisir une valeur différente sur l’écran de sélection.

(C) SAP AG

BC400

8-22

Solutions

(C) SAP AG

BC400

8-23

(C) SAP AG

BC400

8-24

Chapitre : Écran de sélection

Solution modèle : programme SAPBC400UDS_SEL_SCREEN *&--------------------------------------------------------------* *& Report

SAPBC400UDS_SEL_SCREEN

*&

* *

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

REPORT

sapbc400uds_sel_screen.

CONSTANTS actvt_display TYPE activ_auth VALUE '03'.

DATA: wa_flight TYPE sbc400focc, wa_sbook

TYPE sbook.

PARAMETERS: pa_car TYPE sflight-carrid. * Zone de données pour restrictions complexes appliquées à l’identificateur de connexion SELECT-OPTIONS: so_con FOR wa_flight-connid.

* Premier évènement traité après avoir quitté l’écran de sélection AT SELECTION-SCREEN. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD pa_car ID 'ACTVT'

FIELD actvt_display.

IF sy-subrc 0.

* Retourner à l’écran de sélection et afficher un message dans la barre d’état MESSAGE e045(bc400) WITH pa_car. ENDIF. START-OF-SELECTION. SELECT carrid connid fldate seatsmax seatsocc FROM sflight (C) SAP AG

BC400

8-25

INTO CORRESPONDING FIELDS OF wa_flight WHERE carrid = pa_car AND

connid IN so_con.

wa_flight-percentage = 100 * wa_flight-seatsocc / wa_flight-seatsmax. WRITE : / wa_flight-carrid COLOR COL_KEY, wa_flight-connid COLOR COL_KEY, wa_flight-fldate COLOR COL_KEY, wa_flight-seatsocc, wa_flight-seatsmax, wa_flight-percentage,'%'. HIDE: wa_flight-carrid, wa_flight-connid, wa_flight-fldate. ENDSELECT.

AT LINE-SELECTION. IF sy-lsind = 1. WRITE: / wa_flight-carrid, wa_flight-connid, wa_flight-fldate. ULINE. SKIP. SELECT bookid customid custtype class order_date smoker cancelled loccuram loccurkey FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook WHERE carrid = wa_flight-carrid AND

connid = wa_flight-connid

AND

fldate = wa_flight-fldate.

WRITE: / wa_sbook-bookid, wa_sbook-customid, wa_sbook-custtype, wa_sbook-class, wa_sbook-order_date, wa_sbook-smoker, wa_sbook-cancelled, wa_sbook-loccuram CURRENCY wa_sbook-loccurkey, wa_sbook-loccurkey. ENDSELECT. ENDIF.

(C) SAP AG

BC400

8-26

Dialogues utilisateur : dynpros

Contenu : l Attributs et avantages des dynpros l 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

(C) SAP AG

BC400

9-1

Dialogues utilisateur : dynpros : objectifs du chapitre

À la fin de ce chapitre, vous serez en mesure : l de décrire les attributs et les avantages des dynpros l d'écrire un programme qui : l affiche les données sur un dynpro l permet à l'utilisateur de modifier certaines de ces données l permet à l'utilisateur d'influencer le traitement ultérieur du programme en utilisant des boutons de commande

ã SAP AG 1999

(C) SAP AG

BC400

9-2

Avantages des dynpros

Déroulement du programme

Contrôles Contrôles de type

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.

(C) SAP AG

BC400

9-3

Utilisation des dynpros

Code de transaction 100

200

120

140

CALL SCREEN 100. 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.

(C) SAP AG

BC400

9-4

Exemple de dynpro

Liste des vols Vol Départ Destination Départ LH 0400 FRA Francfort JFK New York LH 0402 FRA Francfort JFK New York ... Dynpro SQ 0002 SIN Singapour SFO San Francisco Modifier données données de vol Compagnie aérienneLH Numéro de vol 0400 Aéroport de départ FRA JFK Destination Modifier dans la Durée du vol base de données Heure de départ Sauvegarder

8:24 10:10:00

Retour

ã SAP AG 1999

n

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

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.

(C) SAP AG

BC400

9-5

Composantes d'un dynpro

Screen Painter

Attributs de dynpro Numéro de dynpro Courte description Type de dynpro Dynpro suivant ...

Layout de dynpro

Attributs de zone

Compagnie aérienne

Nom de zone Longueur de zone Saisie x Sortie ...

Commande d'exécution

PROCESS BEFORE OUTPUT. MODULE CLEAR_OK_CODE. PROCESS AFTER INPUT. MODULE USER_COMMAND_0100.

ã SAP AG 1999

n

Procédure de création d'un dynpro : n

spécification des propriétés (Attributs de dynpro) ;

n

spécification de la structure (dans l'Éditeur pleine page) ;

n

définition des attributs pour les éléments du dynpro (Liste de zones) ;

n

programmation de sa logique d'exécution.

(C) SAP AG

BC400

9-6

Étape 1 : création d'un dynpro

Liste des vols Vol Départ Destination Départ LH 0400 FRA Francfort JFK New York LH 0402 FRA Francfort JFK New York ... Dynpro SQ 0002 SIN Singapour SFO San Francisco 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.

(C) SAP AG

BC400

9-7

Création d'un dynpro : attributs

ABAP

Créer un objet

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

Screen Painter

Dynpro 100 n'existe pas. Voulez-vous créer l'objet ? Oui

Non

Annuler

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

n

Vous créez un dynpro de plusieurs façons : n

par la Navigation forward, à partir de l'Éditeur ABAP, cliquez sur le numéro de dynpro et accédez automatiquement au Screen Painter ; accédez automatiquement au Screen Painter ;

n

par la liste d'objets de Object Navigator.

n

Lorsque vous créez le premier dynpro, le système vous demande de saisir ses attributs. Entrez une courte description de votre dynpro, choisissez le type Normal, puis saisissez le numéro de dynpro suivant dans la zone de saisie Dynpro suivant.

n

Si vous tapez 0 ou que vous laissez la zone Dynpro suivant vide, le système effectue d'abord un traitement complet du dynpro, puis reprend le traitement du programme au point qui suit immédiatement l'appel du dynpro. N'oubliez pas que la valeur 0 est supprimée de la zone de saisie Dynpro suivant, puisqu'elle est identique à la valeur initiale de la zone.

n

Dans notre exemple, vous appelez votre dynpro à partir d'une liste de base. CALL SCREEN 100 doit donc faire partie de l'événement AT LINE-SELECTION.

(C) SAP AG

BC400

9-8

Zones de saisie d'une structure du Dictionnaire

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.

(C) SAP AG

BC400

9-9

Modification des attributs de zone

Attributs T

Nom Texte Ligne

Compagnie aérienne Numéro de vol X

Aéroport de départ Destination

SDYN_CONN-CARRID

Colonne

FCode

Durée du vol Heure de départ

FType

Dict Prog Disp

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.

(C) SAP AG

BC400

9-10

Attributs de zones : liste d'éléments

Screen Painter : liste d'él éments d'éléments

Type de zone Textes/modèles

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

Attr. gén.

vLg Afficher attr.

Type de zone 5Text 14

16

I/O

... 16

.1 ..

Modif. taille

I

Références

O

O seult.

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.

(C) SAP AG

BC400

9-11

Étape 2 : affichage des données

Liste des vols Vol Départ Destination Départ LH 0400 FRA Francfort JFK New York LH 0402 FRA Francfort JFK New York ... Dynpro SQ 0002 SIN Singapour SFO San Francisco Modifier données données de vol Compagnie aérienne LH Numéro de vol 0400 Aéroport de départ Destination

FRA

Durée du vol Heure de départ

8:24

JFK

10:10:00

ã 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

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.

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.

(C) SAP AG

BC400

9-12

Interfaces de dynpro

Programme ABAP Objets de données

wa_spfli sdyn_ sdyn_conn sdyn_conn Zones et types définis localement

DATA wa_spfli TYPE spfli. TABLES sdyn_conn. sdyn_conn Process Before Output Process After Input

Dynpro 100

Bloc de traitement ABAP

Runtime system ABAP

ã SAP AG 1999

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.

(C) SAP AG

BC400

9-13

Transport de données du programme vers le dynpro

Programme ABAP Objets de données

wa_spfli sdyn_ sdyn_conn sdyn_conn Zones et types définis localement

DATA wa_spfli TYPE spfli. TABLES sdyn_conn

Process Before Output Process After Input

CALL SCREEN 100.

Screen 100

Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

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

n

Temps

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.

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.

(C) SAP AG

BC400

9-14

Transport de données du dynpro vers le programme

Programme ABAP Objets de données

wa_spfli sdyn_ sdyn_conn sdyn_conn Zones et types définis localement

DATA wa_spfli TYPE spfli. TABLES sdyn_conn

Process Before Output Process After Input

CALL SCREEN 100.

Screen 100

Bloc de traitement ABAP

Runtime system ABAP ã SAP AG 1999

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

n

Temps

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.

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.

(C) SAP AG

BC400

9-15

Flux de données Structure : Zones :

wa_spfli Liste de base Zone HIDE

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

! !

! !

sdyn_conn Dynpro : Zone d'édition Zone de saisie ! !

!

!

!

! ! !

! !

Avant d'appeler le dynpro : SELECT SINGLE * FROM spfli ... ã SAP AG 1999

n

Au dernier niveau de développement, le programme doit permettre à l'utilisateur de modifier les données de la base. L'utilisateur doit être en mesure de modifier les zones FLTIME et DEPTIME. Pour permettre à l'utilisateur de modifier les données de plusieurs compagnies aériennes, une liste de base des compagnies aériennes pour lesquelles l'utilisateur est autorisé à modifier les données doit s'afficher. L'utilisateur arrive sur le dynpro de modification par un double-clic. Une fois les modifications effectuées, l'utilisateur retourne à la liste de base. Cependant, une nouvelle liste de base n'est pas créée. Les données modifiées ne doivent donc pas apparaître dans la liste de base.

n

Pour garantir une mise à jour des données affichées sur le dynpro, l'enregistrement est relu depuis la base de données au début de AT LINE-SELECTION.

n

Avantages de cette méthode : Ÿ pour la liste de base, seules les colonnes de la table de base de données affichées dans la liste doivent être lues. La performance peut être améliorée pour de longues listes ; Ÿ les données affichées sur le dynpro sont toujours à jour, même si l'enregistrement sélectionné vient seulement d'être modifié par le programme. Ceci ne serait pas le cas si toutes les données du dynpro étaient mémorisées dans la zone HIDE lors de la création de la liste de base ; Ÿ les modifications effectuées dans la base de données en utilisant le dynpro n'aboutissent pas à des valeurs incorrectes dans la liste de base, car les zones modifiables ne sont pas dans la liste ; Ÿ en prévision d'un concept de blocage : la durée de blocage peut être raccourcie. Vous trouverez des informations complémentaires sur ce sujet dans le chapitre Dialogues de base de données II ; Ÿ le programme peut être complété : des informations supplémentaires sur l'enregistrement de données peuvent s'afficher à l'écran sans devoir apporter de nombreuses modifications.

(C) SAP AG

BC400

9-16

Syntaxe pour le niveau 2

START-OF-SELECTION. * SELECT carrid connid airpfrom cityfrom airpto cityto INTO CORRESPONDING FIELDS OF wa_spfli FROM spfli. WRITE: / wa_spfli-carrid COLOR COL_KEY, wa_spfli-connid COLOR COL_KEY, ... . * zones-clés mises en buffer HIDE: wa_spfli-carrid, wa_spfliHIDE: wa_spfli-carrid, wa_spfli-connid. connid. ENDSELECT. AT LINE-SELECTION. SELECT SINGLE * FROM spfli INTO spfli wa_spfli SELECT SINGLE * FROM WHEREwa_spfli carrid = wa_spfli-carrid INTO AND carrid connid==wa_spfli-carrid wa_spfli-connid. WHERE MOVE-CORRESPONDING wa_spfli sdyn_conn. AND connid to = wa_spfli-connid. CALL SCREEN 100. ã SAP AG 1999

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 MOVECORRESPONDING. Le système transporte automatiquement les données de la structure vers les zones du dynpro.

(C) SAP AG

BC400

9-17

Étape 3 : définition des boutons de commande

Liste des vols Message 1 dans

Vol Départ Destination barre d'état Départ LH 0400 FRA Francfort JFK New York LH 0402 FRA Francfort JFK New York ... Dynpro SQ 0002 SIN Singapour SFO San Francisco Modifier données données de vol C Compagnie aérienne LH Numéro de vol 0400

Message 2 dans barre d'état

Aéroport de départ Destination

FRA

Durée du vol Heure de départ

8:24

Sauvegarder

JFK

10:10:00

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 Texte Ligne

Compagnie aérienne Numéro de vol X

BOUTON2 Retour Colonne

Aéroport de départ Destination FCode

Durée du vol Heure de départ Sauvegarder

RETOUR

FType

Dict Prog Disp

Retour

Zone de saisie 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.

(C) SAP AG

BC400

9-20

Affectation d'un nom à la zone OK_CODE

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

Screen Painter

Screen Painter : liste d'él éments d'éléments Attributs généraux

OK

Nom de zone

Texte de zone

Code de fonction

BOUTON1 BOUTON2 OK_CODE

Sauvegarder Retour

SAUVEGARDER RETOUR

...

...

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

(C) SAP AG

BC400

9-21

Modules

Programme ABAP

Objets de données

100 CALL SCREEN 100.

PBO

MODULE .

MODULE OUTPUT. ENDMODULE.

PAI

MODULE .

MODULE INPUT. ENDMODULE.

Runtime system ABAP ã SAP AG 1999Temps

n

L'instruction ABAP CALL SCREEN interrompt le traitement du bloc de traitement et appelle un dynpro.

n

À chaque dynpro correspondent deux blocs événement : n

PROCESS BEFORE OUTPUT (PBO) est traité immédiatement avant l'affichage d'un dynpro. La fonction des modules appelés à ce stade est, par exemple, d'insérer des valeurs recommandées dans les zones de saisie.

n

PROCESS AFTER INPUT (PAI) est traité immédiatement après une action utilisateur. Toute logique de programme influencée par une action utilisateur doit être traitée au PAI. Vous trouverez plus de détails à ce sujet à l'étape 3.

n

Note : le code des événements PBO et PAI s'écrit en utilisant Screen Painter et non l'Éditeur ABAP. Ces deux blocs d'événements constituent la logique d'exécution d'un dynpro. Lorsque vous programmez cette logique, utilisez la syntaxe Dynpro ABAP. Parmi ces commandes, MODULE est la plus importante. Elle appelle un module, qui est un bloc de traitement ABAP spécifique.

n

Les modules sont des blocs de traitement ABAP ne comportant aucune interface, appelés uniquement depuis la logique d'exécution du dynpro. Les modules commencent par l'instruction ABAP MODULE et se terminent par ENDMODULE.

n

La logique de programme, qui appartient logiquement à un dynpro spécifique, doit normalement être exécutée aux événements PBO et PAI du dynpro.

(C) SAP AG

BC400

9-22

Dynpro suivant statique = 0

Programme ABAP

Objets de données

100 CALL SCREEN 100.

PBO

PAI

Attributs de dynpro Dynpro suivant

0

Dynpro suivant 0

Runtime system ABAP ã 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é.

(C) SAP AG

BC400

9-23

Dynpro suivant statique = numéro de dynpro

Programme ABAP

Objets de données

100 CALL SCREEN 100.

PBO

PAI

Attributs de dynpro Dynpro suivant

100

Dynpro suivant 100

Runtime system ABAP ã 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.

(C) SAP AG

BC400

9-24

Paramétrer dynamiquement Dynpro suivant

Programme ABAP

Objets de données

100 CALL SCREEN 100.

PBO

PAI

SET SCREEN 0. SET SCREEN 0. 0

Attributs de dynpro Dynpro suivant

100

Dynpro suivant 0

Runtime system ABAP ã SAP AG 1999Temps

n

Vous pouvez utiliser l'instruction ABAP SET SCREEN 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.

(C) SAP AG

BC400

9-25

Logique du programme

Screen Painter

Éditeur ABAP

PROCESS BEFORE OUTPUT. MODULE clear_ok_code.

Sauvegarder

Retour

MODULE clear_ok_code OUTPUT. CLEAR ok_code . ENDMODULE.

MODULE user_command_0100 INPUT. * LOGIQUE DE PROGRAMME

PROCESS AFTER INPUT. MODULE user_command_0100.

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

ã SAP AG 1999

n

A l'aide de la zone OK_CODE,différentes logiques de programme peuvent maintenant être exécutées par les modules PAI en fonction du choix de l'utilisateur.

n

Si une zone OK_CODE n'est pas réinitialisée, des erreurs risquent de se produire car les boutons de commande ne sont pas tous dotés d'un code de fonction. Il existe deux manières d'y parvenir : Ÿ initialisez la zone OK_CODE dans le module PBO. Elle est alors mise à sa valeur initiale au moment du PAI, à moins que l'utilisateur ait exécuté une action utilisateur à laquelle est affecté un code de fonction. Dans ce cas, la zone OK_CODE contient le code de fonction ; Ÿ utilisez une zone auxiliaire, et dans un module du PAI, copiez le contenu de la zone OK_CODE dans la zone auxiliaire. Réinitialisez alors la zone OK_CODE. Dans ce cas c'est la zone auxiliaire qui doit être testée dans le module PAI pour évaluer le code de fonction.

(C) SAP AG

BC400

9-26

Navigation forward : création de modules Screen Painter

Créer un objet

PROCESS AFTER INPUT. MODULE user_command_0100. Double-C lic

PBO module USER_COMMAND_100 n'existe pas. Souhaitez-vous créer l'objet ?

Oui

Non

Annuler

Créer module PAI Module PAI

USER_COMMAND_0100

Inclure sélection ZBC400_00_DYNPRO

Inclure Programme principal

Éditeur ABAP

MODULE user_command_100 INPUT.

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.

(C) SAP AG

BC400

9-27

Utilisation de la fonction "Sauvegarder"

DATA: ok_code LIKE sy-ucomm.

. . MODULE USER_COMMAND_100 INPUT. CASE ok_code. WHEN WHEN 'BACK'. 'BACK'. SET SCREEN 0. MESSAGE s057(BC400). WHEN WHEN 'SAVE'. 'SAVE'. * L'appel d'un module de fonction pour sauvegarder les modifications est laissé * pour des raisons didactiques jusqu'au chapitre "Dialogues de base de données II" SET SCREEN 0. MESSAGE s058(BC400). ENDCASE. ENDMODULE. ã 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é.

(C) SAP AG

BC400

9-28

Dialogues utilisateur : dynpros : résumé du chapitre

Vous êtes maintenant capable : l de décrire les attributs et les avantages des dynpros l d'écrire un programme qui : l affiche les données sur un dynpro l permet à l'utilisateur de modifier certaines de ces données l permet à l'utilisateur d'influencer le traitement ultérieur du programme en utilisant des boutons de commande

ã SAP AG 1999

(C) SAP AG

BC400

9-29

Exercices

(C) SAP AG

BC400

9-30

(C) SAP AG

BC400

9-31

Chapitre : Dynpro Sujet : Création de dynpros

À la fin de ces exercices, vous serez en mesure : • de créer des dynpros ; • d’appeler des dynpros existants à partir du programme.

Le programme SAPBC400UDT_DYNPRO_1 affiche toutes les réservations effectuées par une agence sous forme de liste. Complétez le programme comme suit : Le double-clic sur une ligne dans la liste de base doit appeler un dynpro ; ce dynpro doit contenir des zones de saisies pour des données de réservations spécifiques qui ne sont pas affichées sur la liste ; ce dynpro doit également contenir des zones d’édition pour des données de réservations qui sont déjà affichées sur la liste ; quelle que soit l’action utilisateur effectuée sur le dynpro, la liste de base doit se réafficher. Programme :

ZBC400_##_DYNPRO

Solution modèle :

SAPBC400UDS_DYNPRO_1

Modèle :

SAPBC400UDT_DYNPRO_1

1-1

Copiez le modèle SAPBC400UDT_DYNPRO_1 vers votre programme ZBC400_##_DYNPRO. Affectez le programme à la classe de développement ZBC400_## et à l'ordre de modification pour votre projet "BC400…" (remplaçant ## par votre numéro de groupe).

1-2

Familiarisez-vous avec le programme. Testez le programme en utilisant le numéro d’agence 1## (## est votre numéro de groupe).

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.

(C) SAP AG

BC400

9-32

1-5

1-6

(C) SAP AG

Créez des zones de saisie/d’édition sur le dynpro. Lorsque vous affectez des types de zone, référez-vous à la structure SDYN_BOOK du Dictionnaire ABAP. •

Les zones-clés de la table de réservation CARRID, CONNID, FLDATE, et BOOKID doivent être copiées avec leurs labels.



Le nom client NAME doit se copier sans label et doit s’afficher à côté du numéro client.



Les zones CUSTOMID CUSTTYPE, SMOKER, CLASS, LOCCURAM et LOCCURKEY doivent être copiées avec leurs labels.

Gérez les attributs de zone de dynpro : •

les zones CARRID, CONNID, FLDATE, BOOKID et CUSTOMID doivent s’afficher comme des zones d’édition (attribut Zone d’édition) ;



le nom client NAME doit s’afficher à côté du numéro client sans texte (attribut Édition uniquement) ;



les zones CUSTOMID CUSTTYPE, SMOKER, CLASS, LOCCURAM et LOCCURKEY sont des zones de saisie/édition (attribut zone de saisie/zone d’édition).

BC400

9-33

Chapitre : Dynpro Sujet : Transport de données

À la fin de ces exercices, vous serez en mesure : • de compléter les zones de dynpro avec des données du programme.

Complétez votre programme ZBC400_##_ DYNPRO : un double-clic sur une ligne de la liste de base doit afficher les détails de la réservation sélectionnée au dynpro. Si l’utilisateur modifie des données au dynpro, ces modifications doivent alors être disponibles dans le programme dès que l’utilisateur quitte le dynpro.

Programme :

ZBC400_##_DYNPRO

Solution modèle :

SAPBC400UDS_DYNPRO_2

2-1

Complétez votre programme, ZBC400_##_DYNPRO, ou copiez la solution modèle adéquate SAPBC400UDS_DYNPRO_1 et nommez-la ZBC400_##_DYNPRO_2. Affectez votre programme à la classe de développement ZBC400_## et à l'ordre de transport pour ce projet, BC400… (en remplaçant ## par votre numéro de groupe).

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

(C) SAP AG

BC400

9-34

Pour cela, avant d’appeler le dynpro, copiez les données les plus récentes de la réservation sélectionnée de la table SBOOK vers une structure qui possède la même structure de ligne que la table de base de données. Si l’enregistrement de données ne peut être lu, le système doit afficher le message d’information 176 de la classe de messages BC400. Si l’enregistrement est lu avec succès, appelez le 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

(C) SAP AG

BC400

9-35

À la fin de ces exercices, vous serez en mesure : • de créer des boutons de commande sur des dynpros ; • de traiter le code système lancé lorsque l’utilisateur clique sur un bouton de commande et contrôle le déroulement du programme ; • de définir de manière dynamique le dynpro suivant. Complétez votre programme ZBC400_##_ DYNPRO: l’utilisateur doit pouvoir choisir entre deux boutons de commande sur le dynpro qui contrôle le déroulement du programme.

Programme :

ZBC400_##_DYNPRO

Solution modèle :

SAPBC400UDS_DYNPRO_3

3-1

Complétez votre programme, ZBC400_##_DYNPRO, ou copiez la solution modèle adéquate SAPBC400UDS_DYNPRO_2 et nommez-la ZBC400_##_DYNPRO_3. Affectez votre programme à la classe de développement ZBC400_## et à la tâche déjà créée pour vous (en remplaçant ## par votre numéro de groupe).

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

Nom du bouton de commande PUSH_BACK

Retour

RETOUR

PUSH_SAVE

Sauvegarder

SAUVEGARDER

Texte

Code de fonction

ou icône ICON_SYSTEM_SAVE 3-3

Désignez la zone OK_CODE du dynpro et déclarez un objet de données du même nom (et du type correspondant) dans le programme. Naviguez dans la logique d’exécution. Créez un module pour le traitement du code de fonction (en utilisant Navigation forward) lors de PROCESS AFTER INPUT :

3-4

Code de fonction RETOUR

Aucun

Dynpro suivant Liste

SAUVEGARDER

D'abord :

Liste

(C) SAP AG

Action

BC400

9-36

Code de fonction

Action

Dynpro suivant

N° du message d’informations 060(BC400) Autres

3-5

(C) SAP AG

Aucun

Dynpro 100

Assurez-vous qu’appuyer sur "Entrée" provoque toujours l’affichage du dynpro 100, indépendamment de l’historique de navigation. À cette fin, utilisez l’une ou l’autre des deux méthodes pour initialiser OK_CODE.

BC400

9-37

Solutions

(C) SAP AG

BC400

9-38

Chapitre : Dynpro Sujer : Création de dynpros

Solution modèle : Programme SAPBC400UDS_DYNPRO_1 *&--------------------------------------------------------------* *& Report

SAPBC400UDS_DYNPRO_1

*&

* *

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

REPORT

sapbc400uds_dynpro_1.

CONSTANTS: actvt_display TYPE activ_auth VALUE '03', actvt_change TYPE activ_auth VALUE '02'.

PARAMETERS: pa_agnum TYPE s_agncynum. DATA: wa_cust TYPE sbc400cust, it_cust TYPE sbc400_t_sbc400cust. DATA: wa_sbook TYPE sbook.

START-OF-SELECTION. SELECT id name FROM scustom INTO TABLE it_cust. SELECT carrid connid fldate bookid customid FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook WHERE agencynum = pa_agnum. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD wa_sbook-carrid (C) SAP AG

BC400

9-39

ID 'ACTVT'

FIELD actvt_display.

IF sy-subrc = 0. READ TABLE it_cust INTO wa_cust WITH TABLE KEY id = wa_sbook-customid. WRITE: / wa_sbook-carrid COLOR COL_KEY, wa_sbook-connid COLOR COL_KEY, wa_sbook-fldate COLOR COL_KEY, wa_sbook-bookid COLOR COL_KEY, wa_cust-name COLOR COL_KEY. ENDIF. ENDSELECT.

* Le programme continue après avoir sélectionné une réservation sur la * liste de base. AT LINE-SELECTION. IF sy-lsind = 1. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD wa_sbook-carrid ID 'ACTVT' FIELD actvt_change. IF sy-subrc = 0. CALL SCREEN 100. ELSE. MESSAGE s047(bc400) WITH wa_sbook-carrid. ENDIF. ENDIF.

(C) SAP AG

BC400

9-40

Chapitre : Dynpro Sujet : Transport de données

Solution modèle : programme SAPBC400UDS_DYNPRO_2

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

SAPBC400UDS_DYNPRO_2

*&

* *

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

REPORT

sapbc400uds_dynpro_2.

CONSTANTS: actvt_display TYPE activ_auth VALUE '03', actvt_change TYPE activ_auth VALUE '02'.

TABLES: sdyn_book. PARAMETERS: pa_agnum TYPE s_agncynum. DATA: wa_cust TYPE sbc400cust, it_cust TYPE sbc400_t_sbc400cust. DATA: wa_sbook TYPE sbook. START-OF-SELECTION. SELECT id name FROM scustom INTO TABLE it_cust.

SELECT carrid connid fldate bookid customid FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook WHERE agencynum = pa_agnum. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD wa_sbook-carrid ID 'ACTVT'

FIELD actvt_display.

IF sy-subrc = 0. READ TABLE it_cust INTO wa_cust WITH TABLE KEY id = wa_sbook-customid. WRITE: / wa_sbook-carrid COLOR COL_KEY, wa_sbook-connid COLOR COL_KEY, wa_sbook-fldate COLOR COL_KEY, (C) SAP AG

BC400

9-41

wa_sbook-bookid COLOR COL_KEY, wa_cust-name COLOR COL_KEY.

* Masquer des zones-clés de la table de base de données SBOOK et nom client HIDE: wa_sbook-carrid, wa_sbook-connid, wa_sbook-fldate, wa_sbook-bookid, wa_cust-name. ENDIF. ENDSELECT. CLEAR wa_sbook.

AT LINE-SELECTION. IF sy-lsind = 1. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD wa_sbook-carrid ID 'ACTVT' FIELD actvt_change. IF sy-subrc = 0. SELECT SINGLE * FROM sbook INTO wa_sbook WHERE carrid

= wa_sbook-carrid

AND

connid

= wa_sbook-connid

AND

fldate

= wa_sbook-fldate

AND

bookid

= wa_sbook-bookid.

IF sy-subrc 0. MESSAGE i176(bc400). ELSE. MOVE-CORRESPONDING wa_sbook TO sdyn_book. MOVE wa_scust-name TO sdyn_book-name. CALL SCREEN 100. ENDIF. ELSE. MESSAGE s047(bc400) WITH wa_sbook-carrid. ENDIF. ENDIF. CLEAR wa_sbook.

(C) SAP AG

BC400

9-42

Chapitre : Dynpro Sujet : Transport de zone et traitement dynpro suivant

Solution modèle : Programme SAPBC400UDS_DYNPRO_3

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

SAPBC400UDS_DYNPRO_3

*&

* *

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

REPORT

sapbc400uds_dynpro_3.

CONSTANTS: actvt_display TYPE activ_auth VALUE '03', actvt_change TYPE activ_auth VALUE '02'.

TABLES: sdyn_book. PARAMETERS: pa_agnum TYPE s_agncynum. DATA: wa_cust TYPE sbc400cust, it_cust TYPE sbc400_t_sbc400cust. DATA: wa_sbook TYPE sbook. DATA: ok_code LIKE sy-ucomm, save_ok LIKE ok_code.

START-OF-SELECTION. SELECT id name FROM scustom INTO TABLE it_cust. SELECT carrid connid fldate bookid customid FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook WHERE agencynum = pa_agnum. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD wa_sbook-carrid ID 'ACTVT'

FIELD actvt_display.

IF sy-subrc = 0. READ TABLE it_cust INTO wa_cust WITH TABLE KEY id = wa_sbook-customid. WRITE: / wa_sbook-carrid COLOR COL_KEY, wa_sbook-connid COLOR COL_KEY, (C) SAP AG

BC400

9-43

wa_sbook-fldate COLOR COL_KEY, wa_sbook-bookid COLOR COL_KEY, wa_cust-name COLOR COL_KEY. * Masquer des zones-clés de la table de base de données SBOOK et nom client HIDE: wa_sbook-carrid, wa_sbook-connid, wa_sbook-fldate, wa_sbook-bookid, wa_cust-name. ENDIF. ENDSELECT. CLEAR wa_sbook.

AT LINE-SELECTION. IF sy-lsind = 1. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD wa_sbook-carrid ID 'ACTVT' FIELD actvt_change. IF sy-subrc = 0. SELECT SINGLE * FROM sbook INTO wa_sbook WHERE carrid

= wa_sbook-carrid

AND

connid

= wa_sbook-connid

AND

fldate

= wa_sbook-fldate

AND

bookid

= wa_sbook-bookid.

IF sy-subrc 0. MESSAGE i176(bc400). ELSE. MOVE-CORRESPONDING wa_sbook TO sdyn_book. MOVE wa_scust-name TO sdyn_book-name. CALL SCREEN 100. ENDIF. ELSE. MESSAGE s047(bc400) WITH wa_sbook-carrid. ENDIF. ENDIF. CLEAR wa_sbook.

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

Module

USER_COMMAND_0100

INPUT

*&--------------------------------------------------------------* (C) SAP AG

BC400

9-44

* déroulement de dynpro dynamique dépendant d’une action utilisateur *---------------------------------------------------------------* MODULE user_command_0100 INPUT. save_ok = ok_code . * Effacer la zone OK-Code afin de l’initialiser sur dynpro * suivant CLEAR ok_code . CASE save_ok. WHEN 'BACK'. SET SCREEN 0. WHEN 'SAVE'. MOVE-CORRESPONDING sdyn_book TO wa_sbook. * La sauvegarde des données modifiées sera exécutée ultérieurement message i060(bc400). SET SCREEN 0. WHEN OTHERS. SET SCREEN 100. ENDCASE. ENDMODULE.

(C) SAP AG

" USER_COMMAND_0100

BC400

INPUT

9-45

Interfaces

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

(C) SAP AG

BC400

10-1

Interfaces : objectifs du chapitre

À la fin de ce chapitre, vous serez en mesure : l de créer un titre GUI l de créer des statuts GUI pour listes et dynpros qui contiennent : l des barres de menus l des barres d'outils standard l des barres d'outils d'application l des affectations de touches de fonction

ã SAP AG 1999

(C) SAP AG

BC400

10-2

Synthèse : objets d'écran

Données de base du vol

Traiter

Saut

Système

Aide Titre GUI SET TITLEBAR .

Aide Sélection Retour . . .

F1 F2 F3

Barre de menus Barre d'outils standard B. d'outils d'applic. Affectation de touches de fonction

Statut GUI SET PF-STATUS .

ã SAP AG 1999

n

Toutes les interfaces utilisateur comprennent les outils/objets suivants :

n

une barre de titre contenant le titre de l'écran, de l'écran de sélection ou de la liste affichée ;

n

une barre de menus déroulants ;

n

des menus contenant les fonctions exécutables du programme en cours. Un menu peut comporter des sous-menus. Les menus "Système" et "Aide" se trouvent sur chaque écran du système R/3 et contiennent toujours les mêmes fonctions. Aucun de ces menus ne peut être modifié ni masqué.

n

une barre d'outils standard dont les icônes correspondent aux fonctions les plus fréquemment utilisées. La barre d'outils standard de R/3 contient toujours les mêmes icônes, auxquelles sont affectées des fonctions standard. Les fonctions qui ne sont pas accessibles depuis une interface déterminée sont grisées ;

n

des affectations de touches de fonction, qui s'affichent d'un clic avec le bouton droit de la souris. En principe, vous devez pouvoir activer toutes les fonctions de menu à l'aide de ces touches ;

n

une barre d'outils d'application dont les icônes et les boutons de commande donnent accès aux fonctions les plus fréquemment utilisées sur l'écran actif.

n

Chaque programme est créé avec une interface contenant l'ensemble des objets/outils énumérés cidessus. Ensuite, vous créez des vues différentes (statuts GUI) de cette interface pour les écrans, les écrans de sélection et les listes du programme.

(C) SAP AG

BC400

10-3

Exemple d'interface de programme

SAP R/3 Données de vol de base

Liste

Traiter Saut Système Aide !

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

é é

! é !

!

ê

ê ê

Modifier les heures devol

Dynpro 0100

Traiter Saut Système Aide

Données de vol de base Imprimer Sauvegarder dans fichier PC Sauvegarder Ctrl+S Terminer

!

é é

! é !

ê

!

ê ê

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

(C) SAP AG

BC400

10-4

Principaux éléments d'interface

Titre 100 Barres de menus Barres de menus Données de base du vol

B. d'outils d'applic.

Affectation Affectation de de touches touches de de fonction fonction

B. d'outils d'applic. Données de base du vol

Affectation de touches de fonction ; Données de base du vol

Données de base du vol Traiter

Barre de menus

Saut

Liste des fonctions SAUVEGARDER

PRI

%PC

RW

%EX CHOISIR

RETOUR P+

P++

P--

P-

Liste des fonctions

ã SAP AG 1999

n

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

n

une barre de titre contenant le titre de l'écran, de l'écran de sélection ou de la liste affichée ;

n

une barre de menus déroulants ;

n

des menus liés aux fonctions de l'interface, que vous appelez par transactions et qui possèdent tous des mots-clés explicites. Les menus en cascade peuvent être définis par référence à un autre menu de la liste de menus et non à un code de fonction ;

n

des affectations de touches : fonctions affectées aux icônes de la barre d'outils standard et aux touches de fonction (touches F) ;

n

Les touches de fonction importantes peuvent aussi être affectées à des icônes et à des boutons de commande dans la barre d'outils d'application ;

n

des fonctions (par exemple, Remplacer, Rechercher ou Couper) affectées aux codes de fonction employés dans le programme pour évaluer les actions utilisateur. Toutes les fonctions d'une interface sont énumérées dans une liste de fonctions. Il existe des codes de fonction standard pour les listes.

n

Les programmes peuvent présenter plusieurs barres de menus, affectations de touches et barres d'outils d'application. Dans notre modèle de programme, vous ne devez créer qu'un objet dans chaque catégorie. La barre de menus doit comporter trois menus.

(C) SAP AG

BC400

10-5

Statuts : vues de l'interface utilisateur

Statut Statut "LISTE" "LISTE"

Liste

Barres de menus Données de base du vol

B. d'outils d'applic. Données de base du vol

Affectation de touches de fonction Données de base du vol

Liste des fonctions inactive

SAUVERETOUR GARDER

PRI

%PC

RW

%EX CHOISIR

P+

P++

P--

P-

Liste des fonctions

ã SAP AG 1999

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.

(C) SAP AG

BC400

10-6

Création d'un statut GUI pour une liste START-OF-SELECTION. SET PF-STATUS "LISTE" D. oub le-c Création d'un objet lic Statut GUI Le statut LISTE n'existe pas. Voulez-vous créer cet objet ? Oui

Création d'un statut Non Annulr Cance Programme xxxxx Statut

LISTE

Attributs de statut Courte description Type de statut

Statut pour liste des vols Statut de dialogue 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 '' 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.

(C) SAP AG

BC400

10-7

Ajustement des statuts Ajuster modèle de statut Inclure modèle dans

Conception orientée utilisateur

Statut

BASE

Modèle de statut ... Statut de liste Écran de sélection ...

Liste de sélection de ligne

Barres de menus Liste

Traiter

Saut

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

Liste de sélection de ligne

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

(C) SAP AG

BC400

10-8

Création d'un statut : affectation des touches

Barres de menus

Barre de menus des données de base

B. d'outils d'applic.

Barre d'outils d'application des données de base CHOISIR

Positions 1-7 Affectation de touches de fonction

Affectation de touches des données de base

Barre d'outils standard SAUVEGARDER

RETOUR

%EX

RW

PRI

%SC

P--

P-

Affectation recommandée des touches de fonction F2 F4 Maj-F8

PICK

Choisir

Affectation libre des touches de fonction F5 F6 F7 F8 F9 Maj-F1 ã SAP AG 1999

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

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.

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.

(C) SAP AG

BC400

10-9

Création de statuts : barres de menus

Barres de menus

Barre de menus des données de vol

Données de vol de base

Saut

Traiter

Code

Enoncé

PRI

Imprimer

CHOISIR

Choisir

%PC

Sauveg. ds fichier PC

%SC

Trouver

%SC+

Retrouver

RW

Annuler

SAUVEG. Sauvegarder %EX

Terminer

Code

Enoncé

Code

RETOUR

Enoncé

Retour

B. d'outils d'applic.

Barre d'outils d'application des données de base

affectation de touches de fonction

Affectation de touches des données de base

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

(C) SAP AG

BC400

10-10

Exemple d'interface de programme

Titre 100

Liste Statut "LISTE"

Statut "ÉCRAN" "ÉCRAN"

Barres de menus Données de base du vol Données de base du vol

Écran 0100

Écran 0100 B. d'outils d'applic. Données de base du vol

Affectation de touches de fonction Données de base du vol

Traiter Saut

Liste des fonctions SAUVERETOUR GARDER

PRI

%PC

RW

inactive

%EX CHOISIR

P+

P++

P--

Liste des fonctions standard

P-

ã SAP AG 1999

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.

(C) SAP AG

BC400

10-11

Création des titres GUI d'un écran MODULE status_0100 OUTPUT. * SET PF-STATUS 'xxxxxxxx'. SET TITLEBAR '100'. '100' Dou ENDMODULE. bl

e-c lic Création d'un objet

Statut GUI Le titre 100 n'existe pas. Voulez-vous créer cet objet ? Oui

Non

Annuler

Création d'un titre

Code du titre

Programme

xxxxx

Code du titre

100

Titres

Sauvegarder Modifier les heures de vol

Titres Connexions de vol

Continuer ã SAP AG 1999

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

(C) SAP AG

BC400

10-12

Création de statuts GUI d'un écran MODULE status_0100 OUTPUT. SET PF-STATUS "ÉCRAN" 'SCREEN'. Dou ble SET TITLEBAR '100'. -cli c ENDMODULE. Création d'un objet

Statut GUI Le statut ÉCRAN n'existe pas. Voulez-vous créer cet objet ? Oui

Création d'un statut Non Annulr Cance Programme xxxxx Statut

ÉCRAN

Attributs de statut Désignation Type de statut

Statut pour liste des vols Statut de dialogue Boîte de dialogue Menu contextuel

ã SAP AG 1999

n

Pour la création d'un statut d'écran :

n

créez un module PBO contenant l'instruction SET PF-STATUS ''. NOM peut contenir huit chiffres ou lettres majuscules. Cette instruction est prégénérée dès que vous créez le module status_nnnn à l'aide de la navigation ;

n

utilisez la navigation pour créer le statut ;

n

choisissez le type de statut "Dialogue" ;

n

appuyez sur F4 (aide) pour afficher les affectations de touches de fonction et la barre de menus ;

n

choisissez les fonctions que vous voulez activer. Dans notre exemple, il s'agit de "RETOUR" et de "SAUVEGARDER".

n

Dans le module PAI, ces codes de fonction sont évalués en tant que simples codes des boutons de commandes d'un écran. Pour inclure d'autres codes de fonction, développez le module PAI dans lequel les codes de fonction sont traités. (dans l'exemple USER_COMMAND_0100).

(C) SAP AG

BC400

10-13

Insertion d'éléments existants

Barres de menus

ÉCRAN

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

ÉCRAN ÉCRAN

Liste des fonctions Affiche des objets existants et vous permet de les sélectionner pour les insérer

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

(C) SAP AG

BC400

10-14

Interfaces : résumé du chapitre

Vous êtes maintenant capable : l de créer un titre GUI l de créer des statuts GUI pour listes et écrans qui contiennent : l des barres de menus l des barres d'outils standard l des barres d'outils d'application l des affectations de touches de fonction

ã SAP AG 1999

(C) SAP AG

BC400

10-15

Exercices

(C) SAP AG

BC400

10-16

(C) SAP AG

BC400

10-17

Chapitre : Interfaces

À la fin de ces exercices, vous serez en mesure : • de créer les interfaces utilisateur d’un programme ; • d’inclure un statut et un titre GUI dans un programme.

Complétez votre programme ZBC400_##_ SCREEN. Le système affiche dans la barre de titre les textes appartenant à la liste et à l’écran. Vous devez spécifier le statut correct pour la liste et l’écran.

Programme :

ZBC400_##_DYNPRO

Solution modèle :

SAPBC400UDS_DYNPRO_4

1-1

Complétez votre programme, ZBC400_##_DYNPRO, ou copiez la solution modèle adéquate SAPBC400UDS_DYNPRO_3 et nommez-la ZBC400_##_DYNPRO_4. Affectez votre programme à la classe de développement ZBC400_## et à l'ordre de transport pour ce projet, BC400… (en remplaçant ## par votre numéro de groupe).

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

(C) SAP AG

Affectez un titre GUI à la liste de base et à l’écran (à l’aide de la navigation) et générez l’interface.

BC400

10-19

Solutions

(C) SAP AG

BC400

10-20

(C) SAP AG

BC400

10-21

Chapitre : Interfaces

1-2

Dans le texte du programme source, ajoutez l’instruction SET l’événement START-OF-SELECTION.

PF-STATUS 'LISTE'

à

(Note : le texte situé entre les deux apostrophes doit apparaître en majuscules). •

Dans la ligne SET LISTE.

PF-STATUS 'LISTE'

du programme, double-cliquez sur le nom du statut

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 pour fermer la boîte de nom de la liste de menus par Écritures. Sélectionnez 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

Placez le curseur sur le code de fonction SAUVEGARDER et désactivez la fonction en utilisant



pour fermer la boîte de dialogue.

.

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.

(C) SAP AG

BC400

10-22



Utilisez la navigation pour créer ce module. Double-cliquez sur le nom du module ; choisissez Oui pour confirmer les options de la boîte de dialogue. Dans la boîte de dialogue suivante, choisissez Programme principal et ajoutez le texte source suivant : *&----------------------------------------* *&

Module

SET_STATUS_0100

OUTPUT

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

MODULE set_status_0100 OUTPUT. SET PF-STATUS 'DYNPRO'. ENDMODULE.

(C) SAP AG



Utilisez la navigation pour créer le statut. Double-cliquez sur 'DYNPRO' dans l’instruction SET PF-STATUS 'DYNPRO'.



Choisissez Oui pour confirmer les options dans la boîte de dialogue.



Dans la boîte de dialogue suivante, introduisez une courte description et choisissez Statut de dialogue.



Placez le curseur sur la barre de menus et choisissez l’icône référence à la barre de menus existante par un double-clic.



Placez le curseur sur la touche de fonction et choisissez l’icône . Créez la référence de l’affectation de la touche de fonction existante par un double-clic.



Activez les deux fonctions SAUVEGARDER et RETOUR en plaçant le curseur sur le code de fonction du menu ou de l’affectation de touche de fonction et choisissez .



Sauvegardez vos entrées et activez le statut.



Activez l’écran.

BC400

. Créez la

10-23

1-4

Complétez le texte source du programme dans START-OF-SELECTION.: SET PF-STATUS 'LIST'. SET TITLEBAR 'LIST'. Utilisez la navigation pour créer le titre et saisissez le texte dans la boîte de dialogue qui apparaît. Complétez le texte source du module SET_STATUS_0100 : *&------------------------------------------* *&

Module

SET_STATUS_0100

OUTPUT

*&------------------------------------------* MODULE set_status_0100 OUTPUT. SET PF-STATUS 'DYNPRO'. SET TITLEBAR 'DYNPRO'. ENDMODULE. Utilisez la navigation pour créer le titre et saisissez le texte dans la boîte de dialogue qui apparaît. Activez le statut et le programme.

Texte source du programme SAPBC400UDS_DYNPRO_4 *&--------------------------------------------------------------* *& Report

SAPBC400UDS_DYNPRO_4

*&

* *

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

REPORT

sapbc400uds_dynpro_3.

CONSTANTS: actvt_display TYPE activ_auth VALUE '03', actvt_change TYPE activ_auth VALUE '02'.

TABLES: sdyn_book. PARAMETERS: pa_agnum TYPE s_agncynum. DATA: wa_cust TYPE sbc400cust, it_cust TYPE sbc400_t_sbc400cust. DATA: wa_sbook TYPE sbook. DATA: ok_code LIKE sy-ucomm, save_ok LIKE ok_code.

(C) SAP AG

BC400

10-24

START-OF-SELECTION.

SELECT id name FROM scustom INTO TABLE it_cust. SELECT carrid connid fldate bookid customid FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook WHERE agencynum = pa_agnum. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD wa_sbook-carrid ID 'ACTVT'

FIELD actvt_display.

IF sy-subrc = 0. READ TABLE it_cust INTO wa_cust WITH TABLE KEY id = wa_sbook-customid. WRITE: / wa_sbook-carrid COLOR COL_KEY, wa_sbook-connid COLOR COL_KEY, wa_sbook-fldate COLOR COL_KEY, wa_sbook-bookid COLOR COL_KEY, wa_cust-name COLOR COL_KEY. * Masquer des zones-clés de la table de base de données SBOOK et nom client HIDE: wa_sbook-carrid, wa_sbook-connid, wa_sbook-fldate, wa_sbook-bookid, wa_cust-name. ENDIF. ENDSELECT. * Définir le titre et le statut de la liste Définir la barre de titres 'LISTE' avec pa_agnum. Définir le statut PF 'LISTE'. CLEAR wa_sbook.

AT LINE-SELECTION. IF sy-lsind = 1. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD wa_sbook-carrid ID 'ACTVT' FIELD actvt_change. IF sy-subrc = 0. SELECT SINGLE * FROM sbook INTO wa_sbook WHERE carrid

(C) SAP AG

= wa_sbook-carrid

AND

connid

= wa_sbook-connid

AND

fldate

= wa_sbook-fldate

AND

bookid

= wa_sbook-bookid. BC400

10-25

IF sy-subrc 0. MESSAGE i176(bc400). ELSE. MOVE-CORRESPONDING wa_sbook TO sdyn_book. MOVE wa_scust-name TO sdyn_book-name. CALL SCREEN 100. ENDIF. ELSE. MESSAGE s047(bc400) WITH wa_sbook-carrid. ENDIF. ENDIF. CLEAR wa_sbook.

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

Module

SET_STATUS_0100

OUTPUT

*&-------------------------------------------------------* module set_status_0100 output. * set title and status of screen 100 set titlebar 'DYNPRO'. set pf-status 'DYNPRO'. endmodule.

" SET_STATUS_0100

OUTPUT

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

Module

USER_COMMAND_0100

INPUT

*&-------------------------------------------------------* * Le déroulement d’un écran dynamique dépend d’une action utilisateur. *--------------------------------------------------------* MODULE user_command_0100 INPUT. (C) SAP AG

BC400

10-26

save_ok = ok_code . * Effacer la zone OK-Code afin de l’initialiser sur écran * suivant CLEAR ok_code . CASE save_ok. WHEN 'BACK'. SET SCREEN 0. WHEN 'SAVE'. MOVE-CORRESPONDING sdyn_book TO wa_sbook. * La sauvegarde de l’enregistrement de données modifiées sera * exécutée ultérieurement. message i060(bc400). SET SCREEN 0. WHEN OTHERS. SET SCREEN 100. ENDCASE. ENDMODULE.

(C) SAP AG

" USER_COMMAND_0100

BC400

INPUT

10-27

Réutilisation des composantes

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

(C) SAP AG

BC400

11-1

Réutilisation des composantes : objectifs du chapitre

À la fin de ce chapitre, vous serez en mesure : l de trouver et utiliser des modules de fonction l d'afficher une liste simple en utilisant ALV Grid Controls (objets des classes globales du Générateur de classes) l d'utiliser un BAPI et trouver des BAPI en utilisant le BAPI Browser l d'utiliser une base de données logique pour créer une liste hiérarchique d'informations de vol

ã SAP AG 1999

(C) SAP AG

BC400

11-2

Techniques d'encapsulation de la logique applicative

Réutiliser les composantes encapsulées dans la logique applicative

Objet

Groupe de fonctions

ABAP : possibilités techniques

Objet de gestion

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.

(C) SAP AG

BC400

11-3

Groupes de fonctions et modules de fonction

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

(C) SAP AG

BC400

11-4

Groupes de fonctions et modules de fonction

À la fin de ce cours, vous serez en mesure : l de décrire les différentes manières de trouver un module de fonction l de découvrir des informations importantes sur un module de fonction en utilisant le Générateur de modules de fonction l d'écrire un programme comportant un dialogue utilisateur standard formé dans un module de fonction

ã SAP AG 1999

(C) SAP AG

BC400

11-5

Groupe de fonctions

e ion fr ac onct e f In t d e 1

Interface

Mod

F face Inter

ction e fon ule d 5 Mod M

Sousprogrammes

Module de fonction FM4

Inte r fac e

le du FM o M

ule de f o FM3 nction

Mo In du te le rfa c d FM e fo e 2 ncti on Paramètres d'import

Paramètres d'export

Paramètres de modification

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.

(C) SAP AG

BC400

11-6

Module de fonction

Groupe de fonctions SousModule de programmes Interface fonction

Objets de données globaux

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

(C) SAP AG

BC400

11-7

Groupe de fonctions : flux de données

n ce ctio a f n er fo Int de 1

tion

Mod u

nc e fo ule d 5 M

F face Inter

Inte rfac e

M od

le d e fo FM3 nction

le du FM o M

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

Module de fonction FM4

Interface

ã SAP AG 1999

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.

(C) SAP AG

BC400

11-8

Exemple : la boîte de dialogue Annuler

!

"Les données seront perdues."

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.

(C) SAP AG

BC400

11-9

Exigence : module de fonction pour dialogue standard

STO1

!

! Oui

ligne de texte titre



réponse

réponse

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

(C) SAP AG

BC400

11-10

Recherche du module de fonction Éditeur Rechercher l'instruction CALL FUNCTION Démarrer en mode débogage Insérer un point d'arrêt dans l'instruction CALL FUNCTION ou CALL SCREEN Sur l'écran sur lequel l'utilisateur choisit "Annuler" Examine logique d'exécution dans l'événement Process After Input

Sur un écran appelé par le module de fonction

Hiérarchie des composantes Sélectionner des composantes applicatives du système d'information du Repository

F1 Info techniques Nom de l'écran et du programme principal Regarder un groupe de fonctions dans Object Navigator Cas d'emploi pour numéro d'écran

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

ã SAP AG 1999

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.

(C) SAP AG

BC400

11-11

Interface de module de fonction

Module de fonction Attributs

POPUP_TO_CONFIRM_LOSS_OF_DATA Import

Export

Modification

Exceptions

Code source

Transmettre Facultatif Valeur Description

Paramètres ... Ref. type ... LIGNE DE TEXTE 1 ! Les paramètres Nicht Optionale LIGNE DE TEXTE 2 ! ! obligatoires Parameter des TITRE ! d'un module de fonction Constructors START_COLUMN ! ! doivent être transmis START_ROW müssen bei à l'instruction ! ! CREATE OBJECT CALL FUNCTION

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.

(C) SAP AG

BC400

11-12

Documentation et test

Documentation • Courte description • • • • • • •

Fonction Exemple Notes Informations complémentaires Paramètre Exceptions Groupe de fonctions

Test Paramètres d'export

Paramètres d'import

Module de fonction

Exception

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

(C) SAP AG

BC400

11-13

Syntaxe : appel du module de fonction

PAI

ligne de texte titre

réponse

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

ã SAP AG 1999

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.

(C) SAP AG

BC400

11-14

Insertion d'appel de module de fonction dans un programme

Modèle Insérer instruction CALL FUNCTION ... ... ... ...

Le système génère le code ABAP

POPUP_TO_CONFIRM_LOSS_OF_DATA

CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA' EXPORTING ligne de texte = titre = IMPORTING réponse =

Entrer paramètres effectifs Traiter code retour

CASE SY-SUBRC. ã SAP AG 1999

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

(C) SAP AG

BC400

11-15

Objets et méthodes

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

(C) SAP AG

BC400

11-16

Objets et méthodes : objectifs du cours

À la fin de ce cours, vous serez en mesure : l de trouver des informations importantes sur les classes et leurs méthodes en utilisant le Générateur de classes l d'écrire un programme qui affiche une liste simple en utilisant ALV Grid Control, et qui contient : l des variables de référence l l'instruction CREATE OBJECT l l'appel des méthodes l un domaine container sur un dynpro

ã SAP AG 1999

(C) SAP AG

BC400

11-17

Avantages de la programmation orientée objets

l Processus de développement de logiciel intégré n

Communication facilitée entre utilisateurs et développeurs

l Encapsulation n

Des programmes plus clairs et plus faciles à gérer

l Polymorphisme l Héritage

ã SAP AG 1999

n

Processus de développement de logiciel intégré : chaque phase du processus de développement (analyse, spécification, conception et implémentation) est décrite dans le même "langage". D'une manière idéale, les modifications apportées à la conception pendant l'implémentation s'appliquent rétrospectivement au modèle de données.

n

Encapsulation (masquage d'informations) : capacité de masquer l'implémentation d'un objet à partir d'autres composantes du système. Les composantes ne peuvent définir des hypothèses sur le statut interne d'un objet, et ne dépendent pas de l'utilisation d'une implémentation particulière pour communiquer avec l'objet.

n

Polymorphisme : dans la POO (programmation orientée objets), les objets de classes différentes réagissent différemment au même message.

n

Héritage : définit la relation d'implémentation entre les classes ; par exemple, une classe (la sousclasse) partage la structure et le comportement déjà définis dans une ou plusieurs superclasses.

(C) SAP AG

BC400

11-18

Réalité / fonctions / objets

Modèle Réalité

Maison

Arbre Méthode

Méthode

Données Méthode

Données Méthode

Méthode

Méthode

Grue Méthode

Données Méthode Méthode

Bateau Méthode

Données Méthode Méthode

l Les objets sont des abstractions de la réalité l Chaque objet forme une unité contenant aussi bien des données que ses fonctions associées

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

(C) SAP AG

BC400

11-19

Objets ABAP : objet d'exemple "Vol" bookid, réservation effectuée, pas de siège libre

carrid, connid, fdate

Méthode publique : Réserver

carrid connid fldate customid cas d'erreur

Attributs privés : sièges libres passagers

Méthode publique : Annuler

Vol annulé carrid connid fldate bookid customid

Cas d'erreur

ã SAP AG 1999

n

À titre d'exemple, considérez l'objet "vol".

n

L'objet contient des attributs privés propres aux vols : Ÿ attributs-clés : la combinaison Compagnie aérienne, vol et date de départ fournissent un identificateur unique pour chaque vol. Chaque numéro de vol contient également : l'aéroport de départ, l'heure de départ et l'aéroport de destination ; Ÿ liste des réservations : la liste des personnes qui ont réservé sur le vol et leurs numéros de réservation ; Ÿ informations sur le vol, telles que le type d'avion et le nombre maximum de sièges.

n

Méthodes privées : l'objet peut calculer le nombre de sièges libres à partir des attributs privés, la "liste des réservations" et "le nombre maximum de sièges vides".

n

L'objet contient une interface à deux méthodes : Ÿ la méthode "Réserver" : si cette méthode est appelée de l'extérieur de l'objet et qu'elle a transféré les données nécessaires à l'interface, elle utilise les attributs privés pour déterminer s'il reste des sièges vides ou non sur le vol. Si c'est le cas, le nouveau client s'ajoute à liste des réservations et un message de confirmation est transmis au programme appelant. Sinon, le système renvoie l'information que la réservation ne peut s'effectuer car le vol est déjà complet. Ÿ la méthode "Annuler": si cette méthode est appelée de l'extérieur de l'objet et qu'elle a transféré les données nécessaires à l'interface, elle utilise les attributs privés pour déterminer si le client est inclus ou non sur la liste des réservations. Dans ce cas, sa réservation est annulée et un message de confirmation retourne au programme appelant. Si le client n'apparaît pas sur la liste des réservations, le système affiche un message d'erreur.

(C) SAP AG

BC400

11-20

Scénario d'exemple : nouvelle réservation d'un vol

N'annulez le premier vol que si la nouvelle réservation s'effectue correctement. => Deux instances requises, une pour chaque vol

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.

(C) SAP AG

BC400

11-21

Les objets sont des instances d'une classe

Classe "vol" : modèle d'objets

Objet vol 2 : Instance de Classe "vol"

Objet vol 1 : Instance de 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).

(C) SAP AG

BC400

11-22

Déroulement du programme dans un programme ABAP ref1 ref2 AA Vol 0016 28.08.1999

CREATE OBJECT ref1 EXPORTING ...

LH 0400 Vol 28.08.1999

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

Programme ABAP

ã SAP AG 1999

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: TYPE REF TO .

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.

(C) SAP AG

BC400

11-23

Domaines fonctionnels des objets ABAP

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.

(C) SAP AG

BC400

11-24

Controls : éléments techniques I

ALV Grid Control : qu'est-ce qu'un control? l Composantes logicielles binaires indépendantes l installées localement sur le frontend et qui utilisent SAPGUI l Elles déplacent les fonctions du serveur d'application vers le frontend l Elles ont une classe d'objets dédiée dans ABAP OO l Elles sont conçues pour être réutilisables

ã SAP AG 1999

n

Le Central Control Framework exécute cette tâche

n

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.

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.

(C) SAP AG

BC400

11-25

Exemple : ALV Grid Control Détails

Trouver Trier

Filtrer

Addition

Télédécharger

Imprimer

Afficher variante

Barre d'outils

AA AA AA AA LH LH LH LH LH

17 17 17 64 400 400 400 402 402

2000-01-17 2000-02-20 2000-03-11 2000-05-19 2000-01-13 2000-02-26 2000-03-21 2000-03-04 2000-05-28

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

USD USD USD USD DEM DEM DEM DEM DEM

A321 A321 747-400 747-400 A310-300 A310-300 A310-300 A319 A319

ã SAP AG 1999

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

(C) SAP AG

BC400

11-26

Programme utilisant ALV Grid Control

Process Before Output

Domaine Écran 100

Process After Input

START-OFSELECTION.:

Custom Container Control

ALV Grid Control

ã SAP AG 1999

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.

(C) SAP AG

BC400

11-27

Objets et classes pour ALV Grid Control

Domaine

CL_GUI_CUSTOM_CONTAINER CL_GUI_ALV_GRID

Custom Container Control

Custom container

ALV Grid control

Générateur de classes ALV Grid Control

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

(C) SAP AG

BC400

11-28

CL_GUI_CONTROL_CONTAINER CL_GUI_CUSTOM_CONTAINER Superclasses Méthodes Constructeur

Classe Attributs

CL_GUI_CUSTOM_CONTAINER Interfaces

Paramètres pour la

Attributs

Méthodes

Événements Int. Types

méthode CONSTRUCTEUR C

Paramètre Transmettre Facultatif ... Ref. type ... Description PARENT ! ! Les paramètres NOM_CONTENEUR ! non optionnels de la ... ! ! !

méthode Constructeur doivent être transmis lorsque vous utilisez CREATE OBJECT

!

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

(C) SAP AG

BC400

11-29

CL_GUI_ALV_GRID CL_GUI_ALV_GRID Superclasses Interfaces Attributs Méthodes ... Constructeur

Paramètres non facultatifs I_PARENT TYPE REF TO CL_GUI_CONTAINER

... REFRESH_TABLE_DISPLAY ... SET_TABLE_FOR_FIRST_DISPLAY ... Redéfinition Événements

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

ã SAP AG 1999

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.

(C) SAP AG

BC400

11-30

Création d'un élément d'écran de Custom Control Screen Painter : Layout Barre d'outils

Domaine

Domaine d'écran : Type : CUSTOM CONTROL Nom : CONTENEUR_1 Reformatage Taille minimale Vertical : "X" 10 Horizontal : "X" 20

C

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

(C) SAP AG

BC400

11-31

Exemple de syntaxe : définition de variables de référence

DATA: gdt_spfli TYPE sbc400_t_spfli.

gdt_spfli DATA: container_r container_r TYPE TYPE REF REF TO TO cl_gui_custom_container, cl_gui_custom_container, grid_r TYPE REF TO cl_gui_alv_grid, grid_r TYPE REF TO cl_gui_alv_grid,

container _r grid_r

DATA: ok_code TYPE sy-ucomm. ok_code

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

ã SAP AG 1999

n

Le programme requiert deux variables de référence :

n

container_r, indique l'objet qui communique avec le container control. Elle est typée avec la classe globale cl_gui_custom_container ;

n

grid_r, indique l'objet qui communique avec ALV Grid control. Elle est typée avec la classe globale cl_gui_alv_grid.

(C) SAP AG

BC400

11-32

Exemple de syntaxe : CREATE OBJECT

MODULE create_control OUTPUT. IF container_r IS INITIAL. CREATE CREATEOBJECT OBJECTcontainer_r container_r EXPORTING EXPORTINGcontainer_name container_name=='CONTAINER_1'. 'CONTAINER_1'. container_r CREATE OBJECT OBJECT grid_r grid_r CREATE EXPORTING i_parent container_r. EXPORTING i_parent = =container_ref. grid_r CALL METHOD grid_r->set_table_for_first_display EXPORTING i_structure_name = 'SPFLI' CHANGING it_outtab = gdt_spfli. ELSE. CALL METHOD grid_r->refresh_table_display EXPORTING i_soft_refresh = 'X'. ENDIF. ENDMODULE. ã SAP AG 1999

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.

(C) SAP AG

BC400

11-33

Exemple de syntaxe : appel des méthodes

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

grid_r CALL METHOD grid_r->set_table_for_first_display EXPORTING i_structure_name = 'SPFLI' CHANGING it_outtab = gdt_spfli. ELSE. CALL METHOD grid_r->refresh_table_display EXPORTING i_soft_refresh = 'X'. ENDIF. ENDMODULE. ã SAP AG 1999

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.

(C) SAP AG

BC400

11-34

Objets de gestion et BAPI

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

(C) SAP AG

BC400

11-35

Objets de gestion et BAPI : objectifs du cours

À la fin de ce cours, vous serez en mesure : l de trouver des informations importantes sur les objets de gestion et leur BAPI en utilisant le BAPI Explorer et le Générateur d'objets

ã SAP AG 1999

(C) SAP AG

BC400

11-36

BAPI

l Business Application Programming Interface

l Un BAPI est une interface définie contenant les traitements et les données d'un système applicatif, implémenté comme les méthodes d'un objet du Business Object Repository (BOR). 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.

(C) SAP AG

BC400

11-37

Où s'utilisent les BAPI ?

Systèmes-satellite R/3 et scénarios répartis (ALE) Business Workflow

Visual Basic/JAVA... Internet / Intranet

Composante de gestion

Composition des composantes R/3

Composante B de gestion

Composante de gestion

ã SAP AG 1999

n

Développement spécifique client et partenaires

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.

(C) SAP AG

BC400

11-38

Exemple d'un objet de gestion FlightBooking

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

n

Un exemple d'objet de gestion du modèle du cours s'appelle FlightBooking. Il contient une réservation. Chaque réservation s'identifie uniquement par ses informations-clés : Compagnie aérienne, Numéro de correspondance (numéro de vol), Date du vol, Numéro de réservation. Vous avez les méthodes suivantes pour cet objet : Ÿ FlightBooking.GetDetail renvoie les informations détaillées de la réservation ; Ÿ FlightBooking.CreateFromData crée une réservation ; Ÿ FlightBooking.Cancel ; Ÿ FlightBooking.GetList renvoie une liste comportant les détails de toutes les réservations de ce vol. Elle affiche généralement plus de détails pour chaque réservation que GetDetail.

(C) SAP AG

BC400

11-39

BAPI Explorer

Hiérarchique

Alphabétique

Détail

Documentation

Outils

Projet

Hiérarchie des composantes Composante applicative

Objet de gestion Attributs-clés

Des informations complémentaires sur les sous-composantes sont disponibles dans les autres outils ABAP Workbench

Méthodes API

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 sousarbre, vous indiquant quels attributs-clés et quelles méthodes API en dépendent. (API représente Application Programming Interface).

(C) SAP AG

BC400

11-40

BAPI Explorer - légende

Type d'objet de gestion Type d'interface Attribut-clé Méthode spécifique de l'instance Méthode non spécifique de l'instance Paramètres d'import Paramètres d'export Paramètres de modification

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

(C) SAP AG

BC400

11-41

Objets de gestion dans le BAPI Explorer

Hiérarchique

Alphabétique

Détail

Documentation

Outils

Projet

FlightBooking Compagnie aérienne N° correspondance Date du vol N° réservation Cancel CreateFromData GetDetail GetList

Attributs-clés

Méthodes API

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

(C) SAP AG

BC400

11-42

BAPI dans le BAPI Explorer

Hiérarchique

Alphabétique

FlightBooking Compagnie aérienne N° correspondance Date du vol N° réservation

Détail

Documentation

Outils

Projet

Sélection d'outils Générateur d'objets Générateur de modules de fonction Dictionnaire ABAP Contrôles de cohérence BAPI Création de liste BAPI

Cancel CreateFromData Entrée données réserv. Retour Données de réservation

Structure du Dictionnaire BAPISBDTIN

GetDetail GetList FlightCustomer FlightConnection

Afficher

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

(C) SAP AG

BC400

11-43

Générateur d'objets

Type d'objet Données de base

Vue complète de l'objet de gestion

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

(C) SAP AG

BC400

11-44

BAPI standard

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.

(C) SAP AG

BC400

11-45

Implémentation des BAPI comme modules de fonction

Hiérarchique

Alphabétique

FlightBooking

Détail

Outils

Projet

Sélection d'outils

Compagnie aérienne N° correspondance Date du vol N° réservation

Annuler CreateFromData GetDetail Retour Données de réserv.

Documentation

Générateur d'objets Générateur de modules de fonction Dictionnaire ABAP Contrôles de cohérence BAPI Création de liste BAPI

Module de fonction BAPI_SBOOK_GETDETAIL

GetList FlightCustomer FlightConnection

Afficher

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

(C) SAP AG

BC400

11-46

Appel d'un BAPI depuis un programme ABAP Programme ABAP PROGRAM ...

R/3

TABLES ... DATA ...

Business Object Repository

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

Objet de gestion A : Méthode 1 = M1 Méthode 2 = M2

Modules de fonction : BAPI_A_M1 BAPI_A_M2

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

(C) SAP AG

BC400

11-47

BAPI : gestion des exceptions 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.

(C) SAP AG

BC400

11-48

Bases de données logiques

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

(C) SAP AG

BC400

11-49

Bases de données logiques : objectifs du cours

À la fin de ce cours, vous serez en mesure : l de décrire le comportement au moment de l'exécution d'un programme exécutable qui utilise une base de données logique simple, comprenant les effets sur : l la structure de la base de données logique l l'instruction NODES l les blocs de traitement événements GET

ã SAP AG 1999

(C) SAP AG

BC400

11-50

Lecture de données logiquement dépendantes

Exemple : base de données logique F1S 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.

(C) SAP AG

BC400

11-51

Les bases de données logiques

l sont des programmes spéciaux d'acquisition de données livrés par SAP l présentent les données lues au programme utilisateur dans un ordre hiérarchique logique l accèdent aux bases de données de manière optimisée l proposent un écran de sélection dynamique l contrôlent les autorisations

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.

(C) SAP AG

BC400

11-52

Contrôle d'une BD logique depuis un programme

Données de la BD logique

Programme NODES sflight. SPFLI GET sflight ...

SFLIGHT

:

SBOOK

ã SAP AG 1999

n

n

L'instruction NODES exécute deux fonctions : n

elle définit un objet de données (une structure) comme un espace de travail de table qui a la même structure que la structure du Dictionnaire ABAP, qui est un noeud de la structure hiérarchique de la base de données logique. A l'exécution, cette structure reçoit des enregistrements que la base de données logique a lus et fournis au programme ;

n

elle détermine le niveau de détail de l'écran de sélection : l'écran défini dans la base de données logique ne doit contenir que les zones de saisie des informations-clés nécessaires au programme. L'instruction NODES vous permet de garantir l'accès aux informations des tables appropriées de l'écran de sélection.

Les bases de données logiques effectuent une lecture de haut en bas, en fonction de leur structure. Le niveau de données lues dépend des événements GET d'un programme. Le niveau est déterminé par l'événement GET maximal (d'une vue structurelle de la base de données logique).

(C) SAP AG

BC400

11-53

Événements et bases de données logiques

Programme NODES: SPFLI, SFLIGHT.

Base de données logique

START-OF-SELECTION. GET spfli.

GET sflight.

SPFLI

SFLIGHT

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

(C) SAP AG

BC400

11-54

Exemple : séquencement des événements

REPORT bc400d_logical_database. NODES: spfli, sflight. START-OF-SELECTION. WRITE: / 'START-OF-SELECTION' color 3. GET spfli FIELDS carrid connid. WRITE: / 'GET SPFLI' color 1, spfli-carrid, spfli-connid. GET sflight FIELDS fldate. WRITE: / 'GET SFLIGHT' color 2, sflight-fldate.

START-OF-SELECTION GET SPFLI

DL 1699

GET SFLIGHT

25.08.1998

GET SFLIGHT

27.09.1998

GET SPFLI LATE GET SPFLI

DL 1984

GET SFLIGHT

25.08.1998

GET SFLIGHT

27.09.1998

GET SFLIGHT

29.09.1998

GET SPFLI LATE

GET spfli LATE. WRITE :/ 'GET SPFLI LATE'.

END-OF-SELECTION

END-OF-SELECTION. WRITE: 'END-OF-SELECTION' color 3. ã SAP AG 1999

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.

(C) SAP AG

BC400

11-55

Résumé

NODES: spfli, sflight. ABAP : attributs de programme START-OF-SELECTION. WRITE: / 'START-OF-SELECTION' color 3.

Attributs Type

1

Application

S

Log. Datenbank

F1S

GET spfli FIELDS carrid connid. WRITE: / 'GET SPFLI' color 1, spfli-carrid, spfli-connid. GET sflight FIELDS fldate. WRITE: / 'GET SFLIGHT' color 2, sflight-fldate.

SPFLI SFLIGHT SBOOK

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

ã SAP AG 1999

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.

(C) SAP AG

BC400

11-56

Réutilisation des composantes

Vous êtes maintenant capable : l de trouver et utiliser des modules de fonction l d'afficher une liste simple en utilisant ALV grid control (objets des classes globales du Générateur de classes) l d'utiliser un BAPI et trouver des BAPI en utilisant le BAPI Browser l d'utiliser une base de données logique pour créer une liste hiérarchique d'informations de vol

ã SAP AG 1999

(C) SAP AG

BC400

11-57

Exercices

(C) SAP AG

BC400

11-58

(C) SAP AG

BC400

11-59

Chapitre : Réutilisation des composantes Sujet : Modules de fonction

À la fin de ces exercices, vous serez en mesure : •

de rechercher un module de fonction ;



d’insérer un appel de module de fonction dans un programme.

Complétez votre programme ZBC400_##_SELECT_SFLIGHT ou la solution modèle correspondante comme suit : si la fonction Annuler est sélectionnée à l’écran, le système doit traiter une boîte de dialogue standard à l’intérieur du module de fonction.

Programme :

ZBC400_##_DYNPRO

Solution modèle :

SAPBC400UDS_DYNPRO_5

1-1

Complétez votre programme, ZBC400_##_DYNPRO, ou copiez la solution modèle adéquate SAPBC400UDS_DYNPRO_1 et nommez-la ZBC400_##_DYNPRO_2. Afffectez votre programme à la classe de développement ZBC400_## et à l'ordre de transport pour ce projet, BC400… (en remplaçant ## par votre numéro de groupe).

1-2

Utilisez la méthode expliquée dans ce cours pour rechercher le module de fonction de la boîte de dialogue standard qui est généralement lancé lorsque l’utilisateur choisit Annuler.

1-3

Informez-vous sur les interfaces du module de fonction, lisez la documentation, et utilisez l’environnement de test pour tester le module de fonction.

1-4

Dans le statut GUI de l’écran, activez la fonction "Annuler".

1-5

Complétez le module USER_COMMAND_0100 pour tester le code de fonction de la fonction Annuler. Insérez ensuite l’appel de module de fonction en utilisant la fonction "modèle" de l’Éditeur ABAP. Faites en sorte que le système réagisse à la saisie utilisateur comme suit :

-

si l’utilisateur souhaite annuler, mettez dynamiquement à 0 l'écran suivant ;

-

si l’utilisateur ne souhaite pas annuler, mettez dynamiquement à 100 l'écran suivant.

(C) SAP AG

BC400

11-60

Chapitre : Réutilisation des composantes Sujet : Objets ABAP et ALV Grid Control

À la fin de ces exercices, vous serez en mesure : •

d’éditez une liste simple en utilisant ALV Grid Control.

Écrivez un programme qui édite le contenu d’une table de base de données SPFLI en utilisant ALV Grid Control.

Programme :

ZBC400_##_ALV_GRID

Solution modèle :

SAPBC400RUS_ALV_GRID

2-1

Copiez le programme, SAPBC400RUT_ALV_GRID en le nommant ZBC400_##_ALV_GRID. Affectez votre programme à la classe de développement ZBC400_## et à l'ordre de modification pour votre projet "BC400…" (en remplaçant ## par votre numéro de groupe). Le modèle de programme contient la définition d’une table interne du même type de ligne que la table de base de données SPFLI et un dialogue utilisateur (écran 100).

2-2

Testez le programme.

2-3

Remplissez la table interne avec des enregistrements de la table de données SPFLI en utilisant un array-fetch.

2-4

Naviguez dans le Générateur de classes et découvrez : 2-4-1 Pour la classe : CL_GUI_CUSTOM_CONTAINER, quels paramètres de la méthode CONSTRUCTOR sont obligatoires ? 2-4-2 Pour la classe : CL_GUI_ALV_GRID, quels paramètres de la méthode CONSTRUCTOR sont obligatoires ?

2-5

Créez un domaine de container control à l’écran. Donnez un nom à ce domaine.

2-6

Définissez deux variables de référence, l’une pour la classe CL_GUI_CUSTOM_CONTAINER et l’autre pour la classe CL_GUI_ALV_GRID.

(C) SAP AG

BC400

11-61

2-7

Transmettez la variable de référence du custom container dans le paramètre obligatoire. Assurez-vous que l'objet soit généré seulement si PROCESS BEFORE OUTPUT s’exécute pour la première fois.

2-8

À la première exécution de PROCESS BEFORE OUTPUT, appelez la méthode SET_TABLE_FOR_FIRST_DISPLAY ; transférez le nom du type de ligne de la table interne dans le paramètre I_STRUCTURE_NAME ; transportez la table interne dans le paramètre IT_OUTTAB

2-9

Si PBO s’exécute plus d’une fois, vous devez appeler la méthode REFRESH_TABLE_DISPLAY. Transmettez 'X' en paramètre I_SOFT_REFRESH. Lors du PROCESS BEFORE OUTPUT du dynpro 100, appelez un module pour générer les objets. Créez une instance du custom container en utilisant l'instruction CREATE OBJECT. Transmettez le nom du domaine conteneur (du dynpro 100) au paramètre obligatoire de la méthode CONSTRUCTOR. Créez une instance de ALV.

(C) SAP AG

BC400

11-62

Solutions

(C) SAP AG

BC400

11-63

(C) SAP AG

BC400

11-64

Chapitre : Réutilisation des composantes Sujet : Modules de fonction

1-2

Le module de fonction s’appelle ‘POPUP_TO_CONFIRM_LOSS_OF_DATA’.

1-3

Les paramètres d’interface suivants existent : Paramètres d’import obligatoires : TEXTLINE1 (max 70 car.) : première ligne de la fenêtre de dialogue TITLE (max. 35 car.) : titre de la fenêtre de dialogue Paramètres d’import facultatifs : TEXTLINE2 (max. 70 car.) : première ligne de la fenêtre de dialogue START_COLUMN (Typ SY-CUCOL) : première colonne de la fenêtre de dialogue START_ROW (Typ SY-CUCOL) : première ligne de la boîte de dialogue Paramètres d’export : ANSWER (Type C) : saisie de l’utilisateur “Y” = utilisateur a confirmé l’étape de traitement “N” = utilisateur a annulé l’étape de traitement

1-4

Le code de fonction de la fonction Annuler est RW.

1-5 *&--------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&--------------------------------------------------------------* MODULE user_command_0100 INPUT. save_ok = ok_code . CLEAR ok_code . CASE save_ok. WHEN 'BACK'. SET SCREEN 0. WHEN 'RW'. CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA' EXPORTING textline1 = text-001 title

= text-002

IMPORTING answer

= answer.

case answer. when 'N'. leave to screen 100. when 'J'. (C) SAP AG

BC400

11-65

leave to screen 0. endcase. WHEN 'SAVE'. MESSAGE i060(bc400). SET SCREEN 0. WHEN OTHERS. SET SCREEN 100. ENDCASE. ENDMODULE.

(C) SAP AG

" USER_COMMAND_0100

BC400

INPUT

11-66

Chapitre : Réutilisation des composantes Sujet : Objets ABAP et ALV Grid Control

Programme :

ZBC400_##_ALV_GRID

Solution modèle :

2-3

START-OF-SELECTION.

* fill internal table SELECT * FROM spfli INTO TABLE gdt_spfli. *

WHERE ... CALL SCREEN 100.

2-4-1 Le paramètre suivant de la méthode CONSTRUCTOR (pour la classe : CL_GUI_CUSTOM_CONTAINER)est obligatoire. CONTAINER_NAME : le nom du conteneur de contrôle à l’écran 2-4-2 Le paramètre suivant de la méthode CONSTRUCTOR (pour la classe : CL_GUI_CUSTOM_CONTAINER)est obligatoire : I_PARENT: conteneur-parent : le nom de la variable de référence qui indique l’objet de la classe CL_GUI_CUSTOM_CONTAINER doit être transmis à ce paramètre. 2-5

Créez un domaine de contrôle conteneur à l’écran. Appelez le domaine de conteneur CONTAINER_1

2-6

Introduisez les instructions suivantes dans la section de déclarations de données : 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 : (C) SAP AG

BC400

11-67

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

Module PBO dans le programme : *&---------------------------------------------------------------------* *&

Module

CREATE_CONTROL

OUTPUT

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

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

CREATE OBJECT grid_r EXPORTING

CALL METHOD

i_parent =

container_r.

grid_r->set_table_for_first_display

EXPORTING i_structure_name = 'SPFLI' CHANGING

it_outtab

= gdt_spfli.

ELSE. CALL METHOD grid_r->refresh_table_display EXPORTING i_soft_refresh = 'X'. ENDIF. ENDMODULE.

(C) SAP AG

" CREATE_CONTROL

BC400

OUTPUT

11-68

Dialogues base de données II

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

(C) SAP AG

BC400

12-1

Dialogues base de données II : objectifs du chapitre

À la fin de ce chapitre, vous serez en mesure : l d'expliquer pourquoi vous devez effectuer les modifications de BD dans une seule unité logique de travail (Logical Unit of Work) de base de données l de décrire le concept de blocage SAP

ã SAP AG 1999

(C) SAP AG

BC400

12-2

Architecture client/serveur de R/3

Présentation

Application

Dispatcher

Work process

Work process

Work process

Base de données Work processes de la 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.

(C) SAP AG

BC400

12-3

Processus de traitement élémentaire

Processus de traitement élémentaire Traitement étape 1

Traitement étape 2

...

Traitement étape n

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.

(C) SAP AG

BC400

12-4

LUW BD : unité logique de travail Base de données

Stade de modification de données insert, update, delete

Stade intermédiaire

Stade cohérent 1

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

(C) SAP AG

BC400

12-5

Regroupement des modifications d'une base de données dans une LUW SAP

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.

(C) SAP AG

BC400

12-6

Commits implicites

Étape de dialogue

PBO

PAI

COMMIT implicite

LUW BD

PAI

PBO

Modifications de base de données

COMMIT implicite

LUW BD

COMMIT explicite

LUW BD

ã SAP AG 1999

n

Les commits implicites se déclenchent : - à la fin d'une étape de dialogue ; - en cas de dialogue d'erreur ; - en cas d'appel d'un module de fonction dans un autre processus de travail (remote function call, RFC).

(C) SAP AG

BC400

12-7

Concept de blocage SAP

1

Blocage a réussi Demande de blocage

Durée Durée

Table des blocages

Objet bloqué

ã SAP AG 1999

(C) SAP AG

BC400

12-8

Concept de blocage SAP

1

Blocage a réussi Demande de blocage

Table des blocages

Demande de blocage Blocage a échoué

2

Durée Durée

Objet bloqué

ã SAP AG 1999

(C) SAP AG

BC400

12-9

Concept de blocage SAP

3

1

Blocage a réussi Demande de blocage

Levée du blocage

Table des blocages

Demande de blocage Blocage a échoué

2

Durée Durée

Objet bloqué

ã SAP AG 1999

(C) SAP AG

BC400

12-10

Concept de blocage SAP

3

1

Blocage a réussi Demande de blocage

Levée du blocage

Table des blocages Blocage a réussi

Demande de blocage Blocage a échoué

Demande de blocage

2

Durée Durée

4

Objet bloqué

Objet bloqué

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

(C) SAP AG

BC400

12-11

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

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

(C) SAP AG

BC400

12-12

Programme d'exemple : mises à jour de la base de données 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.

(C) SAP AG

BC400

12-13

Dialogues base de données II : résumé du chapitre

Vous êtes maintenant capable : l d'expliquer pourquoi vous devez effectuer les modifications de BD dans une seule unité logique de travail (Logical Unit of Work) de base de données l de décrire le concept de blocage SAP

ã SAP AG 1999

(C) SAP AG

BC400

12-14

Logistique et modification du logiciel : contenu

l Développement de logiciel orienté équipe ou projet, dans le Workbench Organizer l Modification du logiciel SAP standard

ã SAP AG 1999

(C) SAP AG

BC400

13-1

Logistique et modification du logiciel : objectifs du chapitre

À la fin de ce chapitre, vous serez en mesure : l de gérer un projet dans le système R/3 en utilisant le Workbench Organizer l de décrire les options permettant de compléter et de modifier les fonctions de programmes existants

ã SAP AG 1999

(C) SAP AG

BC400

13-2

Logistique logicielle et modification de R/3

Logistique logicielle logicielle Logistique Modificationde deRR//33 Modification

ã SAP AG 1999

(C) SAP AG

BC400

13-3

Fin du développement Planning :

...

Fin du développement

Chef de projet : Tâches de contrôle de qualité : • Contrôle de syntaxe • Activation d'objets inactifs Documentation de tâche

Équipe :

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 • Objets inactifs • Cohérence Cohérence de tâche tâche Documentation du projet

BC400-02 BC400-03 BC400-04

L'ordre de modification est libér é libéré ...

ã SAP AG 1999

(C) SAP AG

BC400

13-4

Originaux et copies

Système Système de développement développement

Objet client

Système Système suivant

Objet client

Original

Copie Transport Développement

Objet SAP

Original

Objet SAP

Copie

Objet SAP

Copie

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

(C) SAP AG

BC400

13-5

Corrections et réparations

Système Système de développement développement

Objet client

Objet client

Original corrigé corrigé

Copie

Correction

Objet SAP

Original corrigé corrigé Correction

Système Système suivant

Transport correction

Objet SAP

Copie modifiée modifiée Réparation

Objet SAP

Copie Transport réparation

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

(C) SAP AG

BC400

13-6

Modifications pendant la montée de version

Système Système suivan

Système Système de développement développement

Objet SAP

Objet client

Objet client

Original corrigé corrigé

Copie

Objet SAP

Original corrigé corrigé

Objet SAP

Copie modifiée modifiée Ajustement de la modification

Montée Montée de version

Copie Transport modification

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.

(C) SAP AG

BC400

13-7

Logistique logicielle et modification de R/3

Logistique logicielle logicielle Logistique Modificationde deRR//33 Modification

ã SAP AG 1999

(C) SAP AG

BC400

13-8

Niveaux de modification Tâches applicatives R/3 ( Standard SAP)

Programmes client

Extension

Modification

l Modification codée en dur

l Dictionnaire ABAP

l Modification assistée

l Exit client

n n

n n n

Extension de table Exit de zone Exit de module de fonction Exit d'écran Exit de menu

Développement client

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

l BTE, Business Transaction Events l BADI, Business add-in l

Exit utilisateur

ã SAP AG 1999

n

Vous adaptez le système à vos besoins de quatre façons : - Customizing : vous modifiez les paramètres système via une interface spéciale. Toutes les modifications possibles ont été imaginées et organisées. Le customizing est une partie obligatoire pour la définition d'un système ; - concept d'extension : vous adaptez des objets du Repository SAP sans y faire de réparations ; - développement client : vous créez des objets client spécifiques dans l'espace nom client ; - modifications du standard : réparation des objets du Repository. Si SAP fournit par la suite une nouvelle version de l'objet réparé, vous devrez adapter votre réparation à la nouvelle version. Évitez donc de modifier le standard.

(C) SAP AG

BC400

13-9

Extensions fonctionnelles

Une fonction similaire est-elle mappée dans le standard SAP ?

Développement client Non

Oui La fonction SAP peut-elle être adaptée aux besoins du client par des extensions ?

Customizing Oui

Non L'application SAP permet-elle la liaison de plusieurs fonctions aux extensions ?

Extension Oui

Non

Demande d'extension, éviter modification ã SAP AG 1999

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.

(C) SAP AG

BC400

13-10

Extension de dialogues utilisateur

Menu 1

Menu 2 Fonction 1 Fonction 2 Fonct. client Fonction 3

Menu 3

Exit de menu

Zone x

Exit de zone

Zone y

Exit de dynpro

ã SAP AG 1999

n

Vous apportez des extensions au système R/3 à différents niveaux : - exit de menu : vous incluez des options de menu en différents point du système pour lancer des programmes client ; - exit de dynpro : vous utilisez les sous-écrans des dynpros pour afficher vos propres dynpros. - exit de zone : vous incorporez des contrôles de zone supplémentaires.

(C) SAP AG

BC400

13-11

Extensions : exemples

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

n

Voici les différents types d'extension de programme proposés aux clients :

n

extension de programmes applicatifs : les développeurs SAP ont inclus des exits en certains points des programmes applicatifs pour vous permettre d'appeler des sections de vos propres programmes ;

n

extension d'objets du Dictionnaire : - append de table : vous permet d'ajouter des zones supplémentaires à des tables standard ; - documentation de zone : vous pouvez remplacer par vos propres textes la documentation qui s'affiche lorsque l'utilisateur appuie sur F1. Les textes d'aide sont mémorisés avec l'élément de données correspondant ; - Vous pouvez remplacer les libellés de zone (texte court, moyen ou long pour la zone) par vos propres textes.

(C) SAP AG

BC400

13-12

Inscription des développeurs au SSCR Repository Browser : Programme SAP ABAP

Objet de développement Traiter Saut Utilitaires Options Environnement

Système client

Programme

ZABAP Ajouter développeur 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.

Enregistrer modifications d'objets SAP

Inscription Traiter Sélection Système Aide

SAPNet R/3 Frontend

Utilisateur Clé

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

(C) SAP AG

BC400

13-13

Logistique et modification du logiciel : résumé du chapitre

Vous êtes maintenant capable : l d'affecter un projet au système R/3 en utilisant le Workbench Organizer l de décrire les options permettant de compléter et de modifier les fonctions de programmes existants

ã SAP AG 1999

(C) SAP AG

BC400

13-14

Inscription des développeurs au SSCR Repository Browser : Programme SAP ABAP

Objet de développement Traiter Saut Utilitaires Options Environnement

Système client

Programme

ZABAP Ajouter développeur 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.

Enregistrer modifications d'objets SAP

Inscription Traiter Sélection Système Aide

SAPNet R/3 Frontend

Utilisateur Clé

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

(C) SAP AG

BC400

13-15

Logistique et modification du logiciel : résumé du chapitre

Vous êtes maintenant capable : l d'affecter un projet au système R/3 en utilisant le Workbench Organizer l de décrire les options permettant de compléter et de modifier les fonctions de programmes existants

ã SAP AG 1999

(C) SAP AG

BC400

13-16

Annexes

l Cette section contient des informations supplémentaires à utiliser à titre de référence. l Ces informations ne font pas partie de la version standard du cours. l Il est donc possible que le formateur ne les traite pas lors de la présentation du cours.

ã SAP AG 1999

(C) SAP AG

BC400

14-1

Requêtes courantes dans le système d'information

?

?

Recherche par attribut

Cas d'emploi

Afficher tous les objets de type X avec attribut Y

Afficher tous les objets de type X qui utilisent l'attribut Y

Informations sur les tables et leurs relations

Afficher toutes les zones de table avec table de contrôle X

ã SAP AG 1999

(C) SAP AG

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

?

?

BC400

14-2

Vue d'ensemble : création de programmes

Affectation à une classe de développement Définition d'attributs

Affectation à un projet

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

(C) SAP AG

BC400

14-3

Imbrication de structures et de tables internes

ã SAP AG 1999

n

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

n

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

n

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

(C) SAP AG

BC400

14-4

Groupes de types du Dictionnaire ABAP

TYPE-POOL Z400. TYPES: z400_name_type(25) TYPE C, BEGIN OF z400_flightrec_type, ... , END OF z400_flightrec_type.

REPORT ... . TYPE-POOLS z400. DATA: name TYPE z400_name_type, wa TYPE z400_flightrec_type. ... .

ABAP

ã SAP AG 1999

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 doivent commencer par , 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.

(C) SAP AG

BC400

14-5

PARAMETERS et TABLES

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. MOVE pa_carr TO sdyn_conn-carrid. CALL SCREEN 100. ã 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 (sydatum, 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.

(C) SAP AG

BC400

14-6

Effacement d'une table interne

Espace de travail

CLEAR .

Table interne CARRID AA LH

CLEAR .

CONNID 0017 0400

ã 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 initialise l'espace de travail .

(C) SAP AG

BC400

14-7

Récapitulatif des instructions déclaratives

Type TYPES Zone élémentaire, structure, Table interne

DATA

Constante CONSTANTS Paramètre de saisie PARAMETERS

Espace de travail TABLES

ã SAP AG 1999

n

Jusqu'à présent, nous avons vu les instructions déclaratives suivantes : TYPES DATA CONSTANTS PARAMETERS TABLES

Définition de types Définition de zones élémentaires, structures, et tables internes Définition de constantes Définition de paramètres de saisie Définition d'espaces de travail

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.

(C) SAP AG

BC400

14-8

Conversion de type Quand deux types sont compatibles, il n'y a pas de conversion Deux types élémentaires sont compatibles quand leur type et leur longueur (ainsi que leurs décimales, dans le cas du type P), sont identiques. Deux types de structure sont compatibles quand ils ont la même structure et que leurs composantes sont compatibles.

Deux tables sont compatibles quand leurs types de ligne sont compatibles.

Pour convertir un type non compatible, il faut qu'il existe une 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.

(C) SAP AG

BC400

14-9

Expressions logiques ... ... ... ... ... AND ... OR ... NOT ... Opérateur Opérateur

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

EQ

=

NE



GT

>

GE

>=

LT


0. . . . SUBTRACT 1 FROM COUNTER. ENDWHILE.

SY-INDEX

Compteur de boucles

ã SAP AG 1999

n

Les boucles DO et WHILE sont également utilisées dans ABAP.

n

SY-INDEX est le compteur de boucles pour les commandes des boucles DO et WHILE. La valeur 1 est affectée à SY-INDEX au premier passage de boucle et augmente de 1 à chaque nouveau passage.

n

Boucles DO :

n

le paramètre TIMES est facultatif. Si vous ne l'indiquez pas, vous devez spécifier dans la boucle une condition d'interruption (voir l'instruction EXIT). - Vous ne pouvez pas modifier le nombre de passages de boucle dans la zone sy-index ni dans le compteur de boucles de DO ... ENDDO.

n

Boucles WHILE :

n

la séquence d'instructions s'exécute tant que l'expression logique est vraie. - Vous ne pouvez pas modifier le nombre de passages de boucles par la zone sy-index de la boucle WHILE... ENDWHILE.

(C) SAP AG

BC400

14-11

CHECK et EXIT

CHECK .

EXIT.

WHILE COUNTER GT 0.

DO.

Instructions

Instructions

CHECK sy-subrc = 0.

IF counter GE 10. EXIT. ENDIF.

Instructions

ENDWHILE.

Instructions

counter = counter + 1. ENDDO.

ã SAP AG 1999

n

Vous utilisez deux instructions pour le traitement de boucles :

n

CHECK : si l'expression logique est fausse, un saut est effectué à l'intégration suivante de la boucle. Toutes les instructions entre CHECK et ENDDO|ENDWHILE sont ignorées. Si l'expression logique est vraie, l'instruction CHECK est sans effet.

n

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

n

Si vous insérez des instructions EXIT dans une boucle, le système quitte la boucle.

n

Pour plus d'informations sur le fonctionnement de ces deux instructions en dehors du traitement de boucles, reportez-vous à l'index, aux mots-clés CHECK et EXIT, ou à l'appendice.

(C) SAP AG

BC400

14-12

Conditions d'interruption 2

EXIT

Boucles : WHILE, DO, SELECT, LOOP

Événements : START-OF-SELECTION GET END-OF-SELECTION

Terminer boucle en cours

CHECK : Si condition logique non remplie, ...

Aller au prochain passage de boucle

Fin de programme, la liste s'affiche

Événements : INITIALIZATION AT SELECTION-SCREEN ... ...

Aller à la fin du bloc 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 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.

(C) SAP AG

BC400

14-13

Includes : programmes de type I

Include : (Type de programme : I)

Programme : REPORT . : INCLUDE .

Instructions ABAP

:

ã SAP AG 1999

(C) SAP AG

BC400

14-14

Includes TOP Création de programme

Repository Browser : Programme



Création de programme avec TOP INCL.

Programme : TOP

REPORT .

Type de programme : I

TYPES: ... DATA: ...

Programme :

INCLUDE TOP.

Type de programme : 1

START-OF-SELECTION. :

ã SAP AG 1999

(C) SAP AG

BC400

14-15

Includes standard pour groupes de fonctions

Groupe de fonctions

BC400

Groupe de fonctions BC400

Gr. de fonctions de types d'objet Modules de fonction BC400_FREE_SEATS

Calcule le nombre de places non réservées

BC400_PERCENTAGE

Détermine le pourcentage

Sous-programmes Includes LBC400TOP

Définition de données globales

LBC400F01

Sous-programmes

LBC400U01

Calcule le nombre de places non réservées

LBC400U02

Détermine le pourcentage

LBC400UXX

ã SAP AG 1999

(C) SAP AG

BC400

14-16

Rôle stratégique des modules de fonction

Systèmes R/3 par satellite

Internet / Intranet

Développement spécifique client et partenaires

RFC

Modules de fonction Parallèle Encapsulation:

asynchrone

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

(C) SAP AG

BC400

14-17

Traitement des exceptions

Exceptions Exceptions

FUNCTION bc400_free_seats.

OCC_GT_MAX MAX_EQ_0

Définition d'une exception

. . .

IF seatsmax = 0. RAISE max_eq_0. 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.

(C) SAP AG

BC400

14-18

Exceptions REPORT. DATA: free_seats LIKE sflight-seatsmax. PARAMETERS: pa_occ LIKE sflight-seatsocc, pa_max LIKE sflight-seatsmax. START-OF-SELECTION. CALL FUNCTION 'BC400_FREE_SEATS' EXPORTING seatsmax = pa_max seatsocc = pa_occ IMPORTING seatsfree = free_seats EXCEPTIONS occ_gt_max = 1 max_eq_0 = 2 others = 3. CASE sy-subrc. WHEN 1. WRITE text-ex1. WHEN 2. WRITE text-ex2. WHEN 3. WRITE text-oth. ENDCASE. ã SAP AG 1999

(C) SAP AG

BC400

14-19

Couleurs/icônes/symboles

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

iicon_date

AS ICON,

Couleurs dans les listes Vol

Départ

Destination

AA 0017 LH 0400 LH 0402

NEW YORK PARIS FRANCFORT

SAN FRANCISCO NEW YORK BERLIN

Date de création : 01.01.1998 Créé par : WITTMANN

ã 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 . 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 dans votre programme.

n

Vous trouverez un récapitulatif de toutes les icônes disponibles soit dans la documentation, au motclé WRITE, soit dans la structure de l'instruction WRITE.

(C) SAP AG

BC400

14-20

Transfert de données externes

Serveur externe

Fichiers séquentiels

Interfaces / 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, interapplications : 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.

(C) SAP AG

BC400

14-21

Transfert de données externes BATCH-INPUT : Fichier séquentiel

CALL TRANSACTION : Fichier séquentiel

Table Table BDC BDC

Fichier d'attente

DIRECT INPUT : Fichier séquentiel

Table Table BDC BDC

Programme de transfert ABAP

CALL TRANSACTION

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

Base de données SAP

Fonction Fonction d'application d'application

Base de données SAP

Base de données SAP

ã SAP AG 1999

(C) SAP AG

BC400

14-22

Techniques avancées : séquencement d'écrans dynamiques

Attributs d'écran Numéro d'écran Écran suivant

PBO

100

Attributs d'écran 100 100

PAI

Numéro d'écran Écran suivant

200

0

PBO

200

200 200

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

(C) SAP AG

BC400

14-23

Techniques avancées : mise à jour

Étape de dialogue

PBO

PAI

PAI

PBO

Ordre UPDATE

PBO

Ordre INSERT

PAI Ordre DELETE

Log table Ordre UPDATE Ordre INSERT Ordre DELETE

COMMIT WORK Processus de mise à jour

UPDATE

INSERT

DELETE

Processus de base de 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.

(C) SAP AG

BC400

14-24