Vous êtes sur la page 1sur 129

Programmation

ABAP IV : reports
Reporting ABAP IV
Objectifs

 Vous serez capable :


– de créer des listes simples d ’édition de
données
– de créer des listes complexes : reports
interactifs
– de créer des programmes d ’extractions de
données
Reporting ABAP IV
Sommaire
 Chapitre 1 : Généralités ABAP IV : syntaxe, gestion
événementielle, structure de programme, éditeur ABAP
 Chapitre 2 : Déclarations des Données
 Chapitre 3 : Instructions de base ABAP
 Chapitre 4 : Traitement des tables SAP : l ’instruction SELECT
 Chapitre 5 : Programmation structurée : modularité, form,
module fonction, routine
 Chapitre 6 : Gestion des tables internes
 Chapitre 7 : Gestion des fichiers
 Chapitre 8 : Concepts de programmation avancée
Chapitre 1

Reporting ABAP IV

Généralités ABAP IV
Généralités ABAP IV
Syntaxe
Le langage de programmation ABAP IV
est constitué des éléments de syntaxe
suivants

 Phrases
 Mot-clés
 Commentaires
Syntaxe : Phrases
 Chaque phrase commence par un mot-clé et se
termine par une ponctuation.
 Les différents mots de la phrase doivent être
séparés par un espace.

REPORT ZZZFOR01.
DATA: VAR01, VAR02.
WRITE ‘Exemple’.
Syntaxe : Mot-clés
Un mot-clé détermine la signification de la phrase
entière.
Il existe 4 types de mot-clés :

 déclaratifs: DATA, TABLES ...


 opérationnels: MOVE, WRITE …
 de contrôle: IF, WHILE, CASE ...
 événementiels: GET, AT USER-COMMAND ...
Syntaxe : Commentaires
 Ligne entière: astérisque en début de ligne
 Partie restante d’une ligne: guillemet devant le
commentaire

REPORT ZZZFOR01.

* Commentaire général
WRITE 'Premier programme '. " commentaire de ligne
Généralités ABAP IV
Gestion événementielle
 L’exécution d’un programme ABAP IV peut être
contrôlée par des événements temporels.
 Ces événements sont déclenchés soit par d’autres
programmes, soit par l’intervention de
l’utilisateur, soit par le système SAP.
 La gestion de ces événements se fait grâce aux mot-
clés événementiels, auxquels on peut associer un
bloc de traitement.
 Attention: un programme ABAP IV ne s’exécute
pas nécessairement dans l’ordre où il est écrit
Généralités ABAP IV
Gestion événementielle
Programme ABAP IV

Mot-clé
Mot-cléévénementiel
événementiel Contrôle externe

Bloc
Blocde
detraitement
traitement
Contrôle
Contrôleinterne
interne

Mot-clé
Mot-cléévénementiel
événementiel Contrôle externe

Bloc
Blocde
detraitement
traitement
Contrôle
Contrôleinterne
interne
Généralités ABAP IV : AIDE
 Une aide sur le langage ABAP est disponible à tout
moment :
– dans l ’éditeur par la commande Help <mot-clé>
– dans le programme : se positionner sur un mot-clé et
faire F1
– dans l’aide on-line
– dans la documentation des mots-clés

 Pas de panique !! : l’aide ABAP est très complète et


donne l ’exhaustivité des options des mots-clés.
Généralités ABAP IV : Structure
d’un Report ABAP IV
 Un programme ABAP de type report est
composé au minimum de 4 parties :
– Identification de l ’ABAP

– Déclaration des données

– Lecture et sélection des données

– Traitement des données: éditions, mises à jour….


Identification de l ’ABAP
 Le nom d ’un ABAP spécifique commence toujours par Z
ou par Y et codé sur 40 caractères
 Mot-Clé : REPORT <nom programme>
 Options : LINE-SIZE, LINE-COUNT NO STANDARD
PAGE HEADING….: définir la mise en page de l ’édition
(taille colonnes, nombre de lignes)
 ex : REPORT ZFREFIC00 LINE-SIZE 255.
Editeur ABAP

 Pour créer un ABAP : il faut indiquer :


– le nom de l ’abap
– le libellé de l ’abap
– le type de programme
– le statut de programme
– la classe de développement
– éventuellement
• l ’application fonctionnelle associée
• la base de données logique
• le groupe d ’autorisation
Commandes de l ’éditeur ABAP

 3 présentations du mode éditeur (‘ Options :


Editeur ’)
– mode PC avec numérotation des lignes
– mode PC sans numérotation des lignes
– mode Editeur on-line
 2 niveaux de commandes :
– sur la ligne de commande : commandes globales
– sur les numérotations de ligne : commandes au
niveau ligne
Commandes de l ’éditeur Abap
 Commandes
 fonctions d ’édition
 sauvegarder
 contrôler
 générer
 exécuter
Chapitre 2

Reporting ABAP IV

Déclarations de données
Déclaration de données
 Données à déclarer dans le programme
– DATA : déclaration des données internes au
programme. C ’est l ’ensemble de toutes les
variables, structures de travail … valable pour un
programme Abap.

– TABLES : déclaration des données externes au


programme. C ’est l ’ensemble des tables, vues et
structures qui sont déclarées dans le dictionnaire
de données SAP .
Déclaration de données

 Données disponibles à tout moment dans le


programme sans besoin de déclaration :
– Les éléments de texte du programme ABAP
– Données systèmes: la structure SY (ou SYST) :
l ’ensemble des données système SAP disponibles au
moment de l’exécution du programme.
– Les messages d’erreur et d ’information standard
SAP
Déclaration de données :
Données internes

 DATA ZONE1(10) TYPE C VALUE ‘TEST’.


Type Lg déf. Val.init. Cadrage
C:caractère 1 Space gauche
D:date (YYYYMMDD) 8 ‘00000000’ gauche
I: nombre entier 4 0 droit
N:texte numérique 1 ‘0..00’ droit
P: nombre packé 8 0 droit
F: nombre virgule flottante 8 0 droit
T: heure (HHMMSS) 6 0 gauche
X: hexadécimal 1 X’00’ gauche
Déclaration de données :
Données internes
 DATA CLIENT LIKE KNA1-KUNNR.
permet de définir une variable ayant les mêmes
caractéristiques techniques (longueur, type)
que le champ KUNNR de la table base de
donnée KNA1.

 DATA NUMBER TYPE P DECIMALS 2.


définit le nombre de chiffres après la virgule
pour un champ de type P uniquement.
Déclaration de données :
Données internes

 Structure:
DATA: BEGIN OF CLIENT,
NOM(20) TYPE C,
RUE(20) TYPE C,
NUMERO TYPE P,
CP(5) TYPE N,
VILLE(20) TYPE C,
END OF CLIENT.

Une structure est un groupe de champs. Chacun des champs peut


être adressé par son nom préfixé du nom de la structure
(CLIENT-NOM).
Déclaration de données :
Données externes

 Les données externes existent indépendamment du


programme.

 Elles doivent être définies sous forme de table ou


structure dans le dictionnaire de données SAP.

 Pour se référencer à ces données dans un programme:


mot-clé TABLES.

TABLES: KNA1, MARA.


Déclaration de données : Eléments de texte
 Chaque ABAP a ses propres textes :

– textes d ’entête de liste et colonnes


– textes des paramètres de sélection
– textes numérotés : tout libellé, chaîne de caractère
doit être déclaré dans les textes numérotés de
l ’abap et ensuite on peut les utiliser tels quels dans
l ’abap. TEXT-<nnn>.
• Ex : WRITE TEXT-100.
Déclaration de données : Données système
Ces données sont utilisables dans chaque ABAP
IV sans avoir besoin de les déclarer.
 SPACE: constante de type C, longueur 1, initialisée à
blanc.
 Les données système: préfixées par SY.
SY-SUBRC code retour (zéro, si un ordre a été réalisé avec
succès)
SY-UNAME nom de l’utilisateur
SY-DATUM date courante
SY-UZEIT heure courante

Déclaration des données :
Points à retenir

 TABLES : déclaration des tables et structures du


dictionnaire de données SAP

 DATA : déclaration des données propres au


programme : variables de travail, structures de travail

 la structure SYST : ensemble des données système SAP

 les textes numérotés d ’un ABAP


Chapître 3

Reporting ABAP IV

Instructions de base
Instructions de base ABAP IV
 Edition de données
 Affectation de zones
 Opérations sur des chaînes de caractères
 Opérations arithmétiques
 Traitements conditionnels
 Traitements de boucles
Instructions de Base
Edition de données

 WRITE <nom_zone>.
Affiche le contenu du champ <nom_zone> à
l’écran. Le format d’édition dépend du type du
champ.
type lg édition Justification
C lg champ gauche
D 8 gauche
I 11 droit
N lg champ gauche
P 2 * lg champ(+1) droit
Instructions de Base
Edition des données
 WRITE AT /<pos>(<lg>) <nom_zone>.
édite le champ <nom_zone> sur une nouvelle ligne (/)
en position <pos> sur une longueur <lg>.
Si les spécification de position et de longueur ne sont
pas des variables, on peut omettre le mot-clé AT.

WRITE AT /10(15) CLIENT-NOM. Ou


WRITE /10(15) CLIENT-NOM
La zone CLIENT-NOM sera éditée sur 15 caractères à
partir de la 10ème colonne.
Instructions de Base
Edition des données
 Options de mise en forme :
WRITE <nom_zone> <options>.

LEFT-JUSTIFIED Cadrage à gauche.


CENTERED Centrage.
RIGHT-JUSTIFIED Cadrage à droite.
UNDER <g> Alignement sur le champ <g> d'une ligne
précédente.
NO-GAP Suppression des colonnes de séparations.
NO-ZERO Suppression des zéros initiaux (type N,P).
DECIMALS <d> <d> décimales après la virgule.
USING EDIT MASK <m> utilisation d ’un masque d ’édition spécifique
...
Instructions de Base
Edition des données
 Options de couleur : WRITE <nom_zone>
COLOR <n>.

1 ou COL_HEADING bleu gris


2 ou COL_NORMAL gris clair
3 ou COL_TOTAL jaune
4 ou COL_KEY bleu vert
5 ou COL_POSITIVE vert
6 ou COL_NEGATIVE rouge
7 ou COL_GROUP violet
Instructions de base
Affectation de zones
 Réinitialisation d’une zone : CLEAR <f1>.
La zone est réinitialisée selon son type.

 Affectation de zones: MOVE <f1> TO <f2>.


Si <f1> et <f2> sont de types différents, le contenu
de <f1> est converti selon le type de <f2>.

Autre forme: <f2> = <f1>.


Instructions de base
Affectation de zones
 MOVE: Exemples de conversion;

DATA: ZONE1(4) TYPE C VALUE ‘1234’,


ZONE2(2) TYPE C,
ZONE3(6) TYPE N,
ZONE4(5) TYPE P VALUE ‘123456789’.

MOVE ZONE1 TO ZONE2. ZONE2 = 12


MOVE ZONE1 TO ZONE3. ZONE3 = 001234
MOVE ZONE4 TO ZONE3. ZONEB = 456789
Instructions de base
Affectation de zones
 Affectation de zones:
WRITE <f1> TO <f2>.
La zone réceptrice <F2> doit TOUJOURS être de type caractère. Le
WRITE TO permet d ’effectuer automatiquement les opérations de
conversion du format interne (de stockage) des données au format externe
(d ’affichage) des données

Ex : DATA : W_DATE LIKE SY-DATUM VALUE ‘ 19990726 ’,


W_CHAINE(10) TYPE C
WRITE W_DATE TO W_CHAINE.
W_CHAINE va contenir la valeur ‘ 26.07.1999 ’
MOVE W_DATE to W_CHAINE.
W_CHAINE va contenir la valeur ‘ 19990726 ’
Instructions de base
Affectation de zones
 MOVE-CORRESPONDING <st1> TO
<st2>.
Pour chaque champ ayant le même nom
dans chacune des deux structures <st1> et
<st2>, le système effectue l’opération:

MOVE st1-<champ> TO st2-<champ>.


Instructions de base
Affectation de zones

 MOVE-CORRESPONDING : exemple
DATA: BEGIN OF STRUC1, DATA: BEGIN OF STRUC2,
ZONEA, ZONEB(3) TYPE N,
ZONEB(3) TYPE N, ZONEC(8) TYPE C,
ZONEC(8) TYPE C, ZONED(5) TYPE P,
END OF STRUC1. END OF STRUC2.

MOVE-CORRESPONDING STRUC1 TO STRUC2.


équivaut à:
MOVE STRUC1-ZONEB TO STRUC2-ZONEB.
MOVE STRUC1-ZONEC TO STRUC2-ZONEC.
Instructions de base
Affectation de zones
 MOVE <f1>+<os1>(<lg1>) TO <f2>+<os2>(<lg2>)
Affectation de zones avec spécification d’offset et de
longueur sous forme de variable ou de constantes.

DATA: ZONE1(4) TYPE C VALUE ‘1234’,


ZONE2(4) TYPE C VALUE ‘ABCD’.

MOVE ZONE1+2(2) TO ZONE2(2) ZONE2 = ‘ 34CD ’

A n’utiliser qu’avec des zones de type C


Instructions de base
Opération sur des chaînes de caractères

 CONCATENATE <f1> <f2>… into <z> :


concaténation de chaînes de caractères

 SPLIT <z> AT <c> INTO <f1> <f2> :


«éclatement » d ’une chaîne de caractères

DATA : W_CHAINE(30) TYPE C VALUE ‘ 01,02,03 ’.


SPLIT W_CHAINE AT ‘ , ’ INTO ZONE1 ZONE 2
ZONE3.
Instructions de base
Opération sur des chaînes de caractères
 TRANSLATE <f1> option : transformation d ’une
chaîne de caractères.

DATA : W_CHAINE(30) TYPE C VALUE ‘ Dupont ’.


TRANSLATE W_CHAINE TO UPPER CASE.
W_CHAINE sera mis en majuscules ‘ DUPONT ’

DATA : W_CH1(4) TYPE C VALUE ‘ 12154 ’,


W_CH2(4) TYPE C VALUE ‘ 1A2B3Z5P ’.
TRANSLATE W_CH1 USING W_CH2.
Tous les caractères de W_CH1 vont être remplacés en fonction du
contenu de W_CH2.
QUE VA CONTENIR W_CH1 ?
Instructions de base :
Opérations Arithmétiques

Addition :
ADD <f1> to <f2>.
Équivalent à <f2> = <f2> + <f1>.
<f3> = <f2> + <f1>.

ADD-CORRESPONDING struc1 to struc2.


Toutes les zones ayant le même nom des structures
struc1 et struc2 seront additionnées entre elles.
Instructions de base :
Opérations Arithmétiques
Soustraction :
SUBTRACT <f1> FROM <f2>.
Équivalent à <f2> = <f2> - <f1>.
Autre forme : <f3> = <f2> - <f1>.

SUBTRACT-CORRESPONDING struc1 FROM


struc2.
Toutes les zones ayant le même nom des structures
struc1 et struc2 seront soustraites entre elles.
Instructions de base :
Opérations Arithmétiques

Multiplication :
MULTIPLY <f1> BY <f2>.
Équivalent à <f1> = <f1> * <f2>.

MULTIPLY-CORRESPONDING struc1 BY struc2.


Toutes les zones ayant le même nom des structures
struc1 et struc2 seront multipliés entre elles et le
résultat sera stocké dans la structure struc1.
Instructions de base :
Opérations Arithmétiques

Division:
DIVIDE <f1> BY <f2>.
Équivalent à <f1> = <f1> / <f2>.

DIVIDE-CORRESPONDING struc1 BY struc2.


Toutes les zones ayant le même nom des structures
struc1 et struc2 seront divisées entre elles et le
résultat sera stocké dans la structure struc1.
Instruction de base :
Traitement Conditionnel
 Branchement selon une condition logique :
IF condition1.
traitement.
ELSEIF condition2.
traitement.
ELSE.
traitement.
ENDIF.
Instruction de base :
Traitement Conditionnel
 Opérateurs logiques
tous types de champs: champs de type C ou N:

EQ equal to CO Contains Only


NE not equal to CN Contains Not only
LT less than CA Contains Any
LE less than or equal to NA contains Not Any
GT greater than CS Contains String
GE greater than or equal to NS contains No String
CP Contains Pattern
NP contains No Pattern
Instruction de base :
Traitement Conditionnel
 Branchement conditionnel selon une valeur de
zone :
CASE <f>.
WHEN <f1>.
<statement block>
WHEN <f2>.
<statement block>
WHEN OTHERS.
<statement block>
ENDCASE.
Instruction de base :
Traitement de boucle
 Boucle  Boucle conditionnelle:
Boucle Boucle conditionnelle:
inconditionnelle:
inconditionnelle:
DO WHILE
WHILEcondition.
condition.
DO<n><n>TIMES.
TIMES.
traitement.
traitement.
CHECK
CHECKcondition.
condition.
ENDWHILE.
ENDWHILE.
IF
IFcondition.
condition.
EXIT.
EXIT.
ENDIF.
ENDIF.
traitement.
traitement.
ENDDO.
ENDDO.
Instruction des base :
Traitement de boucle
 EXIT : sortie de la boucle
 CONTINUE : passage à l ’occurrence suivante
DO 4 TIMES. WHILE I > 400.
… …
IF zone GT 100. IF SY-SUBRC NE 0.
CONTINUE. EXIT.
ENDIF. ENDIF.
… …
ENDDO. ENDWHILE.

 Comment vont réagir les boucles dans chacun de


ces 2 cas ?
Instructions de Base :
Points à retenir
 WRITE : édition de données
 MOVE : affectation de données
 CONCATENATE, SPLIT, TRANSLATE… : opérations sur
chaîne de caractère
 ADD, SUBTRACT, MULTIPLY, DIVIDE : calculs
 IF..ENDIF, CASE…ENDCASE : instructions conditionnelles
 DO..ENDDO, WHILE…ENDWHILE : instructions de
boucle
 Dans l ’aide on-line ABAP, vous trouverez toutes les options
de ces instructions et d ’autres instructions encore
Chapitre 4

Reporting ABAP IV

Traitement des tables SAP : l ’instruction


SELECT
Traitement des tables SAP :
Open SQL
 Afin de rendre ABAP IV indépendant du système de
base de données relationnelle utilisé, SAP a créé un
ensemble d’ordres SQL appelé OPEN SQL.

 Une interface Base de Donnée traduit les ordres Open


SQL en ordre SQL spécifiques au système de Base de
Donnée utilisé (Native SQL).

 Il est aussi possible de coder directement des ordres


Native SQL dans un programme ABAP IV.
Sélection des données
Lecture séquentielle
 Sélectionner toutes les données de plusieurs lignes d’une table :
SELECT * FROM dbtab
WHERE champ1 = valeur1
AND champ2 = valeur2 .
WRITE: dbtab-champ1, dbtab-champ2.
ENDSELECT.

SY-SUBRC = 0 au moins une ligne sélectionnée


4 aucune ligne sélectionnées
Sélection des données
Lecture directe
 Sélectionner toutes les données d’une seule ligne de table
SELECT SINGLE * FROM dbtab
WHERE CLE1 = valeur1
AND CLE2 = valeur2.
Tous les champs clés primaires de la table doivent être
spécifiés
SY-SUBRC = 0 la ligne spécifiée a été trouvée
4 la ligne spécifiée n’a pas été trouvée
SELECT : fonctions d ’agrégat

 Des fonctions d ’agrégat sont disponibles lors


du SELECT :
– COUNT( * ) : nombre d ’entrées sélectionnées
– MAX (champ) : la valeur maximale lue pour un
champ
– MIN (champ) : la valeur minimale lue pour un
champ
– AVG (champ) : la valeur moyenne
– SUM (champ) : la somme des valeurs d ’un champ
SELECT : fonctions d ’agrégat
 Exemple :
– SELECT COUNT(*) MAX(LIFNR)
INTO (NB_FOU , W_MAX)
FROM LFA1.

WRITE : NB_FOU, W_MAX .

 Que contiennent les zones NB_FOU et W_MAX


?
SELECT : jointures de table
 SELECT aliasdbtab1~zone1 aliasdbtab2~zone2
INTO (dbtab1-zone1 , dbtab2- zone2)
FROM dbtab1 AS aliasdbtab1
INNER JOIN dbtab2 AS aliasdbtab2
ON aliasdbtab1~clé1 = aliasdbtab2~clé1
WHERE ...
WRITE : / dbtab1-zone1, dbtab2-zone2.
ENDSELECT.

 SAP va sélectionner tous les enregistrements de dbtab1


et dbtab2 qui ont les mêmes valeurs de clé pour clé1
SELECT : jointures de table
 Exemple :
SELECT F1~KUNNR F1~NAME1 F2~VBELN
INTO (KNA1-KUNNR,KNA1-NAME1,VBAK-
VBELN)
FROM KNA1 AS F1 JOIN VBAK AS F2
ON F1~KUNNR = F2~KUNNR.
WRITE : / KNA1-KUNNR, 13 KNA1-NAME1, 50 VBAK-
VBELN.
ENDSELECT.
SELECT : jointures de tables
KNA1 : clients VBAK : commandes clients
KUNNR NAME1 VBELN
N° KUNNR
n° client Nom client
1233 Client 1 JOIN Commande N° client
C00000001 1233
1455 Client 2 C00000002 1455
2300 Client3 C00000003 1455
C00000004 1233
C00000005 1656
C00000006 3455

Résultat de la jointure
KUNNR NAM E1 VBELN
1233 Client 1 C00000001
1233 Client 1 C00000004
1455 Client 2 C00000002
1455 Client 2 C00000003

On remarque qu ’aucune jointure n ’a été faite pour le client n° 2300


SELECT : jointures de tables
 On peut joindre 2 tables même s ’il n ’existe pas toutes
les occurrences dans la 2è table : il faut utiliser alors
utiliser l ’option LEFT OUTER JOIN.
 Syntaxe :
SELECT aliasdbtab1~zone1 aliasdbtab2~zone2
INTO (dbtab1-zone1 , dbtab2- zone2)
FROM dbtab1 AS aliasdbtab1
LEFT OUTER JOIN dbtab2 AS aliasdbtab2
ON aliasdbtab1~clé1 = aliasdbtab2~clé1
WHERE ...
WRITE : / dbtab1-zone1, dbtab2-zone2.
ENDSELECT
SELECT : jointures de table
 Exemple :
SELECT F1~KUNNR F1~NAME1 F2~VBELN
INTO (KNA1-KUNNR,KNA1-NAME1,VBAK-
VBELN)
FROM KNA1 AS F1
LEFT OUTER JOIN VBAK AS F2
ON F1~KUNNR = F2~KUNNR.
WRITE : / KNA1-KUNNR, 13 KNA1-NAME1, 50 VBAK-
VBELN.
ENDSELECT.
SELECT : jointures de tables
KNA1 : clients VBAK : commandes clients
LEFT VBELN
KUNNR NAM E1
OUTER N° KUNNR
n° client Nom client
1233 Client 1 JOIN Commande N° client
C00000001 1233
1455 Client 2 C00000002 1455
2300 Client3 C00000003 1455
C00000004 1233
C00000005 1656
C00000006 3455

Résultat de la jointure
1233 Client 1 C00000001
1233 Client 1 C00000004
1455 Client 2 C00000002
1455 Client 2 C00000003
2300 Client 3 <i nit ial>

On remarque qu ’une jointure a été faite pour le client n° 2300 ,


mais le n° commande n ’est renseigné
SELECT : option HAVING
 On peut ajouter des conditions supplémentaires
de sélection dans un SELECT qui optimise
considérablement les traitements.
 Syntaxe :
SELECT zone1 FROM dbtab
WHERE ….
HAVING <condition>.
ENDSELECT.
SELECT : option HAVING
 Exemple :
SELECT LAND1 MAX( NAME1 )
INTO (LFA1-LAND1 , LFA1-NAME1)
FROM LFA1
GROUP BY LAND1
HAVING MAX( NAME1 ) GE 'S'.
WRITE :/ LFA1-LAND1, LFA1-NAME1.
ENDSELECT.

 Qu ’édite cette instruction ?


SQL : gestion des tables SAP
 Il existe des instructions de mise à jour des tables SAP:
– INSERT dbtab : création d ’un enregistrement
– UPDATE dbtab : modification d ’un enregistrement
– DELETE dbtab : suppression d ’un enregistrement
 EN AUCUN CAS CES INSTRUCTIONS NE
DOIVENT ETRE UTILISES SUR LES TABLES
STANDARD SAP : seulement sur les tables spécifiques
que vous devez créer pour vos programmes
Sélection des données
Critères de sélection
 SELECT-OPTIONS <seltab> FOR <dbtab-field1>.
définit un critère de sélection pour le champ dbtab-
field1

SELECT * FROM dbtab


WHERE <field1> IN <seltab>.
 En déclarant un Select-options : un écran de sélection
sera automatiquement généré par SAP.
 Les SELECT-OPTIONS permettent de gérer une ou
plusieurs fourchettes de valeurs
Sélection des données
Paramètres
 L’instruction PARAMETERS permet de
définir une variable en saisie sur l’écran de
sélection qui n’a aucun lien avec un champ de
table base de donnée.
PARAMETERS P_DATE TYPE D
DEFAULT SY-DATUM.
Ou
PARAMETERS P_DATE LIKE SY-DATUM
SAP - SQL : Points à retenir
 SELECT : lecture des tables SAP (standard ou
spécifiques).
 MAX, MIN, AVG, SUM… : fonctions
d ’agrégat
 JOIN : fonctions de jointure de table
 INSERT, UPDATE, DELETE : instructions à
utiliser seulement sur les tables spécifiques
 SELECT-OPTIONS, PARAMETERS : critères
de sélection qui génèrent un écran de sélection
Reporting ABAP IV

Chapitre 5
Modularité
Reporting ABAP IV
Modularité
 Eviter les blocs de traitement redondants
 Accroître la lisibilité d’un programme et donc
faciliter sa maintenance et son évolution
SAP propose les techniques de modularisation
suivantes:
– Les programmes includes
– les sous-routines
– les modules fonctions
Modularité
Programme Include
 Contient un bloc de code pouvant être utilisé
dans plusieurs programmes (Ex: déclaration de
données)
 Permet de regrouper des traitements par blocs
fonctionnels ou techniques
 Création: type de programme I dans les
attributs.
 Utilisation dans un autre programme :
INCLUDE <include>.
Modularité
Les sous-routines
 Une sous-routine est un bloc de traitement que
l’on peut appeler plusieurs fois dans un
programme.
 Usage sans paramètres:
PERFORM <sousroutine>. Appel de la routine
FORM <sousroutine> . Définition de la routine
Bloc de traitement.
ENDFORM.
Modularité
Les sous-routines
 passage de paramètres par référence.
PERFORM <sousroutine> TABLES <tab1> <tab2>
USING <p1> <p2> <p3>
CHANGING <p4> <p5>.

FORM <sousroutine> TABLES <ftab1> <ftab2>


USING <fp1> <fp2> <fp3>
CHANGING <fp4> <fp5>.
Bloc de traitement.
ENDFORM.
Modularité
Les sous-routines
 Passage de paramètres par valeur:
FORM <sousroutine> USING VALUE(<fp1>)
CHANGING VALUE (<fp2>). Bloc de traitement.
ENDFORM.
– Les paramètres formels sont créés comme copies des
paramètres actuels .
– USING: Une modification du paramètre formel n’a
pas d’effet sur le paramètre actuel.
– CHANGING: Une modification du paramètre formel
entraîne la modification du paramètre actuel.
Modularité
Les sous-routines
 Il est possible d’appeler une sous-routine
définie dans un programme extérieur:
PERFORM <sousroutine>(<programme>)
TABLES ...
USING ....
CHANGING ...
Les sous-routines peuvent alors être définies
dans un programme non exécutable de type S
(Pool de sous-routines).
Modularité
Module de Fonction
 Les modules de fonction sont des sous-routines
spéciales stockées dans une bibliothèque centrale.
 SAP fournit de nombreux modules de fonction
standard , mais l’on peut en créer de nouveaux.
 La définition des paramètres d’import/export ainsi
que le gestion des erreurs est standardisée.
 Il est possible de tester indépendamment un
module de fonction. (bouton Test Ind)
Module de Fonction
Création
 La gestion des modules de fonction se fait par
la transaction SE37.
 Les étapes de la création sont les suivantes:
– Création d’un groupe de fonction
– Définition des attributs du module de fonction
– Définition des paramètres Import/Export
– Définition des paramètres Tables
– Définition des exceptions
– Ecriture du code source
Module de Fonction
Utilisation
 L’appel d’un module fonction dans un programme
ABAP se fait de la façon suivante:
CALL FUNCTION <fonction>
EXPORTING f1 = a1 .... fn = an
IMPORTING f1 = a1 .... fn = an
CHANGING f1 = a1 .... fn = an
TABLES f1 = a1 .... fn = an
EXCEPTIONS e1 = r1 .... en = rn .

 Utiliser le modèle d ’instructions dans l ’éditeur ABAP


pour coder l ’appel à la fonction : ainsi , on ne risque
pas d ’oublier des paramètres d ’appel de la fonction.
Module de Fonction
Utilisation
 PARAMETRES :
– EXPORTING : il s ’agit des paramètres que l ’on va passer au
module fonction (ils ne sont pas modifiés par la fonction)

– IMPORTING … : ce sont les résultats renvoyés par la fonction

– CHANGING …. : ce sont des paramètres que l ’on envoit à la


fonction, mais qui sont modifiés par la fonction.

– TABLES … : ce sont les tables internes que l ’on passe à la fonction


ou que l ’on reçoit de la fonction

– EXCEPTIONS .. : c ’est l ’ensemble des codes retour possibles pour la


fonction. Ce sont des constantes numériques. Si le SY-SUBRC est
différent de 0, SY-SUBRC contient la valeur de l ’exception :
l ’exception étant le motif d ’erreur.
Module de Fonction
Exemple
CALL
CALLFUNCTION
FUNCTION'STRING_CONCATENATE'
'STRING_CONCATENATE'
EXPORTING
EXPORTING
STRING1
STRING1 ==MOT1
MOT1
STRING2
STRING2 ==MOT2
MOT2
IMPORTING
IMPORTING
STRING
STRING ==MOT MOT
EXCEPTIONS
EXCEPTIONS
TOO_SMALL
TOO_SMALL==11
OTHERS
OTHERS ==2.2.
CASE
CASESY-SUBRC.
SY-SUBRC.
WHEN
WHEN0.0.
WRITE
WRITE:/:/MOT.
MOT.
WHEN
WHEN1.1.
WRITE
WRITE:/:/‘ Erreur
‘ Erreur::chaîne
chaînede
decaractères
caractèrestrop
tropcourte ’
courte ’

WHEN
WHEN2.2.
WRITE:/
WRITE:/‘ Erreur
‘ Erreur::impossibilité
impossibilitéde
deconcaténer ’
concaténer ’
ENDCASE.
ENDCASE.
Reporting ABAP IV

Chapitre 6
Tables Internes
Tables internes
Définition
 Les tables internes sont des structures de données
qui existent le temps de l ’exécution du
programme. Elles peuvent contenir un nombre
quelconque d ’enregistrements ayant la même
structure, avec ou sans ligne d ’en-tête.
 L ’en-tête est similaire à une structure et sert de
work area (aire de travail) à la table interne. Le
type de données d ’un enregistrement peut être
élémentaire ou structuré.
Tables internes
Différents types (1/2)
 STANDARD : La recherche dans une table standard
s ’effectue de manière séquentielle. Le temps d ’accès
augmente donc linéairement avec le nombre d ’entrées. Il est
recommandé d ’accéder à ces tables avec des index.
 SORTED : Ce type de table est toujours sauvegardé
correctement triée. L ’accès utilise une clé binaire. Si cette clé
n ’est pas unique le système retient l ’enregistrement avec
l ’index le plus faible. Le temps d ’accès augmente de façon
logarithmique avec le nombre d ’entrées. On peut également y
accéder par index. Le temps pour insérer un enregistrement
est plus long que pour une table standard puisque le système
vérifie que le tri est correct après chaque insertion.
Tables internes
Différents types (2/2)
 HASHED : La table est gérée par une procédure interne de
hashage. Une table hashée est une collection d ’enregistrements qui
peuvent être adressés grâce à une clé unique. On ne peut pas utiliser
d ’index pour accéder à ce type de table. Toutes les entrées ont une
clé unique. Le temps d’accès est constant quelque soit le nombre
d’enregistrements. On ne peut y accéder qu’en utilisant les
opérations génériques du type SORT, LOOP. Les opérations avec
accès implicites ou explicites aux index ne sont pas autorisées
(comme LOOP ... FROM ou INSERT itab avec un LOOP).
 Notons que les types STANDARD et SORTED sont réunis sous le
type générique INDEX TABLE.
 Tous les types de tables internes sont réunis sous l ’appellation ANY
TABLE.
Tables internes
Déclaration
 Déclaration de table standard :
DATA: BEGIN OF itab OCCURS 100, (1)
nom(20) TYPE C,
code_postal(5) TYPE N,
ville(20) TYPE C,
END OF itab.
 Déclaration de table hashée (en référence à un type existant) :
TYPES: BEGIN OF struc,
name(10),
age TYPE I
END OF STRUC.
TYPES: HTAB TYPE HASHED TABLE OF STRUC WITH UNIQUE KEY
NAME.
DATA : PERSONS TYPE HTAB.
Les tables internes
Structure
Table
Dupont
Dupont 75000
75000 Paris
Paris
read table Durand
Durand 67000
67000 Strasbourg
Strasbourg
Deschamps
Deschamps 34000
34000 Montpellier
Montpellier

modify table

Dupont
Dupont 75000
75000 Paris
Paris

Work Area
Tables internes
Ajout
 APPEND <tabname>.
Ajoute un poste en fin de table à partir des valeurs
renseignées dans la work area:
Move ‘Dupont’ TO ITAB-NOM.
Move ‘75000’ TO ITAB-CP.
Move ‘Paris’ TO ITAB-VILLE.
APPEND ITAB.

 INSERT <tabname> [ INDEX <idx>].


Insère un poste à la ligne <idx>. L'index des postes
suivants est incrémenté de 1.
Tables internes
Mise à jour
 MODIFY <tabname> [ INDEX <idx> ].
Modifie la ligne <idx>. Si on ne précise pas d ’index alors
l ’instruction MODIFY doit être incluse dans un LOOP.
 Ajout d'un poste en fonction de la clé standard
COLLECT <itab>
La clé standard d'une table interne est composée de tous
les champs de type non-numérique (P, I et F).
Si un poste existe déjà avec la même clé standard, le
système ne crée pas de nouveau poste mais cumule les
valeurs des champs numériques.
Les tables internes
Mise à jour (Exemple)
 COLLECT:
COLLECT:Exemple
Exemple MOVE:
MOVE:'Dupont'
'Dupont'TOTOCLIENT-NOM,
CLIENT-NOM,
DATA: 'Lyon'
'Lyon' TOTOCLIENT-VILLE,
DATA:BEGIN
BEGINOF
OFCLIENT
CLIENTOCCURS
OCCURS CLIENT-VILLE,
100,
100, 50000
50000 TO TOCLIENT-CA.
CLIENT-CA.
NOM(20) COLLECT
COLLECTCLIENT.
NOM(20) TYPETYPEC,
C, CLIENT.
VILLE(20) MOVE:
MOVE:'Dupont'
'Dupont'TOTOCLIENT-NOM,
VILLE(20) TYPE
TYPEC,
C, CLIENT-NOM,
CA 'Paris'
'Paris' TO
TOCLIENT-VILLE,
CLIENT-VILLE,
CA TYPE
TYPEP,
P,
30000
30000 TO TOCLIENT-CA.
CLIENT-CA.
END
ENDOFOFCLIENT.
CLIENT. COLLECT
COLLECTCLIENT.
CLIENT.
MOVE:
MOVE:'Dupont'
'Dupont' TO
TOCLIENT-NOM,
CLIENT-NOM, Résultat:
Résultat:
'Paris'
'Paris'TO
TOCLIENT-VILLE,
CLIENT-VILLE, Dupont
Dupont Paris
Paris 40000
40000
10000
10000 TO
TOCLIENT-CA.
CLIENT-CA. Dupont
Dupont Lyon
Lyon 50000
50000
COLLECT
COLLECTCLIENT.
CLIENT.
Tables internes
Suppression
 DELETE <tabname> [ INDEX <idx> ].
Supprime la ligne <idx>
 CLEAR <tabname>.
Initialise la work area (i.e. l ’enregistrement
courant)
 REFRESH <tabname>.
Supprime tous les postes de la table. Attention,
la work area n ’est pas initialisée.
Tables internes
Lecture séquentielle
 Lecture de tous les postes:
LOOP AT itab.
WRITE: / itab-nom, itab-rue, itab-ville.
ENDLOOP.

 Lecture sélective de postes:


LOOP AT itab WHERE nom = 'Dupont'.
WRITE: / itab-rue, itab-ville.
ENDLOOP.
Tables internes
Lecture directe
 En utilisant l'index:
READ TABLE <itab> INDEX <idx>.

 En utilisant la clé standard:


READ TABLE <itab> .
Tables internes
Tris / Doublons
 On trie une table interne avec l ’instruction SORT.
SORT itab [BY f1 f2 …] [ASCENDING] [DESCENDING].

 On peut effectuer des tris complexes du type :


SORT itab DESCENDING BY f3 ASCENDING.
Dans ce cas la table interne itab sera triée globalement de
façon ascendante, sauf pour le champ f3 qui le sera de
façon descendante.
 Un des intérêts de trier une table est de supprimer les
doublons, pour cela on utilise l ’intruction suivante :
DELETE ADJACENT DUPLICATES FROM itab.
Tables internes
Ruptures
 LOOP AT itab.
AT FIRST. …ENDAT.
AT NEW <f>. …ENDAT.
AT END OF <f>. …ENDAT.
AT LAST. …ENDAT.
ENDLOOP.

 AT FIRST… ENDAT : les instructions incluses à l ’intérieur de cet


événement ne seront exécutés qu ’une seule fois en DEBUT de boucle

 AT LAST… ENDAT : les instructions incluses à l ’intérieur de cet


événement ne seront exécutés qu ’une seule fois en FIN de boucle
Tables internes
Ruptures

 AT NEW <f>…. ENDAT : les instructions incluses


à l ’intérieur de cet événement seront exécutés à
chaque début de rupture de la zone <f>.

 AT END OF <f>…. ENDAT : les instructions


incluses à l ’intérieur de cet événement seront
exécutés à chaque fin de rupture de la zone <f>. (=
à chaque fin de changement de valeur de <f>)
Tables internes
Ruptures
 Ruptures multi-critères :
SORT ITAB BY <f> <g>.
LOOP AT ITAB.
AT NEW <f>. … ENDAT
AT NEW <g>…. ENDAT.
..
AT END of <g>… ENDAT.
AT END of <f>… ENDAT
ENDLOOP

 Le contrôle de rupture effectué tient compte de toutes les


colonnes à gauche de <g>. AT NEW <g> signifie que la
rupture se base sur la concaténation des champs à
gauche de la zone <g> : c ’est à dire zone <f> + la zone
<g>.
Reporting ABAP IV

Chapitre 7
Gestion des Fichiers
Fichiers extracts

 Un fichier EXTRACT est constitué d'une séquence


d'enregistrements.

 Ces enregistrements peuvent avoir une structure


variable.

 On ne peut définir qu'un seul fichier EXTRACT par


programme.

 On ne peut lire un fichier EXTRACT que de façon


séquentielle.
Fichiers extracts
Définition des enregistrements
 Les groupes de zones: FIELD-GROUPS <fg>.
Un field-group regroupe plusieurs champ sous un même
nom. Il ne réserve pas d'espace mémoire mais est relié à des
champs existants grâce à un pointeur .

Il existe un field-group particulier appelé HEADER. Les


champs reliés au HEADER sont présent dans chaque
enregistrement d'un fichier extract.

FIELD-GROUPS: HEADER, DIVISION, MAGASIN


Fichiers extracts
Définition des enregistrements
 Affectation des zones à un groupe de zone :
INSERT <f1> <f2> <f3> INTO <fg>.

L'affectation de zones à un field-group peut se faire


jusqu'au moment où le premier enregistrement
utilisant ce field-group est créé.
INSERT: NUM_ART DIV MAG INTO HEADER,
STOCK_DIV INTO DIVISION,
STOCK_MAG INTO MAGASIN.
Fichiers extracts
Création des enregistrements
 EXTRACT <fg>.
Crée un enregistrement contenant les valeurs des zones du
HEADER puis des zones du field-group <fg> au moment de
l'EXTRACT. Les champs du HEADER préfixent chaque
enregistrement pour former une clé de tri.
EXTRACT DIVISION.
EXTRACT MAGASIN.
HEADER
NUM_ART DIV MAG STOCK_DIV DIVISION

NUM_ART DIV MAG STOCK_MAG MAGASIN


Fichiers extracts
Lecture
 SORT: Tri selon l'ordre des champs du HEADER
 Balayage:
LOOP.
AT MAGASIN.
Traitement des postes relatifs au field-group MAGASIN.
ENDAT.
Traitement tous postes.
AT DIVISION.
Traitement des postes relatifs au field-group DIVISION.
ENDAT.
ENDLOOP.
Fichiers extracts
Lecture
 Gestion des ruptures:
LOOP.
AT FIRST.
Traitement premier poste de la table.
ENDAT.
AT NEW NUM_ART.
Traitement nouvelle valeur d'une zone.
ENDAT.
AT END OF NUM_ART.
Traitement fin de valeur d'une zone.
ENDAT.
AT LAST.
Traitement dernier poste de la table.
ENDAT.
ENDLOOP.
Comparaison traitements
table interne/fichiers extracts
 Les fichiers extracts sont performants pour des
tableaux de gros volumes.

 Ils permettent aussi de générer des tableaux de


structure variable.

 Chemin : Outils -> Abap Workbench -> Test ->


Analyse durée exécution
Fichiers du serveur d’application
Ouverture
 OPEN DATASET <dsn> <option1> <option2>.
Si le système ne peut pas ouvrir le fichier : SY-SUBRC = 8.

option1
FOR INPUT en mode lecture
FOR OUTPUT en mode écriture
FOR APPENDING en mode écriture en fin de fichier
option2
IN TEXT MODE en mode text
IN BINARY MODE en mode binaire (défaut)
Fichiers du serveur d’application
Lecture
 READ DATASET <dsn> INTO <structure>.
Lecture d’un enregistrement du fichier <dsn> dans la
variable <structure>. En fin de fichier, SY-SUBRC est
différent de zéro.
 Exemple:
DO.
READ DATASET <dsn> INTO <structure>.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
Traitement.
ENDDO.
Fichiers du serveur d’application
Ecriture - Fermeture
 TRANSFER <structure> TO <dsn>.
Transfère le contenu de la variable
<structure> dans le fichier <dsn>.

 CLOSE DATASET <dsn>.


Ferme le fichier <dsn>.
Fichiers du serveur de présentation
Fonction UPLOAD
 Cette fonction permet de charger dans une table interne un
fichier du serveur de présentation:
- Paramètres d’export :
FILENAME Nom du fichier
FILETYPE type du fichier
BIN: fichiers binaires.
ASC: fichiers texte avec pointeurs de fin de ligne.
DAT: fichiers Excel files sauvegardés comme fichiers texte avec tabulateurs
WK1: fichiers Excel et Lotus files sauvegardés comme feuilles WK1.
- Paramètre table: table interne ABAP IV
Fichiers du serveur de présentation
Fonction DOWNLOAD
 Cette fonction permet de télécharger une
table interne ABAP IV sur un ficher local.
Les paramètres sont les mêmes que pour la
fonction UPLOAD.
Reporting ABAP IV

Chapitre 8
Concepts de programmation avancée
Report interactif
Présentation
 Dans le cas d ’un report interactif, l ’utilisateur peut
déclencher des opérations et des traitements par des
actions sur la liste résultante d ’une interrogation.

 On peut, par exemple, appeler des transactions, d ’autres


reports, lancer des impressions, imbriquer des listes …

 Ce type de traitement nécessite souvent de gérer le ‘ statut


de liste ’ de la surface du programme.
Cela s ’effectue par le MENU PAINTER (SE41).
Report interactif
MENU PAINTER (SE41)
 L ’interface de gestion de surface se décompose
en 3 éléments pour chaque statut géré :
Barre de menus

Barre de fonctions

Barre d ’outils
MENU PAINTER
Barre de menus
 La barre permet de définir le chemin pour accéder
aux événements. A chaque branche de
l ’arborescence se trouve un code fonction ou nom
de transaction.
MENU PAINTER
Barre de fonctions
 Dans cette partie on paramètre les fonctions de la
surface. Lorsque l ’utilisateur clique sur un bouton
ou icône de fonction, le code de la fonction (ici
‘ COMMANDE ’) est stocké dans SY-UCOMM.
MENU PAINTER
Barre d ’outils
 La barre d ’outils permet une plus grande
convivialité par rapport à la barre de menus,
notamment l ’insertion d ’icône. On y retrouve les
options des menus les plus souvents utilisés.
Report interactif ABAP
Commande : At Line-selection
 Déclenche un événement à chaque fois que l ’utilisateur choisit
une ligne dans une liste (une ligne générée par des instructions
telles que WRITE, ULINE ou SKIP) avec le curseur et presse
une touche de fonctions qui a la fonction PICK dans la
définition de l ’interface (1).

 L ’événement AT LINE-SELECTION génère habituellement


des listes détaillées qui recouvre la liste en cours.

 Lors de l ’affichage de la liste d ’origine, on sauvegarde les


champs à réutiliser grâce à l ’instruction HIDE.
Report interactif
Commande : At User-command
 Cet événement s ’exécute lorsque l ’utilisateur presse une
touche fonction ou effectue une entrée dans le champ de
commande.
 Plusieurs fonctions sont exécutées directement par le
système et donc ne peuvent pas être traitées par le
programme :
• PICK réservé pour AT LINE-SELECTION
• PFn réservé pour AT PFn
• /... Commande système
• PRI Imprimer
• BACK Retour
 Le code qui va déclecher l ’événement est stocké dans le
champ SY-UCOMM.
Débogeur SAP
 Le débogeur est un outil d ’exécution de programme en
mode pas à pas. Le contenu des champs est visualisable.
Débogeur SAP
 Le débogeur est très utile pour
- vérifier le chargement d ’une table interne,
- vérifier les formats des valeurs,
- vérifier les paramètres d ’une requête SQL,
- détecter de mauvaises affectations de champs,
- comprendre le déroulement d ’un programme.
Trace SQL
 Il existe un outil de visualisation des accès SQL.
Il permet entre autres
- de rechercher rapidement une table utilisée par
une transaction standard SAP,
- de vérifier l ’accès aux tables :utilisation d ’un
champ d ’index, clé primaire…

Chemin : Outils -> Abap Workbench -> Test ->


Trace SQL
Trace SQL
 Écran de base
 Une trace SQL se déclenche à un instant
T et pour un utilisateur X. Toutes les
actions de X sont alors enregistrés dans
un fichier LOG.
 Après avoir arrêté la trace, ce fichier est
visualisable par la fonction « List
Trace ».
Sélection des données
Base de Donnée Logique
 Une base de données logique (BDL) est une méthode
particulière d’accès aux données. C ’est un ensemble de
tables SAP dont les liens (ou jointures) sont prédéfinies.
 Elle peut être associée à un programme ABAP IV de type
Report dans les caractéristiques.
 Une BDL est toujours accompagnée d ’un programme
spécial qui met à votre disposition un ensemble d’entrées de
tables de base de données selon un ordre hiérarchique.
 Transaction SE36 : Gestion des bases de données logiques
Sélection des données
Base de Donnée Logique
• Exemple: BDL Article : MSM

Données
Donnéesgénérales
générales: :MARAV
MARAV

Unités
Unitésde
dequantité
quantité Données
Donnéesde
devente
vente Données
Donnéespar
pardivision
division
MARM
MARM MVKE
MVKE MARCV
MARCV

Données
Donnéespar
parmagasin
magasin
MARD
MARD

Cette BDL peut lire et fournir au programme auquel elle est associée
toutes les entrées de ces tables dans un ordre hiérarchique et séquentiel .
Base de Donnée Logique
l ’événement GET
 Syntaxe : GET <dbtab>.
 L ’événement GET est déclenché dans le programme
quand SAP a mis à disposition les données de la table
<dbtab>.
– Exemple :
REPORT ZZEXEMPLE.
TABLES : MARAV.
GET MARAV.
WRITE MARAV-MATNR, MARAV-MAKTX.
 Attention : les données de niveaux inférieurs de
l ’arborescence ne sont pas disponibles.
Base de Donnée Logique
l ’événement GET
 Comment faire pour accéder aux données d ’un niveau
inférieur ? par exemple la table MARD.
 Il suffit de positionner l ’événement GET sur la table
de niveau inférieur.
– exemple :
REPORT ZZEXEMPLE.
TABLES : MARAV, MARD.
GET MARD.
WRITE : MARD-LGORT, MARD-MATNR, MARV-MAKTX.
 A un niveau inférieur de l ’arborescence, on dispose de
toutes les données des niveaux supérieurs.
Base de Donnée Logique
Ecran de sélection
 A chaque BDL est associé au moins un écran de
sélection.

 Il permet à l’utilisateur de saisir des valeurs de critère


de sélection afin de restreindre la sélection des données
(Ex: numéro d’article).

 L’apparition de ces critères de sélection dépend des


tables de bases de données qui sont déclarées dans le
programme par l’instruction TABLES.
Messages d ’erreurs
 MESSAGE tnnn(mid).
 MESSAGE ID mid TYPE t NUMBER nnn.

 Produit un message de type ‘ t ’, ayant pour numéro ‘ nnn ’ et


appartenant à la classe de message ‘ mid ’.

 Types de messages :
– I - Info : Press ENTER to continue
– W - Warning : Correction possible
– E - Error : Correction required
– A - Abend : Transaction terminated
– X - Exit : Transaction terminated with short dump
– S - Success : Message on next screen
Message
Classe de message
 On maintient les classes de messages et les messages qu ’il contient par
la transaction SE91 ou le menu Abap workbench - Développement -
Environnement de développement - Messages.

 Exemple de message avec paramètre.


Soit le message 456 de la classe de message 99, ayant comme contenu
‘ L ’utilisateur & ne peut accéder au mandant & ’. L ’appel à ce
message, en tant que message d ’erreur ‘ E ’, s ’effectue comme suit :

MESSAGE E456(99) WITH sy-uname sy-mandt

Les deux variables passées en paramètres se substitue de façon ‘ en


série ’ aux &.
Comparaison traitements
Outil « Analyse durée d ’exécution »

 L ’outil « analyse durée d  ’exécution » intégré


dans SAP permet d ’analyser les performances
des transactions et programmes créés dans
l ’Abap Workbench.
 visualiser les durées d ’exécution selon trois
catégories
- instruction ABAP (EXPORT, IMPORT…),
- accès à la base de donnée (SELECT SQL...)
- système R/3 (chargement du programme…)

Vous aimerez peut-être aussi