Vous visez à optimiser les processus de gestion ? À rendre les informations plus cohérentes et homogènes ? À faciliter la communication interne et externe ? À minimiser les coûts ? À globaliser la formation ? À diminuer le nombre de salariés ayant pour mission principale la saisie comptable et à maîtriser les coûts et les délais de mise en œuvre et de déploiement ?
Découvrez l'univers SAP ERP et comprenez son fonctionnement avec cette formation vidéo : https://www.smartnskilled.com/tutoriel/formation-en-ligne-initiation-a-sap-erp
Support tutoriel : Initiation à SAP ERPSmartnSkilled
Découvrez l'univers SAP ERP et comprenez son fonctionnement
Cette formation vidéo va vous permettre de :
- Comprendre au mieux l’univers ERP,
- Connaître le jargon propre à SAP ERP,
- Comprendre le fonctionnement général du système SAP ERP.
Formation en ligne :
https://www.smartnskilled.com/tutoriel/formation-en-ligne-initiation-a-sap-erp
Support formation vidéo : Introduction générale à SAP ERPSmartnSkilled
Cette formation est une initiation à SAP ERP
Cette formation vidéo va vous permettre de :
- Comprendre au mieux l’univers ERP,
- Connaître le jargon propre à SAP ERP,
- Comprendre le fonctionnement général du système SAP ERP.
Accédez à la formation vidéo complète par ici :
https://www.smartnskilled.com/tutoriel/formation-en-ligne-introduction-generale-a-sap-erp
Monitoring d'applications/environnements PHP : APM et PinbaIdaf_1er
PHP s'est industrialisé, aujourd'hui, un besoin de monitoring existe au niveau des applications écrites en PHP et de la plateforme sur laquelle elles reposent.
En parallèle, le besoin de montée en charge et de tolérance de faute est grandissant, en particulier avec le cloud computing, il devient donc crucial d'avoir la possibilité de surveiller l'ensemble de son infrastructure, à cette fin, cette session présentera une solution entièrement bâtie sur du logiciel libre.
Alternative PHP Monitor (APM) : extension PHP non-intrusive permettant la capture de divers évènements, tels que les erreurs et lenteurs d'exécution.
Pinba : extension PHP permettant la collecte en base de données d'informations relatives à l'exploitation de vos applications en production. De multiples rapports peuvent ensuite être élaborés pour fournir des statistiques, notamment de temps d'exécution sur des parties de codes.
L’objectif de ce document est de vous guider pas à pas dans la découverte des différentes fonctionnalités de base du logiciel Scilab pour un utilisateur n’ayant jamais utilisé un logiciel de calcul.
Vous visez à optimiser les processus de gestion ? À rendre les informations plus cohérentes et homogènes ? À faciliter la communication interne et externe ? À minimiser les coûts ? À globaliser la formation ? À diminuer le nombre de salariés ayant pour mission principale la saisie comptable et à maîtriser les coûts et les délais de mise en œuvre et de déploiement ?
Découvrez l'univers SAP ERP et comprenez son fonctionnement avec cette formation vidéo : https://www.smartnskilled.com/tutoriel/formation-en-ligne-initiation-a-sap-erp
Support tutoriel : Initiation à SAP ERPSmartnSkilled
Découvrez l'univers SAP ERP et comprenez son fonctionnement
Cette formation vidéo va vous permettre de :
- Comprendre au mieux l’univers ERP,
- Connaître le jargon propre à SAP ERP,
- Comprendre le fonctionnement général du système SAP ERP.
Formation en ligne :
https://www.smartnskilled.com/tutoriel/formation-en-ligne-initiation-a-sap-erp
Support formation vidéo : Introduction générale à SAP ERPSmartnSkilled
Cette formation est une initiation à SAP ERP
Cette formation vidéo va vous permettre de :
- Comprendre au mieux l’univers ERP,
- Connaître le jargon propre à SAP ERP,
- Comprendre le fonctionnement général du système SAP ERP.
Accédez à la formation vidéo complète par ici :
https://www.smartnskilled.com/tutoriel/formation-en-ligne-introduction-generale-a-sap-erp
Monitoring d'applications/environnements PHP : APM et PinbaIdaf_1er
PHP s'est industrialisé, aujourd'hui, un besoin de monitoring existe au niveau des applications écrites en PHP et de la plateforme sur laquelle elles reposent.
En parallèle, le besoin de montée en charge et de tolérance de faute est grandissant, en particulier avec le cloud computing, il devient donc crucial d'avoir la possibilité de surveiller l'ensemble de son infrastructure, à cette fin, cette session présentera une solution entièrement bâtie sur du logiciel libre.
Alternative PHP Monitor (APM) : extension PHP non-intrusive permettant la capture de divers évènements, tels que les erreurs et lenteurs d'exécution.
Pinba : extension PHP permettant la collecte en base de données d'informations relatives à l'exploitation de vos applications en production. De multiples rapports peuvent ensuite être élaborés pour fournir des statistiques, notamment de temps d'exécution sur des parties de codes.
L’objectif de ce document est de vous guider pas à pas dans la découverte des différentes fonctionnalités de base du logiciel Scilab pour un utilisateur n’ayant jamais utilisé un logiciel de calcul.
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
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
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
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
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
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.
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
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.
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 »