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.jar
和libsapjco3.so
(适用于 Unix)。您可以从 SAP 连接器网站下载 JCo 3.1.5 版本。
如果 SAP 系统支持 RFC 连接且有可用的 RFC,则与 SAP 系统的连接有效。系统可能还支持支持 RFC 连接的其他版本。
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)
如需了解如何启用服务,请参阅启用服务。
如果之前没有为您的项目启用这些服务或权限,则在您配置连接器时,系统会提示您启用。
配置连接器
配置连接器时,您需要创建与数据源(即后端系统)的连接。一个连接需专用于一个数据源。这意味着,如果您有许多数据源,则必须为每个数据源创建单独的连接。如需创建连接,请执行以下步骤:
- 在 Cloud 控制台 中,进入 Integration Connectors > 连接页面,然后选择或创建一个 Google Cloud 项目。
- 点击 + 新建以打开创建连接页面。
-
在位置部分,选择连接的位置。
- 区域:从下拉列表中选择一个位置。
如需查看所有受支持区域的列表,请参阅位置。
- 点击下一步。
- 区域:从下拉列表中选择一个位置。
- 在连接详情部分中,完成以下操作:
- 连接器:从可用连接器下拉列表中选择 SAP ERP。
- 连接器版本:从可用版本的下拉列表中选择一个连接器版本。
- 在 Connection Name 字段中,输入连接实例的名称。
连接名称必须符合以下条件:
- 连接名称可以使用字母、数字或连字符。
- 字母必须小写。
- 连接名称必须以字母开头,以字母或数字结尾。
- 连接名称不能超过 49 个字符。
- 对于支持事件订阅的连接器,关联名称不得以“goog”前缀开头。
- (可选)输入连接的说明。
- 您可以选择启用 Cloud Logging,然后选择日志级别。默认情况下,日志级别设置为
Error
。 - 服务账号:选择具有所需角色的服务账号。
- 如需将该关联用于事件订阅,请选择启用事件订阅。正在选择
时,系统会显示以下选项:
- 启用事件订阅、实体和操作:选择此选项可将连接用于事件订阅和连接器操作(实体和操作)。
- 仅启用事件订阅:选择此选项可将连接仅用于事件订阅。如果您选择此选项,请点击下一步,然后 配置事件订阅。
- 客户端:向 SAP 系统进行身份验证的客户端。
- 系统 ID:SAP 系统的系统 ID 或 R3Name 是一个字符串,最多包含三个字符。它通常用于负载均衡连接。
- 系统编号:定义目标系统所用的编号。用于设置“Host connection”属性。
- 项目 ID:包含 SAP JCo jar 的 GCS 存储桶所在的 Google Cloud 项目的 ID。
- 存储桶:包含 sapjco3.jar 和 libsapjco3.so 文件的存储桶的名称。
- Jaco jar 对象 ID:JCo jar 的对象 ID。
- libsapjco3 对象 ID:libsapjco3 jar 的对象 ID。
- 表格模式:选择要显示为视图的 SAP 表。
- SNC_LIB 对象 ID:SNC 库的对象 ID。
- PSE 名称:适用的个人安全环境 (PSE) 文件的名称 。PSE 文件以 ASN.1 结构存储公钥和私钥对以及 X.509 证书。
- 群组:用于登录的群组名称。这通常是在 SAP 系统 使用负载平衡器
- 消息服务器:连接到使用负载均衡器的 SAP 系统时要使用的消息服务器的名称。
- 读取表格函数:要用于读取表格的函数名称。如需了解详情,请参阅使用自定义读取表函数。
- 连接方案:选择用于连接到 SAP 系统的连接方案。
- 系统 ID:SAP 系统的系统 ID 或 R3Name。您最多可以输入 3 个字符。
- SNC 密码:选择 SNC 库密码的 Secret Manager 密钥。
- Secret 版本:选择 Secret 版本。
- SNC 模式:选择此选项可在集成连接器和 SAP 系统之间启用 SNC 进行身份验证。
- SNC 名称:输入 SNC 连接的名称。
-
SNC qop:选择保护级别。支持的级别如下:
- 1 - 仅应用身份验证。
- 2 - 应用完整性保护。这还包括身份验证保护。
- 3 - 采取隐私保护措施。这还包括完整性和身份验证保护。
- 8 - 应用默认保护。
- 9 - 应用最高级别的保护。
- SNC 合作伙伴名称:输入应用服务器的 SNC 名称。
- 查询模式:选择哪些 SAP 表必须显示为视图。
-
可浏览的视图:输入要显示的视图的逗号分隔列表。
例如
ViewA,ViewB,ViewC
。 - 详细程度级别:输入日志记录的详细程度级别。支持的 值介于 1 到 5 之间。值越高,表示可获取的详细信息就越多 日志中。
- (可选)配置连接节点设置:
- 节点数下限:输入连接节点数下限。
- 节点数上限:输入连接节点数上限。
节点是处理事务的连接单元(或副本)。 连接处理越多事务就需要越多节点,相反,处理越少事务需要越少节点。 如需了解节点如何影响连接器价格,请参阅连接节点的价格。如果未输入任何值,则默认情况下,节点数下限设置为 2(以便提高可用性),节点数上限设置为 50。
- (可选)点击 + 添加标签,以键值对的形式向连接添加标签。
- 点击下一步。
- 在目标位置部分,输入您要连接的远程主机(后端系统)的详细信息。
- 目标类型:选择目标类型。
- 从列表中选择主机地址,以指定目的地的主机名或 IP 地址。
- 如果要与后端系统建立专用连接,请从列表中选择端点连接,然后从端点连接列表中选择所需的端点连接。
如果要与后端系统建立公共连接以增强安全性,您可以 可以考虑配置静态出站 IP 地址,然后配置 将您的防火墙规则设置为仅将特定的静态 IP 地址列入许可名单。
如需输入其他目标,请点击 + 添加目标。
- 点击下一步。
- 目标类型:选择目标类型。
-
在身份验证部分中,输入身份验证详细信息。
- 选择身份验证类型,然后输入相关详细信息。
SAP ERP 连接支持以下身份验证类型:
- 用户名和密码
- 点击下一步。
如需了解如何配置这些身份验证类型,请参阅配置身份验证。
- 选择身份验证类型,然后输入相关详细信息。
- 如果您已启用事件订阅,则“事件订阅详情”部分会显示在连接创建页面上。为了了解 请参阅配置事件订阅。
- 查看:查看您的连接和身份验证详细信息。
- 点击创建。
配置身份验证
根据您要使用的身份验证输入详细信息。
-
用户名和密码
- 用户名:连接器的用户名
- 密码:包含与连接器关联的密码的 Secret Manager Secret。
配置事件订阅
如果您启用了事件订阅,请在 Event Subscription Details 部分:
-
为事件监听器选择以下任意一种身份验证类型。
- Google 身份验证。如果您启用此选项,请按照使用 JSON Web 令牌进行身份验证中的步骤为 ABAP SDK 配置身份验证。此外,请确保服务账号 roles/connectors.listener 其访问令牌用于身份验证的角色。
- API 密钥身份验证。如果您选择此选项,则必须已创建 API 密钥,并将该密钥保存为 Secret Manager Secret。如需了解详情,请参阅 创建 API 密钥。
-
输入事件类型字段名称。此字段标识与
传入事件请求。
{ "event_type": "user.created", ... // other request fields ... }
- 选择启用专用连接以在后端应用之间实现安全连接 以及你的人脉关系如果您选择此选项,则必须执行额外的配置步骤 。如需了解详情,请参阅适用于事件订阅的专用连接。
- 输入死信配置。如果您配置了死信,则连接会写入
将未处理的事件发送到指定的 Pub/Sub 主题。输入以下详细信息:
- 死信项目 ID :您在其中配置了死信 Pub/Sub 主题的 Google Cloud 项目的 ID。
- 死信主题:您要将未处理事件的详细信息写入的 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。您可以使用连接 通过连接器任务在集成中进行集成。
实体、操作和动作
所有集成连接器都会为所连接应用的对象提供抽象层。您只能通过此抽象访问应用的对象。抽象作为实体、操作和动作向您展示。
- 实体:实体可以被视为连接的应用或服务中的对象或属性集合。不同连接器的实体定义也会有所不同。例如,在数据库连接器中,表是实体;在文件服务器连接器中,文件夹是实体;在消息传递系统连接器中,队列是实体。
但是,连接器可能不支持或不支持任何实体,在这种情况下, “
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,请按以下步骤操作。
- 将
RFC_READ_TABLE
函数用作新函数的模板:选择事务代码 SE37 和 SDTX 函数组,然后将RFC_READ_TABLE
复制到新函数组或工作函数组。 在此示例中,RFC_READ_TABLE
会复制到Z_CUSTOM_RFC_TABLE
。 - 在 SAP 页面的 Attributes(属性)标签页中,选择 Remote Enabled Module(已启用远程模块)。
- 在表格标签页中,将
DATA
参数设置为CHAR8000
(您可能需要右键点击,然后点击显示 -> 更改)。 - 在源代码标签页中,输入自定义读取表 RFC 代码。如需参考,请参阅 sample Z_CUSTOM_RFC_TABLE_function.txt。
- 点击保存。
- 按照提供的自定义读取表中所述定义导入、表和异常。
- 激活函数模块。
适用于 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 操作
通过此操作,您可以执行自定义查询。
如需创建自定义查询,请按照下列步骤操作:
- 按照详细说明添加连接器任务。
- 配置连接器任务时,在要执行的动作类型中选择动作。
- 在动作列表中,选择执行自定义查询,然后点击完成。
- 展开任务输入部分,然后执行以下操作:
- 在在以下时间后超时字段中,输入查询执行前要等待的秒数。
默认值:
180
秒。 - 在最大行数字段中,输入要从数据库返回的最大行数。
默认值:
25
。 - 要更新自定义查询,请点击修改自定义脚本。系统随即会打开脚本编辑器对话框。
- 在脚本编辑器对话框中,输入 SQL 查询,然后点击保存。
您可以在 SQL 语句中使用问号 (?) 表示必须在查询参数列表中指定的单个参数。例如,以下 SQL 查询会从
Employees
表中选择与为LastName
列指定的值匹配的所有行:SELECT * FROM Employees where LastName=?
- 如果您在 SQL 查询中使用了问号,则必须点击 + 添加参数名称,针对每个问号添加参数。执行集成时,这些参数按顺序替换 SQL 查询中的问号 (?)。例如,如果您添加了三个问号 (?),那么必须按顺序添加三个参数。
如需添加查询参数,请执行以下操作:
- 从类型列表中,选择参数的数据类型。
- 在值字段中,输入参数的值。
- 要添加多个参数,请点击 + 添加查询参数。
- 在在以下时间后超时字段中,输入查询执行前要等待的秒数。
成功执行后,此操作会返回状态 200(OK),并附带包含查询结果的响应正文。
操作示例
示例 - 创建记录
此示例使用 BAPI_MATERIAL_SAVEDATA 操作创建材料记录。
- 在
Configure connector task
对话框中,点击Actions
。 - 选择
BAPI_MATERIAL_SAVEDATA
操作,然后点击完成。 - 在连接器任务的任务输入部分中,点击
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\"}" }
如果操作成功,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 操作更新实质性记录。
- 在
Configure connector task
对话框中,点击Actions
。 - 选择
BAPI_MATERIAL_SAVEDATA
操作,然后点击完成。 - 在连接器任务的任务输入部分中,点击
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\"}" }
如果操作成功,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 操作删除材料记录。
- 在
Configure connector task
对话框中,点击Actions
。 - 选择
BAPI_MATERIAL_SAVEDATA
操作,然后点击完成。 - 在连接器任务的任务输入部分中,点击
connectorInputPayload
,然后在Default Value
字段中输入类似于以下内容的值:{ "HEADDATA": "{\"MATERIAL\":\"000000000000009000\",\"BASIC_VIEW\":\"X\"}", "CLIENTDATA": "{\"DEL_FLAG\":\"X\"}", "CLIENTDATAX": "{\"DEL_FLAG\":\"X\"}" }
如果操作成功,
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 操作创建多数据类型数据。
- 在
Configure connector task
对话框中,点击Actions
。 - 选择
ZFM_GCP_MULTIDATA_TAB
操作,然后点击完成。 - 在连接器任务的任务输入部分,点击
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\"}" }
如果操作成功,
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。
- 在
Configure connector task
对话框中,点击Actions
。 - 选择
PushIDoc
操作,然后点击完成。 - 在连接器任务的任务输入部分,点击
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" }
。如果操作成功,PushIDoc
任务的 connectorOutputPayload
响应参数的值将类似于以下内容:
[{ "Result": "Success", "Message": "Push IDoc success" }]
实体操作示例
本部分介绍如何在此连接器中执行一些实体操作。
示例 - 列出所有记录
以下示例列出了 T001
实体中的所有记录。
- 在
Configure connector task
对话框中,点击Entities
。 - 从
Entity
列表中选择T001
。 - 选择
List
操作,然后点击 完成。 - 您还可以在连接器任务的任务输入部分中,通过指定过滤条件子句来过滤结果集。 请务必使用英文单引号 (') 指定过滤条件子句值。
示例 - 从实体获取记录
此示例从 T001
实体中获取具有指定 ID 的记录。
- 在
Configure connector task
对话框中,点击Entities
。 - 从
Entity
列表中选择T001
。 - 选择
Get
操作,然后点击完成。 - 在连接器任务的任务输入部分,点击实体 ID,然后
然后在 Default Value 字段中输入
0001
。其中,
0001
是T001
实体中的唯一记录 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 的代理负载均衡器。
- 使用允许的子网在本地系统和 Google Cloud 之间创建 IpSec 隧道。
- 允许在本地防火墙中使用负载均衡子网和代理子网。
- 添加所有必需的端口,例如用于应用服务器连接的 33XX、用于消息服务器/负载均衡器服务器连接的 36XX 和用于 SNC-X509 连接的 48XX。其中 XX 是 SAP 系统的系统编号或实例编号。在 Google Cloud 项目入站流量许可名单中添加防火墙所需的 IP 地址,例如 LB IP 和端口、SAP 系统 IP 和端口。
- 使用混合 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 术语表
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 中保存的对象,用于详细说明要从一个或多个表中检索的信息。这些参数通常用于生成报告。