使用 BizTalk Server 在 SAP 中调用 RFC
SAP 适配器将 SAP 系统公开的 RFC 显示为可由适配器客户端调用的操作。 本部分提供有关使用 SAP 适配器和 Microsoft BizTalk Server 在 SAP 系统中调用 RFC 的说明。 有关 SAP 适配器如何支持在 SAP 系统中调用 RFC 的详细信息,请参阅 SAP 中 RFC 的操作。 有关用于调用 RFC 的 SOAP 消息结构的详细信息,请参阅 RFC 操作的消息架构。
如何在 SAP 系统中调用 RFC?
使用 SAP 适配器和 BizTalk Server 在 SAP 系统上执行操作涉及构建基块以创建 SAP 应用程序中所述的过程性任务。 若要在 SAP 系统中调用 RFC,这些任务包括:
创建 BizTalk 项目并为要在 SAP 系统中调用的 RFC 生成架构。
在 BizTalk 项目中创建消息,以便从 SAP 系统发送和接收消息。
创建业务流程以在 SAP 系统中调用 RFC。
生成和部署 BizTalk 项目。
通过创建物理发送和接收端口来配置 BizTalk 应用程序。
启动 BizTalk 应用程序。
本主题提供有关执行这些任务的说明。
生成架构
在本主题中,为了演示如何在 SAP 系统中调用 RFC,我们将为 RFC_CUSTOMER_GET生成架构。 有关如何生成架构的详细信息 ,请参阅浏览、搜索和获取 SAP 中 RFC 操作的元数据 。
定义消息和消息类型
前面生成的架构描述了业务流程中的消息所需的“类型”。 消息通常是一个变量,其类型由相应的架构定义。 必须将生成的架构链接到 BizTalk 项目的业务流程视图中的消息。
对于本主题,必须创建两条消息:一个用于向 SAP 系统发送请求,另一个用于接收响应。
执行以下步骤来创建消息并将其链接到架构。
创建消息并链接到架构
打开业务流程视图 BizTalk 项目(如果尚未打开)。 单击“ 视图”,指向“ 其他窗口”,然后单击“ 业务流程视图”。
在 业务流程视图中,右键单击“ 消息”,然后单击“ 新建消息”。
右键单击新创建的消息,然后选择“ 属性窗口”。
在Message_1的“属性”窗格中,执行以下操作。
使用此选项 要执行此操作 标识符 键入 “请求”。 消息类型 在下拉列表中,展开“ 架构”,然后选择“ InvokeRFC.SAPBindingSchema.RFC_CUSTOMER_GET”,其中 InvokeRFC 是 BizTalk 项目的名称。 SAPBindingSchema 是为 RFC_CUSTOMER_GET生成的架构。 重复上一步以创建新消息。 在新消息的“ 属性 ”窗格中,执行以下操作。
使用此选项 要执行此操作 标识符 键入 “响应”。 消息类型 从下拉列表中,展开“ 架构”,然后选择“ InvokeRFC.SAPBindingSchema.RFC_CUSTOMER_GETResponse”。
设置业务流程
必须创建 BizTalk 业务流程才能使用 BizTalk Server 在 SAP 系统中调用 RFC。 在此业务流程中,你将在定义的接收位置删除请求消息。 SAP 适配器使用消息并将其传递给 SAP 系统。 SAP 系统的响应将保存到另一个位置。 在 SAP 系统中调用 RFC 的典型业务流程将包含:
发送和接收形状,用于将消息发送到 SAP 系统并接收响应。
单向接收端口,用于接收要发送到 SAP 系统的请求消息。
双向发送端口,用于将请求消息发送到 SAP 系统并接收响应。
用于将响应从 SAP 系统发送到文件夹的单向发送端口。
示例业务流程类似于以下内容:
的业务流程
添加消息形状
请确保为每个消息形状指定以下属性。 Shape 列中列出的名称是上述业务流程中显示的消息形状的名称。
形状 | 形状类型 | 属性 |
---|---|---|
Receive_Request | 接收 | - 将 “名称” 设置为 “Receive_Request - 将 “激活” 设置为 “True” |
Send_LOB | 发送 | - 将 “名称” 设置为 “Send_LOB |
Receive_LOB | 接收 | - 将 “名称” 设置为 “Receive_LOB - 将 “激活” 设置为 “False” |
Send_Response | 发送 | - 将 “名称” 设置为 “Send_Response |
添加端口
为每个逻辑端口指定以下属性。 “端口”列中列出的名称是业务流程中显示的端口名称。
端口 | 属性 |
---|---|
ReceiveMsgPort | - 将 标识符 设置为 ReceiveMsgPort - 将 Type 设置为 ReceiveMsgPortType - 将 通信模式 设置为 单向 - 将 通信方向 设置为 接收 |
SendToLOBPort | - 将 标识符 设置为 SendToLOBPort - 将 Type 设置为 SendToLOBPortType - 将 通信模式 设置为 请求-响应 - 将 “通信方向 ”设置为 “发送-接收” |
SendMsgPort | - 将 标识符 设置为 SendMsgPort - 将 Type 设置为 SendMsgPortType - 将 通信模式 设置为 单向 - 将“通信方向”设置为“发送” |
指定操作形状的消息并连接到端口
下表指定要设置的属性及其值,以指定操作形状的消息并将其链接到端口。 Shape 列中列出的名称是上述业务流程中显示的消息形状的名称。
形状 | 属性 |
---|---|
Receive_Request | - 将 “消息 ”设置为 “请求” - 将 操作 设置为 ReceiveMsgPort.Operation_1.Request |
Send_LOB | - 将 “消息 ”设置为 “请求” - 将 操作 设置为 SendToLOBPort.Operation_1.Request |
Receive_LOB | - 将 消息 设置为 响应 - 将 操作 设置为 SendToLOBPort.Operation_1.Response |
Send_Response | - 将 消息 设置为 响应 - 将 Operation 设置为 SendMsgPort.Operation_1.Request |
指定这些属性后,将连接消息形状和端口,并且业务流程已完成。
现在必须生成 BizTalk 解决方案并将其部署到BizTalk Server。 有关详细信息,请参阅 生成和运行业务流程。
配置 BizTalk 应用程序
部署 BizTalk 项目后,前面创建的业务流程将列在 BizTalk Server 管理控制台的“业务流程”窗格中。 必须使用 BizTalk Server 管理控制台来配置应用程序。 有关配置应用程序的详细信息,请参阅 如何配置应用程序。
配置应用程序涉及:
为应用程序选择主机。
将业务流程中创建的端口映射到 BizTalk Server 管理控制台中的物理端口。 对于此业务流程,必须:
在硬盘上定义一个位置和相应的文件端口,你将在其中放置请求消息。 BizTalk 业务流程将使用请求消息并将其发送到 SAP 系统。
在硬盘上定义一个位置和相应的文件端口,BizTalk 业务流程将在其中删除包含来自 SAP 系统的响应的响应消息。
定义物理 WCF-Custom 或 WCF-SAP 发送端口以将消息发送到 SAP 系统。 还必须在发送端口中指定操作。 有关如何创建端口的信息,请参阅 手动配置到 SAP 适配器的物理端口绑定。
注意
使用使用适配器服务 BizTalk 项目外接程序生成架构还会创建一个绑定文件,其中包含有关要为这些端口设置的端口和操作的信息。 可以从 BizTalk Server 管理控制台导入此绑定文件,为出站呼叫创建发送端口 () 或接收) 入站呼叫 (端口。 有关详细信息,请参阅 使用到 SAP 的端口绑定文件配置物理端口绑定。
启动应用程序
必须启动 BizTalk 应用程序才能在 SAP 系统中调用 RFC。 有关启动 BizTalk 应用程序的说明,请参阅 如何启动业务流程 或 如何启动应用程序。
在此阶段,请确保:
用于接收业务流程请求消息的 FILE 接收端口正在运行。
用于从业务流程接收响应消息的 FILE 发送端口正在运行。
用于将消息发送到 SAP 系统的 WCF-Custom 或 WCF-SAP 发送端口正在运行。
操作的 BizTalk 业务流程正在运行。
执行操作
运行应用程序后,必须在预定义的位置删除业务流程的请求消息。 请参阅 RFC 操作的消息架构 ,了解请求消息的架构,以便在 SAP 系统中调用 RFC。 例如,要调用RFC_CUSTOMER_GET的请求消息为:
<RFC_CUSTOMER_GET xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<KUNNR>0000001390</KUNNR>
<NAME1>*</NAME1>
<CUSTOMER_T/>
</RFC_CUSTOMER_GET>
业务流程使用消息并将其发送到 SAP 系统。 SAP 系统的响应保存在定义为业务流程的一部分的其他文件位置。 例如,SAP 系统对上述请求消息的响应为:
<?xml version="1.0" encoding="utf-8" ?>
<RFC_CUSTOMER_GETResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<CUSTOMER_T>
<RFCCUST xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<KUNNR>0000001390</KUNNR>
<ANRED>Firma</ANRED>
<NAME1>Contoso, Ltd.</NAME1>
<PFACH />
<STRAS>4567 Main Street</STRAS>
<PSTLZ>98052</PSTLZ>
<ORT01>USA</ORT01>
<TELF1>555-0101</TELF1>
<TELFX>555-0102</TELFX>
</RFCCUST>
</CUSTOMER_T>
</RFC_CUSTOMER_GETResponse>
可能的异常
有关在使用 BizTalk Server 在 SAP 系统中调用 RFC 时可能遇到的异常的信息,请参阅使用 SAP 适配器的异常和错误处理。
最佳实践
部署并配置 BizTalk 项目后,可以将配置设置导出到名为绑定文件的 XML 文件。 生成绑定文件后,可以从文件导入配置设置,这样就无需为同一业务流程创建发送端口、接收端口等。 有关绑定文件的详细信息,请参阅 重用 SAP 适配器绑定。