在 SAP ABAP 系统中,事务码 SQF 并非传统意义上的 Query 工具,而是叫作 Support Query Framework 的综合静态分析平台。
这个工具通过 ABAP 报表 SUPPORT_QUERY_FRAMEWORK,能够对指定 ABAP 对象执行多维扫描,帮助开发者快速识别潜在缺陷、违规访问、性能瓶颈以及安全隐患。
该框架植根于软件组件 SAP_BASIS,提供与 Code Inspector、ATC 等质量门控工具互补的能力,尤其擅长代码的横截面分析。
SAP 在 NetWeaver 7.0 EHP2 阶段引入 SQF 作为内部支持团队的快速诊断利器,它集成于 BC-DWB-UTL 组件包SQF_UI,通过事务码 SQF 调用对应可执行报表SUPPORT_QUERY_FRAMEWORK.
这个工具最初的目标是让 SAP 开发支持工程师用最少配置就能在客户系统里批量扫描客户化对象,定位常见问题,而后逐渐对外开放。
虽然 SQF 名称中包含 Query 一词,但它并不属于 SAP Query 系列(如 SQ01、SQ02、SQVI)。
Query 在此语境下指「支持查询」,聚焦于代码级元数据探查与静态规则匹配,定位与扫描思路更接近 ABAP Code Inspector.
笔者使用 SQF 事务码时,用得最多的就是「静态代码分析器」。
在主屏幕中双击 Source code Analysis 条目,维护扫描对象(程序、函数组、类、包或自定义对象集),保存之后点击执行即可获得扫描结果。
假设我想对 SAP CRM 的 Function Module CRM_PRODUCT_GETLIST2 进行静态分析。
设置维护如下:
Analysis Depth 即分析深度值,维护为 6 的含义是:如果该 Function Module 内部调用了其他 Function Modules 或子程序,SQL 会继续深入这些被调用的程序,但嵌套的深度到 6 为止。
比如:CRM_PRODUCT_GETLIST2 调用了 A,A 又调用 B,B 调用 C,依此类推直到 F 调用 G。
当分析深度设为 6 时,从 F 调用 G 开始的后续调用将不再被纳入分析范围。
按下 F8 键即可开始执行分析。
分析进度会在界面下方显示。指定的分析深度值越大,分析所需的时间越长。
分析结果报表的界面:
a. Call hierarchy:类似于 SAT 中展示的调用树结构。
b. Tables with Read Access:静态代码中的表读取操作。需要注意的是,那些通过动态代码实现的表访问,不会出现在这里,而会被归入 Dynamic Coding 类别中。
与 SAT 工具在运行时跟踪生成的数据库访问列表相比,静态分析的结果通常会少很多。
这个观察结果是合理的,因为在 SAP CRM 产品中,以 Product Set Types 为代表的数据访问,大多采用高度动态的 ABAP 编程方式实现。
c. Interface Calls
d. Dynamic Coding
SQF 能揭示对象间调用、数据库表依赖、接口实现关系,这对重构、升级、S/4HANA Readiness Check 都能起到很好的辅助作用。

