查看 Application Integration 支持的连接器。
SAP ERP 触发器
SAP ERP 触发器是一种连接器事件触发器。借助 SAP ERP 连接器,您可以对 SAP ERP 数据执行插入、删除、更新和读取操作。
准备工作
- 如果您打算为 SAP ERP 触发器创建或配置新的连接,请确保您拥有项目的以下 IAM 角色:
- Connector Admin (
roles/connectors.admin
)
如需了解如何授予角色,请参阅管理访问权限。
- Connector Admin (
- 向您要用于 SAP ERP 触发器的服务账号授予以下 IAM 角色:
- Application Integration Invoker (
roles/integrations.integrationInvoker
)
如需了解如何向服务账号授予角色,请参阅管理对服务账号的访问权限。
- Application Integration Invoker (
- 在 Google Cloud 控制台中,前往 Application Integration 页面。
- 在导航菜单中,点击集成
系统会显示集成列表页面,其中列出了 Google Cloud 项目中可用的所有集成。
- 选择现有集成,或点击创建集成以创建新的集成。
要创建新的集成,请执行以下操作:
- 在创建集成窗格中输入名称和说明。
- 选择集成的区域。
- 为集成选择服务账号。您可以随时在集成工具栏的 Integration summary(集成摘要)窗格中更改或更新集成的服务账号详细信息。
- 点击创建。
系统随即会在集成编辑器中打开该集成。
- 在集成编辑器导航栏中,点击触发器以查看可用触发器列表。
- 点击 SAP ERP 触发器元素,并将其放入集成编辑器中。
- 点击集成编辑器中的 SAP ERP 触发器元素以打开触发器配置窗格。
- 点击配置触发器。
- 在 Connector Event Trigger Editor 页面中,提供以下配置详细信息:
- 区域:选择 SAP ERP 连接所在的区域。
- Connection(连接):选择您要使用的 SAP ERP 连接。
Application Integration 仅显示活跃且已启用事件订阅的 SAP ERP 连接。
- 输入事件类型字段名称。此字段标识事件类型
与传入事件请求相关联。
{ "event_type": "user.created", ... // other request fields ... }
- 服务账号:为 SAP ERP 触发器选择具有所需 IAM 角色的服务账号。
- 点击完成以完成触发器配置并关闭页面。
- 点击集成编辑器中的 SAP ERP 触发器元素以打开触发器配置窗格。
- 点击配置触发器。
- 跳过区域字段。
- 点击连接,然后从下拉菜单中选择创建连接选项。
- 在连接详情部分中,完成以下操作:
- 连接器:从可用连接器下拉列表中选择 SAP ERP。
- 连接器版本:从可用版本的下拉列表中选择连接器版本。
- 在 Connection Name 字段中,输入连接实例的名称。
连接名称必须符合以下条件:
- 连接名称可以使用字母、数字或连字符。
- 字母必须小写。
- 连接名称必须以字母开头,以字母或数字结尾。
- 连接名称不能超过 49 个字符。
- 对于支持事件订阅的连接器,连接名称不能以“goog”开头前缀。
- (可选)输入连接的说明。
- 您可以选择启用 Cloud Logging,然后选择日志级别。默认情况下,日志级别设置为
Error
。 - 服务账号:选择具有所需角色的服务账号。
- 如需将该关联用于事件订阅,请选择启用事件订阅。正在选择
时,系统会显示以下选项:
<ph type="x-smartling-placeholder">
- </ph>
- Enable event subscription with entity and actions(启用包含实体和操作的事件订阅):选择此选项可以 将连接用于事件订阅和连接器操作(实体和操作)。
- 仅启用事件订阅:选择此选项可使用连接 仅适用于事件订阅。如果您选择此选项,请点击下一步,然后 配置事件订阅。
- 客户端:向 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 系统的连接方案。
- System ID:SAP 系统的系统 ID 或 R3Name。您最多可以输入 3 个字符。
- SNC 密码:选择 SNC 库密码的 Secret Manager 密钥。
- Secret 版本:选择 Secret 版本。
- SNC 模式:选择此选项可启用 SNC,以便在 Application Integration 和 SAP 系统之间进行身份验证。
- SNC 名称:输入 SNC 连接的名称。
-
SNC qop:选择保护级别。支持的级别如下:
<ph type="x-smartling-placeholder">
- </ph>
- 1 - 仅应用身份验证。
- 2 - 应用完整性保护。这还包括身份验证保护。
- 3 - 采取隐私保护措施。这还包括完整性和身份验证保护。
- 8 - 应用默认保护。
- 9 - 应用最高保护措施。
- SNC 合作伙伴名称:输入应用服务器的 SNC 名称。
- 查询模式:选择哪些 SAP 表必须显示为视图。
-
可浏览视图:输入要显示的视图列表(以英文逗号分隔)。
例如
ViewA,ViewB,ViewC
。 - 详细程度级别:输入日志记录的详细程度级别。支持的值介于 1 到 5 之间。值越高,表示可获取的详细信息就越多 日志中。
- (可选)配置连接节点设置:
- 节点数下限:输入连接节点数下限。
- 节点数上限:输入连接节点数上限。
节点是处理事务的连接单元(或副本)。 连接处理越多事务就需要越多节点,相反,处理越少事务需要越少节点。 如需了解节点如何影响连接器价格,请参阅连接节点的价格。如果未输入任何值,则默认情况下,节点数下限设置为 2(以便提高可用性),节点数上限设置为 50。
- (可选)点击 + 添加标签,以键值对的形式向连接添加标签。
- 点击下一步。
- 在目标部分中,输入要连接到的远程主机(后端系统)的详细信息。
- 目标类型:选择目标类型。
- 从列表中选择主机地址,以指定目的地的主机名或 IP 地址。
- 如果要与后端系统建立专用连接, 从列表中选择端点连接,然后选择所需的端点连接 (在端点连接列表中)。
如果要与后端系统建立公共连接以增强安全性,您可以 可以考虑配置静态出站 IP 地址,然后配置 将您的防火墙规则设置为仅将特定的静态 IP 地址列入许可名单。
要输入其他目的地,请点击 +添加目的地。
- 点击下一步。
- 目标类型:选择目标类型。
-
在身份验证部分中,输入身份验证详细信息。
- 选择身份验证类型,然后输入相关详细信息。
SAP ERP 连接支持以下身份验证类型:
- 用户名和密码
- 点击下一步。
如需了解如何配置这些身份验证类型,请参阅配置身份验证。
- 选择身份验证类型,然后输入相关详细信息。
- 如果您已启用事件订阅,则连接创建页面上会显示事件订阅详情部分。如需了解如何配置事件订阅详情,请参阅配置事件订阅。
- 查看:查看您的连接和身份验证详细信息。
- 点击创建。
-
用户名和密码
- 用户名:连接器的用户名
- Password:包含与 连接器。
-
为事件监听器选择以下任意一种身份验证类型。
- 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 主题。
- 将
RFC_READ_TABLE
函数用作新函数的模板。选择事务代码SE37
和SDTX
函数组,然后将RFC_READ_TABLE
复制到新的函数组或您的工作函数组。在此示例中,RFC_READ_TABLE
已复制到Z_CUSTOM_READ_TABLE
。 - 在 SAP 屏幕的属性标签页中,选择
Remote Enabled Module
。 - 在表格标签页中,将
DATA
参数设置为CHAR8000
。右键点击屏幕,然后点击显示 ->更改。 - 在 Source Code 标签页上,粘贴位于安装目录的
db
子文件夹中的替换RFC_READ_TABLE
函数模块的示例源代码。该代码位于Z_CUSTOM_READ_TABLE.txt
中,但如果您的 SAP ERP 实例运行的是 ABAP 7.52 或更高版本,则首选Z_CUSTOM_READ_TABLE_752.txt
。 - 点击保存。
- 按照提供的自定义读取表中记录的内容定义导入项、表和异常。
- 激活函数模块,然后在连接字符串中将
ReadTableFunction
设置为Z_CUSTOM_READ_TABLE
或函数模块的名称。
添加 SAP ERP 触发器
如需将 SAP ERP 触发器添加到集成中,请执行以下步骤:
如需配置 SAP ERP 触发器,您可以使用 Integration Connectors 中提供的现有 SAP ERP 连接,也可以使用内嵌连接创建选项创建新的 SAP ERP 连接。
使用现有连接配置 SAP ERP 触发器
SAP ERP 触发器是连接器事件触发器,因此,您只能使用启用了事件订阅的 SAP ERP 连接来配置触发器。
如需了解如何使用新的 SAP ERP 连接配置 SAP ERP 触发器,请参阅使用新连接配置 SAP ERP 触发器
如需使用现有 SAP ERP 连接配置 SAP ERP 触发器,请执行以下步骤:
使用新连接配置 SAP ERP 触发器
配置身份验证
根据您要使用的身份验证输入详细信息。
配置事件订阅
如果您启用了事件订阅,请在 Event Subscription Details 部分:
使用自定义“读取表格”函数
RFC_READ_TABLE
该连接器使用 SAP RFC_READ_TABLE
函数从 SAP 表获取数据。
不过,它也存在一些限制。以 DATA_BUFFER_EXCEEDED
异常。SAP RFC_READ_TABLE
的固定大小为 512 字节。它可以缓冲
因此,选择的列数不能超过
适合该缓冲区。如果您选择的字节数超过 512 字节,则会发生异常
这表明您已经超出了每行允许的缓冲区空间上限,
以减少所选的列数。
RFC_READ_TABLE2
SAP ERP 连接器支持 RFC_READ_TABLE2
表读取功能。您可以切换
通过设置 ReadTableFunction
,将活跃表读取函数设置为 RFC_READ_TABLE2
发送至 /SAPDS/RFC_READ_TABLE2
。
自定义读取表格函数
该连接器包含一个自定义读取表 RFC,Z_CUSTOM_READ_TABLE
与 SAP RFC_READ_TABLE
类似,但缓冲区更大,可解决 DATA_BUFFER_EXCEEDED
问题并绕过 RFC_READ_TABLE
限制。
如需使用包含的自定义读取表 RFC 绕过默认 RFC_READ_TABLE
的限制,请按以下步骤操作:
ABAP 7.52 自定义阅读表
除了 Z_CUSTOM_READ_TABLE.txt
之外,还有一个 Z_CUSTOM_READ_TABLE_752.txt
文件,适用于 ABAP 7.52 及更高版本。它与 Z_CUSTOM_READ_TABLE
类似,但它利用 ABAP 7.52 中新推出的关键字在数据库中(而不是在 ABAP 脚本本身中)执行分页。这在处理大型表时,可提高分页效率。
建议使用 Z_CUSTOM_READ_TABLE_752
RFC。
在 SAP 中配置身份验证
按照本地版本或任何云版本的 ABAP SDK for Google Cloud 的身份验证概览指南中的说明,在 SAP 中配置身份验证。
验证触发器
如需验证触发器,您可以创建一个 ABAP 程序。以下是可用作参考的 ABAP 程序示例。ls_event_payload
字段会根据您的要求而发生变化:
*&---------------------------------------------------------------------* *& Report ZR_TEST_INT_CONNECTOR *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT zr_test_int_connector. PARAMETERS: p_auth TYPE char1 RADIOBUTTON GROUP rbg1 USER-COMMAND uc DEFAULT 'X', p_apik TYPE char1 RADIOBUTTON GROUP rbg1. DATA: lv_p_projects_id TYPE string, lv_p_locations_id TYPE string, lv_p_connections_id TYPE string, ls_input TYPE /goog/cl_connectors_v1=>ty_103. TYPES: BEGIN OF event_payload, event_type TYPE string, event_id TYPE string, name TYPE string, org_id TYPE string, END OF event_payload. DATA: ls_event_payload TYPE event_payload. ls_event_payload = VALUE #( event_type = 'create-entity' event_id = '1' name = 'demo-org' org_id = 'SAP' ). TRY. IF p_Auth = abap_true. DATA(lv_client_key) = 'IC_DEMO_GOOGLE_AUTH'. lv_p_connections_id = 'conn-event-triggers-from-sap-erp'. ELSE. lv_client_key = 'IC_DEMO_GOOGLE_APIK'. lv_p_connections_id = 'conn-event-triggers-from-sap-erp-apik'. ENDIF. * Open HTTP Connection DATA(lo_client) = NEW /goog/cl_connectors_v1( iv_key_name = CONV #( lv_client_key ) ). * Populate relevant parameters lv_p_projects_id = lo_client->gv_project_id. lv_p_locations_id = 'us-central1'. GET REFERENCE OF ls_event_payload INTO ls_input-payload . * Call API method: connectors.projects.locations.connections.listenEvent CALL METHOD lo_client->listen_event_connections EXPORTING iv_p_projects_id = lv_p_projects_id iv_p_locations_id = lv_p_locations_id iv_p_connections_id = lv_p_connections_id is_input = ls_input IMPORTING * es_raw = es_output = DATA(ls_output) ev_ret_code = DATA(lv_ret_code) ev_err_text = DATA(lv_err_text) es_err_resp = DATA(ls_err_resp). IF lo_client->is_success( lv_ret_code ). MESSAGE 'Success' TYPE 'S'. ELSE. MESSAGE lv_err_text TYPE 'E'. ENDIF. * Close HTTP Connection lo_client->close( ). CATCH /goog/cx_sdk INTO DATA(lo_exception). MESSAGE lo_exception->get_text( ) TYPE 'E'. ENDTRY.
配额和限制
如需了解配额和限制,请参阅配额和限制。