手动质量保证高级手动 QA 工程师(SAP/Fiori 专家)

在进行跨环境传输推广后,手动验证 **SAP Fiori** **目标映射** 配置时,您会采用什么系统方法来区分 **OData** 元数据缓存伪影和 **PFCG** 角色授权同步缺口?这两者都表现为启动板上不可见或非功能性的应用程序磁贴。

用 Hintsage AI 助手通过面试

问题的背景

SAP S/4HANA 实施在很大程度上依赖于 Fiori 启动板作为中央用户界面,取代传统的 SAP GUI 事务,使用 SAPUI5 应用程序。这些应用程序通过 OData 服务消耗数据,这些服务通常封装了遗留的 RFC(远程函数调用)功能模块。部署架构涉及多个层次:前端的 BSP(商业服务器页面)应用程序,SAP Gateway 层(公开 OData),后端的 ABAP 堆栈,以及 PFCG(配置文件生成器)授权配置文件。

在景观推广过程中(开发质量保证生产),不一致通常不是由于代码缺陷,而是由于配置漂移。OData 服务在 IWBEP 组件中会积极缓存元数据,而 PFCG 角色需要手动再生(配置文件生成)以传播新的 授权对象,如 S_START 或自定义的 Z* 对象。这个问题考察测试者识别缺失磁贴是由于前端缓存、网关元数据、传输排序或授权缓冲延迟的能力。

问题

核心挑战是 症状模糊性:用户登录到 Fiori 启动板时,看到的是灰显的磁贴,或者磁贴完全缺失,或者点击时返回“无法打开应用程序。请稍后再试。”这些症状可能源于:

  1. OData 元数据过时SAPUI5 应用程序获取 $metadata 以理解实体结构。如果 Gateway 缓存(/IWFND/CACHE)在传输后持有旧版本,应用程序可能无法绑定到后端中更改的 RFC 字段。

  2. PFCG 角色传播延迟:即使 传输请求 成功将 角色 移动到 QAS用户主数据USR04)表可能在运行比较(PFUD)或用户再次登录之前未反映新的 配置文件 版本。该角色可能列出了 目录,但缺少特定的 S_IWSG(互联网通信框架)授权。

  3. 目标映射孤儿LPD_CUST(启动板自定义)条目或 CATALOG 分配可能引用某个 语义对象(例如,ZPurchaseOrder)和 动作create),但如果传输错过了 分配或 SAPUI5 组件 ID 在 manifest.json 中与 BSP 应用程序名称不匹配,磁贴会渲染但无法导航到任何地方。

如果没有系统的方法,测试者会浪费几个小时检查 SE80 代码,而问题可能是 SM59 中缺少 系统别名 或未刷新 SU56 授权缓冲。

解决方案

需要一个 分层消除协议,从静态配置到动态运行:

第 1 步:传输一致性审核 在进行任何功能测试之前,使用 SE01SE09 验证 副本传输(TOC)工作台请求 的内容。确认共依赖关系:BSP 应用程序、ICF 节点(事务 SICF)、OData 服务(/IWFND/MAINT_SERVICE)、Fiori 目录/组 分配(/UI2/FLPD_CUST),以及 PFCG 角色必须在同一传输中,或具有记录的排序。使用 SCMP(视图/表比较)检查系统之间的 LPD_T(启动板数据)表的差异。

第 2 步:元数据缓存失效Gateway 系统中执行 /IWFND/CACHE_CLEANUP 以清除 模型元数据 缓存。在浏览器中强制硬重载(Ctrl+F5)并在 SAPUI5 引导 URL 添加 ?sap-ui-xx-noCache=true。在 网络 选项卡中检查 $metadata 请求;验证 XML 响应是否包含与当前 RFC 签名匹配的正确 EntitySets

第 3 步:授权缓冲冲刷 使用事务 SU56 删除当前用户的授权缓冲。执行 PFUD(用户主数据调整)并选择“比较”选项,以确保 PFCG 角色的 配置文件 是最新的。在访问失败的磁贴后立即运行 SU53,以显示最后一次失败的授权检查。特别查看 S_START(一般开始授权)、S_IWSGS_SERVICE 对象。

第 4 步:目标映射解析验证 使用事务 /UI2/FLIA(Fiori 启动板意图分析)输入 语义对象动作。这会显示解决的是哪个 SAPUI5 应用程序(通过 组件 ID)、ICF 路径,以及 LPD_CST 条目是否有效。如果 FLIA 显示资料映射但用户看不到它,则问题出在 PFCG(缺失的目录分配)。如果 FLIA 显示没有映射,则问题在于 LPD_CUST 或传输。

第 5 步:RFC 连接跟踪 通过 /IWFND/ERROR_LOG 激活 Gateway 错误日志。使用 SM59连接测试 跟踪 RFC 目标,然后使用 SM50(进程概述)监视 RFC 失败,当 OData 服务尝试访问后端时。检查 SM21(系统日志)中的 S_RFCS_RFCACL 授权失败。


生活中的状况

问题描述

S/4HANA 2022 升级项目中,SAP Fiori "管理采购申请" 应用程序在 开发 中正常工作,但在 质量保证 中无法启动,出现错误:“无法打开应用程序,因为 SAPUI5 组件 ui.sscim.prereq 无法加载。” Basis 团队确认所有传输都已成功导入且 RC=0(返回代码零)。SAPUI5 ABAP 存储库(SE80)显示 ui.sscim.prereq BSP 应用程序在 QAS 中存在。OData 服务 C_PURCHASEREQ_SRV/IWFND/MAINT_SERVICE 中处于活动状态。然而,磁贴对管理员可见,但对采购文员不可见,这表明存在授权问题,但管理员在点击磁贴时也遇到了加载错误。

解决方案 1:浏览器缓存清除和 UI5 版本回退

最初的假设是 QAS 有一个损坏的 SAPUI5 缓存或在 ABAP 存储库中的版本不匹配。团队为所有用户清除了浏览器缓存并手动使用 /UI5/APP_INDEX_CALCULATE 使 MIME 存储库缓存失效。

优点: 这是一个快速、非侵入性的修复,通常可以解决 SAPUI5 资源加载问题(在 Component-preload.js 上的 404)。不需要 ABAP 代码更改。

缺点: 这没有解决问题。错误仍然存在,更重要的是,它没有解释为什么磁贴对文员不可见。它处理了症状(加载错误),而没有诊断为什么元数据无法加载,这可能掩盖了更深层的 OData 服务配置问题。

解决方案 2:全面的 PFCG 角色再生和用户比较

团队怀疑 PFCG 中缺少 Fiori 目录 分配。他们为采购角色再生了所有配置文件,并运行了 PFUD,选择“完全对账”选项,以确保所有用户都获得了更新的授权。

优点: 确保 授权配置文件UST04 中的 PROF_NAME)与 角色 定义同步。这解决了文员的“不可见磁贴”问题,因为 QAS 角色版本确实缺少了 目录 组分配。

缺点: 尽管磁贴变得可见,但点击时仍会导致“组件无法加载”的错误。这种方法失败,因为它纯粹关注于授权层(PFCG),而忽略了 OData 服务到 RFC 映射层。可以看到磁贴的管理员仍然无法打开它,证明问题超出了授权。

解决方案 3:系统化的 Gateway 和 ICF 节点验证(选择的方法)

选择的方法涉及独立检查 OData 服务的激活状态,而不考虑 UI5 应用程序。使用事务 /IWFND/GW_CLIENT,团队对 C_PURCHASEREQ_SRV?sap-client=100 执行了 GET 请求。该请求返回 HTTP 200,但 XML 负载显示 元数据 来自于近期 RFC 接口更改之前的缓存版本。随后,检查事务 SICF(维护服务)显示 ICF 节点 /sap/bc/ui5_ui5/sap/ui_sscim_prereqDEV 中处于活动状态,但在 QAS不活动(导入因锁定对象而悄然失败)。最后,检查 /IWFND/ERROR_LOG 显示,当应用程序尝试获取 $metadata 时,出现了指向过期 SM59 目标的授权错误,而该目标在迁移后已被淘汰。

选择理由: 这种方法隔离了三个同时发生的故障:(1)ODataDEVQAS 之间的缓存不同步导致元数据不匹配,(2)ICF 节点不活动导致无法通过 HTTP 提供 SAPUI5 资源,以及(3)QAS 中的 系统别名 配置错误指向一个不存在的 RFC 目标。它提供了特定的错误代码(ICF 403s 与 OData 404s),而不是通用的用户界面消息。

结果

执行 /IWFND/CACHE_CLEANUP 刷新了 OData 元数据以匹配新的 RFC 签名。通过 SICF 激活 ICF 节点解决了“组件无法加载”的错误,使 BSP 应用程序的 HTMLJS 文件可访问。纠正 /IWFND/MAINT_SERVICESAP 系统别名 中的 系统别名 确保 Gateway 可以访问后端。采购文员随后可以看到并打开应用程序,因为在解决方案 2 中修复的 PFCG 角色允许访问现在功能正常的磁贴。系统的方法节省了大约 8 小时的 ABAP 调试时间,避免了认为代码存在缺陷的假设。


候选人常常忽略的内容

您如何确定缺失的 Fiori 磁贴是由于缺失的目标映射(LPD_CUST)还是缺失的 PFCG 中的目录分配,考虑到这两者都会导致磁贴不显示?

答:

缺失的 目标映射(在 LPD_CUSTFiori 目录 设计器中配置)意味着 语义对象动作 组合没有关联的 SAPUI5 应用程序,但如果在 PFCG 中存在目录分配,磁贴本身仍可能出现。点击它将产生“无法找到导航目标”的错误。要验证,使用事务 /UI2/FLIA(Fiori 启动板意图分析)。输入 语义对象动作;如果 FLIA 返回“此意图找不到应用程序”,则 目标映射 缺失或映射中 BSP 应用程序名称不正确。

反之,如果 FLIA 成功显示目标 SAPUI5 应用程序和 组件 ID,但磁贴在用户的启动板上缺失,则问题与 PFCG 相关。检查包含该磁贴的目录是否在 PFCG 中分配给用户的 角色(检查 菜单 选项卡),并确保 (组织启动板主页上的磁贴)也被分配。此外,确认用户的 SU53 跟踪中存在 授权对象 S_START,其值为 WEBGUI,因为这是启动任何 Fiori 应用程序所必需的,且在从仅 SAP GUI 系统的角色升级中经常被遗漏。

为什么一个 OData 服务在 Gateway 客户端(/IWFND/GW_CLIENT)上测试成功,但在浏览器中由 SAPUI5 应用程序调用时却失败并出现 403 Forbidden?

答:

Gateway 客户端/IWFND/GW_CLIENT)在 SAP GUI 会话上下文中执行,使用 SAP Logon 认证并绕过 HTTP 互联网通信框架(ICF) 节点的安全检查。然而,SAPUI5 应用程序通过 ICF 节点结构路由请求(/sap/bc/ui5_ui5/.../sap/opu/odata/...)。因此,浏览器中的 403 通常表示:

  1. ICF 节点不活动:目标客户端中的特定服务节点在 SICF 中不活跃,尽管 OData 服务本身在 /IWFND/MAINT_SERVICE 中已注册。

  2. S_ICF 授权:用户缺乏带有正确 ICF 字段值(服务名、主机等)的 S_ICF 授权对象,以访问该特定 HTTP 路径。错误后立即检查事务 SU53

  3. CSRF 令牌验证SAPUI5 应用程序要求通过 HEAD 请求获取有效的 CSRF(跨站请求伪造)令牌。如果前端和后端系统配置不当(例如,在 Fiori 前端服务器 方案中具有不同的 系统 ID),即导致令牌验证失败并出现 403,而 GW_CLIENT(无状态且与 CSRF 无关)成功。

您如何测试在多个同时导入包含授权配置文件更改的传输请求期间 PFCG 角色更新中的竞争条件?

答:

当多个 传输请求 同时导入包含 PFCG 角色时,配置文件 生成(PFCG生成配置文件)可能会在 USR10USR12 上创建 表锁 碰撞,导致一些用户收到部分角色更新的授权缓冲不完整。要测试此项:

  1. 分阶段导入模拟:在 QAS 系统中,顺序输入 角色 传输,而不是同时输入。记录 返回代码(目标 RC=0RC=4 警告)。然后重置系统并同时导入。使用 SE16 或查询 AGR_USERS 比较两个场景之间的 用户主记录(表 UST04)以查看角色分配是否不同。

  2. 授权跟踪比较:使用 ST01(授权跟踪)对同一个用户在同步导入前后进行记录。捕获 授权检查 缓冲。如果顺序导入对于 Z_CUSTOM_AUTH_OBJECT 显示成功检查,但同步导入显示失败,则可能存在 配置文件 生成中的竞争条件。

  3. PFUD 延迟测试:在同步导入后立即执行 SUIM用户通过复杂选择标准 检查 配置文件 版本(PROFNUSR10 中)是否与 PFCG 中的 角色 版本匹配。如果不匹配,用户主调整PFUD)被跳过或悄然失败。解决方案是在签署前强制运行 PFUD 以进行 RSUSR200(用户-角色分配分析)验证。