JSimp81719
Для тех, кто хочет автоматизировать графический интерфейс SAP и может сделать это только через VBA и VB.Net. Вот простое решение для автоматизации SAP с помощью C#:
Сначала добавьте две ссылки:
Сапфевселиб
SapROTWr <---- этот файл находится в папке, где был установлен SAP.
Затем добавьте операторы using:
using SAPFEWSELib;
using SapROTWr;
Как только они будут добавлены, добавьте к кнопке следующее:
//Get the Windows Running Object Table
SapROTWr.CSapROTWrapper sapROTWrapper = new SapROTWr.CSapROTWrapper();
//Get the ROT Entry for the SAP Gui to connect to the COM
object SapGuilRot = sapROTWrapper.GetROTEntry("SAPGUI");
//Get the reference to the Scripting Engine
object engine = SapGuilRot.GetType().InvokeMember("GetScriptingEngine", System.Reflection.BindingFlags.InvokeMethod, null, SapGuilRot, null);
//Get the reference to the running SAP Application Window
GuiApplication GuiApp = (GuiApplication)engine;
//Get the reference to the first open connection
GuiConnection connection = (GuiConnection)GuiApp.Connections.ElementAt(0);
//get the first available session
GuiSession session = (GuiSession)connection.Children.ElementAt(0);
//Get the reference to the main "Frame" in which to send virtual key commands
GuiFrameWindow frame = (GuiFrameWindow)session.FindById("wnd[0]");
Этот пример работает точно так же, как и версия Visual Basic.
Если вы хотите ввести текст в текстовое поле в SAP, вы должны явно привести объект к правильному типу переменной
примером ввода номера заказа в транзакцию CO02 может служить:
GuiTextField ordNum = (GuiTextField)session.FindById("wnd[0]/usr/ctxtCAUFVD-AUFNR");
ordNum.Text = textBox1.Text;
frame.SendVKey(0);
Dave Kreskowiak
Не бросайте новый ответ на старый вопрос (этому полтора года!). Если у вас есть что-то полезное, как это, напишите совет/трюк или даже статью, если вы можете достаточно подробно рассказать о том, как и почему.
JSimp81719
Дэйв, ты абсолютно прав, я должен. Проблема в том, что этот поиск появился как один из лучших поисков google, и поскольку я успешно нашел способ установить ссылку COM на SAP, я подумал, что поделюсь этим, поскольку там почти ничего нет, кроме людей, которые могут иметь доступ к нему .Сетевой разъем; которого у меня нет. Итак, я сожалею, что разместил это на таком старом посту, но подумал, что это может быть полезно для тех, кто сам наткнулся на него. Или, по крайней мере, твердый ответ для исторических целей. Однако Спасибо за ваши отзывы
Hari prakash R
я не могу использовать FindById. Когда я использую его, я получаю такую ошибку во время выполнения.
-> сервер выдал исключение. (Исключение из HRESULT: 0x80010105 (RPC_E_SERVERFAULT)). Пожалуйста, я решу эту ошибку