Feature是HR模块中特有的东西,类似于配置表,根据某个员工属性给出返回值,比配置表更灵活一点,但也不是无限灵活,因为每个feature都被一个structure控制,只有这个structure里的field可以被用作决策树里的判断依据(decision field)。
原来一直不明白feature的工作机制,主要是不明白feature如何获得那些decision field的值,我以为是每个feature自动获得的。这次由于项目需要,检查了一下某个feature和他的程序,发现不是这样的,feature的基本工作原理如下。
1,SAP标准的原型feature存在table T549B中,是cross-client的。
2,修改feature,保存,结果会存在table T549C中,是client-dependant。
3,激活的时候,更新一段程序,这个程序就是一堆CASE语句,可以在SE80中查看,同时程序名保存在T549D中,就是PE03的attributes下看到的程序,一般是/1PAPA/FEAT100xxxxx,xxxxx就是feature名。
4,在每一个需要引用feature的程序里,一定有和feature相关的代码,这些代码首先给feature里的那些decision field赋值,然后PERFORM RE549D把值传递给feature程序,feature程序执行完后返回reture value给主程序,主程序再进行相应处理。
由此可见,feature也不是那么灵活,因为到处都要写代码,如果要给feature加一个decision field,除在feature的structure里增强之外,还要到用到这个feature的主程序里写代码,给这个新field来赋值。