102、隐式增强与显式增强那阵子被一个标准交货单打印程序折腾得够呛。业务那边要求打印输出时在页脚多带一段行项目级备注,标准逻辑只在抬头取数,无论如何都不肯把内表里那几行备注带出来。习惯性想复制标准程序改一版,结果程序名都是SAP标准命名空间,传输和升级都是坑。后来组长看了一眼,说:“你用增强,别碰标准代码。” 就这五个字,让我正式把隐式增强和显式增强这门功课补上了。先聊隐式增强。这玩意儿在ABAP里几乎是“白给”的位置,SAP在生成标准程序时,已经默默埋好了一堆空钩子。你不用去声明什么点,只要在源码编辑器里切到“增强模式”,就能看到那些浅绿色的行。它们出现在每个FORM语句的BEGIN和END后面,每个FUNCTION MODULE的开头结尾,每个方法的开头和结尾,甚至程序末尾的空白区域。对,就是那种“留好了位置但没告诉你名字”的钩子。我当时的问题就出在某个标准ALV报表的顶层FORM里。程序结构大概是:先取数,再填充字段目录,最后输出。要在输出前改内表字段,最方便的就是在那个FORM的结尾隐式增强里动手。怎么找?SE38打开程序,点“增强”按钮,或者快捷键Shift+F6,能看到所有可用的增强点。双击一个绿色的增强点,SAP会弹出对话框问你要不要创建增强项目。这里有个坑——隐式增强不能直接编辑,你得先创建一个“增强实现”(Enhancement Implementation),它像外衣一样裹在增强点外面。代码很简单,在FORM结尾的隐式增强里写:ENHANCEMENT 1 ZPP_RPRT_IMP. " 这是增强实现的名字,别乱取 LOOP AT lt_ou