适用范围:Azure 逻辑应用(消耗型 + 标准型)

本操作指南包含多个部分,介绍了如何使用 SAP 连接器从 Azure 逻辑应用中的工作流访问 SAP 服务器。 你可以使用 SAP 连接器操作来创建自动化工作流,这些工作流在被 SAP 服务器或其他系统中的事件触发后运行,通过运行操作来管理 SAP 服务器上的资源。

标准和消耗逻辑应用工作流都提供在多租户 Azure 中托管和运行的 SAP 托管连接器。 标准工作流还提供在单租户 Azure 逻辑应用中托管和运行的 SAP 内置连接器,但此连接器目前为预览版,并受 Microsoft Azure 预览版补充使用条款 的约束。 如果在集成服务环境 (ISE) 中创建和托管消耗工作流,也可以使用 SAP 连接器的 ISE 原生版本。 有关详细信息,请参阅 连接器技术参考

SAP 兼容性

SAP 连接器与以下类型的 SAP 系统兼容:

  • 本地和基于云的 SAP HANA 系统,例如 S/4 HANA。

  • 经典本地 SAP 系统,例如 R/3 和 ECC。

    SAP 必须支持要连接的 SAP 系统版本。 否则,可能无法解决有可能遇到的任何问题。 有关 SAP 系统版本和维护信息的详细信息,请查看 SAP 产品可用性对照表 (PAM)

    SAP 连接器支持基于 SAP NetWeaver 的系统中的以下消息和数据集成类型:

  • 中间文档 (IDoc)

  • 商业应用程序编程接口 (BAPI)

  • 远程函数调用 (RFC) 和事务 RFC (tRFC)

    SAP 连接器使用 SAP .NET 连接器 (NCo) 库

    若要使用 SAP 连接器操作,必须先对连接进行身份验证,并使用以下选项:

  • 提供用户名和密码。

  • SAP 连接器支持通过 SAP 安全网络通信 (SNC) 来进行身份验证。

    可以将 SNC 用于 SAP NetWeaver 单一登录 (SSO),或用于外部产品的安全功能。 如果选择使用 SNC,请查看 SNC 先决条件 ISE 连接器的 SNC 先决条件

    连接器技术参考

    FTP 连接器具有不同的版本,具体取决于 逻辑应用类型和主机环境

    连接器版本 多租户 Azure 逻辑应用 托管连接器,显示在设计器中的“企业”标签下。 有关详细信息,请查看以下文档:

    - SAP 托管连接器参考
    - Azure 逻辑应用中的托管连接器 集成服务环境 (ISE) 托管连接器(显示在设计器中的“Enterprise”标签下)和 ISE 原生版本(显示在带“ISE”标签的设计器中,具有与托管连接器不同的消息限制)。

    注意:请确保使用 ISE 原生版本,而不是托管版本。

    有关详细信息,请查看以下文档:

    - SAP 托管连接器参考
    - ISE 消息限制
    - Azure 逻辑应用中的托管连接器 单租户 Azure 逻辑应用和应用服务环境 v3(仅限 Windows 计划) 托管连接器(显示在设计器中的“Azure”标签下)和内置连接器(预览版)(显示在设计器中的“内置”标签下, 基于服务提供商 )。 内置连接器可以使用连接字符串直接访问 Azure 虚拟网络,不需要本地数据网关。 有关详细信息,请查看以下文档:

    - SAP 托管连接器参考
    - SAP 内置连接器参考

    - Azure 逻辑应用中的托管连接器
    - Azure 逻辑应用中的内置连接器
  • SAP 连接器目前不支持 SAP 路由器字符串。 本地数据网关必须存在于虚拟网络上,网关可以在该虚拟网络上直接访问要连接的 SAP 系统。

  • 通常,SAP 触发器不支持数据网关群集。 在某些故障转移案例中,与 SAP 系统通信的数据网关节点可能不同于主动节点,从而导致意外的行为。

  • 对于“发送消息”方案,支持在故障转移模式下使用数据网关群集。

  • 监控状态的 SAP 操作 不支持在负载均衡模式下使用数据网关群集。 监控状态通信必须保留在同一个数据网关群集节点上。 请在非群集模式或仅为故障转移设置的群集中使用数据网关。 例如,这些操作包括:

  • 指定会话 ID 值的所有操作
  • [BAPI] 提交事务
  • [BAPI] 回退事务
  • [BAPI-RFC] 关闭监控状态会话
  • [BAPI-RFC] 创建监控状态会话
  • 在名为“[BAPI] 调用 SAP 中的方法”的操作中,如果该操作返回的 CallBapiResponse 对象中至少存在一个警告,则自动提交功能将不会提交 BAPI 更改。 若要在出现任何警告的情况下提交 BAPI 更改,请执行以下步骤:

  • 使用名为“[BAPI - RFC] 创建监控状态会话”的操作显式创建会话。
  • 在名为“[BAPI] 调用 SAP 中的方法”的操作中,禁用自动提交功能。
  • 改为调用名为“[BAPI] 提交事务”的操作。
  • SAP 内置连接器

    Azure 门户中提供了名为“为触发器注册 SAP RFC 服务器”的预览版 SAP 内置连接器触发器,但在 Azure 中部署时,触发器当前无法接收来自 SAP 的调用。 若要触发触发器,可以在 Visual Studio Code 本地运行工作流。 有关 Visual Studio Code 的设置要求和详细信息,请参阅 使用 Visual Studio Code 在单租户 Azure 逻辑应用中创建标准逻辑应用工作流 。 还必须在安装 Visual Studio Code 的计算机上设置以下环境变量:

  • WEBSITE_PRIVATE_IP:将此环境变量值设置为 127.0.0.1 作为 localhost 地址。
  • WEBSITE_PRIVATE_PORTS:将此环境变量值设置为本地计算机上的两个空闲可用端口,用逗号 (,) 分隔这两个值,例如 8080,8088。
  • Azure 帐户和订阅。 如果没有 Azure 订阅,请 注册一个免费 Azure 帐户

  • 要从 Azure 逻辑应用访问的 SAP 应用程序服务器 SAP 消息服务器

  • 请将你的 SAP 服务器和用户帐户设置为允许使用 RFC。

    如要了解包括受支持的用户帐户类型和每种操作类型所需的最低授权(RFC、BAPI、IDoc)等更多详情,请查看以下 SAP 说明: 460089 - 适用于外部 RFC 计划的最低授权配置文件

  • SAP 用户帐户需要访问 RFC_METADATA 函数组和相应的函数模块,以便执行以下操作:

    Operations 访问函数模块 BAPI 操作 BAPI_TRANSACTION_COMMIT BAPI_TRANSACTION_ROLLBACK RPY_BOR_TREE_INIT SWO_QUERY_METHODS SWO_QUERY_API_METHODS IDoc 操作 IDOCTYPES_LIST_WITH_MESSAGES IDOCTYPES_FOR_MESTYPE_READ INBOUND_IDOCS_FOR_TID OUTBOUND_IDOCS_FOR_TID GET_STATUS_FROM_IDOCNR IDOC_RECORD_READ 读取 SAP 表 操作 RFC BBP_RFC_READ_TABLE RFC_READ_TABLE 为 SAP 连接授予对 SAP 服务器的最低访问权限 RFC_METADATA_GET RFC_METADATA_GET_TIMESTAMP
  • 默认情况下,预览版 SAP 内置连接器操作是无状态的。 若要在监控状态模式下运行这些操作,请参阅 为无状态内置连接器启用监控状态模式

  • 若要使用名为“从 SAP 收到消息时”的 SAP 托管连接器触发器或名为“为触发器注册 SAP RFC 服务器”的 SAP 内置触发器,请完成以下任务:

  • 设置 SAP 网关的安全权限或访问控制列表 (ACL)。 在显示 secinfo 和 reginfo 文件的“网关监视器”(T-Code SMGW) 对话框中,打开“转到”菜单,选择“专家功能”>“外部安全”>“ACL 文件维护”。

    需要以下权限设置:

    P TP=LOGICAPP HOST=<on-premises-gateway-server-IP-address> ACCESS=*

    此行格式如下:

    P TP=<trading-partner-identifier-(program-name)-or-*-for-all-partners> HOST=<comma-separated-list-with-external-host-IP-or-network-names-that-can-register-the-program> ACCESS=<*-for-all-permissions-or-a-comma-separated-list-of-permissions>

    如果未配置 SAP 网关安全权限,则可能会收到以下错误:

    不允许从主机 host-name > 注册 tp Microsoft.PowerBI.EnterpriseGateway

    有关详细信息,请参阅 SAP 说明 1850230 - GW:“不允许注册事务程序 程序 ID>”。

  • 设置 SAP 网关安全日志记录,以帮助查找访问控制列表 (ACL) 问题。 有关详细信息,请参阅 设置网关日志记录的 SAP 帮助主题

  • 在“RFC 连接配置”(T-Code SM59) 对话框中,使用“TCP/IP”类型创建 RFC 连接。 确保“激活类型”设置为“已注册的服务器程序”。 将 RFC 连接的“与目标系统的通信类型”值设为“Unicode”。

  • 如果使用“IDOC 格式”参数设置为“FlatFile”的 SAP 触发器和 “平面文件解码”操作 ,则必须在平面文件架构中使用 属性,并将值设为

    因为在 tRFC 调用 IDOC_INBOUND_ASYNCHRONOUS 中由 SAP 发送的平面文件 IDoc 数据记录不会填充到完整的 SDATA 字段长度,所以这是必要要求。 Azure 逻辑应用会提供未填充的平面文件 IDoc 原始数据,与接收自 SAP 的格式相同。 此外,将此 SAP 触发器与平面文件解码操作组合使用时,提供给操作的架构必须与之相匹配。

    在消耗和标准工作流中,名为“从 SAP 收到消息时”的 SAP 托管触发器使用相同的 URI 位置来续订和取消订阅 Webhook 订阅。 续订操作使用 HTTP PATCH 方法,而取消订阅操作使用 HTTP DELETE 方法。 此行为可能会使续订操作在触发器历史记录中显示为取消订阅操作,但实际上它仍然是续订操作,因为触发器使用 PATCH 作为 HTTP 方法,而不是 DELETE

    在标准工作流中,名为“为触发器注册 SAP RFC 服务器”的 SAP 内置触发器改用 Azure Functions 触发器,并且仅显示来自 SAP 的实际回调。

  • 要发送到 SAP 服务器的消息内容,例如示例 IDoc 文件。 此内容必须采用 XML 格式,并且包含要使用的 SAP 操作 的命名空间。 你可以 通过将 IDoc 包装在 XML 信封中来发送带有平面文件架构的 IDoc

    网络连接先决条件

    SAP 系统需要来自 SAP .NET 连接器 (NCo) 库主机的网络连接:

  • 对于多租户 Azure 逻辑应用中的消耗逻辑应用工作流,本地数据网关托管 SAP .NET 连接器 (NCo) 库。 如果你使用本地数据网关群集,群集的所有节点都需要与 SAP 系统建立网络连接。

  • 对于单租户 Azure 逻辑应用中的标准逻辑应用工作流,逻辑应用资源托管 SAP .NET 连接器 (NCo) 库。 因此,逻辑应用资源本身必须启用虚拟网络集成,并且该虚拟网络必须与 SAP 系统建立网络连接。

  • 对于 ISE 中的消耗逻辑应用工作流,ISE 虚拟网络托管 SAP .NET 连接器 (NCo) 库。

    SAP 系统所需的网络连接包括以下服务器和服务:

  • SAP 应用程序服务器、Dispatcher 服务(适用于所有登录类型)

    SAP 系统可以包含多个 SAP 应用程序服务器。 SAP .NET 连接器 (NCo) 库的主机需要能够访问每个服务器及其服务。

  • SAP 消息服务器、消息服务(用于登录类型组)

    消息服务器和服务将重定向到一个或多个应用程序服务器的 Dispatcher 服务。 SAP .NET 连接器 (NCo) 库的主机需要能够访问每个服务器及其服务。

  • SAP 网关服务器、网关服务

  • SAP 网关服务器、网关保护服务

    SAP 系统所需的网络连接也包括此服务器和服务,以便与安全网络通信 (SNC) 一起使用。

    从应用程序服务器、Dispatcher 服务到网关服务器、网关服务的请求重定向是在 SAP .NET 连接器 (NCo) 库中自动发生的。 即使连接参数中只提供了应用程序服务器、Dispatcher 服务信息,也会发生此重定向。

    如果在 SAP 系统前面使用负载均衡器,就必须将所有服务重定向到各自的服务器。 有关 SAP 服务和端口的详细信息,请查看 所有 SAP 产品的 TCP/IP 端口

    确保从 SAP .NET 连接器 (NCo) 库的主机启用了网络连接,并且所需的端口在防火墙和网络安全组上处于打开状态。 否则,你会收到诸如“无法从 NI (网络接口)组件访问合作伙伴”之类的错误,以及诸如“WSAECONNREFUSED: 连接被拒绝”之类的错误文本。

    SAP NCo 客户端库先决条件

    若要使用 SAP 连接器,需要名为 使用 .NET Framework 4.0 编译的 Microsoft .NET 3.0.25.0 的 SAP 连接器 (NCo 3.0) - Windows 64 位 (x64) 的 SAP NCo 客户端库。 下面列出与 SAP 连接器一起使用的 SAP NCo 客户端库的先决条件:

  • SAP 连接器 (NCo 3.1) 当前不受支持,因为双版本功能不可用。

  • 对于使用本地数据网关的消耗逻辑应用工作流,请确保安装最新 64 位版本, 使用 .NET Framework 4.0 编译的 Microsoft .NET 3.0.25.0 的 SAP 连接器 (NCo 3.0) - Windows 64 位 (x64) 。 数据网关只能在 64 位系统上运行。 安装不受支持的 32 位版本会导致“错误的映像”错误。

    早期版本的 SAP NCo 可能会遇到以下问题:

  • 当同时发送多个 IDoc 消息时,此条件会阻止所有稍后发送到 SAP 目标的消息,从而导致消息出现超时问题。

  • 会话激活可能会由于会话泄漏而失败。 此条件可能会阻止 SAP 发送到逻辑应用工作流触发器的调用。

  • 本地数据网关(2021 年 6 月版本及更高版本)需要使用 SAP NCo 中的 SAP.Middleware.Connector.RfcConfigParameters.Dispose() 方法来释放资源。

  • 升级 SAP 服务器环境后,你会收到以下异常消息:“从 <SAP-system-ID> 检索元数据时,唯一可用的目标 <some-GUID> 失败 - 有关详细信息,请参阅日志”。

  • 对于标准逻辑应用工作流,可以使用 32 位或 64 位版本的 SAP NCo 客户端库,但请确保安装的版本与标准逻辑应用资源中的配置匹配。 若要检查此版本,请执行以下步骤:

  • Azure 门户 中,打开标准逻辑应用。

  • 在逻辑应用资源菜单中的“设置”下,选择“配置”。

  • 在“配置”窗格的“平台设置”下,检查“平台”值是设置为 64 位还是 32 位。

  • 请确保安装的版本与 使用 .NET Framework 4.0 编译的 Microsoft .NET 3.0.25.0 的 SAP 连接器 (NCo 3.0) 匹配。

  • 若要使用 SAP 连接器,需要 SAP NCo 客户端库中的以下文件,并准备好将其上传到逻辑应用资源。

  • libicudecnumber.dll
  • rscp4n.dll
  • sapnco.dll
  • sapnco_utils.dll
  • 根据你的方案,从客户端库的默认安装文件夹,将程序集 (.dll) 文件复制到其他位置,如下所示。 或者,如果仅使用 SAP 托管连接器,请在安装 SAP NCo 客户端库时选择“全局程序集缓存注册”。 ISE zip 存档和 SAP 内置连接器目前不支持 GAC 注册。

  • 对于在多租户 Azure 逻辑应用中运行并使用本地数据网关的消耗工作流,将程序集 (.dll) 文件复制到本地数据网关安装文件夹,例如“C:\Program Files\On-Premises Data Gateway”。

    确保将程序集文件复制到数据网关的安装文件夹。 否则,SAP 连接可能会失败并显示错误消息:“请检查你的帐户信息和/或权限,然后重试”。 可以使用 .NET 程序集绑定日志查看器 来排除进一步的问题。 使用此工具可以检查程序集文件是否位于正确的位置。

  • 对于标准工作流,将程序集 (.dll) 文件复制到可分别在 Azure 门户或本地 Visual Studio Code 中将文件上传到要在其中生成工作流的逻辑应用资源或项目的位置。

  • 对于 ISE 中的消耗工作流,请遵循 ISE 先决条件

    SAP NCo 客户端库、.NET Framework、.NET 运行时和数据网关之间存在以下关系:

  • Microsoft SAP 适配器和网关主机服务都使用 .NET Framework 4.7.2。

  • SAP NCo for .NET Framework 4.0 适用于使用 .NET 运行时 4.0 到 4.8 的进程。

  • SAP NCo for .NET Framework 2.0 适用于使用 .NET 运行时 2.0 到 3.5 的进程,但不再适用于最新网关。

    SNC 先决条件

    对于使用本地数据网关和 SNC(可选)的多租户 Azure 逻辑应用中的消耗工作流,还必须配置以下设置。

  • 确保 SNC 库的版本及其依赖项与 SAP 环境兼容。 若要排查任何库兼容性问题,可以使用本地数据网关和数据网关日志。

  • 对于 SAPGENPSE 实用工具,必须专门使用 sapgenpse.exe。

  • 如果通过连接提供个人安全环境 (PSE),则无需为本地数据网关复制和设置 PSE 和 SECUDIR。

  • 如果通过外部安全产品(例如 sapseculib 、Kerberos 或 NTLM)启用 SNC,请确保 SNC 库与数据网关安装位于同一台计算机上。 对于此任务,请将 SNC 库的二进制文件复制到本地计算机上的数据网关安装所在的文件夹中。 例如“C:\Program Files\On-Premises Data Gateway”。

    在具有数据网关安装和 SNC 库的计算机上,请勿为 SNC_LIB 和 SNC_LIB_64 设置环境变量。 否则,这些环境变会优先于通过连接器传递的 SNC 库值。

  • 若要将 SNC 用于单一登录 (SSO),请确保以映射到 SAP 用户的用户身份运行数据网关服务。 若要更改网关服务帐户的默认帐户,请选择“更改帐户”并输入用户凭据。

    有关启用 SNC 的详细信息,请参阅 启用安全网络通信 (SNC)

    SAP 内置连接器仅支持 SNC X.509 身份验证,不支持单一登录 (SSO) 身份验证。 确保 单租户先决条件 网络连接先决条件 中包含安装 SNC 和通用加密库程序集。 有关启用 SNC 的详细信息,请参阅 启用安全网络通信 (SNC)

    对于来自 SAP 的 SNC,需要下载以下文件,并准备好将其上传到逻辑应用资源。 可以在 软件下载中心的 SAP for Me (需要登录 SAP)提供的 CommonCryptoLib.sar 包中找到这些文件。 有关详细信息,请参阅 下载 CommonCryptoLib.sar

  • sapcrypto.dll
  • sapgenpse.exe
  • slcryptokernal.dll
  • 如果使用不同的 SNC 实现,则这些库文件可能拥有不同的名称。 在任何情况下,都需要 sapgenpse.exe 才能将 SNC 与 SAP 内置连接器配合使用。

    下载 CommonCryptoLib.sar

    若要为来自 SAP 的 SNC 获取必需的程序集和其他文件,可以在 软件下载中心的 SAP for Me (需要登录 SAP)提供的 CommonCryptoLib.sar 包中找到这些文件。 可以根据特定于 SAP 环境的兼容版本,使用任何当前受支持的 CommonCryptoLib 库实现。 但是,Microsoft 建议使用 SAP 提供的最新版本 CommonCryptoLib 库,前提是该版本与你的 SAP 环境兼容。

    若要下载当前的 CommonCryptoLib 包,请执行以下步骤:

  • 登录到 软件下载中心的 SAP for Me

  • 在“下载软件”页,选择“安装和升级”选项卡,展开“按字母顺序排序的索引(A-Z)”,然后选择“C”>“SAP 加密软件”>“下载”选项卡 >“SapCryptoLib”>“下载”选项卡 >“CommonCryptoLib 8”>“下载”选项卡。

  • 从“可下载的项目”列表中,选择“x64 64 位(Windows)”或“IA32 x32 位(Windows Server)”,以与标准逻辑应用平台配置匹配为准。

    Microsoft 建议使用 64 位版本。

  • 从列表中选择最高级别的补丁。

    当前补丁编号因所选 Windows 版本而异。

  • 如果没有用于提取 .sar 文件的 SAPCAR 实用工具 ,请执行以下步骤:

  • 软件中心的 SAP for Me 中的“下载软件”页上,选择“支持包和补丁”选项卡,展开“按字母顺序排序的索引(A-Z)”,然后选择“S”>“SAPCAR”>“下载”选项卡。

  • 从“可下载的项目”列表中,选择操作系统以及 SAPCAR 实用工具的 sapcar.exe 文件。

    如果不熟悉 SAPCAR 实用工具,请查看以下 SAP 博客文章: 轻松提取 SAR 文件

    以下批处理文件是一个改进版本,用于将存档提取到具有相同名称的子目录:

    @echo off
    cd %~dp1
    mkdir %~n1
    sapcar.exe -xvf %~nx1 -R %~n1
    pause
    
  • 包括所有提取的 .dll 和 .exe 文件,以下列表显示了当前 SAP CommonCryptoLib 包的这些文件:

  • sapcrypto.dll
  • sapgenpse.exe
  • slcryptokernal.dll
  • ISE 版本控制的 SAP 连接器支持 SNC X.509,不支持单一登录 (SSO) 身份验证。 如果之前使用过无 SNC 的 SAP 连接器,则可以为 ISE 本机 SAP 连接启用 SNC。

    在重新部署 SAP 连接器以使用 SNC 之前,或者如果部署的 SAP 连接器没有 SNC 或 SAPGENPSE 库,则必须删除所有之前存在的 SAP 连接,然后删除 SAP 连接器。 多个逻辑应用工作流可以使用相同的 SAP 连接。 因此,请确保从 ISE 中的所有逻辑应用工作流中删除任何之前存在的 SAP 连接。

    删除 SAP 连接后,必须从 ISE 中删除 SAP 连接器。 仍可以保留使用此连接器的逻辑应用工作流。 重新部署连接器后,在工作流的 SAP 操作中对新连接进行身份验证。

  • 若要删除现有 SAP 连接,请按照以下任一路径:

  • Azure 门户中,打开每个逻辑应用资源和工作流以删除 SAP 连接。

  • 在设计器中打开逻辑应用工作流。

  • 在逻辑应用菜单的“开发工具”下,选择“API 连接”。

  • 在“API 连接”页面上,选择你的 SAP 连接。

  • 在连接的页面菜单中,选择“删除”。

  • 接受确认提示以删除连接。

  • 等待出现已删除连接的门户通知。

  • Azure 门户中,打开 ISE 资源以删除 SAP 连接。

  • 在 ISE 菜单的“设置”下,选择“API 连接” 。

  • 在“API 连接”页面上,选择你的 SAP 连接。

  • 在连接的页面菜单中,选择“删除”。

  • 接受确认提示以删除连接。

  • 等待出现已删除连接的门户通知。

  • 从 ISE 中删除 SAP 连接器。 必须先删除所有逻辑应用工作流中与此连接器建立的所有连接,然后才能删除该连接器。 如果尚未删除所有连接,请查看前面的步骤。

  • Azure 门户中打开 ISE 资源。

  • 在 ISE 菜单的“设置”下,选择“托管连接器” 。

  • 在“托管连接器”页面上,选中 SAP 连接器的复选框。

  • 在工具栏中选择“删除”。

  • 接受确认提示以删除连接器。

  • 等待出现已删除连接器的门户通知。

  • 在 ISE 中部署或重新部署 SAP 连接器。

  • 准备一个新的 zip 存档文件,以备部署 SAP 连接器时使用。 必须包含 SNC 库和 SAPGENPSE 实用工具。

  • 必须使用 64 位版本的 SNC 库。 不支持 32 位版本。

  • SNC 库及其依赖项必须与 SAP 环境兼容。 若要了解如何检查兼容性,请参阅 ISE 先决条件

  • 将所有 SNC、SAPGENPSE 和 NCo 库复制到 zip 存档的根文件夹中。 请勿将这些二进制文件放在子文件夹中。

  • 针对新的 zip 存档,按照 ISE 先决条件中的部署步骤操作。

  • 针对使用 ISE 本机 SAP 连接器的每个工作流,创建启用 SNC 的新 SAP 连接

  • 针对 ISE 中使用 SAP ISE X.509 的所有连接,更新 base64 编码的二进制 PSE。

  • 将新证书导入 PSE 的副本。

  • 将 PSE 文件编码为 base64 编码的二进制文件。

  • 编辑 SAP 连接信息,并保存新的 PSE 文件。

    连接器会检测 PSE 更改,并在下次连接请求期间更新自己的副本。

    对于多租户 Azure 逻辑应用中的消耗工作流,SAP 托管连接器通过本地数据网关与 SAP 系统集成。 例如,在将工作流发送消息到 SAP 系统的方案中,数据网关将充当 RFC 客户端,将从工作流收到的请求转发到 SAP。 同样,在工作流从 SAP 接收消息的方案中,数据网关将充当 RFC 服务器,接收来自 SAP 的请求并将其转发到工作流。

  • 在与要连接的 SAP 系统位于同一虚拟网络中的主机或虚拟机上,下载并安装本地数据网关

    数据网关有助于安全访问本地数据和资源。 请确保使用受支持版本的网关。 如果网关遇到问题,请尝试升级到最新版本,其中可能包括可解决问题的更新。

  • 在 Azure 门户中,为本地数据网关安装创建 Azure 网关资源

  • 在安装本地数据网关的同一台本地计算机上,下载并安装最新的 SAP NCo 客户端库

  • 针对安装了本地数据网关的主机,请配置网络主机名和服务名称解析。

  • 在从 Azure 逻辑应用连接时,如果要使用主机名或服务名称,必须为每个 SAP 应用程序、消息和网关服务器及其服务设置名称解析:

  • 在 %windir%\System32\drivers\etc\hosts 文件中,或在本地数据网关安装的主机可用的 DNS 服务器中,设置网络主机名称解析。

  • 在 %windir%\System32\drivers\etc\services 文件中设置服务名称解析。

  • 如果你不打算使用网络主机名或服务名称进行连接,可以改用主机 IP 地址和服务端口号。

  • 如果没有适用于 SAP 系统的 DNS 条目,请参阅下例中适合主机文件的条目示例:

    10.0.1.9           sapserver                   # SAP single-instance system host IP by simple computer name
    10.0.1.9           sapserver.contoso.com       # SAP single-instance system host IP by fully qualified DNS name
    

    以下列表显示了服务文件的示例条目集:

    sapdp00            3200/tcp              # SAP system instance 00 dialog (application) service port
    sapgw00            3300/tcp              # SAP system instance 00 gateway service port
    sapmsDV6           3601/tcp              # SAP system ID DV6 message service port
    

    对于单租户 Azure 逻辑应用中的标准工作流,请使用预览版 SAP 内置连接器直接访问受 Azure 虚拟网络保护的资源。 还可以使用其他内置连接器,使工作流直接访问本地资源,而无需使用本地数据网关。

  • 若要使用 SAP 连接器,需要下载以下文件,并读取这些文件以上传到标准逻辑应用资源中。 有关详细信息,请参阅 SAP NCo 客户端库先决条件

  • libicudecnumber.dll
  • rscp4n.dll
  • sapnco.dll
  • sapnco_utils.dll
  • 若要从 SAP 进行 SNC,需要下载以下文件,并准备好将其上传到逻辑应用资源。 有关详细信息,请参阅 SNC 先决条件

  • sapcrypto.dll
  • sapgenpse.exe
  • slcryptokernal.dll
  • 将程序集上传到 Azure 门户

  • Azure 门户中,打开你的标准逻辑应用资源。

  • 在逻辑应用菜单的“工作流”下,选择“程序集”。

  • 在“程序集”窗格工具栏上,选择“添加”。

  • “添加程序集”窗格打开后,为“程序集类型”选择“客户端/SDK 程序集(.NET Framework)。

  • 在“上传文件”下,添加上文所述已下载的必需文件:

    SAP NCo

  • libicudecnumber.dll
  • rscp4n.dll
  • sapnco.dll
  • sapnco_utils.dll
  • CommonCryptoLib

  • sapcrypto.dll
  • sapgenpse.exe
  • slcryptokernal.dll
  • 准备就绪后,选择“上传文件”。

    如果程序集文件为 4 MB 或更小,则可以浏览并选择或拖放文件。 对于大于 4 MB 的文件,请执行以下步骤:

  • 在逻辑应用菜单上的“开发工具”下,选择“高级工具”。

  • 在“高级工具”页中,选择“Go”。

  • 在“Kudu”工具栏上,打开“调试控制台”菜单,然后选择“CMD”。

  • 打开以下文件夹:site>wwwroot

  • 在文件夹结构工具栏上,选择加号 (+),然后选择“新建文件夹”。

  • 创建以下文件夹和子文件夹:lib>builtinOperationSdks>net472

  • 在 net472 文件夹中,上传大于 4 MB 的程序集文件。

    SAP 触发器要求

    Azure 门户中提供了名为“为触发器注册 SAP RFC 服务器”的预览版 SAP 内置连接器触发器,但在 Azure 中部署时,触发器当前无法接收来自 SAP 的调用。 若要触发触发器,可以在 Visual Studio Code 本地运行工作流。 有关 Visual Studio Code 的设置要求和详细信息,请参阅使用 Visual Studio Code 在单租户 Azure 逻辑应用中创建标准逻辑应用工作流。 还必须在安装 Visual Studio Code 的计算机上设置以下环境变量:

  • WEBSITE_PRIVATE_IP:将此环境变量值设置为 127.0.0.1 作为 localhost 地址。
  • WEBSITE_PRIVATE_PORTS:将此环境变量值设置为本地计算机上的两个空闲可用端口,用逗号 (,) 分隔这两个值,例如 8080,8088。
  • 对于 ISE 中的消耗工作流,ISE 提供对受 Azure 虚拟网络保护的资源的访问权限,并提供其他 ISE 本机连接器,这些连接器让工作流无需使用本地数据网关即可直接访问本地资源。

    ISE 资源将于 2024 年 8 月 31 日停用,因为它依赖于同时停用的 Azure 云服务(经典)。 请在停用日期之前将 ISE 中的任何逻辑应用导出到标准逻辑应用,以避免服务中断。 标准逻辑应用工作流在单租户 Azure 逻辑应用中运行,提供相同的功能以及其他内容。

    从 2022 年 11 月 1 日开始,你无法再创建新的 ISE 资源。 但是,我们仍会为在此日期之前存在的 ISE 资源提供支持,一直到 2024 年 8 月 31 日为止。 有关更多信息,请参见以下资源:

  • ISE 停用 - 你需要了解的内容
  • 适用于 Azure 逻辑应用的单租户与多租户和集成服务环境的比较情况
  • Azure 逻辑应用定价
  • 将 ISE 工作流导出到标准逻辑应用
  • 集成服务环境将于 2024 年 8 月 31 日停用 - 过渡到逻辑应用标准版
  • 云服务(经典)部署模型将于 2024 年 8 月 31 日停用
  • 如果还没有带有 blob 容器的 Azure 存储帐户,请使用 Azure 门户Azure 存储资源管理器创建一个容器。

  • 在本地计算机上下载并安装最新的 SAP NCo 客户端库。 你应该有以下程序集 (.dll) 文件:

  • libicudecnumber.dll
  • rscp4n.dll
  • sapnco.dll
  • sapnco_utils.dll
  • 在根文件夹中,创建一个包含这些程序集文件的 .zip 文件。 将包上传到 Azure 存储中的 blob 容器。

    不要在 .zip 文件中使用子文件夹。 只有存档根文件夹中的程序集与 ISE 中的 SAP 连接器一起部署。

    如果你使用 SNC,还需要将 SNC 程序集和二进制文件包含在同一 .zip 文件的根目录中。 有关详细信息,请查看 ISE 的 SNC 先决条件

  • 在 Azure 门户或 Azure 存储资源管理器中,浏览到上传 .zip 文件的容器位置。

  • 复制容器位置的 URL。 请确保包含共享访问签名 (SAS) 令牌,以便对 SAS 令牌进行授权。 否则,SAP ISE 连接器的部署将失败。

  • 在 ISE 中安装并部署 SAP 连接器。 有关详细信息,请参阅添加 ISE 连接器

  • Azure 门户中,找到并打开 ISE。

  • 在 ISE 菜单上,选择“托管连接器”>“添加”。 在连接器列表中,找到并选择“SAP”。

  • 在“添加新的托管连接器”窗格的“SAP 包”框中,粘贴包含 SAP 程序集的 .zip 文件的 URL 。 同样,请确保包含 SAS 令牌。

  • 选择“创建”以完成创建 ISE 连接器。

  • 如果 SAP 实例和 ISE 位于不同的虚拟网络中,还需要将这些网络对等互连,以便它们连接在一起。 查看 ISE 的 SNC 先决条件

  • 获取从工作流连接时计划要使用的 SAP 应用程序、消息和网关服务器的 IP 地址。 网络名称解析不适用于 ISE 中的 SAP 连接。

  • 获取从工作流连接时计划要使用的 SAP 应用程序、消息和网关服务器的端口号。 服务名称解析不适用于 ISE 中的 SAP 连接。

    对于在多租户 Azure 逻辑应用中运行的消耗工作流,可以启用 SNC 进行身份验证,此操作仅适用于使用数据网关时。 在开始之前,请确保满足所有必要的先决条件SNC 先决条件

  • Azure 门户中,打开设计器中的消耗型逻辑应用和工作流。

  • 添加或编辑 SAP 托管连接器操作。

  • 在 SAP 连接信息框中,提供以下必需的信息。 选择的“身份验证类型”会更改可用选项。

    “SAP 用户名”和“SAP 密码”字段均为可选。 如果未提供用户名和密码,连接器将使用稍后步骤中提供的客户端证书进行身份验证。

  • 若要启用 SNC,在 SAP 连接信息框中,提供以下必需的信息:

    SNC 库 输入以下值之一:

    - SNC 库的名称,例如 sapsnc.dll
    - NCo 安装位置的相对路径,例如 .\security\sapsnc.dll
    - NCo 安装位置的绝对路径,例如 c:\security\sapsnc.dll SNC SSO 选择“使用 SNC 标识登录”或“使用 RFC 级别提供的用户名/密码登录”。

    通常,SNC 标识用于对调用方进行身份验证。 可以选择使用用户名和密码进行身份验证,但此参数值仍会加密。 我的 SNC 名称 在大多数情况下,你可以省略此值。 安装的 SNC 解决方案通常知道自己的 SNC 名称。 如果解决方案支持多个标识,则可能需要指定要用于此特定目标或服务器的标识。 SNC 合作伙伴名称 输入后端 SNC 的名称,例如“p:CN=DV3, OU=LA, O=MS, C=US”。 SNC 保护质量 选择此特定目标或服务器的 SNC 通信使用的服务质量。 默认值由后端系统定义。 最大值由 SNC 使用的安全产品定义。 SNC 证书 输入证书的 base64 编码公钥,用于向 SAP 标识你的客户端。

    注意:请勿包含 PEM 页眉或页脚。

    - 不要在此处输入客户端证书的私钥。 个人安全环境 (PSE) 必须包含此证书的匹配私钥,并且可能包含其他私有证书。 有关详细信息,请查看下一个参数。 输入 SNC 个人安全环境 (PSE) 作为 base64 编码的二进制文件。

    - PSE 必须包含客户端证书的私钥,其中指纹与“SNC 证书”参数中的客户端证书的公钥相匹配。

    - 尽管 PSE 可能包含多个客户端证书,但若要使用不同的客户端证书,请改为创建单独的工作流。

    - 如果为标准逻辑应用资源使用多个 SNC 客户端证书,则必须为所有连接提供相同的 PSE。 PSE 必须包含每个和所有连接的客户端证书的匹配私钥。 必须将“SNC 证书”参数设置为与每个连接的特定私有证书相匹配。

    对于在单租户 Azure 逻辑应用中运行的标准工作流,可以启用 SNC 进行身份验证。 在开始之前,请确保满足所有必要的先决条件单租户的 SNC 先决条件

  • Azure 门户中,打开你的标准逻辑应用资源。

  • 若要指定 SNC 个人安全环境 (PSE) 和 PSE 密码,请执行以下步骤:

  • 在逻辑应用资源菜单中的“设置”下,选择“配置” 。

  • 在“应用程序设置”选项卡上,检查名为 SAP_PSE 和 SAP__PSE_Password 的设置是否已存在。 如果设置不存在,则必须添加这两个设置。 若要添加新设置,请选择“新应用程序设置”,提供以下必需的信息,然后为每个设置选择“确定”:

    SAP_PSE <PSE-value> 输入 SNC 个人安全环境 (PSE) 作为 base64 编码的二进制文件。

    - PSE 必须包含客户端证书的私钥,其中指纹与“SNC 证书”参数中的客户端证书的公钥相匹配。

    - 尽管 PSE 可能包含多个客户端证书,但若要使用不同的客户端证书,请改为创建单独的工作流。

    - PSE 不得具有 PIN。 如果必要,使用 SAPGENPSE 实用工具将 PIN 设置为空。

    - 如果为 ISE 使用多个 SNC 客户端证书,则必须为所有连接提供相同的 PSE。 PSE 必须包含每个和所有连接的客户端证书的匹配私钥。 必须将“SNC 证书”设置为与每个连接的特定私有证书相匹配。 SAP_PSE_Password <PSE-password> PSE 的密码(也称为 PIN)

    对于在 ISE 中运行的消耗工作流,可以启用 SNC 进行身份验证。 在开始之前,请确保满足所有必要的先决条件ISE 的 SNC 先决条件

  • Azure 门户的设计器中,打开你的 ISE 资源和逻辑应用工作流。

  • 添加或编辑 ISE 版本控制 SAP 连接器操作。 确保 SAP 连接器操作显示“ISE”标签。

  • 在 SAP 连接信息框中,提供以下必需的信息。 选择的“身份验证类型”会更改可用选项。

    “SAP 用户名”和“SAP 密码”字段均为可选。 如果未提供用户名和密码,连接器将使用稍后步骤中提供的客户端证书进行身份验证。

  • 若要启用 SNC,在 SAP 连接信息框中,提供以下必需的信息:

    SNC 证书 按照以下指南输入 base64 编码格式的 SNC 客户端公共证书:

    - 请勿包含 PEM 页眉或页脚。

    - 请勿在此处输入专用证书,因为个人安全环境 (PSE) 可能包含多个专用证书。 但是,此“SNC 证书”参数标识此连接必须使用的证书。 有关详细信息,请查看下一个参数。 (PSE) 个人安全环境 按照以下指南输入 SNC PSE 作为 base64 编码的二进制文件:

    - PSE 必须包含专用客户端证书,该证书的指纹与上一步中提供的公共客户端证书匹配。

    - 尽管 PSE 可能包含多个客户端证书。 若要使用不同的客户端证书,请改为创建单独的工作流应用。

    - PSE 不得具有 PIN。 如果必要,使用 SAPGENPSE 实用工具将 PIN 设置为空。

    - 如果为 ISE 使用多个 SNC 客户端证书,则必须为所有连接提供相同的 PSE。 PSE 必须包含所有连接的客户端专用证书。 必须将客户端公共证书参数设置为与 ISE 中使用的每个连接的特定专用证书相匹配。
  • 使用 PowerShell 脚本,例如:

    Param ([Parameter(Mandatory=$true)][string]$psePath, [string]$base64OutputPath)
    $base64String = [convert]::ToBase64String((Get-Content -path $psePath -Encoding byte))
    if ($base64OutputPath -eq $null)
        Write-Output $base64String
        Set-Content -Path $base64OutputPath -Value $base64String
        Write-Output "Output written to $base64OutputPath"
    
  • 将脚本保存为 pseConvert.ps1 文件,然后调用该脚本,例如:

    .\pseConvert.ps1 -psePath "C:\Temp\SECUDIR\request.pse" -base64OutputPath "connectionInput.txt"
    Output written to connectionInput.txt 
    

    如果未提供输出路径参数,则脚本到控制台的输出将包含换行符。 删除连接输入参数的 base 64 编码字符串的换行符。

    设置并测试将 IDoc 从 SAP 发送到工作流

    仅当使用逻辑应用工作流测试 SAP 配置时,才按照这些步骤操作。 生产环境需要其他配置。

    若要将 IDoc 从 SAP 发送到工作流,需要满足以下最低配置:

  • 创建 RFC 目标。
  • 创建 ABAP 连接。
  • 创建接收方端口。
  • 创建发送方端口。
  • 创建逻辑系统合作伙伴。
  • 创建合作伙伴配置文件。
  • 测试发送消息。
  • 创建 RFC 目标

    此目标将逻辑应用工作流标识为接收方端口。

  • 在 SAP 中,打开“RFC 连接配置”设置。 可以使用带有 /n 前缀的 sm59 事务代码 (T-Code)。

  • 选择“TCP/IP 连接”“创建”。

  • 使用以下设置创建新 RFC 目标:

  • 为“RFC 目标”输入名称。

  • 在“技术设置”选项卡上,对于“激活类型”,选择“注册服务器程序” 。

  • 为“程序 ID”输入一个值。 在 SAP 服务器中,使用此标识符来注册工作流的触发器。

    SAP“程序 ID”区分大小写。 配置工作流和 SAP 服务器时,请确保“程序 ID”始终使用相同的大小写格式。 否则,当你尝试将 IDoc 发送到 SAP 时,可能会在 tRFC 监视器 (T-Code SM58) 中收到以下错误:

  • 找不到函数 IDOC_INBOUND_ASYNCHRONOUS
  • 不支持非 ABAP RFC 客户端(合作伙伴类型)
  • 有关 SAP 的详细信息,请参阅以下说明(需要登录):

  • https://launchpad.support.sap.com/#/notes/2399329
  • https://launchpad.support.sap.com/#/notes/353597
  • 在“Unicode”选项卡上,对于“与目标系统的通信类型”,选择“Unicode” 。

    SAP .NET 客户端库仅支持 Unicode 字符编码。 如果在将 IDoc 从 SAP 发送到 Azure 逻辑应用时出现错误“不支持非 ABAP RFC 客户端(合作伙伴类型)”,请检查“与目标系统的通信类型”值是否设置为“Unicode”。

  • 创建一个以名为“收到消息时”的 SAP 托管触发器启动的逻辑应用工作流,使用 Azure 逻辑应用注册新的“程序 ID”。

    这样一来,保存工作流时,Azure 逻辑应用就会在 SAP 网关上注册“程序 ID”。

  • 在工作流的触发器历史记录、本地数据网关 SAP 适配器日志(如适用)和 SAP 网关跟踪日志中检查注册状态。

    在 SAP 网关监视器对话框 (T-Code SMGW) 中,在“已登录客户端”下,新注册显示为“已注册的服务器”。

  • 若要测试连接,请在新“RFC 目标”下,选择“连接测试”。

    创建 ABAP 连接

    此目标将 SAP 系统标识为发送方端口。

  • 在 SAP 中,打开“RFC 连接配置”设置。 可以使用带有 /n 前缀的 sm59 事务代码 (T-Code)。

  • 选择“ABAP 连接”“创建”。

  • 对于“RFC 目标”,输入测试 SAP 系统的标识符。

  • 在“技术设置”中,将目标主机留空以创建与 SAP 系统的本地连接。

  • 保存所做更改。

  • 若要测试你的连接,请选择“连接测试”。

    创建接收方端口

  • 在 SAP 中,打开“IDOC 处理中的端口”设置。 可以使用带有 /n 前缀的 we21 事务代码 (T-Code)。

  • 选择“端口”事务 RFC”“创建”。

  • 在打开的设置框中,选择“自己的端口名”。 为测试端口输入一个名称。 保存更改。

  • 在新接收方端口的设置中,对于“RFC 目标”,输入测试 RFC 目标的标识符。

  • 保存更改。

    创建发送方端口

  • 在 SAP 中,打开“IDOC 处理中的端口”设置。 可以使用带有 /n 前缀的 we21 事务代码 (T-Code)。

  • 选择“端口”事务 RFC”“创建”。

  • 在打开的设置框中,选择“自己的端口名”。

  • 对于测试端口,输入以 SAP 开头的名称 。 保存所做更改。

    所有发送方端口名称必须以字母 SAP 开头,例如 SAPTEST 。

  • 在新的发送方端口的设置中,对于 RFC 目标,输入 ABAP 连接的标识符。

  • 保存更改。

    创建逻辑系统合作伙伴

  • 在 SAP 中,打开“更改视图“逻辑系统”: 概览”设置。 可以使用 bd54 事务代码 (T-Code)。

  • 接受出现的以下警告消息:“注意: 该表是跨客户端的”

  • 在显示现有逻辑系统的列表上方,选择“新条目”。

  • 对于新的逻辑系统,请输入 Log.System 标识符和简短的名称描述 。 保存更改。

  • 出现“工作台提示”时,通过提供描述来创建新请求,或者如果已经创建了请求,则跳过此步骤。

  • 创建工作台请求后,将该请求链接到表更新请求。 若要确认表已更新,请保存所做的更改。

    创建合作伙伴配置文件

    对于生产环境,必须创建两个合作伙伴配置文件。 第一个配置文件用于发送方,即你的组织和 SAP 系统。 第二个配置文件用于接收方,即逻辑应用资源和工作流。

  • 在 SAP 中,打开“合作伙伴配置文件”设置。 可以使用带有 /n 前缀的 we20 事务代码 (T-Code)。

  • 在“合作伙伴配置文件”下,选择“合作伙伴类型 LS”“创建”。

  • 使用以下设置创建新合作伙伴配置文件:

  • 在 SAP 中,打开“IDoc 处理的测试工具”设置。 可以使用带有 /n 前缀的 we19 事务代码 (T-Code)。

  • 在“测试模板”下,选择“通过消息类型”。 输入消息类型,例如 CREMAS。 选择“创建”。

  • 对于消息“哪个 IDoc 类型?”,通过选择“继续”进行确认 。

  • 选择“EDIDC”节点。 为接收方和发送方端口输入合适的值。 选择“继续”。

  • 选择“标准出站处理”。

  • 要启动出站 IDoc 处理,请选择“继续”。

    当工具处理完以后,将显示“IDoc 已发送到 SAP 系统或外部程序”消息。

  • 要检查是否存在处理错误,请使用前缀为“/n”的“sm58”事务代码 (T-Code)。

    为常见 SAP 方案创建工作流

    有关为常见 SAP 集成工作负载创建工作流的操作指南,请参阅以下步骤:

  • 从 SAP 接收消息
  • 从 SAP 接收 IDoc 数据包
  • 向 SAP 发送 IDoc
  • 为 SAP 中的项目生成架构
  • 为高级 SAP 方案创建工作流

  • 更改用于将数据发送到 SAP 的语言标头
  • 单独确认事务并避免重复 IDoc
  • 查找扩展错误日志(仅托管连接器)

    如果使用 SAP 托管连接器,可以通过检查 SAP 适配器的扩展日志来查找完整的错误消息。 你还可以为 SAP 连接器启用扩展日志文件

  • 对于 2020 年 4 月或更早发布的本地数据网关,默认情况下禁用日志。

  • 对于 2020 年 6 月及之后发布的本地数据网关,你可以在应用设置中启用网关日志

  • 默认的日志记录级别为“警告”。

  • 如果在本地数据网关应用的“诊断”设置中启用了“附加日志记录”,则日志记录级别将提升至“信息”。

  • 要将日志记录级别提升至“详细”,请在配置文件中更新以下设置。 通常,配置文件位于 C:\Program Files\On-premises data gateway\Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config

    <setting name="SapTraceLevel" serializeAs="String">
       <value>Verbose</value>
    </setting>
    

    在本地数据网关设置扩展 SAP 日志记录(仅托管连接器)

    如果为 Azure 逻辑应用使用本地数据网关,则可以为 SAP 连接器配置扩展日志文件。 你可以使用本地数据网关将 Windows 事件跟踪 (ETW) 事件重定向到包含在网关的日志记录 zip 文件中的轮换日志文件中。

    你可以将网关的所有配置和服务日志从网关应用的设置导出到 .zip 文件中。

    扩展日志记录处于始终启用状态时,可能会影响工作流的性能。 最佳做法是在完成问题分析和故障排除后关闭扩展日志文件。

    捕获 ETW 事件

    作为可选的高级日志记录任务,可以直接捕获 ETW 事件,然后在事件中心 Azure 诊断中使用数据,或者将数据收集到 Azure Monitor 日志。 有关详细信息,请参阅收集和存储数据的最佳做法

    若要处理生成的 ETL 文件,可以使用 PerfView,也可以编写自己的程序。 以下演练使用 PerfView:

  • 在 PerfView 菜单中,选择“收集”“收集”以捕获事件。

  • 在“其他提供程序”参数中,输入 *Microsoft-LobAdapter 以指定用于捕获 SAP 适配器事件的 SAP 提供程序。 如果未指定此信息,则跟踪只包含常规 ETW 事件。

  • 保留其他默认设置。 如果需要,可以在“数据文件”参数中更改文件名或位置。

  • 选择“开始收集”以开始跟踪。

  • 重现问题或收集足够的分析数据后,请选择“停止收集”。

  • 若要与另一方(如 Azure 支持工程师)共享你的数据,请压缩 ETL 文件。

  • 查看跟踪的内容:

  • 在 PerfView 中,选择“文件”“打开”,然后选择刚刚生成的 ETL 文件。

  • 在 PerfView 侧栏中,ETL 文件下的“事件”部分。

  • 在“筛选器”下,按 筛选以仅查看相关事件和网关进程。

  • 如果你的标准逻辑应用资源已停止或禁用,请从工作流转到逻辑应用资源级别,然后选择“概览”。 在工具栏上选择“启动”。

  • 返回到工作流级别。 在工作流菜单上,选择“概述”。 在工具栏上选择“运行”>“运行”以手动启动工作流。

  • 若要触发工作流,请从 SAP 系统发送一条消息。

  • 返回到工作流的“概览”窗格。 在“运行历史记录”下,查找工作流是否有任何新运行。

  • 打开最近的运行,其中显示了手动运行。 查找并查看触发器输出部分。

    将本地数据网关的 SAP 遥测发送到 Azure Application Insights

    本地数据网关进行 2021 年 8 月更新之后,SAP 连接器操作可以将来自 SAP NCo 客户端库的遥测数据和来自 Microsoft SAP 适配器的跟踪发送到 Azure Monitor 中的 Application Insights 功能。 该遥测主要包含以下数据:

  • 基于 SAP NCo 指标和监视器的指标和跟踪。

  • 来自 Microsoft SAP 适配器的跟踪。

    来自 SAP NCo 客户端库的指标和跟踪

    指标是根据本地数据网关上资源的使用情况和可用性,在一段时间内可能会变化,也可能不会变化的数值。 这些指标可用于更好地了解系统运行状况并创建有关以下活动的警报:

  • 系统健康状况下降。
  • 异常事件。
  • 系统负载过高。
  • 此信息将发送到名为 customMetrics 的 Application Insights 表。 默认情况下,每隔 30 秒发送一次指标。

    SAP NCo 指标和跟踪基于 SAP NCo 指标,特别是以下 NCo 类:

  • RfcDestinationMonitor。
  • RfcConnectionMonitor。
  • RfcServerMonitor。
  • RfcRepositoryMonitor。
  • 有关每个类提供的指标的详细信息,请查看 SAP NCo 文档(需要登录)

    跟踪包含与指标一起使用的文本信息。 此信息将发送到名为 traces 的 Application Insights 表。 默认情况下,每隔 10 分钟发送一次跟踪。

    为 Application Insights 设置 SAP 遥测

    需要先创建并设置 Application Insights 资源,然后才能将网关安装的 SAP 遥测发送到 Application Insights。 有关详细信息,请查看以下文档:

  • 创建 Application Insights 资源(经典)

  • 基于工作区的 Application Insights 资源

    若要实现将 SAP 遥测发送到 Application Insights,请执行以下步骤:

  • 从以下位置下载 Microsoft.ApplicationInsights.EventSourceListener.dll 的 NuGet 包:

  • 将下载的文件添加到本地数据网关安装目录,例如“C:\Program Files\On-Premises Data Gateway”。

  • 在本地数据网关安装目录中,检查 Microsoft.ApplicationInsights.dll 文件是否与添加的 Microsoft.ApplicationInsights.EventSourceListener.dll 文件具有相同的版本号 。 该网关当前使用版本 2.14.0。

  • 在 ApplicationInsights.config 文件中,通过取消注释带有 元素的行来添加 Application Insights 检测密钥。 将占位符 your-Application-Insights-instrumentation-key 替换为你的密钥,例如:

    <?xml version="1.0" encoding="utf-8"?>
    <ApplicationInsights schemaVersion="2014-05-30" xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
       <!-- Uncomment this element and insert your Application Insights key to receive ETW telemetry about your gateway <InstrumentationKey>*your-instrumentation-key-placeholder*</InstrumentationKey> -->
       <TelemetryModules>
          <Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights">
             <IsHeartbeatEnabled>false</IsHeartbeatEnabled>
          <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
             <Sources>
                <Add Name="Microsoft-LobAdapter" Level="Verbose" />
             </Sources>
       </TelemetryModules>
    </ApplicationInsights>
    
  • 在 ApplicationInsights.config 文件中,可以根据要求更改 SAP 连接器操作所需的跟踪 值,例如:

    <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
       <Sources>
          <Add Name="Microsoft-LobAdapter" Level="Verbose" />
       </Sources>
    

    有关详细信息,请查看以下文档:

  • Level 值:Level

  • EventSource 跟踪

  • EventSource 事件

  • 应用所做的更改后,重启本地数据网关服务。

    在 Application Insights 中查看指标

    在逻辑应用工作流中运行 SAP 操作后,可以查看发送到 Application Insights 的遥测。

  • 在 Azure 门户中,打开 Application Insights 资源。

  • 在资源菜单的“监视”下,选择“日志” 。

    以下屏幕截图显示 Azure 门户中打开“日志”窗格的 Application Insights:

  • 在“日志”窗格中,可以使用基于特定要求的 Kusto 查询语言 (KQL) 创建查询

    可以使用类似于以下示例查询的查询模式:

    customMetrics
    | extend DestinationName = tostring(customDimensions["DestinationName"])
    | extend MetricType = tostring(customDimensions["MetricType"])
    | where customDimensions contains "RfcDestinationMonitor"
    | where name contains "MaxUsedCount"
    
  • 运行查询后,查看结果。

    以下屏幕截图显示示例查询的指标结果表:

  • MaxUsedCount 是“受监视目标同时使用的最大客户端连接数”,如 SAP NCo 文档(需要登录)中所述。 可以使用该值来了解同时打开的连接数。

  • “valueCount”列的每个读数显示为“2”,因为指标每隔 30 秒生成。 Application Insights 每分钟聚合一次这些指标。

  • DestinationName 列包含一个字符串,该字符串是 Microsoft SAP 适配器的内部名称。

    为了更好地了解此远程函数调用 (RFC) 目标,请将该值与 traces 配合使用,例如:

    customMetrics
    | extend DestinationName = tostring(customDimensions["DestinationName"])
    | join kind=inner (traces
       | extend DestinationName = tostring(customDimensions["DestinationName"]),
       AppServerHost = tostring(customDimensions["AppServerHost"]),
       SncMode = tostring(customDimensions["SncMode"]),
       SapClient = tostring(customDimensions["Client"])
       | where customDimensions contains "RfcDestinationMonitor"
       on DestinationName , $left.DestinationName == $right.DestinationName
    | where customDimensions contains "RfcDestinationMonitor"
    | where name contains "MaxUsedCount"
    | project AppServerHost, SncMode, SapClient, name, valueCount, valueSum, valueMin, valueMax
    

    来自 Microsoft SAP 适配器的跟踪

    可以使用从 Microsoft SAP 适配器发送的跟踪来进行问题后分析,并查找任何现有的内部系统错误,这些错误可能会在 SAP 连接器操作中出现,也可能不会出现。 这些跟踪已将 message 设置为 "n\a",因为它们来自早于 Application Insights 的早期事件源框架,例如:

    traces
    | where message == "n/a"
    | where severityLevel > 0
    | extend ActivityId = tostring(customDimensions["ActivityId"])
    | extend fullMessage = tostring(customDimensions["fullMessage"])
    | extend shortMessage = tostring(customDimensions["shortMessage"])
    | where ActivityId contains "8ad5952b-371e-4d80-b355-34e28df9b5d1"
    

    以下屏幕截图显示示例查询的跟踪结果表:

  • 为常见 SAP 方案创建示例工作流
  •