发布网友 发布时间:2022-04-11 06:11
共3个回答
懂视网 时间:2022-04-11 10:32
可以通过下图看到report category中的设置和报表选择画面的关系,其中2是决定哪些字段作为条件显示在选择画面中。
创建一个自定义的report category ’ZEMPLOY‘完后保存,然后输入新创建的CATEGORY名字保存退出。
然后se38创建一个程序,输入下面的代码运行就可以看到选择画面了
1 | TABLES: PERNR. |
运行就可以看到效果。
由于用到了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)
然后用get语句就可以将逻辑数据库中的数据取出来,
Get pernr.
这句是逻辑数据库的专用语法,功能是根据用户输入的选择条件从逻辑数据库PNP中取出相应的数据然后循环,此时的PERNR是一个结构体,会在每次循环时自动赋值。且要注意该句不能写在FORM内部.
1 2 3 4 | START-OF-SELECTION. GET pernr. PERFORM frm_get_data. |
程序运行时有一个结构体PN,存放的是屏幕上输入的日期及一些基本参数,常用到的是PN-BEGDA及PN-ENDDA。
下面介绍一个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的代码。
HR的表中有的表的结构如P0041中的DAR01/DAT01,DAR02/DAT02,DAR03/DAT03…
DT是TYPE的类型,如果要取某个类型的DATE时,由于不确定是存放在哪个DT(DAT01/DAT02/…),所以可用语法
DO ..VARYIING OBJ FORM XXX NTEXT XXX来方便解决这个问题。如下:
还有一种常用的语法,PROVIDE * FROM P0000 BETWEEN PN-BEGDA AND PN-ENDDA.
其功能等于一个LOOP AT P0000 WHERE BEGDA LT PN-ENDDA AND ENDDA GTPN-ENDDA. ENDLOOP.
掌握以上几点,基本上可以写出一个基于逻辑数据库PNP的报表了。
以上。
◆◆0使用逻辑数据库PNP开发HR报表
标签:保存 用户 tran ace one 字段 复制 程序编写 baidu
热心网友 时间:2022-04-11 07:40
我国古代使用“0”这个字符,最早见于《诗经》上,它的古义是“暴风雨末了的小雨滴”或是“暴风雨过后留在物体上的球状雨滴”,意思是说:“0”像大雨过后落在物体止面的雨滴一样,但在这里显然并没有现在我们所说的“零”的意思。
热心网友 时间:2022-04-11 08:58
算筹以空格表示零,所以算筹出现就代表中国有零的概念了,至于符号的出现,要等以后用铜钱放入算筹的空位的时候开始,才算真正有了表示零的符号。
算筹最早出现在何时,现在已经不可查考了,但至迟到春秋战国;算筹的使用已经非常普遍了