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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2019
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Macro qui permet de récupérer des informations sur SAP et de les coller sur excel

    Bonjour à tous,
    Je suis étudiant et je suis en stage dans une entreprise.
    J’aimerai créer une macro excel qui permet de récupérer des données de SAP et de les coller dans une feuille excel.
    Je voulais enregistrer un script à l’aide de l’enregistrement et playback de script mais mon compte n’est pas autorisé à réaliser cela. Et lorsque je demande à celui qui peut modifier les paramètres, d’activer la fonctionnalité, il ne veut pas.
    Alors je m’en remets à vous. Si vous avez un ensemble de méthode me permettant de réussir cette macro, je suis preneur.
    Je mets un fichier dans lequel j’illustre le cheminement qui permet de récupérer les informations souhaitées.
    Merci beaucoup pour le temps que vous consacrerez à répondre.

    Sreen SAP.pdf

  2. #2
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    janvier 2010
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : janvier 2010
    Messages : 374
    Points : 91
    Points
    91

    Par défaut

    Bonjour adridm,
    Alors pour ma part je débute dans l'exercice.
    Un gars de l'info m'a aidé sur le sujet.
    Pour récupérer les codes des champs (ex: "LTAK-TANUM") tu te positionnes sur le champ et tu fais F1 / tu cliques sur le marteau et la clé (informations techniques) et tu trouves la désignation du champ dans le champ "Zone dynpro"

    En gros mon appli Access ouvre SAP et va trifouiller dedans.
    Ouverture de SAP:
    Code VBA : 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
    Option Compare Database
    Global SapGuiAuto As Object
    Global session As Object
     
    Sub LogonSAP()
    'The below section will create an SAP session.
     
    Dim Proc
     
    'The below section will create an SAP session.
     
    Set WshShell = CreateObject("WScript.Shell")
    Set Proc = WshShell.Exec("C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe")
    Set SapGuiAuto = GetObject("SAPGUI")
    Set SAPGuiApp = SapGuiAuto.GetScriptingEngine
    Set oConnection = SAPGuiApp.OpenConnection("..SAP2000 Production             PGI", True)
    Set session = oConnection.Children(0)
     
    session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "TON LOGIN"
    session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "TON MOT DE PASSE"
    session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "fr"
    session.findById("wnd[0]/usr/txtRSYST-LANGU").SetFocus
    session.findById("wnd[0]/usr/txtRSYST-LANGU").caretPosition = 2
    session.findById("wnd[0]").sendVKey 0
     
    End Sub

    Fermeture de SAP:

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub UnlogSAP()
    session.findById("wnd[0]/tbar[0]/okcd").Text = "/nex" ' remplissage de la barre des transactions
    session.findById("wnd[0]").sendVKey 0
    End Sub

    Ouverture et collection - je rempli des champs Access avec des infos copiées dans SAP

    Code VBA : 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
    Sub CollectCMS()
    Dim Connection As Object
    Dim OTSelection As String
    Dim OTPoste_Selection As String
    Dim OTMAG_Selection As String
     
    Set SapGuiAuto = GetObject("SAPGUI")
    If Not IsObject(SapGuiAuto) Then
      Exit Sub
    End If
    Set App = SapGuiAuto.GetScriptingEngine
    If Not IsObject(App) Then
      Exit Sub
    End If
    Set Connection = App.Children(0)
    If Not IsObject(Connection) Then
      Exit Sub
    End If
    Set session = Connection.Children(0)
    If Not IsObject(session) Then
      Exit Sub
    End If
     
     
    session.findById("wnd[0]/tbar[0]/okcd").Text = "/nlt21" 'appel de la transaction SAP LT21
    session.findById("wnd[0]").sendVKey 0 'entrée
    session.findById("wnd[0]/usr/txtLTAK-TANUM").Text = Forms("F001_Display_Dispatch_Photos").OTSelection.Value ' remplissage de SAP à l'aide des champs se trouvant dans access
    session.findById("wnd[0]/usr/txtRL03T-TAPOS").Text = Forms("F001_Display_Dispatch_Photos").OTPoste_Selection.Value ' remplissage de SAP à l'aide des champs se trouvant dans access
    session.findById("wnd[0]/usr/ctxtLTAK-LGNUM").Text = Forms("F001_Display_Dispatch_Photos").OTMAG_Selection.Value ' remplissage de SAP à l'aide des champs se trouvant dans access
    session.findById("wnd[0]/usr/ctxtLTAK-LGNUM").SetFocus
    session.findById("wnd[0]/usr/ctxtLTAK-LGNUM").caretPosition = 3
    session.findById("wnd[0]").sendVKey 0 'entrée
     
    'focus sur le champ du cms
    session.findById("wnd[0]/usr/ctxtLTAP-MATNR").SetFocus
    'selection du champ cms
    session.findById("wnd[0]/usr/ctxtLTAP-MATNR").caretPosition = 0
    'selection du champ CMS et copie dans le champ du formulaire access
    Forms("F001_Display_Dispatch_Photos").CMSNumber_Selection.Value = session.findById("wnd[0]/usr/ctxtLTAP-MATNR").Text
     
    'Attention bug !
    session.findById("wnd[0]/tbar[0]/okcd").Text = "AZSO"  '
    session.findById("wnd[0]").sendVKey 0 'entrée
    session.findById("wnd[0]/usr/ctxtLTAK-TBNUM").SetFocus
    session.findById("wnd[0]/usr/ctxtLTAK-TBNUM").caretPosition = 5
    Forms("F001_Display_Dispatch_Photos").USMNumber_Selection.Value = session.findById("wnd[0]/usr/ctxtLTAP-ABLAD").Text
     
    End Sub
    Attention le dernier code (AZSO) bug.

    Adapte-le et amuse-toi !

    Totor

Discussions similaires

  1. Servlet qui permet de récupérer des informations relatives à une application
    Par L'aigle de Carthage dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 21/06/2011, 12h19
  2. Récupérer des informations sur les connexions réseau
    Par Leobaillard dans le forum Delphi
    Réponses: 8
    Dernier message: 31/08/2006, 01h20
  3. Récupérer des informations sur le matériel
    Par RaphAstronome dans le forum Windows
    Réponses: 5
    Dernier message: 31/03/2006, 15h32
  4. Récupérer des Informations sur un PC via un Réseau ?
    Par MaTHieU_ dans le forum Administration
    Réponses: 6
    Dernier message: 22/11/2005, 12h39
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

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