zoukankan      html  css  js  c++  java
  • ◆◆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。

    1351064681_8131

    2, 创建report category

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

    1351064690_9427

    1351064697_8468

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

    1351064701_6363

    1351064706_6936

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

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

    运行就可以看到效果。

    1351064717_4532

    3, 程序编写

    3.1 HR数据表定义

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

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

    3.2 get语句

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

    Get pernr.

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

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

    1351064730_8069

    3.3 宏Rp_provide_from_last

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

    2017-02-23_22-26-45

    它的意思是根据PERNR当前的NO.号找表P0000中字段SUBTY = P0000-SUBTY且字段BEGDAENDDAPN-BEGDAPN-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都在时间内,取最后一条。

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

    1351064785_1418

    3.4 DO ..VARYIING OBJ FORM XXX NTEXT XXX

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

    1351064794_3324

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

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

    1351064789_8008

    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的报表了。

    以上。

  • 相关阅读:
    OK335xS-Android mkmmc-android-ubifs.sh hacking
    OK335xS-Android pack-ubi-256M.sh hacking
    OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建
    Qt Quick Hello World hacking
    Qt QML referenceexamples attached Demo hacking
    QT 5.4.1 for Android Ubuntu QtWebView Demo
    I.MX6 working note for high efficiency
    QT 5.4.1 for Android Windows环境搭建
    mkbootimg hacking
    Generate And Play A Tone In Android hacking
  • 原文地址:https://www.cnblogs.com/lvdong18847870057/p/12550820.html
Copyright © 2011-2022 走看看