Quelqu'un sait-il comment utiliser VBA pour extraire des données de SAP Netweaver?
J'ai un certain nombre de rapports quotidiens qui nécessitent d'exporter des données de SAP vers Excel et de les formater dans un rapport. J'ai déjà écrit des macros VBA qui font le formatage. Je dois extraire manuellement les données et exécuter chaque macro de rapport individuellement. Tant de temps pourrait être économisé si ma macro pouvait simplement aller dans SAP, récupérer les données pour le rapport # 1, les formater, récupérer les données pour le rapport # 2, etc.
Je travaille avec SAP NetWeaver (version 730, version 7300.1.3.1079). Les rapports ne sont que des tableaux croisés dynamiques et des graphiques Excel.
Merci!
Tout dépend du type d'accès dont vous disposez à votre système SAP. Un programme ABAP qui exporte les données et/ou un RFC que votre macro peut appeler pour obtenir directement les données ou demander à SAP de créer le fichier est probablement le meilleur.
Cependant en règle générale, les personnes qui recherchent ce type de réponse recherchent une solution immédiate qui ne nécessite pas que leur service informatique passe des mois à personnaliser leur système SAP .
Dans ce cas, vous souhaiterez probablement utiliser SAP GUI Scripting. Les scripts SAP GUI vous permettent d'automatiser l'interface graphique SAP Windows de la même manière que vous automatisez Excel. En fait, vous pouvez appeler l'interface graphique SAP directement à partir d'une macro Excel. En savoir plus ici . L'interface graphique SAP dispose d'un outil d'enregistrement de macros tout comme Excel. Il enregistre les macros dans VBScript qui est presque identique à Excel VBA et peut généralement être copié et collé directement dans une macro Excel.
Voici un exemple simple basé sur un système SAP auquel j'ai accès.
Public Sub SimpleSAPExport()
Set SapGuiAuto = GetObject("SAPGUI") 'Get the SAP GUI Scripting object
Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI
Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
Set session = SAPCon.Children(0) 'Get the first session (window) on that connection
'Start the transaction to view a table
session.StartTransaction "SE16"
'Select table T001
session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").Text = "T001"
session.findById("wnd[0]/tbar[1]/btn[7]").Press
'Set our selection criteria
session.findById("wnd[0]/usr/txtMAX_SEL").text = "2"
session.findById("wnd[0]/tbar[1]/btn[8]").press
'Click the export to file button
session.findById("wnd[0]/tbar[1]/btn[45]").press
'Choose the export format
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").select
session.findById("wnd[1]/tbar[0]/btn[0]").press
'Choose the export filename
session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "test.txt"
session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Temp\"
'Export the file
session.findById("wnd[1]/tbar[0]/btn[0]").press
End Sub
Pour aider à trouver les noms d'éléments tels que wnd[1]/tbar[0]/btn[0]
, Vous pouvez utiliser l'enregistrement de script. Cliquez sur le bouton personnaliser la disposition locale, il ressemble probablement à ceci:
Recherchez ensuite l'élément de menu Enregistrement et lecture de script.
À l'intérieur de cela, le bouton More
vous permet de voir/modifier le fichier dans lequel le script VB est enregistré. Le format de sortie est un peu brouillon, il enregistre des choses comme la sélection de texte, un clic dans un champ de texte, etc.
Le script fourni devrait fonctionner s'il est copié directement dans une macro VBA. Il utilise une liaison tardive, la ligne Set SapGuiAuto = GetObject("SAPGUI")
définit l'objet SapGuiAuto.
Si toutefois vous souhaitez utiliser la liaison anticipée afin que votre éditeur VBA puisse afficher les propriétés et les méthodes des objets que vous utilisez, vous devez ajouter une référence à sapfewse.ocx
Dans le dossier d'installation de SAP GUI.