List of Employees Who Have Completed Certain Yrs of Service
*&---------------------------------------------------------------------*
*& Report ZPV003HR_ANIV_EMP
*&---------------------------------------------------------------------*
REPORT zpv003hr_aniv_emp .
TABLES: pernr.
INFOTYPES: 0002,
0001.
DATA: age TYPE d,
serv TYPE d,
curdate TYPE d.
DATA: years TYPE d,
enddate TYPE d .
DATA: BEGIN OF int_empinfo OCCURS 0,
pernr LIKE p0002-pernr,
nachn LIKE p0002-nachn,
vorna LIKE p0002-vorna,
gbdat LIKE p0002-gbdat,
begda LIKE p0001-begda,
emp_age TYPE d,
emp_serv TYPE d,
END OF int_empinfo.
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
PARAMETERS: 5_years RADIOBUTTON GROUP g1 DEFAULT 'X',
10_years RADIOBUTTON GROUP g1,
15_years RADIOBUTTON GROUP g1.
*curdate type d DEFAULT '00050101' .
SELECTION-SCREEN END OF BLOCK block1.
START-OF-SELECTION .
IF 5_years = 'X'.
curdate = '00050101'.
ELSEIF 10_years = 'X'.
curdate = '00100101'.
ELSEIF 15_years = 'X'.
curdate = '00150101'.
ENDIF.
GET pernr.
PERFORM get_0002.
PERFORM get_0001.
IF int_empinfo-emp_serv NE '00000000'.
APPEND int_empinfo.
ENDIF.
END-OF-SELECTION.
IF int_empinfo[] IS INITIAL.
WRITE:/ 'NO EMPLOYEE WITH', curdate+2(2), 'YEARS OF SERVICE' COLOR 6
.
ENDIF.
PERFORM write_empinfo.
*&---------------------------------------------------------------------*
*& Form get_0002
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_0002 .
rp-provide-from-last p0002 space pn-begda pn-endda.
IF pnp-sw-found EQ '1'. "record found
age = sy-datum - p0002-gbdat.
MOVE:
p0002-pernr TO int_empinfo-pernr,
p0002-vorna TO int_empinfo-vorna,
p0002-nachn TO int_empinfo-nachn,
p0002-gbdat TO int_empinfo-gbdat,
age TO int_empinfo-emp_age.
ELSE.
REJECT.
ENDIF.
ENDFORM. " get_0002
*&---------------------------------------------------------------------*
*& Form write_empinfo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM write_empinfo .
LOOP AT int_empinfo.
WRITE:/
int_empinfo-pernr,
20 int_empinfo-nachn,
35 int_empinfo-vorna,
50 int_empinfo-gbdat,
75 int_empinfo-emp_age+2(2),
85 int_empinfo-emp_serv+2(2) .
ENDLOOP.
ENDFORM. " write_empinfo
*&---------------------------------------------------------------------*
*& Form get_1001
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_0001 .
rp-provide-from-last p0001 space pn-begda pn-endda.
IF pnp-sw-found EQ '1'. "record found
enddate = p0001-endda .
years = sy-datum - p0001-begda.
IF years > curdate AND enddate >= '99991231' .
MOVE:
years TO int_empinfo-emp_serv.
ENDIF.
ELSE.
REJECT.
ENDIF.
ENDFORM. " get_1001
TOP-OF-PAGE.
WRITE:/
'EMP_PERNR',
20 'LAST_NAME',
35 'FIRST_NAME',
50 'DOB',
75 'EMP_AGE',
85 'EMP_SERVICE' .
ULINE.
No comments:
Post a Comment