SAP ERP

借助 SAP ERP 连接器,您可以对 SAP ERP 数据执行插入、删除、更新和读取操作。

支持的版本

SAP ERP 连接器可以使用以下方法与 SAP R/3 系统通信:

  • 业务应用编程接口 (BAPI)
  • 远程函数调用 (RFC)
  • SAP 表
  • SAP 查询
  • IDoc 消息
支持与以下内容的连接:
  • SAP ECC
  • SAP ERP
  • SAP R/3
  • SAP S/4 Hana 本地部署
  • SAP JCo 版本。

    此连接器要求在创建连接期间提供两个 JCo 文件:sapjco3.jarlibsapjco3.so(适用于 Unix)。您可以从 SAP 连接器网站下载 JCo 3.1.5 版本。

  • 如果 SAP 系统支持 RFC 连接且有可用的 RFC,则与 SAP 系统的连接有效。系统可能还支持支持 RFC 连接的其他版本。

可通过 SAP ERP 连接器访问以下 SAP 内容:

SAP 表:SAP 表会通过 TableMode 连接属性自动公开为视图。使用 Views 连接属性指定要使用的 SAP 表,该属性会替换 TableMode。SAP 不建议直接修改表。建议改用 BAPI 修改任何表格数据。不支持直接修改 SAP 表。

BAPI 和 RFC:BAPI 和 RFC 会作为存储过程直接公开。默认情况下,所有以关键字 BAPI 开头的 RFC 均显示为可用的存储过程。

IDoc:中间文档 (IDoc) 文件是 SAP 对象,以电子消息的形式将业务交易数据从一个系统传输到另一个系统。IDoc 通过电子数据交换 (EDI) 系统将数据从 SAP 传输到非 SAP 系统。

如需详细了解这些术语,请参阅 SAP 术语表

准备工作

在使用 SAP ERP 连接器之前,请完成以下任务:

  • 在您的 Google Cloud 项目中:
    • 向配置连接器的用户授予 roles/connectors.admin IAM 角色。
    • 将以下 IAM 角色授予您要用其来使用连接器的服务账号:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
      • roles/storage.objectViewer

      服务账号是一种特殊类型的 Google 账号,用于表示需要验证身份并获得授权以访问 Google API 数据的非人类用户。如果您没有服务账号,则必须创建一个服务账号。如需了解详情,请参阅创建服务账号

    • 启用以下服务:
      • secretmanager.googleapis.com (Secret Manager API)
      • connectors.googleapis.com (Connectors API)

      如需了解如何启用服务,请参阅启用服务

    如果之前没有为您的项目启用这些服务或权限,则在您配置连接器时,系统会提示您启用。

配置连接器

配置连接器时,您需要创建与数据源(即后端系统)的连接。一个连接需专用于一个数据源。这意味着,如果您有许多数据源,则必须为每个数据源创建单独的连接。如需创建连接,请执行以下步骤:

  1. Cloud 控制台 中,进入 Integration Connectors > 连接页面,然后选择或创建一个 Google Cloud 项目。

    转到“连接”页面

  2. 点击 + 新建以打开创建连接页面。
  3. 位置部分,选择连接的位置。
    1. 区域:从下拉列表中选择一个位置。

      如需查看所有受支持区域的列表,请参阅位置

    2. 点击下一步
  4. 连接详情部分中,完成以下操作:
    1. 连接器:从可用连接器下拉列表中选择 SAP ERP
    2. 连接器版本:从可用版本的下拉列表中选择一个连接器版本。
    3. Connection Name 字段中,输入连接实例的名称。

      连接名称必须符合以下条件:

      • 连接名称可以使用字母、数字或连字符。
      • 字母必须小写。
      • 连接名称必须以字母开头,以字母或数字结尾。
      • 连接名称不能超过 49 个字符。
      • 对于支持事件订阅的连接器,关联名称不得以“goog”前缀开头。
    4. (可选)输入连接的说明
    5. 您可以选择启用 Cloud Logging,然后选择日志级别。默认情况下,日志级别设置为 Error
    6. 服务账号:选择具有所需角色的服务账号。
    7. 如需将该关联用于事件订阅,请选择启用事件订阅。正在选择 时,系统会显示以下选项:
      • 启用事件订阅、实体和操作:选择此选项可将连接用于事件订阅和连接器操作(实体和操作)。
      • 仅启用事件订阅:选择此选项可将连接仅用于事件订阅。如果您选择此选项,请点击下一步,然后 配置事件订阅
    8. 客户端:向 SAP 系统进行身份验证的客户端。
    9. 系统 ID:SAP 系统的系统 ID 或 R3Name 是一个字符串,最多包含三个字符。它通常用于负载均衡连接。
    10. 系统编号:定义目标系统所用的编号。用于设置“Host connection”属性。
    11. 项目 ID:包含 SAP JCo jar 的 GCS 存储桶所在的 Google Cloud 项目的 ID。
    12. 存储桶:包含 sapjco3.jar 和 libsapjco3.so 文件的存储桶的名称。
    13. Jaco jar 对象 ID:JCo jar 的对象 ID。
    14. libsapjco3 对象 ID:libsapjco3 jar 的对象 ID。
    15. 表格模式:选择要显示为视图的 SAP 表。
    16. SNC_LIB 对象 ID:SNC 库的对象 ID。
    17. PSE 名称:适用的个人安全环境 (PSE) 文件的名称 。PSE 文件以 ASN.1 结构存储公钥和私钥对以及 X.509 证书。
    18. 群组:用于登录的群组名称。这通常是在 SAP 系统 使用负载平衡器
    19. 消息服务器:连接到使用负载均衡器的 SAP 系统时要使用的消息服务器的名称。
    20. 读取表格函数:要用于读取表格的函数名称。如需了解详情,请参阅使用自定义读取表函数
    21. 连接方案:选择用于连接到 SAP 系统的连接方案。
    22. 系统 ID:SAP 系统的系统 ID 或 R3Name。您最多可以输入 3 个字符。
    23. SNC 密码:选择 SNC 库密码的 Secret Manager 密钥。
    24. Secret 版本:选择 Secret 版本。
    25. SNC 模式:选择此选项可在集成连接器和 SAP 系统之间启用 SNC 进行身份验证。
    26. SNC 名称:输入 SNC 连接的名称。
    27. SNC qop:选择保护级别。支持的级别如下:
      • 1 - 仅应用身份验证。
      • 2 - 应用完整性保护。这还包括身份验证保护。
      • 3 - 采取隐私保护措施。这还包括完整性和身份验证保护。
      • 8 - 应用默认保护。
      • 9 - 应用最高级别的保护。
    28. SNC 合作伙伴名称:输入应用服务器的 SNC 名称。
    29. 查询模式:选择哪些 SAP 表必须显示为视图。
    30. 可浏览的视图:输入要显示的视图的逗号分隔列表。 例如 ViewA,ViewB,ViewC
    31. 详细程度级别:输入日志记录的详细程度级别。支持的 值介于 1 到 5 之间。值越高,表示可获取的详细信息就越多 日志中。
    32. (可选)配置连接节点设置

      • 节点数下限:输入连接节点数下限。
      • 节点数上限:输入连接节点数上限。

      节点是处理事务的连接单元(或副本)。 连接处理越多事务就需要越多节点,相反,处理越少事务需要越少节点。 如需了解节点如何影响连接器价格,请参阅连接节点的价格。如果未输入任何值,则默认情况下,节点数下限设置为 2(以便提高可用性),节点数上限设置为 50。

    33. (可选)点击 + 添加标签,以键值对的形式向连接添加标签。
    34. 点击下一步
  5. 目标位置部分,输入您要连接的远程主机(后端系统)的详细信息。
    1. 目标类型:选择目标类型
      • 从列表中选择主机地址,以指定目的地的主机名或 IP 地址。
      • 如果要与后端系统建立专用连接,请从列表中选择端点连接,然后从端点连接列表中选择所需的端点连接。

      如果要与后端系统建立公共连接以增强安全性,您可以 可以考虑配置静态出站 IP 地址,然后配置 将您的防火墙规则设置为仅将特定的静态 IP 地址列入许可名单。

      如需输入其他目标,请点击 + 添加目标

    2. 点击下一步
  6. 身份验证部分中,输入身份验证详细信息。
    1. 选择身份验证类型,然后输入相关详细信息。

      SAP ERP 连接支持以下身份验证类型:

      • 用户名和密码
    2. 如需了解如何配置这些身份验证类型,请参阅配置身份验证

    3. 点击下一步
  7. 如果您已启用事件订阅,则“事件订阅详情”部分会显示在连接创建页面上。为了了解 请参阅配置事件订阅
  8. 查看:查看您的连接和身份验证详细信息。
  9. 点击创建

配置身份验证

根据您要使用的身份验证输入详细信息。

  • 用户名和密码
    • 用户名:连接器的用户名
    • 密码:包含与连接器关联的密码的 Secret Manager Secret。

配置事件订阅

如果您启用了事件订阅,请在 Event Subscription Details 部分:

  1. 为事件监听器选择以下任意一种身份验证类型。
  2. 输入事件类型字段名称。此字段标识与 传入事件请求。
    {
    "event_type": "user.created",
    ...
    // other request fields
    ...
    }
  3. 选择启用专用连接以在后端应用之间实现安全连接 以及你的人脉关系如果您选择此选项,则必须执行额外的配置步骤 。如需了解详情,请参阅适用于事件订阅的专用连接
  4. 输入死信配置。如果您配置了死信,则连接会写入 将未处理的事件发送到指定的 Pub/Sub 主题。输入以下详细信息:
    1. 死信项目 ID :您在其中配置了死信 Pub/Sub 主题的 Google Cloud 项目的 ID。
    2. 死信主题:您要将未处理事件的详细信息写入的 Pub/Sub 主题。

连接配置示例

以下部分列出了创建 SAP ERP 连接时各种字段的示例值,以及不同连接类型所需的参数。

连接到分布式 SAP 系统

如果要连接到分布式 SAP 系统(例如使用负载均衡的系统),则必须指定以下额外连接属性。管理员可以在 SAP 系统的“System Entry Properties”(系统条目属性)对话框的“Connection”(连接)标签页中获取这些连接属性。

  • 系统 ID:指定您从 SystemId 属性中获取的值。“系统 ID”是 SAP 系统的系统 ID/R3Name。系统 ID 是一个最多包含 3 个字符的字符串。
  • Message Server:将此属性设置为您从 MessageServer 属性中获取的值。如果在 SAProuter 框中指定了值,请将 SAProuter 框中的值添加到 MessageServer 连接字符串属性的值前面。使用负载均衡连接到 SAP 系统时,必须指定 MessageServer 属性。
  • 组:将此属性设置为您从“组/服务器”属性中获取的值。Group 属性指定要使用的登录组。默认值为 PUBLIC。

连接到自定义应用服务器

如果您使用专用应用服务器或自定义应用服务器连接到 SAP 系统,则必须指定以下额外的连接属性。管理员可以从 SAP 系统获取这些连接属性。

  • 系统 ID:指定您从 SystemId 属性中获取的值。这是 SAP 系统的系统 ID 或 R3Name。系统 ID 是一个字符串,最多包含 3 个字符。
  • 主机:指定从应用服务器获取的值。

    此参数用于指定目标系统的主机名。此值可以是常规主机名、IP 地址或 SAP 路由器地址。

  • 系统编号 :指定从 SystemNumber 属性获取的值。

    SystemNumber 属性用于定义目标系统。

配置安全网络连接

如果管理员配置了安全网络通信 (SNC),您必须设置以下额外属性。在 SAP 系统中,您可以在“System Entry Properties”(系统条目属性)对话框的“Network”(网络)标签页上获取以下 SNC 连接字符串属性。

  • SNC 模式:如果“激活安全网络连接”复选框时,请将 SNC 模式连接属性设为 True。否则,将 SNC Mode 连接属性设置为 False。

    SNCMode 连接属性是一个布尔值,用于确定您是否在使用 SNC。默认值为 False。

  • SNC PartnerName:SNC PartnerName 用于指定应用服务器的 SNC 名称。例如:p:CN=IDS, OU=IT, O=CSW, C=DE
  • SNC 名称:可选。SNCName 属性用于指定 SNC 连接的名称。设置此属性可确保为连接使用正确的 SNC 名称。
  • SNC Qop:将该属性设置为安全网络设置部分中的选定选项。例如,如果选择了“完整性”选项,请将 SNCQop 属性设置为 3。

    SNCQop 属性用于指定数据保护级别(或质量)。如果未指定此属性,系统会为此属性设置整数 -1。有效值为 1、2、3、8 或 9,分别对应于保护级别。

  • SNC_Lib 对象 ID:将此属性设置为 SNC 库的路径和文件名。指定您使用的安全库的完整路径,例如 C:\Secude\secude.xll.

ApplicationServer 连接类型

对于应用服务器连接,必须在网络端点组 (NEG) 和健康检查中为 Private Service Connect 和负载均衡器配置 SAP 系统 IP 地址和端口 33XX。其中 XX 是所用 SAP 系统的系统编号或实例编号。下表列出了 ApplicationServer 连接类型的示例配置值。请参阅控制台中的连接创建界面,了解必填字段和可选字段。

字段名称 示例值
区域 us-central1
连接器 SAP ERP
连接器版本 1
连接器名称 saperp-applicationserver-conn
说明 不适用
服务账号 xxxxxxxxx-compute@developer.gserviceaccount.com
客户 800
系统编号 00
项目 ID xxxx-gcp-project
存储桶 sap-erp-bucket
Jco Jar 对象 ID sapjco3.jar
libsapjco3 对象 ID libsapjco3.so
表格模式 TransparentApplication/TransparentCustomer/TransparentSystem/Pooled/Cluster/None
读取表函数 Z_CUSTOM_READ_TABLE
连接方案 ApplicationServer
系统 ID SA1
查询模式 不适用
可浏览的视图 不适用
详细程度级别 5
节点数下限 2
节点数上限 50
主机地址 外部 SAP 系统的 10.30.X.XX 或路由器字符串。
身份验证 用户密码
用户名 12345
密码 xyz@12345
版本 1

GroupServer 连接类型

对于负载均衡/群组服务器连接,必须在网络端点组 (NEG) 和健康检查中为 Private Service Connect 和负载均衡器配置 SAP 系统 IP 地址和端口 33XX。其中 XX 是所用 SAP 系统的系统或实例编号。下表列出了 GroupServer 连接类型的示例配置值。请参阅控制台中的连接创建界面,了解必填和选填字段。

字段名称 示例值
区域 us-central1
连接器 SAP ERP
连接器版本 1
连接器名称 saperp-GroupServer-conn
说明 不适用
服务账号 xxxxxxxxx-compute@developer.gserviceaccount.com
客户 800
系统编号 00
项目 ID xxxx-gcp-project
存储桶 sap-erp-bucket
Jco Jar 对象 ID sapjco3.jar
libsapjco3 对象 ID libsapjco3.so
表格模式 TransparentApplication/TransparentCustomer/TransparentSystem/Pooled/Cluster/None
群组 公开
消息服务器 10.30.X.XX
读取表函数 Z_CUSTOM_READ_TABLE
连接方案 GroupServer
系统 ID SA1
查询模式 不适用
可浏览的视图 不适用
详细程度 5
节点数下限 2
节点数上限 50
主机地址 外部 SAP 系统的 10.30.X.XX 或路由器字符串。
身份验证 用户密码
用户名 12345
密码 xyz@12345
版本 1

X509 证书连接类型

对于采用 X509 连接的安全网络通信 (SNC),必须在网络端点组 (NEG) 和健康检查中使用 SAP 系统 IP 和端口 48XX 配置 Private Service Connect 和负载均衡器。其中 XX 是所用 SAP 系统的系统编号或实例编号。下表列出了 X509 certificate 连接类型的示例配置值。请参阅 连接创建界面,以了解必填字段和可选字段。

字段名称 示例值
区域 us-central1
连接器 SAP ERP
连接器版本 1
连接器名称 saperp-X509Certificate-conn
说明 不适用
服务账号 xxxxxxxxx-compute@developer.gserviceaccount.com
客户 800
系统编号 00
项目 ID xxxx-gcp-project
存储桶 sap-erp-bucket
Jco Jar 对象 ID sapjco3.jar
libsapjco3 对象 ID libsapjco3.so
表格模式 TransparentApplication/TransparentCustomer/TransparentSystem/Pooled/Cluster/None
SNC_LIB 对象 ID libsapcrypto.so
用于创建 cred_v2 文件的 PSE 名称 EHP8_GCP_SA1.pse
读取表函数 Z_CUSTOM_READ_TABLE
连接方案 ApplicationServer
系统 ID SA1
SNC 密码 xyz@gcp
SNC 模式 一个布尔值,用于确定您是否在使用 SNC。将此属性设置为 true 即可使用 SNC。
SNC 名称 p:CN=EHP8_GCP_SA1, OU=IT, O=CSW, C=DE
SNC Qop 3
SNC PartnerName p:CN=SA1, OU=I0020070395, OU=SAP Web AS, O=SAP Trust Community, C=DE
查询模式 不适用
可浏览的视图 不适用
详细程度 5
节点数下限 2
节点数上限 50
主机地址 外部 SAP 系统的 10.30.X.XX 或路由器字符串。
身份验证 X509 基于证书的身份验证
X509Certificate X509 证书可以使用指向包含 PEM 格式 X509 证书的文件的文件路径、以“-----BEGIN ...”标头开头的 PEM 数据块或不含“-----BEGIN ...”标头的 PEM 数据块进行指定。
版本 1

系统限制

SAP ERP 连接器每个节点每秒可处理 7 笔事务,并会对超出此限制的所有事务进行节流。默认情况下,Integration Connectors 会为连接分配 2 个节点(以提高可用性)。

如需了解适用于 Integration Connectors 的限制,请参阅限制

在集成中使用 SAP ERP 连接

创建连接后,该连接便可在 Apigee Integration 和 Application Integration。您可以使用连接 通过连接器任务在集成中进行集成。

  • 如需了解如何在 Apigee Integration 中创建和使用连接器任务,请参阅连接器任务
  • 如需了解如何在应用集成中创建和使用连接器任务,请参阅连接器任务

实体、操作和动作

所有集成连接器都会为所连接应用的对象提供抽象层。您只能通过此抽象访问应用的对象。抽象作为实体、操作和动作向您展示。

  • 实体:实体可以被视为连接的应用或服务中的对象或属性集合。不同连接器的实体定义也会有所不同。例如,在数据库连接器中,表是实体;在文件服务器连接器中,文件夹是实体;在消息传递系统连接器中,队列是实体。

    但是,连接器可能不支持或不支持任何实体,在这种情况下, “Entities”列表将为空。

  • 操作:操作是指您可以对实体执行的操作。您可以对实体执行以下任一操作:

    从可用列表中选择一个实体,系统会生成该实体可用的操作列表。如需了解操作的详细说明,请参阅连接器任务的实体操作。但是,如果连接器不支持任何实体操作, 操作未在 Operations 列表中列出。

  • 动作:动作是可通过连接器接口提供给集成的头等函数。动作可让您对一个或多个实体进行更改,并且动作因连接器而异。通常,操作有一些输入参数和一个输出 参数。但可能的情况是,连接器不支持任何动作,在这种情况下,Actions 列表将为空。

操作

本部分介绍了 RFC,并列出了该连接器支持的操作。要了解如何配置 操作,请参阅操作示例

使用 RFC

本部分介绍了必需的 RFC 以及如何使用 RFC。

必需的 RFC

如果任何必需的 RFCS 不可用,则部分或全部功能可能无法使用。您可以使用 T-Code SE37 查看 SAP 中的可用函数模块。

SAP ERP 连接器使用以下 RFC。

  • DDIF_FIELDINFO_GET
  • RFC_GET_FUNCTION_INTERFACE
  • RFC_GET_STRUCTURE_DEFINITION
  • RFC_GET_SYSTEM_INFO
  • RFC_GET_UNICODE_STRUCTURE
  • RFC_READ_TABLE
  • SLDAG_CHECK_FOR_UNICODE

读取大型数据

本部分介绍从 SAP 后端读取大型数据需要遵循的方法。

SAP ERP 连接器使用 SAP RFC_READ_TABLE 函数从 SAP 表获取数据, 该函数的固定大小为 512 字节它可以缓冲每行数据,因此 您选择的列数不能超过该缓冲区可容纳的列数。如果您选择的字节数超过 512 个,则在运行集成时会发生 DATA_BUFFER_EXCEEDED 异常;这表示您超出了每行允许的最大缓冲区大小,需要选择的列更少。

为了解决此问题,您可以添加 Custom RFC_READ_TABLE 的代码,该代码与 SAP RFC_READ_TABLE 类似,但缓冲区更大,可解决 DATA_BUFFER_EXCEEDED 问题。

使用自定义读取表函数

连接器支持 Custom RFC_READ_TABLE,类似于 SAP RFC_READ_TABLE,但具有更大的缓冲区, 它可以解决DATA_BUFFER_EXCEEDED问题。

在 SAP 后端创建自定义 RFC_READ_TABLE

要使用 示例自定义 RFC_READ_TABLE,请按以下步骤操作。

  1. RFC_READ_TABLE 函数用作新函数的模板:选择事务代码 SE37 和 SDTX 函数组,然后将 RFC_READ_TABLE 复制到新函数组或工作函数组。 在此示例中,RFC_READ_TABLE 会复制到 Z_CUSTOM_RFC_TABLE
  2. 在 SAP 页面的 Attributes(属性)标签页中,选择 Remote Enabled Module(已启用远程模块)。
  3. 表格标签页中,将 DATA 参数设置为 CHAR8000(您可能需要右键点击,然后点击显示 -> 更改)。
  4. 源代码标签页中,输入自定义读取表 RFC 代码。如需参考,请参阅 sample Z_CUSTOM_RFC_TABLE_function.txt
  5. 点击保存
  6. 按照提供的自定义读取表中所述定义导入、表和异常。
  7. 激活函数模块。

适用于 ABAP 7.52 的自定义读取表

如果您使用的是 ABAP 7.52 或更高版本,请参阅 sample Z_CUSTOM_RFC_TABLE_function_ABAP752.txt。 示例函数适用于 ABAP 7.52 及更高版本。它与 Z_CUSTOM_RFC_TABLE 函数类似, 但它会利用 ABAP 7.52 中新提供的关键字在 而不是在 ABAP 脚本本身中执行。这大大提高了分页的效率 并提高了处理大型表时的性能。建议尽可能使用 Z_CUSTOM_RFC_TABLE_752 RFC

可以使用 RFC_READ_TABLE 函数

本部分介绍了要分配给 SAP 用户访问 RFC_READ_TABLE 函数的角色。此函数是一个支持远程的函数模块,允许对任意表进行通用读取访问。

如需在配置 SAP ERP 连接器任务时在“实体”下列出表,您必须在 SAP ERP 连接级别使用 RFC_READ_TABLE 函数,并且必须有权访问 R/3 函数 RFC_READ_TABLE

为 activity 03(显示)和 auth 添加了授权 S_TABU_DIS。群组“SC”函数 RFC_READ_TABLE 的 ID。

以下是 RFC_READ_TABLE 的一些技术限制:

  • 只能读取包含简单数据类型的表。不支持 STRING 或 XSTRING 字段。
  • 线条宽度上限为 512 个字符。
  • 返回的记录数受内存阈值限制。

BAPI_MATERIAL_SAVEDATA 操作

此操作可让您执行特定任务。例如,您可以使用它在 SAP ERP 中创建或更改物料主数据。

BAPI_MATERIAL_SAVEDATA 操作的输入参数

参数名称 数据类型 必填 说明
HEADDATA 字符串 输入参数 HEADDATA。
CLIENTDATA 字符串 输入参数 CLIENTDATA。
CLIENTDATAX 字符串 输入参数 CLIENTDATAX。
MATERIALDESCRIPTION 字符串 MATERIALDESCRIPTION 表。

BAPI_MATERIAL_SAVEDATA 操作的输出参数

如果操作成功,则此操作将返回状态 200 (OK)。

如需查看有关如何配置 BAPI_MATERIAL_SAVEDATA 操作的示例,请参阅操作示例

ZFM_GCP_MULTIDATA_TAB 操作

此操作可让用户执行特定任务。例如,您可以在 SAP ERP 中创建多数据类型数据。

ZFM_GCP_MULTIDATA_TAB 操作的输入参数

参数名称 数据类型 必填 说明
ReturnTables 字符串 以英文逗号分隔的列表,用于指定应输出函数模块中的哪些表。 如果未指定,将输出所有返回的表。
T_TABLE 字符串 表 T_TABLE。
IM_INPUT_1 字符串 输入参数 IM_INPUT_1。
IM_INPUT_2 字符串 输入参数 IM_INPUT_2。

ZFM_GCP_MULTIDATA_TAB 操作的输出参数

如果操作成功,此操作会返回状态 200(OK)。

如需了解如何配置 ZFM_GCP_MULTIDATA_TAB 操作,请参阅操作示例

PushIDoc 操作

此操作可让您执行特定任务。例如,您可以将数据从 SAP 转移到外部系统。

PushIDoc 操作的输入参数

参数名称 数据类型 必填 说明
FileType 字符串 文件类型。允许的值为 XML 或 IDoc。
模式 字符串 传输模式。允许的值为 Sync、ASync。
内容 字符串 文件的内容。

PushIDoc 操作的输出参数

如果操作成功,此操作会返回状态 200(OK)。

例如,关于如何配置 PushIDoc 操作, 请参阅操作示例

ExecuteCustomQuery 操作

通过此操作,您可以执行自定义查询。

如需创建自定义查询,请按照下列步骤操作:

  1. 按照详细说明添加连接器任务
  2. 配置连接器任务时,在要执行的动作类型中选择动作
  3. 动作列表中,选择执行自定义查询,然后点击完成

    此图片展示了 execute-custom-query-action 此图片展示了 execute-custom-query-action

  4. 展开任务输入部分,然后执行以下操作:
    1. 在以下时间后超时字段中,输入查询执行前要等待的秒数。

      默认值:180 秒。

    2. 最大行数字段中,输入要从数据库返回的最大行数。

      默认值:25

    3. 要更新自定义查询,请点击修改自定义脚本。系统随即会打开脚本编辑器对话框。

      此图片展示了 custom-sql-query 此图片展示了 custom-sql-query

    4. 脚本编辑器对话框中,输入 SQL 查询,然后点击保存

      您可以在 SQL 语句中使用问号 (?) 表示必须在查询参数列表中指定的单个参数。例如,以下 SQL 查询会从 Employees 表中选择与为 LastName 列指定的值匹配的所有行:

      SELECT * FROM Employees where LastName=?

    5. 如果您在 SQL 查询中使用了问号,则必须点击 + 添加参数名称,针对每个问号添加参数。执行集成时,这些参数按顺序替换 SQL 查询中的问号 (?)。例如,如果您添加了三个问号 (?),那么必须按顺序添加三个参数。

      此图片展示了 add-query-param 此图片展示了 add-query-param

      如需添加查询参数,请执行以下操作:

      1. 类型列表中,选择参数的数据类型。
      2. 字段中,输入参数的值。
      3. 要添加多个参数,请点击 + 添加查询参数

成功执行后,此操作会返回状态 200(OK),并附带包含查询结果的响应正文。

操作示例

示例 - 创建记录

此示例使用 BAPI_MATERIAL_SAVEDATA 操作创建材料记录。

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 BAPI_MATERIAL_SAVEDATA 操作,然后点击完成
  3. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
    {
    "HEADDATA": "{\"MATERIAL\":\"000000000000009001\",\"IND_SECTOR\":\"M\",\"MATL_TYPE\":\"HALB\",\"BASIC_VIEW\":\"X\"}",
    "CLIENTDATA" : "{\"MATL_GROUP\":\"00107\",\"BASE_UOM\":\"KG\"}",
    "CLIENTDATAX" : "{\"MATL_GROUP\":\"X\",\"BASE_UOM\":\"X\"}",
    "MATERIALDESCRIPTION" : "{\"LANGU\":\"E\",\"MATL_DESC\":\"Classification Google\"}"
    }
  4. 如果操作成功,BAPI_MATERIAL_SAVEDATA 任务的 connectorOutputPayload 响应参数的值将类似于以下内容:

    [{
    "RETURN_TYPE": "S",
    "RETURN_ID": "MM",
    "RETURN_NUMBER": 356,
    "RETURN_MESSAGE": "The material 9001 has been created or extended",
    "RETURN_LOG_NO": "",
    "RETURN_LOG_MSG_NO": 0,
    "RETURN_MESSAGE_V1": "9001",
    "RETURN_FIELD": "",
    "RETURN_SYSTEM": "T90CLNT090",
    "RESULT_TABLE": null
    }]

示例 - 更新记录

此示例使用 BAPI_MATERIAL_SAVEDATA 操作更新实质性记录。

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 BAPI_MATERIAL_SAVEDATA 操作,然后点击完成
  3. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
    {
    "HEADDATA": "{\"MATERIAL\":\"000000000000009000\",\"IND_SECTOR\":\"A\",\"MATL_TYPE\":\"FHMI\",\"BASIC_VIEW\":\"X\"}",
    "CLIENTDATA": "{\"MATL_GROUP\":\"013\",\"BASE_UOM\":\"ST\"}",
    "CLIENTDATAX": "{\"MATL_GROUP\":\"X\",\"BASE_UOM\":\"X\"}",
    "MATERIALDESCRIPTION": "{\"LANGU\":\"E\",\"MATL_DESC\":\"Classification Googlecloud\"}"
    }
  4. 如果操作成功,BAPI_MATERIAL_SAVEDATA 任务的 connectorOutputPayload 响应参数的值将类似于以下内容:

    [{
    "RETURN_TYPE": "S",
    "RETURN_ID": "MM",
    "RETURN_NUMBER": 356,
    "RETURN_MESSAGE": "The material 9000 has been created or extended",
    "RETURN_LOG_NO": "",
    "RETURN_LOG_MSG_NO": 0,
    "RETURN_MESSAGE_V1": "9000",
    "RETURN_PARAMETER": "",
    "RETURN_ROW": 0,
    "RETURN_FIELD": "",
    "RETURN_SYSTEM": "T90CLNT090",
    "RESULT_TABLE": null
    }]

示例 - 删除记录

此示例使用 BAPI_MATERIAL_SAVEDATA 操作删除材料记录。

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 BAPI_MATERIAL_SAVEDATA 操作,然后点击完成
  3. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
    {
    "HEADDATA": "{\"MATERIAL\":\"000000000000009000\",\"BASIC_VIEW\":\"X\"}",
    "CLIENTDATA": "{\"DEL_FLAG\":\"X\"}",
    "CLIENTDATAX": "{\"DEL_FLAG\":\"X\"}"
    }
  4. 如果操作成功, BAPI_MATERIAL_SAVEDATA 任务的 connectorOutputPayload 响应 参数的值类似于以下内容:

    [{
    "RETURN_TYPE": "S",
    "RETURN_ID": "MM",
    "RETURN_NUMBER": 356,
    "RETURN_LOG_NO": "",
    "RETURN_LOG_MSG_NO": 0,
    "RETURN_MESSAGE_V1": "9000",
    "RETURN_PARAMETER": "",
    "RETURN_ROW": 0,
    "RETURN_FIELD": "",
    "RETURN_SYSTEM": "T90CLNT090",
    "RESULT_TABLE": null
    }]

示例 - 创建多数据类型数据

此示例使用 ZFM_GCP_MULTIDATA_TAB 操作创建多数据类型数据。

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 ZFM_GCP_MULTIDATA_TAB 操作,然后点击完成
  3. 连接器任务的任务输入部分,点击 connectorInputPayload,然后在 Default Value 字段:
    {
    "T_TABLE": "{\"ZACCP\":\"111\",\"ZCHAR\":\"CHARACTER1\",\"ZCLNT\":\"100\",\"ZCUKY\":\"INR\",\"ZCURR\": 200,\"ZDATS\": \"20231213\",\"ZINT1\": 45,\"ZINT2\":54,\"ZDEC\": 0.12,\"ZFLTP\": 1234,\"ZLANG\":\"E\",\"ZNUMC\":\"110\",\"ZPREC\": 3,\"ZQUAN\": 188.0,\"ZRAW\":\"01010008010101050401\",\"ZTIMS\": \"103056\",\"ZUNIT\":\"11\",\"ZINT4P\": 45,\"ZINT4\": 54,\"ZLRAW\":\"0101000801010105040100030101010300040000\"}",
    "IM_INPUT_1": "{\"ZACCP\":\"222\",\"ZCHAR\":\"CHARACTER1\",\"ZCLNT\":\"100\",\"ZCUKY\":\"INR\",\"ZCURR\": 200,\"ZDATS\": \"20231213\",\"ZINT1\": 45,\"ZINT2\":54,\"ZDEC\": 0.12,\"ZFLTP\": 1234,\"ZLANG\":\"E\",\"ZNUMC\":\"110\",\"ZPREC\": 3,\"ZQUAN\": 188.0,\"ZRAW\":\"01010008010101050401\",\"ZTIMS\": \"103056\",\"ZUNIT\":\"11\",\"ZINT4P\": 45,\"ZINT4\": 54,\"ZLRAW\":\"0101000801010105040100030101010300040000\"}",
    "IM_INPUT_2": "{\"ZSTRING\": \"HI Google\",\"ZSSTRING\": \"HI Google How are you\"}"
    }
  4. 如果操作成功, ZFM_GCP_MULTIDATA_TAB 任务的 connectorOutputPayload 响应 参数的值类似于以下内容:

    [{
    "EX_OUTPUT_1_ZACCP": 222,
    "EX_OUTPUT_1_ZCHAR": "CHARACTER1",
    "EX_OUTPUT_1_ZCLNT": "100",
    "EX_OUTPUT_1_ZCUKY": "INR",
    "EX_OUTPUT_1_ZCURR": 200,
    "EX_OUTPUT_1_ZDATS": "2023-12-13",
    "EX_OUTPUT_1_ZRAW": "01010008010101050401",
    "EX_OUTPUT_1_ZTIMS": "10:30:56",
    "EX_OUTPUT_1_ZUNIT": "11",
    "EX_OUTPUT_1_ZINT4P": 45,
    "EX_OUTPUT_1_ZINT4": 54,
    "EX_OUTPUT_1_ZLRAW": "0101000801010105040100030101010300040000\u0000",
    "EX_OUTPUT_2_ZSTRING": null,
    "EX_OUTPUT_2_ZSSTRING": null,
    "RESULT_TABLE": null,
    "T_TABLE_ZACCP": null,
    "T_TABLE_ZCHAR": null,
    "T_TABLE_ZCLNT": null,
    "T_TABLE_ZQUAN": null,
    "T_TABLE_ZRAW": null,
    "T_TABLE_ZTIMS": null,
    "T_TABLE_ZUNIT": null
    },{
    "EX_OUTPUT_1_ZACCP": null,
    "EX_OUTPUT_1_ZCHAR": null,
    "EX_OUTPUT_1_ZCLNT": null,
    "EX_OUTPUT_1_ZCUKY": null,
    "EX_OUTPUT_1_ZRAW": null,
    "T_TABLE_ZLANG": null,
    "T_TABLE_ZNUMC": null,
    "T_TABLE_ZPREC": null,
    "T_TABLE_ZQUAN": null,
    "T_TABLE_ZRAW": null,
    "T_TABLE_ZTIMS": null,
    "T_TABLE_ZUNIT": null
    },{
    "EX_OUTPUT_1_ZACCP": null,
    "EX_OUTPUT_1_ZCHAR": null,
    "EX_OUTPUT_1_ZCLNT": null,
    "EX_OUTPUT_1_ZCUKY": null,
    "EX_OUTPUT_1_ZCURR": null,
    "EX_OUTPUT_1_ZDATS": null,
    "EX_OUTPUT_1_ZDEC": null,
    "EX_OUTPUT_1_ZQUAN": null,
    "T_TABLE_ZNUMC": 110,
    "T_TABLE_ZPREC": 3,
    "T_TABLE_ZQUAN": 188,
    "T_TABLE_ZRAW": "01010008010101050401",
    "T_TABLE_ZTIMS": "10:30:56",
    "T_TABLE_ZUNIT": "11"
    }]

示例 - 推送 IDoc

此示例将 IDoc 推送到 SAP ERP。

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 PushIDoc 操作,然后点击完成
  3. 连接器任务的任务输入部分,点击 connectorInputPayload,然后在 Default Value 字段:
    {
    "Content": "\n\n\n EDI_DC40\n 800\n 0000000008604824\n 740\n 53\n 2\n \n MATMAS05\n MATMAS\n ZLS_QA23\n LS\n ZLS_QA23\n SAPSA1\n LS\n SA1CLNT800\n 20230218\n 232556\n\n\n 005\n 000000000000000012\n 20170328\n 42039\n 20170727\n 42039\n KLVC\n FERT\n M\n 02\n BG\n 000\n 002\n 0.000\n 0.000\n KGM\n 0.000\n 0001\n 0.000\n 0.000\n 0.000\n 0.000\n 0.000\n",
    "FileType": "XML",
    "Mode": "ASync"
    }
  4. 。如果操作成功,PushIDoc 任务的 connectorOutputPayload 响应参数的值将类似于以下内容:

    [{
    "Result": "Success",
    "Message": "Push IDoc success"
    }]

实体操作示例

本部分介绍如何在此连接器中执行一些实体操作。

示例 - 列出所有记录

以下示例列出了 T001 实体中的所有记录。

  1. Configure connector task 对话框中,点击 Entities
  2. Entity 列表中选择 T001
  3. 选择 List 操作,然后点击 完成
  4. 您还可以在连接器任务的任务输入部分中,通过指定过滤条件子句来过滤结果集。 请务必使用英文单引号 (') 指定过滤条件子句值。

示例 - 从实体获取记录

此示例从 T001 实体中获取具有指定 ID 的记录。

  1. Configure connector task 对话框中,点击 Entities
  2. Entity 列表中选择 T001
  3. 选择 Get 操作,然后点击完成
  4. 连接器任务的任务输入部分,点击实体 ID,然后 然后在 Default Value 字段中输入 0001

    其中,0001T001 实体中的唯一记录 ID。

使用 Terraform 创建连接

您可以使用 Terraform 资源创建新的连接。

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

如需查看用于创建连接的 Terraform 模板示例,请参阅模板示例

使用 Terraform 创建此连接时,您必须在 Terraform 配置文件中设置以下变量:

参数名称 数据类型 必需 说明
客户端 STRING True 向 SAP 系统进行身份验证的客户端。
群组 STRING 错误 正在使用的登录组。通常,只有在连接到使用负载均衡功能的 SAP 系统时才需要指定此字段。
message_server STRING 错误 连接到使用负载均衡的 SAP 系统时,必须指定消息服务器。
read_table_function STRING 错误 用于读取表数据的函数。
connection_scheme ENUM 错误 指定您是连接到包含消息服务器 (GroupServer) 的 SAP 系统,还是连接到不包含消息服务器 (ApplicationServer) 的 SAP 系统。支持的值包括:ApplicationServer、GroupServer
system_id STRING 错误 SAP 系统的系统 ID 或 R3Name 是一个字符串,最多包含 3 个字符。它通常用于负载均衡连接。
system_number STRING True 用于定义目标系统的编号。用于设置“Host connection”属性。
project_id STRING True 包含 SAP JCo jar 的 Cloud Storage 存储桶所在的 Google Cloud 项目的 ID。
存储桶 STRING True 包含 sapjco3.jar 和 libsapjco3.so 文件的存储桶的名称
sapjco3_jar STRING True sapjco3.jar 的对象 ID
libsapjco3_so STRING True libsapjco3.so 的对象 ID
snc_lib STRING 错误 SNC 库的对象 ID
snc_mode BOOLEAN 错误 确定您是否正在使用 SNC 的布尔值。若要使用 SNC,请将此值设置为 true。
snc_name STRING 错误 包含您的 SNC 连接名称的可选输入。
snc_qop ENUM 错误 SNC 连接的保护质量。有效值为 1、2、3、8 或 9,分别对应于以下保护级别:1 仅应用身份验证。2 应用完整性保护(身份验证)。3 实施隐私保护(完整性和身份验证)。8 应用默认保护。9 应用最高保护。支持的值包括:1、2、3、8、9
snc_partner_name STRING 错误 应用服务器的 SNC 名称。使用 SNC 时,此字段为必填字段。
query_mode ENUM 错误 确定哪些 SAP 表将显示为视图(如果有)。支持的值包括:Global、Local、All、None
table_mode ENUM 错误 确定哪些 SAP 表将显示为视图(如果有)。支持的值包括:TransparentApplication、TransparentCustomer、TransparentSystem、Pooled、Cluster、All、None
详细程度 STRING 错误 连接的详细程度级别从 1 到 5 不等。详细级别越高,系统会记录的通信详细信息(请求、响应和 SSL 证书)就越多。

对 SAP 本地配置进行问题排查

如果您的 SAP 系统位于本地,您必须创建具有混合 NEG 的代理负载均衡器。

  1. 使用允许的子网在本地系统和 Google Cloud 之间创建 IpSec 隧道。
  2. 允许在本地防火墙中使用负载均衡子网和代理子网。
  3. 添加所有必需的端口,例如用于应用服务器连接的 33XX、用于消息服务器/负载均衡器服务器连接的 36XX 和用于 SNC-X509 连接的 48XX。其中 XX 是 SAP 系统的系统编号或实例编号。在 Google Cloud 项目入站流量许可名单中添加防火墙所需的 IP 地址,例如 LB IP 和端口、SAP 系统 IP 和端口。
  4. 使用混合 NEG 配置区域级内部代理网络负载平衡器。如需了解详情,请参阅采用混合 NEG 连接的区域级内部代理网络负载均衡器

如果您在设置网络连接后遇到类似以下的错误,请使用以下解决方法将端点附加 IP 地址列入许可名单。

Initialization of destination SAP--1910584855 failed: Connect from SAP gateway to RFC server failed
connection parameters: TYPE=A DESTINATION=SAP--1910584855 ASHOST=10.128.0.43 SYSNR=00 PCS=1 
LOCATION    SAP-Gateway on host DELVM05S15.bcone.com / sapgw00
ERROR       timeout during allocate
TIME        Wed Apr  3 17:24:40 2024
RELEASE     754
COMPONENT   SAP-Gateway
VERSION     2
RC          242
MODULE      D:/depot/bas/754_REL/src/krn/si/gw/gwr3cpic.c
LINE        2208
DETAIL      no connect of TP sapdp00 from host 10.128.0.43 after 20 sec

COUNTER 2
解决方法:在 SAP 配置文件级别的 gw/alternative_hostnames 中添加您在 Google Cloud 中创建的连接器网络端点连接 IP。

SAP 术语表

SAP:SAP 是所有受支持的 SAP 版本的统称。这通常表示 SAP ECC 版本 6 或更高版本。SAP ERP 连接器需要连接到支持 RFC SDK 的 SAP 版本才能正常运行。

函数模块:函数模块是 SAP 中一种程序或函数,可用于执行几乎任何操作。您可以通过 SE37 TCode 在 SAP 中测试和编写这些模块。

RFC::远程函数调用 (RFC) 是对可由外部应用执行的指定 RFM/FM 的调用。这包括使用安装在 SAP 服务器上并可能从 sap.com 下载的 SAP 分发的库。在 SAP 升级过程中,特定 RFM 可能会或可能不会得到维护。SAP 提供了标准 RFM,因此旧版中可能存在差异,也可能不存在。自定义 RFM 可以(通常也是)构建以支持集成,并且必须由 SAP 客户维护。按照惯例,自定义 RFM 以字母 Z 开头。

BAPI:Business API (BAPI) 是业务对象的 API 方法,实习生是 SAP 支持 RFC 的功能模块,可提供对业务营业地点操作的访问权限。例如,大约有 60 个 BAPI 仅与 Customer 对象相关。在实际使用时,通常只使用少数几个。

SAP 表:SAP 表是将数据存储在 SAP 中的表。它们与业务对象不同。例如,SAP 中没有采购订单表。不过,有许多表格包含采购订单数据,例如 EBAN、EBKN、EINA、EKPO 等。根据惯例,自定义表格以字母 Z 开头。

SAP 查询:SAP 查询是 SAP 中保存的对象,用于详细说明要从一个或多个表中检索的信息。这些参数通常用于生成报告。

向 Google Cloud 社区寻求帮助

您可以在 Google Cloud 社区的 Cloud 论坛中发布您的问题以及讨论此连接器。

后续步骤