Quelquepart

Blog d'un développeur ABAP

Vous êtes ici : Accueil

Envoyer des emails depuis SAP BW (2/2) : Process chain

Rédigé par Sébastien Hermann dans Général - aucun commentaire

Nous avons vu comment configurer le serveur SAP dans un précédent billet, il reste à planifier l'envoi d'alertes dans nos process chain.

Dans la transaction RSPC, vous pouvez ajouter un message pour chaque type de processus, par exemple sur le processus de lancement.

Faites un clic droit sur le processus et sélectionner "Créer message"

Un popup de sélection de variante apparait. Entrer un nouveau nom puis cliquer sur le bouton "Créer".

Un nouveau popup vous demande de saisir un libellé pour ce message. Saisissez le avec précaution. En effet ce libellé sera le SUJET de l'email envoyé par le message.

Vous arrivez alors sur le panneau de gestion du nouveau message. Le bouton "Editer document" permet de saisir le corps du message, le bouton "Gérer liste réception." permet de définir les destinataires.

Valider et sauvegarder. Une fois de retour sur la process chain, le message est affiché directement dans le rectangle du processus, et un clic droit sur ce processus vous affiche de nouvelles options "Gérer message" et "Supprimer message".

Envoyer des emails depuis SAP BW (1/2) : paramétrage du serveur

Rédigé par Sébastien Hermann dans Général - aucun commentaire

Sur BW, il est intéressant de pouvoir envoyer des alertes par email en cas d'erreur dans les chargements nocturnes (process chain). Si sur SAP R/3 il peut être intéressant d'utiliser le système d'alerte de SAP, ce n'est pas pertinent pour BW, les utilisateurs ne se connectant pas directement en transactionnel, mais soit via Excel, soit via le portail web donc il ne serait pas aisé pour eux de souscrire aux alertes.

Chez un client sans administrateur SAP dédié, j'ai du paramétrer le serveur pour qu'il gère l'envoi d'e-mails vers une boite générique, des règles de redirection étant paramétrées sur cette boite pour "arroser" l'équipe technique, ainsi que quelques key-users.

Première étape du paramétrage : transaction SCOT

Si vous n'arrivez pas sur l'écran d'état du système, aller dans le menu Vue > Etat du système (ou appuyer sur F5).
Une fois sur l'écran d'état du système, double cliquer sur la ligne SMTP (après avoir déplié le noeud INT).

Renseigner les champs "Hôte mail" et "Port mail" avec les données du serveur de messagerie de l'entreprise. Cocher la case "Noeuds opérationnels"
Cliquer sur le bouton "paramétrer" de la ligne "Internet"

Renseigner la plage d'adresses email autorisées, ou * pour autoriser toute adresse puis valider les écrans.

Vous pouvez maintenant faire un test de routage :
Menu Utilitaires > Test de routage (ou CTRL F10)

Renseigner le type d'adresse INT et indiquer un email. Appuyer sur ENTREE pour valider et lancer le test de routage. Si tout se passe bien, vous verrez apparaitre sous vos informations le noeud SMTP ainsi que l'adresse mail que vous avez indiqué.

Deuxième étape, il vous faut activer le service SMTP de SAPConnect via la transaction SICF Si le service n'est pas activé, il apparaitra grisé dans la liste des services. Clic droit sur SAPconnect puis choisir l'option "Activave SMTP Host"

Un message de succès apparait et la ligne devient noire. Si le service est déjà actif, cette même opération fera apparaitre le message d'erreur "Service has already been actively saved"

Troisième étape, il faut définir une adresse email pour son User SAP via la transaction SU01

A partir de maintenant, il doit être possible d'envoyer un email.
Pour le vérifier il existe de multiples manières. La plus simple est de passer par la Business workplace SAPOffice : transaction SO01.

Créer un nouveau message en indiquant un titre, un contenu, et un destinataire de type "Adresse internet", puis cliquer sur "Envoyer"

Le message doit être maintenant en attente dans la file d'envoi. Pour le faire sortir de SAP, il faut aller dans la transaction SOST. Le message apparait bien en jaune : il est prêt, en attente d'envoi.

Pour l'envoyer, Aller dans le menu Utilitaires > Lancer processus d'envoi (ou CTRL F7)

Une liste des messages envoyés apparait. Vous pouvez double cliquer sur une ligne pour voir le détail du routage.

Si tout s'est bien passé, le message est passé en vert ou en gris. En cas de problème il sera passé en rouge. Vous pouvez cliquer sur le nombre de la dernière colonne (Msg) pour avoir le texte d'erreur (ou refaire un test et analyser le détail du routage lors de l'envoi).
En cas d'erreur il est probable qu'il faille se tourner du coté de l'administration du serveur de messagerie pour qu'il accepte d'envoyer les messages en provenance du serveur SAP (possible blocage total ou internet, auquel cas il sera possible de faire un test sur sa messagerie d'entreprise mais pas sur un webmail).

Une fois le test passé avec succès, il ne reste plus qu'a paramétrer les process chain, cela fera l'objet d'un prochain billet.

Quelques grammes de GuiXT dans un monde de brutes...

Rédigé par Sébastien Hermann dans Général - aucun commentaire

La plupart des gens que je connais utilisent des couleurs distinctes pour différencier les environnements SAP (développement/recette/production).

Personnellement je ne suis pas adepte de cette solution. Quel faire quand on a 7 serveurs de production, 2 pre-prod, 2 recettes, 2 dev ? (fréquent en phase de montée de version)

Heureusement GuiXT vient au secours de tous les daltoniens pour les sauver d'erreurs aux conséquences incalculables ( oups, je viens de lancer l'impression de 30000 factures... en production... bon, je vide mon bureau de suite ? ). Grâce à une simple commande GuiXT, vous pouvez préfixer toutes vos fenêtres SAP par le trigramme du serveur. Voici comment faire :

  1. Activer GuiXT
    Cocher l'option "Activer GuiXT" dans les options du sapgui
  2. La fenêtre de GuiXT s'ouvre, cliquer sur le bouton "Profile"
  3. La fenêtre d'options apparaît, renseigner un répertoire ou vous souhaitez placer les scripts (C:guixt par exemple). Attention, vous devrez créer manuellement le répertoire s'il n'existe pas.
    Dans le cadre "Start Window", choisir "Minimized"
    Dans le cadre "Further Options", cocher "No language key in script file name"
    Valider avec le bouton OK
  4. Créer un fichier nommé "session.txt". L'éditer avec Notepad (Blocnote) et copier coller le code suivant :
    titleprefix &V[_database]
  5. Quitter SAP et le relancer.

Le trigramme du serveur vient désormais préfixer l'ensemble de vos fenêtres SAP.

ZTOAD : Requêteur Open SQL

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

Vous avez surement déjà été confronté à un bug dans un programme en production qui ne semble pas être reproductible en environnement de test.

Dans ces cas là, il n'est pas toujours évident de débugger directement le programme en production (problème de droits, sensibilité des données, risque de mauvaise exécution, documents créés avec votre user...). Quand le bug semble venir d'une requête SQL un peu compliquée (jointure sur 5 tables, subquery...), vous voila embarqué dans de fastidieuses recherches via SE16 avec 3 ou 4 modes ouverts pour essayer de comprendre le problème avec la requête (et encore... le problème ne vient peut-être même pas de cette requête la !)

Dans d'autres mondes, les développeurs n'ont pas ce genre de problèmes et peuvent composer en temps réel leur requêtes personnalisées directement sur la base de données. Sur SAP ce n'est pas possible. Vraiment ? Pas en standard en tout cas. Il suffit donc de créer un programme spécifique.

Dérivé de Z_TETARD lui même dérivé de YES4SQL, voici ZTOAD, mon requêteur SQL. Il permet de faire vos propres requêtes multi-tables, ou de copier coller celle du programme à débugger.

Les commentaires ABAP sont supprimés avant exécution, les alias de table sont compris, les requêtes sont mémorisées pour réutilisation (jusqu'à 99 requêtes).

ZTOAD nouveau se présente sous la 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
  • Une gestion d'opnglet vous permet de lancer plusieurs requêtes

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.

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.

Télécharger ZTOAD - version pour SAP 4.6 n'est plus mis à jour

A noter : n’oubliez pas que vous aurez besoin de SAPLINK et son extension de gestion de table pour installer le programme.

Fonction RV_CALL_DISPLAY_TRANSACTION

Rédigé par Sébastien Hermann dans Fonction - 1 commentaire

Petit focus sur une fonction "magique" de SAP.

RV_CALL_DISPLAY_TRANSACTION permet d'ouvrir en mode transactionnel tout type (ou presque) de documents SD/MM dans SAP.

function rv_call_display_transaction.
*"----------------------------------------------------------------------
*"*"Globale Schnittstelle:
*"       IMPORTING
*"             VALUE(BUKRS) DEFAULT '    '
*"             VALUE(FCODE) DEFAULT '    '
*"             VALUE(GJAHR) DEFAULT '0000'
*"             VALUE(LGNUM) LIKE  VBFA-LGNUM DEFAULT '   '
*"             VALUE(POSNR) LIKE  VBAP-POSNR DEFAULT '000000'
*"             VALUE(VBELN) LIKE  VBUK-VBELN
*"             VALUE(AUFNR) LIKE  VBAK-AUFNR OPTIONAL
*"             VALUE(VBTYP) LIKE  VBUK-VBTYP DEFAULT ' '
*"             VALUE(FI_APPLI) LIKE  VBFAL-APPLI DEFAULT '  '
*"----------------------------------------------------------------------

Il suffit de renseigner le numéro de document (VBELN) pour ouvrir commande, contrat, livraison sortante ou facture. Mieux, ajouter le numéro de poste (POSNR) et le document ouvert arrive directement sur ce poste.

Mais ce n'est pas tout. Si vous spécifiez le type de document (VBTYP), vous pouvez ouvrir une multitude d'autres documents. Voici un petit tableau des transactions gérées par cette fonction :

VBTYPTransactionDocumentChamps pris en compte
1VC03, VC02ContactVBELN
3 ou 4VF23, VF22Liste de facturesVBELN
5, 6, M, N, O, P, S, UVF03, VF02FactureVBELN POSNR
7VL33N, VL32NLivraison entranteVBELN
8VT03N, VT02NTransportVBELN
AVA13, VA12Demande d'offreVBELN POSNR
BVA23, VA22OffreVBELN POSNR
C, H, I, K, LVA03, VA02CommandeVBELN POSNR
DVA53, VA52PropositionVBELN POSNR
E, FVA33, VA32Programme de livraisonVBELN POSNR
F, G, 0VA43, VA42ContratVBELN POSNR
QLT21Ordre de transfertVBELN LGNUM
R, h, iMB03, MB02Doc articleVBELN
J, TVL03N, VL02NLivraison sortanteVBELN POSNR
VME23N, ME33, ME43, ME53N, ML81N, ME22, ME32K, ME32L, ME42, ME52Document achat (demande, commande, VBELN
vME53NDemande d'achatVBELN
WMD83, MD82Plan de besoinVBELN POSNR
Xfct HU_DISPLAY (?)Unité de manutentionVBELN
&LX44Document magasinVBELN LGNUM
aVI03Frais de transportVBELN
YVB03Liste d'exclusionVBELN
.IW33OrdreAUFNR
:IQS3AvisAUFNR
1 et FI_APPLI=MMMB03Doc articleVBELN (comme doc article)+GJAHR+BUKRS
2, 3 et FI_APPLI=MMFB03Piece comptableVBELN (comme doc article)+GJAHR+BUKRS
A et FI_APPLI=MMMIR4Doc de facturationVBELN (comme doc article)+GJAHR
vide et BUKRS renseignéFB02Piece comptableVBELN (comme doc article)+GJAHR+BUKRS

Légende : Document accessible sans indiquer de VBTYP
Uniquement pour la fonction DISPLAY
Uniquement pour la fonction CHANGE

Vous pouvez utiliser RV_CALL_CHANGE_TRANSACTION pour ouvrir en modification les mêmes documents.
Ces fonctions sont très utilisées par le standard pour afficher des documents.
A noter, les USEREXIT de LV06AFZZ sont utilisés.