119.3. Configuration


SAP 组件维护三个映射,以存储目标数据、服务器数据和存储库数据。目标数据存储和 服务器数据存储在特殊的配置 对象 SapConnectionConfiguration 上配置,该对象会自动注入到 SAP 组件(在 Blueprint XML 配置或 Spring XML 配置文件上下文中)。存储库数据存储 必须在相关的 SAP 组件上直接配置。

119.3.1. 配置概述

SAP 组件维护三个映射,以存储目标数据、服务器数据和存储库数据。组件的属性 destinationDataStore 存储通过目标名称密钥的目的地数据、属性、serverDataStore、存储服务器数据按服务器名称和属性 repositoryDataStore,存储由存储库名称密钥的存储库数据。这些配置必须在初始化过程中传递给组件。

示例

以下示例演示了如何在 Blueprint XML 文件中配置示例目标数据存储和示例服务器数据存储。sap-configuration bean (类型为 SapConnectionConfiguration)将自动注入到此 XML 文件中使用的任何 SAP 组件中。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ... >
    ...
    <!-- Configures the Inbound and Outbound SAP Connections -->
    <bean id="sap-configuration"
        class="org.fusesource.camel.component.sap.SapConnectionConfiguration">
        <property name="destinationDataStore">
            <map>
                <entry key="quickstartDest" value-ref="quickstartDestinationData" />
            </map>
        </property>
        <property name="serverDataStore">
            <map>
                <entry key="quickstartServer" value-ref="quickstartServerData" />
            </map>
        </property>
    </bean>

    <!-- Configures an Outbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment *** -->
    <bean id="quickstartDestinationData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.DestinationDataImpl">
        <property name="ashost" value="example.com" />
        <property name="sysnr" value="00" />
        <property name="client" value="000" />
        <property name="user" value="username" />
        <property name="passwd" value="passowrd" />
        <property name="lang" value="en" />
    </bean>

    <!-- Configures an Inbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment ** -->
    <bean id="quickstartServerData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.ServerDataImpl">
        <property name="gwhost" value="example.com" />
        <property name="gwserv" value="3300" />
        <!-- The following property values should not be changed -->
        <property name="progid" value="QUICKSTART" />
        <property name="repositoryDestination" value="quickstartDest" />
        <property name="connectionCount" value="2" />
    </bean>
</blueprint>

119.3.2. 目标配置

目的地的配置在 SAP 组件的 destinationDataStore 属性中维护。此映射中的每个条目都配置与 SAP 实例不同的出站连接。每个条目的键是出站连接的名称,并在目标端点 URI 的 destinationName 组件中使用,如 URI 格式部分所述。

每个条目的值都是目标数据配置对象 - org.fusesource.camel.component.sap.model.rfc.impl.DestinationDataImpl -,用于指定出站 SAP 连接的配置。

目标配置示例

以下蓝图 XML 代码演示了如何使用名称 QuickstartDest 配置示例目的地。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ... >
    ...
    <!-- Create interceptor to support tRFC processing -->
    <bean id="currentProcessorDefinitionInterceptor"
          class="org.fusesource.camel.component.sap.CurrentProcessorDefinitionInterceptStrategy" />

    <!-- Configures the Inbound and Outbound SAP Connections -->
    <bean id="sap-configuration"
        class="org.fusesource.camel.component.sap.SapConnectionConfiguration">
        <property name="destinationDataStore">
            <map>
                <entry key="quickstartDest" value-ref="quickstartDestinationData" />
            </map>
        </property>
    </bean>

    <!-- Configures an Outbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment *** -->
    <bean id="quickstartDestinationData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.DestinationDataImpl">
        <property name="ashost" value="example.com" />
        <property name="sysnr" value="00" />
        <property name="client" value="000" />
        <property name="user" value="username" />
        <property name="passwd" value="password" />
        <property name="lang" value="en" />
    </bean>

</blueprint>

例如,在配置目的地(如前面的 Blueprint XML 文件所示),您可以使用以下 URI 在 QuickstartDest 目标上调用 BAPI_FLCUST_GETLIST 远程函数调用:

sap-srfc-destination:quickstartDest:BAPI_FLCUST_GETLIST

119.3.2.1. TRFC 和 qRFC 目的地的拦截器

前面的目标配置示例显示了 CurrentProcessorDefinitionInterceptStrategy 对象的实例化。此对象在 Camel 运行时中安装一个拦截器,它允许 Camel SAP 组件在 Camel 路由内跟踪其在处理 RFC 事务时的位置。

重要

这个拦截器对于事务 RFC 目标端点(如 sap-trfc-destinationsap-qrfc-destination)非常重要,且必须在 Camel 运行时中安装出站事务 RFC 通信才能正确管理。如果在运行时找不到策略,则 Destination RFC Transaction Handlers 会在 Camel 日志中发出警告。在这种情况下,需要重新置备并重启 Camel 运行时才能正确管理出站事务 RFC 通信。

119.3.2.2. 登录和验证选项

下表列出了用于在 SAP 目标数据存储中配置目的地的日志 和验证 选项:

Name

默认值

描述

client

 

SAP 客户端,必须记录参数.

user

 

登录 user,在参数上记录基于密码的身份验证。

aliasUser

 

可以使用用户别名而不是在用户登录。

userId

 

用于登录到 ABAP AS 的用户身份。供 JCo runtime 使用,如果目标配置使用 SSO/assertion ticket、证书、当前用户、或 SNC 环境进行身份验证。如果没有设置用户或用户别名,则用户 ID 是必须的。此 ID 永远不会发送到 SAP 后端,它将被本地 JCo 运行时使用。

passwd

 

登录密码,在参数上记录基于密码的身份验证。

lang

 

如果未定义,则使用默认用户语言。

mysapsso2

 

使用指定的 SAP Cookie Version 2 作为基于 SSO 身份验证的票据的日志。

x509cert

 

使用指定的 X509 证书进行基于证书的身份验证。

lcheck

 

在首次调用 1 (启用)之前,请提醒身份验证。仅在特殊情况下使用。

useSapGui

 

使用可见、隐藏或不使用 SAP GUI

codePage

 

其他日志 on 参数,用于定义用于转换参数日志的代码页面。仅在特殊情况下使用。

getsso2

 

在登录后订购 SSO 票据,目标属性中提供了获取的票据。

denyInitialPassword

 

如果设置为 1,则使用初始密码将导致异常(默认值为 0)。

119.3.2.3. 连接选项

下表列出了用于在 SAP 目标数据存储中配置目的地的连接选项:

Name

默认值

描述

saprouter

 

SAP Router 字符串,用于连接到 SAP 路由器后面的系统。SAP Router string 包含 SAP Routers 及其端口号链,格式为: (/H/<host>[/S/<port>])+

sysnr

 

SAP ABAP 应用服务器的系统号,必须直接连接。

ashost

 

SAP ABAP 应用程序服务器,强制进行直接连接。

mshost

 

SAP 消息服务器,负载平衡连接的必要属性。

msserv

 

SAP 消息服务器端口,可选属性,用于负载平衡连接。为了解析服务名称 sapmsXXX,在 etc/services 中由一个查找由操作系统的网络层执行。如果使用端口号而不是符号服务名称,则不会执行查找,且不需要额外的条目。

gwhost

 

允许指定 concrete 网关,该网关应用于建立与应用服务器的连接。如果未指定,则使用应用服务器上的网关。

gwserv

 

在使用 gwhost 时应设置 gwhost。允许指定该网关上使用的端口。如果未指定,则使用应用服务器上的网关端口。为了解析服务名称 sapgwXXX,在 etc/services 中由一个查找由操作系统的网络层执行。如果使用端口号而不是符号服务名称,则不会执行查找,且不需要额外的条目。

r3name

 

SAP 系统的系统 ID,负载平衡连接的强制属性。

group

 

SAP 应用服务器组,负载平衡连接的必要属性。

network

LAN

根据 JCo 和您的目标系统之间的网络质量,以优化性能来设置这个值。有效值为 LANWAN (仅适用于快速序列化)。如果将 网络配置选项 设置为 WAN,则使用较慢但效率更高的压缩算法,并分析数据以进一步压缩选项。如果将 网络配置 设置为 LAN,则使用非常快速的压缩算法,数据分析仅在非常基本的级别执行。当您设置 LAN 选项时,压缩率不高,但网络传输时间被视为不太显著。默认设置为 LAN

serializationFormat

rowBased

有效值为 rowBasedcolumnBased。对于快速序列化 ,必须设置。默认序列化设置为 基于行

119.3.2.4. 连接池选项

下表列出了用于在 SAP 目标数据存储中配置目的地的 连接池 选项:

Name

默认值

描述

peakLimit

0

可以为目的地创建的最大活跃出站连接数。值 0 允许无限数量的活跃连接。否则,如果该值小于 jpoolCapacity 的值,它将自动增加到这个值。默认设置为 poolCapacity 的值,或者在未指定 poolCapacity 时,默认值为 0 ( 无限)。

poolCapacity

1

目的地保持打开的最大空闲出站连接数。值 0 具有没有连接池的影响(默认为 1)。

expirationTime

 

因时间推移,目标内部持有的空闲连接可以关闭。

expirationPeriod

 

以毫秒为单位检查已发布的过期连接。

maxGetTime

 

如果应用程序已分配最多允许的连接数,等待连接的最长时间,以毫秒为单位。

119.3.2.5. 保护网络连接选项

下表列出了用于在 SAP 目标数据存储中配置目的地 的安全网络选项

Name

默认值

描述

sncMode

 

安全网络连接(SNC)模式、0 (关闭)或 1 (on)。

sncPartnername

 

例如:SNC 合作伙伴,例如: p:CN=R3, O=XYZ-INC, C=EN.

sncQop

 

SNC 安全级别: 19

sncMyname

 

自己的 SNC 名称。覆盖环境设置。

sncLibrary

 

提供 SNC 服务的库的路径。

119.3.2.6. 仓库选项

下表列出了用于在 SAP 目标数据存储中配置目的地 的存储库 选项:

Name

默认值

描述

repositoryDest

 

指定用作存储库的目标。

repositoryUser

 

如果没有设置存储库目的地,并且设置了此属性,它将用作存储库调用的用户。这可让您使用其他用户进行存储库查找。

repositoryPasswd

 

仓库用户的密码。如果使用存储库用户,则强制进行。

repositorySnc

 

(可选) 如果将 SNC 用于此目的地,则可以将其关闭用于存储库连接,如果此属性设置为 0。默认设置为 jco.client.snc_mode。只适用于特殊情况。

repositoryRoundtripOptimization

 

启用 RFC_METADATA_GET API,它会在一次往返中提供存储库数据。

1
激活在 ABAP 系统中使用 RFC_METADATA_GET
0
在 ABAP 系统中停用 RFC_METADATA_GET

如果没有设置属性,目的地最初会进行远程调用,以检查 RFC_METADATA_GET 是否可用。如果可用,则目标将使用它。

注意: 如果已初始化了存储库(例如,由于该存储库被某些其他目标使用),则此属性没有任何效果。通常,此属性与 ABAP 系统相关,在指向同一 ABAP 系统的所有目的地上都应具有相同的值。有关后端先决条件,请参阅备注 1456826

119.3.2.7. 跟踪配置选项

下表列出了用于在 SAP 目标数据存储中配置目的地的 trace 配置选项

Name

默认值

描述

trace

 

启用/禁用 RFC trace (01)。

cpicTrace

 

启用/禁用 CPIC 追踪 [0..3].

119.3.3. 服务器配置

服务器的配置在 SAP 组件的 serverDataStore 属性中维护。此映射中的每个条目都配置与 SAP 实例不同的入站连接。每个条目的键是出站连接的名称,并在服务器端点 URI 的 serverName 组件中使用,如 URI 格式部分所述。

每个条目的值都是 服务器数据配置对象 org.fusesource.camel.component.sap.model.rfc.impl.ServerDataImpl,它定义入站 SAP 连接的配置。

服务器配置示例

以下蓝图 XML 代码演示了如何使用名称 QuickstartServer 创建示例服务器配置。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ... >
    ...
    <!-- Configures the Inbound and Outbound SAP Connections -->
    <bean id="sap-configuration"
        class="org.fusesource.camel.component.sap.SapConnectionConfiguration">
        <property name="destinationDataStore">
            <map>
                <entry key="quickstartDest" value-ref="quickstartDestinationData" />
            </map>
        </property>
        <property name="serverDataStore">
            <map>
                <entry key="quickstartServer" value-ref="quickstartServerData" />
            </map>
        </property>
    </bean>

    <!-- Configures an Outbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment *** -->
    <bean id="quickstartDestinationData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.DestinationDataImpl">
        <property name="ashost" value="example.com" />
        <property name="sysnr" value="00" />
        <property name="client" value="000" />
        <property name="user" value="username" />
        <property name="passwd" value="passowrd" />
        <property name="lang" value="en" />
    </bean>

    <!-- Configures an Inbound SAP Connection -->
    <!-- *** Please enter the connection property values for your environment ** -->
    <bean id="quickstartServerData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.ServerDataImpl">
        <property name="gwhost" value="example.com" />
        <property name="gwserv" value="3300" />
        <!-- The following property values should not be changed -->
        <property name="progid" value="QUICKSTART" />
        <property name="repositoryDestination" value="quickstartDest" />
        <property name="connectionCount" value="2" />
    </bean>
</blueprint>

注意本示例如何配置目标连接 QuickstartDest,服务器使用它来从远程 SAP 实例检索元数据。此目的地通过 repositoryDestination 选项在服务器数据中配置。如果没有配置这个选项,您必须创建一个本地元数据存储库。

例如,在配置目的地(如前面的 Blueprint XML 文件所示),您可以使用以下 URI 处理来自调用客户端的 BAPI_FLCUST_GETLIST 远程功能调用:

sap-srfc-server:quickstartServer:BAPI_FLCUST_GETLIST

119.3.3.1. 所需选项

服务器数据配置对象所需的选项有,如下所示:

Name

默认值

描述

gwhost

 

应该在其上注册服务器连接的网关主机。

gwserv

 

网关服务,这是可以进行注册的端口。为了解析服务名称 sapgwXXX,在 etc/services 中由一个查找由操作系统的网络层执行。如果使用端口号而不是符号服务名称,则不会执行查找,且不需要额外的条目。

progid

 

完成注册的程序 ID。作为网关和 ABAP 系统目的地中的标识符。

repositoryDestination

 

指定服务器可以使用的目的地名称从远程 SAP 服务器托管的元数据存储库检索元数据。

connectionCount

 

在网关中注册的连接数量。

119.3.3.2. 保护网络连接选项

服务器数据配置对象的安全连接选项如下:

Name

默认值

描述

sncMode

 

安全网络连接(SNC)模式、0 (关闭)或 1 (on)。

sncQop

 

SNC 安全级别,19

sncMyname

 

服务器的 SNC 名称。覆盖默认 SNC 名称。通常,比如 p:CN=JCoServer、O=ACompany、C=EN.

sncLib

 

提供 SNC 服务的库的路径。如果没有提供此属性,则使用 jco.middleware.snc_lib 属性的值。

119.3.3.3. 其他选项

服务器数据配置对象的其他选项有如下:

Name

默认值

描述

saprouter

 

SAP 路由器字符串用于受防火墙保护的系统,因此只能在在该 ABAP 系统的网关中注册服务器时通过 SAProuter 访问。典型的路由器字符串为 /H/firewall.hostname/H/

maxStartupDelay

 

失败时两个启动尝试之间的最大时间(以秒为单位)。每次启动失败后,等待时间从最初 1 秒开始加倍,直到达到最大值或服务器可以成功启动为止。

trace

 

启用/禁用 RFC trace (01)

workerThreadCount

 

服务器连接使用的最大线程数。如果没有设置,则 connectionCount 的值将用作 workerThreadCount。线程的最大数量不能超过 99。

workerThreadMinCount

 

服务器连接使用的最小线程数量。如果没有设置,则 connectionCount 的值将用作 workerThreadMinCount

119.3.4. 仓库配置

存储库的配置在 SAP 组件的 repositoryDataStore 属性中维护。此映射中的每个条目都配置不同的存储库。每个条目的键是存储库的名称,此键也对应于附加到此存储库的服务器的名称。

每个条目的值都是存储库数据配置对象 org.fusesource.camel.component.sap.model.rfc.impl.RepositoryDataImpl,用于定义元数据存储库的内容。存储库数据对象是功能模板配置对象 org.fuesource.camel.component.sap.model.rfc.impl.FunctionTemplateImpl 的映射。此映射中的每个条目都指定函数模块的接口,每个条目的键是指定的功能模块的名称。

仓库数据示例

以下代码显示了配置元数据存储库的简单示例:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ... >
    ...
    <!-- Configures the sap-srfc-server component -->
    <bean id="sap-configuration"
        class="org.fusesource.camel.component.sap.SapConnectionConfiguration">
        <property name="repositoryDataStore">
            <map>
                <entry key="nplServer" value-ref="nplRepositoryData" />
            </map>
        </property>
    </bean>

    <!-- Configures a Metadata Repository -->
    <bean id="nplRepositoryData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.RepositoryDataImpl">
        <property name="functionTemplates">
            <map>
                <entry key="BOOK_FLIGHT" value-ref="bookFlightFunctionTemplate" />
            </map>
        </property>
    </bean>
    ...
</blueprint>

119.3.4.1. 功能模板属性

function 模块的接口由四个参数列表组成,其数据会重新传输到 RFC 调用中的 function 模块。每个参数列表由一个或多个字段组成,每个字段都是在 RFC 调用中传输的命名参数。支持以下参数列表和异常列表:

  • import 参数列表 包含发送到 RFC 调用中的 function 模块的参数值;
  • export 参数列表包含 RFC 调用中的 function 模块返回的参数值
  • 更改参数列表 包含发送到 RFC 调用中的 function 模块和返回的参数值;
  • table 参数列表 包含发送到 RFC 调用中的 function 模块和返回的内部表值。
  • function 模块的接口也由 ABAP 例外列表组成,在 RFC 调用中调用该模块时可能会引发。

功能模板描述了函数接口的每个参数列表中的名称和参数类型,以及函数引发的 ABAP 异常。功能模板对象维护五个元数据对象的属性列表,如下表所述。

属性

描述

importParameterList

列表字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl。指定在对 function 模块的 RFC 调用中发送的参数。

changingParameterList

列表字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl。指定在对函数模块和来自函数模块的 RFC 调用中发送和接收的参数。

exportParameterList

列表字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl。指定来自 function 模块的 RFC 调用中返回的参数。

tableParameterList

列表字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl。指定在 RFC 调用中向函数模块发送和返回的表参数。

exceptionList

ABAP 异常元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.AbapExceptionImpl 的列表。指定在功能模块的 RFC 调用中可能会引发的 ABAP 异常。

功能模板示例

以下示例演示了如何配置功能模板:

<bean id="bookFlightFunctionTemplate"
    class="org.fusesource.camel.component.sap.model.rfc.impl.FunctionTemplateImpl">
    <property name="importParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="changingParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="exportParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="tableParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="exceptionList">
        <list>
            ...
        </list>
    </property>
</bean>

119.3.4.2. 列出字段元数据属性

列表字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl 指定参数列表中字段的名称和类型。对于 elementary 参数字段(CHAR,DATE,BCD,TIME,BYTE,NUM,FLOAT,INT 1 ,INT1,INT2,DECF16,DECF34,STRING,XSTRING)),下表列出了可能在列表元数据上设置的配置属性:

Name

默认值

描述

name

-

参数字段的名称。

type

-

字段的参数类型。

byteLength

-

非统一代码布局的字段长度(以字节为单位)。这个值取决于参数类型。

unicodeByteLength

-

Unicode 布局的字段长度(以字节为单位)。这个值取决于参数类型。

十进制

0

字段中值的十进制数。参数类型 BCD 和 FLOAT 是必需的。

optional

false

如果为 true,该字段是可选的,且不需要在 RFC 调用中设置。

请注意,所有 elementary 参数字段都需要在字段 metadata 对象中指定 name,type,byteLength, 和 unicodeByteLength 属性。此外,BCDFLOATDECF16DECF34 字段需要在字段 metadata 对象中指定十进制属性。

对于类型为 TABLESTRUCTURE 的复杂参数字段,下表列出了列表字段 metadata 对象可能设置的配置属性:

Name

默认值

描述

name

-

参数字段的名称。

type

-

字段的参数类型。

recordMetaData

-

结构或表的元数据。将传递记录元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl 以指定结构或表行中的字段。

optional

false

如果为 true,该字段是可选的,且不需要在 RFC 调用中设置。

注意

所有复杂的参数字段要求在字段 metadata 对象中指定 名称类型recordMetaData 属性。recordMetaData 属性的值是一个记录字段元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl,它指定嵌套结构的结构或表结构的结构。

Elementary 列表字段元数据示例

以下元数据配置指定一个一个可选的 24 位打包的 BCD number 参数,它有两个十进制位置,名为 TICKET_PRICE

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMetaDataImpl">
    <property name="name" value="TICKET_PRICE" />
    <property name="type" value="BCD" />
    <property name="byteLength" value="12" />
    <property name="unicodeByteLength" value="24" />
    <property name="decimals" value="2" />
    <property name="optional" value="true" />
</bean>

复杂的列表字段元数据示例

以下元数据配置指定所需的 TABLE 参数,名为 CONNINFO,其行结构由 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>

119.3.4.3. 记录元数据属性

记录元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl 指定嵌套 STRUCTURETABLE 参数的行。记录元数据对象维护一个记录字段元数据对象列表 org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl,用于指定嵌套结构或表行中的参数。

下表列出了可以在记录元数据对象上设置的配置属性:

Name

默认值

描述

name

-

记录的名称。

recordFieldMetaData

-

记录字段元数据对象列表 org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl。指定结构中包含的字段。

注意

记录元数据对象的所有属性都是必需的。

记录元数据示例

以下示例演示了如何配置记录元数据对象:

<bean    id="connectionInfo"
        class="org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl">
    <property name="name" value="CONNECTION_INFO" />
    <property name="recordFieldMetaData">
        <list>
            ...
        </list>
    </property>
</bean>

119.3.4.4. 记录字段元数据属性

记录字段 metadata 对象 org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl 指定结构中的参数字段的名称和类型。

记录字段 metadata 对象与参数字段 metadata 对象类似,但必须额外指定嵌套结构或表行中单个字段位置的偏移。单个字段的非统一代码和 Unicode 偏移量必须从结构或行中上述字段的总和和指定。

注意

无法正确指定嵌套结构和表行中的字段偏移会导致底层 JCo 和 ABAP 运行时中的参数字段存储重叠,并防止 RFC 调用中正确传输值。

对于 elementary 参数字段(CHAR,DATE,BCD,TIME,BYTE,NUM,FLOAT,INT 1 ,INT1,INT2,DECF16,DECF34,STRING,XSTRING)),下表列出了可能在记录元数据上设置的配置属性:

Name

默认值

描述

name

-

参数字段的名称。

type

-

字段的参数类型。

byteLength

-

非统一代码布局的字段长度(以字节为单位)。这个值取决于参数类型。

unicodeByteLength

-

Unicode 布局的字段长度(以字节为单位)。这个值取决于参数类型。

byteOffset

-

非Unicode 布局的字段偏移(以字节为单位)。这个偏移是在封闭结构中字段的字节位置。

unicodeByteOffset

-

Unicode 布局的字段偏移(以字节为单位)。这个偏移是在封闭结构中字段的字节位置。

十进制

0

字段值中的十进制数;只有参数类型 BCDFLOAT 才需要。

对于类型为 TABLESTRUCTURE 的复杂参数字段,下表列出了可以在记录字段 metadata 对象上设置的配置属性:

Name

默认值

描述

name

-

参数字段的名称。

type

-

字段的参数类型。

byteOffset

-

非Unicode 布局的字段偏移(以字节为单位)。这个偏移是在封闭结构中字段的字节位置。

unicodeByteOffset

-

Unicode 布局的字段偏移(以字节为单位)。这个偏移是在封闭结构中字段的字节位置。

recordMetaData

-

结构或表的元数据。将传递记录元数据对象 org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl 以指定结构或表行中的字段。

Elementary 记录字段元数据示例

以下元数据配置指定名为 ARR DATE 的 85 字节的 DATE 字段参数,在 Unicode 布局的出现非Unicode 布局和位置 170 字节的情况下,将名为 ARRDATE 的 85 字节参数指定到 Unicode 布局的内线结构中。

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl">
    <property name="name" value="ARRDATE" />
    <property name="type" value="DATE" />
    <property name="byteLength" value="8" />
    <property name="unicodeByteLength" value="16" />
    <property name="byteOffset" value="85" />
    <property name="unicodeByteOffset" value="170" />
</bean>

复杂的记录字段元数据示例

以下元数据配置指定了名为 FLTINFOSTRUCTURE 字段参数,其结构由 flightInfo 记录元数据对象指定。在非统一代码和 Unicode 布局的情况下,参数位于封闭结构的开头。

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl">
    <property name="name" value="FLTINFO" />
    <property name="type" value="STRUCTURE" />
    <property name="byteOffset" value="0" />
    <property name="unicodeByteOffset" value="0" />
    <property name="recordMetaData" ref="flightInfo" />
</bean>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.