
SAPHRSchema详解.doc
20页[推荐][原创]SAP HR Schema详解(一)一、Payroll schema 基础1、 Schema 和 Function在SAP薪酬中,Function为薪酬计算提供了逻辑公式Function执行一般的过程—如在给定的薪 资方法上计算薪酬税,从特定的信息类型中读取工资类型,计算奖金,并保存薪酬计算的结果 SAP薪酬系统中有几十个Function,有些是与国家相关的而有些不是每个 Function在PE04中定义并有文档;在4.5版本以上可以通过 PDSY查看Function文档,在早期的版本可以通过 RPDSYS0查看在SAP HR术语中,一个薪酬 Function 与一个 ABAP Function是不一样的薪酬Function 也包含 A BAP代码,但它不像 ABAP Function那样执行薪酬 Function在Schema中被薪酬驱动程序(假定为 PRC ALCUO所执行Schema是一系列Function以某种顺序执行的集合—每个 Function执行后把结果传给下一个 Functi onSchema可以通过 PE01被创建和编辑,但是被保存在表 T52C0 (SAP标准Schema )和表T52C1(用户 创建的Schema和修改SAP标准Schema )。
薪酬驱动读取 T52C0/T52C1表中的行并依次执行 Function我们如何跳过保存在表中的薪酬 Function而执行ABAP代码来完成工作呢?在 t-code PE04中可以看到ABPA代码对应的每个 Function在Schema中Function名与 ABAP Form有关联,如薪酬 Function WPBP^射到 ABAP form ‘wpbp ' Function USTAX 映射到 form ‘ustax '所以当薪酬驱动执行 Schema 时,它从Schema中取得Function名,然后在名称前加上 FU',然后执行perform语句这是一个很简单 巧妙的设计2、 工资类型(wage type)即工资项在很大程度上,工资类型只是包含一些数据-比率,数字 和/或数量但是更详细的,一个工资类型有几十个属性用来控制它是如何被操作和处理的但是在最后,它在薪酬结果数据库中作为一个对象保存 成比率,数字和/或数量工资类型大多情况下用来保存一个员工薪水中收入的数量、扣除的数额和税收数额员工的基本工资保存在一个工资类型中,作为一般用途扣除的费用保存在一个工资类型中,他们应征税的工资和税保存在工资类型中。
作为员工工资的基本数据元素 一一工资类型,也同样映射到 FI/CO账户以记录工资上的借贷,并报告在 W-2和税务表格上工资类型也保存统计数据一如带薪时期内工作的小时数,在过去的六个月平均的周工资,或分红计算的工资的数量工资类型保存在几个表中,但是主要是 T512W将有更多的时间花在 T512W表的各个方面重要的视图包括:V_512W_D,V_512W_O,V_512W_B工资类型有三类:模型、技术和用户1) 模型工资类型是SAP给客户用来作为向导创建他们自己的工资类型的 他们常常以一个字母开始,SAP可能在系统升级或HRS冲添加、删除或更新他们2) 技术工资类型经常由 SAP产生,以'’开始他们一般用在薪酬的特定的标准过程中,但你也可以修 改他们,SAP可能在升级的过程中或在 HRSP中更新他们所以,如果你曾经修改过一个技术工资类型,那么要在每次升级以后或 HRSP以后检查他们,以保证他们还有你需要的属性并且不要删除任何技术工资类 型3) 用户工资类型一般以数字开始 ,SAP在升级或HRSP中是不会改变这些工资类型的或 SAP很少在升级或HRSP中改变这些工资类型用户工资类型是为所有公司特定的工资支付制定的。
3、Rule 和 Operation我们的一个长期客户曾经创建了一个保存界面的信息叫 薪水Rule ”那些有经验的SAP薪水分析者和顾问立刻看成其中的双层含义和幽默 Rule包含SAP薪水中大多基本的逻辑其中 Schema是Function的集合,Rule是Operation的集合一个Operation是一个非常基本的被用来操作工资类型的逻辑 例如,Operation MULTI是乘以工资类型中的数字和比率以决定付给员工工资的数目Operation OUTWIP取一个员工特定的数据并决定如何去处理它比如,如果工作合同在信息类型 1中是UA那么执行‘'如果是UB,执行‘'可以通过t-code PE04和PDSY查看Operation ,也可以通过 PE02编辑 OperationFunction 对应的 A BAP form 是以 fU '开始,Operation 对应的 ABAP form 是以 op开始比如,OperationMULTI,将有 ABAP f orm opmulti '同Schema 一样,Rule保存在表中,Rule被保存在表 T52C5中有多年计算机系统工作经验的 SAP高级顾问们常在发现工资 Rule和编程大型机汇编语言的类似性。
然而当Operation被正确使用时功能强大,但这没有什么好神奇的希望我们这个简短的介绍是有意义的下一篇 SAP工资技术文档中我们将更深入探讨用在 SAP的工资Schema 中的公共 Function Function最多能有4个参数,SAP文档将告诉你每个参数的用法通过 PDSY和PE04能看到每个Function 和 Operation COPY这与ABAP和编程语言中的include相同当工资执行时, Copy是插入包含在参数 1中的Schema好的Schema配置风格和好的编程风格是一样的—将公共使用的逻辑放在 include '中,这样能被用于多个地方,同时也增加可读性BLOCK在4.0版中,Schema日志是放在树状结构中的 BLOCK BE开始一个节点,BLOCK END吉束一个节点在 BEG和END之间是包含在节点中 BLOCK BEG/EN能被多层嵌套同时,适当的放置 BLOCK BEG/EN,使日 志更方便读IF/ELSE/ENDIF对IF Function ,有2种方法说明真/假条件SAP有几个内置的条件可以在参数 2 (Schema U000中的IF NAMC中使用。
你同时也能在参数 1中说明一个定制的 Rule,并且在Rule中执行你任意想要的逻辑 在Rule中,使用 Operation SCOND为IF Function 设置真/假转换Pxxxx工资驱动和Schema从许多信息类型中读取数据并处理数据一般是以 P和四位数字命名的信息类型来执行所以,P0014读取并处理从信息类型 14来的数据,P0168从信息类型168处理人生保险计划,P2010从信息类型2010中读取附加工资许多 Function,但并非所有的Function,允许你用工资 Ru le进一步精练此过程例如, Schema UAP0表明P0014被RuleU011处理过Function P0168 是没有使用 Rule的Function 之一(在一些老的版本中有使用) ,而是在参数中说明 Operation (见Schema UBE1)有些信息类型在工资中被使用,但没有 Pxxx Function 这些包括信息类型 207, 208,209和210,他们都在主税款Function USTAX中被读取并处理信息类型 0, 1,7和8被Function WPBP处理PITPIT是Process Input Table 的首字母简写,它也是工资中最常用功能最强大的 Function之一。
当工资类型被Pxxx Function 读入工资时,他们被保存在称为IT(Input Table )的内部表中PIT通过内部表循环, 并应用包含Rule中的逻辑所以对于IT中的每个工资类型,它都将从 Rule中申请一个逻辑PIT的目标是将工资类型从IT中移出,移入到 RT( Result Table )中大多数情况下,被 PIT调用的 Rule会改变工资类型的一些属性然后把他们从 IT中转移到RT中工资类型也能留在IT中并移到表中去在说明Operation是如何工作的时候我们再解释这种可能性PIT的一个例子是在 Schema UAL0中一PIT X023当工资驱动到达 Schema的这点时,PIT将遍历I T中的每个工资类型,RuleX023告诉它做什么事是取决于工资类型在过程类 20中的值值为3,4,5, 6,9和B使将把工资类型移到 RT中,而1,7和8是将工资类型留在IT中,值2没有任何操作,但本质上其 实是将工资类型从IT中清除PRTPRT是 Process Results Table 的缩写虽然大多数工资类型处理发生在 PIT,也有几种情况当你想处理工资类型时已经被转移到 RT中。
PRT工作原理同PIT,通过RT循环,同时从 Rule中申请逻辑在Schema UTX0中,PRT被用来处理已经在 RT中的税款工资类型Function UTX0 ( US税款Function)直接返回它的工资类型给 RT,所以任何一个在税款工资类型中的处理都要 PRT Function来完成ACTIOACTI0Function处理工资Rule,但是它不通过工资类型表来循环, 但它在不同的工作地点/基础工资记录间循环,并挨个处理它们的 Rule例如,假设员工在当前带薪时期有 2个信息类型1个记录,ACTIO将有2条记录要循环UTXO Schema是ACTIO使用RuleUWH计算带薪时期工作的小时数的一个好的例子像Function 一样,Operation的帮助文档也能通过 PDSY和PE04找到Operation能被放在2个不同的组—他们分布用来决策和操作工资类型有些 Operation刚好适用这2个组操作工资类型在Rule中使用工资类型就好像在 ABAP中使用内表Function通过把表的每一行一次性都放在 头空间来循环调用Rule (PIT,PRT P0014或)在头空间使用工资类型,完成以后在把它加回表中。
MULTI, DIVID这些Operation让你将工资类型中的两个字段相乘并将结果保存在第三个字段中能使用的字段是 AMT RTE和NUM MULTI RNA将用一个数乘以比率并将结果保存在 amount字段DIVID ANA将用一个数除 amount字段并将结果保存回amount字段NUM, RTE and AMT这些是非常基本的也很强大的 Operation,它们能操作他们各自字段的内容很大情况会用到这些 Operation,F1帮助文档是很有用的基本情况下,设置值 NUM=1或者AMT=2.50,但这不是一个好的实践方法而使用常数—在表 T511K中创建名叫ZNUM的常数,并使NUM=KZNUM(number字段的值赋给常数 ZNUM) 因为常数是根据日期有效的,而 Rule不是,这样当数值需要改变时使你更灵活地改变你可以设置工资类型的头的字段等于另外一个工资类型中对应的字段— AMT=E9XX是使amount等于RT工资类型9XXX中的amount字段当且仅当IT中的9XXX小于amount域的值时,AMT<9XXX各amount域 设置为IT中的9XXX(取两个值中的较小者)最后,你可以使用值上的算法。
RTE*100是rate字段的内容乘以100并把结果保存。
