导读
逻辑数据库:在这几天在群里面有人问org.structure的系统标准逻辑是怎样,因为HR模块开发的特殊性,逻辑数据库是核心,所以看到这标准的页面固化思维就是PNP的代码分析,所以想的应该就是逻辑数据库的select赋值的地方,但是断点打到这个地方的时候,发现标准的一些报表并不会进入这个地方,那这个组织ID是如何去做的数据过滤呢?今天就来分析下这个业务逻辑,让大家了解逻辑数据库以外的取数逻辑。
作者:vivi,来源:osinnovation
1 故事背景
今天在群里面看到有人问这个地方的业务逻辑,基于好奇,所以就去思考下这个地方的逻辑,因为是HR模块开发,肯定就是逻辑数据库,所以把这个地方就和逻辑数据库挂上钩,但是发现在逻辑数据库打断点,系统并不会进入。所以这块应该都单独的业务代码处理。


2 技术分析
首先我们从这个地方的赋值开始,就是在页面中我勾选几个组织ID会存到什么变量里面,我们可以看到下面的代码,数据会放入到pnpobjid中,你选几个ID就会出现几条数据。

下面这里面的数据是逻辑数据库代码,我们看到183行的代码,这里面的代码是填充index内表的数据的。

看到500行,我们可以看到有个判断的条件pnpobjid的字段是否为空,这个地方就是我们选择页面填充的组织ID。

因为系统单独为组织id去做一层判断逻辑,所以组织过滤的核心是通过评估路径找到对应下面的部门岗位与人员id,然后把人员id的数据填充到index内表,然后基于这个内表的数据放入到get pernr里面。这个与我们理解的逻辑数据库有点差异,一般的我们使用逻辑数据库,是通过表关联找到对应的人员id,然后把人员ID投入到ger pernr,而组织的过滤的Id是通过评估路径0-s-p找到下面的人员。






逻辑数据里面我们debug的时候需要勾选内部debug的一些参数,否则无法进入,我们在报表中使用的get pernr其实是来源于逻辑数据个的put_pernr的这个form里面,所以数据组装我们可以从这个地方倒退的去找数据原来,走完put_pernr以后,系统就会填充pernr这个内表的数据,内表数据填充以后,就会进入get pernr里面一层一层循环判断。所以这就是逻辑数据库的大致逻辑。




3 总结
SAP HCM 离职日期是1号 薪酬核算有空结果-逻辑数据库GET PERNR三类取数逻辑分析
vivi rsl,公众号:osinnovationSAP HCM 离职日期是1号 薪酬核算有空结果-逻辑数据库GET PERNR三类取数逻辑分析
SAP HCM insufficient authorization, no.skipped personnel 总结归纳
vivi rsl,公众号:osinnovationSAP HCM insufficient authorization, no.skipped personnel 总结归纳
SAP HCM 标准报表与前台操作的增强差异逻辑分析(rhgrenz4)
vivi rsl,公众号:osinnovationSAP HCM 标准报表与前台操作的增强差异逻辑分析(rhgrenz4)
SAP HCM 逻辑数据 动态加载INFOTYPES
vivi rsl,公众号:osinnovationSAP HCM 逻辑数据 动态加载INFOTYPES
SAP HCM PROVIDE多个信息类型拆分错误问题
vivi rsl,公众号:osinnovationSAP HCM PROVIDE多个信息类型拆分错误问题
get pernr无法查询到主数据
vivi rsl,公众号:osinnovationget pernr无法查询到主数据

2087

被折叠的 条评论
为什么被折叠?



