我知道使用.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不可用
正如名称所示,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();
}