ADDWT
至此,我们已经使用MULTI,DIVID,AMT,RTE和NUM设置我们的工资类型的值。ADDWT将头中的工资类型不改变值或改变值后移到的表。ADDWTE*是不改变工资类型的数值加到RT中。ADDWTE9XXX将它重命名为9XXX然后转移到RT中。用F1帮助文档将告诉你所有这些你能转移到的表。
ELIMI and RESET
裂片是用于将工资类型连接到工资中表的属性。有时你在做某个Rule时不得不移除某个裂片-这就是ELIMI做的(ELIMInate 裂片)。在删除一个工资类型的裂片后,你可以使用RESET重新保存他们。一般来说,你应该避免删除裂片-因为这可能导致比率和报表出错。所以使用和测试时要小心。
FILLF
这个简单的Operation能重置wagetype域的值。例如,FILLF A是在Rule第一次被调用时将amount重置回原来的值。
这里你将把把所有这些Operation集合在一起在基本工资的基础上计算固定比例的扣除数(有几种方法计算,这里仅介绍一种)。假设基础工资在IT值,比率作为一个完整的数保存在常数ZNUM中,你制定了一个Rule包含了工资类型****和基础工资,在这个例子中用?OBAS?。扣除的部分将是4XXX。所以,在这个Schema 中我们将在RuleZ001中执行一个PIT:PIT Z001。在Rule中:
工资类型****:ADDWT *(如果它不是OBAS,我们就不改变它)。
Rule类型OBAS:ADDWT*, NUM=KZNUM,MULTI ANA, AMT/-100, ADDWT 4XXX(将OBAS传到输出表,这样我们就不会丢失它了,设置number域等于常数ZNUM,用amount乘以number,因为我们将百分比作为一个完整的数保存并且我们希望这个扣除数是负数,所以用-100除amount,并把结果作为工资类型4XXX保存。
决策
很多次我们只需在某种条件存在时执行某个动作-比如,我们只想为某种员工计算扣除数4XXX。在这种情况下,我们必须选择什么时候执行这个动作。
Decisions将结果放入称为变量的键中-这就象一个带有通配符的描述。如果我们把公司代码放在一个变量键只,那么含有1234的行将为公司1234执行,含有2***的行将为任何以2打头的公司执行,而****将为所有任意匹配的公司执行。
OUTWP
这个Operation使我们在基于工资中的WPBP表中的各种数据元素做出决策-粗略地只有信息类型0和1数据。通过F1帮助文档,可以看到许多的元素。例如,通过OUTWP COMPY可以查看公司代码,它把company code域的内容放到变量键中。
VAKEY
像OUTWP这个Operation是把某个数据放在变量键中,可以看F1帮助查看各种可能性。
NUM, RTE and AMT
作为decisions,他们又出现在这里。如果用AMT?0,它将amount域的值与0比较然后返回>,<,或=.你也可以用上面提到的概念将它与一个常量或另外一个工资类型进行比较。
VWTCL
这个Operation为当前的工资类型返回某个处理类的值。例如,VWTCL 93将处理类93的值放在变量键里。RuleX023是如何使用处理类值的一个好例子。
在前面的例子中,我们给每个基本工资类型OBAS的员工计算扣除数4XXX。使用OUTWP你可以决定只计算在某个人事范围/子范围或员工子组的员工。假设你想计算在信息类型14或15已经进入工资类型4XXX的员工。假设已经进入工资类型,信息类型的number域也有要求的数据,你需要做以下步骤:
工资类型OBAS:ADDWT *, NUM=4XXX, 在NUM?0做选择,
IF:如果是=(等于),就什么也不做,
ELSE:否则(_*条件)执行NUM=KZNUM,MULTI ANA, AMT/-100, ADDWT 4XXX.这取决于在这点你的工资类型裂片是如何组织的,你可能想在NUM=4XXX之前ELIMI R,在ADDWT 4XXX之前RESET R。
正如前面提到的,这仅仅是隔靴搔痒。当配置薪酬时你不能仅关注某个问题,而应该理解所有的部分并力求最好的配置。你有许多的方法组合Function,Operation,处理类和常数等。SAP已经为薪酬创建了灵活的功能强大的配置模型。当使用正确时,许多工作就已经完成好了,当使用不正确时,发现它会引起困惑并且导致不稳定。所以要好好的测试你的配置并以文档形式记录你的配置。
下面是对Schema CN28的部分简单阐述:
BLOCK BEG *Payroll schema:CHINA
COM 工资Schema :中国标准
COPY XIN0 初始化工资
COPY CNBD 编辑基本数据(中国)
IF SPRN 特别处理运行??非周期性支付?
RERSH IT 删除IT(删除内表)
ENDIF 到:特别处理运行?
COPY XLR0 导入上一期工资结果
COPY CNT0 工资总额(读入时间数据)
COPY CNAP 导入扣减(0014、0015导入)
COPY CNAL 确定每个月的扣减因子
COPY CNNG 净支付(净工资)计算(中国)
COPY XNA0 累计净支付的值
COPY XRR0 回溯(反算)
COPY XNN0 净支付/扣减 和 传输
COPY CNEN 最后处理
BLOCK END *中国 工资核算
Function(Function) BLOCK
描述:BLOCK Function允许你构造一个工资核算过程日志。在开始和结束标记点中把工资Function按语义顺序聚集在一起,且他们出现在日志中的一个普通节点。
语法:
Function 参数1 参数2 参数3 参数4
FUNCTION BLOCK Function名称
参数1 BEG 开始一个语义块
END 结束一个语义块
参数2 目前无该参数
参数3 目前无该参数
参数4 目前无该参数
说明:BLOCK Function可以被嵌套,在一个子Schema 中,一个结束块必须对应一个开始块
Schema
XIN0 初始化工资数据(国际)
人员计算Schema
重要的信息/事件(开关),哪一些有关工资核算的进一步过程,工资运行开始在这个子Schema 中指定。
结构:
子Schema 由下述步骤组成:
1、 指定程序类型(工资核算或评估)
2、 设置数据库更新开关(YES/NO)
3、 必需的信息类型(导入仅仅是schema所需的主数据信息类型)
4、 导入所有时间信息类型
5、 指定检查控制记录PA03(测试或激活生产)
参数1 参数2 参数3 参数4 D
COM 注释:工资发放核算初始化
BLOCK BEG 块开始:
PGM ABR 工资发放的程序类型
UPD YES 更新数据库(是/否)
OPT INFT 只使用信息类型的读取
OPT TIME 输入全部的时间信息类型
CHECK ABR * 核查PA03(生产机去掉 *)