Вызов транзакции / программы 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();

}
Другие вопросы по тегам