搜索

第 289 章 SAP 组件

download PDF

SAP 组件是一个由 10 个不同的 SAP 组件套件组成的软件包。有支持 sRFC、tRFC 和 qRFC 协议的远程函数调用(RFC)组件;还有 IDoc 组件使用 IDoc 格式的消息来促进通信。组件使用 SAP Java Connector (SAP JCo)库来简化与 SAP 和 SAP IDoc 库的双向通信,以促进 Intermediate 文档(IDoc)格式的文档传输。

289.1. 概述

依赖项

Maven 用户需要在其 pom.xml 文件中添加以下依赖项以使用这个组件:

<dependency>
    <groupId>org.fusesource</groupId>
    <artifactId>camel-sap</artifactId>
    <version>x.x.x</version>
<dependency>

SAP 组件的其他平台限制

因为 SAP 组件依赖于第三方 JCo 3 和 IDoc 3 库,所以只能在这些库支持的平台上安装。有关支持的库版本和平台限制的详情,请参阅 Red Hat JBoss Fuse 支持的配置

SAP JCo 和 SAP IDoc 库

使用 SAP 组件的先决条件是将 SAP Java Connector (SAP JCo)库和 SAP IDoc 库安装到 Java 运行时的 lib/ 目录中。您必须确保从 SAP Service Marketplace 下载适合作为目标操作系统的 SAP 库集合。

库文件的名称因目标操作系统而异,如 表 289.1 “所需的 SAP 库” 所示。

表 289.1. 所需的 SAP 库
SAP 组件Linux 和 UNIXWindows

SAP JCo 3

sapjco3.jar

libsapjco3.so

sapjco3.jar

sapjco3.dll

SAP IDoc

sapidoc3.jar

sapidoc3.jar

在 Fuse OSGi 容器中部署

您可以将 SAP JCo 库和 SAP IDoc 库安装到 JBoss Fuse OSGi 容器中,如下所示:

  1. 从 SAP Service Marketplace 下载 SAP JCo 库和 SAP IDoc 库,确保为您的操作系统选择适当的库版本。http://service.sap.com/public/connectorshttp://service.sap.com/public/connectors

    注意

    您必须有一个 SAP Service Marketplace 帐户 才能下载和使用这些库。

  2. sapjco3.jarlibsapjco3.so (或 Windows 中的 sapjco3.dll )和 sapidoc3.jar 库文件复制到 Fuse 安装的 lib/ 目录中。
  3. 在文本编辑器中打开 配置属性文件 etc/config.properties 以及自定义属性文件 etc/custom.properties。在 etc/config.properties 文件中,查找 org.osgi.framework.system.packages.extra 属性并复制完整的属性设置(此设置通过反斜杠字符 \ 进行扩展),使用反斜杠字符 \ 来指示行。现在,将此设置粘贴到 etc/custom.properties 文件中。

    现在,您可以添加支持 SAP 库所需的额外软件包。在 etc/custom.properties 文件中,将所需的软件包添加到 org.osgi.framework.system.extra 设置中,如下所示:

    org.osgi.framework.system.packages.extra = \
     ... , \
     com.sap.conn.idoc, \
     com.sap.conn.idoc.jco, \
     com.sap.conn.jco, \
     com.sap.conn.jco.ext, \
     com.sap.conn.jco.monitor, \
     com.sap.conn.jco.rt, \
     com.sap.conn.jco.server

    别忘了在新条目的每一行的结尾包含一个逗号和反斜杠 \,以便列表能够正确地继续。

  4. 您需要重启容器才能使这些更改生效。
  5. 您需要在容器中安装 camel-sap 功能。在 Karaf 控制台中,输入以下命令:

    JBossFuse:karaf@root> features:install camel-sap

在 JBoss EAP 容器中部署

要在 JBoss EAP 容器中部署 SAP 组件,请执行以下步骤:

  1. 从 SAP Service Marketplace 下载 SAP JCo 库和 SAP IDoc 库,确保为您的操作系统选择适当的库版本。http://service.sap.com/public/connectorshttp://service.sap.com/public/connectors

    注意

    您必须有一个 SAP Service Marketplace 帐户 才能下载和使用这些库。

  2. 将 JCo 库文件和 IDoc 库文件复制到 JBoss EAP 安装的适当子目录中。例如,如果您的主机平台是 64 位 Linux (linux-x86_64),则按如下方式安装库文件:

    cp sapjco3.jar sapidoc3.jar $JBOSS_HOME/modules/system/layers/fuse/com/sap/conn/jco/main/
    mkdir -p $JBOSS_HOME/modules/system/layers/fuse/com/sap/conn/jco/main/lib/linux-x86_64
    cp libsapjco3.so $JBOSS_HOME/modules/system/layers/fuse/com/sap/conn/jco/main/lib/linux-x86_64/
    重要

    对于将原生库(如 libsapjco3.so)安装到 JBoss EAP 安装中,对库子目录命名有一个标准化的约定,必须遵循它们。如果是 64 位 Linux,子目录是 linux-x86_64。有关其他平台,请参阅 https://docs.jboss.org/author/display/MODULES/Native+Libraries

  3. 创建一个名为 $JBOSS_HOME/modules/system/layers/fuse/org/wildfly/camel/extras/main/module.xml 的新文件,并添加以下内容

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.1" name="org.wildfly.camel.extras">
    
    	<dependencies>
    		<module name="org.fusesource.camel.component.sap" export="true" services="export" />
    	</dependencies>
    
    </module>

URI 格式

SAP 组件提供两种不同的端点:远程功能调用(RFC)端点和 Intermediate Document (IDoc)端点。

RFC 端点的 URI 格式如下:

sap-srfc-destination:destinationName:rfcName
sap-trfc-destination:destinationName:rfcName
sap-qrfc-destination:destinationName:queueName:rfcName
sap-srfc-server:serverName:rfcName[?options]
sap-trfc-server:serverName:rfcName[?options]

IDoc 端点的 URI 格式如下:

sap-idoc-destination:destinationName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]]
sap-idoclist-destination:destinationName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]]
sap-qidoc-destination:destinationName:queueName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]]
sap-qidoclist-destination:destinationName:queueName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]]
sap-idoclist-server:serverName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]][?options]

带有 sap-endpointKind-destination 前缀的 URI 格式用于定义目标端点(换句话说,Camel producer 端点),destinationName 是与 SAP 实例的特定出站连接的名称。出站连接在组件级别上命名和配置,如 第 289.2.2 节 “目标配置” 所述。

带有 sap-endpointKind-server 前缀的 URI 格式用于定义服务器端点(换句话说,Camel consumer 端点),serverName 则是来自 SAP 实例的特定入站连接的名称。入站连接在组件级别上命名和配置,如 第 289.2.3 节 “服务器配置” 所述。

RFC 端点 URI 的其他组件如下:

rfcName
(必需) 在目的地端点 URI 中,是连接的 SAP 实例中端点调用的 RFC 名称。在服务器端点 URI 中,是从连接的 SAP 实例调用时端点处理的 RFC 名称。
queueName
指定此端点将 SAP 请求发送到的队列。

IDoc 端点 URI 的其他组件如下:

idocType
(必需) 指定此端点生成的 IDoc 类型的基本 IDoc 类型。
idocTypeExtension
指定此端点生成的 IDoc Type Extension (若有)。
systemRelease
指定此端点生成的 IDoc 的相关 SAP Basis Release。
applicationRelease
Specifes相关的 Application Release (如果有)由这个端点生成的 IDoc。
queueName
指定此端点将 SAP 请求发送到的队列。

RFC 目标端点的选项

RFC 目标端点(sap-srfc-destinationsap-trfc-destinationsap-qrfc-destination)支持以下 URI 选项:

名称default描述

有状态

false

如果为 true,指定此端点启动 SAP 有状态会话

transacted

false

如果为 true,指定此端点启动 SAP 事务

RFC 服务器端点的选项

SAP RFC 服务器端点(sap-srfc-serversap-trfc-server)支持以下 URI 选项:

名称default描述

有状态

false

如果为 true,指定此端点启动 SAP 有状态会话。

propagateExceptions

false

(仅限 SAP-trfc-server 端点) 如果为 true,指定此端点在 SAP 中的调用者将异常传播回 SAP 中的调用者,而不是交换异常处理程序

IDoc List 服务器端点的选项

SAP IDoc List Server 端点(sap-idoclist-server)支持以下 URI 选项:

名称default描述

有状态

false

如果为 true,指定此端点启动 SAP 有状态会话。

propagateExceptions

false

如果为 true,指定此端点在 SAP 中将异常传播回调用者,而不是交换异常处理器

RFC 和 IDoc 端点概述

SAP 组件软件包提供以下 RFC 和 IDoc 端点:

sap-srfc-destination

JBoss Fuse SAP 同步远程功能调用目标 Camel 组件.如果 Camel 路由需要同步向 SAP 系统发送到和响应的请求,则使用此端点。

注意

此组件使用的 sRFC 协议提供了 SAP 系统以及从 具有最佳努力的 SAP 系统的请求和响应。如果在发送请求时出现通信错误,接收 SAP 系统中的远程功能调用的完成状态将保持在 有疑问

sap-trfc-destination

JBoss Fuse SAP 交易远程功能调用目标 Camel 组件.当请求必须 最多传送到接收 SAP 系统时,应该使用这个端点。为实现这一目标,组件会生成事务 ID tid,它包括了通过路由交换中组件发送的每个请求。接收 SAP 系统 记录在 发出请求前附带的请求;如果 SAP 系统再次收到请求,则不会提供请求。因此,如果路由在通过这个组件的端点发送请求时遇到通信错误,它可以在同一交换中重试发送请求并只能进行一次。

注意

此组件使用的 tRFC 协议是异步的,不会返回响应。因此,此组件的端点不会返回响应信息。

注意

此组件不能通过端点保证一系列请求的顺序,这些请求的交付和执行顺序因通信错误而在接收 SAP 系统中有所不同。有关保证的交付顺序,请参阅 JBoss Fuse SAP Queued Remote Function Call Destination Camel 组件。

sap-qrfc-destination

JBoss Fuse SAP Queued Remote Function 调用目标 Camel 组件.此组件通过添加 JBoss Fuse Transactional Remote Function Call Destination camel 组件来扩展 JBoss Fuse 行动 远程功能,从而通过其端点提供请求交付保证。如果一系列请求相互依赖,并且必须 最多 传送到接收 SAP 系统并按顺序将这个端点发送到接收 SAP 系统时,应该使用 此端点。该组件使用与 JBoss Fuse SAP 事务性远程功能调用目标 Camel 组件相同的机制,实现大多数 交付保证。排序保证通过将请求按 SAP 系统接收的顺序序列化为 入站队列 来实现。入站队列由 SAP 中的 QIN 调度程序 处理。当 激活 入站队列时,QIN 调度程序将按顺序执行队列请求。

注意

此组件使用的 qRFC 协议是异步的,且不会返回响应。因此,此组件的端点不会返回响应信息。

sap-srfc-server
JBoss Fuse SAP 同步远程功能调用服务器 Camel 组件.如果 Camel 路由需要同步处理来自 SAP 系统的请求以及响应 SAP 系统,则应该使用此组件及其端点。
sap-trfc-server
JBoss Fuse SAP 交易远程功能调用服务器 Camel 组件.当发送 SAP 系统需要 一次 将其请求发送到 Camel 路由时,应使用此端点。为实现这一目标,发送 SAP 系统会生成事务 ID tid,它会为每个请求发送给组件的端点。发送 SAP 系统将首先检查组件,在发送与 tid 相关的一系列请求之前,是否收到了相应的组件。该组件将检查收到的 tid列表,记录所发送的 tid (如果尚未在该列表中),然后响应发送 SAP 系统,指明是否已记录 tid。发送 SAP 系统只有在之前未记录 tid 时发送一系列请求。这可让发送 SAP 系统以可靠地发送一系列请求一次到 camel 路由。
sap-idoc-destination
JBoss Fuse SAP IDoc Destination Camel 组件.当需要 Camel 路由向 SAP 系统发送 Intermediate 文档(IDoc)列表时,应该使用此端点。
sap-idoclist-destination
JBoss Fuse SAP IDoc List Destination Camel 组件.当需要 Camel 路由向 SAP 系统发送 Intermediate 文档(IDocs)列表时,需要使用此端点。
sap-qidoc-destination
JBoss Fuse SAP Queued IDoc Destination Camel 组件.如果 Camel 路由需要向 SAP 系统发送 Intermediate 文档(IDoc)列表,则应该使用此组件及其端点。
sap-qidoclist-destination
JBoss Fuse SAP Queued IDoc List Destination Camel 组件.如果需要 camel route 列表来向 SAP 系统发送 Intermediate 文档(IDocs)列表,则应该使用这个组件及其端点。
sap-idoclist-server
JBoss Fuse SAP IDoc List Server Camel 组件.如果发送 SAP 系统需要向 Camel 路由发送 Intermediate 文档列表,则使用这个端点。此组件使用 tRFC 协议与 SAP 通信,如 sap-trfc-server-standalone quick start 所述。

SAP RFC 目标端点

RFC 目的地端点支持到 SAP 的出站通信,这使得这些端点使 RFC 调用 SAP 中的 ABAP 功能模块。将 RFC 目标端点配置为通过与 SAP 实例的特定连接进行 RFC 调用特定的 ABAP 功能。RFC 目的地是出站连接的逻辑设计,具有唯一的名称。RFC 目的地由一组称为 目标数据 的连接参数指定。

RFC 目的地端点将从接收的 IN-OUT 交换的输入消息中提取 RFC 请求,并在向 SAP 函数调用该请求进行分配。来自功能调用的响应将在交换的输出消息中返回。由于 SAP RFC 目的地端点仅支持出站通信,因此 RFC 目标端点仅支持创建制作者。

SAP RFC 服务器端点

RFC 服务器端点支持 SAP 的入站通信,它允许 SAP 中的 ABAP 应用程序向服务器端点发出 RFC 调用。ABAP 应用程序与 RFC 服务器端点交互,就像它是远程功能模块一样。RFC 服务器端点配置为通过 SAP 实例的特定连接接收 RFC 调用特定的 RFC 功能。RFC 服务器是入站连接的逻辑设计,具有唯一的名称。RFC 服务器通过一组称为 服务器数据 的连接参数 指定。

RFC 服务器端点将处理传入的 RFC 请求,并将其作为 IN-OUT 交换的输入信息进行分配。交换的输出信息将作为 RFC 调用的响应返回。由于 SAP RFC 服务器端点仅支持入站通信,因此 RFC 服务器端点只支持创建用户。

SAP IDoc 和 IDoc list目的地端点

IDoc 目的地端点支持对 SAP 的出站通信,然后可以对 IDoc 消息执行进一步处理。IDoc 文档代表业务交易,可轻松与非 SAP 系统交换。IDoc 目的地由一组称为 目标数据 的连接参数指定。

IDoc 列表目的地端点与 IDoc目的地端点类似,除了它处理的消息由 IDoc 文档列表组成。

SAP IDoc list服务器端点

IDoc list服务器端点支持 SAP 的入站通信,启用 Camel 路由从 SAP 系统接收 IDoc 文档列表。IDoc list服务器由一组称为 服务器数据 的连接参数指定。

meta-data 软件仓库

meta-data 存储库用于存储以下元数据类型:

功能模块的接口描述
JCo 和 ABAP 运行时使用此元数据数据来检查 RFC 调用,以确保在分配这些调用前确保通信合作伙伴之间数据的类型安全传输。存储库填充了存储库数据。存储库数据是指定功能模板的映射。功能模板包含 meta-data,用于描述所有参数以及传递给和从 function 模块传递的信息,并且具有它所描述的功能模块的唯一名称。
IDoc 类型描述
IDoc 运行时使用此元数据来确保在向通信合作伙伴发送前正确格式化 IDoc 文档。基本 IDoc 类型由名称、允许的网段列表以及网段之间分层关系的描述组成。可以在网段上实施一些额外的限制:片段可以是强制或可选的;可以为每个网段指定最小/最大范围(保留该片段的允许重复请求的数量)。

因此,SAP 目的地和服务器端点需要访问存储库,以便发送和接收 RFC 调用,以便发送和接收 IDoc 文档。对于 RFC 调用,由端点调用和处理的所有功能模块的 meta-data 必须位于存储库中;对于 IDoc 端点,端点处理的所有 IDoc 类型和 IDoc 类型扩展必须位于存储库中。由目标和服务器端点使用的存储库的位置在目的地数据和对应连接的服务器数据中指定。

如果是 SAP 目标端点,它所使用的存储库通常位于 SAP 系统中,它默认为它所连接的 SAP 系统。此默认值在目标数据中不需要显式配置。此外,针对远程功能调用的 meta-data,目标端点发出的元数据将已经存在,用于它调用的任何现有功能模块。由目的地端点发出的元数据需要 SAP 组件中的配置。

另一方面,由服务器端点处理的函数调用的元数据通常不驻留在 SAP 系统的存储库中,而是必须由位于 SAP 组件中的存储库提供。SAP 组件维护了一个名为 meta-data 存储库的映射。存储库的名称对应于它提供 meta-data 的服务器名称。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.