IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Discussion :

Script vbs


Sujet :

SAP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Script vbs
    Bonjour le forum,

    Je travaille depuis pas longtemps sur les macros en vba pour mettre en forme certains documents, maintenant il est temps d'y ajouter un peu d’excitation en lançant des script .vbs depuis mes macros, mais d’après ce qui me parait les scripts vbs sont loin d’être évidents en plus je ne suis qu'un débutant en SAP et SAP Scripting.

    DESCRIPTION: je travaille sur une macro excel composée de deux phases : 1. exécuter un script .vbs qui va sur SAP me chercher deux fichiers texte. 2. amener des modifications et réunir les deux fichiers dans un seul fichier, ce dernier constitue le fruit de mon travail.
    tout ce que je viens de décrire marche à merveille, le script .vbs & le classeur contenant la macro & les fichiers récupérés de SAP & le fichier fruit de mon travail sont sauvegardés tous dans un dossier MACROS sur mon ordinateur.

    une fois le travail est fait, j'ai essayé de mettre MACROS dans un espace partagé entre tous les ordinateurs de mon groupe de travail, lecteur (L, pour que mes collègues en profite aussi. Du coup, j'ai changer tout les chemins (chemin d'exécution du script, chemin de sauvegarde..) dans ma macro vers le chemin partagé. j'ai essayé depuis mon ordinateur ça marche nikel comme avant.

    SOUCIS : Quand mes collègues ont essayé de lancer la macro depuis leurs ordinateurs, SAP affiche un message d'erreur : the control could not be found by id

    Quelqu'un svp peut me dire de quoi ça peut arriver, j'en ai aucune idée
    MERCI D'AVANCE

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 574
    Points : 764
    Points
    764
    Par défaut
    Hello,

    Il n'y a pas d'autre choix que d'étoffer la gestion des erreurs pour que tu saches de quelle ligne ça vient exactement. Tu peux aussi aller analyser le souci directement depuis leur poste.

    Sinon tu es obligé d'y aller à l'aveugle. Vérifie aussi leur version de SAP GUI.

    Sandra

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    hey Sandra,

    désolé pour cette réponse retardée mais ne je suis dans mon bureau qu'une semaine sur deux

    Pour la version de SAP GUI c'est la même, c'est moi qui s'est occupé de l'installer sur leurs ordinateur. Le problème d’après ce qui parait viens du Script .vsb (ce dernier je l'ai obtenu grâce à 'Script Recording and Playback' dans SAP) je crois que c'est un problème de sessions dans les premiers lignes du script, mais j'(en comprend rien pour pouvoir agir
    Je vous laisse le .txt du script, si vs pouvez remarqué quelque chose qui saute aux yeux

    Merci et Bonne semaine à tous et toutes.
    Fichiers attachés Fichiers attachés

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Yaciin bonjour,

    comme tu le dis, ton code viens d'un enregistrement de macro et c'est surement la source de ton problème. En effet, le code enregistré est trop "restrictif" ; il n'est correcte que dans certains cas et "plante" lorsque toutes les conditions que tu as mis en place lors de ton enregistrement ne sont pas réunies. Ceci est le cas pour n'importe quel code enregistrés (enfin à ma connaissances pour les code vba office est vb SAP) et je te conseil fortement de toujours faire une adaptation de ton code après enregistrement pour le rendre suffisamment polyvalent.

    De façon plus concrète, si j'analyse ton code je vois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session.findById("wnd[0]/tbar[0]/okcd").text = "zse16"
    session.findById("wnd[0]").sendVKey 0
    qui signifie : Saisir "zse16" dans la zone de saisie des transaction de la barre outil 0 de la fenêtre 0 PUIS valide la touche ENTREE dans la fenêtre 0
    Cette instruction va planter si l'utilisateur de ta macro n'a pas la première fenêtre de SAP positionné sur la page de menu de SAP car la saisie des transactions ne peux se faire que depuis la page menu de SAP (sinon SAP renvois un message d'erreur du style : cette transaction n'est pas accessible..)

    Toute fois, ce bout de code tel que tu l'a écrit n'est pas bloquant, la macro passe à l'instruction suivante alors que la transaction ZSE16 n'a pas été lancée et tante d’exécuter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session.findById("wnd[0]/usr/ctxtI_TABLE").text = "mard"
    session.findById("wnd[0]/usr/ctxtI_TABLE").caretPosition = 4
    session.findById("wnd[0]").sendVKey 8
    qui signifie : saisir "mard" dans le champ texte I_TABLE de la zone utilisateur de la fenêtre 0, Puis se positionner au 4ème caractère de ce champ texte (inutile), puis saisir le touche F8 (lancer la requête).

    Dans le cas où la transaction ZSE16 n'a pas été lancée, la macro ne peux pas trouver le champ (control) texte I_TABLE.
    Cette instruction ne peux pas aboutir et l’exécuteur de macro renvois l'erreur nommée "the control could not be found by id".


    Une solution serait d'ajouter /n devant le code transaction (=lancer une transaction depuis n'importe quelle page SAP). Ton code deviendrai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session.findById("wnd[0]/tbar[0]/okcd").text = "/Nzse16"
    session.findById("wnd[0]").sendVKey 0

    Donc:
    Sur ton PC ta macro fonctionne parce que tu exécute toujours les action dans le même ordre (réunissant ainsi toutes les bonnes conditions au fonctionnement de ta macro) mais tes collègues font peut-être une infime déviation à ta procédure et les conditions n'étant pas réunies ta macro à de forte chance de planter. L'exemple ci-dessus n'est qu'un des nombreux cas de plantages possibles et illustre la nécessite de modifier ton code enregistré pour le rendre plus robuste (insensible aux aléas).

    En d'autre termes un code enregistré ne fonctionne que dans un cas bien précis (celui qui est la pur copie de l'instant où enregistrement a été fait) et il te faut le retoucher en pensant à tous les aléas possibles que peux rencontrer ton utilisateur pour les inclure dans ton code.
    - a-t-il une session ouverte?, sur quelle page ?
    - utilise-t-il cette page en ce moment?
    - est-ce que le code peux interrompre le travail qu'il fait sur cette page?
    - La transaction renvoies-t-elle les mêmes infos sur son PC que sur le mien (par exemple quand on affiche un tableau avec des préférences d'affichage liées à l’utilisateur: plus ou moins de colonnes, ...)?
    - etc

    Il faut un peu d'expérience pour appréhender les cas d'erreur possible et pour gagner du temps la méthode proposée par Sandra est utile en complément. En effet, tu peux inclure un "capteur" d'erreur avec la méthode vb "on error goto ..." qui te permet de récupérer des infos sur l'origine de l'erreur et l'endroit dans le code où cette erreur s'est produite.

    En espérant que cela pourra t'être utile, bonne chance pour peaufiner ton code.
    Guillaume

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Bonjour Guillaume,

    Je veux te remercier premièrement pour le temps que tu m'a confié pour analyser mon cas et le code du script. Je savais que les enregistrements sont pas la meilleure solution pour automatiser quoi que ce soit car bien évidement on se retrouve pas toujours ac les même circonstances de travail lors de l'enregistrement, et que plus que le code est généralisé plus que c'est plus fiable et passe partout, mais j'en ai pu rien faire vu que c'est la première fois que je manipule un script vbs. Mais grâce à ton intervention (que j'ai attendu longtemps :p) en plus de la solution pour mon problème, j'ai maintenant une meilleure vu sur ce qui se passe dans ce genre de script. Je prendrais en considération dorénavant les points que tu m'a indiqué à la fin de ton message, susceptibles de me déclencher des erreur dans mes enregistrements, je te remercie une autre fois de m'avoir passé ce bout de ton expérience qui me sera très utile.

    Bonne journée à toi et bon weekend.


  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Support métier logistique
    Inscrit en
    Février 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Support métier logistique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Script
    Bonjour,

    Les scripts SAP, j'en fait tous les jours, je peux peut être t'aider.
    Ton script obtenu via l'outil d'entegistrement SAP, tu l'as mis tel quel dans un code VBA Excel ou tu le lances en cliquant sur ton fichier .VBS ?

  7. #7
    Membre du Club
    Homme Profil pro
    Getion appro planning
    Inscrit en
    Août 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Getion appro planning
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 39
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par Rwani Voir le message
    Bonjour,

    Les scripts SAP, j'en fait tous les jours, je peux peut être t'aider.
    Ton script obtenu via l'outil d'enregistrement SAP, tu l'as mis tel quel dans un code VBA Excel ou tu le lances en cliquant sur ton fichier .VBS ?
    Bonjour,

    oui moi j'aurai besoin d'aide,

    j'utilise un script pour faire une recherche de données, ensuite je l'enregistre sous un fichier excel avec:

    "Liste"=>"Exporter"=>"Calcul avec tableur"

    une fenêtre s'ouvre, je saisie le chemin d'accès du dossier et le nom du fichier avec l'extension ".XLSX" puis "Enregistrer"

    jusque là tout va bien, seulement après l'enregistrement un fichier excel s'ouvre et pendant quelques secondes voir minutes (selon la taille du fichier) bloque le système, je n'ai plus la main sur excel pendant ce lapse de temps,

    alors mes 2 questions:
    est t'il impossible de ne pas ouvrir ce fichier excel mais uniquement l'enregistrer ? (ce qui m'arrangerait car de toute façon je le ferme)
    ou comment récupérer la mains immédiatement ? (pour le fermer avec ma macro)

    dans la macro j'utilise ceci pour attendre que le fichier soit atteignable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Loop Until (Timer - t) > 60 Or Workbooks(Workbooks.Count).Name = "EXPORTSAPQM.xlsx"
    Workbooks("EXPORTSAPQM.xlsx").Clos
    e

    Cordialement

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/12/2005, 13h39
  2. Script VBS - Focus garder la fenêtre en premier plan
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 12/12/2005, 23h27
  3. Réponses: 2
    Dernier message: 19/07/2005, 14h14
  4. Probleme recuperation d'une valeur : script vbs -> .bat
    Par pinpin_du_net dans le forum Windows
    Réponses: 3
    Dernier message: 10/05/2005, 12h43
  5. Imprimer un fichier texte avec un script vbs
    Par Persons dans le forum Windows
    Réponses: 3
    Dernier message: 23/12/2004, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo