HR获取入职日期 RP_GET_HIRE_DATE

25 篇文章 3 订阅

源码分析

* XJG Unicode
FUNCTION RP_GET_HIRE_DATE.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(PERSNR) LIKE  PERNR-PERNR
*"             VALUE(CHECK_INFOTYPES)
*"             VALUE(DATUMSART) LIKE  P0041-DAR01 DEFAULT '01'
*"             VALUE(STATUS2) DEFAULT '3'
*"             VALUE(P0016_OPTIONEN) DEFAULT ' '
*"       EXPORTING
*"             VALUE(HIREDATE) LIKE  P0000-BEGDA
*"----------------------------------------------------------------------

RP-LOWDATE-HIGHDATE.

DATA: BEGIN OF INIT,
        DATE LIKE P0000-BEGDA,
      END OF INIT.

DATA: BEGIN OF DAT,
        DAR LIKE P0041-DAR01,
        DAT LIKE P0041-DAT01,
      END OF DAT.

REFRESH: P0000, P0001, P0016, P0041.

  HIREDATE = HIGH-DATE.

  IF CHECK_INFOTYPES CS '0000'.
* Infotyp P0000 berücksichtigen
    RP-READ-INFOTYPE PERSNR 0000 P0000 LOW-DATE HIGH-DATE.
    PROVIDE * FROM P0000 BETWEEN LOW-DATE AND HIGH-DATE.
      IF P0000-BEGDA <> INIT-DATE AND P0000-BEGDA < HIREDATE.
        CHECK STATUS2 CS P0000-STAT2.
        HIREDATE = P0000-BEGDA.
      ENDIF.
    ENDPROVIDE.
  ENDIF.

  IF CHECK_INFOTYPES CS '0001'.
* Infotyp P0001 berücksichtigen
    RP-READ-INFOTYPE PERSNR 0001 P0001 LOW-DATE HIGH-DATE.
    PROVIDE * FROM P0001 BETWEEN LOW-DATE AND HIGH-DATE.
      IF P0001-BEGDA <> INIT-DATE AND P0001-BEGDA < HIREDATE.
        HIREDATE = P0001-BEGDA.
      ENDIF.
    ENDPROVIDE.
  ENDIF.

  IF CHECK_INFOTYPES CS '0016'.
* Infotyp P0016 berücksichtigen
    RP-READ-INFOTYPE PERSNR 0016 P0016 LOW-DATE HIGH-DATE.
    PROVIDE * FROM P0016 BETWEEN LOW-DATE AND HIGH-DATE.
      IF P0016_OPTIONEN IS INITIAL OR P0016_OPTIONEN CS 'EINDT'.
        IF P0016-EINDT <> INIT-DATE AND P0016-EINDT < HIREDATE.
          HIREDATE = P0016-EINDT.
        ENDIF.
      ENDIF.
      IF P0016_OPTIONEN IS INITIAL OR P0016_OPTIONEN CS 'KONDT'.
        IF P0016-KONDT <> INIT-DATE AND P0016-KONDT < HIREDATE.
          HIREDATE = P0016-KONDT.
        ENDIF.
      ENDIF.
    ENDPROVIDE.
  ENDIF.

  IF CHECK_INFOTYPES CS '0041'.
* Infotyp P0041 berücksichtigen
    RP-READ-INFOTYPE PERSNR 0041 P0041 LOW-DATE HIGH-DATE.
    PROVIDE * FROM P0041 BETWEEN LOW-DATE AND HIGH-DATE.
* XJG Unicode start
*      DO 12 TIMES VARYING DAT FROM P0041-DAR01 NEXT P0041-DAR02
      DO 12 TIMES VARYING DAT-dar FROM P0041-DAR01 NEXT P0041-DAR02
                  Varying dat-dat from p0041-dat01 next p0041-dat02.
* XJG Unicode ende
        CHECK DAT-DAR = DATUMSART.
        IF DAT-DAT < HIREDATE.
          HIREDATE = DAT-DAT.
        ENDIF.
      ENDDO.
    ENDPROVIDE.
  ENDIF.

ENDFUNCTION.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gavin_gxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值