中天建设招标网站,网站展示模板,用微软雅黑做网站可以吗,介绍几个网站导读
权限:HCM模块中有普通权限和结构化权限。普通权限就是PFCG的权限#xff0c;结构化权限就是按照部门ID授权#xff0c;颗粒度更细#xff0c;对分工明细化的单位尤其重要#xff0c;今天遇到的问题就是结构化权限的问题。
作者#xff1a;vivi#xff0c;来源结构化权限就是按照部门ID授权颗粒度更细对分工明细化的单位尤其重要今天遇到的问题就是结构化权限的问题。
作者vivi来源osinnovation
一、 故事背景 客户的一个报表执行完以后出现如下的错误提示其实看到这个错误就是权限的问题但是苦难点事如何找到这98人这就是问题所在。可能很多人会说为什么不在初始化加上pnp_sw_skip_pernr不就不检查权限拉吗其实我们要明白这个参数Y和N的含义如果设置是N,逻辑数据库不会走对应的权限检查GET PERNR就能获取到员工的数据需要你二次判断权限控制如果设置成Y就是逻辑数据去判断权限默认就是Y这个Y其实就会去校验你报表申明时候下面的信息类型其中一个缺少权限系统就会提示nsufficient authorization, no.skipped personnel如我0015缺少其中一条数据的权限。get pernr这个地方就无法抓取到员工的数据。 二、 解决方案 其实SAP提供一个宏是可以把错误的人员抓取过来的pnp_get_auth_skipped_pernrs这个必须发到END-OF-SELECTION后面通过这个宏可以把错误员工的编号写入到内表中然后在把这些人员编号打印出来就能知道那些员工出现的问题。 DATA: lt_skipped_pernrs TYPE hrahq_pernr_table, ls_skipped_pernrs LIKE LINE OF lt_skipped_pernrs. pnp_get_auth_skipped_pernrs lt_skipped_pernrs. or one of these: PNPCE: perform mac_get_auth_skipped_pernrs in program sapdbpnpce changing lt_skipped_pernrs. PNP: perform mac_get_auth_skipped_pernrs in program sapdbpnp changing lt_skipped_pernrs. IF lt_skipped_pernrs IS NOT INITIAL. WRITE:/ List of skipped personnel no:. LOOP AT lt_skipped_pernrs INTO ls_skipped_pernrs. WRITE:/3 ls_skipped_pernrs-pernr. ENDLOOP. ENDIF.
三、 什么情况会出现这样的问题 其实原来也写过一篇文章是介绍insufficient authorization, no.skipped personnel的原因的今天我总结下希望对大家有帮助。
在这我们首先了解下T77S0的ORGPD这个参数会四个值具体解释可以看note339367 Setting 1: If an organizational unit is assigned in infotype 0001, the system checks against this organizational unit. If no organizational unit is assigned, the system rejects the authorization. Setting 2: The system does not evaluate the organizational unit and rejects the authorization. Setting 3: If an organizational unit exists, the system checks against this organizational unit. If no organizational unit is assigned, it grants the authorization. Setting 4: The system does not evaluate the organizational unit and grants the authorization.
我稍微对上面节点介绍下如果选30001信息类型的单位存在就会结构化授权检查如果不存在就通过检查如果设置4就是不检查0001的单位直接授权 场景一员工已经离职但是还需要发薪但是为什么权限会提示离职以后得数据无法查询到呢。原因是这个部门在员工离职以后就失效在两个条件下结构化授权就无法找到所以就提示insufficient authorization, no.skipped personnel。如果我想解决离职后且部门失效有什么办法其实可以在结构化首选的地方单独加这个组织ID因为在结构化授权的地方有个日期是全部还是当前月的选项只要为空就是全部那么系统默认组织就是18000-9999都有效。
场景二因为启用OM与PA的集成如果OM与PA的数据部一致例如PA数据有更新,OM数据没更新结构化权限检查的时候就会提示权限不够insufficient authorization, no.skipped personnel。
上述两个场景是我遇到比较多的问题所以在自定义开发的报表遇到insufficient authorization, no.skipped personnel首先要检查的就是OM与PA的结构是否一致。
四、 HCM权限几个重要的函数与类及重要代码点
HR_CHECK_AUTHORITY_INFTY 检查有信息类型的查询权限 下面这个代码是结构化权限检查的核心553行时获取信息类型的所有数据然后数据会写入到PS内表在587行中是根据每行的数据都取检查如果有权限PS内表有个字段就是表示是W还是N当然还有其他权限这里有意思的是默认都是N如果有权限就会把改成其他,N表示无权限。下次详细分析下这里面的逻辑。 重要的类是CL_HRPAD00AUTH_CHECK_STD与CL_HRPAD00AUTH_CHECK_FAST这个都是结构化权限的检查类。