hr开发小结
HR信息类型增强
信息类型是SAPHR模块数据单元,用于对人员数据的记录和维护,是HR的基础。信息类型按照其创建方式的不同可以分为:人事信息类型、组织信息类型。信息类型数据的维护主要在事物码PA30、PA40、po10、P013中进行。信息类型的创建
信息类型的创建涉及到的两个事务码:PM01,PPCI。分别对应人事主数据与组织、职位主数据的增强。
人事信息类型在生成时,系统会自动生成201*、1000、3000等屏幕,以及相应的类,和PR模块。其中201*屏幕是我们在PA30中(对人事信息类型来说)编辑或查看时看到的屏幕,一般做好信息类型增强后需要对201*屏进行修改,像设置下拉框、设置单选按钮组、制作树型结构F4等;3000屏为列表屏幕,是我们点击概览时所看到的屏幕。PR模块用于信息类型的显示(具体的我也不清楚)。
组织信息或职位信息类型,有时需要创建7000屏,也就是我们常见的PPOSE屏,这个屏幕可以在生成信息类型时直接在PPCI里生成(点击菜单栏中,信息类型创建子屏幕即可,当然逻辑流要与201*屏的逻辑流保持一致)。人事信息类型的创建创建信息类型
HR本身提供一些常用的信息类型,但当有特殊的需求时需要进行信息类型的创建。自己创建的信息类型编码是以9开头的四位数字,其他数字开头的信息类型为系统自带的。像9025、9195、9135等。创建步骤如下(以9001为例):TCODEPM01
PM01》创建IT》输入9001》选择PS结构》编辑,进入ps9001编辑界面。维护后点击;
信息类型增强时,需要创建一个结构,用于说明该信息类型有哪些字段,结构的名称格式为:”PS+信息类型”。实例结构如下:保存,激活后返回PM01界面,点击生成对象,同前。维护信息类型特征:
系统会按照你提供的字段生成201*屏、3000屏;其中201*屏为我们在PA30中进行维护(查看)时展现出的屏幕,3000屏即列表屏,当我们选择概览时的所看到屏幕。
详细设置如下:(我们可以通过SM30维护V_T582A中信息从而实现对信息类型的属性的维护)
维护完保存,进入PA30,效果如下:
信息类型自动生成完成。由于屏幕是自动生成,屏幕中的所有字段均由结构中的字段生成。所以需要对屏幕进行修改。(像:屏幕字段描述的修改、F4帮助、下拉列表等)增强单个屏幕当某些信息类型的字段不能满足当前的业务需求时,需要对这个信息类型进行增强。单个屏幕增强的步骤如下(以信息类型0529为例)。PM01》单个屏》信息类型号0529》客户包含》编辑,这时进入CI_P0529结构的创建。
CI_0529结构中的字段即为需要在屏幕中增强的附加字段。CI_0529结构如下:
创建完成后,保存,激活,回到PM01初始界面,点击生成对象,这时系统会给出一系列提示消息框,不要理会,点确定直到不出现。这时相关的屏幕、结构、表都已经创建完毕,但要在前台界面显示出来还需做一定的设置。
PM01》分配增强》新条目。
维护好之后,保存,退出,现在可在事务码PA30里看到效果了。注:屏幕自动生成的字段的输入/输出以及可修改性是可以在屏幕修正(v_t588m/t588m)里进行设置。组织职位信息类型的创建创建信息类型
组织信息信类型的创建TCODE为:PPCI
信息类型以9开头,最好与人事的信息类型编码区分开。
首先要创建HRIXXXX结构。SE11根据业务字段进行HRI结构的创建.(在创建组织信息类型时要,收集好需求,避免遗漏字段。组织信息类型后期删除比较麻烦。)创建信息类型PPCI进行检查生成信息类型
维护信息类型视图(SM30T777I),维护时间限制和信息类型类型组织职位中子屏幕(7000)屏幕的创建
进入PPCI,填写信息类型,点击创建,点击菜单栏中的“信息类型”,选择“创建子屏幕”。
创建完子屏幕后,对新生成屏幕的逻辑流及屏幕进行修改。HR出口(CMOD)增强HR出口增强中常用的方法有:
1、cl_hr_pnnnn_type_cast=>prelp_to_pnnnn“获取数据2、cl_hr_pnnnn_type_cast=>pnnnn_to_prelp“写入数据HR中常用的BADI
1、HRBAS00INFTY“作用于OM2、HRPAD00INFTY“作用于PA原始字段描述修改增强1、CMODHR程序开发
HR程序开发如其他模块开发有些不同。主要是因为HR模块中引入了信息类型、逻辑数据库和宏。2.1逻辑数据库
HR中常用的逻辑数据库为:PNP、PCH、PNPCE、PAP,其中PNP及PCH用的最多。PNP用于获取人员信息,PCH用于获取组织信息。2.2Provide
PROVIDE常用于HR的取数中。
一般provide和endprovide用于处理时间限制是1和2的infotype.会一笔一笔的循环该infotype.provideendprovide会将符合条件的记录进行分段,因此会改变pnnnn-begda或pnnnn-endda的值,使用时要注意。2.3HR报表常用的宏
1、rp_provide_from_last用于获取信息类型中的最新的一笔数据2、rp_provide_from_frst用法与rp_provide_from_last相同,用于获取信息类型中的第一笔数据与HR相关的FM
1、RH_STRUC_GET用于获取组织单元下的职位及人员信息2、CU_READ_RGDIR薪资报表中用于获取期间
3、PYXX_READ_PAYROLL_RESULT根据索引号得到工资数一般与CU_READ_RGDIR一起用
4、RP_LAST_DAY_OF_MONTHS获取一个月的最后一天5、HR_GET_TIME_BETWEEN_DATES获取日期年月差6、RH_OBJID_REQUEST获取组织对象
7、HR_HCP_READ_OBJECT_TEXT获取对象文本8、RP_HIRE_FIRE获取0041中的日期9、HR_AUPBS_AGE计算员工年龄
扩展阅读:SAP HR开发总结(1)
一、系统中提供了标准的报表
某些报表无法通过菜单路径或常规报告选择来访问。而是必须通过选择菜单:系统→服务→报告来进行访问。在初始屏幕中,您可以输入RP*并使用后续报告来显示所有报表的概览。可通过使用以下命名约定来输入更多特定的通用搜索标准:RPL*RPS*RPC*RPU*RPT*RPAPL*RPI*RH*清单统计工资核算报表实用程序报表时间管理报表申请人数据报表用于创建批输入会话的报表人事计划报表
EXAMPLE_PNP_GET_PAYROLL,如果没有写过Payrollresport的人,参考这个Report。PAY99_RESULT:Structureforpayrollresult,其中的EVP在设计工资单的Rule时可能就用到。
二、PHF、SI、TAX相关的报表,可以在pc28中找到
PC28SAPmenuSubsequentActivitiesPerpayrollperiodReporting
通过中国的TAX报表,看看如何处理payrollresult.
(1)LDB
(2)Reportcatalog,使用后可以自动带出选择屏幕的一部分(3)Unicodechecksactive,要激活(4)使用了getpernr,这样的event.,getpernr是一个循环操作,界面上选择
的所有员工,都会依次循环。每一次的循环,都会找到当前员工的infotype数据,找哪些infotype中的数据,是在infotypes中的声明中决定的。
(5)取得payrollresult的function:CU_READ_RGDIR,将payrollresult
从cluster表中取出来。
(6)对于Cluster表,可以如下使用
TABLES:PERNR,PCL1,PCL2,PC260.(7)
三、标准报表举例
(1)HTWLINF0
可以看到员工的所有维护过的信息类型,包括几条记录,分别的起止时间,最后修改的时间、修改人等,如果有子类型,还会按照子类型来区分;更方便的是,双击每条记录,都可以跳到PA20中查看详细的信息。
(2)EXAMPLE_PNP_GET_PAYROLL
如果没有写过Payrollresport的人,参考这个Report
REPORTZEXAMPLE_PNP_GET_PAYROLL.
tables:pernr,pyorgscreen,pytimescreen.nodes:payrolltypepay99_result.tables:t512t.
data:wa_rtlikelineofpayroll-inter-rt.data:wa_crtlikelineofpayroll-inter-crt.data:wa_wpbplikelineofpayroll-inter-wpbp.data:g_result_countertypei.
data:mylistlikepc261OCCURS0.data:wa_mylistlikelineofmylist.
data:paytypereftocl_pay."这个类有两个方法READ_RESULT,和WRITE_RESULTinitialization.
getpernr.
write:/"正在处理的人员编号为:",pernr-pernr.g_result_counter=0.createobjectpay.
callmethodpay->read_resultimportinglist=mylist."将结果输出到pc261结构中。Clusterdirectory
"CALLMETHODpay->write_resultEXPORTINGlist=mylist."感觉这一句可有可无?
loopatmylistintowa_mylist."循环访问获得的结果。write:/wa_mylist.endloop.
getpayroll.
g_result_counter=g_result_counter+1.
write:/"sequencenumber=",payroll-evp-seqnr.write:"Inperiod=",payroll-inter-versc-inper.write:"forperiod=",payroll-inter-versc-fpper.write:"Paydate=",payroll-inter-versc-paydt.
write:/"WBPB拆分---begin".
loopatpayroll-inter-wpbpintowa_wpbp.
write:/"PersonelArea=",wa_wpbp-werks,"Subarea=",wa_wpbp-btrtl.endloop.
write:/"WBPB拆分---end".skip1.
write:/"RT表中的数据--begin".loopatpayroll-inter-rtintowa_rt.
selectsingle*fromt512twheresprsl=sy-languandmolga=payroll-inter-versc-molgaandlgart=wa_rt-lgart.
write:/wa_rt-lgart,t512t-lgtxt,wa_rt-betrgcurrencypayroll-inter-versc-waers,payroll-inter-versc-waers.endloop.
write:/"RT表中的数据--end".write:/"CRT表中的数据--begin".
loopatpayroll-inter-crtintowa_crt.
selectsingle*fromt512twheresprsl=sy-languandmolga=payroll-inter-versc-molgaandlgart=wa_crt-lgart.
write:/wa_crt-lgart,t512t-lgtxt,wa_crt-betrgcurrencypayroll-inter-versc-waers,payroll-inter-versc-waers.endloop.
write:/"CRT表中的数据--end".
getpernrlate.
skip.
ifg_result_counter=0.
write:/"未找到结果for",pernr-pernr.else.
write:/"共找到:",g_result_counter,"条结果for",pernr-pernr.endif.
(3)PAY99_RESULT结构
Structureforpayrollresult,其中的EVP在设计工资单的Rule时可能就用到。(4)2
四、自定义报表举例五、获得员工的雇佣日期
data:hire_datelikep0001-ENDDA.
CALLFUNCTION"RP_GET_HIRE_DATE"EXPORTING
PERSNR="28000021"CHECK_INFOTYPES="0000"
IMPORTING
HIREDATE=hire_date.
write:/hire_date.
-4556-1-1.html
HR信息类型创建$_"V#W/W4d.d;@
9@;E0R9a7^9s/x)l-c8X
锁定人员编号
CALLFUNCTION"BAPI_EMPLOYEE_DEQUEUE"6~,i$p:r(`0^!^0x
:u)@-W&q"p%a,o
EXPORTING%@5F*Kk+J-n2C(a5S,b*J
!Q8q"U#W;y!a8`8h
NUMBER=
IMPORTING
$]/n5Bc!~6B/c
RETURN=
*^:r,`.B6c*`%C4r8h#z
EXCEPTIONS+n4w(U7D;a#m)p
)R#E)U;r)y"L*x#}:g%N
OTHERS=01."A2j(U(f"Y/d"l+I
3C-M+D3~*^9N&q
创建信息类型1Y!~7N#K2?7u.o4|
4e"C3e5C1p*{"?+{
CALLFUNCTION"HR_INFOTYPE_OPERATION";Q.s)}7g#I-q
EXPORTING5U4F%w8[/Vg8V7e+e
INFTY=
"v&q7q;}7R2N*A
SUBTYPE=&p({5`+P)z7n&z2Ov
NUMBER=6V&Y;v"Y-m6V
VALIDITYBEGIN=
RECORD=(V,M/n+t:s2R%r%R&\\.{1C-C+L)x,{!U3vh
OPERATION="INS"
#a:L!x/E"S2BA-G7g$X1U
NOCOMMIT="X"
(j-~3Y.n2@*y:s6?+u-b(C
DIALOG_MODE="0"
IMPORTING
RETURN=+a8~)B2L$O0|
KEY=6q6F3a3o*{1L7n/w;`
1EF*B$u-v*|8o!D-a%c
EXCEPTIONS#P5[H4n#T#D
OTHERS=0.1c#T0U)~6N+C!D8O8e.s
IFL_RETURNISINITIAL.
P_TYPE="S".
,T*Z:H(q"n0e"H&s#u(G
S_MSG="信息类型创建成功".#k9J1h$O:r)m-ay
(I"Z6s;P-F2T
COMMITWORK.$X:E2@+M,`#~
解除锁定.D"D+@;V4x"f.]
CALLFUNCTION"BAPI_EMPLOYEE_DEQUEUE"+]%k1yr:E/P&V$u
EXPORTING
(g"r3f)`:]*`-^)j
NUMBER=6E9H7@8X"~:Z.?-m:e+QA7A
IMPORTING8p"OM0X5r0^4]
RETURN=
EXCEPTIONS:X;C9z*i!o5j:b7c8Z
OTHERS=01.
友情提示:本文中关于《hr开发小结》给出的范例仅供您参考拓展思维使用,hr开发小结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。