本文可帮助规划将用户从 SAP HCM 预配到 Microsoft Entra ID,包括从 SAP IDM 迁移到 Microsoft Entra 的组织体系结构注意事项。
总体而言,本文档介绍了关于 SAP HCM 的三种集成选项,包括适用于 SAP S/4HANA 本地部署的 SAP HCM。
- 选项 1:基于 CSV 文件的来自 SAP HCM 的入站预配
- 选项 2:使用 Azure 逻辑应用 SAP 连接器的基于 SAP BAPI 的入站预配
- 选项 3:使用 Azure 逻辑应用 SAP 连接器进行基于 SAP IDocs 的入站预配
还有第四个选项,
- 选项 4:使用 SAP SuccessFactors 和 SAP HCM 的组织也可以利用 SAP Integration Suite 将身份整合到 Microsoft Entra ID 中,并在 SAP HCM 和 SAP SuccessFactors 之间同步工作人员列表。 在此处,可以使用 Microsoft Entra ID 连接器将 SuccessFactors 中的员工标识引入 Microsoft Entra ID ,或 将其从 SuccessFactors 预配到本地 Active Directory。
术语
| 术语 | 定义 |
|---|---|
| AS ABAP | 支持高级业务应用程序编程(ABAP)运行时的 SAP NetWeaver 应用程序服务器平台。 |
| SAP NetWeaver | 托管本地 SAP ERP 应用程序的 SAP 应用程序服务器平台(包括 SAP HCM)并提供集成功能。 |
| BAPI | 业务应用程序编程接口;使外部应用程序能够访问 SAP 业务对象数据和进程。 |
| IDocs | 中间文档;标准化的 SAP 格式,用于在系统之间交换业务数据,包括用于批处理的控制和数据记录。 |
| RFC | 远程函数调用;SAP 协议,用于 SAP 与外部系统之间的通信,支持通过 RFC 端口进行入站和出站函数调用。 |
| FM | 函数模块;在 SAP HCM 中配置的 BAPI 函数模块。 |
体系结构概述
SAP HCM 表和信息类型
SAP HCM 中的员工数据存储在 SQL 关系数据库中。 通过访问正确的函数模块(FM)和权限,可以查询存储员工信息的后端数据库表。 对于数据库中的每一个表,SAP HCM 中都有一个名为 Infotype 的功能等效项,这是一种对相关数据进行逻辑分组的机制。 SAP HCM 管理员在 SAP HCM 屏幕中管理员工数据时使用 Infotype 术语。 本部分提供 SAP HCM 中存储员工数据的重要表的列表。 字段 人员编号 – PERNR 唯一标识这些表中的每个员工。
| 表名称 | 信息类型 | 注解 |
|---|---|---|
| PA0000 | 0000- 操作 | 捕获人力资源对员工执行的操作。 示例字段:就业状态、作类型、作名称、开始日期、结束日期。 |
| PA0001 | 0001 - 员工组织架构分配 | 捕获员工的组织数据。 示例字段:公司代码、成本中心、业务区域。 |
| PA0002 | 0002 - 个人数据 | 采集个人数据。 示例字段:名字、姓氏、出生日期、国籍。 |
| PA0006 | 0006 - 地址 | 捕获地址和电话数据。 示例字段:街道、城市、国家/地区、电话。 |
用于提取活动员工的用户名、状态、名字和姓氏的示例 SQL 查询:
SELECT DISTINCT p0.PERNR username, CASE WHEN (p0.STAT2 = 3) THEN 1 END statuskey, p2.NACHN last_name, p2.VORNA first_name
FROM SAP_PA0000 p0 left join SAP_PA0002 p2 on p0.PERNR = p2.PERNR
WHERE p0.STAT2 = 3 and p0.ENDDA > SYSDATE()
SAP HCM 和 Entra 入站预配选项
本部分介绍 SAP HCM 客户可以考虑用于实现从 SAP HCM 到 Microsoft Entra/本地 Active Directory 的入站预配的选项。 使用以下决策树确定要使用的选项。
选项 1:基于 CSV 文件的入站预配
何时使用此方法
如果您在并行部署模式下同时使用 SAP HCM 和 SAP SuccessFactors,并且 SAP SuccessFactors 尚未作为主要 HR 数据源具有权威性和功能性,那么请使用此方法。 此方法可以更快实现价值,并更好地符合您最终迁移到 SAP SuccessFactors 的目标。
在哪些方案中,客户将同时部署 SAP HCM 和 SAP SuccessFactors?
在将核心 HR 模块移动到 SAP SuccessFactors 之前,通常使用辅助 HR 模块(例如性能和目标、学习等)启动 SAP SuccessFactors 部署。 在此方案中,本地 SAP HCM 系统仍然是员工和组织数据的权威来源。
为什么仅建议使用 SAP SuccessFactors 部署计划的 SAP HCM 客户使用此方法?
只有具有此并行部署配置的客户才有资格使用 SAP HCM 和 SuccessFactors 的 SAP 加载项集成模块 ,以便将员工数据定期导出到 CSV 文件中。
高级数据流和配置步骤
此图演示了高级数据流和配置步骤。
-
步骤 1:在 SAP HCM 中,使用员工数据配置 CSV 文件的定期导出。 首次运行集成时,建议对初始同步执行完全导出。初始同步完成后,可以执行仅捕获更改的增量导出。 导出的 CSV 文件可以存储在 SFTP 服务器或 Azure 文件共享上,格式为加密。
- 引用:
- 从 SAP ERP HCM 复制员工数据
- 2214465 - SAP ERP HCM 的集成 Add-On 3.0 - SAP for Me (需要 SAP 支持登录)
- 关于SAP ERP HCM 与 SuccessFactors集成的幻灯片展示,于2019 年 SBN 大会上介绍。 若要从会议网站下载演示文稿,请转到 第 1 天 > 周三 13:30-14:10 > SAP ERP HCM 与 SuccessFactors 的集成,讲者 Trygve Berg,来自 Capgemini。
注释
CSV 文件可以包含差异数据(或增量数据)。
- 引用:
- 步骤 2:在 Microsoft Entra 中,将 API 驱动的预配应用配置为从 SAP HCM 接收员工数据。
-
步骤 3:配置中间件工具以解密/读取 CSV,将其转换为 SCIM 批量有效负载,然后将数据发送到步骤 2 中配置的 API 终结点。 CSV 文件可以存储在 Azure 文件共享等暂存位置。 建议在中间件工具中实现验证和断路器逻辑,防止不良数据流入 Entra。 例如,如果
employeeType无效,则跳过记录,如果 HR 记录的某个百分比具有无效数据,请停止批量上传作。
部署变更
如果你无权访问 SAP 提供的加载项集成模块,或者不打算使用 SuccessFactors,即使在此方案中,仍可以使用 CSV 方法,因为可以在 SAP HCM 中生成自定义自动化,定期导出 CSV 文件进行完全同步和增量同步。
选项 2:基于 SAP BAPI 的入站预配
何时使用此方法
如果没有部署 SAP SuccessFactors,并且由于系统约束或部署要求,解决方案架构需要使用 Azure 逻辑应用进行计划的定期同步,则应使用此方法。 此集成使用 Azure 逻辑应用 SAP 连接器。 Azure 逻辑应用为 SAP 提供两种连接器类型:
鉴于本文中阐述的原因,SAP“内置连接器”相较于“托管连接器”具有某些优势。 例如,借助 SAP 内置连接器,本地连接无需本地数据网关,专用操作能够为有状态的 BAPI 和 RFC 事务提供更好的体验。
高级数据流和配置步骤
此图演示了基于 SAP BAPI 的入站预配的高级数据流和配置步骤。
注释
该图描绘了 Azure 逻辑应用 SAP 内置连接器的部署组件。
网络注意事项:
- 如果您更喜欢使用 Azure Logic Apps 的 SAP 托管连接器,请考虑使用 Azure ExpressRoute,它允许将 Azure Logic Apps 标准网络与本地 SAP 部署进行对等互连。 不建议使用本地数据网关组件,因为它会导致安全性下降。
- 如果 SAP HCM 系统已在 Azure 上运行,则可以在同一 VNET 中完成从逻辑应用到 SAP 系统的连接(无需本地数据网关)。
步骤 1:在 SAP HCM 中配置 先决条件 以使用 SAP 内置连接器。 这包括设置具有适当授权的 SAP 系统帐户以调用以下 BAPI 函数模块。 使用
RPY*和SWO*函数模块,可以使用专用 BAPI操作来列出可用的业务对象,并查找哪些 ABAP 方法可用于对这些对象执行操作。 为了更好地发现输入输出和拥有更具体的元数据,我们建议这样做,而不是直接调用 BAPI 方法的 RFC 实现。RFC_READ_DATARFC_READ_TABLEBAPI_USER_GETLISTBAPI_USER_GET_DETAILBAPI_EMPLOYEE_GETDATARFC_METADATARFC_METADATA_GETRFC_METADATA_GET_TIMESTAMP
RPY_BOR_TREE_INITSWO_QUERY_METHODSSWO_QUERY_API_METHODS
如果已定义自定义函数模块,则应将这些模块包含在列表中。
步骤 2:在 Microsoft Entra 中,将 API 驱动的预配应用配置为从 SAP HCM 接收员工数据。
步骤 3:配置逻辑应用工作流,该工作流最好通过 SAP 中的 BAPI 调用方法调用相应的 BAPI 函数模块,处理响应,生成 SCIM 有效负载并将响应发送到Microsoft Entra 预配 API 终结点。 作为保持 API 驱动的预配使用限制的最佳做法,我们建议将多个更改批处理到单个 SCIM 批量请求,而不是为每个更改提交一个 SCIM 批量请求。
步骤 4:查询 Entra ID 预配日志终结点以检查预配作的状态。 记录成功的操作并重试失败的操作。
定义一个用于增量导入的自定义 RFC
使用这些步骤在 SAP GUI/ABAP Workbench 中创建自定义 RFC。 此自定义 RFC 返回在特定开始日期和结束日期之间已更改的用户的属性。
定义 RFC 函数模块
a。 使用事务 SE37 创建自定义已启用 RFC 的函数模块,该模块接受输入开始日期(
p_begda)和结束日期(p_endda)
b. 在函数模块中,编写逻辑以查询相关表(例如 PA0001,PA0002)以获取用户属性。
c. 根据上次更改的时间戳来筛选数据(例如,使用CHANGED_ON field)。实现逻辑
a。 使用 ABAP 代码提取所需的属性,并将筛选器应用于过去一小时内的更改。
b. 示例 ABAP 代码片段:FORM read_database USING p_begda p_endda. IF lv_pernr IS INITIAL. *-- > Employee list SELECT pernr endda begda FROM pa0000 INTO TABLE 1t_pernr WHERE aedtm BETWEEN p_begda AND p_endda. *-- > Org assignment details SELECT pernr endda begda FROM pa0001 APPENDING TABLE 1t_pernr WHERE aedtm BETWEEN p_begda AND p_endda. *-- > Personal Details SELECT pernr endda begda FROM pa0002 APPENDING TABLE 1t_pernr WHERE aedtm BETWEEN p_begda AND p_endda. ENDIF. ENDFORM.c. 确保函数模块以结构化格式返回数据(示例,内部表
1t_pernr)。启用 RFC 访问
a。 在其属性中将函数模块标记为已启用 RFC。
b. 使用事务代码 SM59 测试 RFC,以确保可以远程调用它。测试和部署
a。 在本地和远程测试 RFC 以验证其功能。
b. 在 ECC 系统中部署 RFC 并记录其使用情况。在逻辑应用中配置 RFC 调用
a。 指定 SAP 系统详细信息,包括你在 SAP ECC 中创建的 RFC 名称。
b. 输入 RFC 的任何必需参数(例如,在上一屏幕截图中,参数 BEGDA 指向与上一个运行相对应的 Azure Blob 存储中存储的水印日期,而 ENDDA 是当前逻辑应用运行的开始日期)。分析 RFC 调用中的 JSON 响应,并使用它创建 SCIM 批量请求有效负载。 呼叫 SAP 中 "获取用户更改" RFC 函数的输出结果的屏幕截图。
选项 3:基于 SAP IDocs 的入站预配
何时使用此方法
如果您没有部署 SAP SuccessFactors,并且由于系统限制或部署要求,解决方案架构需要使用 Azure Logic Apps 进行基于事件的同步,请使用此方法。
此集成使用 Azure 逻辑应用 SAP 连接器。 Azure 逻辑应用为 SAP 提供两种连接器类型:
由于 本文中所述的原因,SAP 内置连接器比托管连接器具有一定的优势。 例如,借助 SAP 内置连接器,本地连接不需要本地数据网关,它支持 IDoc 重复数据删除,并更好地支持 在收到消息时处理触发器中的 IDoc 文件格式。
高级数据流和配置步骤
此图演示了高级数据流和配置步骤。
注释
该图描绘了 Azure 逻辑应用 SAP 内置连接器的部署组件。
网络注意事项:
如果您更喜欢使用 Azure Logic Apps 的 SAP 托管连接器,可以考虑使用 Azure ExpressRoute,这允许将 Logic Apps Standard 网络与本地 SAP 部署进行对等互连。 不建议使用本地数据网关组件,因为它会导致安全性下降。
如果 SAP HCM 系统已在 Azure 上运行,则从 Azure 逻辑应用到客户的 SAP 系统的连接可以在同一 VNET 中完成(无需本地数据网关)。
步骤 1:在 SAP HCM 中配置先决条件以使用 Azure 逻辑应用 SAP 内置连接器。 此步骤包括设置具有适当授权来调用 BAPI 函数模块和 IDoc 消息的 SAP 系统帐户。 完成设置和测试将 IDocs 从 SAP 发送到逻辑应用程序工作流的步骤。
步骤 2:在 Microsoft Entra 中,配置 API 驱动的预配应用以从 SAP HCM 接收员工数据。
步骤 3:生成在收到消息时使用触发器启动的逻辑应用工作流、处理 IDocs 消息、生成 SCIM 有效负载并将响应发送到 Microsoft Entra 预配 API 终结点。 作为保持 API 驱动的预配使用限制的最佳做法,我们建议将多个更改批处理到单个 SCIM 批量请求,而不是为每个更改提交一个 SCIM 批量请求。
- 引用:
- 使用 Azure 逻辑应用进行 API 驱动的入站预配
- 引用:
步骤 4:查询 Entra ID 预配日志终结点以检查预配作的状态。 记录成功的操作并重试失败的操作。
配置写回到 SAP HCM
在 Entra ID 中配备来自 SAP HCM 的员工记录后,企业通常需要将由 IT 管理的属性(如电子邮件和用户名)写回到 SAP HCM。
我们建议在此方案中使用 Microsoft Entra ID Governance -> Joiner 生命周期工作流和自定义逻辑应用扩展。 此图中显示了流程示意图。
执行以下步骤配置写回:
- 配置入职者生命周期工作流以触发雇用日期。
- 将自定义逻辑应用扩展配置为联接器工作流的一部分。
- 在此逻辑应用扩展中,调用函数
BAPI_USER_CHANGE,以更新用户的电子邮件地址和用户名。
致谢
我们感谢以下合作伙伴对本文的评审和贡献: