【问题标题】:SAP .Net Connector 3.0 - How can I send an idoc from a non-SAP system?SAP .Net 连接器 3.0 - 如何从非 SAP 系统发送 idoc?
【发布时间】:2018-01-03 09:07:51
【问题描述】:

我正在尝试使用 .Net 连接器将数据发送到 SAP 系统。我已经能够很容易地向 RFC 功能模块发送调用,但似乎没有任何方法可以直接发送标准 Idoc。这很奇怪,因为 Idocs 应该是与 SAP 对话的标准通信工具。

有没有人发现是否/如何做到这一点?

【问题讨论】:

    标签: .net sap connector idoc


    【解决方案1】:

    据我所知,目前 SAP 没有为 .NET 连接器 (NCo) 提供用于处理 IDoc 的开发库。如果你想使用 NCo,你必须自己编写这个 IDoc 处理的东西。这是可能的,因为 IDoc 通常也是通过调用特殊的远程功能模块(例如 IDOC_INBOUND_ASYNCHRONOUS)来传输的。但这会变得非常麻烦和困难,特别是如果它还应该与非 unicode ABAP 系统和多字节代码页(如中文、日文或韩文)一起使用。

    但如果您不需要坚持使用 NCo,我认为使用 IDocs 进行自己开发的最简单方法是切换到 Java 并将 SAP Java 连接器 (JCo) 与 SAP Java IDoc 类库结合使用添加在。 NCo 和 JCo 有一个非常相似的 API,但不幸的是,.NET 环境缺少这个 Java IDoc 类库插件——至少 SAP 不提供它,而且我也不知道任何其他 .NET 库为此.

    【讨论】:

    • 你是对的。我必须使用 SDATA 中的 idoc 对 IDOC_INBOUND_ASYNCHRONOUS 进行 RFC 调用。谢谢
    • 感谢您的反馈。但请注意,IDOC_INBOUND_ASYNCHRONOUS 的两个表中的其他字段也有含义,必须一致填写。如果没有 IDoc 元数据(偏移量和长度),您也无法将段内的单个 IDoc 字段填充/修改为 SDATA。如果您已经将段数据作为连续的字符数据块,则将 SDATA 作为一个完整的字符串填充可能不适用于非 unicode 多字节代码页,其中字符的长度可以是一个、两个甚至更多字节(所有这些都是用作 SDATA 字符数组中的混合)。
    • 你说的也对。我的回答只是总体说明我做了什么,但正如你所指定的,我也填写了控制记录,并且我通过查询 SAP 以了解段的结构以正确发送我的数据,以编程方式处理了偏移量/长度。
    • 好的。好像你知道你在做什么。竖起大拇指! :-)
    【解决方案2】:

    NCO 中没有发送 IDOC 的功能,NCO 旨在使用 .NET 开发 RFC 客户端或 RFC 服务器。一个简单的堆栈搜索我发现了以下一些建议,如果这仍然是您想要的方式,可能会对您有所帮助。

    How to create and send Idocs to SAP using SAP .Net Connector 3

    顺便说一句,我不会说 IDOC 是 SAP 的标准通信工具,它是众多工具之一,它们都同样有效,所以只取决于您的情况。

    稍后...

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      相关资源
      最近更新 更多