源码分析
* 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.