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 :

Test SAP ouvert


Sujet :

SAP

  1. #1
    Membre régulier
    Homme Profil pro
    Employé
    Inscrit en
    Juin 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Employé
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 77
    Points : 83
    Points
    83
    Par défaut Test SAP ouvert
    Bonjour

    Je développe pas mal de macro-script excel et j'ai beau mettre des msgbox pour dire d'ouvrir un écran SAP, certains ne l'ouvre pas et la macro plante.
    J'ai un peu cherché dans les forums mais je n'ai pas trouvé d'instruction permettant de teste pour savoir si un écran sap est ouvert.
    Je suppose que cela existe ?
    Merci de votre aide .

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    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 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Voici une méthode que j'utilise.
    La macro est faite pour ouvrir la fenêtre de Logon si fermée, puis d'ouvrir une session SAP - PRD en utilisant SSO pour éviter d'entrer les username, password,...
    Si SAP est fermé, la macro va l'ouvrir.
    Elle va aussi chercher une session libre (inutilisée)

    À tester de ton côté.
    Ça peut différer selon les systèmes, les versions,... (?)
    Il arrive, le matin ou le lundi, que 15 secondes ne soit pas assez pour ouvrir PRD.



    En entête de module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Explicit
    
    #If VBA7 Then
        Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
    #Else
        Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    #End If
    
    Const Titre As String = "SAP Logon 740" 'Changer au besoin
    
    Public SapGuiAuto As Object
    Public AppliSAP As Object
    Public Connection As Object
    Public Session As Object
    Public TmpSession As Object
    Dans le module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    Function logonSAP() As Boolean
        Dim Conn As Object
        Dim Trouve As Boolean
        
        #If VBA7 Then
            Dim lhWnd As LongPtr
        #Else
            Dim lhWnd As Long
        #End If
    
        Dim Temps As Double
        
        On Error GoTo Erreur
        
        Temps = Timer
        
        'Vérifier si la fenêtre Logon est ouverte - sinon l'ouvrir
        lhWnd = FindWindow(vbNullString, Titre)
        If lhWnd = 0 Then
            Call Shell("C:\Program Files (x86)\SAP\FrontEnd\SAPGUI\saplogon.exe", vbMinimizedFocus)
            Do
                lhWnd = FindWindow(vbNullString, Titre)
                If Timer - Temps > 15 Then  '15 secondes de délai pour ouvrir la fenêtre sinon on sort
                    MsgBox "Impossible d'ouvrir la fenêtre SAP Logon", vbExclamation, ""
                    Exit Function
                End If
            Loop Until lhWnd > 0
        End If
        
        If AppliSAP Is Nothing Then
            Set SapGuiAuto = GetObject("SAPGUI")
            Set AppliSAP = SapGuiAuto.GetScriptingEngine
        End If
         
        'Ouverture d'une session PRD - SSO
        If AppliSAP.Connections.Count > 0 Then
            For Each Conn In AppliSAP.Connections
                If Conn.Description = "PRD - SSO" Then
                    Set Connection = Conn
                    Trouve = True
                    Exit For
                End If
            Next
            If Not Trouve Then Set Connection = AppliSAP.OpenConnection("PRD - SSO")  '<<< à changer au besoin
        Else
            Set Connection = AppliSAP.OpenConnection("PRD - SSO")    '<<< à changer au besoin
            'Délai de 3 secondes pour ouverture de la fenêtre SAP - Ajuster selon systèmes...(?)
            '2 secondes n'est pas toujours suffisant dans mon cas
            Application.Wait Now + TimeSerial(0, 0, 3)
        End If
            
        Temps = Timer
        Do
            'Choisir la Session PRD non utilisée, si ouverte
            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
                        Exit Do
                    End If
                Next
            End If
        Loop Until Timer - Temps > 15
        
        If Session Is Nothing Then
            MsgBox "Impossible de trouver une session libre", vbExclamation, "?!?"
            Set TmpSession = Nothing
            Set Connection = Nothing
            Set AppliSAP = Nothing
            Set SapGuiAuto = Nothing
            Exit Function
        Else
            logonSAP = True
        End If
            
        Exit Function
    Erreur:
        MsgBox Err.Number & vbCrLf & Err.Description
        'Stop    'pour débogage - F8 passe à la ligne suivante
        'Resume  'F8 se rend sur la ligne en défaut
        
    End Function
    Lors de l'appel du script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub MonScript()
    .....
        If Not logonSAP Then Exit Sub
    .....
    End Sub
    MPi²

  3. #3
    Membre régulier
    Homme Profil pro
    Employé
    Inscrit en
    Juin 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Employé
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 77
    Points : 83
    Points
    83
    Par défaut
    Impeccable !!!
    Juste ce que je voulais

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Test Formulaire ouvert à l'ouverture d'un état
    Par CrasherSEP dans le forum VBA Access
    Réponses: 8
    Dernier message: 22/11/2010, 09h38
  2. [AC-2003] Test Fichier ouvert. Utiliser une fonction.
    Par gentoo dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/04/2009, 16h40
  3. [QC9][VBscript]Automatisation des tests SAP
    Par cladsam dans le forum SAP
    Réponses: 2
    Dernier message: 10/05/2007, 13h54
  4. Php et test port ouvert en sortie
    Par Slayes dans le forum Langage
    Réponses: 7
    Dernier message: 22/02/2007, 00h01
  5. Test port ouvert ou fermé
    Par peppena dans le forum Réseau
    Réponses: 13
    Dernier message: 11/06/2006, 17h33

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