今天处理一个 ABAP Incident 时,我又碰到了一个很典型的场景。
业务人员看到一条错误消息,知道某个订单没有成功释放,但从这条消息到真正出问题的 ABAP 代码,中间可能隔着事务码、报表、类、接口、函数模块、几层方法调用、数据库读取以及状态判断。真正修改代码的时间可能只有半小时,可在找到那半小时应该修改的代码之前,几个小时已经花掉了。
我们平时说 ABAP Debugging,很容易把注意力放到 Debugger 本身。实际上,在很多 SAP Support 工作里,占时间最多的并不是单步执行。
更多时间耗在找东西。
一条消息到底在哪里被抛出。
同一个方法有五条调用路径,这次生产环境实际走的是哪一条。
数据库字段里出现状态R,这个R在当前系统里究竟代表 Released、Rejected,还是某个项目自定义状态。
ST22 里显示一个类似ZCL_DEMO_ORDER=======CM004的 Include,到底对应哪个 Method。
上周刚刚导入了几个 Transport Request,到底是哪一个 Transport 改了当前 Failure Chain 上的方法。
再往后才轮到经典的调试流程,打断点、准备测试数据、重复业务步骤、进入一层又一层 Method,观察变量,再回到调用者。
问题在于,生产系统往往根本不允许这样做。
于是我开始把思路改掉。
不再把 Claude Code 当成一个只能阅读几段 ABAP Source Code 的聊天助手,而是先把整个 ABAP Pa