需求是:
取PA0001-组织分配当前生效人事范围WERKS的BEGDA,如当前人事范围从当前有效时间点开始往前推存在多条连续相同记录,取当前连续记录最早的BEGDA,
用子查询:
SELECT pernr,werks,MIN( begda ) AS begda
FROM pa0001 AS pa0001_1
WHERE pernr IN @s_pernr
AND begda GE (
SELECT MAX( begda )
FROM pa0001 AS pa0001_2
WHERE pernr EQ pa0001_1~pernr
AND werks NE pa0001_1~werks
)
GROUP BY pernr,werks
INTO TABLE @DATA(lt_0001).
但是上面的代码有一个问题是,如果某一个员工PERNR只存在同样的人事范围WERKS的数据,没有发生过任何跨单位调动等事件产生的人事范围变更时,是取不到数据的,因此我用了下面这段代码,虽然很蠢,但暂时没想到别的写法,请小伙伴们指点。
LOOP AT lt_0001 ASSIGNING FIELD-SYMBOL(<fs_0001>) WHERE pernr = <fs_pernr>-pernr .
IF <fs_0001>-werks NE <fs_pernr>-werks.
EXIT.
ENDIF.
data( lv_begda ) = <fs_0001>-begda.
ENDLOOP.