把一个运行了十几年的 SAP ECC 系统迁移到 SAP S/4HANA 之后,项目团队很容易产生一种错觉,数据库已经换成 SAP HANA,很多过去需要特别关注的 ABAP 性能问题应该自然消失了。
实际情况恰恰没有这么简单。
SAP HANA 确实改变了 ABAP 应用处理数据的方式。列式存储、内存计算、更强的并行处理能力,以及越来越成熟的 Code Pushdown,让过去很多放在 ABAP Application Server 上完成的工作可以下推到数据库执行。
但数据库变快,并不会自动把低效程序变成高效程序。
一次数据库访问从 10 毫秒降低到 1 毫秒,如果程序在 LOOP 里执行 100000 次 SQL,请求依然可能付出惊人的代价。一个 CDS View 如果层层 JOIN、叠加大量计算字段、暴露大量不需要的 Association,同样可能生成非常昂贵的 SQL 执行计划。一个拥有几十万条记录的 STANDARD TABLE,如果不断做线性查找,也不会因为后台数据库是 SAP HANA 就突然拥有 HASHED TABLE 的查找效率。
SAP 官方的性能资料仍然明确建议减少循环中的数据库访问、使用有效的 WHERE 条件、合理考虑 JOIN 与FOR ALL ENTRIES,并通过 ST05、SAT 等工具验证真实瓶颈。SAP 对 CDS 性能的官方说明同样强调,CDS 提供了很强的数据建模能力,但复杂 CDS 模型本身也可能带来长时间运行的查询,性能仍然需要测量和分析。
所以,现代 ABAP 性能优化真正需要记住的不是某一条语法口诀,而是一条更可靠的工程原则。
先测量真实工作负载,找到真正占据执行时间的操作,