如何使用 SAP .Net 连接器 3 创建 Idocs 并将其发送到 SAP

Posted

技术标签:

【中文标题】如何使用 SAP .Net 连接器 3 创建 Idocs 并将其发送到 SAP【英文标题】:How to create and send Idocs to SAP using SAP .Net Connector 3 【发布时间】:2016-04-26 01:43:58 【问题描述】:

我想使用 SAP 创建 idocs 并将其发送到 SAP。网络连接器 3.x.

我的应用程序中有一个配置的 RFC 目标:

 _rfcDestination = RfcDestinationManager.GetDestination(_destinationName);

但我找不到任何关于如何创建和发送 idocs 的示例。

谁能提供一些关于如何创建和发送 idoc 的示例代码?

【问题讨论】:

SAP NCo 3.0 没有任何用于 IDOC 处理的内置功能集,如 Java 版本或某些 api (如 ERP Connect)已构建。不借助 SAP NCo 的一种方法是通过 HTTP,您可以在本文中看到它,scn.sap.com/community/pi-and-soa-middleware/blog/2012/01/14/… 您将需要您的基础来帮助您建立合作伙伴资料等,但您可以将真正的 XML 发布到网络服务并生成和 IDOC。 【参考方案1】:

使用 NCo 将 idocs 提交到 SAP 系统的一种方法是功能模块IDOC_INBOUND_ASYNCHRONOUS。功能模块有几个包含您的 idoc 数据的表参数。表IDOC_CONTROL_REC_40 包含控制记录,IDOC_DATA_REC_40 包含 idoc 数据段。

IDOC_DATA_REC_40 包含一个名为SDATA 的字段。该字段包含作为具有固定字段长度的单个连接字符串的idoc 段数据。

var fnc = destination.Repository.CreateFunction("IDOC_INBOUND_ASYNCHRONOUS");
var controlTable = fnc.GetTable("IDOC_CONTROL_REC_40");
var dataTable = fnc.GetTable("IDOC_DATA_REC_40");

// control segment
controlTable.Append();
controlTable.CurrentRow.SetValue("TABNAM", "EDI_DC40  ");
...


// here you add the data segments
dataTable.Append();
dataTable.CurrentRow.SetValue(...);

fnc.Invoke(destination);

IDOC_DATA_REC_40-SDATA 的 idoc 数据的构建必须在您的代码中手动完成 - 您需要知道字段长度,包括数字字段的数字。可能有一种方法可以从 SAP 系统获取该信息并在您的代码中使用它,但我从未尝试过。

【讨论】:

以上是关于如何使用 SAP .Net 连接器 3 创建 Idocs 并将其发送到 SAP的主要内容,如果未能解决你的问题,请参考以下文章

.Net 连接器,用于带有 .Net Core 的 SAP HANA

尝试从 SAP HANA DB 创建实体模型时出现连接错误

[Step By Step]用信息设计工具IDT创建从SAP Business Object到SAP HANA的连接

php调用sap和.net的webservices接口

JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用

JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用