Quelquepart

Blog d'un développeur

Vous êtes ici : Accueil>Mots clés>programme

programme

Mise à jour d'automne

Rédigé par Sébastien Hermann dans Mise à jour - Aucun commentaire

Le temps passe, et les différentes demandes de mes clients m'ont conduit à modifier certains des programmes publiés ici. Comme d'habitude, je vous livre donc une mise à jour de ces évolutions.

La principale mise à jour concerne ZAUTODOC, le générateur de doc technique BW, qui passe de la version 3.1 à la version 3.4 et accueille de nouveaux objets, dont les queries BEx !

  • Les queries BEx et les WAD sont maintenant documentées (très légèrement pour les WAD)
  • Les process chain, les Open Hub, les infosets BW et les includes abap (dans les routines) sont maintenant documentés
  • Si un objet BW (DSO, cube...) contient une documentation dans le système, le programme essaie de la récupérer pour l'inclure dans la documentation générée. Ainsi il devient possible d'ajouter de l'intelligence dans cette documentation automatique en uploadant sur l'objet principal d'un flux votre propre documentation.
  • Extraction du code des user-exit ECC si un include/form par datasource existe
  • Ajout d'un paragraphe à la fin du document qui indique comment regénérer cette documentation
  • Gestion des groupes de règles dans les transformations
  • Nombreuses autres modifications mineures

A noter : la version 1.4 de la classe CL_WORD est nécessaire. Elle est incluse dans le package.

En cas de mise à jour depuis une précédente version, pensez à bien récupérer votre personnalisation (variable cs_custo au début du code)

On continue avec ZTOAD - Requêteur Open SQL qui passe de la version 3.0 à la version 4.0 :

  • Gestion d'onglets : vos requêtes et leurs résultats peuvent être gardées en mémoire dans des onglets séparés. Passez ainsi de l'une a l'autre en 1 clic.
  • Import/export des requêtes sauvegardées
  • Gestion du "case" dans la nouvelle syntaxe abap sql

ZSPRO, la boite à outils passe de la version 2.3 à la version 2.5.1 :

  • Gestion de styles sur l'affichage de la documentation ABAP
  • Affichage d'une image de fond dans la partie droite (le logo du programme) pour permettre une plus forte identification de l'application
  • Divers corrections et ajouts mineurs

ZRSPC, le mini ordonanceur passe de la version 1.7.1 à la version 1.10 :

  • CHANGE_DTP_SEL permet de modifier les critères de sélection d'un DTP
  • TRIG_IP, TRIG_DTP et TRIG_CHAIN ont maintenant la possibilité de ne pas lancer plus de X chaines en parallèle
  • Affichage de la documentation du programme sur l'écran de sélection
  • Le mode test affiche désormais l'ALV d'exécution s'il n'y a pas d'erreur (ce qui permt d'interragir avec les différents objets)
  • Diverses corrections mineures

ZAL11, l'explorateur de fichiers subit une mise à jour mineur pour corriger un DUMP potentiel.

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

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

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 - Aucun commentaire

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.

Mise à jour estivale #2

Rédigé par Sébastien Hermann dans Mise à jour - 1 commentaire

Après ZTOAD qui méritait bien un post pour lui tout seul, voici une petite mise à jour de mes différentes réalisations.

On commence par ZAL11, l'explorateur de fichiers, qui passe à la version 2.3 :

  • Ajout d'un bouton "grid options" pour gérer filtres, tris et autres options sur la liste des fichiers du serveur
  • Ajout d'une entrée de menu contextuel "Ouvrir avec" pour choisir le programme avec lequel ouvrir le fichier distant/local
  • Affichage d'un message si le fichier ne peut pas etre ouvert
  • Affichage du nombre de fichiers dans le répertoire en cours

On continue avec ZSPRO, la boite à outils, qui passe aussi à la version 2.3 :

  • Prise en charge des noeuds de type "classe d'objet abap"
  • Ajout de l'import XML : permet d'importer une arborescence exporté avec le bouton "export XML. Cela permet de déployer rapidement une arborescence sur plusieurs environnement, sans avoir gérer un transport.
  • Correction de la gestion des liens dans l'affichage de l'aide
  • Nettoyage du code

ZLISTCUBE a quant à lui eu son lot de correction et passe à la version 1.2.1 :

  • Interruption du programme quand on annule un des popup de sélection après lancement du programme
  • Ajout d'un point de modification du standard pour remplacement du LISTCUBE
  • Ajout d'une procédure de modification du standard pour correction du bug qui empêche les valeurs de l'écran de sélection de s'afficher lors de la réouverture du popup
  • Ajout d'un bouton pour simplement connaitre le nombre d'entrées correspondant aux critères
  • Lors de l'ouverture du ZLISTCUBE sur une cible, les dernières valeurs récentes de filtre sont automatiquement rappelées
  • Correction de bugs divers

ZRSPC, le mini ordonanceur passe en version 1.7.1 et se voit ajouter plusieurs processus :

  • CHANGE_IP_MODE : permet de modifier le mode de chargement d'un infopackage (full/delta/init)
  • CHANGE_IP_SEL : permet de modifier les sélections d'un infopackage
  • DBSTAT : permet de générer statistique et/ou index sur une table (remplace INDEX)
  • WAIT permet maintenant d'attendre une certaine heure et plus seulement un nombre de seconde données
  • STOP peut maintenant être annulé depuis la visualisation du log en cours
  • Ajout de l'affichage du nombre de lignes sélectionnées lors du clic sur le bouton "SUM"
  • Correction de quelques bugs (entrées vides en ST13, plantage si process entré en minuscule)
  • Compression du mail avant envoi (division par 4 de sa taille)
  • Envoi de mail à intervalle régulier pour les longs traitements (nécessite l'implémentation d'une fonction dont le code est donné en fin de programme)
C'est tout pour aujourd'hui !

Mise à jour de ZTOAD

Rédigé par Sébastien Hermann dans Mise à jour - 1 commentaire

Derrière ce titre un peu banal se cache en fait une refonte complète de l'application ZTOAD, que j'aurai du pour l'occasion appeler ZTOAD2 ou même 3 tant les différences sont importantes.

Adieu donc cette vieille version 1.2 austère et un peu récalcitrante. Place à la version 3.0 !

Le ZTOAD nouveau se présente donc sous forme d'une transaction à écran unique :

  • A gauche vos requêtes sauvegardées et votre historique de requête exécutées.
  • Au milieu votre éditeur de requête, qui accepte toute forme de select, mais également insert, delete, update...
  • A droite un explorateur de DDIC qui vous affiche les champs des tables présentes dans votre requête.
  • Et en bas une grille ALV affichant les résultats de la requête exécutée

L'aide ABAP est disponible lors de la saisie de requête, ainsi que l'aide intégrée du programme. Vous pouvez saisir plusieurs requêtes et choisir celle a exécuter sans avoir a effacer les autres. Vous pouvez partager vos requêtes avec les autres utilisateurs.

A noter : vous pouvez définir finement les autorisations par utilisateur pour chaque type de requête (SELECT, INSERT, UPDATE, DELETE). A la manière initiée dans ZAL11, cette gestion est simple et accessible au début du programme : Vous pouvez désactiver certaines commandes en quelques secondes sans avoir à comprendre les méandres du code.

Le lien de téléchargement est disponible sur la fiche principale de l’outil : ZTOAD - Requêteur Open SQL

Cette nouvelle version utilise une table pour stocker les requêtes, il faudra donc utiliser l'extension SAPLINK de gestion de tables pour pouvoir l'installer.