Вызов транзакции / программы SAP с помощью коннектора SAP 3.0 .NET
Мне известна возможность вызова RFC-функций с помощью.NCo 3.0, но возможно ли вызывать транзакции / программы напрямую с помощью SAP Connector? (Например, использовать поля, определенные в SAP, в качестве параметров и заполнять их, или использовать вариант, как-то так?).
Этот ответ предоставляет обходной путь, о котором я знаю, и уверен - я мог бы вызвать VBScript из своего кода C#, но это не то, что я хочу делать. Я также проверил все 64 вопроса с тегами sap-connector
но не было прямого ответа, если это возможно или нет.
Также в документациях SAP, которые я получил с рынка SAP, вообще не упоминаются транзакции / программы. Означает ли это, что это не нужно / возможно?
Если да, то почему это можно сделать с помощью макросов / предварительно записанных VBScripts, но не с помощью.NET-Connector? Или я просто что-то делаю не так?
Когда я пытаюсь вызвать программу / транзакцию с использованием стандартного кода:
SAPHandle.ECCDestinationConfig cfg = new SAPHandle.ECCDestinationConfig();
RfcDestinationManager.RegisterDestinationConfiguration(cfg);
RfcDestination dest = RfcDestinationManager.GetDestination("QP2");
dest.Ping(); //works fine -> Connection is OK
RfcRepository repo = dest.Repository;
IRfcFunction zzmkalzzm23fnc = repo.CreateFunction("ZMZKALZZM23");
это дает мне следующую (ожидаемую) ошибку:
метаданные для функции ZMZKALZZM23 недоступны: FU_NOT_FOUND: функциональный модуль ZMZKALZZM23 недоступен
1 ответ
CreateFunction
Как уже следует из названия, создается прокси для вызова удаленного функционального модуля в системе SAP. Вы не можете вызвать транзакцию или программу таким образом. Я не знаю ни одного способа вызвать отчет с SAP .Net Connector
, В связанном решении используется SAP Gui, который предоставляет системе SAP интерфейс для отображения графических элементов. AFAIK, SAP NCo не предоставляет такой интерфейс, и вы не можете вызывать отчеты из NCo.
Тем не менее, есть продукты, которые позволяют выполнять транзакции и ловить их вывод. Мы используем продукт Theobald Xtract для извлечения данных SAP ERP для целей BI, но у них также есть более общая библиотека.Net (Theobald ERPConnect), которая может обеспечить эту функциональность. Это будет не так просто, как вызов функции и извлечение строго типизированных данных, но с некоторой фильтрацией вы сможете получить нужный результат. Эти продукты недешевы, но они предоставляют хороший набор функций, которые в противном случае вам пришлось бы заново изобретать.
Некоторые примеры кода, как вы могли бы вызвать транзакцию, которую вы в итоге вызывали через VBS-Scripts. Из базы знаний Theobald ERPConnect:
private void button1_Click(object sender, System.EventArgs e)
{
// Reset the batch steps
transaction1.BatchSteps.Clear();
// fill new steps
transaction1.ExecutionMode = ERPConnect.Utils.TransactionDialogMode.ShowOnlyErrors;
transaction1.TCode = "MMBE";
transaction1.AddStepSetNewDynpro("RMMMBEST","1000");
transaction1.AddStepSetOKCode("ONLI");
transaction1.AddStepSetCursor("MS_WERKS-LOW");
transaction1.AddStepSetField("MS_MATNR-LOW",textBox1.Text);
transaction1.AddStepSetField("MS_WERKS-LOW",textBox2.Text);
// connect to SAP
r3Connection1.UseGui = true;
R3Connection r3Connection1= new R3Connection("SAPServer",00,"SAPUser","Password","EN","800");
r3Connection1.Open(false);
// Run
transaction1.Execut e();
}