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