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 :

Fonction BAPI pour MB52 transaction


Sujet :

SAP

  1. #21
    Invité
    Invité(e)
    Par défaut
    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).

  2. #22
    Invité
    Invité(e)
    Par défaut
    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 ?

  3. #23
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    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...

  4. #24
    Invité
    Invité(e)
    Par défaut
    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.

  5. #25
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Citation Envoyé par Oudouner Voir le message
    Bonjour,

    En essayant ton code j'obtiens le message "Ouvrir une session SAP-PRD et recommencer" & vbCrLf & _ "S'il y a une session ouverte, elle est probablement en cours d'exécution", vbExclamation, "Erreur de connexion". Et en effet, en exécutant le code pas à pas, je ne rentre jamais dans la boucle suivante :

    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 Not Connection.DisabledByServer And Left(Connection.Description, 3) = "PRD" Then
                For Each TmpSession In Connection.Children
                    If TmpSession.Busy = False Then
                        Set Session = TmpSession
                        GoTo FoundSession
                    End If
                Next
            End If
        Next
    Pourtant, j'ai une session SAP qui est ouverte et qui n'a pas de transaction en cours d'exécution.
    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
    '..............

  6. #26
    Invité
    Invité(e)
    Par défaut
    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 :

    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
    Et en vérifiant dans mes variables locales j'ai ceci :

    Nom : connection.PNG
Affichages : 156
Taille : 1,3 Ko

  7. #27
    Invité
    Invité(e)
    Par défaut
    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 ?

  8. #28
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Je ne connais pas PR1, mais ça vaut le coup d'essayer.
    Tu as changé cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(Connection.Description, 3) = "PR1" Then
    Tu pourrais faire des tests avec un Msgbox
    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
    '..........

  9. #29
    Invité
    Invité(e)
    Par défaut
    Oui j'ai déjà changé cette ligne, le Connection.Description affiche "SAP PR1", j'ai donc mis ceci :

    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
    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.

  10. #30
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Juste avant le code que tu viens de mettre, mets cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox AppliSAP.Children.Count
    Quel est le résultat ?

  11. #31
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    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

  12. #32
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox AppliSAP.Children.Count
    J'ai comme résultat 1 avec cette ligne.

    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
    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.

  13. #33
    Invité
    Invité(e)
    Par défaut
    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...

  14. #34
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    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 (?)

  15. #35
    Invité
    Invité(e)
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. fonction c pour manipuler la structure date
    Par thomas_b dans le forum Windows
    Réponses: 4
    Dernier message: 28/07/2004, 16h28
  2. [winsock.h] Fonction recv() pour un socket en C
    Par Hikaru dans le forum Windows
    Réponses: 5
    Dernier message: 22/05/2004, 07h43
  3. Des fonctions OGL pour les images de format usuel ?
    Par jamal24 dans le forum OpenGL
    Réponses: 3
    Dernier message: 31/05/2003, 21h59
  4. Fonction/méthode pour obtenir l'IP de la machine
    Par sirex007 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 10/04/2003, 14h36
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

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