55.3. Configuration
SAP 组件维护三个映射来存储目标数据、服务器数据和存储库数据。目标 数据存储和 服务器数据存储在 特殊的配置对象 SapConnectionConfiguration 上配置,它会自动注入到 SAP 组件(在蓝图 XML 配置或 Spring XML 配置文件的上下文)。存储库数据存储 必须直接在相关的 SAP 组件上配置。
55.3.1. 配置概述 复制链接链接已复制到粘贴板!
SAP 组件维护三个映射来存储目标数据、服务器数据和存储库数据。组件的属性 destinationDataStore 来存储目标名称的密钥,属性 serverDataStore,存储由服务器名称密钥的服务器数据,以及属性 repositoryDataStore,存储由存储库名称密钥的存储库数据。这些配置必须在初始化过程中传递给组件。
示例
以下示例演示了如何在蓝图 XML 文件中配置目标数据存储和示例服务器数据存储。sap-configuration bean (类型为 SapConnectionConfiguration)将自动注入到此 XML 文件中使用的任何 SAP 组件中。
55.3.2. 目标配置 复制链接链接已复制到粘贴板!
目的地的配置在 SAP 组件的 destinationDataStore 属性中维护。此映射中的每个条目配置与 SAP 实例的唯一出站连接。每个条目的 key 是出站连接的名称,用于目的地端点 URI 的 destinationName 组件,如 URI 格式部分所述。
每个条目的值是目标数据配置对象 - org.fusesource.camel.component.sap.model.rfc.impl.DestinationDataImpl - 指定出站 SAP 连接的配置。
目标配置示例
以下蓝图 XML 代码演示了如何使用名称 quickstartDest 配置示例目的地。
例如,在按照上述蓝图 XML 文件配置目的地后,您可以使用以下 URI 在 quickstartDest 目的地上调用 BAPI_FLCUST_GETLIST 远程功能调用:
sap-srfc-destination:quickstartDest:BAPI_FLCUST_GETLIST
sap-srfc-destination:quickstartDest:BAPI_FLCUST_GETLIST
55.3.2.1. tRFC 和 qRFC 目的地的拦截器 复制链接链接已复制到粘贴板!
前面的目的地配置示例显示 CurrentProcessorDefinitionInterceptStrategy 对象的实例化。此对象在 Camel 运行时安装拦截器,它允许 Camel SAP 组件在处理 RFC 事务时跟踪 Camel 路由中的位置。
对于事务的 RFC 目标端点(如 sap-trfc-destination 和 sap-qrfc-destination),且必须在 Camel 运行时中安装,以便正确管理出站 RFC 通信。如果在运行时找不到策略,则 Destination RFC Transaction Handlers 会在 Camel 日志中发出警告。在这种情况下,需要重新置备并重启 Camel 运行时来正确地管理出站事务的 RFC 通信。
55.3.2.2. 登录和验证选项 复制链接链接已复制到粘贴板!
下表列出了用于在 SAP 目标数据存储中配置目的地的 日志和身份验证选项 :
| Name | 默认值 | 描述 |
|
| SAP 客户端,在参数上强制的日志。 | |
|
| 登录 user,在 参数上登录基于密码的身份验证。 | |
|
| 可以使用登录用户别名,而不是登录用户。 | |
|
| 用于登录到 ABAP AS 的用户身份。JCo 运行时使用,如果目标配置使用 SSO/assertion ticket、证书、当前用户 , 或 SNC 环境进行身份验证。如果未设置用户和用户别名,则用户 ID 是必须的。此 ID 永远不会发送到 SAP 后端,它将在本地由 JCo 运行时使用。 | |
|
| 登录 password,在 参数上登录基于密码的身份验证。 | |
|
| 如果未定义,在语言中登录,则使用默认用户语言。 | |
|
| 使用指定的 SAP Cookie Version 2 作为基于 SSO 的身份验证的票据上的日志。 | |
|
| 使用指定的 X509 证书进行基于证书的身份验证。 | |
|
| 向第一次调用 - 1 (启用)发布身份验证。只用于特殊情况。 | |
|
| 使用可见、隐藏或者不使用 SAP GUI | |
|
| 参数上的其他日志,以定义用于转换参数日志的代码页面。只用于特殊情况。 | |
|
| 在登录后对 SSO 票据进行排序,目标属性中提供了获取的票据。 | |
|
|
如果设置为 |
55.3.2.3. 连接选项 复制链接链接已复制到粘贴板!
下表列出了用于在 SAP 目标数据存储中配置目的地的连接选项:
| Name | 默认值 | 描述 |
|
|
用于连接到 SAP 路由器后面的系统的 SAP 路由器字符串。SAP 路由器字符串包含 SAP 路由器的链及其端口号,并具有以下形式: | |
|
| SAP ABAP 应用服务器的系统号,对于直接连接是必需的。 | |
|
| SAP ABAP 应用服务器,用于直接连接。 | |
|
| SAP 消息服务器,用于负载平衡连接的必要属性。 | |
|
|
SAP 消息服务器端口,用于负载平衡连接的可选属性。为了解析服务名称 sapmsXXX,可在 | |
|
| 允许指定协调网关,该网关应用于建立到应用服务器的连接。如果没有指定,则使用应用服务器上的网关。 | |
|
| 应在使用 gwhost 时设置。允许指定该网关中使用的端口。如果没有指定,则使用应用服务器上的网关端口。为了解析服务名称 sapgwXXX 中,通过操作系统的网络层执行 etc/services 的查找。如果使用端口号而不是符号服务名称,则不会执行查找,且不需要额外的条目。 | |
|
| SAP 系统的系统 ID,用于负载平衡连接的必要属性。 | |
|
| SAP 应用服务器组,用于负载平衡连接的必要属性。 | |
|
|
|
根据 JCo 和目标系统之间的网络质量来设置这个值,以优化性能。有效值为 |
|
|
|
有效值为 line |
55.3.2.4. 连接池选项 复制链接链接已复制到粘贴板!
下表列出了用于在 SAP 目标数据存储中配置目的地的 连接池 选项:
| Name | 默认值 | 描述 |
|
|
|
可以为目标同时创建的活跃出站连接的最大数量。值 |
|
|
|
目的地保持打开的最大空闲出站连接数。值 |
|
| 在经过目标内部保存的空闲连接后,可以关闭的时间(毫秒)。 | |
|
| 目标检查发布的连接过期的时间(毫秒)。 | |
|
| 如果应用程序已经分配了最大允许的连接数,等待连接的最大时间(毫秒)。 |
55.3.2.5. 安全网络连接选项 复制链接链接已复制到粘贴板!
下表列出了用于在 SAP 目标数据存储中配置目的地 的安全网络选项 :
| Name | 默认值 | 描述 |
|
|
安全网络连接(SNC)模式、 | |
|
|
SNC 合作伙伴,例如: | |
|
|
SNC 安全级别: | |
|
| 本身 SNC 名称。覆盖环境设置。 | |
|
| 提供 SNC 服务的库路径。 |
55.3.2.6. 仓库选项 复制链接链接已复制到粘贴板!
下表列出了用于在 SAP 目标数据存储中配置目的地 的存储库 选项:
| Name | 默认值 | 描述 |
|
| 指定用作存储库的目的地。 | |
|
| 如果没有设置存储库目的地,并且设置了此属性,它将用作存储库调用的用户。这可让您使用其他用户进行存储库查找。 | |
|
| 存储库用户的密码。必需,如果使用存储库用户。 | |
|
|
(可选) 如果将 SNC 用于此目的地,则可以为存储库连接关闭它(如果此属性设为 | |
|
|
启用
如果没有设置属性,则目的地最初执行远程调用来检查 注: 如果存储库已经初始化(例如,由于某些其他目的地使用),此属性没有任何效果。通常,此属性与 ABAP 系统相关,在所有目的地上应具有相同的值,指向同一 ABAP 系统。有关后端先决条件,请参阅备注 1456826。 |
55.3.2.7. 跟踪配置选项 复制链接链接已复制到粘贴板!
下表列出了用于在 SAP 目标数据存储中配置目的地的 trace 配置选项 :
| Name | 默认值 | 描述 |
|
|
启用/禁用 RFC 跟踪( | |
|
|
启用/禁用 CPIC trace |
55.3.3. 服务器配置 复制链接链接已复制到粘贴板!
服务器配置在 SAP 组件的 serverDataStore 属性中维护。此映射中的每个条目配置与 SAP 实例不同的入站连接。每个条目的 key 是出站连接的名称,用于服务器端点 URI 的 serverName 组件,如 URI 格式部分所述。
每个条目的值是 服务器数据 配置对象org.fusesource.camel.component.sap.model.rfc.impl.ServerDataImpl,它定义入站 SAP 连接的配置。
服务器配置示例
以下蓝图 XML 代码演示了如何使用名称 quickstartServer 创建示例服务器配置。
请注意,本例如何配置目标连接 quickstartDest,服务器用来从远程 SAP 实例检索元数据。此目的地通过 repositoryDestination 选项在服务器数据中配置。如果没有配置这个选项,您必须创建一个本地元数据存储库。
例如,在按照上述蓝图 XML 文件配置目的地后,您可以使用以下 URI 处理来自调用客户端的 BAPI_FLCUST_GETLIST 远程功能调用:
sap-srfc-server:quickstartServer:BAPI_FLCUST_GETLIST
sap-srfc-server:quickstartServer:BAPI_FLCUST_GETLIST
55.3.3.1. 所需选项 复制链接链接已复制到粘贴板!
服务器数据配置对象所需的选项如下:
| Name | 默认值 | 描述 |
|
| 应该在其上注册服务器的网关主机。 | |
|
|
网关服务,这是可以在其上进行注册的端口。为了解析服务名称 | |
|
| 注册的程序 ID。作为网关和 ABAP 系统中目的地上的标识符。 | |
|
| 指定服务器可以使用的目的地名称,以便从托管在远程 SAP 服务器中的元数据存储库检索元数据。 | |
|
| 应该在网关上注册的连接数。 |
55.3.3.2. 安全网络连接选项 复制链接链接已复制到粘贴板!
服务器数据配置对象的安全连接选项如下:
| Name | 默认值 | 描述 |
|
|
安全网络连接(SNC)模式、 | |
|
|
SNC 安全性级别, | |
|
|
服务器的 SNC 名称。覆盖默认 SNC 名称。通常,类似 | |
|
|
提供 SNC 服务的库路径。如果没有提供此属性,则使用 |
55.3.3.3. 其他选项 复制链接链接已复制到粘贴板!
服务器数据配置对象的其他选项如下:
| Name | 默认值 | 描述 |
|
|
用于受防火墙保护的系统的 SAP 路由器字符串,因此只能在 ABAP 系统的网关上注册服务器时,它才可以通过 SAProuter 访问。典型的路由器字符串为 | |
|
| 失败时两次启动尝试之间的最长时间(以秒为单位)。在每次启动失败后,等待时间从最初 1 秒加倍,直到达到最大值,或者可以成功启动服务器。 | |
|
|
启用/禁用 RFC 跟踪( | |
|
|
服务器连接使用的最大线程数量。如果没有设置,则 | |
|
|
服务器连接使用的最小线程数量。如果没有设置,则 |
55.3.4. 仓库配置 复制链接链接已复制到粘贴板!
存储库的配置在 SAP 组件的 repositoryDataStore 属性中维护。此映射中的每个条目都配置不同的存储库。每个条目的 key 是存储库的名称,此密钥也对应于附加此存储库的服务器的名称。
每个条目的值是存储库数据配置对象 org.fusesource.camel.component.sap.model.rfc.impl.RepositoryDataImpl,用于定义元数据存储库的内容。存储库数据对象是功能模板配置对象 org.fuesource.camel.component.sap.model.rfc.impl.FunctionTemplateImpl 的映射。此映射中的每个条目都指定 function 模块的接口,每个条目的键则是指定的 function 模块的名称。
仓库数据示例
以下代码演示了配置元数据存储库的简单示例:
55.3.4.1. 功能模板属性 复制链接链接已复制到粘贴板!
功能模块的接口由四个参数列表组成,这些列表将数据传输回 RFC 调用中的 function 模块。每个参数列表由一个或多个字段组成,每个字段都是 RFC 调用中传输的命名参数。支持以下参数列表和异常列表:
- import 参数列表包含发送到 RFC 调用中功能模块的参数值 ;
- export 参数列表包含 RFC 调用中 function 模块返回的参数值 ;
- change 参数列表包含 RFC 调用中函数模块发送和返回的参数值 ;
- table 参数列表 包含 RFC 调用中函数模块发送和返回的内部表值。
- 功能模块的接口也由 ABAP 异常列表组成,该异常列表 可在 RFC 调用中调用模块时引发。
功能模板描述了功能接口的每个参数列表中的参数的名称和类型,函数会抛出 ABAP 异常。功能模板对象维护五个元数据对象列表,如下表所述。
| 属性 | 描述 |
|
|
列表字段元数据对象 |
|
|
列表字段元数据对象 |
|
|
列表字段元数据对象 |
|
|
列表字段元数据对象 |
|
|
ABAP 异常元数据对象 |
功能模板示例
以下示例演示了如何配置功能模板:
55.3.4.2. 列出字段元数据属性 复制链接链接已复制到粘贴板!
列表字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl,指定参数列表中字段的名称和类型。对于元素外参数字段(CHAR、DATE、DECF34、TIME、BYTE、NUM、FLOAT、INTP、、INT 1INT2、DECF16、DECF34、STRING、XSTRING),下表列出了可以在列表字段元数据对象上设置的配置属性:
| Name | 默认值 | 描述 |
|
| - | 参数字段的名称。 |
|
| - | 字段的参数类型。 |
|
| - | 非统一代码布局的字段长度(以字节为单位)。这个值取决于参数类型。 |
|
| - | Unicode 布局的字段长度(以字节为单位)。这个值取决于参数类型。 |
|
|
| 字段值中的十进制数。参数类型 BCD 和 FLOAT 需要此项。 |
|
|
|
如果为 |
请注意,所有元素参数字段都需要在字段 metadata 对象中指定 name,type,byteLength, 和 unicodeByteLength 属性。此外,BCD、FLOAT、DECF16 和 DECF34 字段要求在字段元数据对象中指定十进制属性。
对于类型为 TABLE 或 STRUCTURE 的复杂参数字段,下表列出了可以在列表字段元数据对象上设置的配置属性:
| Name | 默认值 | 描述 |
|
| - | 参数字段的名称。 |
|
| - | 字段的参数类型。 |
|
| - |
结构或表的元数据。记录元数据对象 |
|
|
|
如果为 |
所有复杂的参数字段都需要在字段 metadata 对象中指定 名称、type 和 recordMetaData 属性。recordMetaData 属性的值是一个记录字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl,用于指定嵌套结构或表行的结构。
Elementary list 字段元数据示例
以下元数据配置指定了一个可选的 24 位打包的 BCD 号参数,其两个十进制位置名为 TICKET_PRICE :
复杂的列表字段元数据示例
以下元数据配置指定了名为 CONNINFO 所需的 TABLE 参数,并带有 connectionInfo 记录元数据对象指定的行结构:
<bean class="org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMetaDataImpl">
<property name="name" value="CONNINFO" />
<property name="type" value="TABLE" />
<property name="recordMetaData" ref="connectionInfo" />
</bean>
<bean class="org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMetaDataImpl">
<property name="name" value="CONNINFO" />
<property name="type" value="TABLE" />
<property name="recordMetaData" ref="connectionInfo" />
</bean>
55.3.4.3. 记录元数据属性 复制链接链接已复制到粘贴板!
记录元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl,指定嵌套 STRUCTURE 或 TABLE 参数行的名称和内容。记录元数据对象维护记录字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl 的列表,用于指定嵌套结构或表行中的参数。
下表列出了可以在记录元数据对象上设置的配置属性:
| Name | 默认值 | 描述 |
|
| - | 记录的名称。 |
|
| - |
记录字段元数据对象列表 |
需要记录元数据对象的所有属性。
记录元数据示例
以下示例演示了如何配置记录元数据对象:
55.3.4.4. 记录字段元数据属性 复制链接链接已复制到粘贴板!
记录字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl,指定结构中参数字段的名称和类型。
记录字段元数据对象与参数字段元数据对象类似,但必须额外指定嵌套结构或表行中的单个字段位置的偏移。单个字段的非统一代码和 Unicode 偏移必须计算并从前一字段的非统一代码和 Unicode 字节长度总和来计算和指定。
正确指定嵌套结构和表行中的字段偏移会导致底层 JCo 和 ABAP 运行时中的参数存储重叠并防止 RFC 调用中的正确传输值。
对于元素外参数字段(CHAR、DATE、DECF34、TIME、BYTE、NUM、FLOAT、INTP、、INT 1INT2、DECF16、DECF34、STRING、XSTRING),下表列出了可以在记录字段元数据对象上设置的配置属性:
| Name | 默认值 | 描述 |
|
| - | 参数字段的名称。 |
|
| - | 字段的参数类型。 |
|
| - | 非统一代码布局的字段长度(以字节为单位)。这个值取决于参数类型。 |
|
| - | Unicode 布局的字段长度(以字节为单位)。这个值取决于参数类型。 |
|
| - | 非Unicode 布局的字段偏移(以字节为单位)。这个偏移是保护结构中字段的字节位置。 |
|
| - | Unicode 布局以字节为单位的字段偏移。这个偏移是保护结构中字段的字节位置。 |
|
|
|
字段值中的十进制数;参数类型 |
对于类型为 TABLE 或 STRUCTURE 的复杂参数字段,下表列出了可以在记录字段元数据对象上设置的配置属性:
| Name | 默认值 | 描述 |
|
| - | 参数字段的名称。 |
|
| - | 字段的参数类型。 |
|
| - | 非Unicode 布局的字段偏移(以字节为单位)。这个偏移是保护结构中字段的字节位置。 |
|
| - | Unicode 布局以字节为单位的字段偏移。这个偏移是保护结构中字段的字节位置。 |
|
| - |
结构或表的元数据。记录元数据对象 |
Elementary 记录字段元数据示例
以下元数据配置在非Unicode 布局时指定名为 ARR 的 DATE 字段参数,它位于 85 字节中,在 Unicode 布局的情况下,将 170 字节到 enclosing 结构中。
DATE
复杂的记录字段元数据示例
以下元数据配置指定了名为 FLTINFO 的 STRUCTURE 字段参数,其结构由 flightInfo 记录元数据对象指定。参数位于非统一代码和 Unicode 布局的情况下的保护结构的开头。