使用SAP 3.0 .NET Connector调用SAP事务/程序

问题描述 投票:1回答:1

我知道使用.NCo 3.0调用RFC函数的选项,但可以直接使用SAP Connector调用事务/程序吗? (比如使用SAP中定义的字段作为参数并填充它们,或使用变体,这样的东西?)。

This answer提供了一个我知道的解决方法,并且确定 - 我可以从我的C#代码中调用VBScript,但这不是我想要做的。我还检查了用sap-connector标记的所有64个问题但是如果有可能的话,没有任何地方可以直接回答。

我从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不可用

c# .net sap-connector
1个回答
1
投票

正如名称所示,CreateFunction创建了一个代理来调用SAP系统中启用远程的功能模块。您不能以这种方式调用事务或程序。我不知道有什么方法可以用SAP .Net Connector来报告。您链接的解决方案使用SAP Gui,它为SAP系统提供了显示图形元素的UI。 AFAIK,SAP NCo不提供此类界面,您无法从NCo调用报告。

但是,有些产品允许您执行事务并捕获其输出。我们使用产品Theobald Xtract来提取SAP ERP数据用于BI目的,但他们也有一个更通用的.Net库(Theobald ERPConnect)可用,可以提供此功能。它不会像调用函数和提取强类型数据那么简单,但通过一些过滤,您应该能够获得所需的输出。这些产品并不便宜,但它们提供了一套很好的功能,否则你将不得不重塑自己。

一些示例代码如何调用最终通过VBS-Scripts调用的事务。来自Theobald ERPConnect Knowledgbase

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();

}
© www.soinside.com 2019 - 2024. All rights reserved.