Quelquepart

Blog d'un développeur ABAP

Vous êtes ici : Accueil>Application

Application

ZAUTODOC : Documentation technique BW automatique !

Rédigé par Sébastien Hermann dans Application -

Dans un passé fort lointain, je me suis retrouvé chez un client qui avait la phobie du black out. Il craignait par dessus tout que l'ensemble de ses serveurs soit détruits, backup compris. Aussi souhaitait-il une documentation papier complète de chaque système. BW n’échappant pas à la règle, le client souhaitait une documentation de chaque objet et de chaque flux...

C'est à cette époque que j'ai décidé d'automatiser le tout, et ZAUTODOC est né. Ce programme va lire dans la base de données toutes les informations relatives à un flux ou un objet afin de le retranscrire dans Word.

Si la première version générait du HTML (le docx n'existait pas encore... c'est dire si le programme est vieux !), le programme a fait beaucoup d'émules et a été utilisé dans de nombreux projets. Je l'ai même retrouvé récemment chez un client, taggé au nom d'une SSII sans scrupule dont je tairais le nom.

Depuis la version originale de 2006, ZAUTODOC a bien évolué. Enrichi par plusieurs développeurs talentueux puis livré aux aléas du temps, je l'ai entièrement réécrit récemment afin qu'il génère un DOCX directement (grâce a la classe CL_WORD).

Son utilisation est simple : Vous choisissez un objet (DSO, Cube, InfoObjet, mais aussi multiprovider ou même WORKBOOK) et le programme va créer un fichier Word contenant l'objet et son flux d'alimentation (une option vous permet de remonter l'intégralité du flux jusqu'à arriver a des systèmes hors BW). Les routines abap et les formules sont également remontées dans le fichier

Le document contient également un diagramme "data flow" du flux, ainsi que la liste des process chain utilisées. Les DTP et IP peuvent également y être ajoutés. Enfin le programme gère le traitement en masse afin de générer 1 fichier par objet (cube, dso...). Les flux 7, mais aussi les vieillissants flux 3 sont pris en charge. Le programme peut très facilement être personnalisé : au tout début du code, vous trouverez tous les points de paramétrage dans une structure cs_custo afin de définir vos préférences projets.

Le seul travail qu'il vous reste à faire est de créer le template DOTX aux couleurs de votre projet afin de personnaliser votre documentation technique !

Un template et une image de couverture de démo ont été ajoutés dans ZIP, n'oubliez pas d'en indiquer le chemin dans le programme avant de l'exécuter. CL_WORD en version 1.2 a également été ajouté. C'est la version minimale nécessaire pour ZAUTODOC.

SAP : Générer un document Word DOCX en ABAP

Rédigé par Sébastien Hermann dans Application -

Le mois dernier je vous ai présenté ma classe d'abstraction pour faire communiquer SAP et Word en utilisant les liens OLE. Bien que j'adore cette méthode pleine de poésie, ce n'est pas très rapide ni pratique pour générer de gros ou nombreux documents. J'ai donc du réfléchir à une autre méthode : créer des fichiers DOCX directement sans utiliser Microsoft.

Afin de pouvoir transformer rapidement mes différents projets clients utilisant l'ancienne classe, j'en ai repris l'interface : les méthodes portent le même nom et utilisent les mêmes paramètres (autant que possible)

Je vous livre donc cette nouvelle classe d'abstraction qui permet de générer un fichier DOCX directement en ABAP. Contrairement aux différents projets balbutiants et aux tutos que j'ai pu voir sur le net, ici la prise en main est ultra simple : un document "hello world" se génère en quelques lignes !

Sont gérés par la classe :

  • Création de document vierge ou via template (docx/docm/dotx/dotm)
  • Écriture de texte avec ou sans style (style de paragraphe et/ou de police)
  • Option bold, italique, souligné, barré, indice, exposant, petite majuscules, choix de police et taille, couleur, surlignage, espacement de caractères
  • Gestion de l'alignement, de l'indentation, du retrait, des espaces avant et après le paragraphe, de l'interligne, des bordures de paragraphe et couleur de fond
  • Saut de ligne, de page, de section et section continue
  • Écriture de tableau avec ou sans style de tableau (et possibilité de définir des option de formatage par cellule : gras, couleur...)
  • Écriture d’entête/pied de page simples
  • Gestion de l'orientation (portrait/paysage) et des bordures de page
  • Insertion d'image
  • Insertion de note de bas de page ou de fin de document
  • Insertion de commentaires
  • Insertion de dessin (canvas)
  • Insertion de table des matières
  • Insertion de libellés numérotés (figure, table...)
  • Insertion de table de libellés (figures, tables...)
  • Insertion de propriété de document et de champs personnalisés (custom fields)
  • Mise à jour des propriétés de document
  • Création de style (caractère, paragraphe)
  • Prise en charge des images/templates dans le SAP Web Repository (SAPWR via la stransaction SMW0)
  • Pour les utilisateurs avancées ayant des besoins non gérés, possibilité d'inclure un fragment XML de votre composition dans le document en cours

Pour le téléchargement, je livre un programme de démo de la classe qui montre comment l'utiliser. Le zip contient :

  • Le package NUGG avec programme de démo et classe dans un "include" séparé
  • Un template word et 3 images utilisés par le programme démo
  • Un fichier TXT contenant la classe pour ceux qui veulent jeter un oeil au code sans saplink

Prochainement, un cas d'usage sur BW...

Faire communiquer SAP et MS WORD grâce à OLE

Rédigé par Sébastien Hermann dans Application -

Cela fait des années que je pratique cette méthode de communication, pour des petites "bidouilles" entre SAP et Microsoft. C'est rapide et ludique (j'adore voir Word se remplir tout seul, c'est "magique", un peu comme quand je regarde un piano automatique dont les touches s'enfoncent seules lorsqu'il joue).

Enfin rapide... une fois qu'on a réussi a trouver les bonnes commandes ! Car c'est assez galère à programmer :

  • commande obscure
  • pas ou peu de documentation ou d'exemple
  • de nombreuses questions sur le net, mais les réponses sont rares

Cette fois j'ai eu un gros besoin. Je devais générer un document complet, sous word, à partir de tonnes de données SAP. Prenant mon courage à 2 mains, j'ai de nouveau déguainé OLE, et pour que ca soit réutilisable, j'en ai fait une classe d'abstraction.

En utilisant ma classe, fini la galère, vous avez juste a l'inclure en début de votre programme, et ensuite de simples appels aux méthod write_text ou write_table vont vous permettre de remplir votre document... magiquement !

Sont gérés par la classe :

  • Création de document vierge ou via template dotx
  • Ecriture de texte avec ou sans style (style de paragraphe et/ou de police)
  • Option bold, italique, souligné, choix de police et taille, couleur
  • Saut de ligne, de page, de section et section continue
  • Ecriture de tableau avec ou sans style de tableau (et possibilité de définir des option de formatage par cellule : gras, couleur...)
  • Note de bas de page
  • Ecriture d'entete/pied de page simples
  • Gestion de l'orientation (portrait/paysage)
  • Insertion d'image
  • Insertion de dessin (canvas)
  • Insertion de table des matières
  • Insertion de champs personnalisés (custom fields)
  • Mise a jour du titre de la fenetre word
  • Sauvegarde du document et fermeture de word

A l'usage, je me suis malgré tout rendu compte que la génération était assez longue (5 à 10 minutes pour un document de 50 pages). Ce sont les tableaux qui sont particulièrement lents.

Et donc finalement j'ai du changer de méthode pour mon projet, mais je publie malgré tout cette classe car elle est pleinement fonctionnelle, et pourra toujours vous servir de "how to" sur vos petits besoins OLE :)

Pour le téléchargement, je livre un programme de "test" de la classe qui montre comment l'utiliser. Le zip contient également un template, et quelques images qui sont utilisées par le programme test.

ZBACKUP : Import / Export de tables

Rédigé par Sébastien Hermann dans Application -

Avant d'effectuer une opération critique sur une cible, il est parfois bon de faire un backup de son contenu, juste "au cas ou"

Aujourd'hui je vous propose un petit programme afin de pouvoir faire des copies de sauvegarde de vos contenus de tables, sous forme de fichier local ou sur le serveur SAP. La version locale est destiné a copier des tables de taille raisonable (limité par la RAM du serveur) alors que la copie sur serveur n'est pas limitée (testé sur une table de 100 million de lignes)

Vous avez ensuite la possibilité de restaurer le contenu d'une table sauvegardé en rechargeant le fichier.

A noter : n’oubliez pas que vous aurez besoin de SAPLINK pour installer le programme.

ZRSPC : Mini ordonnanceur BW par fichier plat

Rédigé par Sébastien Hermann dans Application -

SAP a eu la bonne idée de fournir un ordonanceur avec sa solution BI, c'est le concept de Process chain, accessible via la transaction RSPC.

Si la solution technique est très efficace (de nombreuses sociétés lui font confiance pour la gestion de leur nuit applicative), en revanche l'interface est assez désastreuse : peu ergonomique, très lente, incomplète...

Sur BW il n'est pas rare de devoir planifier des actions manuelles de chargement, que ce soit pour un déploiement ou bien une initialisation de données à refaire. L'usage d'une process chain est alors recommandé mais ne peut couvrir 100% des besoins car certains processus essentiels sont absents, comme par exemple la suppression de flag d'initialisation. Cela oblige à panacher entre process chain et action manuelle (donc risque d'erreur).

Pour palier ces manques j'ai créé un petit programme : ZRSPC. Il permet de planifier une suite d'opérations qui sera réalisée automatiquement, de la même manière que le ferait le lancement d'une process chain.

L'intéret est d'une part d'avoir une gestion des actions par fichier, ce qui permet une plus grande réactivité que lorsque l'on doit gérer le transport d'une process chain. D'autre part le programme gère certaines actions non prises en charge par RSPC, comme par exemple la suppression des données non utilisées dans les dimensions d'un cube ou la suppression de flag delta.

Un rapport d'exécution permet de suivre l'avancement des chargements en temps réel. Un email peut être envoyé automatiquement à la fin du traitement.

Voici la liste des processus gérés actuellement par le programme :

  • Suppression complète ou sélective d'un cube ou d'un DSO
  • Suppression d'un flag d'initialisation de chargement delta
  • Lancement d'un IP
  • Chargement des cibles depuis la PSA
  • Lancement d'un DTP (option pour lancer un DTP init sans transfert de données)
  • Lancement d'une process chain
  • Activation d'un DSO
  • Suppression et création d'index (cube)
  • Suppression des données inutilisées dans les dimensions d'un cube
  • Suppression des données inutilisées dans un info objet
  • Lancement d'un programme ABAP
  • Faire une pause
  • Interrompre le traitement

La structure du programme est assez souple pour permettre de gérer tout type de processus donc n'hésitez pas à le compléter des votres !

A noter : n’oubliez pas que vous aurez besoin de SAPLINK pour installer le programme.