◆◆0使用逻辑数据库PNP开发HR报表

HR开发中会经常用到逻辑数据库,其中PNP逻辑数据最常用的。 人事数据的信息类型数据都存放在PAnnnn这些表中,PNP其实就是从这些表中抓取的数据。现在已经用PNPCE(支持concurrent employment)取代PNP,但是因为PNP已经用得相当普遍而且够用,很多报表还是基于PNP的,这里举个PNP的例子。

1, 指定逻辑数据库PNP

创建程序是在属性界面输入逻辑数据库PNP

下图selection screen处可以选择000或900两个选择屏幕,000是主数据的选择屏,900是薪资结果的选择屏。

然后点击HR Report Catergory,进入report category assignment屏幕,创建一个category。

2, 创建report category

系统中已经存在很多ReportCategory,可以根据开发需要选择类似的进行复制,来看一个比较常见的Category

可以通过下图看到report category中的设置和报表选择画面的关系,其中2是决定哪些字段作为条件显示在选择画面中。

创建一个自定义的report category ’ZEMPLOY‘完后保存,然后输入新创建的CATEGORY名字保存退出。

然后se38创建一个程序,输入下面的代码运行就可以看到选择画面了

1

TABLES: PERNR.

运行就可以看到效果。

3, 程序编写

3.1 HR数据表定义

由于用到了LDB及HR的表结构与其它模块的不同,所以程序的编写也略有不同,但要比其它模块的更简单。

1

2

3

4

REPORT ztest_hr.

TABLES:pernr.

INFOTYPES:0000,0001,0002,0015,0041,0185.

程序头部要定义将要用到的HR数据表(如PA0000,PA0001)就是
INFOTYPES:0000,0001.
如果不定义,而在后面使用了该表程序会报语法错误。
而定义好之后在程序中使用时表名是P0000,P0001(而不是pa0000,pa0001)

3.2 get语句

然后用get语句就可以将逻辑数据库中的数据取出来,

Get pernr.

这句是逻辑数据库的专用语法,功能是根据用户输入的选择条件从逻辑数据库PNP中取出相应的数据然后循环,此时的PERNR是一个结构体,会在每次循环时自动赋值。且要注意该句不能写在FORM内部.

1

2

3

4

START-OF-SELECTION.

GET pernr.

PERFORM frm_get_data.

程序运行时有一个结构体PN,存放的是屏幕上输入的日期及一些基本参数,常用到的是PN-BEGDA及PN-ENDDA。

3.3 宏Rp_provide_from_last

下面介绍一个HR开发中常用的宏,Rp_provide_from_last,标准用法如下:

它的意思是根据PERNR当前的NO.号找表P0000中字段SUBTY = P0000-SUBTY且字段BEGDA及ENDDA在PN-BEGDA和PN-ENDDA之间的数据的最后一条。

如  p0000:


P0000


BEGDA


ENDDA


1


2012.05.01


2012.05.30


2


2012.06.01


2012.06.30

当PN-BEGDA =2012.04.01,PN-ENDDA = 2012.05.03

该语法只会得到第1条,因为第2条的时间不在PN内。

如果PN-BEGDA = 2012.04.01, PN-ENDDA = 2012.06.02.

那么该语法会取第2条,1和2 都在时间内,取最后一条。

下面是一段用到了Rp_provide_from_last的代码。

3.4 DO ..VARYIING OBJ FORM XXX NTEXT XXX

HR的表中有的表的结构如P0041中的DAR01/DAT01,DAR02/DAT02,DAR03/DAT03…

DT是TYPE的类型,如果要取某个类型的DATE时,由于不确定是存放在哪个DT(DAT01/DAT02/…),所以可用语法

DO ..VARYIING OBJ FORM XXX NTEXT XXX来方便解决这个问题。如下:

3.5 provide语句

还有一种常用的语法,PROVIDE * FROM P0000 BETWEEN PN-BEGDA AND PN-ENDDA.

其功能等于一个LOOP AT P0000 WHERE BEGDA LT PN-ENDDA AND ENDDA GTPN-ENDDA. ENDLOOP.

掌握以上几点,基本上可以写出一个基于逻辑数据库PNP的报表了。

以上。

原文地址:https://www.cnblogs.com/lvdong18847870057/p/12550820.html

时间: 2024-08-29 22:48:28

◆◆0使用逻辑数据库PNP开发HR报表的相关文章

【ABAP系列】SAP 的逻辑数据库解析

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 的逻辑数据库解析 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 T-CODE:SE36 逻辑数据库好像是HR模块用的比较多 如果谁有HR350,可以分享一下,非常感谢 当数据量很大,而且很耗时间的时候 用逻辑数据库,可以提高数据读取速度 理解上应该是把数据集放到一块 不用我们平时写OPENS

Logical Databases逻辑数据库

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4293511.html 主要组成部分... 300 结构(Structure)... 301 选择(Selections)... 302 数据库程序(Database program)... 305 LDB程序结构... 307 FORM P

Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc、Mybatis)视频教程

Extjs5.0从入门到实战开发信息管理系统(Extjs基础.Extjs5新特性.Spring.Spring mvc.Mybatis)视频教程下载   联系QQ:1026270010 Extjs作为一款优秀的JS前端开发框架以其良好的架构.丰富的UI组件库.完善的文档和社区支持等诸多优点拥有广泛的市场应用空间,开发人员无需过多的关注HTML.CSS甚至各种常用JS算法,只需把精力放在业务逻辑上,利用各种组件的相互组合调用便可轻松而高效的开发出系统的前端页面. Extjs5在之前版本的基础上又推出

Oracle数据库之开发PL/SQL子程序和包

Oracle数据库之开发PL/SQL子程序和包 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后

数据库设计开发规范

1 数据库命名约定  1.1 规则 (1) 命名富有意义英文词汇,多个单词组成的,中间以下划线分割. (2) 除数据库名称长度为1-8个字符,其余为1-30个字符,dblink名称也不要超过30个字符. (3)命名只能使用英文字母,数字和下划线,字母全部小写 (4)避免使用Oracle的保留字如level.关键字如type. 1. 2系统模块 编号 名称 英文 缩写 1 系统管理 system sys 2 配置管理 dictionary dic 3 设备系统 equipment equ 4 通讯

翻译:逻辑数据库(1):组成

调试SAP标准程序的时候遇到了逻辑数据库相关的部分,顺便翻译一下ABAP的官方帮助文件作为练习.欢迎指正. 逻辑数据库      逻辑数据库是一种特别的开发对象,它在Logical Database Builder中编辑,并且可以通过一个层次树结构(hierarchical tree structure)中的节点们为其它ABAP程序提供数据.逻辑数据库最通常的目的是从数据库表中释放数据,尽管其它的应用也可以做到这点. 通过使用外键关系,逻辑数据库提供一个跨数据库表的层次视图.如果这些关系中的部分

逻辑数据库设计 - 单纯的树(递归关系数据)(转)

逻辑数据库设计 - 单纯的树(递归关系数据) 相信有过开发经验的朋友都曾碰到过这样一个需求.假设你正在为一个新闻网站开发一个评论功能,读者可以评论原文甚至相互回复. 这个需求并不简单,相互回复会导致无限多的分支,无限多的祖先-后代关系.这是一种典型的递归关系数据. 对于这个问题,以下给出几个解决方案,各位客观可斟酌后选择. 一.邻接表:依赖父节点 邻接表的方案如下(仅仅说明问题): CREATE TABLE Comments( CommentId int PK, ParentId int, --

mysql数据库设计开发规范

1.设计 1. 一般都使用INNODB存储引擎,除非读写比率<1%,才考虑使用MYISAM存储引擎:其他存储引擎请在DBA的建议下使用. 2. Stored procedure (包括存储过程,函数,触发器)对于MYSQL来说还不是很成熟,没有完善的出错记录处理,不建议使用. 3. UUID(),USER()这样的MYSQL INSIDE函数对于复制来说是很危险的,会导致主备数据.不一致.所以请不要使用.如果一定要使用UUID作为主键,让应用程序来产生. 4. 请不要使用外键约束,如果数据存在外

使用pentaho report 开发web报表

使用pentaho report 开发web报表 1.   文档说明 java开源报表软件中,pentaho report算是比较优秀的:能够满足大多数应用,足以和国内商业报表媲美:现记录实际开发报表完整过程教程,让初学者快速入门并应用到项目中. 2.   开发环境说明 1)      工具环境:pentaho report designer5.3.tomcat6.jdk6.Eclipse Java EE (4.3) 2)     mysql以及示例数据库saikla 3)     mysql驱