SAP_SCHEMA详解_第1页
SAP_SCHEMA详解_第2页
SAP_SCHEMA详解_第3页
SAP_SCHEMA详解_第4页
SAP_SCHEMA详解_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SAP HR Schema 详解(一)一、Payroll schema基础1、模式和函数    在SAP薪酬中,函数为薪酬计算提供了逻辑公式。函数执行一般的过程如在给定的薪资方法上计算薪酬税,从特定的信息类型中读取工资类型,计算奖金,并保存薪酬计算的结果。SAP薪酬系统中有几十个函数,有些是与国家相关的而有些不是。每个函数在PE04中定义并有文档;在4.5版本以上可以通过PDSY查看函数文档,在早期的版本可以通过RPDSYS00查看。    在SAP HR术语中,一个薪酬函数与一个ABAP函数是不一样的。薪酬函数也包含ABAP代码,但

2、它不像ABAP函数那样执行。薪酬函数在模式中被薪酬驱动程序(假定为PRCALCUO)所执行。模式是一系列函数以某种顺序执行的集合每个函数执行后把结果传给下一个函数。模式可以通过PE01被创建和编辑,但是被保存在表T52C0(SAP标准模式)和表T52C1(用户创建的模式和修改SAP标准模式)。薪酬驱动读取T52C0/T52C1表中的行并依次执行函数。    我们如何跳过保存在表中的薪酬函数而执行ABAP代码来完成工作呢?在t-code PE04中可以看到ABPA代码对应的每个函数。在模式中函数名与ABAP Form有关联,如薪酬函数WPBP映射到ABAP form

3、 fuwpbp;函数USTAX映射到form fuustax。所以当薪酬驱动执行模式时,它从模式中取得函数名,然后在名称前加上fu,然后执行perform语句。这是一个很简单巧妙的设计。 2、工资类型(wage type)即工资项在很大程度上,工资类型只是包含一些数据比率,数字 和/或数量。但是更详细的,一个工资类型有几十个属性用来控制它是如何被操作和处理的。但是在最后,它在薪酬结果数据库中作为一个对象保存成比率,数字和/或数量。    工资类型大多情况下用来保存一个员工薪水中收入的数量、扣除的数额和税收数额。员工的基本工资保存在一个工资类型中,作为一般

4、用途扣除的费用保存在一个工资类型中,他们应征税的工资和税保存在工资类型中。作为员工工资的基本数据元素工资类型,也同样映射到FI/CO账户以记录工资上的借贷,并报告在W-2和ERP论坛欢迎您税务表格上。    工资类型也保存统计数据如带薪时期内工作的小时数,在过去的六个月平均的周工资,或分红计算的工资的数量。工资类型保存在几个表中,但是主要是T512W。将有更多的时间花在T512W表的各个方面。 (重要的视图包括:V_512W_D,V_512W_O,V_512W_B等。)工资类型有三类:模型、技术和用户。1)模型工资类型是SAP给客户用来作为向导创建他们自

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

6、  我们的一个长期客户曾经创建了一个保存界面的信息叫“薪水规则”!那些有经验的SAP薪水分析者和顾问立刻看成其中的双层含义和幽默。规则包含SAP薪水中大多基本的逻辑。其中模式是函数的集合,规则是操作符的集合。一个操作符是一个非常基本的被用来操作工资类型的逻辑。例如,操作符MULTI是乘以工资类型中的数字和比率以决定付给员工工资的数目。操作符OUTWP获取一个员工特定的数据并决定如何去处理它。比如,如果工作合同在信息类型1中是UA,那么执行x,如果是UB,执行y,ERP论坛欢迎您的执行z。可以通过t-code PE04和PDSY查看操作符,也可以通过PE02编辑操作符。函数对应的ABA

7、P form是以fu开始,操作符对应的ABAP form是以op开始。比如,操作符MULTI,将有ABAP form opmulti。同模式一样,规则保存在表中,规则被保存在表T 52C5中。有多年计算机系统工作经验的SAP高级顾问们常在发现工资规则和编程大型机汇编语言的类似性。然而当操作符被正确使用时功能强大,但这没有什么好神奇的。希望我们这个简短的介绍是有意义的。下一篇SAP工资技术文档中我们将更深入探讨用在SAP的工资模式中的公共函数。函数最多能有4个参数,SAP文档将告诉你每个参数的用法。通过PDSY和PE04能看到每个函数和操作符。COPY这与ABAP和ERP论坛欢迎您编程语言中的i

8、nclude相同。当工资执行时,Copy是插入包含在参数1中的模式。好的模式配置风格和好的编程风格是一样的将公共使用的逻辑放在include中,这样能被用于多个地方,同时也增加可读性。BLOCK在4.0版中,模式日志是放在树状结构中的。BLOCK BEG开始一个节点,BLOCK END结束一个节点。在BEG和END之间是包含在节点中。BLOCK BEG/END能被多层嵌套。同时,适当的放置BLOCK BEG/END,使日志更方便读。IF/ELSE/ENDIF对IF函数,有2种方法说明真/假条件。SAP有几个内置的条件可以在参数2(模式U000中的IF NAMC)中使用。你同时也能在参数1中说明

9、一个定制的规则,并且在规则中执行你任意想要的逻辑。在规则中,使用操作符SCOND为IF函数设置真/假转换。Pxxxx工资驱动和模式从许多信息类型中读取数据并处理数据。一般是以P和四位数字命名的信息类型来执行。所以,P0014读取并处理从信息类型14来的数据,P0168从信息类型168处理人生保险计划,P2010从信息类型2010中读取附加工资。许多函数,但并非所有的函数,允许你用工资规则进一步精练此过程。例如,模式UAP0表明P0014被规则U011处理过。函数P0168是没有使用规则的函数之一(在一些老的版本中有使用),而是在参数中说明操作符(见模式UBE1)。有些信息类型在工资中被使用,但

10、没有Pxxx函数。这些包括信息类型207,208,209和210,他们都在主税款函数USTAX中被读取并处理。信息类型0,1,7和8被函数WPBP处理。PITPIT是Process Input Table的首字母简写,它也是工资中最常用功能最强大的函数之一。当工资类型被Pxxx函数读入工资时,他们被保存在称为IT(Input Table)的内部表中。PIT通过内部表循环,并应用包含规则中的逻辑。所以对于IT中的每个工资类型,它都将从规则中申请一个逻辑。PIT的目标是将工资类型从IT中移出,移入到RT(Result Table)中。大多数情况下,被PIT调用的规则会改变工资类型的一些属性然后把他

11、们从IT中转移到RT中。工资类型也能留在IT中并移到ERP论坛欢迎您表中去。在说明操作符是如何工作的时候我们再解释这种可能性。sPIT的一个例子是在模式UAL0中PIT X023。当工资驱动到达模式的这点时,PIT将遍历IT中的每个工资类型,规则X023告诉它做什么事是取决于工资类型在过程类20中的值。值为3,4,5,6,9和B使将把工资类型移到RT中,而1,7和8是将工资类型留在IT中,值2没有任何操作,但本质上其实是将工资类型从IT中清除。PRTPRT是Process Results Table的缩写。虽然大多数工资类型处理发生在PIT,也有几种情况当你想处理工资类型时已经被转移到RT中。

12、PRT工作原理同PIT,通过RT循环,同时从规则中申请逻辑。在模式UTX0中,PRT被用来处理已经在RT中的税款工资类型。函数UTX0(US 税款函数)直接返回它的工资类型给RT,所以任何一个在税款工资类型中的处理都要PRT函数来完成。ACTIOACTI0函数处理工资规则,但是它不通过工资类型表来循环,但它在不同的工作地点/基础工资记录间循环,并挨个处理它们的规则。例如,假设员工在当前带薪时期有2个信息类型1个记录,ACTI0将有2条记录要循环。UTX0模式是ACTI0使用规则UWH1计算带薪时期工作的小时数的一个好的例子。 像函数一样,操作符的帮助文档也能通过PDSY和PE04找到

13、。操作符能被放在2个不同的组他们分布用来决策和操作工资类型。有些操作符刚好适用这2个组。操作工资类型在规则中使用工资类型就好像在ABAP中使用内表。函数通过把表的每一行一次性都放在头空间来循环调用规则(PIT,PRT,P0014或ERP论坛欢迎您)。在头空间使用工资类型,完成以后在把它加回表中。 MULTI, DIVID这些操作符让你将工资类型中的两个字段相乘并将结果保存在第三个字段中。能使用的字段是AMT,RTE和NUM。MULTI RNA将用一个数乘以比率并将结果保存在amount字段。DIVID ANA将用一个数除amount字段并将结果保存回amount字段。NUM, RTE

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

15、t;9XXX 将amount域设置为IT中的9XXX(取两个值中的较小者)最后,你可以使用值上的算法。RTE*100是rate字段的内容乘以100并把结果保存回rate字段。AMT*KZNUM是amount字段被常数ZNUM中的值相乘,ZNUM中的值可以是任意数。ADDWT至此,我们已经使用MULTI,DIVID,AMT,RTE和NUM设置我们的工资类型的值。ADDWT将头中的工资类型不改变值或改变值后移到ERP论坛欢迎您的表。ADDWTE*是不改变工资类型的数值加到RT中。ADDWTE9XXX将它重命名为9XXX然后转移到RT中。用F1帮助文档将告诉你所有这些你能转移到的表。ELIMI an

16、d RESET裂片是用于将工资类型连接到工资中ERP论坛欢迎您表的属性。有时你在做某个规则时不得不移除某个裂片这就是ELIMI做的(ELIMInate 裂片)。在删除一个工资类型的裂片后,你可以使用RESET重新保存他们。一般来说,你应该避免删除裂片因为这可能导致比率和报表出错。所以使用和测试时要小心。FILLF这个简单的操作符能重置wagetype域的值。例如,FILLF A是在规则第一次被调用时将amount重置回原来的值。这里你将把把所有这些操作符集合在一起在基本工资的基础上计算固定比例的扣除数(有几种方法计算,这里仅介绍一种)。假设基础工资在IT值,比率作为一个完整的数保存在常数ZNU

17、M中,你制定了一个规则包含了工资类型*和基础工资,在这个例子中用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,并把结果作为工资类型4X

18、XX保存。决策很多次我们只需在某种条件存在时执行某个动作比如,我们只想为某种员工计算扣除数4XXX。在这种情况下,我们必须选择什么时候执行这个动作。Decisions将结果放入称为变量的键中这就象一个带有通配符的描述。如果我们把公司代码放在一个变量键只,那么含有1234的行将为公司1234执行,含有2*的行将为任何以2打头的公司执行,而*将为所有任意匹配的公司执行。OUTWP这个操作符使我们在基于工资中的WPBP表中的各种数据元素做出决策粗略地只有信息类型0和1数据。通过F1帮助文档,可以看到许多的元素。例如,通过OUTWP COMPY可以查看公司代码,它把company code域的内容放到

19、变量键中。VAKEY像OUTWP这个操作符是把某个数据放在变量键中,可以看F1帮助查看各种可能性。NUM, RTE and AMT作为decisions,他们又出现在这里。如果用AMT?0,它将amount域的值与0比较然后返回>,<,或=.你也可以用上面提到的概念将它与一个常量或另外一个工资类型进行比较。VWTCL这个操作符为当前的工资类型返回某个处理类的值。例如,VWTCL 93将处理类93的值放在变量键里。规则X023是如何使用处理类值的一个好例子。二、Payroll schema基础(二)在前面的例子中,我们给每个基本工资类型OBAS的员工计算扣除数4XXX。使用OUTWP

20、你可以决定只计算在某个人事范围/子范围或员工子组的员工。假设你想计算在信息类型14或15已经进入工资类型4XXX的员工。假设已经进入工资类型,信息类型的number域也有要求的数据,你需要做以下步骤:    工资类型OBAS:ADDWT *, NUM=4XXX, 在NUM?0做选择,    IF:如果是(等于),就什么也不做,    ELSE:否则(_*条件)执行NUM=KZNUM,MULTI ANA, AMT/-100, ADDWT 4XXX.这取决于在这点你的工资类型裂片是如何组织的,你可能想在NUM

21、=4XXX之前ELIMI R,在ADDWT 4XXX之前RESET R。     正如前面提到的,这仅仅是隔靴搔痒。当配置薪酬时你不能仅关注某个问题,而应该理解所有的部分并力求最好的配置。你有许多的方法组合函数,操作符,处理类和常数等。SAP已经为薪酬创建了灵活的功能强大的配置模型。当使用正确时,许多工作就已经完成好了,当使用不正确时,发现它会引起困惑并且导致不稳定。所以要好好的测试你的配置并以文档形式记录你的配置。 下面是对模式CN28的部分简单阐述: BLOCK  BEG    &

22、#160;                   *Payroll schema:CHINACOM                           

23、    工资模式:中国标准COPY   XIN0                       初始化工资COPY   CNBD               &#

24、160;      编辑基本数据(中国)IF             SPRN                特别处理运行?非周期性支付?RERSH         IT  

25、60;               删除IT(删除内表)ENDIF                              到:特别处理运行?COPY  XL

26、R0                       导入上一期工资结果COPY  CNT0                       工资总额(读入时

27、间数据)COPYCNAP                       导入扣减(0014、0015导入)COPY  CNAL                    

28、60;  确定每个月的扣减因子COPY  CNNG                       净支付(净工资)计算(中国)COPY  XNA0                 &

29、#160;     累计净支付的值COPY  XRR0                       回溯(反算)COPY  XNN0               

30、0;       净支付/扣减 和 传输COPY  CNEN                       最后处理BLOCK END               

31、;         *中国 工资核算 函数(Function)BLOCK描述:BLOCK函数允许你构造一个工资核算过程日志。在开始和结束标记点中把工资函数按语义顺序聚集在一起,且他们出现在日志中的一个普通节点。语法:函数       参数1          参数2        

32、; 参数3         参数4 FUNCTION       BLOCK    函数名称参数1            BEG      开始一个语义块         

33、;           END      结束一个语义块参数2                      目前无该参数参数3         

34、0;            目前无该参数参数4                      目前无该参数说明:BLOCK函数可以被嵌套,在一个子模式中,一个结束块必须对应一个开始块模式XIN0     初始化工资数据(国际)人员计算模式重要的

35、信息/事件(开关),哪一些有关工资核算的进一步过程,工资运行开始在这个子模式中指定。结构:子模式由下述步骤组成:1、  指定程序类型(工资核算或评估)2、  设置数据库更新开关(YES/NO)3、  必需的信息类型(导入仅仅是schema所需的主数据信息类型)4、  导入所有时间信息类型5、  指定检查控制记录PA03(测试或激活生产)参数1  参数2  参数3  参数4  COM          

36、60;                      注释:工资发放核算初始化BLOCK BEG                         

37、; 块开始:PGM   ABR                          工资发放的程序类型UPD   YES                

38、               更新数据库(是/否)OPT   INFT                              只使用信息类型的读取

39、OPT   TIME                              输入全部的时间信息类型CHECK        ABR       &

40、#160;           *  核查PA03(生产机去掉*)BLOCK END块结束函数PGM :识别一个工资发放的程序类型PGM函数给工资核算驱动提供一个工资核算的程序类型信息不同的Schema允许薪资驱动在不同的时间段里去执行不同的程序,这些工资和评估程序哪一个在工资核算之后运行。这两个类型说明程序现有的工资数据如果一个Schema不包含PGM函数,程序是假设(缺省)一个发薪程序。如果一个schema包含多个PGM函数,那么最后一个是有效的。语法:参数1ABR &#

41、160;  工资核算AUS    评估MIX    工资/评估SP     特殊运行,这个特殊的仅仅适用于西班牙和奥地利国家的版本TRN   遗留数据传输 例:如果你想去创建一个工资的模式PGM  (参数1)ABRUPD:执行数据库更新函数UPD控制在运行工资核算后产生的结果是否保存到数据库或仅仅在当前显示。参数1作为一个开关在一个schema之初设置语法:Function UPD参数1NO  不更新数据库  

42、60;   YES  更新数据库参数2参数3参数4例:如果你想去测试一个工资核素且结果不被更新到数据库UPD  (参数1)NO OPT(Options):你可以使用OPT函数去为工资导入信息类型语法:参数1:BSI     已过时        COPL   集成成本计划      DEC    小时工资>2位数 

43、;       ENQ    不再使用        INFT    必需的信息类型(导入仅仅是schema所需的主数据信息类型)        NRC     无回溯核算        TIME   

44、; 读时间信息类型必需入口:参数1注意:如果你想在工资核算中去处理时间管理数据(如:改变日程表,缺勤等),在你的schema中OPT函数必需在参数1中包含TIME。 CHECK:在选择雇员之前/之后核查。函数CHECK完成两个任务1)      按照schema类型检查规定的时间(期间)2)      执行一个整体的检查:模式CNBD 中国基础数据工资子模式,子模式被主模式调用该子模式读取国际总工资计算(核算)所需的全部基础数据(主数据),基础数据接着被打印到工资日志(如果progra

45、m option=ON).结构:该子模式由以下主要步骤组成:1、  读取员工姓名(P0001-ENAME)2、  从以下信息类型中读有关工作中心和基本工资数据a)       人事事件P0000,b)      组织分配P0001,c)      计划工作时间P0007d)      基本工资P0008e)     &

46、#160; 工资维护P0052和f)       成本分配P00273、  检查所需的所有主数据可以被工资驱动的,否则程序被取消。4、  在工资日志中打印上述基本数据。FUNCTIO   参数1  参数2  参数3  参数4   D    COM              

47、60;                            编辑基本数据    BLOCK     BEG            

48、0;                   编辑基本数据    ENAME                          

49、60;             从EE(Infotype0001)中确定名字WPBP                                 

50、         读取工作中心和基础工资数据P0014      CN14   GEN   NOAB             为P0014分割WPBP和设置APZNRDATES           &

51、#160;                             读取详细时间数据IF                 SPRN  

52、60;                     判读是否为非周期工资运行?ELSE                          

53、60;                周期性工资运行?P0532                                &

54、#160;          读取(5)保险数据P0530                                     

55、0;     读取公积金数据P0533                                           读取人事档案中的

56、服务费ENDIF                                          结束IF语句块P0531     

57、60;                                     读取所得税数据GON           

58、0;                                如果数据完整,继续BLOCK    END            

59、60;                    结束块-  A previous employer table  VAG 先前雇主表C Cumulation table         CRT   累积表D difference table         DT    差异表E results table            RT    结果表G Gross results table  

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论