• ◆◆0HR报表开发-Join & Projection


    1, 读取infotype 0002

    SAP HR一般会有很多开发。而这个模块数据的特点也让它的开发和其它模块有些不同。HR的所有数据都是以信息类型来保存的,每个信息类型的数据都和时间段紧密相连。HR开发一般使用sap提供的Logic database pnp.用起来也非常简单。只需要在新建程序时,加上pnp。然后在程序里加上Tables: PERNR.需要用到哪些信息类型加上就可以了。
    比如我需要用到个人数据(2)这个信息类型的数据。那么程序就这样写:

    2, Join

    上面这是一个最简单的HR报表了。它的语法确实很简单。但是刚开始必须要把HR数据的结构弄明白,否则复杂一些就晕了。HR的数据有一个共同点,所有的记录都有一个起始日期和结束日期。可以用Join的语法来把多个信息类型放在一起来取数。但是必须注意数据的时间段的用法,如下图1:

    2016-08-26_15-53-38

    第一种,该信息类型的数据不允许日期存在间隔或重叠。
    第二种,信息类型的数据允许存在间隔,但是不允许重叠。
    第三种,信息类型的数据即允许有间隔也允许有重叠。

    对于取数的时候,某个特定的时间段如果有重复的数据实际是没有意义的,所以用join的时候只允许针对前两种情况来。

    Join的语法也很简单,比如需要同时取组织分配(1)和个人数据(2)的数,那么程序可以这样写:

    那么如果两个信息记录的数据如果时间段不是严格匹配的,这也是非常正常的情况,那么程序会如何输出呢?如下图2所示:

    jp__2

    员工名字叫Andy Wang,他在2008.1.1被雇佣,地址是Shanghai,在2008.1.10才录入系统。报表需要输出员工的姓名和地址。那么必须取两个信息类型:个人信息和地址信息。在Join两个信息类型的时候,系统会自动按照每个时间点分为多条记录。这个例子的话,会自动分成两段:2008.1.1 - 2008.1.9, 2008.1.10 - 9999.12.31。然后如果某个信息记录在某个时间段有数的话,自动生成的变量PXXX_VALID就会被赋值'X'。那么如果用户屏幕上输入查询日期:2008.1.5 - 2008.1.31。程序输出就是:2008.1.10 - 2008.1.31 Andy Wang, Shanghai。之所以这样输出,是由于2008.1.10之前是没有地址的。所以在2008.1.1-2008.10这个时间段p0006_valid为空值。

    所有程序代码:

    再看另外一个例子,如下图3所示,假设该员工地址只在时间段2008.1.10 - 2008.1.31有值。那么如果用户在输入选择条件2008.1.5 - 2008.2.15,输出应该是2008.1.10 - 2008.1.31 Andy Wang, Shanghai。之所以这样输出,是由于在1.10号以前和1.31号以后都没有地址。这样输出是正确的。

    jp__3

    继续将这个例子复杂化,该员工在2008.2.10以后改名叫Jacky Wang,而不同时间段的地址也不一样,那么程序会如何输出呢。如下图4所示:

    join_projection_fix

    对于该员工,假设选择条件是2007.12.1 - 2008.2.31,那么系统会分成以下时间段:
    2008.1.1  - 2008.1.9 (无地址信息,p0006_valid为空)
    2008.1.10 - 2008.1.31 (Andy Wang, Shanghai)
    2008.2.1  - 2008.2.10 (Andy Wang, Beijing)
    2008.2.11 - 2008.2.31 (Jacky Wang, Beijing)

    3, Projection

    除了Join,另外一个重要的语法就是Projection了。在将信息类型的所有字段都取出来叫Join,如果只取个别字段就叫Projection。而系统会自动将根据该字段来做时间合并。比如如下图5所示:一个用户的组织分配信息类型有2条记录。分别是1.1-1.31 和 2.1 - 9999.12.31。这两条记录只有job发生了变化,而该员工的position并没有改变。那么如果根据Projection来只取job和只取postion是不同的。取job字段的时候,还是会分为两个时间段。

    jp__5

    但是在用position只取position字段的时候,由于postion并没有发生变化,所以系统会自动将它们合并,如下图6所示:

    jp__6

    如果掌握了HR的基本概念以及它的数据结构组成,就可以使用Join和Projection来做简单的HR开发了。

    以上。

  • 相关阅读:
    网络安全分析
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1540 机器
    java实现 洛谷 P1540 机器
  • 原文地址:https://www.cnblogs.com/lvdong18847870057/p/12550852.html
Copyright © 2020-2023  润新知