Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Générer du XML en ABAP dans SAP
Un billet de blog de FreeGeek

Le , par FreeGeek, Membre habitué
Voici un petit tuto qui va vous permettre, avec un outil standard, de générer du XML à partir de données traitées dans un programme en ABAP.

Dans ce tuto, je vais me servir d'un exemple assez classique lorsqu'on découvre le XML : le catalogue de CD.

Par la force des choses, je vous apprendrais, si vous ne savez pas déjà le faire, à créer un type de table et une structure avec la transaction SE11.

Structure du fichier XML

Création de la structure d'un CD

Pour commencer, nous allons créer la structure qui contiendra les données relatives à nos CD. Rendez vous dans la transaction se11 et tapez le nom de votre structure en face du champ "Data type" :


Création d'un type de données en SE11

En cliquant sur "Create", vous devriez obtenir cette pop-up :

Création d'une structure en SE11

Cliquez sur "Structure" et validez. Remplissez les champs de votre structure comme cela :


Structure d'un CD en SE11

Une fois les champs créés, faites ceci :

Enhancement Category

Cliquez sur "Cannot Be Enhanced" puis validez à l'aide du bouton "Copy" :


Cannot be enhanced

Une fois tout cela fait, n'oubliez pas de l'activer.

Création du type de table du catalogue

Deuxième étape obligatoire, créer notre catalogue de CD. Rien de plus simple, nous allons une nouvelle fois en SE11 :


Création d'un type de données en SE11

En cliquant sur "Create", vous devriez obtenir cette pop-up :


Création d'un type de table en SE11

Cliquez sur "Table type" et validez. Remplissez les champs comme ci-dessous puis activez :


Catalogue en SE11


Transformation des données en XML

Allez dans la transaction XSLT_TOOL ou STRANS. La transaction STRANS est en fait le nouveau nom donné à la transaction XSLT_TOOL. Cependant, XSLT_TOOL est toujours accessible.


La transaction XSLT_TOOL ou STRANS

Entrez le nom de votre transformation et cliquez sur "Create" :


Création d'une transformation

Une fois sur la fenêtre ci-dessus, remplissez les champs et validez. Vous devriez voir ceci :


Simple transformation

A ce moment, cliquez sur l'icône qui ressemble à une baguette magique. Attention toutefois à ne pas le confondre avec l'icône pour activer, qui lui ressemble à une allumette!

Si vous avez choisi le bon icône, vous êtes ici :

Simple transformation editor

Faites un clique droit sur "ROOT" et cliquez sur "Insert new root" :

Insert new root

Cette pop-up devrait s'afficher :

Root name

Remplissez le premier champ avec le nom que vous voulez donné à la balise racine de votre futur fichier XML. Le second champ doit contenir le nom du type de table que vous avez créé précédemment. Validez :

Editor root

Normalement une ligne apparaît sous "ROOT", avec un icône de table et les champs renseignés au dessus. Cliquez sur cette ligne et allez la glisser sur la partie droite de l'écran. Relâchez le clique lorsque vous vous trouvez sous "Simple Transformation". Vous devriez obtenir ceci :

Glissé déposé

Activez la transformation en vous servant de l'icône en forme d'allumette. Et voilà, vous avez créé votre première transformation!

Le programme ABAP


Voici le code source du programme qui vous permettra de tester votre transformation.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
************************************************************************ 
*   Report: Z_TEST_ABAP_XML                                            * 
*  Author: K.GRENECHE  (SAPDECOUVERTE # TUTO  ABAP)                    * 
*  Date  : 14/11/2013                                                  * 
************************************************************************ 
*                    Génère du XML avec XSLT_TOOL                      * 
*                                                                      * 
************************************************************************ 
*                       Modification  list                             * 
*----------------------------------------------------------------------* 
* No modif   Author       Date     Reason of the modification          * 
* V1.0     K.GRENECHE   14/11/13   Création                            * 
*----------------------------------------------------------------------* 
************************************************************************ 
REPORT  z_test_abap_xml. 
  
* Déclaration des variables locales 
DATA : ls_cd      TYPE ztest_xml_cd, 
       lt_catalog TYPE ztest_xml_catalog, 
       lw_xml     TYPE xstring. 
  
* Début ajout de données dans notre table interne 
ls_cd-title   = 'Empire Burlesque'. 
ls_cd-artist  = 'Bob Dylan'. 
ls_cd-country = 'USA'. 
ls_cd-company = 'Columbia'. 
ls_cd-price   = '10.90'. 
ls_cd-zyear   = '1985'. 
  
APPEND ls_cd TO lt_catalog. 
  
ls_cd-title   = 'Hide your heart'. 
ls_cd-artist  = 'Bonnie Tyler'. 
ls_cd-country = 'UK'. 
ls_cd-company = 'CBS Records'. 
ls_cd-price   = '9.90'. 
ls_cd-zyear   = '1988'. 
  
APPEND ls_cd TO lt_catalog. 
  
ls_cd-title   = 'Greatest Hits'. 
ls_cd-artist  = 'Dolly Parton'. 
ls_cd-country = 'USA'. 
ls_cd-company = 'RCA'. 
ls_cd-price   = '9.90'. 
ls_cd-zyear   = '1982'. 
  
APPEND ls_cd TO lt_catalog. 
  
ls_cd-title   = 'Still got the blues'. 
ls_cd-artist  = 'Gary Moore'. 
ls_cd-country = 'UK'. 
ls_cd-company = 'Virgin records'. 
ls_cd-price   = '10.20'. 
ls_cd-zyear   = '1990'. 
  
APPEND ls_cd TO lt_catalog. 
  
ls_cd-title   = 'Eros'. 
ls_cd-artist  = 'Eros Ramazzotti'. 
ls_cd-country = 'EU'. 
ls_cd-company = 'BMG'. 
ls_cd-price   = '9.90'. 
ls_cd-zyear   = '1997'. 
  
APPEND ls_cd TO lt_catalog. 
* Fin ajout de données dans notre table interne 
  
* Transformation de notre table interne en xml 
CALL TRANSFORMATION ztest_xml_catalog_cd 
SOURCE catalog = lt_catalog[] 
RESULT XML lw_xml. 
  
* Affichage du code XML produit 
CALL FUNCTION 'SCOL_TRACE_SHOW_XML' 
  EXPORTING 
    xdoc = lw_xml.
Vous remarquerez qu'à la fin de celui-ci se trouve un appel à "SCOL_TRACE_SHOW_XML". Il sert à vous donner un aperçut du XML produit :


Aperçut XML


Remarque : Sur EHP7, "SCOL_TRACE_SHOW_XML" n'existe plus. Utilisez cl_abap_browser=>show_xml à la place.

Comme vous le constatez, le XML produit est propre et bien organisé. J'espère que ce tutoriel vous a semblé simple et clair. Si tel n'était pas le cas : n'hésitez pas à poser vos questions en commentaire

A bientôt sur SAPDécouverte!

ABAPement.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Offres d'emploi IT
Chef de projet technique H/F
Safran - Ile de France - Melun (77000)
Architecte systèmes externes TP400 H/F
Safran - Ile de France - Moissy-Cramayel (77550)
Ingénieur produit (Landing gear) H/F
Safran - Ile de France - MASSY Hussenot

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique SAP : doc malkovich -