项目快结束的时候,在把所有开发的内容传送到QA的时候,我测了一遍,发现一个先离开的同事所做的ETL部分有问题。
她在NETWEAVER2004S里,从PSA到INFO CUBE的TRANSFORMATION过程里,采用了一个ENDROUTINE来确定一个INFO OBJECT “ANSWER TYPE"的内容。
在TRANSFORMATION里,有START ROUTINE, 然后是SOURCE INFO OBJECT到TARGET INFO OBJECT的对应关系(可以是直接相等,也可以是各种计算),最后是END ROUTINE。
既然她写了END ROUTINE,于是就不维护对应关系了,对应关系就空着了。
结果在载入数据的时候,这个END ROUTINE是工作的,ANSWER TYPE的内容被填充了。可是在激活这个数据的时候,ANSWER TYPE却丢失了,成了空白。这是个客户定制的内容,不是标准的BUSINESS CONTENT。怎么解决这个问题?
我查SDN,里面有人有相同问题,但是没有解答。激活是一个按键,不用按键,可以手动运行一个程序,在SE38里,RSODSACT1激活,这个程序名字是在按键的时候显示在底线的TASK BAR上的。以这个字做关键字搜索OSS,凭经验排除一下,很快可以确定OSS 974833是可能的原因。这里关键是经验可以迅速地节省时间,确定可能的原因。
OSS 974833的意思是说,这是个系统的程序错误。系统的设计错误在于,一旦看TRANSFORMATION的对应上如果是空缺的话,那么在激活数据的过程中就初始化了这个INFO OBJECT,也就是抹去了一切内容。 这对不对?
当然不对了,因为在过程上,对应关系之后还有一个ENDROUTINE可以起作用。如果象我们设计的这样,对应关系是空白,然后在END ROUTINE里操作,完全是合理的。然而却因为这个系统设计而造成数据被丢失了。
怎么解决?这是SP7的问题,在SP10里解决了,如果不升级补丁到SP10,怎么解决?
因为对应里的关系不管怎么填,都会被ENDROUTINE覆盖掉,所有可以设置一个DUMMY 对应,避开这个系统设计的判断,不会初始化数据内容,然后ENDROUTINE会覆盖这个DUMMY 对应输入的数据。这样就可以了。
因为END ROUTINE里是有条件地对某些数据操作,而DUMMY 对应是无条件的。所以END ROUTINE里还要改一下,把不符合条件不操作的改成不符合条件的以空格覆盖DUMMY 对应带来的数据。这样就完整了。
这个例子说明,
如何以恰当的关键字在SDN进行搜索
如何判断适用或者可能适用的OSS NOTE
如何在SNOTE里执行NOTE(ADVANCE CORRECTION),或者升级补丁,或者采取办法避免升级而绕开这个错误
前天项目经理总结了一下项目收尾的工作,然后说H2暂时不动了,然后小声,很迅速地加了一句,但是项目完成后仍然要做H2产品。
我老板听后立即反问,什么时候做?这是一个决定吗?我怎么不知道?是不是会另外付钱给我们做H2产品?
问得很直接。其实项目经理说的时候我也听见了,但是他低低的声音里我听出来他很没有底气,好象考试不及格不敢告诉家里人一样。每个人的个性形成了项目组里的这个局面,战略组的这个项目经理统管整个项目,我们SAP组是主力,但却是配合他们的。项目经理倾向于迎合客户,而不争取权益,然后反过来压给我们工作量。很难说是对是错,只能说是个度的问题。
但是把工作包给SAP组做的这部分,内部的利润收益分配应该是已经确定的了,那么做得越快就越早撤出来,利润,奖金也越大。显然项目经理想让我们“买一送一”,“免费”再做H2。
这个时候能直接面对,直接反问的就只有我这位老板了,她提出来要把这个分歧提交到大老板那里裁决。下面还有好几个项目等着,无论如何都比即使项目经理愿意多付的钱要多得多。我只是感到,这么直接,其实是解决分歧的最好办法。