【笔记】HR模块的初识

1.0 HR分类

1.0.1 PA

PA 基本上就是涵盖各个方面的员工主数据,PA 有两个基本概念:Info type 和 Action。
Info type 是一类相关信息的集合,用四位数字为代码,例如:0001组织分配,0002个人基本信息,0006地址,0008基本工资,0021家庭成员,每个Info type其实就是一个table,table里有很多字段,比如"0002"这个 Info type 里有的字段:姓/名/称谓/别名/婚姻/宗教/性别等等,同一个 Info type 可以根据人员不同国家呈现不同的屏幕,并且某些 Info type 是特定国家专用的,比如中国专用的“个人所得税/社保/公积金/政治面貌/档案”等。“身份证号”这个 Info type 各国都会用,但是每个国家的编辑屏幕不一样。
Action 表示一个人事事件,例如雇佣/离职/升迁/跨公司转移等,按照 SAP 的逻辑,一个 Action 会引发一系列特定的 Info type 的增减或变更,Info type 的变更也应该有一个 Action 作为其缘由,所以要把相关的 Info type 按照特定顺序组合起来,在给员工执行 Action 的时候,这些 Info type 会按顺序逐个呈现,用户在前台逐个维护这些信息,举个简单的例子,用户在执行“雇佣”这一 Action 后,系统会接连调出 Info type:个人信息/组织分配/地址/排班/基本工资/银行/休假定额,用户在前台把这些信息逐个维护直至完毕。而所执行的Action 也被记录于 Info type0000 中。这一系列 Info type 和对 Info type 的操作(创建/修改/删除/终止)的组合称为 Info group,Info group 被分配给 Action。
HR 的每个 Info type 都必须指定有效期,有的 Info type 有重叠或间断,用户可以自己定义每个 Info type的“time constraint”,常用的有三种:1.无间断无重叠;2.有间断无重叠;3.有间断有重叠,以业务为例,“基本工资”这一 Info type 的 time constraint=1,某人在某一时点必须且只能有一条记录,如果在1月8号给员工修改“基本工资”,原有的记录就被掐断(即终止于1月7日这一天,SAP 叫做 Delimit)。Time constraint=2的例子:配偶,员工可以有配偶可以没有配偶,但如果有配偶只能有一个,time constraint=3的例子:子女,某人可以没有子女,可以有一个子女,可以同时有几个子女。
某些 Info type 可以有 Subtype,Subtype 的表结构完全继承于 Info type,只是用来细化和区别具体的 Info type,例如:“0021家庭成员”这个 Info type 可以有“配偶/子女/父亲/母亲/兄弟姐妹”这些 Subtype,这些都是可定义的,当某个 Info type 或者 Subtype 在同一时间有多条记录时,再用“Object ID”作为索引来区别,例如某员工在同一时间有三个子女,“Object ID”分别为1,2,3,在允许“一夫多妻制”的国家,也可以用“Object ID”来指代同时拥有的多个配偶。

1.0.2 OM

SAP 的 OM 是基于对象的结构,每个业务单元都被描述成一个对象(Object),常见的有:Position(岗位),Org Unit(部门),Job(工作),Cost Center(成本中心),Person(人,即 PA 里的Employee),Task(任务),Qualification(资格)等,由唯一的8位数字表示,各个对象之间建立起来的联系称为 Relationship,Relationship 是自动双向的,由字母A或B加3个数字表示,比如说你分配某个 Person占据了某个 Position,系统创建 RelationshipB008(某人占据某岗),同时创建 RelationshipA008(某岗被某人占据),删除或者修改一个 Relationship 时,对应的双向 Relationship 自动更新。各类 Object 允许的Relationship 可以配置,各 Relationship 允许的 time constraint 也可以配置,Object 和 Relationship 都需要指定有效期,两个 Object 之间 Relationship 的有效期不可以大过 Object 本身的有效期。
Position 是连接 PA 和 OM 的重要纽带,在 SAP-HR 里,某 Person 并不是直接属于某 Org Unit,而是因为这个 Person 占据了某 Position,而这个 Position 属于 Org Unit,因而这个 Person 被连接到该 Org Unit,Person 同样以这样的方式获得 Job,Cost Center 的属性。
面向对象的架构使得 SAP 里可以建立完全立体的组织架构,避免了平面/梯级架构的层数限制。用户可以通过“Root Object + Evaluation Path”来呈现组织结构里的对象和关系,Evaluation Path 通常被叫做“评估路径”,就是各种 Relationship 的集合。SAP 会从根对象开始寻找有指定关系的所有其他 Objects,再从找到的其他 Objects 开始寻找,如此一层一层往下寻找一直到找不到为止,当然,用户也可以预先限定需要寻找的层数。
似乎 SAP 对矩阵组织(Matrix)的支持方式不是很好。
OM 的一个重要的功能是做结构化授权(Structural Authorization),顾名思义,结构化授权是区别于 PFCG授权的,直接以组织结构为对象的授权方法,可以让 User ID 只能显示或维护某些特定的 Objects,例如,通过“根对象+Evaluation Path”,某经理只能观看所在部门的岗位、员工等对象信息。在实施结构化授权时,可以在权限档案里直接维护 Object 的代码,也可以维护“根对象+Evaluation Path”,可以将权限档案赋给某个 User ID,或者赋给某个员工号或者岗位,再通过员工号或岗位与 User ID 连接,这样的好处是,如果部门经理经过调动,只要在 HR 里正常维护这一调动事件,其 User ID 的权限会自动更新到新的部门,而不需要维护其权限档案。
在实施 Workflow 的环境下(无论SAP自己的还是用户开发的),OM 通常也被用来作为 Workflow 的组织结构。

1.0.3 PT

从 PT 开始,HR 的技术特征逐渐增强,HR 的事务性业务本身复杂无规律以致难以标准化,典型的比如对排班考勤的处理、考勤对薪资的影响。为了更加灵活地满足多样的需求,SAP 在 PT 和 PY 里运用了 Schema 的概念,考勤数据和工资均由专门程序来处理,而 schema 就是程序运行时所依据的准则,比如说:某些员工计加班/某些员工不计加班/什么情况下算缺勤,Schema 会按照设定的规则,调用主数据/配置表/历史结果,经过几千步的运算后返回结果。用户可以根据自己的需求修改 SAP 自带的 Schema,按照自己的独特规则处理考勤和计算工资,但是修改 Schema 是一个很有技术难度的事情。事实上 Schema 可以理解为“业务上的编程”,SAP 已经提供了成百上千的 Rule/Function/Operation,正是这三者构成了完整的 Schema,每个Rule/Function/Operation 都有其独特的结构和功能,用户只需要按规定格式填写需处理的对象(time type,wage type,日期,主数据,判断标准等)。可以将 Schema/Rule/Operation/Function 理解为封装好的、面向业务对象的、专用的超级函数。强大可配置选项+完善的国家版本+巨大函数库,在处理时间及计算工资时,基本上只有想不到,没有做不到。当然,为了保证系统的连续和完整,这些东西改的越少越好。

  • 排班计划(Work Schedule Rule),即每周期内每天的工作起始时间、休息时间,SAP 支持弹性工作制,但是弹性工作制也要限定每天的必须工作时间和周累计工作时间。Work Schedule Rule 可以根据工作日、假日、周末分成不同 day type 和 class,可以轻松处理夜班津贴、假日津贴等。
  • 考勤方法,SAP 提供两种思路:正向考勤(Positive)和逆向考勤(Negative),在员工主数据里指定员工使用正向还是逆向考勤,所谓正向,是指记录员工所有的出勤数据,未记录的视为缺勤,所谓逆向,是指只记录有 Work Schedule 有差异的考勤信息,未记录的系统视为符合 Work Schedule,不做专门处理,可见,逆向考勤是对用户和顾问都比较方便的方法。SAP 本身不是考勤软件,也不附带任何考勤硬件,只是有考勤数据处理功能,将考勤数据导入 SAP,需要经过专门接口(SAP有标准程序),或者手工 Batch Input。
  • 缺勤与缺勤配额,SAP 叫做 Absence 和 Absence Quota,分别存于员工的主数据2001和2006,每个缺勤类型就是一个 Subtype,比病假、年假、事假等,有些缺勤是有额度的比如年假,只能在年假额度里扣,而年假额度存储于 Info type2006 中,当 Info type2006 中的相应额度用完,此年假在2001中就不可输入(也可以配置成允许额度为负),如果有剩余额度,可以按比例结转下期,或者用薪资补偿。缺勤额度可以自动预提,例如,根据员工组织、级别、年龄、资历进行带薪年假的预提。除了缺勤配额,还有出勤配额,比如每月最长工作时间、批准的加班时间。
  • 时间评估,即 Time Evaluation,翻译成“时间数据处理”更容易懂,与工资处理类似,但是时间处理是每天进行,工资是每期进行。在时间处理中,正向与逆向考勤的区别并不大,都是将计划考勤与实际考勤对比,处理其差异,只是正向考勤使用的实际数据来自于外部,而逆向考勤所用的实际数据等于计划加差异。在考勤处理时,时间点称为 time event(比如上班刷卡,休息开始刷卡),两个相邻的 time event 构成一个 time pair,用户在配置表和 schema 中定义如何生成和处理 time pair,典型应用例如:将本月加班时间转为下月的休假配额。

1.0.4 PY

Wage Type,即工资类型,比如:基本工资/加班费/年终奖/差旅补贴等等,每个 wage type 有很多属性,比如该 wage type 是否应税?是否做为社保基数?是否要累计?(累计的应用:工资条上不仅有本月工资,还有本年累计工资)。一个 Wage type 有三个基本字段:金额/数量/单位,用户在前台只能选择“金额”或“数量/单位”一种维护方式,如果维护的是“数量/单位”,则在运行工资时按照预定评估标准计算出金额,在计件计时工资时很有用。除了这三个基本字段,工资的运行结果通常还有多个索引字段,类似于数据库表中的关键字,用来连接到其他的表。例如,某人某月基本工资应该分配给三个 Cost Center,则此 Wage type 被劈成三条记录,每条记录有一个“索引”,在“成本分配表”中也有三条记录三个索引,通过索引将“工资结果表”中的 Wage type 和“成本分配表”中的 Cost center 连接起来。在财务记账的时候,Wage type 分开记入三个 Cost center。
SAP 里有四个直接和 Payroll 直接相关的 Info type 用来记录 wage type,其中,Info type0008,基本工资,持续的、基本的工资项目;Info type0014,周期性发放,通常记录长期稳定的补贴项目,比如一年连续发放的交通补贴、通讯补贴;Info type0015,附加发放/扣减,该 Info type 的有效期是一个时点,所以用来纪录偶然的发放,比如偶然的工资调整,依次出差补贴,某月的加班费(如果未启用考勤)。三者最大区别是,0008必须一直存在,0014必须存在一段时间,而0015只能存在于某一天,这一天落在工资核算的某一期间内。三者的共同点是,他们都是在正常的每月一次(如果是按月付薪)的 pay roll run 中处理。
Info type0267,off-cycle,即在正常 pay roll run 以外的某一天发放,以年终奖为例,如果年终奖和年度最后月工资一起发放,则年终奖可以放在 Info type0015,如果年终奖单独发放,可以放在 Info type0267。
Pay roll Schema 与 Time Schema 的结构和原理一样,只是因为各国法规、社保、所得税不同,导致内容不同。

  • 回溯机制(Retroactive accounting)是 SAP 里一个非常巧妙的机制,在以前期间工资已经发放的情况下,如果再修改以前期间的工资相关的 Info type,例如:考勤/工资/组织分配/银行等(用户可以配置哪些 Info type),SAP 就留下一个记号,表示前期主数据已被修改,修改日期被记录于 Info type0003 里,本期 run pay roll 时,系统首先在 Info type0003 里发现这个修改,并从修改当期开始重新计算工资,重新计算并不象FI 那样把以前的记录 reverse,而是把旧记录保留,打个作废的记号,新记录重新生成,对于某些重要的且已经报送的wage type,新旧记录做一对比,将差额往下传递一直到本期,并且在本期反应出来,例如 wage type“银行支付”,系统会根据以前记录的“已经支付”对比回溯计算的“应该支付”,将其差额带到本期,在本期进行补充支付,而不是调整以前的“已经支付”,因为实际业务中,以前的“已支付”是无法更改的。此外,SAP 使用 Control Record 的方法,能够有效防止 pay roll run 过程中修改主数据、避免少算多算、避免未支付和重复支付。
  • “已付税款”的逻辑与“银行支付”基本相同,SAP 的中国版本还提供了两种处理税差异的方法,一种是重新计算回溯期间的税基,将税基差额带到本期然后在本期算税,一种是重新计算税额,将税额带到本月,在本月一起扣税。
  • Payslip(RemunerationStatement)运用了 Form 的形式,可以在 payslip 上使用员工主数据、文本、窗体、行项目,在窗体内,wagetype 若值为0可以不显示,而行项目无论值是否为0都显示,payslip 里还可以对 wagetype 进行简单的加减,可以根据不同返回值进行不同处理,但是没有专门的格式和数学函数,常用的格式转换可以经过系统自带的 conversion 功能来完成。Payslip 上不仅可以调出本期或累计的 wagetype,还可以调出本期或累计的出勤、缺勤、缺勤配额等时间信息。Payslip 的 Form 不支持插入图片。
  • 薪资结果的财务过帐,主要运用 SymbolicAccount,SymbolicAccounts 是 HR 和 FI 的纽带,用来连接wagetype 和 FIAccounts,其他一些细节包括:1.可以对员工进行分组,同一 wagetype 在不同的组下可以记入不同科目,比如生产人员的基本工资入制造费用,销售人员的基本工资入销售费用。2.财务科目可以分配BS,PL,Vendor,Customer,所以,可以在财务里配置 Vendor 叫做“税务局”,然后把代扣个人所得税的 wagetype 直接记到这个 Vendor 账户里。对员工的 AP、AR,SAP 会自动搜索并计入到对应的EmployeeVendor、EmployeeCustomer 账户。3.分类汇总,通常按照 Costcenter 对工资进行分类汇总,也可以选择其他标准。4.可以选择是否使用Clearing总账科目。

2.0 模式和函数

在 SAP 薪酬中,函数为薪酬计算提供了逻辑公式。函数执行一般的过程-如在给定的薪资方法上计算薪酬税,从特定的信息类型中读取工资类型,计算奖金,并保存薪酬计算的结果。SAP 薪酬系统中有几十个函数,有些是与国家相关的而有些不是。每个函数在 PE04 中定义并有文档;在4.5版本以上可以通过 PDSY 查看函数文档,在早期的版本可以通过 RPDSYS00 查看。
在 SAP HR 术语中,一个薪酬函数与一个 ABAP 函数是不一样的。薪酬函数也包含 ABAP 代码,但它不像ABAP 函数那样执行。薪酬函数在模式中被薪酬驱动程序(假定为 PRCALCUO)所执行。
模式是一系列函数以某种顺序执行的集合,每个函数执行后把结果传给下一个函数。模式可以通过 PE01 被创建和编辑,但是被保存在表 T52C0(SAP标准模式)和表 T52C1(用户创建的模式和修改SAP标准模式)。薪酬驱动读取 T52C0/T52C1 表中的行并依次执行函数。
我们如何跳过保存在表中的薪酬函数而执行 ABAP 代码来完成工作呢?在t-code PE04 中可以看到 ABAP 代码对应的每个函数。在模式中函数名与 ABAP Form 有关联,如薪酬函数 WPBP 映射到 ABAP form ‘fuwpbp’;函数 USTAX 映射到 ABAP form ‘fuustax’。所以当薪酬驱动执行模式时,它从模式中取得函数名,然后在名称前加上‘fu’,然后执行 perform 语句。这是一个很简单巧妙的设计。


3.0 工资类型(wage type)即工资项

在很大程度上,工资类型只是包含一些数据-比率,数字和数量。但是更详细的,一个工资类型有几十个属性用来控制它是如何被操作和处理的。但是在最后,它在薪酬结果数据库中作为一个对象保存成比率,数字和数量。
工资类型大多情况下用来保存一个员工薪水中收入的数量、扣除的数额和税收数额。员工的基本工资保存在一个工资类型中,作为一般用途扣除的费用保存在一个工资类型中,他们应征税的工资和税保存在工资类型中。作为员工工资的基本数据元素——工资类型,也同样映射到 FI/CO 账户以记录工资上的借贷,并报告在 W-2和税务表格上。
工资类型也保存统计数据-如带薪时期内工作的小时数,在过去的六个月平均的周工资,或分红计算的工资的数量。工资类型保存在几个表中,但是主要是 T512W。将有更多的时间花在 T512W 表的各个方面。

  • 重要的视图包括:V_512W_D,V_512W_O,V_512W_B 等。

3.0.1 工资类型有三类:模型、技术和用户

  1. 模型工资类型是 SAP 给客户用来作为向导创建他们自己的工资类型的。他们常常以一个字母开始,SAP可能在系统升级或 HRSP 中添加、删除或更新他们。
  2. 技术工资类型经常由 SAP 产生,以’/’开始。他们一般用在薪酬的特定的标准过程中,但你也可以修改他们,SAP 可能在升级的过程中或在 HRSP 中更新他们。所以,如果你曾经修改过一个技术工资类型,那么要在每次升级以后或 HRSP 以后检查他们,以保证他们还有你需要的属性。并且不要删除任何技术工资类型。
  3. 用户工资类型一般以数字开始,SAP 在升级或 HRSP 中是不会改变这些工资类型的。或 SAP 很少在升级或HRSP 中改变这些工资类型。用户工资类型是为所有公司特定的工资支付制定的。

4.0 规则和操作符

我们的一个长期客户曾经创建了一个保存界面的信息叫“薪水规则”!那些有经验的 SAP 薪水分析者和顾问立刻看成其中的双层含义和幽默。规则包含 SAP 薪水中大多基本的逻辑。其中模式是函数的集合,规则是操作符的集合。一个操作符是一个非常基本的被用来操作工资类型的逻辑。例如,操作符 MULTI 是乘以工资类型中的数字和比率以决定付给员工工资的数目。操作符 OUTWP 获取一个员工特定的数据并决定如何去处理它。比如,如果工作合同在信息类型1中是 UA,那么执行‘x’,如果是 UB,执行‘y’,如果是 UC,执行‘z’。
可以通过 t-code PE04 和 PDSY 查看操作符,也可以通过 PE02 编辑操作符。函数对应的 ABAP form 是以‘fu’开始,操作符对应的 ABAP form 是以‘op’开始。比如,操作符 MULTI,将有 ABAP form ‘opmulti’。同模式一样,规则保存在表中,规则被保存在表 T52C5 中。
有多年计算机系统工作经验的 SAP 高级顾问们常在发现工资规则和编程大型机汇编语言的类似性。然而当操作符被正确使用时功能强大,但这没有什么好神奇的。
像函数一样,操作符的帮助文档也能通过 PDSY 和 PE04 找到。操作符能被放在2个不同的组-他们分布用来决策和操作工资类型。有些操作符刚好适用这2个组。
在规则中使用工资类型就好像在ABAP中使用内表。函数通过把表的每一行一次性都放在‘头’空间来循环调用规则(PIT,PRT,P0014等)。在头空间使用工资类型,完成以后在把它加回表中。

4.0.1 SAP的工资模式中的公共函数

函数最多能有4个参数,SAP文档将告诉你每个参数的用法。通过 PDSY 和 PE04 能看到每个函数和操作符。

4.0.1.1 COPY

这与 ABAP 和编程语言中的‘include’相同。当工资执行时,Copy 是插入包含在参数1中的模式。好的模式配置风格和好的编程风格是一样的-将公共使用的逻辑放在‘include’中,这样能被用于多个地方,同时也增加可读性。

4.0.1.2 BLOCK

在4.0版中,模式日志是放在树状结构中的。BLOCK BEG 开始一个节点,BLOCK END 结束一个节点。在 BEG和 END 之间是包含在节点中。BLOCK BEG/END 能被多层嵌套。同时,适当的放置 BLOCK BEG/END,使日志更方便读。

4.0.1.3 IF/ELSE/ENDIF

对 IF 函数,有2种方法说明真/假条件。SAP 有几个内置的条件可以在参数2(模式 U000 中的 IF NAMC)中使用。你同时也能在参数1中说明一个定制的规则,并且在规则中执行你任意想要的逻辑。在规则中,使用操作符 SCOND 为 IF 函数设置真/假转换。

4.0.1.4 Pxxxx

工资驱动和模式从许多信息类型中读取数据并处理数据。一般是以P和四位数字命名的信息类型来执行。所以,P0014 读取并处理从信息类型14来的数据,P0168 从信息类型168处理人生保险计划,P2010 从信息类型2010中读取附加工资。许多函数,但并非所有的函数,允许你用工资规则进一步精练此过程。例如,模式UAP0 表明 P0014 被规则 U011 处理过。函数 P0168 是没有使用规则的函数之一(在一些老的版本中有使用),而是在参数中说明操作符(见模式 UBE1)。
有些信息类型在工资中被使用,但没有 Pxxx 函数。这些包括信息类型207,208,209和210,他们都在主税款函数 USTAX 中被读取并处理。信息类型0,1,7和8被函数 WPBP 处理。

4.0.1.5 PIT

PIT 是 Process Input Table 的首字母简写,它也是工资中最常用功能最强大的函数之一。当工资类型被 Pxxx函数读入工资时,他们被保存在称为 IT(Input Table)的内部表中。PIT 通过内部表循环,并应用包含规则中的逻辑。所以对于 IT 中的每个工资类型,它都将从规则中申请一个逻辑。
PIT 的目标是将工资类型从 IT 中移出,移入到 RT(Result Table)中。大多数情况下,被 PIT 调用的规则会改变工资类型的一些属性然后把他们从 IT 中转移到 RT 中。工资类型也能留在 IT 中并移到表中去。在说明操作符是如何工作的时候我们再解释这种可能性。PIT 的一个例子是在模式 UAL0 中-PIT X023。当工资驱动到达模式的这点时,PIT 将遍历 IT 中的每个工资类型,规则 X023 告诉它做什么事是取决于工资类型在过程类20中的值。值为3,4,5,6,9和B使将把工资类型移到 RT 中,而1,7和8是将工资类型留在 IT 中,值2没有任何操作,但本质上其实是将工资类型从 IT 中清除。

4.0.1.6 PRT

PRT是 Process Results Table 的缩写。虽然大多数工资类型处理发生在 PIT,也有几种情况当你想处理工资类型时已经被转移到 RT 中。PRT 工作原理同 PIT,通过 RT 循环,同时从规则中申请逻辑。
在模式 UTX0 中,PRT 被用来处理已经在 RT 中的税款工资类型。函数 UTX0(US 税款函数)直接返回它的工资类型给 RT,所以任何一个在税款工资类型中的处理都要 PRT 函数来完成。

4.0.1.7 ACTIO

ACTI0 函数处理工资规则,但是它不通过工资类型表来循环,但它在不同的工作地点/基础工资记录间循环,并挨个处理它们的规则。例如,假设员工在当前带薪时期有2个信息类型1个记录,ACTI0 将有2条记录要循环。
UTX0 模式是 ACTI0 使用规则 UWH1 计算带薪时期工作的小时数的一个好的例子。

4.0.1.8 MULTI, DIVID

这些操作符让你将工资类型中的两个字段相乘并将结果保存在第三个字段中。能使用的字段是 AMT,RTE 和NUM。MULTI RNA 将用一个数乘以比率并将结果保存在 amount 字段。DIVID ANA 将用一个数除 amount字段并将结果保存回 amount 字段。

4.0.1.9 NUM, RTE and AMT

这些是非常基本的也很强大的操作符,它们能操作他们各自字段的内容。很大情况会用到这些操作符,F1帮助文档是很有用的。基本情况下,设置值 NUM=1 或者 AMT=2.50,但这不是一个好的实践方法。而使用常数-在表 T511K 中创建名叫 ZNUM 的常数,并使 NUM=KZNUM(把 number 字段的值赋给常数 ZNUM)。因为常数是根据日期有效的,而规则不是,这样当数值需要改变时使你更灵活地改变。
你可以设置工资类型的头的字段等于另外一个工资类型中对应的字段-AMT=E9XXX 是使 amount 等于RT工资类型 9XXX 中的 amount 字段。当且仅当 IT 中的 9XXX 小于 amount 域的值时,AMT<9XXX 将 amount域设置为 IT 中的 9XXX(取两个值中的较小者)。
最后,你可以使用值上的算法。RTE*100 是 rate 字段的内容乘以100并把结果保存回 rate 字段。AMT*KZNUM 是 amount 字段被常数 ZNUM 中的值相乘,ZNUM 中的值可以是任意数。

4.0.1.10 ADDWT

至此,我们已经使用 MULTI,DIVID,AMT,RTE 和 NUM 设置我们的工资类型的值。ADDWT 将头中的工资类型不改变值或改变值后移到表。ADDWTE* 是不改变工资类型的数值加到 RT 中。ADDWTE9XXX 将它重命名为 9XXX 然后转移到 RT 中。用F1帮助文档将告诉你所有这些你能转移到的表。

4.0.1.11 ELIMI and RESET

裂片是用于将工资类型连接到工资中表的属性。有时你在做某个规则时不得不移除某个裂片-这就是 ELIMI 做的(ELIMInate 裂片)。在删除一个工资类型的裂片后,你可以使用 RESET 重新保存他们。一般来说,你应该避免删除裂片-因为这可能导致比率和报表出错。所以使用和测试时要小心。

4.0.1.12 FILLF

这个简单的操作符能重置 wagetype 域的值。例如,FILLF A 是在规则第一次被调用时将 amount 重置回原来的值。
这里你将把把所有这些操作符集合在一起在基本工资的基础上计算固定比例的扣除数(有几种方法计算,这里仅介绍一种)。假设基础工资在 IT 值,比率作为一个完整的数保存在常数 ZNUM 中,你制定了一个规则包含了工资类型和基础工资,在这个例子中用‘OBAS’。扣除的部分将是 4XXX。所以,在这个模式中我们将在规则 Z001 中执行一个 PIT:PIT Z001。在规则中:

  • 工资类型:ADDWT(如果它不是 OBAS,我们就不改变它)。
  • 规则类型OBAS:ADDWT,NUM=KZNUM,MULTI ANA, AMT/-100, ADDWT 4XXX(将 OBAS 传到输出表,这样我们就不会丢失它了,设置 number 域等于常数 ZNUM,用 amount 乘以 number,因为我们将百分比作为一个完整的数保存并且我们希望这个扣除数是负数,所以用-100除 amount,并把结果作为工资类型 4XXX 保存。

4.0.2 决策

很多次我们只需在某种条件存在时执行某个动作-比如,我们只想为某种员工计算扣除数 4XXX。在这种情况下,我们必须选择什么时候执行这个动作。
Decisions 将结果放入称为变量的键中-这就象一个带有通配符的描述。如果我们把公司代码放在一个变量键只,那么含有1234的行将为公司1234执行,含有2*的行将为任何以2打头的公司执行,而****将为所有任意匹配的公司执行。

4.0.2.1 OUTWP

这个操作符使我们在基于工资中的 WPBP 表中的各种数据元素做出决策-粗略地只有信息类型0和1数据。通过F1帮助文档,可以看到许多的元素。例如,通过 OUTWP COMPY 可以查看公司代码,它把 company code 域的内容放到变量键中。

4.0.2.2 VAKEY

像 OUTWP 这个操作符是把某个数据放在变量键中,可以看F1帮助查看各种可能性。

4.0.2.3 NUM, RTE and AMT

作为 decisions,他们又出现在这里。如果用 AMT?0,它将 amount 域的值与0比较然后返回>,<,或=.你也可以用上面提到的概念将它与一个常量或另外一个工资类型进行比较。

4.0.2.4 VWTCL

这个操作符为当前的工资类型返回某个处理类的值。例如,VWTCL 93 将处理类93的值放在变量键里。规则X023 是如何使用处理类值的一个好例子。


5.0 示例

在前面的例子中,我们给每个基本工资类型 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。
    正如前面提到的,这仅仅是隔靴搔痒。当配置薪酬时你不能仅关注某个问题,而应该理解所有的部分并力求最好的配置。你有许多的方法组合函数,操作符,处理类和常数等。SAP已经为薪酬创建了灵活的功能强大的配置模型。当使用正确时,许多工作就已经完成好了,当使用不正确时,发现它会引起困惑并且导致不稳定。所以要好好的测试你的配置并以文档形式记录你的配置。
    下面是对模式CN28的部分简单阐述:
BLOCK  BEG                        *Payroll schema:CHINA
COM                               工资模式:中国标准
COPY   XIN0                       初始化工资
COPY   CNBD                       编辑基本数据(中国)
IF     SPRN                       特别处理运行??非周期性支付?
RERSH  IT                         删除IT(删除内表)
ENDIF                             到:特别处理运行?
COPY  XLR0                        导入上一期工资结果
COPY  CNT0                        工资总额(读入时间数据)
COPY CNAP

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,392评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,258评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,417评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,992评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,930评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,199评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,652评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,327评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,463评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,382评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,432评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,118评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,704评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,787评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,999评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,476评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,057评论 2 341