1

我知道使用 .NCo 3.0 调用 RFC 函数的选项,但是否可以直接使用 SAP 连接器调用事务/程序?(就像使用 SAP 中定义的字段作为参数并填充它们,或者使用变体,像这样?)。

这个答案提供了一个我知道的解决方法,并且可以肯定 - 我可以从我的 C# 代码中调用一个 VBScript,但这不是我想要做的。我还检查了所有 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 不可用

4

1 回答 1

1

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

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

一些示例代码如何调用最终通过 VBS 脚本调用的事务。来自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();

}
于 2018-09-07T09:14:02.590 回答