Cure de rajeunissement pour AL11

Le travail sur un datawarehouse nous confronte régulièrement à des injections de fichier. Et sur SAP, nous ne sommes pas gâté niveau outils…
J’entendais souvent mes collègues râler à propos de la transaction AL11, la seule chose dont nous disposons en standard pour naviguer sur le serveur SAP.

J’ai parcouru la toile à la recherche d’une solution de remplacement mais ne fut pas convaincu par ce que j’y ai trouvé, aussi j’ai pris mon courage (et mon clavier) à deux mains afin de réaliser ma propre solution : plus complète, plus lisible et avec l’ergonomie qui me sied (mais je ne crache pas dans leur soupe, j’ai d’ailleurs repris leur manière de déterminer l’icone relatif a chaque type de fichier).

ZAL11 display local and server file explorer

ZAL11 display local and server file explorer

Entièrement graphique, le programme “ZAL11″ (tout simplement ;-) ) vous permettra de naviguer sur le serveur SAP, mais également :

  • D’ouvrir les fichiers avec votre application par défaut sur votre PC (excel pour les CSV par exemple)
  • D’ouvrir les fichiers avec un éditeur de texte sur votre PC
  • De télécharger ou télédécharger des fichiers
  • De gérer les fichiers/répertoires du serveur (ajout, copie, déplacement, renommage)
  • De compresser (tar+bz2) ou décompresser (zip, tar, gz, bz2) des fichiers et répertoires sur le serveur
  • De copier dans le presse-papier le chemin d’un fichier sur le serveur, ou d’accéder directement au répertoire d’un chemin contenu dans le presse-papier.

La gestion des raccourcis serveur de AL11 est conservée (et débuggée ;-) )
Vu qu’il s’agit de manipulation sur le serveur, chaque action demande une confirmation via un popup qui récapitule ce qui est en train d’être fait.

ZAL11 File and folder context menu

ZAL11 File and folder context menu

Le code a été écrit dans une optique de sécurité, de maintenabilité et de respect des normes de développement usuels. Il est entièrement documenté en anglais (25% de commentaires ajoutés par rapport au code brut).
La principale “entorse” aux règles est que le code est fourni dans un seul pavé de 3500 lignes au lieu d’être découpé en includes (top, class, pbo, pai, form). C’est volontaire afin de n’avoir qu’un seul code source à fournir. Néanmoins chaque partie est clairement délimitée et il ne devrait pas falloir plus d’une minute à un développeur pour recréer les includes nécessaires. Pour la même raison de simplicité de partage, aucune classe de message n’a été créée.

Télécharger ZAL11 (compatible ECC) (Si vous n’arrivez pas a télécharger le fichier : click droit puis enregistrer la cible sous…)

Tags: , , , , , ,

Afficher un ALV objet sans créer d’écran (screen painter)

Lassé de créer un écran ne contenant qu’un custom control, avec PBO et PAI rachitiques uniquement pour afficher votre grid ALV objet ? La classe cl_gui_container contient nativement des attributs qui permettent de s’en passer ! Encore faut-il le savoir, ce qui est maintenant votre cas ;-)
En effet, au lieu de créer tout d’abord un objet container puis d’indiquer cet objet en parent de l’objet alv, utilisez directement cl_gui_container=>screen0 comme parent pour votre ALV !

PROGRAM test.
DATA : o_alv      TYPE REF TO cl_gui_alv_grid,
       t_sflight  TYPE TABLE OF sflight.

* Definition d'un écran de sélection vide
SELECTION-SCREEN : BEGIN OF SCREEN 1001,
                   END OF SCREEN 1001.

* Remplissage de la table de données pour l'ALV
SELECT * FROM sflight INTO TABLE t_sflight.

* Creation de l'objet alv directement rattaché au premier screen
CREATE OBJECT o_alv
  EXPORTING
    i_parent = cl_gui_container=>screen0.

* Passage des données a l'ALV
CALL METHOD o_alv->set_table_for_first_display
  EXPORTING
    i_structure_name = 'SFLIGHT'
  CHANGING
    it_outtab        = t_sflight.

* Affichage de l'écran, l'ALV apparait !
CALL SELECTION-SCREEN 1001.

Cette astuce améliore au passage la portabilité de votre code (pas de screen/status/title à gérer).

Tags: , , , ,

Astuce Search-help standard SAP

Pour accéder rapidement à une liste de valeur pour une aide à la recherche, il est possible d’utiliser une syntaxe particulière directement dans le champ.
Par exemple sur l’écran d’accueil de SU01, dans le champs User, saisir =…seb puis entrée affichera la liste de tous les utilisateurs dont le prénom commence par “seb”.

La syntaxe est la suivante :

  • Commencer par =
  • Ajouter autant de points que la position du champ de recherche a remplir dans le match code
  • Saisir le texte recherché
  • Appuyer sur entrée

Dans l’exemple “=…seb”, les 3 points indiquent d’utiliser le 3e champ, donc le prénom

Cette astuce fonctionne avec la plupart des champs standards SAP. Il est également possible de faire une recherche sur plusieurs champs en les enchainant. =…seb.dir pour rechercher tous les “seb*” du département “dir*”

Tags: ,

Rendre invisible une fenêtre SAPGUI (un mode)

Devenez le Majax de l’ABAP grâce à la fonction SAPGUI_SET_PROPERTY
En effet cette fonction du SAPGUI permet de modifier les propriétés de ce dernier, comme par exemple l’affichage des fenêtres SAP !

CALL FUNCTION 'SAPGUI_SET_PROPERTY'
     DESTINATION 'SAPGUI'
     EXPORTING PROPERTY   = 'VISIBLE'
               VALUE = ' '.

Par ce simple appel votre fenêtre disparait complètement. Heureusement l’opération n’est pas irréversible :

CALL FUNCTION 'SAPGUI_SET_PROPERTY'
     DESTINATION 'SAPGUI'
     EXPORTING PROPERTY   = 'VISIBLE'
               VALUE = 'X'.

vous permettra de faire réapparaitre la fenêtre disparue.

En revanche, les usages productifs de cette fonction semblent assez restreint…
On peut imaginer s’en servir lors de lien OLE avec Excel ou Word (création dynamique de document sur le poste utilisateur)
Si vous trouvez un autre usage ou que vous arrivez à avoir des informations sur les autres propriétés modifiables du SAPGUI par cette fonction, n’hésitez pas a laisser un commentaire.

Tags: ,

ZTOAD – Requêteur Open SQL – mise à jour

Petite mise a jour de mon requêteur open SQL, nommé ZTOAD :
- Correction d’un bug lorsque le nom des champs était trop long
- Affichage du nom technique du champs dans l’entête de colonne ALV si aucun libellé n’est trouvé. (ca évite les colonnes sans libellé)
- Ajout d’une mesure du temps d’exécution de la requête (affiché dans l’entête)

Télécharger ZTOAD (compatible 4.7+)

La présentation complète se trouve ici

Tags: , , , , ,