web-dev-qa-db-fra.com

Méthode générale VBA pour extraire des données de SAP

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!

11
S M Perron

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.

Exemple de code

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

Enregistrement de script

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: Customize Local Layout
Recherchez ensuite l'élément de menu Enregistrement et lecture de script.
Script Recording and Playback
À 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.

Edit: liaison tôt et tard

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.

30
AndASM