Développement ABAP – Guillaume Zacchello

Transcription

Développement ABAP – Guillaume Zacchello
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
1. Présentation de l’ESN CGI
1.1 Vue globale
Le groupe CGI pour « Conseillers en Gestion et Informatique » en version francophone et «
Consultants to Government and Industry » pour les anglophones, est une entreprise
canadienne de services en informatique, spécialisée dans le conseil, l'intégration de systèmes
et l'outsourcing. Il se classe parmi les cinq plus grands groupes mondiaux dans son secteur.
CGI et ses filiales emploient plus de 68 000 professionnels, répartis dans 400 bureaux et 40
pays.
1.2 Historique
CGI est né en 1976 et est devenue l’une des 10 plus grandes SSII mondiale depuis le rachat en
2012 de Logica. Elle a aussi racheté 5 autres SSII majeures.
Image 1 Acquisitions CGI
1.3 Services, activités et chiffres
L’offre globale de CGI est organisée en Business Units* dont les domaines combinés
couvrent l’ensemble des besoins des entreprises de toutes tailles dans tous les secteurs
d’activité.
Ses domaines couvrent les conseils stratégiques en informatique et en management, les
services d’intégration de systèmes, le développement et sa mise en œuvre, la maintenance et
l’amélioration des applications, des services d’infrastructures ainsi que des solutions
progicielles de plus de 180 solutions informatiques et d’affaires exclusives.
8
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
Ses activités sont entre autres la santé, les services financiers, les services publics, le
commerce de détail et les services aux consommateurs …
Quelques statistiques :

5e plus importante entreprise indépendante de services en TI et en gestion des
processus d’affaires au monde,

Capacités mondiales de prestation de services grâce à des centres situés sur 5
continents,

CA 2014 : 10,5 milliards $,

Valeur estimée du carnet de commandes : 20,0 milliards $.
Image 2 Répartition du CA (2012)
1.4 CGI en Aquitaine
La Business Unit Grand Ouest dont fait
partie CGI Aquitaine possède 10 agences.
Ses clients sont issus de secteurs diversifiés, et
répartis soit en grands comptes soit dans un
réseau de moyennes entreprises.
Grand Ouest possède plus de 1700 salariés.
Le président de la BU d’aquitaine est Olivier
FOIX
Image 3 Organisation CGI Grand Ouest
9
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
La BU de CGI en Aquitaine se nomme SOL
(Sud Ouest Languedoc) et possède 4 sites.
Image 4 Sites Grand Ouest
CGI en Aquitaine : ce sont 720 collaborateurs au Haillan (Bordeaux) regroupés en 3 entités
distinctes. Mais aussi 25 membres SOL/AQT sur le site de PAU.
Image 5 Entités CGI Aquitaine
Image 7 Entrée de SOL
Image 6 Organisation SOL
10
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
Pour ce qui est de SAP chez SOL, ses clients sont entre autre : EDF, Turbomeca (Safran),
Herakles (Safran), IMA (assitance), Stelia (Airbus), l’AIA (Atelier Industriel de
l'Aéronautique de Bordeaux), France Telecom …
1.5 CGI en Interne
Un processus complet d’accueil est activé pour chaque nouvel arrivant, rythmé par des temps
formels et informels d’échange entre le nouvel arrivant et son manager ou son « référent ».
Tout nouvel arrivant doit suivre sur le site du internet CGI quatre formations sur la sécurité et
compléter les questionnaires.
Image 7 Processus d'intégration
Il existe 4 sites internes à CGI :
- My Site utilisé par les employés afin de
suivre les formations, modifier son compte
bancaire, se faire rembourser les frais de
transport …
Buzz : est un réseau social interne à
l’entreprise,
CynerGi : une plate-forme d’échange de
documents
Le portail CGI : présentation de la SSII et
affichage des offres d’emploi.
Image 8 Sites Internet de CGI
11
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
2. Analyse
2.1 Analyse du sujet et de son contexte
2.1.1 Présentation de la mission
Actuellement, les consultants SAP de CGI utilisent un fichier Excel afin de noter
manuellement les présences, date de création, mandant … de tous les OT* et sur chaque
environnement* d’un projet en cours. Il peut exister des erreurs dans ces fichiers Excel
comme des mauvaises dates. Le but de la mission est de développer un outil interne à CGI
afin d’automatiser un rapport qui affiche les mêmes informations que le fichier Excel lorsque
celui-ci est exécuté.
2.1.2 Analyse de l’existant
Un extrait du fichier Excel de la présence des OT sur le projet EDF (cf. Image 9)
Image 8 Fichier Excel du suivi des OT
12
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
Les informations présentes dans le fichier Excel (cf. Image 9) géré manuellement sont : le
nom de l’OT, son libellé, son projet, sa version, le mandant, son type. Il y a aussi sa présence
codifiée par un « X » ou non dans un système et sa date de passage dans un environnement s'il
est présent.
2.1.3 L’outil STMS
Sur SAP, il existe la transaction STMS permettant de voir les OT disponibles ainsi que leurs
codes retour dans chaque environnement.
On clique sur l’icone « Synthèse d’import » (cf.
Image 10)
Notre environnement actuel est DCD.
Image 9 Accueil STMS
Aperçu des environnements disponibles (cf.
Image 11).
On sélectionne l’un des environnements.
Image 10 Synthèse des imports d’environnements
Image 11 Liste des OT sur DCQ
Les OT (Ordre), utilisateur et code retour* en format graphique(St) sont bien présents mais on
ne voit pas les OT non disponibles (qui sont dans d’autres systèmes). La date de création des
OT n’est pas référencée. De part tous ces manques, il faut développer un programme.
13
DÉVELOPPEMENT ABAP
2.2
–
GUILLAUME ZACCHELLO
Analyse des besoins fonctionnels
2.2.1 Le besoin général
Il faut afficher les informations présentes dans le fichier Excel (cf. 2.1.2). De plus il faut
rajouter le code retour* de chaque environnement afin de savoir s’il a été importé
correctement dans chaque environnement. Ce code retour ne sera pas affiché dans le 1er
système de développement car celui-ci est automatiquement importé avec succès.
L’affichage du tableau des OT diffère de celui d’Excel, chaque système doit avoir sa date de
passage à côté et son code retour. Il faut aussi faire apparaitre le compte du titulaire.
Ordre de
transport
Libelle
Mandant
Titulaire
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
Env 1
Date de
passage
Env1
xxxxxxx xxxxxxx
xxxxxxx xxxxxxx
Env 2
Date de
passage
Env2
xxxxxxx xxxxxxx
xxxxxxx xxxxxxx
Code
retour
Env 2
xxxxxxx
xxxxxxx
Les environnements qui devront être affichés pourront être choisis lors de l’installation du
programme.
2.2.2 Qu’est-ce qu’un ordre de transport
Un ordre de transport (ou un OT), est une collection de changements qui ont été réalisés dans
l’environnement de développement et qui peuvent déployés dans un autre système.
Chaque OT est généré par SAP avec un identifiant unique. Il peut contenir entre autre un
libellé, l’utilisateur SAP qui a réalisé cette modification, le mandant sur lequel la modification
est faite, la date et heure de création de l’OT …
La création d’un OT se fait via le code de transport SE10 et peut-être visualisé dans SE01 (cf.
Image 13).
Image 12 OT DCDK907448
14
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
Un ordre de transport est toujours du format standard : <SID>K<Number>



SID – nom de l’environnement,
K – est une lettre fixe,
Number – commence par 900001et augmenté aléatoirement suivant le nombre de
tâches.
Exemple: DEVK900030
La tâche utilise la même convention de dénomination que l’OT, il peut y en avoir plusieurs
dans l’OT avec un minimum de un. Un numéro aléatoire s’incrémente avec celui de l’OT.
Exemple sur l’image (cf. Image 13) : l’OT DCDK907448 possède 4 tâches.
Ces tâches ne devront pas être affichées dans le rapport car on ne souhaite voir que les OT
auxquels appartiennent ces tâches.
2.2.3 Extraction des OT
Il n’y a pas de table globale recensant tous les OT qui ont été créés dans chaque système et
basculés dans les autres systèmes. Il existe plusieurs moyens permettant de collecter les
informations sur les OT dans les différents systèmes mais chacun avec des inconvénients.
Il est possible de recueillir les informations des différents OT via :

Lecture dans le système actuel via la table E070, possibilité d’avoir tous les OT
disponibles et toutes les informations disponibles.

Lecture des fichiers UNIX de SAP sur le serveur actuel afin de récupérer les OT de
tous les systèmes. C’est la méthode la plus importante car elle donne les informations
de tous les systèmes.
Inconvénient : Si un serveur est hors ligne, il ne peut plus lire les logs et cela
impactera la récupération d’informations des OT sur d’autres environnements (cf.
4.2).

Lecture de la table E070 des autres environnements via des connexions RFC (CF
3.1.3).
Inconvénient : une connexion RFC doit être créée dans SAP pour chaque
environnement et certains clients n’autorisent pas systématiquement la connexion à
leurs environnements notamment ceux de production. Cette table sert uniquement si
un serveur est hors ligne afin de pouvoir lire la présence d’OT d’un environnement
particulier (cf. 4.2) . Cette table ne renvoie pas le code retour.

Lecture de la table TMSBUFFER des autres environnements via des connexions RFC.
Pour chaque environnement cette table peut lire les OT d’autres environnements.
Inconvénient : une connexion RFC doit être créée dans SAP pour chaque
environnement et certains clients n’autorisent pas systématiquement la connexion à
leurs environnements notamment ceux de production. Cette table sert uniquement si
un serveur est hors ligne afin de pouvoir lire la présence d’OT dans plusieurs autres
environnements. Cette table ne renvoie pas la date de création d’OT.
15
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
2.2.4 Déroulement du programme
Le programme devra dans un 1er temps extraire les OT via les différentes fonctions, les
analyser et les afficher. Pour ce faire, on utilise tous les moyens pour extraire des informations
sur les OT (cf. 2.2.3) pour chaque environnement. Ces OT seront ensuite comparés avec ceux
présents dans le système de développement et seront représentés par une LED rouge si nonprésent et vert si présent complété par la date de transfert dans le système et le code retour (cf.
Image 14 et 15). Cet affichage sera une table ABAP.
Image 13 Diagramme d’activité
Image 14 Diagramme d’état transition
16
DÉVELOPPEMENT ABAP
2.3
–
GUILLAUME ZACCHELLO
Analyse des besoins non fonctionnels
2.3.1 Ergonomie
L’affichage se fait via la fonction ALV de SAP.
L’ALV (SAP List Viewer) est un outil générique de SAP qui délivre des données sous forme
des tableaux (lignes et colonnes), avec des fonctions intégrées pour manipuler les sorties (tri
sur les nombres, tri sur l'ordre des colonnes, filtres des données, etc.) et une fonction d’export
le tableau (format CSV Excel).
Image 15 Démo ALV
2.3.2 Contrainte de normalisation des variables
Afin qu’un autre développeur puisse reprendre le code, il faut respecter les règles de
normalisation du code interne à CGI. Chaque type de variable à sa norme :
type
type de table
Local
Global
Structure
Table
Constantes
Field-symbol
Parameter input
Parameter output
Select option
Parameter
ty_*
ty_t_*
l_*
g_*
(l|g)s_*
(l|g)t_*
c_*
<fs_*>
pi_*
po_*
so_*
p_*
17
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
2.3.3 Normalisation du programme
Chaque programme doit aussi être normalisé sur le modèle suivant :
Image 16 Code source: normalization





Un cartouche de création/modification avec au moins l’auteur,
3 fichiers INCLUDE, un TOP où sont référencés tous les types et constantes que le
programme utilisera, un SEL pour tout ce qui est graphique (bouton, champs …) et un
FORM pour le programme qui utilise les données issues des autres INCLUDE,
Adapter les noms des INCLUDE avec le nom du programme,
START-OF-SELECTION est un événement qui se produit avant que les SELECTIONSCREEN ne se produisent (bouton, champs …),
PERFORM f_at_start_of_selection pointe sur le FORM.
2.3.4 Contrainte sur la méthode d’affichage de l’ALV
Il existe 2 méthodes afin d’afficher les données d’une table interne dans l’ALV :
Image 17 Code source: méthode d’affichage
18
DÉVELOPPEMENT ABAP
(1)
(2)
–
GUILLAUME ZACCHELLO
Cette méthode modifie l’ALV suivant la ligne en cour « sy-tabix »
Cette méthode utilise les pointeurs Field-Symbols, et en tant que telle, ne nécessite
pas de copie de données en mémoire, ce sont les curseurs dans la mémoire qui se
déplacent. Un MODIFY n’est pas nécessaire.
La solution (2) a de meilleurs résultats en matière de performance et de gestion de l’espace
mémoire. Elle a donc été choisie.
2.3.5 Contrainte nommage des tables et programmes
Sous SAP toutes les tables, programmes, fonctions créées par l’utilisateur doivent commencer
par Z. S’il n’est pas le cas SAP n’est plus responsable pour le support du programme, cela
permet de faire la différence entre des programmes sous SAP et ceux réalisés par les
utilisateurs.
19
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3 Rapport technique
3.1 L’environnement SAP
3.1.1 L’IDE SAP
L’IDE SAP est accessible via les codes de transaction SE38 et SE80. Le langage utilisé est
l’ABAP*
Image 18 Environnement de développement SAP
Quelques fonctionnalités utiles de l’IDE :
Permet de voir nos programmes externes inclus.
Permet d’exécuter le programme
Affiche l’aide en ligne SAP
Permet la mise en forme de l'agencement du code
Permet de tester le programme avant de l’exécuter
Permet de modifier le programme si celui-ci et en mode affichage
Permet de mettre un point d’arrêt d’exécution et de passer en mode débogage
20
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.1.2 Le dictionnaire de données
Le dictionnaire de données sert d'interface avec la base de données. Les tables du dictionnaire
de données sont une représentation des tables de la base de données. Les tables du
dictionnaire SAP sont incluses avec celles créées par les utilisateurs. La définition des
données se fait graphiquement, le code SQL est généré par l’interface graphique.
Une table dans le dictionnaire des données :
Image 19 Dictionnaire de données de ZOT_ALV
1. Table transparente : table contenant des données. Une table cluster est une table
regroupant plusieurs tables transparentes à des fins de visibilité,
2. Nom de la table,
3. Domaine : caractéristique d’une zone (char, num, longueur, table de valeur, …). Un
domaine ne peut pas être affiché en ABAP. Il faut lui attribuer un élément de donnée,
4. Précise si clé primaire,
5. Indique si l’élément de données peut être NULL,
6. L’élément de données permet d’associer à un domaine un sens applicatif (on lui
associe de la documentation, un domaine de valeurs …),
7. Le type du domaine : (CHAR, INT, FLOAT …),
8. Longueur maximum de l’élément de données,
9. La description littérale de l’élément de données.
Transactions utiles :
- La transaction SE11 permet d’accéder au dictionnaire de données et de créer/modifier des
tables,
- La transaction SE16 permet d’accéder aux données des tables transparentes,
- La transaction SM30 permet de remplir les tables.
21
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.1.3 Qu’est que le RFC ?
Une fonction RFC (Remote Function Call ) est un
appel à un module de fonction dans un système
différent de celui de l'appelant . La configuration
d’une connexion RFC entre 2 systèmes est possible
via la transaction SM59 lancée sur l’environnement
qui demande la connexion.
Image 20 Schema RFC
Toutes les fonctions ne sont pas accessibles à
distance (limite des possibilités d’appel à partir d’un
autre environnement). Pour vérifier lesquels sont autorisés, on peut les rechercher la fonction
via la transaction SE37. Si la case « Module accessible à distance » est cochée, elle peut être
appelée et donnera des informations sur son environnement.
Image 21 Une fonction accessible via RFC et une non accessible
Aussi certaines fonctions accessibles à distance ont besoin d’une connexion RFC avec un nom
d’utilisateur et mot de passe valides comme la fonction ‘RFC_READ_TABLE’ (permettant
de lire des tables sur un autre système) alors que d’autres n’ont besoin que du
TRACEROUTE (cf. 3.2.1) automatiquement créé lorsque on joint les environnements entre
eux comme la fonction ‘TMS_TM_GET_TRLIST’.
3.1.4 SAP-directories
Le SAP-directories (accessible via AL11)
contient les fichiers et dossiers du serveur
UNIX de SAP.
Image 22 Repertoires SAP sous UNIX
22
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.2 Conception
3.2.1 Environnement dans lequel le programme va être développé
Un serveur a été attribué ainsi qu’un login personnel, mot de passe et un environnement pour
développer le programme. Le programme devra être exportable.
Image 23 Connexion sur SAP
Le serveur ici est « noeyy4lj.noe.edf.fr », et l’environnement « DCD ».
Ce serveur appartient à EDF et le système utilisé est un environnement de développement où
l’on peut développer et faire des modifications sans affecter d’autres environnements comme
celui de production.
Afin de visualiser la configuration des environnements entre eux qui seront utilisés pour le
développement, on utilise le bouton TRACEROUTE dans STMS.
Image 24 TRACEROUTE de EDF
Sept Environnements sont présents. Ils sont préfixés par les lettres « DC » qui sont choisies
par le développeur et valables pour tous les autres environnements.
-
DCD : pour l’environnement de développement,
DCR : pour l’environnement de recette,
DCQ : pour l’environnement de qualité,
DCI : pour l’environnement d’intégration,
DCP : pour l’environnement de production,
DCC : pour l’environnement de correction,
DCF : pour l’environnement de formation.
Les TRACEROUTE entre plusieurs environnements sont créés par la transaction SM59, qui
nécessite une configuration de connexion RFC (cf. 3.1.3).
23
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
Image 25 User TMSADM et TRACEROUTE
Les 7 domaines sont présents. Ces connexions doivent être créées par l’utilisateur TMSADM
avec le mandant 000. Ces connexions RFC pourront être utilisées par toutes les fonctions SAP
qui ne requierent pas de connexion RFC particulières comme les fonctions commencent par
« TMS ».
3.2.2 Trouver les OT
Les OT se trouvent dans 2 endroits : les logs et les tables.
Les OT se trouvent dans les logs UNIX (CF
3.1.4) de chaque environnement, dans le
dossier /usr/sap/trans/<s-id>,
<s-id> étant l’environnement actuel.
Image 27 Le répertoire des logs des OT sur DCD
Image 26 Répertoire des OT de DCD
Image 28 Log de DCDK907336
24
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
Les OT se trouvent dans les tables E070 de chaque environnement. On peut accéder à toutes
les informations de celui-ci : date de création, libellé, auteur…
Image 29 Table e070v sur environnement DCD
Pour accéder à ces environnements depuis celui du développement, il est possible de faire
appel aux fonctions RFC (cf. 3.1.3). Les tables E070 ne renvoient pas le code retour. La table
TMSBUFFER sera utilisée pour récupérer ce code retour.
La table TMSBUFFER permet de montrer le code retour d’un OT dans SAP ainsi que la
présence des OT de son propre système sauf sur celui de développement car il ne possède pas
de code retour (c’est l’environnement de création des OT). La table ne renvoie pas la date de
création de l’OT. La table E070V sera utilisée pour la récupérer.
La table TMSBUFFER renvoie aussi la présence d’OT et le code retour des autres systèmes si
celui-ci renvoie un code retour non nul.
Exemple sur un OT dans notre environnement de développement :
Image 30 OT DCDK907838 dans TMSBUFFER
Sur l’image (cf. Image 27), on aperçoit six environnements. DCD n’est pas présent car
TMSBUFFER ne renvoie pas les environnements de développement.
MAXRC est le code retour. DCI, DCP, DCQ et DCR sont présents car le code retour est non
nul (il y a une valeur), alors que DCC et DCF ne renvoient rien : ils ne sont donc pas présents.
25
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.2.3 La fonction TMS_TM_GET_TRLIST
Afin d’extraire les OT nous allons utiliser 2 fonctions : l’une pour lire les OT dans les logs de
tous les environnements et l’autre pour lire les Tables (E070V et TMSBUFFER) dans tous les
environnements (CF 3.1.4).
La fonction permettant de lire et extraire les informations des logs des OT est
TMS_TM_GET_TRLIST.
Image 31 Code source: fonction TMS_TM_GET_TRLIST
Cette fonction a besoin pour fonctionner :
 d’un environnement dans iv_system : exemple 'DCQ' pour lire les logs des OT de
DCQ dans son environnement,
 iv_startdate
iv_enddate iv_starttime iv_endtime Respectivement une
date de début, une date de fin, une heure de début et une heure de fin, afin de lire les
logs compris entre la date de début et de fin et l’heure de début et de fin.
 iv_imports iv_exports doivent recevoir 'X' la valeur afin de pouvoir importer et
exporter les données dans des tables.
 irt_requests est une table que l’on exporte dans les autres environnements. Cette
table contient les OT présent dans notre environnement.
 et_tmstpalog est le nom de la table TMSTPALOG importée depuis un autre
environnement et que l’on va pouvoir utiliser. Cette table est une table de SAP qui
possède les caractéristiques suivantes :
26
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
Image 32 Table TMSTPALOG
Cette table retourne entre autre les OT, code de retour, libelle, date de création … dans les
logs de l’environnement iv_system en paramètre.
La fonction TMS_TM_GET_TRLIST utilise une connexion RFC afin de lire les logs des autres
environnements. Cette fonction fait partie d’un groupe de fonctions commençant par TMS et
elle utilise automatiquement toutes les connexions RFC créées par l’utilisateur TMSADM (cf.
3.2.1).
3.2.4 La fonction RFC_READ_TABLE
La fonction permet de lire et d’extraire les informations des tables des autres environnements.
Image 33 Code source: function RFC_READ_TABLE
27
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
Cette fonction a besoin pour fonctionner :
 Fournir une destination, remplacer XXX par le nom d’une connexion RFC.
 query_table est la table à exporter du système cible,
 Delimiter permet de mettre une valeur comme un espace entre chaque donnée
exploitée pour la table TAB512,
 no_data permet de mettre une valeur comme un espace pour une valeur NULL pour
la table TAB512,
 OPTIONS est exporté sur notre environnement et contient la table RFC_DB_OPT qui
importe la description des domaines de l’environnement cible,
 Fields permet d’importer dans l’environnement cible la table RFC_DB_FLD qui
contient les éléments de données que l’on souhaite importer dans TAB512,
 Data est la table qui est exportée, elle fait référence à la table TAB512 qui n’a qu’un
élément de donnée.
Image 34 la table TAB512
La table TAB512 ne possède qu’un seul élément de donnée appelé WA, similaire un tableau
de type CHAR. C’est dans cette structure que seront renvoyées les données extraites.
Pour extraire ces donnés il faudra traiter la longueur variable des éléments.
IMPORTANT : Pour fournir une destination à la fonction RFC_READ_TABLE, il faut un
nom de connexion RFC créée par un utilisateur autre que TMSADM. On ne peut pas utiliser
les connections RFC du TRACEROUTE.
3.2.5 Quel méthode choisir ?
Les 2 méthodes d’extraction seront choisies car elles ont des avantages et inconvénients :

La fonction TMS_TM_GET_TRLIST extrait toutes les données des logs des OT
suivant les connexions RFC du TRACEROUTE (créé par l’utilisateur TMSADM). Si
un des serveurs d’un environnement est hors ligne alors on ne peut lire les logs. Ce cas
peut arriver (cf. 4.2). De plus, certains environnements même en ligne ne seront
référencés que partiellement ! (cf. 4.2).

La fonction RFC_READ_TABLE extrait les données paramétrées des tables (on
souhaite récupérer les tables E070 et TMSBUFFER). Si un serveur est hors ligne alors
grâce à la table TMSBUFFER on peut récupérer au moins la disponibilité des OT les
plus récentes et leurs codes retour (cf. 4.2) car cette table référence tous les autres
environnements.
28
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.3 Paramétrage
3.3.1 Paramétrage des chemins RFC pour RFC_READ_TABLE
Pour utiliser la fonction RFC_READ_TABLE, il faut lui créer une connexion RFC avec un
utilisateur autre que TMSADM (le TRACEROUTE).
Deux utilisateurs ont été fournis par le client EDF afin de se connecter sur DCR et DCQ avec
le seul droit d’affichage.
DCI était sur un serveur hors ligne (cf. 4.4.2). Les autres systèmes comme celui de
production trop sensible n’ont pas été donnés.
La configuration d’une RFC (transaction sm59) requiert en plus d’un login et d’un mot de
passe, un nom, l’adresse du serveur de l’environnement (si cette adresse n’est pas précisée ,
l’environnement celui serveur actuel) et un mandant de connexion.
Image 35 Configuration RFC DCQ_OT
Pour l’environnement DCQ (cf. Image 36), la case serveur est non remplie car DCQ est sur le
serveur de DCD. Le nom de la connexion RFC est DCQ_OT et son mandant 600.
29
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.3.2 Création de la base de données
Afin d’afficher les environnements que l’on souhaite dans le rapport, une table est créée. Elle
se nomme ZOT_ALV.
Image 36 La table ZOT_ALV
Elle contient 4 éléments de données :
 Le mandant qui permet d’utiliser la table sur n’importe quel mandant,
 Le nom de la connexion RFC si elle existe,
 Le nom de l’environnement,
 La position que l’on souhaite afficher dans le rapport. L’environnement de
développement doit être affiché en 1ère position.
Les environnements que l’on souhaite voir sur le fichier Excel (cf. 2.1.2) sont DCD, DCR,
DCQ, DCI et DCP. Le remplissage de la table se fera comme-suit (cf. Image 38) :
Image 37 Donnée de la table ZOT_ALV
DCQ et DCR possèdent des connexions RFC qui pourront être utilisées par la fonction
RFC_READ_TABLE.
DCI et DCP n’en possèdent pas (cf. 3.3.1).
30
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.4 Le Code ABAP
3.4.1 Le programme principal
Image 38 Code source: programme principal
Le titre du programme est zprojet_transaction. La normalisation du programme est
respectée (cf. 2.3.3). Le cartouche est présent ainsi que les 3 fichiers inclus.
Le Z_AFFICHAGE_OT_SYSTEME_SEL est vide car il n’y a pas d’interface graphique comme un
bouton ou un formulaire.
31
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.5.2 Z_AFFICHAGE_OT_SYSTEME_TOP
Image 39 Code source: Z_AFFICHAGE_OT_SYSTEME_TOP
Dans le fichier TOP sont référencés les TYPE-POOLS équivalents aux INCLUDES pour utiliser
des bibliothèques. Il y a 4 types de tables avec chacune leur type de type de table qui sera
utilisé dans le fichier FORM.
Ces 4 types de tables sont :




qui sera affichée dans l’ALV : elle peut contenir jusqu’à 7 environnements,
ty_zot_alv est la table créée (cf. 3.3.2) : elle contient les environnements à afficher,
ty_tmsbuffer contient des éléments de données d’une partie de la table
TMSBUFFER utiles pour le programme.
ty_RFC_E070_data la table qui recevra les données de la fonction
RFC_READ_TABLE.
ty_e070V
32
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.5.3 Les déclarations
Image 40 Code source: Les déclarations
Dans le FROM, les variables sont déclarées au début et seront utilisées tout au long du
programme. Les variables lt_ (local table) sont des références à des types de tables situées
dans le TOP qui contiendront les tables. Les variables en lv_ (local variable) sont locales et
sont de type boolean. Les variables ls_ (local structure) servent à lire une table locale (lt_) sur
une ligne. Enfin les FIELD-SYMBOLS permettent d’afficher une table dans un ALV (cf.
2.3.4).
3.5.4 Les Sélections
Image 41 Code source: sélection
33
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
FORM permet de découper un programme afin de le rendre plus lisible comme une
procédure. L’appel du FORM Sql_e070v s’effecture par un PERFORM . Dans l’exemple, 3
valeurs en paramètres correspondant à 3 tables locales.
Pour lt_to_alv et lt_tmsbuffer : elles sont initialisées entièrement par les tables
ZOT_ALV et TMSBUFFER.
Pour lt_e070V, seules les données des OT pour notre environnement de développement sont
sélectionnées.
3.5.5 Découpage du programme
Image 42 Code principal : decoupage du programme
L’image (cf. Image 43) a un extrait de programme via
en annexe (cf. annexes p.46).
34
.
Le code complet est disponible
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
La table lt_zot_alv est parcourue (contient la listes des environnements), deux PERFORM
renvoient à des fonctions d’extraction de données (RFC_READ_TABLE et
TMS_TM_GET_TRLIST.
La table lt_e070V (les OT de l’environnement de développement) est parcourue, via
plusieurs PERFORM qui comparent ces OT avec ceux extraits via 3 PERFORM . Enfin l’ALV est
affiché avec le PERFORM f_report_e070V. Chacune des procédures (PERFORM ) fonctionne
indépendamment les unes des autres et peuvent être testées seules. Le résumé du découpage
de programme peut être vu par le diagramme d’activité (cf. Image 44)
Image 43 Diagramme d’activité
35
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.5.6 f_rfc_read_table_e070v
Image 44 Code source : fonction RFC_READ_TABLE
Le code source entier du PERFORM f_rfc_read_table_e070v est visible en entier à l’annexe
(cf. annexes p.54)
Sur l’extrait de code (cf. Image 45), la fonction lit la table TMSBUFFER via le chemin RFC
passé en destination « pi_ls_zot_alv-rfc » , élément de donnée RFC extrait de la table
ZOT-ALV.
La table lt_fields prend en paramètre les noms des éléments des données à extraire. Dans
l’exemple : l’OT (TRKORR), le code retour (MAXRC) et le nom de l’environnement
(SYSNAM).
La table lt_data reçoit les données extraites et les données sont ensuite recopiées dans la
table lt_tmsbuffer.
36
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.5.7 f_tms_tm_get_trlist_e070v
Image 45 Code source : fonction TMS_TM_GET_TRLIST
Le code source entier du PERFORM f_tms_tm_get_trlist_e070v est visible en entier à
l’annexe (cf. annexes p.55).
Cette fonction n’utilise pas de destination car celle-ci utilise celle créée par l’utilisateur
TMSADM (cf. 3.2.2).
u_tmssysnam est le système à exporter passé en paramètre,
iv_startdate permet de rechercher tous les OT dans la data commence par 2015,
iv_enddate prend en paramètre sy-datum qui est la date actuelle,
La table lt_log reçoit les informations extraites de cette fonction qui sont ajoutées à la table
lt_tmstpalog.
3.5.8 Affichage de l’ALV
Chaque donnée extraite est lue sur les OT de l’environnement de développement grâce aux
trois procédures PERFORM f_e070v_e070v (cf annexes p.53) PERFORM f_tmsbuffer_e070v
(cf. annexes p.53) et PERFORM f_rfc_read_table_e070v (cf annexes p.54).
La table lt_E70V est modifiée avec PERFORM f_modification_alv_e070V
L’ALV est généré à partir de la table lt_E070V via la procédure F_REPORT_E070 (cf.
annexes p.59) avec la méthode CALL METHOD cl_salv_table=>factory (cf. annexes p.60)
37
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.6 Résultats et perspectives
3.6.1 Examen des résultats obtenus par rapport aux objectifs initiaux.
Image 46 Une partie de l’affichage de l’ALV
On a bien les données des OT des 5 systèmes souhaités comme sur le fichier Excel (cf. 2.1.2)
avec la date de création et le code retour. Les données souhaitées sont bien présentes.
Il est aussi possible de rajouter les 2 autres environnements non présents DCC et DCF.
38
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
3.6.2 Suites possibles de développement.



Créer un fichier d’installation qui créera la base de données ZOT_ALV ainsi que les
connexions RFC afin d’éviter le paramétrage,
Créer une fonction qui permet de savoir si tous les environnements sont en ligne afin
d’utiliser que la méthode d’extraction des OT dans les logs pour gagner du temps
d’exécution,
Créer un tableau de bord permettant entre autres de sélectionner les OT par utilisateur,
par date de création …
39
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
4 Rapport d’activité
4.1 Mauvais départ
Avant d’utiliser les deux fonctions RFC_READ_TABLE et TMS_TM_GET_TRLIST, j’ai
commencé avec d’autres fonctions et méthodes qui fonctionnaient mal et m’ont ralenti, voici
en quelques unes :
4.1.1 Reprendre des programmes
J’ai essayé de reprendre et paramétrer des programmes qui avaient déjà été développés la
communauté SAP. Ces programmes permettaient d’afficher aussi dans un ALV les OT
disponibles par environnement. Mais après installation, soit ils ne fonctionnaient pas soit ne
remontaient tous les OT disponibles.
4.1.2 Les fichiers logiques
Pour chercher dans les logs avant d’avoir trouvé la fonction qui cherche les OT
automatiquement, j’ai cherché dans les LOGS en utilisant la fonction OPEN DSET et READ
FILE.
Image 47 fichiers logiques
Pour faire ceci, j’avais créé des fichiers logiques qui sont des fichiers dans des chemins
physiques qui ont juste quelques différences de chemins.
Pour créer ces fichiers (cf. Image 48), il faut utiliser la transaction FILE puis donner un titre
au chemin logique et lui adresser un chemin physique :
/usr/sap/trans/<SYSID>/log/<FILENAME>
Tous les logs des environnements se situent dans ce chemin.
<SYSID> est le nom de l’environnement et <FILENAME> les fichiers logs des OT
disponibles.
4.1.3 La table ALOG
La table ALOG référence tous les LOGS des OT de l’environnement mais celle-ci n’était pas
exploitable du fait qu’il n’y avait aucune logique de stockage des données dans la table.
40
DÉVELOPPEMENT ABAP
–
GUILLAUME ZACCHELLO
4.1.4 Vitesse d’exécution
L’algorithme de mon programme a été différent de ce qu’il est maintenant. Lorsque je l’avais
terminé il mettait 15 secondes contre 5 actuellement. Pour chaque extraction, chaque
comparaison et enfin pour l’affichage, je rebouclais sur les environnements (table ZOT_ALV)
et les OT (table E070V), j’ai changé pour que cela ne boucle plus.
4.2 Serveur DCI hors ligne
Quatorze jours avant la fin du stage, le serveur où était situé l’environnement DCI, était hors
ligne. La fonction TMS_TM_GET_TRLIST ne donnait pas les informations de DCI et seuls
quelques OT (5 – 10) de l’environnement DCQ étaient référencés (Pourquoi ?? peut être que
des logs des OT de DCQ étaient présents sur l’environnement DCI ?), bien que DCQ ne soit
pas sur le serveur de DCI.
C’est pour cette raison que j’ai développé la fonction RFC_READ_TABLE pour lire les
tables E070V sur DCQ et TMSBUFFER sur tous les systèmes pour avoir sur DCI la présence
de l’OT et le code retour, seule la date de création des OT manquait.
Le programme réalisé donne maintenant un maximum d’informations sur les OT même si un
des serveurs vient à être hors ligne.
4.3 Forum SCN
Afin de me renseigner sur les fonctions et les tables particulières dont j’avais besoin, j’ai été
actif sur le forum SAP appelé SCN (6-7 sujets créés). Les personnes consultantes de SAP du
monde entier répondent aux questions (en anglais) posées par la communauté.
Image 48 Question posée sur SCN
41