用逻辑数据库开发HR报表

来源:互联网 发布:h5游戏源码下载 编辑:程序博客网 时间:2024/05/17 04:23

HR开发最常用的逻辑数据库是PNP,现在已经用PNPCE取代,但是因为PNP已经用得相当普遍而且够用,很多报表还是基于PNP的,这里举个PNP的例子。

应用逻辑数据库的好处不多说了,比如自带选择屏幕,自动权限检查,节约时间等等,其实我觉得逻辑数据库好的地方还有那些小地方,比如很容易修改选择屏、有进度提示等等。

举个简单的实例,做一个list。如果您有过HR开发经验或者仔细看过HR350这门课,下面就不用看了。

1,在程序属性里选择逻辑数据库PNP,屏幕有000和900两个选项,000是主数据的选择屏,900是薪资结果的选择屏,如果要带薪资结果,必须用900的屏幕。
2,保存后再回来(必须先保存再回来),有一个Report Category,可以进去选择具体屏幕,这个Report Category是可配置的。
screenshot059

3,在程序头声明薪资结构,Nodes与data类似,因为每个国家的薪资表不一样,所以必须后跟TYPE来指定格式,paycn_result是中国的,Payus_result就是美国的。
关于薪资结构,可以在SE11中看看paycn_result和payus_result的区别,我的理解是,payxx_result就是一多层次的、含结构含表的纵深结构,包括三部分evp(头信息,扁平结构),inter(内嵌多张国际通用表),nat(内嵌各国自己的表),每个国家的evp和inter部分结构是完全一样的,一般开发最常用的是payroll-inter-rt,即结果表。
screenshot001

4,GET PERNR
5,GET PAYROLL
6,Loop at payroll-inter-rt into wa_rt
7,GET PERNR LATE
screenshot0061

执行结果
screenshot005

GET PERNR 本身既是一个processing block,也是一个循环,容易给人造成误解的是,GET PERNR没有明显的结束语句,除非到下一个processing block,GET就一直在遍历每一个人,填充的是PERNR这个扁平结构。

GET PAYROLL是在GET PERNR内部的再循环,遍历同一个人的多条工资结果,从业务上理解,一个人有多条薪资结果,一次GET PAYROLL只取其中一条,填充的是结构PAYROLL,用的是paycn_result的结构,这时候PERNR结构里的数值都还在,仍然可以用PERNR里的东西,也可以用 RP_PROVIDE_FROM_LAST等标准函数。

GET PERNR LATE,表示GET PAYROLL循环结束,回到GET PERNR的循环,此时除非到下一个processing block或者程序结束,否则仍然在PERNR的循环里。但此时GET PAYROLL已经结束,payroll结构已经被释放。

原创粉丝点击