J'ai déjà demandé d'avoir l'accès mais ce n'est pas directement mon entreprise qui gère sa donc ceci risque de mettre du temps (mon stage sera probablement terminé avant).
J'ai déjà demandé d'avoir l'accès mais ce n'est pas directement mon entreprise qui gère sa donc ceci risque de mettre du temps (mon stage sera probablement terminé avant).
J'ai une autre question. Il est possible que je cherche à automatiser une autre transaction que la MB52 (la transaction ZSB, spécifique à mon entreprise donc). En regardant le code que tu m'as donné, j'ai l'impression que l'adapter à une autre transaction n'est pas très compliqué, il suffit juste de modifier les Session.FindById. Est-ce une erreur de ma part de vouloir faire sa ?
Non, ce n'est pas une erreur.
C'est très intéressant d'automatiser parce que ça sauve du temps dans bien des cas.
Il suffit de trouver tous les ID des contrôles. Ça peut être pas mal différent d'une transaction à une autre, par contre...
La meilleure façon est d'utiliser l'enregistreur pour avoir le code et ensuite, tu passes en pas à pas pour voir les différentes actions. Il y a toujours des lignes superflues qu'on peut enlever, un peu comme avec l'enregistreur d'Excel.
Un façon de trouver les ID est aussi de sélectionner une boîte (textbox, disons), taper F1 et l'icône d'outils dans la fenêtre qui s'ouvre, mais ça ne fonctionne pas toujours bien...
Ok,
Merci pour toute ces informations.
Je reviendrai sur le sujet si on me débloque les accès durant mon stage !
Encore merci à tous.
J'ai vu que tu avais ouvert une autre discussion sur l'autre forum.
Je déconseille les SendKeys parce que ce n'est pas toujours efficace et ça peut engendrer des problèmes avec les autres applications.
On ne sait jamais vraiment où se feront les clicks...
Si tu changeais cette portion de mon code, est-ce que ça passe mieux ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 For Each Connection In AppliSAP.Children If Left(Connection.Description, 3) = "PRD" Then '<<< sans vérifier DisabledByServer For Each TmpSession In Connection.Children '..............
Oui j'essaye un autre moyen mais je ne pense le garder, c'est plus pour ma culture personnel que j 'essaye avec le SendKeys.
J'ai essayé en modifiant cette partie du code mais je ne rentre pas dans la boucle :
Et en vérifiant dans mes variables locales j'ai ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 For Each TmpSession In Connection.Children If TmpSession.Busy = False Then Set Session = TmpSession GoTo FoundSession End If Next
J'ai aussi oublié de te dire que je ne suis pas en PRD mais PR1, j'ai donc modifié le if en conséquence. Penses-tu que sa peut jouer sur le bon fonctionnement du code ?
Je ne connais pas PR1, mais ça vaut le coup d'essayer.
Tu as changé cette ligne ?
Tu pourrais faire des tests avec un Msgbox
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Left(Connection.Description, 3) = "PR1" Then
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 '................. Set AppliSAP = SapGuiAuto.GetScriptingEngine() If Not IsObject(AppliSAP) Then Exit Sub End If For Each Connection In AppliSAP.Children MsgBox Connection.Description '<<< voir comment s'affichent les noms de la ou des sessions Next '..........
Oui j'ai déjà changé cette ligne, le Connection.Description affiche "SAP PR1", j'ai donc mis ceci :
Mais je n'ai pas l'impression qu'il existe de Connection.Children, en tout cas le Count de Connection.Children vaut 0, c'est très étrange.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 For Each Connection In AppliSAP.Children If Right(Connection.Description, 3) = "PR1" Then For Each TmpSession In Connection.Children If TmpSession.Busy = False Then Set Session = TmpSession GoTo FoundSession End If Next End If Next
Juste avant le code que tu viens de mettre, mets cette ligne
Quel est le résultat ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox AppliSAP.Children.Count
Et si tu procèdes comme ceci ? qu'est-ce que ça donne ? Message d'erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 If AppliSAP Is Nothing Then Set SapGuiAuto = GetObject("SAPGUI") Set AppliSAP = SapGuiAuto.GetScriptingEngine End If If Connection Is Nothing Then Set Connection = AppliSAP.Children(0) End If If Session Is Nothing Then Set Session = Connection.Children(0) End If
Bonjour,
J'ai comme résultat 1 avec cette ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox AppliSAP.Children.Count
De cette manière, j'obtiens "Erreur d'exécution '614': The enumerator of the collection cannotfind en element with the specified index" à la ligne 9.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 If AppliSAP Is Nothing Then Set SapGuiAuto = GetObject("SAPGUI") Set AppliSAP = SapGuiAuto.GetScriptingEngine End If If Connection Is Nothing Then Set Connection = AppliSAP.Children(0) End If If Session Is Nothing Then Set Session = Connection.Children(0) End If
J'ai fait quelque recherche et il semble que les paramètres de script de mon profil SAP ne sont pas activé, il faudrait que j'aille dans la transaction RZ11 pour pouvoir l'activer mais forcément je n'ai pas les droits d'accès à cette transaction...
Peut-être pourrais-tu demander l'accès ?
Par contre, si tu développes quelque chose pour d'autres personnes, il faudra que chacun ait les accès...
J'ai vu une façon de se brancher à PR1 ICI
Peut-être que ça peut être utile (?)
J'ai demandé l'accès mais je suis toujours en attente d'un retour, et mon tuteur est en arrêt maladie depuis 2 semaines...
J'avais déjà essayé de cette manière avant de poster sur le forum, mais je retombais sur un problème d’autorisation encore une fois.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager