嗯,我承认,这个标题有点绕。
情况是这样的,还是Toolbox.com上有人提问:“我要写条PCR,判断IT表里是否有1234这个工资项,如果有的话,就把工资项2345的值设置成0。”
这个需求看上去挺简单的,但是后面跟帖的人有点让人抓狂。
回答1:“用AMT=ZERO”
先不说这个PCR是否能起作用,单单这个语法检查就不能通过。SAP的语法只有“AMT=0”,没有“AMT=ZERO”。
回答2:“用ZERO=”,后面还客气的说了一句“Hope this helps”.
别黑尔普斯(helps)了,菲尔普斯来了也没用,就给人家一个function是没用的。
回答3:“ZERO=2345”。
这个跟第一个回答一样,也是语法错误。“ZERO=”只能适用于两种情况:一个是对当前正在处理的工资项;一个是对变量,也就是前面带“&”符号的。
正解是什么呢?
其实修改工资和考勤Schema最麻烦的地方,就是要通盘考虑。因为schema中的处理是有先后顺序的,所以你写早了也不行,写晚了也不行,必须刚刚好。当然有些处理是比较灵活的,早一点晚一点没太大关系。所以在修改之前必须先考虑一个问题-“在哪一步写?”。
假设1234和2345都没有其他需要处理的步骤,我会建议在计算2345的步骤里写,因为这样比较保险。先把2345的AMT值清空,然后再取1234的AMT值,判断一下,如果是0,就把2345的AMT值再恢复原样;如果不是0,就把2345的值全部清空。
具体的程序我就不写了,都是一些比较常用的函数或者操作。