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 :

sap gui scripting inserer un fichier text dans sap via la selection mutiple


Sujet :

SAP

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut sap gui scripting inserer un fichier text dans sap via la selection mutiple
    Bonjour,

    J'ai établi un petit programme en utilisant l'outil SAP GUI SCRIPTING qui me permet d'extraire la table marc (transaction SE16N=> MARC).
    Il fonctionne un fichier se génère et s'enregistre sur mon bureau.
    Je souhaiterais maintenant extraire uniquement une liste d'articles afin de limiter le nombre de lignes de mon extraction.
    Pour ce faire je clique sur l'icone import fichier, une fenêtre s'ouvre qui me demande d'entrer l'adresse du fichier, (je tape manuellement l'adresse)et lance la transaction . Le rapport apparait bien je demande l'enregistrement sur mon fichier sur c:\ et arrête l'enregistrement.
    Lorsque je regarde le code il n'a pas pris en compte le nom du fichier quel bout de code dois- je rajouter pour que cela fonctionne?

    ci dessous le bout de code
    session.findById("wnd[0]").maximize
    session.findById("wnd[0]/tbar[0]/okcd").Text = "SE16N"
    session.findById("wnd[0]").sendVKey 0
    session.findById("wnd[0]/usr/ctxtGD-TAB").Text = "MARC"
    session.findById("wnd[0]/usr/ctxtGD-TAB").caretPosition = 4
    session.findById("wnd[0]").sendVKey 0
    session.findById("wnd[0]/usr/txtGD-MAX_LINES").Text = ""
    session.findById("wnd[0]/usr/txtGD-MAX_LINES").SetFocus
    session.findById("wnd[0]/usr/txtGD-MAX_LINES").caretPosition = 0
    session.findById("wnd[0]").sendVKey 0
    session.findById("wnd[0]/usr/tblSAPLSE16NSELFIELDS_TC/ctxtGS_SELFIELDS-LOW[2,2]").Text = ""
    session.findById("wnd[0]/usr/tblSAPLSE16NSELFIELDS_TC/ctxtGS_SELFIELDS-LOW[2,2]").SetFocus
    session.findById("wnd[0]/usr/tblSAPLSE16NSELFIELDS_TC/ctxtGS_SELFIELDS-LOW[2,2]").caretPosition = 4
    session.findById("wnd[0]").sendVKey 0
    session.findById("wnd[0]/usr/tblSAPLSE16NSELFIELDS_TC/btnPUSH[4,1]").SetFocus
    session.findById("wnd[0]/usr/tblSAPLSE16NSELFIELDS_TC/btnPUSH[4,1]").press
    session.findById("wnd[1]/tbar[0]/btn[21]").press
    'LE programme s'arrete la j'ai une fenetre qui me demande le chemin du fichier,
    'je selectionne le fichier text et clique sur ouvrir et le programme continue
    session.findById("wnd[1]").sendVKey 8
    session.findById("wnd[0]").sendVKey 8
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 574
    Points : 764
    Points
    764
    Par défaut
    Je crois que le souci, c'est que la fenêtre qui demande de choisir un fichier n'est pas une fenêtre SAP GUI, mais une fenêtre Windows. Du coup, le SAP GUI Scripting ne peut pas être utilisé dans ce cas là. Je n'ai pas de solution hélas.

  3. #3
    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,

    Une autre façon (je pense) serait d'ouvrir ton fichier qui contient les codes, copier la plage de ces codes et utiliser le bouton Charger du presse-papier.
    MPi²

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par parmi Voir le message
    Bonjour,

    Une autre façon (je pense) serait d'ouvrir ton fichier qui contient les codes, copier la plage de ces codes et utiliser le bouton Charger du presse-papier.
    Merci pour vos réponses,
    j'ai tenté cette solution (copier et coller dans le press papier) mais rien ne se passe non plus.

    Sophie

  5. #5
    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
    Essaie comme ceci.
    Le code qui suit est à mettre dans Excel
    Ma transaction, ici, se nomme ZSE16N, mais j'ai inscrit SE16N

    Ça prend un fichier avec des codes en colonnes A qui se nomme C:\Codes.xlsx
    Le résultat sera sauvegardé dans C:\Resultat.xls

    Change les chemins et noms au besoin.

    J'ai mis une référence à la librairie Sap Gui Scripting API qui se trouve dans c:\program files (x86)\sap\frontend\sapgui\sapfewse.ocx

    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
    Sub ZSE16N()
        Dim SapGuiAuto As Object
        Dim AppliSAP As SAPFEWSELib.GuiApplication
        Dim Connection As SAPFEWSELib.GuiConnection
        Dim Session As SAPFEWSELib.GuiSession
        Dim Chemin As String, Fichier As String
        Dim nbLignes As Long
        
        Set SapGuiAuto = GetObject("SAPGUI")
        If Not IsObject(SapGuiAuto) Then
            Exit Sub
        End If
        
        Set AppliSAP = SapGuiAuto.GetScriptingEngine()
        If Not IsObject(AppliSAP) Then
            Exit Sub
        End If
        
        Set Connection = AppliSAP.Connections(0)
        If Not IsObject(Connection) Then
            Exit Sub
        End If
        
        Set Session = Connection.Sessions(0)
        If Not IsObject(Session) Then
            Exit Sub
        End If
        
        Chemin = "C:\"
        Fichier = "Resultat.xls"
        
        Session.FindById("wnd[0]").Maximize
        Session.FindById("wnd[0]/tbar[0]/okcd").Text = "/nSE16N"       '"/nZSE16N"
        Session.FindById("wnd[0]").SendVKey 0
        Session.FindById("wnd[0]/usr/ctxtGD-TAB").Text = "MARC"
        Session.FindById("wnd[0]").SendVKey 0
        
        'Sélection de codes
        Session.FindById("wnd[0]/usr/tblSAPLSE16NSELFIELDS_TC/btnPUSH[4,1]").SetFocus
        Session.FindById("wnd[0]/usr/tblSAPLSE16NSELFIELDS_TC/btnPUSH[4,1]").Press
        
        'Ouverture du fichier qui contient les codes nécessaires
        Workbooks.Open "C:\Codes.xlsx"
        nbLignes = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
        ActiveSheet.Range("A2:A" & nbLignes).Copy
        
        Session.FindById("wnd[1]/tbar[0]/btn[24]").Press    'Copie les codes dans SAP
        Session.FindById("wnd[1]/tbar[0]/btn[8]").Press     'Ferme la fenêtres des codes
        Session.FindById("wnd[0]/tbar[1]/btn[8]").Press     'Démarre la transaction
        ActiveWorkbook.Close False                          'Ferme le fichier
        
        'Sauvegarde du fichier
        Session.FindById("wnd[0]/usr/cntlRESULT_LIST/shellcont/shell").PressToolbarContextButton "&MB_EXPORT"
        Session.FindById("wnd[0]/usr/cntlRESULT_LIST/shellcont/shell").SelectContextMenuItem "&PC"
        Session.FindById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").Select
        Session.FindById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").SetFocus
        Session.FindById("wnd[1]/tbar[0]/btn[0]").Press
        
        Session.FindById("wnd[1]/usr/ctxtDY_PATH").Text = Chemin        'Inscrit le chemin
        Session.FindById("wnd[1]/usr/ctxtDY_FILENAME").Text = Fichier   'inscrit le nom du fichier
        If Dir(Chemin & Fichier) <> "" Then Kill Chemin & Fichier       'supprime le fichier s'il existe déjà
        Session.FindById("wnd[1]/tbar[0]/btn[0]").Press                 'sauvegarde
        
        
        mgbox "Fichier sauvegardé"
        
        Exit Sub
    Erreur:
        If Err.Number = -2147221020 Or Err.Number = 614 Then
            MsgBox "Démarrer une session SAP", vbExclamation, "Erreur SAP"
            Application.WindowState = xlMaximized
        Else
            MsgBox Err.Number & vbCrLf & Err.Description
        End If
    
    End Sub
    MPi²

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 574
    Points : 764
    Points
    764
    Par défaut
    Au fait, si ton code est dans un fichier .VBS alors l'ouverture de fichier ne marchera pas, il faut le faire en macro VBA dans une application MS Office (Word, Excel...) et lancer la macro depuis ce logiciel. Du coup on peut aussi facilement mettre un texte dans le presse-papier avec DataObject défini dans C:\windows\system32\FM20.dll (dans l'éditeur VBA, l'ajouter via menu outils -> références) : Dim text As String Dim DO As New DataObject text = "test presse-papier" Call DO.SetText(text) Call DO.PutInClipboard

  7. #7
    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
    À partir d'Excel, seule une copie de plage suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("A2:A" & nbLignes).Copy
    MPi²

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 574
    Points : 764
    Points
    764
    Par défaut
    ah ben oui c'est vrai, pardon!

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par parmi Voir le message
    À partir d'Excel, seule une copie de plage suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("A2:A" & nbLignes).Copy
    Merci à tous cela fonctionne très bien!

    Sophie

Discussions similaires

  1. Formulaire contact html avec fichier texte dans zone de liste select
    Par lemask dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 14/01/2014, 14h54
  2. [MySQL] Inserer des données d'un fichier texte dans une tabbe
    Par hous04 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 28/11/2011, 19h25
  3. [HTML] Inserer un fichier text (".txt") dans une page HTML
    Par silverfab34 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/10/2007, 11h57
  4. Réponses: 6
    Dernier message: 30/05/2006, 11h41
  5. Réponses: 1
    Dernier message: 19/01/2006, 19h22

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