
拿我们正在做的ZI_HDR_SALES销售订单应用来说,界面里有几个很典型的要求。SoId创建后不能修改,Amount必须大于零,订单进入已释放状态后部分字段要变成只读,保存前还要自动补齐默认值。熟悉 Angular 的开发者很容易想到@Directive,希望写一个类,再通过某个选择器把行为挂到字段、按钮或者页面元素上。ABAP 里没有这样的统一语言特性。无论是经典 ABAP、ABAP Objects、Dynpro、Web Dynpro ABAP、ABAP CDS、RAP,还是 SAP BTP ABAP Environment,都不存在一个与 Angular@Directive在语法、作用对象、实例化方式、生命周期和运行时绑定机制上完全对应的构造。更准确的结论是,Angular@Directive的能力在 ABAP 技术栈里被拆散了。经典屏幕动态控制由LOOP AT SCREEN和MODIFY SCREEN完成,业务对象生命周期行为由 RAP 的 determination、validation、action 和 feature control 完成,标准流程的插件式扩展由 BAdI 完成,声明式元数据由 CDS annotation 完成,编译检查控制则由 ABAP pragma 完成。它们各自只覆盖@Directive的某一部分,没有任何一个可以单独被称为 ABAP 版@Directive。