Info Source : HR_PA_0
Info Objects: Age Range, Gender, Nationality, Language, Age in years, Country Key, Country Code, Region, Postal Code, Capacity Utilization level, Seniority
* global Data Declarations for all the routines.
DATA: employee_md LIKE /bi0/memployee,
employee_wa LIKE /bi0/memployee,
person_md LIKE /bi0/mperson,
person_wa LIKE /bi0/mperson.
DATA: g_record_no LIKE sy-tabix.
INCLUDE rs_bct_hr_update_rules_general.
INCLUDE rs_bct_hr_papa_update_rules.
*$*$ begin of routine - insert your code only below this line *-*
* ---------------------------------------
* Start of Age Range Routine
DATA: ULTIMO LIKE SY-DATUM,
AGE TYPE I.
IF G_RECORD_NO <> RECORD_NO.
G_RECORD_NO = RECORD_NO.
CLEAR: EMPLOYEE_MD, PERSON_MD.
CLEAR: EMPLOYEE_WA, PERSON_WA.
ENDIF.
PERFORM CALCULATE_ULTIMO
using COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
CHANGING ULTIMO
RETURNCODE.
PERFORM READ_MD_PERSON
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
CHANGING EMPLOYEE_WA
PERSON_WA
RETURNCODE.
EMPLOYEE_MD = EMPLOYEE_WA.
PERSON_MD = PERSON_WA.
IF NOT PERSON_MD-DATEBIRTH IS INITIAL.
AGE = ULTIMO+0(4) - PERSON_MD-DATEBIRTH+0(4).
IF ULTIMO+4(4) LT PERSON_MD-DATEBIRTH+4(4).
AGE = AGE - 1.
ENDIF.
* IF AGE LT 20.
* RESULT = 1.
* ELSEIF AGE LT 30.
* RESULT = 2.
* ELSEIF AGE LT 40.
* RESULT = 3.
* ELSEIF AGE LT 50.
* RESULT = 4.
* ELSEIF AGE LT 60.
* RESULT = 5.
* ELSEIF AGE LT 70.
* RESULT = 6.
* ELSE.
* RESULT = 7.
* ENDIF.
IF AGE LT 25. "under 25
RESULT = 1.
ELSEIF AGE LE 34. "between 25 - 34
RESULT = 2.
ELSEIF AGE LE 44. "between 35 - 44
RESULT = 3.
ELSEIF AGE LE 54. "between 45 - 54
RESULT = 4.
ELSEIF AGE LE 64. "between 55 - 64
RESULT = 5.
ELSE.
RESULT = 6. "Over 65
ENDIF.
ELSE.
CLEAR RESULT.
ENDIF.
RETURNCODE = 0.
* End of Age Range routine
*------------------------------------------
* Routine for Gender
IF G_RECORD_NO <> RECORD_NO.
G_RECORD_NO = RECORD_NO.
CLEAR: EMPLOYEE_MD, PERSON_MD.
CLEAR: EMPLOYEE_WA, PERSON_WA.
ENDIF.
PERFORM READ_MD_PERSON
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
CHANGING EMPLOYEE_WA
PERSON_WA
RETURNCODE.
EMPLOYEE_MD = EMPLOYEE_WA.
PERSON_MD = PERSON_WA.
RESULT = PERSON_MD-GENDER.
RETURNCODE = 0.
* End of Gender Routine
*---------------------------------------------
* Routine for Nationality
IF G_RECORD_NO <> RECORD_NO.
G_RECORD_NO = RECORD_NO.
CLEAR: EMPLOYEE_MD, PERSON_MD.
CLEAR: EMPLOYEE_WA, PERSON_WA.
ENDIF.
PERFORM READ_MD_PERSON
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
CHANGING EMPLOYEE_WA
PERSON_WA
RETURNCODE.
EMPLOYEE_MD = EMPLOYEE_WA.
PERSON_MD = PERSON_WA.
RESULT = PERSON_MD-NATION.
RETURNCODE = 0.
* End of Nationality Routine
*------------------------------------------
* Routine for Language
IF G_RECORD_NO <> RECORD_NO.
G_RECORD_NO = RECORD_NO.
CLEAR: EMPLOYEE_MD, PERSON_MD.
CLEAR: EMPLOYEE_WA, PERSON_WA.
ENDIF.
PERFORM READ_MD_PERSON
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
CHANGING EMPLOYEE_WA
PERSON_WA
RETURNCODE.
EMPLOYEE_MD = EMPLOYEE_WA.
PERSON_MD = PERSON_WA.
RESULT = PERSON_MD-PERSLANGU.
RETURNCODE = 0.
* End of Language Routine
*-----------------------------------------
*Routine for Age in Years
DATA: ULTIMO LIKE SY-DATUM.
IF G_RECORD_NO <> RECORD_NO.
G_RECORD_NO = RECORD_NO.
CLEAR: EMPLOYEE_MD, PERSON_MD.
CLEAR: EMPLOYEE_WA, PERSON_WA.
ENDIF.
PERFORM CALCULATE_ULTIMO
using COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
CHANGING ULTIMO
RETURNCODE.
PERFORM READ_MD_PERSON
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
CHANGING EMPLOYEE_WA
PERSON_WA
RETURNCODE.
EMPLOYEE_MD = EMPLOYEE_WA.
PERSON_MD = PERSON_WA.
IF NOT PERSON_MD-DATEBIRTH IS INITIAL.
RESULT = ULTIMO+0(4) - PERSON_MD-DATEBIRTH+0(4).
IF ULTIMO+4(4) LT PERSON_MD-DATEBIRTH+4(4).
RESULT = RESULT - 1.
ENDIF.
ENDIF.
RETURNCODE = 0.
* End of Age in Years Routine
*----------------------------------------------
* Routine for Country Key
if g_RECORD_NO <> RECORD_NO.
g_RECORD_NO = RECORD_NO.
clear: employee_md, person_md.
clear: employee_wa, person_wa.
endif.
perform read_md_person
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
changing employee_wa
person_wa
RETURNCODE.
employee_md = employee_wa.
person_md = person_wa.
RESULT = PERSON_MD-COUNTRY.
RETURNCODE = 0.
* End of Country key Routine
*---------------------------------------------
* Routine for Contry Code
if g_RECORD_NO <> RECORD_NO.
g_RECORD_NO = RECORD_NO.
clear: employee_md, person_md.
clear: employee_wa, person_wa.
endif.
perform read_md_person
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
changing employee_wa
person_wa
RETURNCODE.
employee_md = employee_wa.
person_md = person_wa.
RESULT = PERSON_MD-COUNTY_CDE.
RETURNCODE = 0.
* End of Country Code Routine
*------------------------------------------
* Routine for Region
if g_RECORD_NO <> RECORD_NO.
g_RECORD_NO = RECORD_NO.
clear: employee_md, person_md.
clear: employee_wa, person_wa.
endif.
perform read_md_person
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
changing employee_wa
person_wa
RETURNCODE.
employee_md = employee_wa.
person_md = person_wa.
RESULT = PERSON_MD-REGION.
RETURNCODE = 0.
* End of Region Routine
* --------------------------------------------
* Routine for Postal Code
if g_RECORD_NO <> RECORD_NO.
g_RECORD_NO = RECORD_NO.
clear: employee_md, person_md.
clear: employee_wa, person_wa.
endif.
perform read_md_person
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
changing employee_wa
person_wa
RETURNCODE.
employee_md = employee_wa.
person_md = person_wa.
RESULT = PERSON_MD-POSTAL_CD.
RETURNCODE = 0.
*End of Postal Code Routine
*------------------------------------------
* Routine for Capacity Utilization Lvl
DATA: TMP_PAYPCT TYPE I.
if g_RECORD_NO <> RECORD_NO.
g_RECORD_NO = RECORD_NO.
clear: employee_md, person_md.
clear: employee_wa, person_wa.
endif.
perform read_md_employee
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
changing employee_wa
RETURNCODE.
employee_md = employee_wa.
* fill the internal table "MONITOR", to make monitor entries
* result value of the routine
* rounded
TMP_PAYPCT = EMPLOYEE_MD-PAYPCT.
RESULT = TMP_PAYPCT.
* End of Routine Capacity Utilization Lvl
*------------------------------------------------
* Routine for Length of Service
data: ultimo like sy-datum.
if g_RECORD_NO <> RECORD_NO.
g_RECORD_NO = RECORD_NO.
clear: employee_md, person_md.
clear: employee_wa, person_wa.
endif.
perform read_md_employee
using COMM_STRUCTURE-employee
COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
changing employee_wa
RETURNCODE.
employee_md = employee_wa.
perform calculate_ultimo
using COMM_STRUCTURE-calmonth
RECORD_NO
RECORD_ALL
SOURCE_SYSTEM
changing ultimo
RETURNCODE.
IF NOT EMPLOYEE_WA-ENTRYDATE IS INITIAL.
RESULT = ULTIMO+0(4) - EMPLOYEE_WA-ENTRYDATE+0(4).
IF ULTIMO+4(4) LT EMPLOYEE_WA-ENTRYDATE+4(4).
RESULT = RESULT - 1.
endif.
ENDIF.
IF RESULT LT 1.
RESULT = 1.
ELSEIF RESULT LT 2.
RESULT = 2.
ELSEIF RESULT LT 5.
RESULT = 3.
ELSEIF RESULT LT 10.
RESULT = 4.
ELSE.
RESULT = 5.
ENDIF.
* End of Length of service routine
*-----------------------------------------
No comments:
Post a Comment