Vous êtes sur la page 1sur 99

ABAP pour consultants fonctionnels

Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Guide ABAP lusage des consultants fonctionnels

ATTENTION : ce document est une rfrence. A chaque fois quil est modifi, il convient de
changer de version et de noter les modifications effectues en tte de document avec la date.
HISTORIQUE DES MODIFICATIONS
Date

Version

Auteur

Motifs

10/07/03

0.0

M. LE FAUCHEUR

Version initiale

23/12/03

1.0

S. BRUN

Validation

20/01/03

1.1

M. LE FAUCHEUR

Ajout dexemples dtaills en annexes


Codes transaction rappels de faon plus frquente
Ajout dune section sur les erreurs dexcution
Complment sur les Business Add-Ins

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 1

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Sommaire
1.

OBJECTIFS DU DOCUMENT......................................................................................6

2.

PRSENTATION GLOBALE........................................................................................6
2.1.
2.2.

3.

CONCEPTS GNRAUX.................................................................................................6
ACTEURS PRINCIPAUX.................................................................................................6

ABAP WORKBENCH : LES OUTILS..........................................................................7


3.1.
LE LANGAGE ABAP....................................................................................................7
3.1.1.
Prsentation dABAP..........................................................................................7
3.2.
LES OUTILS : LABAP WORKBENCH...........................................................................7
3.2.1.
Conception et ralisation...................................................................................7
3.2.2.
Le R/3 Repository...............................................................................................8
3.2.3.
Principaux outils de lABAP Workbench............................................................9
3.2.3.1.
LObject Navigator : SE80.............................................................................9
3.2.4.
Hirarchie des applications : SE81..................................................................10
3.2.5.
Le systme dinformation : SE84......................................................................11
3.2.6.
Les ordres de transport.....................................................................................12

4.

DROULEMENT DUN PROGRAMME..................................................................13


4.1.
LARCHITECTURE DU SYSTME R/3...........................................................................13
4.1.1.
Larchitecture client/serveur............................................................................13
4.1.1.1.
Le serveur de base de donnes.....................................................................13
4.1.1.2.
Le serveur dapplication...............................................................................14
4.1.1.3.
Le serveur de prsentation...........................................................................14
4.1.2.
La vue oriente utilisateur................................................................................14
4.2.
ETAPES DEXCUTION DUN REPORT.........................................................................15
4.2.1.
Prsentation......................................................................................................15
4.2.2.
Chargement du programme..............................................................................15
4.2.3.
Ecran de slection et excution........................................................................16
4.2.4.
Accs aux donnes............................................................................................17
4.2.5.
Edition de la liste..............................................................................................18
4.3.
ETAPES DEXCUTION DUN PROGRAMME INTERACTIF.............................................19
4.3.1.
Prsentation......................................................................................................19
4.3.2.
Logique dexcution.........................................................................................19
4.3.3.
Etapes dexcution............................................................................................20
4.3.3.1.
Chargement du programme et excution......................................................20
4.3.3.2.
Accs aux donnes........................................................................................20
4.3.3.3.
Appel de dynpro............................................................................................21

5.

LABAP DICTIONARY................................................................................................22
5.1.
TABLES, STRUCTURES ET VUES.................................................................................22
5.1.1.
LABAP Dictionary...........................................................................................22
5.1.2.
Mthodes de recherche.....................................................................................23
5.1.3.
Tables et structures...........................................................................................23
5.1.4.
Vues...................................................................................................................24

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 2

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

5.2.
ELMENTS DE DONNES ET DOMAINES.....................................................................25
5.2.1.
Objets de base...................................................................................................25
5.2.2.
Une conception deux niveaux........................................................................25
6.

ANALYSE DE PROGRAMMES.................................................................................27
6.1.
LANALYSE STATIQUE : LDITEUR ABAP.................................................................27
6.1.1.
Vue du programme : lObject Navigator..........................................................27
6.1.2.
Exemple de programme et syntaxe ABAP gnrale..........................................27
6.1.3.
Navigation........................................................................................................29
6.1.4.
Aide et documentation......................................................................................29
6.1.5.
Programme de base..........................................................................................30
6.2.
LANALYSE DYNAMIQUE : LE MODE DBOGUEUR......................................................31
6.2.1.
Excution en mode dbogueur..........................................................................31
6.2.2.
Excution pas pas..........................................................................................32
6.2.3.
Utilisation du point darrt..............................................................................33

7.

DCLARATION DE DONNES ET EXPRESSION ABAP....................................34


7.1.
OBJETS DE DONNES ET TYPES DE DONNES............................................................34
7.1.1.
Dfinition des objets de donnes......................................................................34
7.1.2.
Types locaux.....................................................................................................35
7.1.3.
Variables...........................................................................................................36
7.1.3.1.
Initialisation et transfert...............................................................................36
7.1.3.2.
Calculs..........................................................................................................37
7.1.3.3.
Conditions.....................................................................................................38
7.1.3.4.
Vrifier la valeur dune variable..................................................................40
7.1.4.
Structures..........................................................................................................40
7.1.4.1.
Dfinition......................................................................................................40
7.1.4.2.
Accder aux zones de la structure................................................................41
7.1.4.3.
Assignation zone zone................................................................................42
7.1.4.4.
Vrifier le contenu dune structure...............................................................43
7.1.5.
Tables internes..................................................................................................43
7.1.5.1.
Dfinition et types de table...........................................................................43
7.1.5.2.
Dclaration...................................................................................................45
7.1.5.3.
Traitement sur un enregistrement.................................................................46
7.1.5.4.
Traitements en masse....................................................................................46
7.1.5.5.
Exemple : LOOP dune table interne...........................................................48
7.1.5.6.
Exemple : lecture dune table interne en utilisant lindex............................48
7.1.5.7.
Exemple : lecture dune table en utilisant une cl........................................49
7.1.5.8.
Vrifier le contenu dune table.....................................................................50
7.2.
CONTRLE DU TRAITEMENT......................................................................................51
7.2.1.
Variables systmes et codes retour...................................................................51
7.2.2.
Messages utilisateurs........................................................................................52

8.

ACCS LA BASE DE DONNES...........................................................................53


8.1.
ACCS EN LECTURE...................................................................................................53
8.1.1.
Prsentation gnrale de linstruction SELECT..............................................53

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 3

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

8.1.2.
8.1.3.
8.1.4.
8.1.5.
8.1.6.
8.1.7.
9.

Modifi par

Valid par

Version 1

Modalits daccs.............................................................................................53
SELECT SINGLE..............................................................................................54
SELECTENDSELECT...................................................................................55
Slection par blocs (Array fetch)......................................................................56
La clause INTO.................................................................................................57
La clause INTO CORRESPONDING FIELDS.................................................59

PRINCIPES DE MODULARISATION.......................................................................60
9.1.
ELMENTS DUN PROGRAMME ABAP.......................................................................60
9.1.1.
Les vnements.................................................................................................60
9.1.1.1.
Exemple : programme ABAP avec vnements............................................60
9.1.1.2.
Exemple : excution dun programme avec vnements..............................61
9.1.1.3.
Les vnements dans un report.....................................................................62
9.1.2.
Les sous-routines..............................................................................................63
9.1.2.1.
Sous-routines et Object Navigator................................................................63
9.1.2.2.
Exemple de sous-routine...............................................................................64
9.1.3.
Les modules fonction........................................................................................65

10.

EVOLUTION DU STANDARD...................................................................................67

10.1.
ETENDUE DES POSSIBILITS...................................................................................67
10.1.1. Plusieurs possibilits de faire voluer le standard SAP :.................................67
10.1.2. Procdure de choix de la mthode :.................................................................67
10.2.
PERSONNALISATION...............................................................................................68
10.2.1. Personnalisation au niveau Entreprise :..........................................................68
10.2.2. Personnalisation au niveau Rles :..................................................................68
10.2.3. Personnalisation au niveau Utilisateur :.........................................................68
10.3.
EXTENSIONS..........................................................................................................68
10.3.1. Dictionnaire de donnes...................................................................................68
10.3.1.1.
Extensions de tables.....................................................................................68
10.3.1.2.
Exit de zone...................................................................................................69
10.3.2. Customer-exits..................................................................................................69
10.3.3. Business Transaction Events............................................................................72
10.3.4. Business Add-Ins (aka BAdI)............................................................................73
10.4.
MODIFICATIONS.....................................................................................................75
10.4.1. User exits..........................................................................................................75
10.4.2. Modification assistes......................................................................................76
10.4.3. Modification non assistes...............................................................................76
11.

ERREURS DEXCUTION ABAP.............................................................................77

11.1.
ANALYSE DES ERREURS.........................................................................................77
11.1.1. Analyse du vidage de la mmoire ABAP : ST22...............................................77
11.1.2. Prsentation du compte rendu derreur............................................................78
11.1.3. Time-out............................................................................................................81
11.1.4. Autres erreurs dexcution................................................................................82
11.2.
OSS.......................................................................................................................83
11.2.1. Prsentation......................................................................................................83
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 4

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

11.2.2.
11.2.3.
12.

Modifi par

Valid par

Version 1

Mthodes de recherche.....................................................................................84
Cration dun message.....................................................................................84

ANNEXES......................................................................................................................87

12.1.
EXEMPLES DTAILLS...........................................................................................87
12.1.1. Exemple 1 : programme ZFORMATION1........................................................87
12.1.2. Exemple 2 : programme ZFORMATION2........................................................88
12.1.3. Exemple 3 : Programme ZFORMATION3.......................................................89
12.1.4. Exemple 4 : programme ZFORMATION4........................................................91
12.1.5. Exemple 5 : programme ZFORMATION5........................................................93
12.1.6. Exemple 6 : programme ZFORMATION6........................................................94
12.1.7. Note OSS 94300................................................................................................96

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 5

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

1. Objectifs du document
Lobjectif de ce document est de permettre aux consultants fonctionnels de mieux
apprhender les aspects techniques lis au langage ABAP dans lexercice de leur mtier.

2. Prsentation globale
2.1. Concepts gnraux
Les points suivants seront abords dans ce guide :
- ABAP Workbench : les outils
- Droulement dun programme
- LABAP dictionary : les tables
- Analyse de programmes
- Dclarations de donnes et expression ABAP
- Accs la base de donnes
- Modularisation des programmes
- Evolution du standard

2.2. Acteurs principaux


Ce document se destine aux consultants fonctionnels qui souhaitent mieux apprhender
lenvironnement technique li SAP, ceci dans le but, par exemple dtre plus efficace dans la
rdaction de spcifications fonctionnelles.
Les objectifs de ce guide technique simplifi lusage des consultants fonctionnels sont :
- dintgrer la prise en compte des contraintes techniques lmentaires (faisabilits et
possibilits) lors de la proposition de solutions fonctionnelles et de la rdaction de
spcifications,
- et damliorer la communication professionnelle entre consultants techniques et
fonctionnels.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 6

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

3. ABAP Workbench : les outils


3.1. Le langage ABAP
3.1.1.

Prsentation dABAP

ABAP signifie Advanced Business Application Programming.


ABAP est un langage de programmation conu par SAP pour le dveloppement dapplications
dans SAP.
ABAP est un langage orient objet de 4me gnration.
ABAP est un langage de gestion. Il est prvu pour traiter des donnes de gestion (traitements
de masse, gestion des devises, des langues).
ABAP intgre des commandes spciales appeles Open SQL pour les accs aux bases de
donnes.
Tous les objets ABAP (programmes, dynpros, objets du dictionnaire) sont stocks dans le
R/3 Repository.

3.2. Les outils : lABAP Workbench


3.2.1.

Conception et ralisation

Project management Workflow model Documentation - Protot yping


Repository
Browser

SAP
solution

Performance tools

ABAP Dictionary

Debugger

Screen Painter
Menu Painter

Test sequences

Modeling

Workbench
Organiser
Version
management

Function Builder
ABAP Editor

Analysis/
design

Fichier
260038387.doc

Implmentation

Modifi le 10/02/15

Test

Administration

Imprim le 15/07/03

Page 7

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

lABAP Workbench regroupe lensemble des solutions de dveloppement dans le systme


R/3. Cet environnement de dveloppement permet de grer tout le cycle de vie dun
programme, de la conception la maintenance.
Il intgre tous les outils ncessaires la ralisation dune application tels que des outils de
modlisation (SD11), de programmation ABAP (SE38), de cration dcrans (SE51), de
dfinition de donnes (SE11), de tests (SE30).
Tous les objets du Repository sont crs ou modifis partir de lABAP Workbench.
3.2.2.

Le R/3 Repository

Presentation
Server
Layer

Application
Server
Layer

ABAP program

Cross client
Repository
Database

Client-specific
Customizing tables
Applications tables

Tous les objets crs partir des outils de dveloppement de lABAP Workbench font partie
du Repository. Les objets du Repository sont tous intermandants.
Le R/3 Repository est une partie spcifique de systme de bas de donnes.
Organisation du Repository
Le Repository sorganise par application. Chaque application se subdivise en classes de
dveloppement. En effet, chaque objet du Repository lors de sa cration doit tre affect
une classe de dveloppement.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 8

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Une classe de dveloppement correspond une famille dobjets.


On peut utiliser le systme dinformation du Repository (SE84) pour retrouver des objets.
3.2.3.

Principaux outils de lABAP Workbench

LABAP Workbench propose diffrents outils pour la conception dobjets. Les plus
importants dentre-eux sont :
Lditeur ABAP (SE38) pour le dveloppement de programme ABAP
Le dictionnaire ABAP (SE11) pour la cration dobjets du dictionnaire (tables,
structures, type de donnes)
Le Menu Painter (SE41) pour la conception des statuts dcrans (barres de menus,
boutons)
Le Screen Painter (SE51) pour la conception des dynpros des programmes interactifs
Le Function Builder (SE37) pour la gestion des modules de fonction
Le Class Builder (SE24) pour la cration des classes
Ces outils sont accessibles de deux faons :
Chaque outil peut tre appel individuellement afin de traiter chaque type dobjet de
faon indpendante.
On peut aussi utiliser lObject Navigator (SE80). Cette transaction permet dobtenir
une hirarchie de lobjet principal contenant tous ses sous-objets. La navigation entre
les objets et leur outil associ seffectue par double-clic.
3.2.3.1.

Fichier
260038387.doc

LObject Navigator : SE80

Modifi le 10/02/15

Imprim le 15/07/03

Page 9

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Lcran de lObject Navigator se compose de deux parties :


La zone de gauche permet dafficher la liste des objets sous forme de hirarchie.
La partie de droite permet dafficher ou dditer lobjet slectionn
Les objets du Repository sont organiss en hirarchie :
Chaque composant dapplication est rattach une classe de dveloppement
Chaque classe de dveloppement peut contenir diffrents types dobjets du Repository
: programmes, groupes de fonctions, objets du dictionnaire
- chaque objet du repository contient diffrent types dobjets : variables globales,
modules fonction

Une fois le type dobjet et le nom de lobjet principal renseign dans la partie
suprieure de lcran, lObject Navigator indique la liste hirarchique de tous les
objets qui le composent (exemple : pour une classe de dveloppement donne, la
transaction affichera tous les objets rattachs cette classe, idem pour un programme
ou un groupe de fonctions)

Le bouton
permet de remonter dun niveau dans la hirarchie partir de lobjet
principal (exemple : si lon est dans un programme, on remontera dans la classe de
dveloppement).

La navigation entre les objets au sein de la transaction seffectue par double-clic (ou
menu contextuel). Double-cliquer sur un objet existant permet de lancer la transaction
associe qui permet de le modifier et de lafficher dans la partie de droite. Si lobjet
nexiste pas, le systme propose de le crer.
3.2.4.

Fichier
260038387.doc

Hirarchie des applications : SE81

Modifi le 10/02/15

Imprim le 15/07/03

Page 10

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

La hirarchie des applications permet dafficher la structure du Repository. La prsentation


sous forme de hirarchie permet, partir dune composante applicative, de retrouver les
classes de dveloppement qui lui sont associes. Un double-clic sur une classe de
dveloppement permet de naviguer vers la SE80 et dafficher tous les objets apparents.
3.2.5.

Fichier
260038387.doc

Le systme dinformation : SE84

Modifi le 10/02/15

Imprim le 15/07/03

Page 11

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Cette transaction rpertorie tous les objets du Repository en fonction de leur type. Une fois le
type slectionn par double-clic, on peut effectuer une recherche en fonction de certains
critres (nom de lobjet, classe de dveloppement).
Cette transaction est approprie pour la recherche dobjets spcifiques.
3.2.6.

Les ordres de transport

Les objets du Repository transportables sont automatiquement rattachs un ordre de


transport lors de leur cration.

Un objet est transportable sil est rattach une classe de dveloppement autorisant le
transport lors de sa cration.

La classe de dveloppement dtermine les proprits du transport de l'objet via la


couche transport.

Les classes de dveloppement de chaque systme de dveloppement sont regroupes


en une couche transport.

La couche transport dtermine si les objets sont affects un ordre de modification


local ou transportable.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 12

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

4. Droulement dun programme


4.1. Larchitecture du systme R/3
4.1.1.

Presentation
Server
Layer

Application
Server
Layer

Database

Larchitecture client/serveur

SAPGUI

SAPGUI

Dispatcher

SAPGUI

SAPGUI

Dispatcher

Work
Process

Work
Process

Work
Process

Work
Process

Work
Process

Work
Processss

Work
Processss

Work
Processss

Le systme R/3 repose sur une architecture client/serveur trois niveaux :


Le serveur de prsentation qui est le demandeur de ressources (cest le niveau client),
Le serveur dapplication qui est charg de fournir les ressources,
Le serveur de base de donnes.
4.1.1.1.

Le serveur de base de donnes

Le SGBDR (Systme de Gestion de Base de Donnes relationnelle) est stock sur une seule
machine physique. Cest ce niveau que seffectue la gestion du dictionnaire physique de
donnes, savoir :

Laccs aux donnes,


La mise jour physique de celles-ci,

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 13

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Leur validation.

Pendant une transaction, les donnes sont stockes dans un buffer. Cest seulement en fin de
transaction que la mise jour physique est effectue. On dit alors que la validation des
donnes seffectue par blocs.
4.1.1.2.

Le serveur dapplication

Au niveau applicatif, il existe sept types de tches diffrentes. Ces tches sont rparties sur un
ou plusieurs serveurs et gres sous forme dinstances (ensemble des process dun serveur).

D (Dialog) Dialogue : tche de communication entre le PC et le serveur applicatif,


V (Validate) Mise jour des donnes : tche de communication entre le serveur de
SGBDR et le serveur dapplication,
E (Enqueue) Gestion des blocages : gestion des accs concurrentiels sur les objets,
B (Batch) Traitements en lots : tche de gestion des traitements lancs en batch,
M (Message) Message : tche de communication intra-serveurs (sur une mme
machine),
G (Gate) Passerelle CPIC : tche de communication entre diffrentes machines
distantes,
S (Spool) Gestion des imprimantes : gestion du spool.

Les tches de type D, V, E, B et S donnent lieu un ou plusieurs processus de travail. Chacun


de ces processus est activ par le dispatcher lorsquune requte utilisateur ou systme lieu.
Le dispatcher analyse le type de tche effectuer et laffecte au processus qui doit le traiter.
4.1.1.3.

Le serveur de prsentation

Le serveur de prsentation excute les programmes de linterface utilisateur. Pour SAP, la


plate-forme est un poste de bureautique.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 14

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

4.1.2.

Modifi par

Valid par

Version 1

La vue oriente utilisateur

Presentation
Server
Layer

Work Process
Application
Server
Layer

ABAP Program

Database

Il sagit dun schma simplifi afin de mettre en avant le fonctionnement dun programme
ABAP.
Les programmes ABAP sont excuts sur le serveur dapplication. Cela implique une prise en
compte de limportance des tapes de dialogue avec le serveur de base de donnes et le
serveur de prsentation lors du dveloppement dapplications.
Au niveau du serveur de prsentation, il y a techniquement 3 types dcran possibles
(dynpros, cran de slection et liste). Lutilisateur ne peroit pas les

4.2. Etapes dexcution dun report


4.2.1.

Fichier
260038387.doc

Prsentation

Modifi le 10/02/15

Imprim le 15/07/03

Page 15

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Dans un report (type programme excutable), il ny a pas de gestion dcran dynamique.


Hormis le remplissage de lcran de slection, il ny a aucune interaction avec lutilisateur. En
fin dexcution, une liste peut tre renvoye au serveur de prsentation.
4.2.2.

Chargement du programme

Program start

ABAP Program

Repository

Selection Screen
Data Objects

Database table
ABAP
Processing
Block

ABAP Runtime System

Time

Lorsque lutilisateur lance une application, le programme est charg au niveau du serveur
dapplication partir du Repository.
Lapplication lance dans cet exemple est un programme de type liste avec un cran de
slection,
une variable
Program
start et une structure.
ABAP Program

Lexcution du programme est contrle par lABAP runtime system (processeur ABAP).
Data Objects

4.2.3.

Ecran de slection et excution


ABAP
Processing
Block

Database table

ABAPleRuntime
Modifi
10/02/15SystemImprim le 15/07/03

Fichier
260038387.doc
Time

Page 16

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

La premire tape du traitement correspond au renvoi de lcran de slection du programme


vers le serveur de prsentation par lABAP runtime system.
Le serveur de prsentation contrle lexcution du programme pendant que lutilisateur
renseigne les critres de slection.
Une fois lcran de slection renseign, lutilisateur excute le programme. Les donnes
saisies en cran de slection sont automatiquement transfres au programme qui sexcute.

4.2.4.

Fichier
260038387.doc

Accs aux donnes

Modifi le 10/02/15

Imprim le 15/07/03

Page 17

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

ABAP Program

Program start

Data Objects

ABAP
Processing
Block

Database table

ABAP Runtime System


Time

Le bloc de traitement du programme ABAP contient un accs la base de donnes. Il passe au


serveur de base de donnes des informations telles que le nom de la table laquelle accder et
les lignes de la table lire.
La base de donnes retourne au programme les enregistrements lus dans la structure ou la
table approprie.

Program start
4.2.5.

Edition de la liste

ABAP Program

Fichier
260038387.doc

Modifi le 10/02/15
ABAP Runtime System

Database table

Imprim le 15/07/03

Page 18

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Data Objects

ABAP
Processing
Block

Time

Ldition dune liste est prvue dans le bloc de traitement. A la fin de lexcution, lABAP
runtime system envoie au serveur de prsentation lcran contenant la liste des donnes
afficher.

4.3. Etapes dexcution dun programme interactif


4.3.1.

Prsentation

Un programme interactif (type pool de modules) implique un dialogue avec lutilisateur. Des
crans doivent tre dvelopps et leur dynamique (gestion des enchanements) gre. A
chaque cran correspond une logique dexcution.
4.3.2.

Logique dexcution

La logique dexcution dun cran (dynpro) dfinit son fonctionnement. Lorsquun cran
excut, on distingue trois tapes :
Process Before Output (PBO)
Cette tape est systmatiquement excute avant lenvoi dun cran au serveur de
prsentation. Il sagit dune liste dinstructions codes telles que, par exemple, les contrles
dautorisation, la gestion des blocages, la gestion des titres.
Saisie des donnes
Au cours de cette tape, lutilisateur saisie ses donnes et les valide.
Process After Input
Cette tape est systmatiquement excute lorsque lutilisateur valide ses donnes ou ralise
une action quelconque lcran. Elle correspond lexcution de routines telles que, par
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 19

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

exemple, le contrle des donnes saisies, le passage un autre cran ou la sortie (gestion du
OK_CODE) ou la modification de lcran actuel.
4.3.3.
4.3.3.1.

Etapes dexcution
Chargement du programme et excution

ABAP Program

Program Start

Screen

Repository

Database Table
ABAP
Processing
Block

Time

ABAP Runtime System

Lexemple choisi est un programme de type report avec un cran de slection, mais qui, via un
appel de dynpro, restituera les donnes slectionnes dans un cran au lieu dune liste.
Au dmarrage du programme, lensemble des objets dclars est charg sur le serveur
dapplication partir du Repository. Par rapport lexemple prcdent, on a maintenant en
plus un dynpro et sa logique dexcution.
A ce niveau de lexcution, le fonctionnement est celui dun report : lcran de slection est
envoy au serveur de prsentation par lABAP Runtime System. Lutilisateur renseigne les
champs
et excute
Program
Start le programme.
4.3.3.2.

Accs aux donnes


Database Table

ABAP Program
Data objects

Fichier
260038387.doc

Modifi le 10/02/15
ABAP Runtime System

Imprim le 15/07/03

Page 20

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Screen
ABAP
Processing
Block

Time

Le bloc de traitement du programme ABAP effectue un accs la base de donnes. Il passe au


serveur de base de donnes des informations telles que le nom de la table laquelle accder et
les lignes de la table lire.
Les enregistrements lus sont ensuite renvoys au programme via la structure ou la table
approprie.
4.3.3.3.

Appel de dynpro

ABAP Program

Program Start

Data objects

Database Table

Screen

PBO

ABAP
Processing
Block

PAI
Fichier
260038387.doc

Modifi le 10/02/15
ABAP Runtime System

Imprim le 15/07/03

Page 21

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Time

Un appel de dynpro est effectu par le programme. Le Process Before Output est excut juste
avant lenvoi de lcran au serveur de prsentation. Les donnes afficher sont
automatiquement transfres dans les zones de lcran correspondantes.
Lorsque lutilisateur excute une action, le serveur dapplication reprend le contrle de
lexcution. Les donnes lcran sont alors automatiquement transfres au programme et le
Process After Input est excut. (La sortie de lcran doit tre gre dans le PAI).

5. LABAP Dictionary
5.1. Tables, structures et vues
5.1.1.

LABAP Dictionary

LABAP Dictionary (SE11) dfinit et gre toutes les dfinitions de donnes du systme. Les
dfinitions dobjet les plus importantes sont les tables de base de donnes, les vues, les types
de donnes (lment de donnes, structure et type de table), les domaines, les aides la
recherche et les objets de blocage.
Les tables de la base de donnes sont gres dans lABAP Dictionary en tant que tables
transparentes.
A chaque table transparente de lABAP Dictionary correspond une table physique dans la
base de donnes. Le nom de la table physique et de la dfinition de table logique dans le
dictionnaire ABAP/4 doivent tre identiques.
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 22

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Il existe deux mthodes pour visualiser les tables transparentes dans lABAP Dictionary :
partir de la transaction SE11 en renseignant le nom de la table consulter,
ou directement partir de lditeur ABAP par double-clic sur le nom de la table dans
le code du programme.
5.1.2.

Mthodes de recherche

Les principales mthodes de recherche dune table de base de donnes sont les suivantes :

A partir de la hirarchie des applications (SE81) si lon connat la composante


applicative.

A partir du systme dinformation (SE84) en utilisant comme critre de recherche la


description synthtique.

Si le programme qui accde la table est connu, il existe plusieurs possibilits de


recherche :
partir dune zone de saisie pertinente par rapport la table recherche, on excute
un F1->Informations techniques pour accder, le plus souvent, une zone de
structure. En faisant un cas demploi sur llment de donnes correspondant, on
obtient la liste des tables lutilisant.
partir du nom du programme, on peut utiliser le Debugger, lditeur ABAP en
faisant une recherche sur linstruction SELECT ou lObject Navigator qui donnera la
liste des objets du dictionnaire de donnes utiliss par le programme

Si un des champs de la table recherch est connu, on peut, partir de lABAP


Dictionary (SE11), faire un cas demploi sur llment sur llment de donnes afin
dobtenir la liste des tables lutilisant.
5.1.3.

Tables et structures

Lorsquune table transparente est active dans lABAP Dictionary SE11), son quivalent
physique est automatiquement cr dans la base de donnes. La description de la table au sein
de lABAP Dictionary est automatiquement convertie au niveau du systme de base de
donnes.
Depuis la version 3.0, lordre des champs dans lABAP Dictionary peut diffrer de celui dans
la base de donnes. Cette particularit permet dinsrer de nouveaux champs sans avoir
effectuer une conversion de la table avec rorganisation physique. En fait, un nouvelle zone
est toujours ajoute la fin de la table de base de donnes sans tenir compte de sa position
dans lABAP Dictionary.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 23

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Une structure na pas son quivalent dans la base de donnes. Elle nexiste que dans le
dictionnaire ABAP et correspond une liste de zones qui permet de ne stocker quun seul
enregistrement de donnes le temps de lexcution dun programme.
Vues

5.1.4.

ABAP Dictionary
Join
Table 1

Table 3
Table 2

Projection

Vue utilisateur

Selection

Une vue logique est une projection dune ou plusieurs tables : elle n'est pas sauvegarde de
manire physique dans la base de donnes mais fait fonction de drive d'une ou de plusieurs
tables.
Ce procd de drivation, dans le cas le plus simple, peut se traduire par l'occultation d'une ou
de plusieurs zones d'une table (projection) ou par la reprise dans la vue de certaines entres
particulires d'une table (slection). Des vues complexes peuvent se composer de plusieurs
tables, chacune tant relie par des oprations de jointure.
La vue SAP est un objet logique de lABAP Dictionary (SE11) qui nexiste pas dans le
systme de base de donnes.

5.2. Elments de donnes et domaines


Objets
Table de base

5.2.1.

Field

uses
Fichier
260038387.doc

Semantic field attributes


Data element
Modifi le 10/02/15

uses

Imprim le 15/07/03
Technical field attributes
Domain

Page 24

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Les objets de base pour la dfinition des donnes dans lABAP Dictionary (SE11) sont la
table, llment de donnes et le domaine.
Llment de donnes permet de dfinir le type dune zone, ses proprits et sa description.
En ce qui concerne le type, les caractristiques techniques peuvent tre dfinies directement
au niveau de llment de donnes ou hrites du domaine.
De faon plus gnrale, le domaine constitue la dfinition technique (type et longueur) dune
zone et llment de donnes, sa description (texte descriptif).
Le domaine se dfinit sans faire rfrence dautres objets du dictionnaire. Il dtermine des
informations techniques telles que les valeurs possibles de la zone, son format ddition et son
format interne.
5.2.2.

Fichier
260038387.doc

Une conception deux niveaux

Modifi le 10/02/15

Imprim le 15/07/03

Page 25

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Les 3 zones utilisent le mme domaine car elles ont les mmes attributs techniques.
Un domaine donn dfinit les caractristiques techniques de plusieurs zones via leur lment
de donnes.
La domaine permet de dfinir les attributs dun type de zone de faon unique et donc
dassurer une gestion du dictionnaire de donnes simplifie au maximum.
Llment de donnes revt un caractre plutt contextuel ; il permet de dfinir la zone dun
point de vue smantique (description, aide la recherche, aide F1) en fonction de la table.

6. Analyse de programmes
6.1. Lanalyse statique : lditeur ABAP
6.1.1.

Vue du programme : lObject Navigator

LObject Navigator (SE80) permet dafficher une vue globale des objets dun programme.
Chacun des objets peut tre analys en dtail dans la fentre de droite par simple double-clic
ou en utilisant le menu contextuel.
6.1.2.

Fichier
260038387.doc

Exemple de programme et syntaxe ABAP gnrale

Modifi le 10/02/15

Imprim le 15/07/03

Page 26

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

REPORT ztest.
TABLES kna1.
DATA t_kna1 TYPE kna1.
PARAMETERS p_kunnr TYPE kna1-kunnr.
START-OF-SELECTION.
*Read data record from database
SELECT SINGLE *
FROM kna1
WHERE kunnr = p_kunnr.
IF sy-subrc = 0.
MOVE-CORRESPONDING kna1 TO t_kna1.
WRITE t_kna1-kunnr COLOR COL_KEY. "Display customer
WRITE t_kna1-name1.
ENDIF.

ABAP
Keyword

Additions (dependent on keyword)

Period (ends all


statements)

Un programme ABAP est constitu dune liste dinstructions.


Chaque instruction doit sachever par un point.
Le premier mot de linstruction est appel mot cl.
Chaque mot doit tre spar par au moins un espace.
En rgle gnrale, on retrouve une instruction par ligne.
Des instructions conscutives utilisant le mme mot cl peuvent tre condenses dans une
chane :
WRITE t_kna1-kunnr COLOR COL_KEY.
WRITE t_kna1-name1.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 27

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Devient
WRITE : t_kna1-kunnr COLOR COL_KEY,
t_kna1-name1.

Il existe deux faons dinsrer des commentaires dans un programme:


Une toile (*) dans la colonne 1 permet dcrire une ligne de commentaire,
Les guillemets () permettent dinsrer un commentaire nimporte o dans le
programme.

6.1.3.

Navigation

Definition of
Database table in the
ABAP Dictionary

START-OF-SELECTION.
SELECT SINGLE *
FROM kna1
INTO CORRESPONDING FIELDS OF t_kna1
WHERE kunnr = p_kunnr.
IF sy-subrc = 0.
CALL SCREEN 100.
ENDIF.

Definition of
structure

Screen definition
(in the Screen Painter )

On peut obtenir des informations dtailles sur un objet utilis dans un programme en doublecliquant directement dessus. Cela a pour consquence le lancement de loutil de conception
associ lobjet :
Un double-clic sur le nom dune table dans le programme permet dafficher sa
dfinition dans la fentre de droite via lABAP Dictionary (SE11),
Un double-clic sur une donne locale permet dafficher la section du programme o
elle est dclare,
Un double-clic sur un numro dcran affiche le dynpro via le Screen Painter (SE51).
6.1.4.
Aide et documentation
START-OF-SELECTION.
SELECT SINGLE *
FROM kna1
INTO CORRESPONDING FIELDS OF t_kna1
WHERE kunnr = p_kunnr.
IF sy-subrc = 0.
WRITE t_kna1-name1.
ENDIF.

Fichier
260038387.doc

F1

Modifi le 10/02/15

Keyword Documentation

Imprim le 15/07/03

Page 28

Keyword Documentation

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Une fois le programme affich dans lditeur ABAP (SE38 ou SE80), le bouton information
de la barre doutils active une bote de dialogue offrant de la documentation sur les
principaux objets techniques.
Une autre mthode directe consiste se positionner directement sur le terme du programme
pour lequel on dsire afficher la documentation et activer laide F1.
6.1.5.

Programme de base

TABLES ds_struc.
DATA t_kna1 TYPE kna1.
PARAMETERS p_kunnr TYPE kna1-kunnr.

(1)

START-OF-SELECTION.
SELECT SINGLE *
FROM kna1
INTO CORRESPONDING FIELDS OF t_kna1
WHERE kunnr = p_kunnr.

(2)

IF sy-subrc = 0.
MOVE-CORRESPONDING t_kna1 TO ds_struc.
CALL SCREEN 100.

(3)
(4)

WRITE :/ t_kna1-kunnr COLOR COL_KEY,


t_kna1-name1,
t_kna1-ort01.
ENDIF.

De faon gnrale, un programme ABAP se droule en trois tapes principales :


(1) la dclaration des donnes
Il existe diffrents mots cls permettant de dclarer des datas :

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 29

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

TABLES permet de dclarer une structure (ou une table) dfinie dans lABAP
Dictionary (SE11). Le nom de lobjet dans le programme reste identique celui de la
structure de lABAP Dictionary. Ces structures sont, en gnral, utilises comme
interface dans la programmation interactive (passage des donnes entre lABAP et le
dynpro).
DATA est utilis pour dfinir des objets locaux. Le type de lobjet est prcis en
utilisant le complment TYPE.
PARAMETERS (comme tous les autres mots cls permettant de dialoguer avec
lutilisateur) dfinit non seulement une variable locale, mais aussi une zone de saisie
sur lcran de slection gnr automatiquement par le programme.

(2) les accs la base de donnes


Linstruction SELECT dfinit un accs en lecture la base de donnes. Pour lire un
enregistrement, certaines informations doivent tre prcises :
- dans quelle table lire lenregistrement ? (Clause FROM)
- combien de lignes doivent tre lues ? La clause SINGLE indique quun seul enregistrement
est lu)
- quelle ligne doit tre lue ? La clause WHERE prcise les conditions de slection. Pour un
SELECT SINGLE, la condition de slection doit tre prcise de faon non ambigu
- la clause INTO prcise dans quel objet doit tre copi lenregistrement slectionn. Dans
notre exemple, lenregistrement lu est transfr dans la structure locale T_KNA1.
(3) Affichage des donnes via un cran
- linstruction CALL SCREEN permet dappeler un cran
- les crans ne sont pas simplement des masques de saisie, ce sont des programmes
dynamiques (dynpros) qui grent le dialogue avec lutilisateur
- le mot cl TABLES permet de dclarer une structure qui sert dinterface avec le dynpro.
Toutes les donnes contenues dans la structure sont automatiquement transfres dans les
zones de lcran correspondantes lorsque linstruction CALL SCREEN est excute. De la
mme faon, les donnes saisies sont aussi automatiquement transfres au programme
chaque action de lutilisateur.
(4) Affichage des donnes via une liste
Les principales instructions ABAP permettant dlaborer une liste sont WRITE, SKIP et
ULINE. Linstruction WRITE permet dafficher le contenu dune zone sous forme de liste.
De nombreuses options de formatage permettent de grer laffichage (saut de ligne, position,
longueur daffichage)
La liste apparat automatiquement lcran la fin de lexcution.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 30

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

6.2. Lanalyse dynamique : le mode dbogueur


6.2.1.

Excution en mode dbogueur

Lorsquun programme est lanc partir de lObject Navigator (SE80) (ou de lditeur ABAP
(SE38)), deux modes dexcution sont disponibles :
- Excuter -> Directement excute directement le programme
Pas pas
- Excuter -> Dboguage
excute le programme en mode dbogueur
6.2.2.

Fichier
260038387.doc

Excution pas pas

Modifi le 10/02/15

Imprim le 15/07/03

Page 31

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Excuter un programme en mode dbogueur permet de suivre son droulement instruction par
instruction en utilisant licne Pas pas
ou la touche F5.
Licne Excuter
ou touche F6 permet dexcuter directement les routines appeles par le
programme (modules fonction, bloc de traitement appel par perform).
Licne Retour
ou touche F7 permet un retour direct au niveau de lappel lorsquon se
trouve dans une routine appele.
Pour suivre le contenu dune variable, il suffit de la renseigner dans la colonne de gauche du
tableau. Un autre moyen consiste double-cliquer sur la variable concerne directement dans
le code du programme.
On peut afficher simultanment jusqu huit contenus de variables. Le contenu dune table
interne peut tre affich via le bouton Table.
6.2.3.

Utilisation du point darrt

Continuer

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 32

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

En mode dbogueur, on peut insrer (ou supprimer) un point darrt au niveau dune
instruction en double-cliquant dans la partie vide gauche de la ligne correspondante.
Licne Continuer

ou touche F8 permet dexcuter le programme jusquau point darrt.

Une autre mthode consiste dfinir un point darrt partir de lditeur ABAP (SE38) et
excuter le programme sans activer le mode dbogueur. Dans ce cas, le programme
sexcutera directement jusquau point darrt et passera automatiquement en mode
dbogueur une fois ce dernier atteint.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 33

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

7. Dclaration de donnes et expression ABAP


7.1. Objets de Donnes et types de donnes
7.1.1.

Dfinition des objets de donnes

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

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

Un objet de donnes se dfinit en faisant rfrence un type de donnes (type ABAP


prdfini, type local dfini par lutilisateur ou objet de lABAP Dictionary (SE11)).
La rfrence un type de donnes peut se faire de deux manires :
- DATA v2 TYPE v1 -> v2 fait directement rfrence au type de donnes v1, dans ce cas, v2
hrite directement du type de donnes v1
- DATA v2 LIKE v3 -> v2 fait rfrence lobjet de donnes v3, dans ce cas v2 hrite
indirectement du type de v3.
Un type de donnes peut tre dfinit localement dans le programme ou de faon globale au
niveau de lABAP Dictionary.
7.1.2.

Types locaux

TYPES : <user_defined_type> TYPE <type>


DATA : <data_object> TYPE <type>

Pour dfinir un type de donnes simple ou une variable, il faut se rfrer un type prdfini :
-C
Character
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 34

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

-N
Numeric Text
-D
Date (YYYYMMDD)
-T
Time (HHMMSS)
-I
Integer
-P
Packed Number
-F
Floating Point Number
- STRING Character String
7.1.3.

Variables

DATA : v_kunnr
TYPE kunnr,
v_counter TYPE i,
v_filler(10) TYPE c.

Il est possible de dfinir des variables avec linstruction DATA sans quun type local
nait t dfinit pralablement par linstruction TYPES.

Une valeur par dfaut peut tre prcise au moment de la dclaration de la donne en
utilisant en complment linstruction VALUE.

Pour les variables de type P, C ou N, on peut prciser la longueur de la zone entre


parenthses aprs le nom. Si aucune longueur nest prcise lors de la dclaration, la
variable adoptera la longueur par dfaut du type (voir la documentation SAP sur les
TYPES et DATA).

Pour les donnes de type P, le mot cl DECIMALS utilis en complment permet de


dterminer le nombre de chiffres dsir aprs la virgule (14 au maximum). En
labsence de cette prcision, la zone ne grera pas de partie dcimale.

Si le type nest pas prcis dans la dclaration de la donne, la zone adopte


automatiquement le type C.
7.1.3.1.

Fichier
260038387.doc

Initialisation et transfert

Modifi le 10/02/15

Imprim le 15/07/03

Page 35

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Data Declarations :
CONSTANTS c_land TYPE land1 VALUE FR.
DATA : v_land_1 TYPE land1,
v_land_2 TYPE land1 VALUE EN,
v_counter TYPE i.
v_land_1 v_land_2

Program start

c_land

FR

v_counter

EN

0000

MOVE c_land TO v_land_1

FR

EN

0000

v_land_2 = v_land_1.

FR

FR

0000

ADD 1 TO v_counter.

FR

FR

0001

CLEAR: v_land_1,
v_land_2,
CLEAR: v_counter.

0000

ABAP Runtime System


Time

Au moment de lexcution, le programme est charg au niveau du serveur


dapplication et les objets de donnes sont crs.

Le programme initialise chaque variable par dfaut en fonction de son type.


Linstruction VALUE permet dinitialiser soi-mme une variable en prcisant la valeur
dsire.

Il existe deux syntaxes possibles pour copier le contenu dune variable 1 dans une
variable 2 :
- MOVE var1 TO var 2.
- var2 = var1.
Selon les deux variables sont de types diffrents, il faut en tenir compte.

Linstruction CLEAR permet dinitialiser une variable sa valeur dinitialisation par


dfaut.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 36

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

7.1.3.2.

Modifi par

Valid par

Version 1

Calculs

Data Declarations :
DATA : v_total TYPE i,
v_compteur TYPE
v_pourcentage TYPE

COMPUTE v_pourcentage = v_compteur * 100 / v_total.


* Second possibility with same calculation
v_pourcentage = v_compteur * 100 / v_total.

La formulation des calculs peut tre prcde de linstruction COMPUTE. Cette instruction
est optionnelle et les deux syntaxes peuvent tre utilises de faon indiffrente.
7.1.3.3.

Conditions

CASE <data object1>.


WHEN <data object2>.

WHEN <data object4> OR <data object5>.

WHEN OTHERS.

ENDCASE.
IF <logical expression>.

ELSEIF <logical expression>.

ELSEIF <logical expression>.

ELSE.

ENDIF.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 37

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Les instructions IF et CASE permettent de tester les variables et de conditionner certains


traitements :

CASEENDCASE
La distinction se base sur le contenu de la variable. La variable teste est prcise par
linstruction CASE.
Les diffrentes branches du traitement sont introduites par linstruction WHEN suivie
de la valeur conditionner. ENDCASE permet de conclure linstruction. La condition
WHEN OTHERS est optionnelle.
Exemple :
CASE v_test.
WHEN 1.

WHEN 2.

ENDCASE.

IFENDIF
Les instructions IF et ELSEIF doivent tre suivies dune expression logique. Les
expressions logiques autorises sont dcrites dans la documentation sur le mot cl IF.
Les instructions ELSE et ELSEIF sont optionnelles.
Si l'expression logique est vrifie, le traitement conditionn par lexpression est
excut.
Si l'expression logique n'est pas vrifie, les alternatives ELSE ou ELSEIF sont
excutes. Sil ny a pas dalternative, le droulement du programme se poursuit aprs
la fin de la condition ENDIF.
On peut introduire autant dalternatives exclusives ELSEIF que lon souhaite.
Exemple :
IF v_test > 0.

ELSEIF v_test < 0.

ELSE.

ENDIF.

Cette formulation est quivalente :


IF v_test > 0.

ELSEIF v_test < 0.

ELSEIF v_test = 0.

ENDIF.
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 38

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

7.1.3.4.

Modifi par

Valid par

Version 1

Vrifier la valeur dune variable

Pas pas

Pour suivre le contenu dune variable en mode dbogueur, il suffit de la renseigner dans la
colonne de gauche du tableau. Un autre moyen consiste double-cliquer sur la variable
concerne directement dans le code du programme.
On peut afficher simultanment jusqu huit contenus de variables.
Pour modifier le contenu dune variable durant lexcution, il suffit dinscrire la valeur
dsire la place de lancien contenu et de valider avec licne Modif. cont. zone .
7.1.4.
7.1.4.1.

Fichier
260038387.doc

Structures
Dfinition

Modifi le 10/02/15

Imprim le 15/07/03

Page 39

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

ABAP Dictionary : structure s38e


Field name :
Field type :
App_open
App_id ededitorif

edopen

Structure definition
ds_kna1
s38e

ABAP
Program

ABAP source code


DATA: ds_kna1 TYPE kna1.
TABLES s38e.

Une structure est une combinaison de plusieurs variables appartenant un mme objet de
donnes. Les structures peuvent tre imbriques ; cela signifie quune structure (ou une table)
peut tre un sous objet de structure.
Il existe deux sortes de structures en ABAP :
structures dfinies par linstruction
DATA <name> TYPE <structure_type>.

La structure <name> se dclare localement dans un programme ABAP. Elle est


gnralement utilise pour mmoriser un enregistrement lu dans la base de donnes ou
encore pour raliser des calculs. Sa dfinition fait rfrence lobjet de donnes
(structure ou table) <structure_type> qui peut tre dfini au niveau de lABAP
Dictionary (SE11) ou localement dans le programme (voir laide en ligne sur
linstruction TYPES).

structures dfinies par linstruction


TABLES <ABAP-Dictionary-Structure>.

La structure <ABAP-Dictionary-Structure> est dfinie au niveau de lABAP


Dictionary. Cette instruction permet de lutiliser directement dans un programme. Ce
type de structure sert gnralement dinterface lorsquune excution ncessite un
passage de donnes (programme appelant un dynpro ou une fonction).

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 40

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

7.1.4.2.

Modifi par

Valid par

Accder aux zones de la structure

Ds_kna1
mandt kunnr

Version 1

land1

ABAP
Program

name1
Fields in structures are
always addressed by
<structure>-<field_name>

ABAP Source Code


DATA: ds_kna1 TYPE kna1.
ds_kna1-kunnr = 850000.
SELECT SINGLE *
FROM kna1
INTO ds_kna1
WHERE kunnr = ds_kna1-kunnr.
IF sy-subrc = 0.
WRITE :/ ds_kna1-kunnr,
ds_kna1-name1.
ENDIF.

Laccs une zone donne de structure en lecture ou en criture se fait avec prcisant le nom
de la zone : <structure>-<field_name>.
7.1.4.3.

Assignation zone zone


MOVE-CORRESPONDING <rec1> TO
<rec2>.

DATA : ds_kna1 TYPE kna1.


DATA : BEGIN OF ds_test,
kunnr TYPE kunnr,
name1 TYPE name1_gp,
bukrs TYPE bukrs,
END OF ds_test.

MOVE-CORRESPONDING ds_kna1 TO ds_test.

mandt
100

kunnr

land1

850000

FR

kunnr
850000
Fichier
260038387.doc

name1
Client 1
name1
Client 1

bukrs
300

Modifi le 10/02/15

Imprim le 15/07/03

Page 41

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Linstruction MOVE-CORRESPONDING <rec1> TO <rec2> copie les valeurs zone zone


de la structure rec1 dans la structure rec2. Cette instruction ne fonctionne que si les zones
entre les deux structures ont des noms identiques.
Pour chaque zone existant dans les deux structures, le systme copie le contenu de <rec1><field_name> dans <rec2>-<field_name>. La valeur des autres champs de rec2 reste
inchange.
7.1.4.4.

Vrifier le contenu dune structure

Double-click

Pour suivre le contenu des zones dune structure en mode dbogueur, il faut indiquer le nom
de la structure dans la colonne de gauche du tableau, puis double-cliquer dessus. Un autre
moyen consiste double-cliquer sur la structure concerne directement dans le code du
programme.
7.1.5.
7.1.5.1.

Fichier
260038387.doc

Tables internes
Dfinition et types de table

Modifi le 10/02/15

Imprim le 15/07/03

Page 42

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

ANY TABLE
INDEX TABLE

HASHED TABLE

STANDARD TABLE

SORTED TABLE

Access with
Index

YES

YES

Access with Key

YES

YES

YES

Unique /
Non-unique Key

Non-unique

Unique / Non-unique

Unique

Access using

Mainly Index

Mainly Keys

Keys Only

Une table interne fournit un moyen de sauvegarder dans la mmoire ABAP les donnes dune
structure. Les enregistrements sont sauvegards ligne par ligne, chaque ligne ayant la mme
structure.
Pour dfinir une table interne, il est ncessaire de prciser les informations suivantes :
- le type de ligne : cest une structure qui permet de dfinir les zones de la table interne
- la cl (dpend du type de table)
- le type de table (standard, tri ou adresses calcules)
Il existe trois types de table interne qui se distinguent par leur mode daccs aux
enregistrements :
Les tables standard (standard tables)
Ce type de table autorise les deux types daccs : via lindex de la table ou par les donnes
(cl).
les tables tries (sorted tables)
les enregistrements de cette table sont automatiquement tris en fonction de la cl prcise
lors de sa dclaration. En cas de cl unique, les doublons ne sont pas autoriss. Lajout
denregistrement dans ce type de table tient compte de la cl (instruction INSERT). Si la cl
existe dj et est unique, lenregistrement nest pas insr.

Fichier
260038387.doc

les tables adresses calcules (hashed tables)

Modifi le 10/02/15

Imprim le 15/07/03

Page 43

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Ces tables ne grent pas lindex. Laccs aux donnes se fait uniquement via la cl prcise
lors de la dclaration de la table.
Il existe deux mthodes daccs aux enregistrements dune table interne :
Accs en utilisant lindex
Ce type daccs utilise lindex de la table maintenu par le systme pour accder un
enregistrement.
Exemple : la lecture de lenregistrement ayant lindex 5 revient lire le cinquime
enregistrement de la table interne.
Accs en utilisant une cl
Cet accs revient chercher dans la table interne un enregistrement respectant une condition
donne. Contrairement laccs par lindex, laccs se fait par les donnes.
Exemple : recherche dans une table interne contenant des numros de client (KUNNR) un
enregistrement pour lequel KUNNR = 850000.
Dans un programme, lutilisation de tel ou tel type de table dpend donc de la faon dont on
souhaite accder aux enregistrements. Pour des volumtries importantes, ce choix peut avoir
un impact sur les performances.
7.1.5.2.

Dclaration

ABAP Dictionary
Table type : ztype_table
Line type : ztype_line
Data access type : standard table

ABAP
Program

t_table
DATA t_table TYPE ztype_table.

Un type de table peut tre dfini localement au niveau du programme ou de faon globale
dans lABAP Dictionary (SE11).
Pour dfinir une table interne, il faut lui spcifier un type de table dfini localement ou au
niveau de lABAP Dictionary.
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 44

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

7.1.5.3.

Modifi par

Valid par

Version 1

Traitement sur un enregistrement

Append

APPEND wa_itab TO itab.

Insert

INSERT wa_itab TO itab <condition>.

Read

READ TABLE itab INTO wa_itab <condition>

Change

MODIFY TABLE itab <condition>.

Delete

DELETE itab <condition>.

i
Les oprations suivantes peuvent ralises sur un enregistrement de table interne :
Ajout dun enregistrement : APPEND permet dajouter le contenu dune structure
une table interne. La structure doit avoir le mme type que la ligne de table interne.
Cette instruction ne doit tre utilise quavec les tables standards.

Insertion dun enregistrement : INSERT permet dinsrer le contenu dune structure


dans une table interne de type sorted ou hashed en tenant compte de la cl. La
structure doit avoir le mme type que la ligne de table interne. Cest lquivalent de
linstruction APPEND

Fichier
260038387.doc

Lecture dun enregistrement : READ permet de copier un


enregistrement de table interne dans une structure ayant le
mme type.

Modification dun enregistrement : MODIFY permet de


remplacer le contenu dune ligne de table interne par le
contenu dune structure ayant le mme type.

Suppression dun enregistrement : DELETE permet deffacer


un enregistrement dune table interne.

Modifi le 10/02/15

Imprim le 15/07/03

Page 45

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

7.1.5.4.

Modifi par

Valid par

Version 1

Traitements en masse

Loop :
For all operations

LOOP AT itab INTO wa_itab.

ENDLOOP.

Delete

DELETE itab <condition>.

Insert
multiple lines
from an internal
table

INSERT itab2 <condition2>


FROM itab1 <condition1>.

Append
multiple lines
from an internal
table

APPEND itab2 <condition2>


FROM itab1 <condition1>.

Les traitements suivants permettent de traiter plusieurs enregistrements en une seule tape :

LOOPENDLOOP permet de parcourir tous les enregistrements dune table interne.


A chaque itration, le contenu de la ligne lue est plac dans la structure spcifie par la
clause INTO. La structure doit avoir le mme type que la ligne de la table interne.
Toutes les oprations sur enregistrement unique peuvent tre excutes lintrieur de
cette boucle.
Exemple :
LOOP AT t_table1 INTO ds_table.

APPEND ds_table TO t_table2.


ENDLOOP.

DELETE supprime les lignes dune table interne qui remplissent la condition
<condition>.

INSERT copie le contenu de plusieurs lignes dune table interne dans une autre table
interne

APPEND ajoute le contenu de plusieurs lignes dune table interne dans une autre table
interne de type standard

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 46

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

SORT permet de trier les enregistrements dune table interne en fonction des zones
choisies. Cette instruction ne peut pas tre utilise pour trier des tables tris (sorted
tables).
7.1.5.5.

Exemple : LOOP dune table interne

*Declaration of internal table and workarea


DATA : t_kna1 type kna1 OCCURS 0.
DATA : wa_kna1 type kna1.

t_kna1

wa_kna1
LOOP AT t_kna1 INTO wa_kna1.
WRITE :/ wa_kna1-kunnr,
wa_kna1-name1,
wa_kna1-pstlz,
wa_kna1-ort01.
ENDLOOP.

Linstruction LOOP permet de lire et/ou diter le contenu dune table interne. Dans
cet exemple, le contenu dune ligne est copi chaque fois de la table interne vers la
structure. Les champs de la structure peuvent tre dits avec linstruction WRITE.

Si on voulait changer le contenu de la table interne, il faudrait dabord modifier la


valeur dans la zone de la structure, puis modifier lenregistrement de la table interne
avec linstruction MODIFY.
Exemple :
LOOP AT t_kna1 INTO wa_kna1.
wa_kna1-land1 = FR.
MODIFY t_kna1 FROM wa_kna1.
ENDLOOP.

7.1.5.6.

Fichier
260038387.doc

Exemple : lecture dune table interne en utilisant lindex

Modifi le 10/02/15

Imprim le 15/07/03

Page 47

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

LOOP AT t_kna1 INTO wa_kna1


FROM 1 TO 5.
WRITE :/ wa_kna1-kunnr,
wa_kna1-name1,
wa_kna1-pstlz,
wa_kna1-ort01.
ENDLOOP.

READ TABLE t_kna1 INTO wa_kna1


INDEX 3.
WRITE :/ wa_kna1-kunnr,
wa_kna1-name1,
wa_kna1-pstlz,
wa_kna1-ort01.

En utilisant le complment INDEX, on restreint laccs un certain nombre de lignes.


Laccs en utilisant lindex nest support que par les tables standards et tris.
Le premier exemple montre la syntaxe utiliser pour nditer que les cinq premiers
enregistrements dune table interne.
Le deuxime exemple illustre un accs la troisime ligne dune table interne.
7.1.5.7.

Exemple : lecture dune table en utilisant une cl

LOOP AT t_kna1 INTO wa_kna1


WHERE kunnr = 850000.
WRITE :/ wa_kna1-kunnr,
wa_kna1-name1,
wa_kna1-pstlz,
wa_kna1-ort01.
ENDLOOP.

READ TABLE t_kna1 INTO wa_kna1


WITH TABLE KEY kunnr = 850000
land1 = FR.
IF sy-subrc = 0.
WRITE :/ wa_kna1-kunnr,
wa_kna1-name1,
wa_kna1-pstlz,
wa_kna1-ort01.
ENDIF.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 48

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Lutilisation du complment WHERE permet de restreindre laccs aux lignes qui


remplissent la condition. Les accs via une cl sont supports par les trois types de table
interne. Ce type daccs est malgr tout beaucoup plus performant avec les tables tries ou
adresses calcules quavec les tables standards.
Le premier exemple donne une syntaxe pour nditer que les lignes de la table qui ont pour
numro de client le numro 850000. La table trie est trs approprie pour ce type de
traitement. Le LOOP accompagn de la condition WHERE nest support que par les tables
standards et tries.
Lexemple suivant montre un accs un enregistrement de table en prcisant la cl complte.
Le code retour SY-SUBRC est gal 0 si un enregistrement est trouv. Bien que ce mode
daccs fonctionne avec les trois types de table, les tables adresses calcules restent les plus
appropries pour des accs par cl unique.
7.1.5.8.

Vrifier le contenu dune table

Pour suivre le contenu dune table interne en mode dbogueur, il faut cliquer sur le bouton
Table, puis renseigner le nom de la table dsir dans la zone correspondante.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 49

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

7.2. Contrle du traitement


7.2.1.

CONSTANTS c_fr
TYPE land1
VALUE FR.

Variables systmes et codes retour

Sy-subrc

ABAP Program

0
Basis function at
READ

READ TABLE t_kna1


INTO wa_kna1
WITH TABLE KEY
LAND1 = c_fr.

land1
BE

Not available

ES
BR

t_kna1
IF sy-subrc = 0.
*Message

ENDIF.

Return code 4

ABAP Runtime System

Un certain nombre dinstructions ABAP supporte un code retour. Il sagit de la valeur de la


variable systme SY-SUBRC aprs lexcution de linstruction. La liste des exceptions
possibles (valeurs possibles du code retour) pour une instruction donne est disponible dans
laide ABAP.
Quand un programme est excut, une structure appele SY (base sur le type de donnes
SYST) est automatiquement cre. Cette structure contient un certain nombre de zones
appeles zones systmes et mises jour automatiquement par le systme. Toutes les zones de
cette structure sont accessibles au sein du programme et parmi les champs de cette structure se
trouve la zone SY-SUBRC.
Dans lexemple prsent, on tente de lire un enregistrement via un accs par cl.
Lenregistrement nexistant pas dans la table, la valeur de code retour renvoye aprs
lexcution de linstruction READ est 4. La valeur du SY-SUBRC est disponible
immdiatement aprs lexcution de linstruction.
7.2.2.

Fichier
260038387.doc

Messages utilisateurs

Modifi le 10/02/15

Imprim le 15/07/03

Page 50

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Linstruction MESSAGE permet de dialoguer avec un utilisateur et de linformer des


ventuelles erreurs.
Les messages utilisateurs sont stocks dans la table T100. Ils sont organiss selon leur langue,
leur classe et leur numro. La transaction SE91 permet de les grer.
Les messages peuvent contenir jusqu 4 variables identifies par &1, &2, &3 et &4.
Il existe cinq types de message :
- A (Abend)
- E (error)
- I (Info)
- S (Status)
- W (Warning)
- X (Exit) -> abend with short dump

Which columns ?

SELECT <result>

FROM <table>

Which table(s) ?

Where ?
INTO <destination>
Which lines ?
8. Accs la base de donnes
WHERE <condition>

8.1. Accs en lecture


8.1.1.

Prsentation gnrale de linstruction SELECT

Single line

Particular column
Fichier
260038387.doc

Modifi le 10/02/15

Multiple lines

Imprim le 15/07/03

Page 51

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Linstruction Open SQL SELECT permet daccder aux contenus des tables de la base
de donnes.
Cette instruction se compose dune srie de clauses, chacune dentre-elles remplissant
une fonction particulire :
- la clause SELECT prcise :
si le rsultat de la slection est un enregistrement unique (dans ce cas tous les
champs de la cl primaire doivent tre prciss dans la clause WHERE) ou un
ensemble denregistrements
la liste des zones dont le contenu est rcuprer
si les doublons de la slection doivent tre supprims
la clause INTO prcise lobjet de donnes du programme dans lequel le rsultat de la
slection sera enregistr
la clause FROM prcise la table dans laquelle la slection est ralise
la clause WHERE prcise les conditions de slection. Elle dtermine le nombre
ABAP
Program
denregistrements
slectionner.
Data Objects

8.1.2.

ABAP
Processing
Modalits daccs
Block
SELECT Open SQL

Database
Specific
Conversion

Database SQL

Database
Interface
ABAP Runtime System
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 52

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Open SQL est un driv de Standard SQL compltement intgr au langage ABAP. Il permet
daccder la base de donnes depuis un programme ABAP toujours avec la mme syntaxe
quel que soit le systme de base de donnes utilis avec SAP.
Les instructions Open SQL sont converties dans le langage spcifique de la base de donnes
par la database interface.

ABAP Program
Data Objects

8.1.3.

p_kunnr

SELECT
SINGLE
Wa_kna1
Key

ABAP Processing Block


SELECT SINGLE *
FROM kna1
INTO wa_kna1
WHERE kunnr = p_kunnr.
IF sy-subrc = 0.

Fichier ABAP Runtime System


260038387.doc

Database
Interface
Modifi le 10/02/15

Database
table
KNA1

Imprim le 15/07/03

Page 53

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Linstruction SELECT SINGLE * permet de lire un enregistrement unique. Pour sassurer de


lunicit de lenregistrement, la cl complte doit tre prcise dans la clause WHERE. Si
une entre est trouve, le code retour SY-SUBRC prend la valeur 0.
Linstruction SINGLE permet dindiquer la base de donnes quune seule ligne doit tre lue.
Dans ce cas, ds quun enregistrement est trouv, la recherche sarrte, ce qui rend un
SELECT SINGLE beaucoup plus performant quun SELECTENDSELECT pour lequel on
prcise la cl complte.

ABAP Program
Data Objects

p_land1
Wa_kna1

8.1.4. ABAP Processing


SELECTENDSELECT
Block

Key

SELECT kunnr land1 name1


FROM kna1
INTO wa_kna1
WHERE land1 = p_land1.
Statements for every record read
ENDSELECT.
IF sy-subrc = 0.

Fichier
ABAP Runtime System
260038387.doc

Database
table
KNA1

Database
Interface
Modifi le 10/02/15

Imprim le 15/07/03

Page 54

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Quand linstruction SELECT est utilise sans le complment SINGLE, la lecture des
enregistrements dans la base de donnes est multiple. La liste des champs suivant le SELECT
permet de dterminer les colonnes que doit lire la base de donnes.
La clause WHERE permet de limiter le nombre des enregistrements qui doivent tre lus.
Les donnes lues sont envoyes la database interface par paquets. LABAP runtime system
copie ensuite les enregistrements ligne par ligne vers la structure cible. Linstruction
SELECTENDSELECT constitue donc un boucle et fonctionne de manire de manire
squentielle.
Le code retour prend la valeur 0 si au moins un enregistrement est slectionn. Aprs
lexcution du SELECT chaque itration, la zone systme SY-DBCNT contient le nombre
actuel de lignes lues. Aprs lexcution du ENDSELECT, SY-DBCNT contient le nombre
total denregistrements slectionns.
ABAP Program
Data Objects

p_land1
t_kna1

8.1.5.

Slection par blocs (Array fetch)

Key

ABAP Processing Block


SELECT kunnr land1 name1
FROM kna1
INTO TABLE t_kna1
WHERE land1 = p_land1.
IF sy-subrc = 0.

Fichier ABAP Runtime System


260038387.doc

Database
Interface

Modifi le 10/02/15

Database
table
KNA1

Imprim le 15/07/03

Page 55

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Lorsque la clause INTO TABLE <itab> est utilise, lABAP Runtime System copie le
contenu de la database interface directement dans la table interne itab. Cette opration est
appele array fetch. Dans ce cas, linstruction ENDSELECT ne doit pas tre utilise car le
processus nest plus itratif.
Si au moins un enregistrement est slectionn, le code retour SY-SUBRC est gal 0.

8.1.6.

La clause INTO

DATA wa_kna1 TYPE z_kna1.


SELECT SINGLE kunnr name1 pstlz ort01
FROM kna1
INTO wa_kna1
WHERE land1 = p_land1.

Fichier
260038387.doc

Modifi le 10/02/15

Same type as
column read

Imprim le 15/07/03

Page 56

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Le programme doit prsenter un objet de donnes avec un type appropri pour chaque
colonne de la table de base de donnes slectionne. Pour des raisons de maintenance de
programme, il est recommand dutiliser les mmes types que ceux utiliss par la table de
base de donnes pour dclarer les objets correspondants.
La clause INTO permet alors de prciser les objets de donnes dans lesquels les donnes lues
seront mmorises. Pour cela, il existe deux faons de procder :

utilisation dune structure


Il faut dfinir une structure dans le programme dont les zones respectent la mme
squence que celle des champs prciss par la clause SELECT. Les contenus seront
ainsi copis en fonction de leur position sans tenir compte des noms de zones de la
structure.

Utilisation de variables
Une liste de variables doit tre prcise par la clause INTO.
Exemple :
DATA : v_kunnr TYPE kna1-kunnr,
v_name1 TYPE kna1-name1,
v_pstlz TYPE kna1-pstlz,
v_ort01 TYPE kna1-ort01.
START-OF-SELECTION.
SELECT kunnr name1 pstlz ort01
DATA wa_kna1 TYPE z_type.
FROM kna1
INTO (v_kunnr, v_name1, v_pstlz, v_ort01)
SELECT SINGLE kunnr name1 pstlz ort01
WHERE
FROM kna1
INTO CORRESPONDING FIELDS OF wa_kna1
WHERE land1 = p_land1.

La clause INTO CORRESPONDING FIELDS

8.1.7.

mandt

Fichier
260038387.doc

Same name as
column read

kunnr

name1

pstlz

Modifi le 10/02/15
mandt

kunnr

name1

ort01

Imprim le 15/07/03
pstlz

ort01

Page 57

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Lutilisation de la clause INTO CORRESPONDING FIELDS permet de placer les donnes


slectionnes dans les zones de mme nom de la structure.
Cette clause particulire prsente un certain nombre davantages :
- la structure daccueil na pas besoin dtre structure selon la liste des champs slectionns.
- cette faon de faire est plus facile maintenir. Un nouveau champ slectionner ne requiert
aucune modification ( condition que la structure contienne dj une zone de mme nom et de
mme type que le nouveau champ).
Linconvnient principal li est que cette syntaxe est beaucoup plus gourmande en ressource
que la clause INTO simple. Le temps dexcution peut donc parfois tre plus lev.
Linstruction INTO CORRESPONDING FIELDS OF TABLE <itab> permet denregistrer
directement dans une table interne en utilisant un array fetch.

9. Principes de modularisation
Event

9.1.Block
Elments dun programme ABAP

Local Type and field definition

Event
Block
Selection screen

Event
Block

Module
Interface

Event

Fichier
Block
260038387.doc

Subroutine

Module

Modifi le 10/02/15

Process
Before
Output
Process
After
Input

Imprim le 15/07/03

Page 58

Screen

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Un programme ABAP se compose dune succession de blocs de traitement. Un bloc de


traitement est une section passive du programme qui est excut de faon squentielle
lorsquelle est appele.
Il existe plusieurs types de blocs de traitement en ABAP :

les blocs de traitement vnementiels (event block) sont appels par le systme
(runtime system) lors de lexcution dun programme, dun cran de slection ou
dune liste.

les sous-routines sont excutes via une instruction ABAP. Elles peuvent contenir des
variables locales et des paramtres peuvent ventuellement leur tre passs .

les modules sont des blocs de traitement spcifiques lis la logique dexcution des
dynpros.

Les vnements

9.1.1.
9.1.1.1.

Exemple : programme ABAP avec vnements

Local type and field definitions


Selection screen
generated

INITIALIZATION.
p_date = p_date 7.
Fichier
START-OF-SELECTION.
260038387.doc
WRITE p_date.

PARAMETERS p_date LIKE sy-datum


DEFAULT sy-datum.

Event block
Modifi le 10/02/15

Imprim le 15/07/03

Event block

Page 59

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Dans tous les exemples de programmes vus jusqu maintenant, il ny avait quun seul bloc de
traitement en plus des dclarations de donnes. Dans ce cas, il est inutile de dclarer des blocs
de traitement de faon explicite. Par contre, dans les programmes complexes, il devient
ncessaire de crer des blocs de traitement afin damliorer la lisibilit.
Le programme ci-dessus donne un exemple dvnements. Il indique une date par dfaut sur
le paramtre de lcran de slection. Cette valeur par dfaut ne peut pas tre dfinie au niveau
de linstruction PARAMETERS car elle ncessite un calcul.
Linstruction DEFAULT permet de dfinir une valeur par dfaut lexcution du programme.
Les valeurs par dfaut peuvent tre des constantes de type caractre ou des zones de la
structure SYST.
Lvnement INITIALIZATION permet de modifier la valeur de la date au moment de
lexcution, mais avant lenvoi de lcran de slection par le systme.
START-OF-SELECTION est un vnement utilis pour la cration de listes.
Les dclarations globales de donnes sont identifies dans tout le programme par le systme
et forment ainsi un bloc de traitement logique. (Cependant, pour des raisons de clart, il
convient de dclarer les objets de donnes en dbut de programme).
PARAMETERS fait partie des instructions permettant de dclarer des objets de donnes.
Cette instruction permet de gnrer automatiquement un cran de slection lorsque le
programme est activ.

9.1.1.2.

Exemple : excution dun programme avec vnements

Program
Start

ABAP program
INITIALIZATION.
p_date = p_date 7.

START-OF-SELECTION.
WRITE p_date.

Fichier
260038387.doc

Modifi le 10/02/15

ABAP runtime system


Time

List
buffer
for basic
list
Imprim le 15/07/03

Page 60

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Le systme excute les vnements dans une squence prdtermine pour la gnration de
listes :
- lvnement INITIALIZATION est dabord excut
- lcran de slection est ensuite envoy au serveur de prsentation
- ds que lutilisateur valide son cran, lvnement START-OF-SELECTION est appel
- si lvnement START-OF-SELECTION contient des instructions ddition (WRITE,
SKIP ou ULINE), une liste est mmorise dans un buffer
- la liste est ensuite envoye au serveur de prsentation.
9.1.1.3.

Les vnements dans un report

Les vnements sont des blocs de traitement appels par le systme ABAP. La squence dans
laquelle ils sont excuts est dtermine par le systme ABAP de faon automatique.
Dans les programmes excutables (reports), il existe diffrents vnements qui rpondent aux
fonctions ncessaires la cration de listes (AT SELECTION-SCREEN, TOP-OFPAGE)
Lordre dans lequel sont crits les vnements dans le programme na pas dincidence sur la
squence dexcution dtermine par le systme ABAP. Le systme excutera toujours les
vnements dans un ordre prdtermin.
START-OF-SELECTION est lvnement par dfaut pour la gnration de liste. Il est
appel par le systme ds lors que lutilisateur a press la touche F8.
INITIALIZATION est un vnement qui permet de dterminer des valeurs par dfaut avant
laffichage de lcran de slection. Il permet deffectuer des oprations qui normalement ne
peuvent tre ralises que pendant lexcution.
La fin dun vnement est dlimite par le dbut de lvnement suivant.
9.1.2.

Les sous-routines

Event
Block
Interface
Subroutine
Interface
Subroutine
Fichier
260038387.doc

Functions encasuplated
Better strcutured programs that can
be read and understood more easily
Easier program maintenance
Can be reused locally within
program
Processing block interface

Modifi le 10/02/15

Imprim le 15/07/03

Page 61

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Les sous-routines sont des blocs de traitement avec une interface qui peuvent tre appels par
nimporte quel autre bloc de traitement via linstruction PERFORM.
9.1.2.1.

Sous-routines et Object Navigator

Right mouse click

La transaction SE80 permet de naviguer entre les sous-routines au sein du programme.


Lutilisation du cas demploi sur une sous-routine permet dobtenir la liste de tous les
programmes qui lappellent.
9.1.2.2.

Exemple de sous-routine

PARAMETERS p_land1 TYPE land1.


DATA : t_kna1 TYPE itab.

PERFORM fill_itab USING p_land1


CHANGING t_kna1.

FORM fill_itab USING value(p_param) TYPE land1


CHANGING p_t_itab
TYPE itab.
Fichier
Modifi le 10/02/15
ENDFORM.
260038387.doc

Imprim le 15/07/03

Page 62

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Idalement, lexamen du nom et de linterface peut permettre de dterminer la fonctionnalit


dune sous-routine.
Pour appeler une sous-routine, il faut connatre :
- son nom
- les paramtres dentre de linterface : il sagit de paramtres en lecture seule lists aprs
linstruction USING.
- les paramtres de sortie : il correspondent aux paramtres suivant linstruction
CHANGING. Ils sont mis jour par le sous-programme.
Dans tous les cas, le type et lordre des paramtres doivent tre respects.
Lorsquune sous-routine est appele, tous les paramtres de linterface doivent tre prciss
au niveau du PERFORM. Les paramtres de linterface sont appels formal parameters et
les paramtres envoys la sous-routine sont appels actual parameters.
Lors dun appel de sous-routines, le nombre dactual parameters doit correspondre au
nombre de formal parameters.
En mode debug, on peut passer travers toutes les lignes de code du programme, y compris
les sous-routines, en utilisant la touche F5 (pas pas) ou sinon excuter directement les sousroutines sans rentrer dedans en utilisant la touche F6 (excuter).
9.1.3.

Import parameters

Les modules fonction

Function module

Export
parameters
Exception

Les modules fonction sont des programmes indpendants dots dune interface excutables
directement via la transaction SE37.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 63

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Les modules fonction remplissent des fonctionnalits prcises et souvent utilises dans les
programmes. Ils sutilisent comme des sous-routines.
Linterface dun module peut contenir les lments suivants :
Import parameters
Les paramtres dimport correspondent aux paramtres qui sont passs au module
fonction par le programme appelant. Certains paramtres dimport peuvent tre
optionnels.

Export parmeters
Les paramtres dexport correspondent aux paramtres envoys par le module
focntion au programme appelant. Les paramtres dexport sont toujours optionnels.

Changing parameters
Ces paramtres sont mis jour et passs au programme appelant par le module
fonction. Le rsultat est retourn au programme appelant une fois lexcution du
module fonction termine. Les paramtres mis jour peuvent tre optionnels.

Exceptions
Les exceptions permettent dintercepter les ventuelles erreurs lies lexcution du
module fonction. Si une erreur dclenche une exception, lexcution du module
fonction sarrte. Ces exceptions peuvent tre traites dans le programme dans le
programme appelant car la valeur de lexception est assigne au code retour SYSUBRC.

Dans un programme, les modules fonction sont appels en utilisant linstruction CALL
FUNCTION. Le nom du module fonction doit tre prcis entre cotes.
Exemple :
CALL FUNCTION POPUP_TO_CONFIRM_LOSS_DATA
EXPORTING
textline = gd_textline
title = gd_title
IMPORTING
answer = gd_answer.
CASE gd_answer.
WHEN

WHEN

ENDCASE.

Le systme transfre les paramtres prciss aprs linstruction EXPORTING du programme


vers le module fonction. Les paramtres prciss aprs linstruction IMPORTING sont
transfrs par le module fonction au programme.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 64

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Dans la partie gauche sont indiqus les noms des paramtres de linterface du module
fonction, tandis qu droite de lgalit saffichent les objets de donnes utiliss par le
programme appelant.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 65

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

10.

Modifi par

Valid par

Version 1

Evolution du standard

10.1. Etendue des possibilits


10.1.1.

Plusieurs possibilits de faire voluer le standard SAP :

Personnalisation : cela se traduit par des modifications dattributs de champs


(valeurs par dfaut, masquer des champs, traductions, menus spcifiques, etc.).
Extensions : Crer des objets spcifiques qui font rfrence des objets standards
SAP.
Modification : modification dobjet du Repositery SAP, ce qui signifie que ces
modifications seront perdues lors de la livraison de version plus rcente de lobjet
concerne. Les modifications doivent alors tre rimplantes. Depuis la version 4.5A,
ces modifications peuvent tre automatiquement rimplantes en utilisant lAssistant
Modification de SAP.

Certaines se traduisent par des actions de paramtrage et dautres par du dveloppement


ABAP.
10.1.2.

Procdure de choix de la mthode :

On regarde dabord si la fonction souhaite nest pas propose dans le standard SAP,
aux ajustements possibles reprsents par le paramtrage et la personnalisation.
Puis si on na pas trouv cette fonction, on regarde sil existe une fonction similaire
dans le standard SAP.
o Si non, on fait du dveloppement spcifique.
o Si oui, on regarde si cette fonction similaire possde des extensions.
Si oui, on utilise les extensions.
Si non, on fait du dveloppement spcifique (copie de programme
standard ou non, et en dernier lieu, modification du standard).

Par consquent, on ne doit faire de modifications de standard que si :


Le paramtrage et la personnalisation ne rpondent pas au besoin ;
Aucune extension nest disponible ;
Une copie du programme standard na pas de sens pour vous.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 66

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

10.2. Personnalisation
Il existe diffrents niveaux de personnalisation :
Entreprise
Rles
Utilisateur
10.2.1.

Personnalisation au niveau Entreprise :

Au niveau de lentreprise, on peut personnaliser SAP au niveau des structures


organisationnelles et des processus mtiers. Ces actions sont lies au paramtrage fonctionnel
de SAP.
10.2.2.

Personnalisation au niveau Rles :

Au niveau des rles, on peut personnaliser SAP au niveau des menus de domaine, des menus
bass sur les rles et des variantes de transactions. Ces actions sont lies au paramtrage des
autorisations dans SAP.
Les variantes de transactions (SHD0) permettent de personnaliser une transaction standard
SAP, en masquant des zones, en renseignant des valeurs par dfaut, etc. Cette transaction
standard possde alors des variantes de transactions, qui sont, elles, des transactions
spcifiques dans SAP.
10.2.3.

Personnalisation au niveau Utilisateur :

Au niveau de lutilisateur, on peut personnaliser les favoris, les liens, les raccourcis, etc.

10.3. Extensions
Il est possible de distinguer 4 types dextensions :
Celles lies au dictionnaire de donnes
Customer Exits
Business Transaction Events
Business Add-Ins
10.3.1.

Dictionnaire de donnes

Il existe les extensions de tables et les exits de zones.


10.3.1.1. Extensions de tables

SAP fournit 2 mthodes pour tendre les tables, celles-ci permettent de rajouter des champs
sans modifier la table standard.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 67

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Les structures append :


Les structures append ne peuvent tre utilises quavec les tables transparentes
(impossible avec les tables POOL et CLUSTER). La structure est spcifique la table
laquelle elle appartient.
Lors de monte de version, ces structures ne sont jamais crases, car cres dans
lespace nom client. De la mme faon, les zones de la structure devant tre cres en
YY* ou ZZ*, elles ne seront pas crases lors de la monte de version.

Les Customizing Includes (CI_include) :


Certaines tables contiennent dj des instructions particulires (Customizing Include).
Ces tables sont celles qui sont le plus souvent tendues avec des champs spcifiques.
Contrairement aux structures append , un mme CI include peut tre ajout
plusieurs tables. Cela permet de mieux assurer la cohrence des donnes.
Trs souvent les CI includes sont rattachs aux projets dextensions (voir partie
suivante sur les Customer Exits).
Le nom des zones dun include doit commencer soit par YY soit par ZZ.
Lors de monte de version, ces includes ne sont pas crass.
10.3.1.2. Exit de zone

Il existe dans SAP la possibilit dajouter du code un lment de donnes. Par consquent ce
code est utilis chaque fois quune zone dans un cran fait rfrence cet lment de
donnes. On a aussi la possibilit daffecter ce code aux crans souhaits afin de spcifier au
maximum la fonction de cet exit.
Ltendue des possibilits de codage est faible, car on ne connat que la valeur du champ
concern, et on ne peut modifier que celle-ci.
Par contre cela peut tre intressant pour formater un champ (saisie de 10 caractres dans une
zone de 20, vrification quune zone est obligatoire alors que le paramtrage ne permet pas de
le faire, etc.).
Pour plus dinformations, merci de vous rfrer la note OSS 29377 qui explique comment
utiliser cette fonctionnalit que SAP ne souhaite plus promouvoir depuis la version 4.6C, mais
qui est toujours prsente dans le systme.
10.3.2.

Customer-exits

Il existe 3 types de customer exits :


Menu exits :
Ils permettent dajouter des fonctionnalits dans les menus droulants et de faire appel
des crans spcifiques.
Screen exits :

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 68

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Ils permettent dajouter des crans spcifiques contenant des zones spcifiques dans
les crans standards.
Function module exits :
Ils permettent dinsrer le code spcifique li une nouvelle fonctionnalit et sont
identifiables par leur syntaxe : CALL CUSTOMER-FUNCTION 001 .
Le nom de ces fonctions est normalis : EXIT_<nom_prog>_nnn :
o Nom_prog = le nom du programme standard contenant lextension
(SAPMF02A pour la cration de client, etc.)
o Nnn = un numro incrment commenant 001, et en rapport avec le numro
dans la syntaxe CALL CUSTOMER-FUNCTION nnn.
10.3.2.1. Comment retrouver une extension

A partir de la gestion des extensions :


Dans lABAP workbench, slectionner utilitaires extensions gestion de projets
(transaction CMOD), puis utilitaires extensions SAP (transaction SMOD)
La slection peut tre limite par plusieurs critres :
o la classe de dveloppement (que vous pouvez connatre via les composantes
applicatives) ;
o le nom du programme standard contenant la fonctionnalit tendre (lancer la
transaction que vous souhaitez tendre, faire systme statut, et prendre le
programme GUI ;
o la dsignation (attention, les traductions ne sont pas forcment bien faites) ;
o autres critres plus ou moins exotiques.
A partir du programme applicatif :
Lancer la transaction que vous souhaitez tendre, faire systme statut, et double
cliquer sur le nom de programme.
Puis lancer une recherche globale dans le programme sur la chane de caractres
CALL CUSTOMER .
A partir de laide et/ou de lIMG :
Vous trouvez trs souvent beaucoup de documentation fonctionnelle ( quoi cela sert,
comment cela marche) et technique (nom des extensions, leur rle) sur les extensions
partir du nud de lIMG se rapportant la fonctionnalit que vous souhaitez tendre,
et en appelant laide concerne.
De la mme faon, directement dans laide lapplication vous pouvez retrouver les
pages concernes.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 69

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Ci-dessous les extensions lies la facturation :

10.3.2.2. Mise en uvre dun customer exit

Lutilisation dun customer exit implique quil soit assign un projet.


Un projet peut contenir plusieurs extensions (on cre en gnral un projet par transaction).
Une extension ne peut apparatre que sous un seul projet.
Pour activer un customer exit, il faut activer le projet qui le contient. Lorsque le projet est
activ, tous les exits quil contient deviennent actifs.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 70

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

10.3.3.

Modifi par

Valid par

Version 1

Business Transaction Events

Les BTE sont prsents dans 3 domaines (Comptabilit gnrale, Comptabilit clients et
fournisseurs, Administration des ventes) et mettent disposition 2 types dinterfaces.
10.3.3.1. Les interfaces Publish&Subscribe

Elles permettent de mettre disposition dun systme externe des donnes SAP (par exemple
cration/modification dun client) sans quaucune donne ne soit retourne SAP.
10.3.3.2. Les interface Process

Elles permettent de soumettre le processus des contrles et des dterminations de valeurs


spcifiques. Il est possible dy connecter des dveloppements externes au systme SAP.
10.3.3.3. Mise en uvre

La mise en uvre se fait par la transaction FIBF, options modules processus dune appl.
SAP

Laccs aux BTE disponibles seffectue par le Search-Help de la zone processus

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 71

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Une fois le BTE choisi, insrer le nom du module fonction dvelopp (il doit commencer par
Y ou Z)

10.3.4.

Business Add-Ins (aka BAdI)

Cette fonctionnalit utilise les concepts de la programmation oriente objet.


Un Business Add-In est plutt conseill dans les dveloppements de fonctionnalits partages
entre SAP et dautres applications. Aprs dveloppement dun BAdI pour une application
tierce, le BAdI est compltement rutilisable pour dautres applications concernant la mme
fonctionnalit.
Un BAdI contient les composantes dune extension (Menu, Ecran et Programmes).
Un BAdI contient des composants crs lors de la dfinition :
Interface
Classe gnre (connecteur add-in)
La classe gnre ralise les tches suivantes :
Filtrage : assure la cohrence et ltanchit du dveloppement.
Contrle : la classe nappellera que les dveloppements actifs.
Cette fonctionnalit est trs rarement mise en uvre sur des projets SAP.
On accde aux BAdI via la transaction SE18. On peut alors, en utilisant le matchcode, obtenir
la liste de BAdI par composant SAP:

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 72

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Ou par le systme dinformation :

Une fois le BAdI trouv, limplmentation se fait via la transaction SE19.


Exemple dimplmentation du BAdI BOM_EXIT :

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 73

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

10.4. Modifications
Il est possible de distinguer 3 types de modifications :
User Exits ;
Modifications Assistes (avec le Sap Software Change Registration - SSCR) ;
Modifications non assistes (certains objets SAP ne sont pas bloqus par des
cls dobjets associs au SSCR).
Il faut savoir quun objet (programme, table, etc.) nest original que dans un seul systme.
Pour les objets SAP, le systme original est un systme SAP appartenant SAP. Ces objets
sont copis sur les systmes clients.
Pour les objets clients, le systme original est le systme de dveloppement, les autres
systmes ne contenant que des copies.
10.4.1.

User exits

Les programmes avec user exits contiennent en certains points des appels des routines
identifies par leur prfixe USEREXIT . Il est possible dinclure dans ces routines les
modifications souhaites sur les lments visibles depuis cette routine (tables internes,
structures, etc.).
Les user exits se trouvent principalement dans la fonctionnalit SD, la liste peut tre consulte
dans lIMG sous Sales and Distribution System Modification User exits.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 74

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Userexit pour insrer/modifier


des zones au niveau postes de
commande

A lintrieur de ces routines, au lieu dinsrer directement votre code, prfrer


lencapsulation de votre code. Cest--dire insrer une fonction ou include dans la routine
standard, et coder dans linclude ou dans la fonction votre exit. Cela vous permet de
minimiser limpact dune monte de version.
10.4.2.

Modification assistes

Pour viter des modifications sauvages sur les copies des objets SAP, SAP les bloque via une
cl qui est accessible seulement via OSS et le SSCR. Cette fonctionnalit enregistre toutes les
modifications dobjets standards SAP, et permet dacclrer la rimplmentation des
modifications lors dune monte de version.
A lintrieur du programme standard modifi, au lieu dinsrer directement votre code,
prfrer lencapsulation de votre code. Cest--dire insrer une fonction ou include dans le
programme standard, et coder dans linclude ou dans la fonction votre code. Cela vous permet
de minimiser limpact dune monte de version.
De mme ne jamais supprimer du code standard, mais le mettre en commentaire.
10.4.3.

Modification non assistes

Contrairement au point prcdent, certains objets (matchcodes, index de tables, paramtres de


buffer, autres) ne sont pas bloqus via une cl par SAP.
Lors dune monte de version, ces objets sont automatiquement rimports dans leur version
la plus rcente, qui ne contient donc pas vos modifications. Vous devez nouveau appliquer
vos modifications sur ces objets. Cette phase-l peut tre trs pnalisante en temps et en
ressources si les modifications ne sont pas documentes.
A lintrieur du programme standard modifi, au lieu dinsrer directement votre code,
prfrer lencapsulation de votre code. Cest--dire insrer une fonction ou include dans le
programme standard, et coder dans linclude ou dans la fonction votre code. Cela vous permet
de minimiser limpact dune monte de version.
De mme ne jamais supprimer du code standard, mais le mettre en commentaire.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 75

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

11.

Modifi par

Valid par

Version 1

Erreurs dexcution ABAP

Un systme SAP tant en perptuelle volution, des bugs techniques peuvent tre prsents
aussi bien dans la partie standard que dans les programmes spcifiques. Une erreur
dexcution ABAP se traduit par un arrt brutal du programme avec dition dune log. Il sagit
dun dump.
La liste des dumps (encore appels vidages de la mmoire ABAP) est visible via la transaction
ST22.

11.1. Analyse des erreurs


11.1.1.

Analyse du vidage de la mmoire ABAP : ST22

Pour un jour donn, elle fournit la liste des vidages mmoire du systme. Un double-clic sur
une ligne permet dafficher la log dtaille du dump correspondant.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 76

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

11.1.2.

Modifi par

Valid par

Version 1

Prsentation du compte rendu derreur

Le dump gnr par le systme contient un certain nombre dinformations utiles la


comprhension de lanomalie. Il reprsente un instantan de ltat du programme au moment
ou lerreur se produit.
Les rubriques les plus importantes sont les suivantes :

Lentte du document

Dans cette partie sont indiques le nom de lerreur dexcution (ici, BCD_ZERODIVIDE)
ainsi quune description synthtique du problme (ici, division par 0 avec une variable de type
P dans le programme ZFORMATION)

Analyse erreur

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 77

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Cette rubrique dtaille les informations dj rvles dans lentte. Des indications
supplmentaires comme par exemple la liste des mots des mots cls susceptibles de gnrer ce
type de derreur.

comment corriger lerreur

Cette rubrique indique parfois dans certains types de dump des conseils utiles la rsolution
de lanomalie (comme par exemple lutilisation dune autre instruction plus approprie
lorsquil sagit dun programme spcifique).
Dans le cas dun dump de programme standard, une liste de mots cls utiles est propose pour
la recherche via OSS.

Infos sur point dinterruption

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 78

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Certains lments du programme tels que lvnement ou le nom de la routine concerns par
linterruption sont prciss.

Extrait code source

Un extrait du code source qui prcde linterruption est repris. La dernire ligne affiche
indique linstruction responsable de lanomalie.

Variables slectionnes

Le contenu de certaines variables du programme au moment du dump est parfois indiqu.


Cette section peut se rvler utile pour connatre la valeur ou la donne lorigine de lerreur
dexcution si celle-ci est reprise dans le compte rendu. Cette section est cependant plus
rserve des utilisateurs avertis (dveloppeurs confirms).

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 79

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

11.1.3.

Modifi par

Valid par

Version 1

Time-out

Le time-out est un dump relativement frquent chez les utilisateurs. Il est particulier dans le
sens o il nest pas li une erreur de programme, mais un problme de dure dexcution.
Il se produit lorsque la dure dexcution dun programme lanc en avant plan excde la
valeur maximale fixe par les administrateurs du systme (en moyenne 10 minutes).
Lorsquun time-out se produit, la raction la plus vidente consiste excuter le programme
en arrire plan. Cette solution a lavantage dtre immdiate et efficace.
De mme, il faut penser restreindre suffisamment les critres de slection du programme de
faon les rendre le plus pertinent possible et ainsi rduire considrablement le temps
dexcution.
Dans un deuxime temps, si lapplication doit de prfrence tre excute en avant plan, on
peut tenter doptimiser ou de modifier le programme afin damliorer les temps de traitement
Une dernire solution consiste augmenter la valeur maximale du time-out du systme SAP,
mais elle est souvent refuse par les administrateurs.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 80

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

11.1.4.

Modifi par

Valid par

Version 1

Autres erreurs dexcution

Lorsquon excute une application et quun dump se produit, il faut cliquer sur le bouton
Dbogueur afin dobtenir un tat du programme (contenu des variables) linstant du
vidage mmoire. On peut ainsi consulter les datas et vrifier les valeurs incrimines.
Dans lexemple ci-dessus, le compte rendu nous informe que le vidage mmoire est la
consquence dune division par zro. Lactivation du dbogueur permet de voir directement
quel moment (tat des variables) et dans quelle partie du programme sest produit lerreur.
Ici, le curseur est positionn sur linstruction suivante : v_test = p_1 / p_2.
Le dbogueur permet de constater que le dnominateur p_2 est gal 0. Il convient ce
moment de savoir sil sagit dun problme de donne non conforme ou dun algorithme
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 81

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

dficient. Dans notre cas, il apparat que la solution consiste rajouter un contrle sur la
donne p_2 afin dviter deffectuer une division par 0.
Dans cet exemple, lutilisation du dbogueur ne savre pas ncessaire car la dtection de
lanomalie est vidente. Mais on peut imaginer un cas plus complexe o laide du dbogueur
devient prcieuse :
Prenons maintenant lexemple dune interface qui charge un important fichier de donnes afin
de le traiter et de lintgrer dans SAP. La structure du fichier contient des zones spcifies
comme tant des montants ; on peut trs bien imaginer un fichier corrompu dans lequel une
zone montant contiendrait un caractre alpha, ce qui entranerait un dump de linterface lors
de lintgration du fichier. Dans ce cas, il peut tre important de connatre la valeur de la zone
responsable afin de la corriger et le dbogueur prend alors toute son utilit.
De faon gnrale, on peut distinguer deux types de cause lie un dump :

Il peut sagir dune anomalie au niveau des donnes (exemple : une interface qui
reoit une valeur de type caractre alors quune valeur numrique est attendue)
ou dun bug de programmation (exemple : division par zro ou index invalide lors
dune mise jour de table interne).

Lorsquil sagit dune erreur dexcution de programme spcifique, la correction est faite en
interne par lquipe de maintenance.
Dans le cas dun programme standard, aprs stre assur de la validit des donnes, il
convient de consulter le service OSS de SAP.

11.2. OSS
11.2.1.

Prsentation

OSS est un service dassistance en ligne (Online Service & Support) pour le systme SAP R/3.
On peut accder ce service via Internet (http://www.mysap.com/) ou via SAP (transaction
OSS1).
En cas de problme technique ou fonctionnel sur un traitement standard SAP, une solution
rapide consiste utiliser le service OSS et d'y chercher soi-mme la solution. C'est une vraie
base de donnes recensant tous les incidents sous forme de "Notes OSS" qui proposent la
solution mener afin de remdier au problme.
Le service OSS reprsente une mine dinformations considrables pour le consultant SAP, quil
soit technique ou fonctionnel. Il faut systmatiquement penser consulter le service de note
OSS lorsque lon est confront un problme de fonctionnement standard technique ou
fonctionnel.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 82

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

11.2.2.

Mthodes de recherche

11.2.3.

Cration dun message

Version 1

La recherche de notes sur OSS seffectue laide dun moteur de recherche (ci-dessus la
dernire version disponible avec le SAPGUI 6.20).
Pour une recherche efficace, les recommandations suivantes peuvent tre prises en compte :
Ne pas tre trop vague
Effectivement, il nest pas pertinent deffectuer une recherche avec des termes gnriques tels
que par exemple pricing procedure qui peuvent regrouper une multitude de composantes.
Dans ce cas, le rsultat constitu de plusieurs centaines (voire de plusieurs milliers) de notes
risque dtre peu exploitable.
Il faut plutt dmarrer avec une recherche relativement prcise et largir au fur et mesure le
primtre si linformation nest pas trouve.
Lorsque cela est possible, il vaut mieux privilgier les termes techniques (nom technique de
zone, numro de message, classe de message) par rapport aux termes mtiers ou fonctionnels
ce qui rendra le primtre de rsultat beaucoup plus en adquation avec la recherche

Utiliser des mots cls plutt que des phrases

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 83

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Il vaut mieux effectuer la recherche avec des mots cls (options All Terms AND ou At
Least On Term OR ) plutt que dutiliser des phrases (option Phrase). En effet, en utilisant des
phrases, le primtre est fortement restreint et la recherche risque de ne pas aboutir.
retreindre la recherche la version et au niveau de patches du systme
Toujours dans le but de restreindre la slection de notes possibles, il convient de renseigner le
maximum de critres connus. Il faut ainsi indiquer la version et le niveau de support package du
systme.
Pour connatre le niveau de support package dun systme SAP R/3 :

En passant par le menu Systme -> Statut -> bouton informations composantes
, il faut
rechercher le dernier numro de R/3 Support Package, soit dans notre exemple SAPKH46C36.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 84

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

Si la composante applicative est connue, il faut aussi lindiquer dans la partie Seach Criteria
de linterface.
Si la recherche est la consquence dun dump standard
Il faut dans ce cas se reporter la rubrique Comment corriger lerreur du compte rendu
derreur et effectuer la recherche avec la liste de mots cls propose.
Si pour une anomalie donne (dump technique ou problmatique fonctionnelle), aucune note
nest disponible sur le sujet et sil ne sagit dun problme li aux donnes, il se peut quil
sagisse dun bug non encore signal. Dans ce cas, il convient de rdiger un message dans OSS.
La note OSS 94300 disponible en annexes de ce document dcrit les rgles respecter lors de la
cration dun message dans OSS.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 85

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

12.

Modifi par

Valid par

Version 1

Annexes

12.1. Exemples dtaills


Dans cette partie sont prsents des exemples de programmes concrets permettant dillustrer
lensemble des sujets abords dans ce document. Les programmes prsents sont totalement
oprationnels et existent dans une version identique sur le serveur SAP R/3 Betsy (DE1).
De nombreux commentaires expliquant la plupart des instructions sont prsents dans les
programmes afin dassurer une lisibilit maximale.
12.1.1.

Exemple 1 : programme ZFORMATION1

*----------------------------------------------------------------------* ABAP l'usage des consultants fonctionnels - exemple 1


*
* Points abords :
* - dfinition des objets de donnes types locaux et standards)
* - select single
* - code retour
* - assignation zone zone
* - accs aux zones d'une struture
* - conditions
*----------------------------------------------------------------------REPORT zformation1 .
*----------------------------------------------------------------------* TABLES
*----------------------------------------------------------------------* Dclaration d'une table du Data Dictionary
TABLES kna1.
*----------------------------------------------------------------------* DATAS
*----------------------------------------------------------------------* Dclaration d'une structure en faisant rfrence un type de l'ABAP
* Dictionary
DATA wa_kna1 TYPE kna1.
* Dclaration d'un type local
TYPES ds_kna1 TYPE kna1.
* Mme dclaration de structure mais en faisant rfrence un type
* local
DATA wa_kna1_2 TYPE ds_kna1.
"Non utilis
* Dclaration d'une variable
DATA v_counter(4) TYPE i.

"Non utilis

*----------------------------------------------------------------------* ECRAN DE SELECTION


*----------------------------------------------------------------------* La dclaration d'un parameters (qui est un type de variable) induit la

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 86

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

* cration d'un cran de slection


PARAMETERS p_kunnr TYPE kna1-kunnr.
*----------------------------------------------------------------------* DEBUT DE PROGRAMME
*----------------------------------------------------------------------START-OF-SELECTION.
* Slection d'un client dans KNA1 en fonction du code client saisi
SELECT SINGLE *
FROM kna1
WHERE kunnr = p_kunnr.
* Le test du code retour permet de connatre le rsultat de la slection
* (il est diffrent de 0 quand l'instruction a chou)
IF sy-subrc = 0.
* Assignation zone zone
MOVE-CORRESPONDING kna1 TO wa_kna1.
* Accs aux zones de la structure
WRITE: wa_kna1-kunnr COLOR COL_KEY,
wa_kna1-name1.
ENDIF.

12.1.2.

"Affichage du client

Exemple 2 : programme ZFORMATION2

*----------------------------------------------------------------------* ABAP l'usage des consultants fonctionnels - exemple 2


* INITIALISATION ET TRANSFERT
*
* Points abords :
* - dclaration de variables et constantes
* - initialisation et transfert
* - edition de liste
*----------------------------------------------------------------------REPORT zformation2 .
*----------------------------------------------------------------------* TABLES
*----------------------------------------------------------------------*----------------------------------------------------------------------* DATAS
*----------------------------------------------------------------------* Dclaration d'une variable en faisant rfrence un type de l'ABAP
* Dictionary
DATA v_land_1 TYPE land1.
* Dclaration et initialisation simultanes d'une variable
DATA v_land_2 TYPE land1 VALUE 'EN'.
* Dclaration d'un compteur (type entier)
DATA v_counter TYPE i.
* Dclaration d'une constante dont la valeur est FR
CONSTANTS c_land TYPE land1 VALUE 'FR'.
*-----------------------------------------------------------------------

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 87

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

* ECRAN DE SELECTION
*----------------------------------------------------------------------*----------------------------------------------------------------------* DEBUT DE PROGRAMME
*----------------------------------------------------------------------START-OF-SELECTION.
* Etat initial
SKIP.
WRITE: / 'Etat initial:',
/ 'v_land_1:', v_land_1,
/ 'v_land_2:', v_land_2,
/ 'v_counter:', v_counter.
* La variable v_land_1 est mise jour avec la constante c_land
MOVE c_land TO v_land_1.
SKIP.
WRITE: / 'Mise jour de v_land_1 avec la constante FR:',
/ 'v_land_1:', v_land_1,
/ 'v_land_2:', v_land_2,
/ 'v_counter:', v_counter.
* La variable v_land_2 est mise jour avec v_land1
v_land_2 = v_land_1.
SKIP.
WRITE: / 'Mise jour de v_land_2 avec v_land1:',
/ 'v_land_1:', v_land_1,
/ 'v_land_2:', v_land_2,
/ 'v_counter:', v_counter.
* Incrmentation du compteur v_counter
ADD 1 TO v_counter.
SKIP.
WRITE: / 'Incrmentation du compteur:',
/ 'v_land_1:', v_land_1,
/ 'v_land_2:', v_land_2,
/ 'v_counter:', v_counter.
* Initialisation 0 ou blanc des variables (dpend du type)
CLEAR: v_land_1,
v_land_2.
CLEAR v_counter.
SKIP.
WRITE: / 'Initialisation des variables:',
/ 'v_land_1:', v_land_1,
/ 'v_land_2:', v_land_2,
/ 'v_counter:', v_counter.

12.1.3.

Exemple 3 : Programme ZFORMATION3

*----------------------------------------------------------------------* ABAP l'usage des consultants fonctionnels - exemple 3

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 88

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

*
* Points abords :
* - accs aux zones d'une structure
* - slection par blocs
* - traitement en masse (loop de table)
* - conditions
* - accder aux zones d'une structure
* - gestion du code retour
* - edition de liste
* - principes de modularisation (perform -> form)
*----------------------------------------------------------------------REPORT zformation3.
*----------------------------------------------------------------------* TABLES
*----------------------------------------------------------------------TABLES kna1.
*----------------------------------------------------------------------* DATAS
*----------------------------------------------------------------------* Dclaration d'une table interne
DATA t_kna1 TYPE kna1 OCCURS 0.
* Dclaration d'une structure
DATA wa_kna1 TYPE kna1.
*----------------------------------------------------------------------* ECRAN DE SELECTION
*----------------------------------------------------------------------SELECT-OPTIONS s_kunnr FOR kna1-kunnr.
PARAMETERS : p_1 AS CHECKBOX,
"Slection des FR uniquement
p_2 AS CHECKBOX.
"Slection des 20 premiers

*----------------------------------------------------------------------* DEBUT DE PROGRAMME


*----------------------------------------------------------------------START-OF-SELECTION.
* Slection en blocs des enregistrements de kna1 en fonction du critre
* n de client
SELECT *
FROM kna1
INTO TABLE t_kna1
WHERE kunnr IN s_kunnr.
IF sy-subrc <> 0.
ENDIF.
* Type d'dition conditionn selon les cases cocher
IF p_1 = 'X'.
* Lecture pour affichage de tous les clients FR de la table
* Il s'agit d'une lecture en utilisant une cl
LOOP AT t_kna1 INTO wa_kna1 WHERE land1 = 'FR'.
WRITE: / wa_kna1-kunnr,
wa_kna1-name1,

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 89

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

wa_kna1-pstlz,
wa_kna1-ort01.
ENDLOOP.
ELSEIF p_2 = 'X'.
* Lecture pour affichage des 20 premiers clients de la table
* Il s'agit d'une lecture en utilisant l'index
LOOP AT t_kna1 INTO wa_kna1 FROM 1 TO 20.
WRITE: / wa_kna1-kunnr,
wa_kna1-name1,
wa_kna1-pstlz,
wa_kna1-ort01.
ENDLOOP.
ELSE.
* Lecture pour affichage de tous les clients de la table
LOOP AT t_kna1 INTO wa_kna1.
WRITE: / wa_kna1-kunnr,
wa_kna1-name1,
wa_kna1-pstlz,
wa_kna1-ort01.
ENDLOOP.
ENDIF.

12.1.4.

Exemple 4 : programme ZFORMATION4

*----------------------------------------------------------------------* ABAP l'usage des consultants fonctionnels - exemple 4


*
* Points abords :
* - accs aux zones d'une structure
* - slection par blocs
* - traitement en masse (loop de table)
* - conditions
* - accder aux zones d'une structure
* - gestion du code retour
* - sous-routines
* - edition de liste
*----------------------------------------------------------------------REPORT zformation4.
*----------------------------------------------------------------------* TABLES
*----------------------------------------------------------------------TABLES kna1.
*----------------------------------------------------------------------* DATAS
*----------------------------------------------------------------------* Dclaration d'une table interne
DATA t_kna1 TYPE kna1 OCCURS 0.
* Dclaration d'une structure
DATA wa_kna1 TYPE kna1.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 90

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

*----------------------------------------------------------------------* ECRAN DE SELECTION


*----------------------------------------------------------------------SELECT-OPTIONS s_kunnr FOR kna1-kunnr.
PARAMETERS : p_1 AS CHECKBOX,
"Slection des FR uniquement
p_2 AS CHECKBOX.
"Slection des 20 premiers

*----------------------------------------------------------------------* DEBUT DE PROGRAMME


*----------------------------------------------------------------------START-OF-SELECTION.
* Slection en blocs des enregistrements de kna1 en fonction du critre
* n de client
SELECT *
FROM kna1
INTO TABLE t_kna1
WHERE kunnr IN s_kunnr.
* Type d'dition conditionn selon les cases cocher
IF p_1 = 'X'.
* Lecture pour affichage de tous les clients FR de la table
* Il s'agit d'une lecture en utilisant une cl
LOOP AT t_kna1 INTO wa_kna1 WHERE land1 = 'FR'.
PERFORM f_write USING wa_kna1.
ENDLOOP.
ELSEIF p_2 = 'X'.
* Lecture pour affichage des 20 premiers clients de la table
* Il s'agit d'une lecture en utilisant l'index
LOOP AT t_kna1 INTO wa_kna1 FROM 1 TO 20.
PERFORM f_write USING wa_kna1.
ENDLOOP.
ELSE.
* Lecture pour affichage de tous les clients de la table
LOOP AT t_kna1 INTO wa_kna1.
PERFORM f_write USING wa_kna1.
ENDLOOP.
ENDIF.
*&---------------------------------------------------------------------*
*&
Form f_write
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_WA_KNA1 text
*----------------------------------------------------------------------*
FORM f_write USING p_wa_kna1 TYPE kna1.
* Accs aux zones de la structure
WRITE: / p_wa_kna1-kunnr,
p_wa_kna1-name1,
p_wa_kna1-pstlz,

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 91

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

p_wa_kna1-ort01.
ENDFORM.

12.1.5.

" f_write

Exemple 5 : programme ZFORMATION5

*----------------------------------------------------------------------* ABAP l'usage des consultants fonctionnels - exemple 5


*
* Points abords:
* - Conditions
* - Prsentation des diffrents types de message
* - Evnement INITIALIZATION
*----------------------------------------------------------------------REPORT zformation5.
*----------------------------------------------------------------------* TABLES
*----------------------------------------------------------------------*----------------------------------------------------------------------* DATAS
*----------------------------------------------------------------------*----------------------------------------------------------------------* ECRAN DE SELECTION
*----------------------------------------------------------------------* Ecran de slection avec radiobutton
PARAMETERS : p_1 RADIOBUTTON GROUP 1,
"Message de type Abend
p_2 RADIOBUTTON GROUP 1,
"Message de type Error
p_3 RADIOBUTTON GROUP 1,
"Message de type Info
p_4 RADIOBUTTON GROUP 1,
"Message de type Status
p_5 RADIOBUTTON GROUP 1,
"Message de type Warning
p_6 RADIOBUTTON GROUP 1.
"Message de type Exit
*----------------------------------------------------------------------* INITIALIZATION
*----------------------------------------------------------------------INITIALIZATION.
* Par dfaut, c'est le 1er radiobutton qui est coch. L'vnement
* INITIALIZATION permet d'initialiser le programme avec le 4me radio* button coch. (Pour vous en convaincre, commentez la ligne suivante,
* activez et relancer le programme).
p_4 = 'X'.
*----------------------------------------------------------------------* DEBUT DE PROGRAMME
*----------------------------------------------------------------------START-OF-SELECTION.
* Excution d'un type de message selon le radiobutton choisi
IF p_1 = 'X'.
* Message de type Abend -> message avec sortie du programme
MESSAGE a845(zfm) WITH 'Test message type Abend'.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 92

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

ELSEIF p_2 = 'X'.


* Message de type Error -> message d'erreur bloquant
MESSAGE e845(zfm) WITH 'Test message type Error'.
ELSEIF p_3 = 'X'.
* Message de type Info -> message d'information
MESSAGE i845(zfm) WITH 'Test message type Info'.
ELSEIF p_4 = 'X'.
* Message de type Status -> message d'information
MESSAGE s845(zfm) WITH 'Test message type Status'.
ELSEIF p_5 = 'X'.
* Message de type Warning -> message valider pour continuer
MESSAGE w845(zfm) WITH 'Test message type Warning'.
ELSEIF p_6 = 'X'.
* Message de type Exit -> sortie du programme avec short dump
MESSAGE x845(zfm) WITH 'Test message type Exit'.
ENDIF.

12.1.6.

Exemple 6 : programme ZFORMATION6

*----------------------------------------------------------------------* ABAP l'usage des consultants fonctionnels - exemple 5


*
* Points abords:
* - types locaux et dclaration d'objets de donnes
* - Variables systmes
* - Select...endselect
* - Select single
* - Accs aux zones d'une structure
* - Traitement sur un enregistrement (append, modify et delete)
* - Conditions
* - Utilisation du code retour
* - Utilisation de zones systme
* - Edition de liste
*----------------------------------------------------------------------REPORT zformation6.
*----------------------------------------------------------------------* TABLES
*----------------------------------------------------------------------TABLES: kna1,
knb1.
*----------------------------------------------------------------------* TYPES
*----------------------------------------------------------------------* Dclaration d'un type local spcifique
TYPES : BEGIN OF client,
bukrs TYPE bukrs,
kunnr TYPE kunnr,
name1 TYPE name1,
land1 TYPE land1,
END OF client.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 93

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

*----------------------------------------------------------------------* DATAS
*----------------------------------------------------------------------* STRUCTURES
* Dclaration d'une structure en utilisant le type local client
DATA : wa_client TYPE client.
* TABLE INTERNE
* Dclaration d'une table interne en utilisant le type local client
DATA : t_client TYPE client OCCURS 0.
*----------------------------------------------------------------------* ECRAN DE SELECTION
*----------------------------------------------------------------------SELECT-OPTIONS s_bukrs FOR knb1-bukrs.
SELECT-OPTIONS s_kunnr FOR kna1-kunnr.
SELECT-OPTIONS s_land1 FOR kna1-land1.
*----------------------------------------------------------------------* INITIALIZATION
*----------------------------------------------------------------------INITIALIZATION.
*----------------------------------------------------------------------* DEBUT DE PROGRAMME
*----------------------------------------------------------------------START-OF-SELECTION.
* Slection ligne par ligne des clients dans la table knb1
SELECT bukrs kunnr
INTO (wa_client-bukrs, wa_client-kunnr)
FROM knb1 UP TO 30 ROWS "limitation aux 50 1ers clients
WHERE bukrs IN s_bukrs
AND kunnr IN s_kunnr.
* Pour chaque ligne slectionne, ajout du contenu de la structure
* wa_client dans la table interne t_client
APPEND wa_client TO t_client.
ENDSELECT.
* Loop de la table interne t_client -> chaque itration, le contenu de
* la ligne lue est plac dans la structure wa_client
LOOP AT t_client INTO wa_client.
* Lecture d'un enregistrement unique -> la cl complte doit tre
* prcise
SELECT SINGLE land1 name1
FROM kna1
INTO (wa_client-land1, wa_client-name1)
WHERE kunnr = wa_client-kunnr
AND land1 IN s_land1.
* Test du code retour : si diffrent de 0, l'enregistrement n'existe pas
IF sy-subrc = 0.
* Traitement sur une enregistrement : mise jour des zones land1 et
* name1 pour le client lu
MODIFY t_client FROM wa_client.

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 94

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

ELSE.
* Traitement sur un enregistrement : suppression du client lu de la
* table t_client
DELETE t_client.
ENDIF.
ENDLOOP.
* Affichage de la date et de l'heure systme
WRITE: / 'Date:', sy-datum,
/ 'Heure:', sy-uzeit.
* Saut de ligne
SKIP.
LOOP AT t_client INTO wa_client.
* Accs aux zones de la structure
WRITE: / wa_client-bukrs,
wa_client-kunnr,
wa_client-name1,
wa_client-land1.
ENDLOOP.

12.1.7.

Note OSS 94300

R/3 note no. 94300


24.10.2000
Page 1
________________________________________________________________________
Number
0094300
Version
0018 from 05.02.1999
Status
Released for customer
Set by
SAP AG on 05.02.1999
Language
Short text

EN
Comment crer un message dans OSS

Administrator
SAP AG
Component
XX-SER-GEN Service general
________________________________________________________________________
Long text
Symptom
Vous avez un problem avec R/3.
Additional key words
Cause and preconditions
Solution
Comment crer un message dans OSS
- Standards respecter pour la cration d'un message dans OSS
Cette note sera automatiquement attache tous vos messages. Le Service
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 95

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

d'aide la clientle de SAP Canada s'engage traiter vos messages


d'une manire rapide et efficace. Ce processus VOUS implique
directement. Afin de vous faciliter la tche lors de la cration d'un
message dans OSS, nous vous avons prpar une liste de directives
suivre.
Les dix tapes dcrites ci-dessous doivent tre respectes, et ce afin
d'assurer une rsolution rapide et efficace de vos messages. Il se peut
que certaines tapes ne s'appliquent pas votre cas.
1. Assurez-vous que les numros de tlphone et de fax sont corrects. Si
vous n'tes pas la personne responsable pour le message, veuillez
indiquer le nom ainsi que les numros de tlphone et de fax de la
personne contacter pour tout renseignement additionnel.
2. Veuillez assigner la priorit adquate:
- VERY HIGH : Doit tre utilise seulement dans les cas o le
systme de production est gravement affect (production down)
ou lorsque le systme est gravement affect lors de priode
critique d'implantation. Ceci ne s'applique que dans les cas o
le problme occasionne des pertes substantielles
l'entreprise.
- HIGH : Dans un environnement de production, doit tre utilise
si un ou plusieurs modules sont affects. Dans les
environnements de dveloppement ou de test, cette priorit
s'applique lorsque ces systmes sont gravement affects.
- MEDIUM : Doit tre utilise dans les cas o des consquences
mineures rsultent d'une dfaillance du systme. Le systme de
production n'est pas affect srieusement.
- LOW : Doit tre utilise pour des problmes de documentation ou
de conception.
3. Composante - Identifiez avec prcision le module affect (par
exemple, FI-AP-AP, BC-UPG-OCS). Lorsque vous requerrez de la
consultation distance (remote consulting), vous devez utiliser la
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 96

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

composante XX-RC-** (ou ** reprsente le module affect).


4. Dans le champs intitul "short text", vous devez dcrire le problme
de faon prcise, c'est--dire:
- les 5 caractres alphanumriques correspondant au message
d'erreur et en appuyant sur le bouton "technical information";
- tout autre message d'erreur pertinent reu l'cran ou sur un
log, par exemple, ORA-1990,SQL-90...
- numro de transaction en cause (PA40,VA01...) et/ou le nom du
programme (8 caractres alphanumriques)
- une brve description du problme
5. Il importe de fournir une description dtaille du problme, de faon
claire et prcise.
o Menu Path et
o Transaction et
o Nom du programme & le numro de l'cran et
o tapes dtailles permettant de reproduire l'erreur dans votre
systme, incluant les donnes utiliser (numro ou nom du
vendeur, matriel, numro d'employ, code de la socit, numro du
document, date, variantes...) et Message et numro d'erreur
o Mentionnez toute autre information que vous nous tlcopiez au
1-610-355-3106. Sur la page couverture, assurez-vous d'indiquer le nom
et numro de tlphone de la personne contact ainsi que le numro du
message. Cette information sera attache au message que vous aurez cr.
o Short Dump-> LES 6 OU 7 premires pages jusqu' et incluant la
partie intitule "Active Calls & Events".
o Log
o Impressions d'cran (screen prints)

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 97

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

6. Documentez votre recherche de notes dans OSS, en spcifiant les mots


cls utiliss ainsi que les rsultats obtenus et les notes dj
appliques.
7. Prcisez dans quel systme le problme peut tre reproduit
(dveloppement et/ou test et/ou production).
8. Prcisez l'information relative la connexion votre systme
(remote connection information).
o Nom du systme (dev,prd,tst...)
o Numro du client (3 chiffres)
o Nom du serveur
o Nom de l'usager (User ID)
o Nom et numro de tlphone de la personne contacter pour obtenir
le mot de passe et ouvrir la connexion. Cette personne sera
contacte lorsque SAP sera prt tablir la connexion avec le
systme.
9. Pour de plus amples renseignements sur OSS, veuillez-vous rfrer
la note 85463.
10.Pour toutes autres questions, veuillez communiquer avec le Service
d'aide la clientle de SAP Canada au 1-888-471-4727 ou
1-506-857-4727.
Source code corrections
________________________________________________________________________
Valid releases
Note is release independent
________________________________________________________________________
Reference to related notes
Number Short text
____________________________________________________________
0016018 More Information required on reported message
0067739 Priorities of problem messages
Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 98

ABAP pour consultants fonctionnels


Cr par Marc Le Faucheur

Modifi par

Valid par

Version 1

________________________________________________________________________
0o0

Fichier
260038387.doc

Modifi le 10/02/15

Imprim le 15/07/03

Page 99

Vous aimerez peut-être aussi