逻辑数据库是专门在逻辑数据库生成器中编辑的开发对象,其核心价值在于为其他ABAP程序提供来自分层树结构节点的数据访问能力。尽管在SAP的最新帮助文档中,逻辑数据库被标记为已过时的,但是在HR模块中仍然被广泛使用,提供读取和处理人力资源相关数据所需的基本功能。此处仅针对人事管理PNP逻辑数据库做说明。
1. 选择屏幕可根据需要进行配置,其中已预置了常用的人员相关的筛选字段(事件AT SELECTION-SCREEN OUTPUT下通过代码控制也能实现,不建议),配置路径如下
该节点在START-OF-SELECTION和END-OF-SELECTION事件流之间,逻辑数据库的筛选逻辑以及信息类型取值逻辑均在这一步骤处理,使用REJECT语句可直接终止该节点,执行END-OF-SELECTION事件流。
虽然GET PERNR节点是循环执行,但是和LOOP不一样,在该节点下对逻辑数据库选择屏幕参数进行更改会生效,但是不是立即生效;该步骤内部逻辑是将员工分包处理,更改选择屏幕参数后,当前包内的员工执行完,进行下一个包的处理时会生效。
毕竟是被标记为过时的语法,在逻辑数据库中对大数据量表取值效率并不能得到很好的优化,还有比如大量使用如下语法时,会在某些场景下出现一些奇怪的现象,比如extliml大于extlimu
PROVIDE {*|{comp1 comp2 ...}} FROM itab1
BETWEEN extliml AND extlimu.
rp_provide_from_last p0001 space pn-begda pn-endda.
pnp_sw_skip_pernr 在GET PERNR 之前使用
默认 'Y' 只要没有该人员任何信息类型任何一条数据的权限,则该人员不会出现在pernr 节点下。
'N'. 该人员会出现在pernr 节点下,但是无权限的数据 不回 出现在信息类型的数据表中。
当pnp_sw_skip_pernr = 'N'.时,如果需要使用逻辑数据库权限过滤人员,由于此时所有人均会走GET PERNR节点,所以需要增加人员过滤逻辑。pnp_sw_skip_pernr = 'Y' 时会过滤人员,因此无需增加逻辑,但是会弹出页面显示无权限人员条目数。
pn-begps pn-endps 人员名单筛选期间-选择屏幕参数
pn-begda pn-endda 数据筛选期间-选择屏幕参数
CASE pnptimed.
WHEN space. pnptimr6 = 'X'.
WHEN 'D'. pnptimr1 = 'X'.
WHEN 'M'. pnptimr2 = 'X'.
WHEN 'Y'. pnptimr3 = 'X'.
WHEN 'P'. pnptimr4 = 'X'.
WHEN 'F'. pnptimr5 = 'X'.
ENDCASE.