Comment puis-je automatiser SAP GUI avec c#
Je voudrais automatiser le déploiement de SAP GUI fenêtre en utilisant le langage C#. Je suis capable de le faire en VBScript, mais la réutilisation de code est horrible. En plus de l'Id comme pour l'utilisation de thread au lieu de 80 ou plus, les processus en cours d'exécution. Où puis-je trouver de la documentation et des échantillons de comment faire cela? Voici le code, je travaille avec. Fondamentalement, le problème, je suis confronté est - comment puis-je établir une connexion à SAP GUI puis de créer un SAP GUI sur le voler, puis commencer à faire des transactions et la saisie de texte dans certains domaines.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using White.Core.Factory;
using White.Core.UIItems.Finders;
using White.Core.InputDevices;
using System.Threading;
using System.Diagnostics;
using SAP.Connector;
using SAP;
namespace SAP_Automation
{
class Program
{
public static void Main(string[] args)
{
string ExeSourceFile = @"C:\Program Files\SAP\SapSetup\setup\SAL\SapLogon.s8l";
White.Core.Application _application;
White.Core.UIItems.WindowItems.Window _mainWindow;
var c = SAP.Connector.Connection.GetConnection("**");
var c = new SAPConnection("ASHOST=*; GWHOST=*; GWSERV=*; ASHOST=*; SYSNR=00;USER=user; PASSWD=**;");
c.Open();
}
}
}
}
Comme vous pouvez le voir, je peux créer une connexion, mais je ne sais pas comment créer une session sur l'interface graphique et de commencer la saisie du texte dans les champs. Des exemples et des échantillons serait appréciée.
- J'ai eu d'excellents chance dans la conversion de code VBScript pour une 3ème Partie du programme qui communique par l'intermédiaire de la COM au travail. Pour la plupart partie, j'ai été capable de faire une simple conversion de l'un à l'autre lorsque l'affacturage les différences de langage. Avez-vous essayé cela?
- Oui, nous avons beaucoup de code VBScript qui automatise SAP. Mais, nous ne pouvons pas établir une connexion à la SAPGUI. Ce code VB n'est pas traduisible en c#. Il n'est pas le cas sur l'internet qui donne un exemple de cette. @Hans - oui de script est activé et que nous sommes en mesure d'automatiser certaines parties, mais nous sommes incapables d'automatiser le lancement d'une fenêtre SAP en C#.
- Il semble que le SAP .NET client a la RFC et du SAVON de soutien, de t'aider ou vous êtes obligés de travailler dans le GUI?
- J'ai juste essayé de cela et de son travail comme un charme... mais après le sap forme de feu et obtenu directement dans la transaction si l'utilisateur veut fermer l'sap forme il ne peut pas...à moins qu'il n'en application winforms. Est-il possible d'ouvrir sap transaction fenêtre de l'application winforms et le fermer sans fermer l'ensemble de l'application
Vous devez vous connecter pour publier un commentaire.
Cela pourrait être nécro-threading, mais j'ai été dans une situation similaire où je travaille. Nous avons besoin de SAP GUI Automatisation des fins de test qui peut s'intégrer avec le reste de notre maison " plate-forme d'automatisation écrit en C#. J'ai contribué à créer une proposition pour une solution qui a profité d'un SAP a fourni de la bibliothèque de l'interface d'automatisation qui peut être utilisé comme base pour une automatisation de la couche de SAP.
Le fichier suivant sur votre SAP fichier d'installation? x:\Program Files\SAP\FrontEnd\SAPGui\sapfewse.ocx?
Si oui, l'ajouter à Visual Studio (ou autre IDE que vous utilisez) comme référence. Il s'agit d'une bibliothèque de classe qui contient un tas de SAP objets spécifiques qui vous permettront d'interagir avec. Il est très efficace car il expose la plupart de ce que vous avez besoin à partir de l'interface utilisateur de SAP. Nous avons découvert dans d'autres tentatives que beaucoup d'objets dans SAP n'étaient pas disponibles.
C'est un début de preuve de concept que j'ai fait. Démarrage de SAP avec une chaîne de connexion, entrez les informations d'identification, puis accédez à un code de transaction.
Vous avez raison, il n'y a pas beaucoup de documentation sur ce sujet. Ci-dessous sont quelques-uns des sources qui m'ont aidé à obtenir commencé
-Source d'origine de notre plan
http://scn.sap.com/thread/1729689
-La Documentation sur l'API (Pour VB et javascript, mais les règles générales et les objets sont identiques). Certainement lu la partie sur l'interface utilisateur de SAP Exécution de la hiérarchie. Il va répondre à beaucoup de questions.
http://www.synactive.com/download/sap%20gui%20scripting/sap%20gui%20scripting%20api.pdf
Il est très important ici de comprendre ce UI Automation peut faire et de ce que ses limites. Il a été conçu pour automatiser une interface utilisateur et de ses capacités. Vous pouvez cliquer sur les boutons d'entrer du texte dans une zone de texte, déplacer des fenêtres, etc, tout ce que l'utilisateur peut faire à l'aide de la souris et du clavier.
Ce qu'il peut pas faire est de combler le grand mur que le système d'exploitation met en place entre les processus. Un mur qui empêche à un processus d'accéder à la mémoire d'un autre processus. C'est un très important de la sécurité et dispositif de sécurité. Pour l'un empêche un processus d'accéder à des données qui doivent être privé d'un processus. Comme un mot de passe. Et de l'autre, il s'arrête un fracas processus de toucher d'autres processus qui s'exécutent sur la machine. Vous pouvez tuer un processus avec le Gestionnaire de Tâches et de tout ce qui tient de l'automobile le long joyeusement comme si rien ne s'était passé.
Une conséquence de cela est que la création d'un SAPConnection objet dans votre programme est une connexion qui seulement votre programme peut utiliser. Il n'y a pas de mécanisme en quelque sorte passer cet objet à un autre processus avec UI Automation. Au mieux, vous pouvez utiliser les données que vous récupérez à partir de la connexion d'affecter ce que vous cliquez sur les boutons.
Le type de processus d'interopérabilité qui permettrait le partage de données entre les processus est bien pris en charge dans .NET. Faible niveau approches sont socket et des canaux nommés, de haut niveau sont d'accès distant et WCF. Les anciens programmes ont COM de soutien à l'Automatisation, Bureau en est un bon exemple de cela. Qui nécessite cependant une deux pour danser le tango, les deux programmes doivent être écrits de façon à tirer le meilleur parti.
Donc, si vous essayez d'automatiser un existant de l'application SAP et cette application ne prend pas explicitement en charge l'automatisation, de la sorte qu'un programme Office prend en charge, alors vous êtes un peu coincé avec seulement remplir les zones de texte et les boutons de clic.
Vous pouvez automatiser tout type d'application (navigateur, bureau, java, etc) avec UiPath.
Voici un tutoriel sur la façon d'automatiser la saisie de données, la navigation dans le menu et l'écran de grattage sur SAP.
Vous pouvez
Voici un échantillon de la C# code généré automatiquement:
Voici comment l'automatisation du flux de travail de SAP Business One, des menus, des boutons ou en tapant ressemble:
Et enfin la documentation du kit de développement est situé ici... dans le cas où vous ne souhaitez pas utiliser les flux de travail.
Remarque: je travaille à UiPath. Vous devriez également essayer d'autres outils d'automatisation comme l'Automatisation n'importe où, WinAutomation, Jacada, le Sélénium, le Ranorex utiliser côte à côte et de choisir celui qui convient le mieux à vos besoins.