在 SAP ABAP 系统中,事务码 SQF 并非传统意义上的 Query 工具,而是叫作 Support Query Framework 的综合静态分析平台。
这个工具通过 ABAP 报表 SUPPORT_QUERY_FRAMEWORK,能够对指定 ABAP 对象执行多维扫描,帮助开发者快速识别潜在缺陷、违规访问、性能瓶颈以及安全隐患。
该框架植根于软件组件 SAP_BASIS,提供与 Code Inspector、ATC 等质量门控工具互补的能力,尤其擅长代码的横截面分析。
SQF 的定位与历史背景
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 的核心功能
笔者使用 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 编程方式实现。细节请参阅笔者的文章:
内核探秘:SAP CRM 产品主数据模型设计的智慧之道
c. Interface Calls
d. Dynamic Coding:
SQF 能揭示对象间调用、数据库表依赖、接口实现关系,这对重构、升级、S/4HANA Readiness Check 都能起到很好的辅助作用。
领取专属 10元无门槛券
私享最新 技术干货