SlideShare une entreprise Scribd logo
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
Mot-clé événementiel
Bloc de traitement
Contrôle interne
Mot-clé événementiel
Bloc de traitement
Contrôle interne
Contrôle externe
Programme ABAP IV
Contrôle externe
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
DATA: BEGIN OF STRUC1,
ZONEA,
ZONEB(3) TYPE N,
ZONEC(8) TYPE C,
END OF STRUC1.
DATA: BEGIN OF STRUC2,
ZONEB(3) TYPE N,
ZONEC(8) TYPE C,
ZONED(5) TYPE P,
END OF STRUC2.
MOVE-CORRESPONDING STRUC1 TO STRUC2.
équivaut à:
MOVE STRUC1-ZONEB TO STRUC2-ZONEB.
MOVE STRUC1-ZONEC TO STRUC2-ZONEC.
 MOVE-CORRESPONDING : exemple
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.
 Opérateurs logiques
tous types de champs:
EQ equal to
NE not equal to
LT less than
LE less than or equal to
GT greater than
GE greater than or equal to
champs de type C ou N:
CO Contains Only
CN Contains Not only
CA Contains Any
NA contains Not Any
CS Contains String
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 Conditionnel
 Boucle
inconditionnelle:
DO <n> TIMES.
CHECK condition.
IF condition.
EXIT.
ENDIF.
traitement.
ENDDO.
 Boucle
conditionnelle:
WHILE condition.
traitement.
ENDWHILE.
Instruction de base :
Traitement de boucle
Instruction des base :
Traitement de boucle
 EXIT : sortie de la boucle
 CONTINUE : passage à l ’occurrence suivante
DO 4 TIMES.
…
IF zone GT 100.
CONTINUE.
ENDIF.
…
ENDDO.
WHILE I > 400.
…
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
…
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
KUNNR
n° client
NAME1
Nom client
1233 Client 1
1455 Client 2
2300 Client3
VBELN
N°
Commande
KUNNR
N° client
C00000001 1233
C00000002 1455
C00000003 1455
C00000004 1233
C00000005 1656
C00000006 3455
K U N N R N A M E1 V B EL N
1 2 3 3 C li e n t 1 C 0 0 0 0 0 0 01
1 2 3 3 C li e n t 1 C 0 0 0 0 0 0 04
1 4 5 5 C li e n t 2 C 0 0 0 0 0 0 02
1 4 5 5 C li e n t 2 C 0 0 0 0 0 0 03
JOIN
KNA1 : clients VBAK : commandes clients
Résultat de la jointure
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
KUNNR
n° client
NAME1
Nom client
1233 Client 1
1455 Client 2
2300 Client3
VBELN
N°
Commande
KUNNR
N° client
C00000001 1233
C00000002 1455
C00000003 1455
C00000004 1233
C00000005 1656
C00000006 3455
1 2 3 3 C li e n t 1 C 0 0 0 0 0 0 01
1 2 3 3 C li e n t 1 C 0 0 0 0 0 0 04
1 4 5 5 C li e n t 2 C 0 0 0 0 0 0 02
1 4 5 5 C li e n t 2 C 0 0 0 0 0 0 03
2 3 0 0 C li e n t 3 < i n it ia l >
LEFT
OUTER
JOIN
KNA1 : clients VBAK : commandes clients
Résultat de la jointure
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.
 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
Utilisation
Module de Fonction
Exemple
CALL FUNCTION 'STRING_CONCATENATE'
EXPORTING
STRING1 = MOT1
STRING2 = MOT2
IMPORTING
STRING = MOT
EXCEPTIONS
TOO_SMALL = 1
OTHERS = 2.
CASE SY-SUBRC.
WHEN 0.
WRITE :/ MOT.
WHEN 1.
WRITE :/ ‘ Erreur : chaîne de caractères trop courte ’
WHEN 2.
WRITE:/ ‘ Erreur : impossibilité de concaténer ’
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
Dupont 75000 Paris
Durand 67000 Strasbourg
Deschamps 34000 Montpellier
Dupont 75000 Paris
Work Area
Table
read table
modify table
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: Exemple
DATA: BEGIN OF CLIENT
OCCURS 100,
NOM(20) TYPE C,
VILLE(20) TYPE C,
CA TYPE P,
END OF CLIENT.
MOVE: 'Dupont' TO CLIENT-NOM,
'Paris' TO CLIENT-VILLE,
10000 TO CLIENT-CA.
COLLECT CLIENT.
MOVE: 'Dupont' TO CLIENT-NOM,
'Lyon' TO CLIENT-VILLE,
50000 TO CLIENT-CA.
COLLECT CLIENT.
MOVE: 'Dupont' TO CLIENT-NOM,
'Paris' TO CLIENT-VILLE,
30000 TO CLIENT-CA.
COLLECT CLIENT.
Résultat:
Dupont Paris 40000
Dupont Lyon 50000
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
 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>.
Tables internes
Ruptures
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.
NUM_ART DIV MAG STOCK_DIV
NUM_ART DIV MAG STOCK_MAG
HEADER
DIVISION
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
Données générales : MARAV
Unités de quantité
MARM
Données de vente
MVKE
Données par division
MARCV
Données par magasin
MARD
• Exemple: BDL Article : MSM
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 .
 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
l ’événement GET
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 &.
 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…)
Comparaison traitements
Outil « Analyse durée d ’exécution »

Contenu connexe

Similaire à Cours ABAP - EPFL 09-2003 (1).ppt

Open erp
Open erpOpen erp
Open erpBrou87
 
Support cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERPSupport cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERP
SmartnSkilled
 
Support tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERPSupport tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERP
SmartnSkilled
 
Support formation vidéo : Introduction générale à SAP ERP
Support formation vidéo : Introduction générale à SAP ERPSupport formation vidéo : Introduction générale à SAP ERP
Support formation vidéo : Introduction générale à SAP ERP
SmartnSkilled
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
MED B
 
Cours langage c
Cours langage cCours langage c
Cours langage c
coursuniv
 
Outilsdanalysefonctionnellesadt 160919140831
Outilsdanalysefonctionnellesadt 160919140831Outilsdanalysefonctionnellesadt 160919140831
Outilsdanalysefonctionnellesadt 160919140831
Lénaïc CAPELLE
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et Pinba
Idaf_1er
 
Scilab pour les vrais débutants
Scilab pour les vrais débutantsScilab pour les vrais débutants
Scilab pour les vrais débutants
Scilab
 
Fao fraisage catia
Fao fraisage catiaFao fraisage catia
Fao fraisage catia
sarah Benmerzouk
 
Les fonctions.pptx
Les fonctions.pptxLes fonctions.pptx
Les fonctions.pptx
souadsadki2
 
Adobe presentation fonctionnelle
Adobe presentation fonctionnelleAdobe presentation fonctionnelle
Adobe presentation fonctionnelle
Sharifah Norazehan Syed Yasin
 
Chap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptxChap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptx
BelhassenGuettat2
 
Cours doumi spss 2013 2014
Cours doumi spss 2013 2014Cours doumi spss 2013 2014
Cours doumi spss 2013 2014tsuhel
 
Green System University - Development JDEdwards (French Version) - Tome2
Green System University - Development JDEdwards (French Version) - Tome2Green System University - Development JDEdwards (French Version) - Tome2
Green System University - Development JDEdwards (French Version) - Tome2
Minh-Tri Nguyen
 
Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptx
WafaNeji
 
2_8_Cours_Plsql.ppt
2_8_Cours_Plsql.ppt2_8_Cours_Plsql.ppt
2_8_Cours_Plsql.ppt
RihabBENLAMINE
 
cours-gratuit.com--system1id048.pdf
cours-gratuit.com--system1id048.pdfcours-gratuit.com--system1id048.pdf
cours-gratuit.com--system1id048.pdf
KamalZeghdar
 

Similaire à Cours ABAP - EPFL 09-2003 (1).ppt (20)

Open erp
Open erpOpen erp
Open erp
 
Support cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERPSupport cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERP
 
Support tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERPSupport tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERP
 
Support formation vidéo : Introduction générale à SAP ERP
Support formation vidéo : Introduction générale à SAP ERPSupport formation vidéo : Introduction générale à SAP ERP
Support formation vidéo : Introduction générale à SAP ERP
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Serie
SerieSerie
Serie
 
Outilsdanalysefonctionnellesadt 160919140831
Outilsdanalysefonctionnellesadt 160919140831Outilsdanalysefonctionnellesadt 160919140831
Outilsdanalysefonctionnellesadt 160919140831
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et Pinba
 
Scilab pour les vrais débutants
Scilab pour les vrais débutantsScilab pour les vrais débutants
Scilab pour les vrais débutants
 
Fao fraisage catia
Fao fraisage catiaFao fraisage catia
Fao fraisage catia
 
Les fonctions.pptx
Les fonctions.pptxLes fonctions.pptx
Les fonctions.pptx
 
Ladder
LadderLadder
Ladder
 
Adobe presentation fonctionnelle
Adobe presentation fonctionnelleAdobe presentation fonctionnelle
Adobe presentation fonctionnelle
 
Chap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptxChap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptx
 
Cours doumi spss 2013 2014
Cours doumi spss 2013 2014Cours doumi spss 2013 2014
Cours doumi spss 2013 2014
 
Green System University - Development JDEdwards (French Version) - Tome2
Green System University - Development JDEdwards (French Version) - Tome2Green System University - Development JDEdwards (French Version) - Tome2
Green System University - Development JDEdwards (French Version) - Tome2
 
Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptx
 
2_8_Cours_Plsql.ppt
2_8_Cours_Plsql.ppt2_8_Cours_Plsql.ppt
2_8_Cours_Plsql.ppt
 
cours-gratuit.com--system1id048.pdf
cours-gratuit.com--system1id048.pdfcours-gratuit.com--system1id048.pdf
cours-gratuit.com--system1id048.pdf
 

Cours ABAP - EPFL 09-2003 (1).ppt

  • 2. 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
  • 3. 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
  • 4. Chapitre 1 Reporting ABAP IV Généralités ABAP IV
  • 5. 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
  • 6. 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’.
  • 7. 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 ...
  • 8. 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
  • 9. 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
  • 10. Généralités ABAP IV Gestion événementielle Mot-clé événementiel Bloc de traitement Contrôle interne Mot-clé événementiel Bloc de traitement Contrôle interne Contrôle externe Programme ABAP IV Contrôle externe
  • 11. 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.
  • 12. 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….
  • 13. 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.
  • 14. 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
  • 15. 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
  • 16. Commandes de l ’éditeur Abap  Commandes  fonctions d ’édition  sauvegarder  contrôler  générer  exécuter
  • 17. Chapitre 2 Reporting ABAP IV Déclarations de données
  • 18. 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 .
  • 19. 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
  • 20. 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
  • 21. 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.
  • 22. 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).
  • 23. 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.
  • 24. 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.
  • 25. 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 …
  • 26. 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
  • 27. Chapître 3 Reporting ABAP IV Instructions de base
  • 28. 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
  • 29. 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
  • 30. 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.
  • 31. 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 ...
  • 32. 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
  • 33. 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>.
  • 34. 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
  • 35. 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 ’
  • 36. 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>.
  • 37. Instructions de base Affectation de zones DATA: BEGIN OF STRUC1, ZONEA, ZONEB(3) TYPE N, ZONEC(8) TYPE C, END OF STRUC1. DATA: BEGIN OF STRUC2, ZONEB(3) TYPE N, ZONEC(8) TYPE C, ZONED(5) TYPE P, END OF STRUC2. MOVE-CORRESPONDING STRUC1 TO STRUC2. équivaut à: MOVE STRUC1-ZONEB TO STRUC2-ZONEB. MOVE STRUC1-ZONEC TO STRUC2-ZONEC.  MOVE-CORRESPONDING : exemple
  • 38. 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
  • 39. 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.
  • 40. 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 ?
  • 41. 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.
  • 42. 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.
  • 43. 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.
  • 44. 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.
  • 45. Instruction de base : Traitement Conditionnel  Branchement selon une condition logique : IF condition1. traitement. ELSEIF condition2. traitement. ELSE. traitement. ENDIF.
  • 46.  Opérateurs logiques tous types de champs: EQ equal to NE not equal to LT less than LE less than or equal to GT greater than GE greater than or equal to champs de type C ou N: CO Contains Only CN Contains Not only CA Contains Any NA contains Not Any CS Contains String NS contains No String CP Contains Pattern NP contains No Pattern Instruction de base : Traitement Conditionnel
  • 47.  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 Conditionnel
  • 48.  Boucle inconditionnelle: DO <n> TIMES. CHECK condition. IF condition. EXIT. ENDIF. traitement. ENDDO.  Boucle conditionnelle: WHILE condition. traitement. ENDWHILE. Instruction de base : Traitement de boucle
  • 49. Instruction des base : Traitement de boucle  EXIT : sortie de la boucle  CONTINUE : passage à l ’occurrence suivante DO 4 TIMES. … IF zone GT 100. CONTINUE. ENDIF. … ENDDO. WHILE I > 400. … IF SY-SUBRC NE 0. EXIT. ENDIF. … ENDWHILE.  Comment vont réagir les boucles dans chacun de ces 2 cas ?
  • 50. 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
  • 51. Chapitre 4 Reporting ABAP IV Traitement des tables SAP : l ’instruction SELECT
  • 52. 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.
  • 53. 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
  • 54. 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
  • 55. 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
  • 56. 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 ?
  • 57. 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
  • 58. 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.
  • 59. SELECT : jointures de tables KUNNR n° client NAME1 Nom client 1233 Client 1 1455 Client 2 2300 Client3 VBELN N° Commande KUNNR N° client C00000001 1233 C00000002 1455 C00000003 1455 C00000004 1233 C00000005 1656 C00000006 3455 K U N N R N A M E1 V B EL N 1 2 3 3 C li e n t 1 C 0 0 0 0 0 0 01 1 2 3 3 C li e n t 1 C 0 0 0 0 0 0 04 1 4 5 5 C li e n t 2 C 0 0 0 0 0 0 02 1 4 5 5 C li e n t 2 C 0 0 0 0 0 0 03 JOIN KNA1 : clients VBAK : commandes clients Résultat de la jointure On remarque qu ’aucune jointure n ’a été faite pour le client n° 2300
  • 60. 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
  • 61. 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.
  • 62. SELECT : jointures de tables KUNNR n° client NAME1 Nom client 1233 Client 1 1455 Client 2 2300 Client3 VBELN N° Commande KUNNR N° client C00000001 1233 C00000002 1455 C00000003 1455 C00000004 1233 C00000005 1656 C00000006 3455 1 2 3 3 C li e n t 1 C 0 0 0 0 0 0 01 1 2 3 3 C li e n t 1 C 0 0 0 0 0 0 04 1 4 5 5 C li e n t 2 C 0 0 0 0 0 0 02 1 4 5 5 C li e n t 2 C 0 0 0 0 0 0 03 2 3 0 0 C li e n t 3 < i n it ia l > LEFT OUTER JOIN KNA1 : clients VBAK : commandes clients Résultat de la jointure On remarque qu ’une jointure a été faite pour le client n° 2300 , mais le n° commande n ’est renseigné
  • 63. 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.
  • 64. 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 ?
  • 65. 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
  • 66. 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
  • 67. 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
  • 68. 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
  • 69. Reporting ABAP IV Chapitre 5 Modularité
  • 70. 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
  • 71. 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>.
  • 72. 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.
  • 73. 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.
  • 74. 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.
  • 75. 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).
  • 76. 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)
  • 77. 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
  • 78. 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.
  • 79.  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 Utilisation
  • 80. Module de Fonction Exemple CALL FUNCTION 'STRING_CONCATENATE' EXPORTING STRING1 = MOT1 STRING2 = MOT2 IMPORTING STRING = MOT EXCEPTIONS TOO_SMALL = 1 OTHERS = 2. CASE SY-SUBRC. WHEN 0. WRITE :/ MOT. WHEN 1. WRITE :/ ‘ Erreur : chaîne de caractères trop courte ’ WHEN 2. WRITE:/ ‘ Erreur : impossibilité de concaténer ’ ENDCASE.
  • 81. Reporting ABAP IV Chapitre 6 Tables Internes
  • 82. 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é.
  • 83. 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.
  • 84. 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.
  • 85. 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.
  • 86. Les tables internes Structure Dupont 75000 Paris Durand 67000 Strasbourg Deschamps 34000 Montpellier Dupont 75000 Paris Work Area Table read table modify table
  • 87. 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.
  • 88. 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.
  • 89. Les tables internes Mise à jour (Exemple)  COLLECT: Exemple DATA: BEGIN OF CLIENT OCCURS 100, NOM(20) TYPE C, VILLE(20) TYPE C, CA TYPE P, END OF CLIENT. MOVE: 'Dupont' TO CLIENT-NOM, 'Paris' TO CLIENT-VILLE, 10000 TO CLIENT-CA. COLLECT CLIENT. MOVE: 'Dupont' TO CLIENT-NOM, 'Lyon' TO CLIENT-VILLE, 50000 TO CLIENT-CA. COLLECT CLIENT. MOVE: 'Dupont' TO CLIENT-NOM, 'Paris' TO CLIENT-VILLE, 30000 TO CLIENT-CA. COLLECT CLIENT. Résultat: Dupont Paris 40000 Dupont Lyon 50000
  • 90. 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.
  • 91. 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.
  • 92. Tables internes Lecture directe  En utilisant l'index: READ TABLE <itab> INDEX <idx>.  En utilisant la clé standard: READ TABLE <itab> .
  • 93. 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.
  • 94. 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
  • 95.  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
  • 96.  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>. Tables internes Ruptures
  • 97. Reporting ABAP IV Chapitre 7 Gestion des Fichiers
  • 98. 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.
  • 99. 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
  • 100. 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.
  • 101. 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. NUM_ART DIV MAG STOCK_DIV NUM_ART DIV MAG STOCK_MAG HEADER DIVISION MAGASIN
  • 102. 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.
  • 103. 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.
  • 104. 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
  • 105. 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)
  • 106. 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.
  • 107. 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>.
  • 108. 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
  • 109. 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.
  • 110. Reporting ABAP IV Chapitre 8 Concepts de programmation avancée
  • 111. 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).
  • 112. 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
  • 113. 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.
  • 114. 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.
  • 115. 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.
  • 116. 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.
  • 117. 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.
  • 118. Débogeur SAP  Le débogeur est un outil d ’exécution de programme en mode pas à pas. Le contenu des champs est visualisable.
  • 119. 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.
  • 120. 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
  • 121. 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 ».
  • 122. 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
  • 123. Sélection des données Base de Donnée Logique Données générales : MARAV Unités de quantité MARM Données de vente MVKE Données par division MARCV Données par magasin MARD • Exemple: BDL Article : MSM 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 .
  • 124.  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
  • 125.  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 l ’événement GET
  • 126. 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.
  • 127. 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
  • 128. 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 &.
  • 129.  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…) Comparaison traitements Outil « Analyse durée d ’exécution »