Connexion SAP Erreur d'execution 438

Bonjour, j'ai trouvé un code me permettant de me connecter à SAP via un bouton sur excel. malheureusement à la ligne "session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "200"" du code, il me vient l'erreur 438, propriété ou méthode non gérée par cet objet.

avez vous une solutions svp ? merci!!

Bonjour,

Ci-desous une version de votre code modifié qui devrait fonctionné

Sub SapConn()

Dim Appl As Object
Dim Connection As Object
Dim session As Object
Dim WshShell As Object
Dim SapGui As Object

Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe"
Set WshShell = CreateObject("WScript.Shell")

Do Until WshShell.AppActivate("SAP Logon ")
    Application.Wait Now + TimeValue("0:00:01")
Loop

Set WshShell = Nothing

Set SapGui = GetObject("SAPGUI")
Set Appl = SapGui.GetScriptingEngine
Set Connection = Appl.Openconnection("PLP", True)
Set session = Connection.Children(0)

session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "xxx"
session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "identifiant"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "mdp"
session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN"

If session.Children.Count > 1 Then

    answer = MsgBox("You've got opened SAP already," & _
"please leave and try again", vbOKOnly, "Opened SAP")

    session.findById("wnd[1]/usr/radMULTI_LOGON_OPT3").Select
    session.findById("wnd[1]/usr/radMULTI_LOGON_OPT3").SetFocus
    session.findById("wnd[1]/tbar[0]/btn[0]").press

    Exit Sub

End If

session.findById("wnd[0]").maximize
session.findById("wnd[0]").sendVKey 0 

End Sub

Il faut tout de même vérifier que tu utilise le bon nom dans la ligne

Set Connection = Appl.Openconnection("PLP", True)

Vérifier aussi que le chemin dans cette ligne est juste

Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe"

En attente de te relire

Edit: A savoir que le code ne fonctionne pas avec toutes les versions de SAP et certaines surcouches rajouter par les entreprise peuvent poser problèmes

Celui-ci je suis sur qu'il fonctionne avec la version SAP Hanna,

Bonjour Cognomen,

Merci beaucoup pour votre aide. si j'enlève le "0" dans la ligne "set session=Connection.Children(0) j'ai la même erreur qu'avant, et si je laisse le code tel que vous me l'avez envoyé j'ai cette erreur qui vient, qui venait aussi avant avec le "0" dans cette même ligne. le message vient lorsque j'exécute cette ligne dans développeur. Set session=Connection.Children(0)

erreur d execution 614

Je ne sais pas si ça a une influence mais le numéro de mandant est entré automatiquement, je n'ai que l'utilisateur et le mot de passe a insérer.

Quelle est le numéro de mandant que vous utilisé? , de base en général il est égal à "100"

Car j'utilise ce même code pour une utilisation professionnelle et il fonctionne pour moi :/

Ce sujet pourrait peut-être vous aider

Aide (https://forum.excel-pratique.com/astuces/la-fameuse-erreur-438-60484)

Vérifier aussi que vous utiliser le bon nom dans la ligne
Set Connection = Appl.Openconnection("PLP", True)

On trouve le nom sur l'accueil de connexion de SAP

sans titre

le nom correspond bien et le numéro de mandant est le 200

En fait tout fonctionne bien, ça m'ouvre l'application SAP et au moment d'insérer le nom d'utilisateur la case est bien sélectionnée mais ça bloque à cette étape. ça ne me rentre pas le nom d'utilisateur et le mot de passe.

fenetre sap

Honnêtement je ne vois pas,

J'utilise identiquement le même code et il fonctionne

Je fouillerais demain a tête reposé pour voir ce qui pourrait bloqué

Avez vous autorisé les Macros dans SAP

Cela pourrait venir de cela

s'il n'y a pas d'autres endroit pour activer les scripts je pense que ça doit être bon :) sinon à mon avis ça n'ouvrirai même pas la fenêtre pour insérer les identifiants..

activer macro

Bonjour,

Je pense avoir une idée pour résoudre le problème mais rien de certain,

Essayer cela:

Sub Connexion_SAP()

Application.DisplayAlerts = False

Dim Appl As Object
Dim Connection As Object
Dim session As Object
Dim WshShell As Object
Dim SapGui As Object

Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe", 4
Set WshShell = CreateObject("WScript.Shell")

Do Until WshShell.AppActivate("SAP Logon ")
    Application.Wait Now + TimeValue("0:00:01")
Loop

Set WshShell = Nothing

Set SapGui = GetObject("SAPGUI")
Set Appl = SapGui.GetScriptingEngine
Set Connection = Appl.Openconnection("PLP", True) 'modifier si le nom du système change
Set session = Connection.Children(0)

session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "200"
session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "Identifiant"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "Mdp"
session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN"

session.findById("wnd[0]").maximize
session.findById("wnd[0]").sendVKey 0

If session.Children.Count > 1 Then

    answer = MsgBox("Sap est déjà ouvert, merci de le fermer !" & _
    "S'il vous plaît partez et réessayez", vbCritical, "Ouverture SAP")

    session.findById("wnd[1]/usr/radMULTI_LOGON_OPT3").Select
    session.findById("wnd[1]/usr/radMULTI_LOGON_OPT3").SetFocus
    session.findById("wnd[1]/tbar[0]/btn[0]").press

Exit Sub

End If

End Sub

Si cela ne fonctionne pas:

Aller sur la page de connexion faite "ALT-F12" puis "Enregistrement et Playback de Script..."

Vous devrez rentrer le "Mandant", "Utilisateur", "Mot passe" et "Langue de travail" manuellement puis appuyer sur entrée

Après cela vous pourrez stopper l’enregistrement du script et l'ouvrir avec le bloc note,

A partir de là si vous pourrez envoyer le contenu du bloc note (anonymiser bien sur )

Merci pour votre aide !

le code ne fonctionne pas mieux malheureusement... voici le script de la connexion :

// SAP

Screen SAPMSYST.0020

Set F[Mandant] "200"

Set F[Utilisateur] "XXX"

Set F[Langue de travail] "FR"

Enter

j'ai également rentré le mot de passe mais il ne s'est pas enregistré dans le script.

Pensez-vous que ça ait un lien avec le fait que mon paramètre sapgui/scripting_user soit sur "FALSE" il faut utiliser la transaction RZ11 pour le passer en TRUE et je n'ai pas les autorisations.

Merci !

Premier point:

Quelle est la version de SAP?

Si vous pouviez envoyer le fichier .txt dans sa globalité, car dans celui envoyé il manque l’initialisation du mot de passe

Second point:

Remplacer

session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "200"
session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "Identifiant"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "Mdp"
session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN"

Par

Set F[Mandant] "200"

Set F[Utilisateur] "XXX"

Set F[MotPasse] "XXX" ' pas sur du format il manque des infos du script

Set F[Langue de travail] "FR"

j'ai toujours "erreur d'exécution 614 à la ligne "set session =connection.children(0) ...et le fichier .txt que m'a généré le script sap est tel quel... :/ est-ce que je dois enregistrer le script différemment ?

Le problème doit venir de la version SAP que vous avez et des surcouches qu'il doit y avoir... Et sans connaitre la version cela est compliqué

De plus dans le script il devrait y avoir une ligne ou l'on incrémente le mot de passe et elle n'y est pas

Cela devient compliqué

J'ai oublié de vous envoyer la version, la voici

version sap

Je commence a être à court d'idée,

En réalité la syntaxe du script que vous avez envoyé, je ne la connais pas

Et je ne comprend toujours pas pourquoi elle ne contient pas une ligne du type " Set F[MotPasse]"

Je vais réaliser quelque recherche si je trouve une solution

un très grand merci à vous !!!! :D je vous envoie encore une capture d'un paramétrage dont je vous ai parlé plus haut :

parametre sap
Rechercher des sujets similaires à "connexion sap erreur execution 438"