SAP HCM PA20权限逻辑源代码分析

 今天遇到一个奇怪的问题,PA20的员工编号下面是空白,在信息类型文本中的信息类型后面都是绿色的沟。

图片

原来也遇到过类似的问题,但是尝试几次都没找到解决方案,但是点操作的时候,提示“至少一个记录已被跳过(授权)”,明显就是缺少权限,但是通过SU53去查询的时候不提示缺少权限。

图片

反复去查看数据都没发现问题,仔细查看PA0000与PA0001的数据,没有发现什么异常的数据。没办法只有debug下源代码,分析PA20的权限校验逻辑

图片

图片

1 PS内表中有一个auth字段,代表每行数据是否授权,当PS-AUTH=N表示此行数据无权限。PS内表会汇集多个信息类型的数据。

图片

2 781行开始循环PS表,790行是SAP标准权限校验的函数,此函数会返回AUTH值字段,并在791的modifly中修改。

图片

3 默认每次循环的时候给默认值 PS-AUTH = 'N'.

图片

4 此处是标准权限校验的函数,权限包含普通权限与结构化权限,因为大账号没问题,小账号有问题,小账号没DEBUG权限,所以需要用大账号去模拟小账号的权限,此处的uname就是关键,在用大账号debug的时候uname改成小账号的名称,这样就能模拟小账号的场景。如果没有权限返回值就是-。

图片

5 此函数看到一点提示,

图片

6 这个函数就是处理的关键,根据EXCEPTION中发现,NO_STRU_AUTHORITY,结构化的关键字

图片

7 通过下图的关键字发现,NO_STRU_AUTHORITY,现在恍然大悟,开始检查的权限是PFCG,但是一直没想结构化的权限方向考虑。

图片

8 填充PS表的数据都是W,W标识可写,现在可以把0000与0001的最后一条数据改成N,这样前台界面就无法查询最后一条数据。

图片

图片

9 PS表的AUTH改成N,在PA20中发现数据缺少一条。

图片

  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值