Google Search - Blog...........

Showing posts with label hr report program to retrieve employees having experience in an org unit. Show all posts
Showing posts with label hr report program to retrieve employees having experience in an org unit. Show all posts

HR ABAP - Get The List Of Employees With Experience.


Here I want to display the employees of a particular service (For Example: I want the get the list of employees those who are having experience between 5 to 6 years ) . For this I have developed a simple report which can able to display the same .

The coding for this is :

REPORT zservice .
*----------------------------------------------------------*
* tables
*----------------------------------------------------------*

TABLES: pernr,
pa0002,
pa0001.

*----------------------------------------------------------*
* info types
*----------------------------------------------------------*

INFOTYPES: 0002,
0001.

*----------------------------------------------------------*
* variables
*----------------------------------------------------------*

DATA: v_age TYPE d,
v_service TYPE d,
v_currentdate TYPE d,
v_currentdate1 TYPE d,
v_years TYPE d,
v_enddate TYPE d .

DATA:service TYPE char2 ,
diff TYPE char2 .

*----------------------------------------------------------*
* internal tables
*----------------------------------------------------------*

DATA: BEGIN OF itab OCCURS 0,
pernr LIKE pa0002-pernr,
begda LIKE pa0002-begda,
endda LIKE pa0002-endda,
nachn LIKE pa0002-nachn,
vorna LIKE pa0002-vorna,
gbdat LIKE pa0002-gbdat,
age TYPE d,
END OF itab.

DATA: BEGIN OF itab1 OCCURS 0,
pernr LIKE pa0001-pernr,
begda LIKE pa0001-begda,
endda LIKE pa0001-endda,
serv TYPE d,
END OF itab1 .

*----------------------------------------------------------*
* selection screen
*----------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:s_pernr FOR pa0002-pernr .
SELECT-OPTIONS: s_serv FOR service OBLIGATORY.
SELECTION-SCREEN END OF BLOCK block1.

*----------------------------------------------------------*
* start of selection
*----------------------------------------------------------*

START-OF-SELECTION .

IF s_serv-high IS INITIAL.
diff = s_serv-low .
CONCATENATE '00' diff '0101' INTO v_currentdate.

ELSE.
diff = s_serv-high - s_serv-low .
CONCATENATE '00' s_serv-low '0101' INTO v_currentdate.

ENDIF.

PERFORM get_data1.
PERFORM get_data2.

*----------------------------------------------------------*
* tables
*----------------------------------------------------------*

END-OF-SELECTION.

IF itab[] IS INITIAL.
WRITE:/ 'NO EMPLOYEE WITH',
v_currentdate+2(2),
'YEARS OF SERVICE' COLOR 7 .
ENDIF.

PERFORM display_emplist.

*&---------------------------------------------------------------------*
*& Form get_data1
*----------------------------------------------------------------------*

FORM get_data1 .

SELECT pernr
begda
endda
vorna
nachn
gbdat
FROM pa0002
INTO CORRESPONDING FIELDS OF TABLE itab
WHERE pernr IN s_pernr
AND begda LE sy-datum
AND endda GE sy-datum .

LOOP AT itab .
itab-age = sy-datum - itab-gbdat .
MODIFY itab TRANSPORTING age .
ENDLOOP .

ENDFORM.

*&---------------------------------------------------------------------*
*& Form display_emplist
*----------------------------------------------------------------------*

FORM display_emplist .

LOOP AT itab1 .
READ TABLE itab WITH KEY pernr = itab1-pernr .

IF s_serv-high IS INITIAL .
IF itab1-serv+2(2) EQ s_serv-low .

WRITE:/1 itab-pernr,
15 itab1-begda ,
30 itab1-endda ,
45 itab-nachn,
65 itab-vorna,
85 itab-gbdat,
98 itab-age+2(2),
109 itab1-serv+2(2) .

ENDIF.

ELSE.
IF itab1-serv+2(2) GE s_serv-low AND itab1-serv+2(2) LE s_serv-high.

WRITE:/1 itab-pernr,
15 itab1-begda ,
30 itab1-endda ,
45 itab-nachn,
65 itab-vorna,
85 itab-gbdat,
98 itab-age+2(2),
109 itab1-serv+2(2) .

ENDIF.
ENDIF.

ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form get_data2
*----------------------------------------------------------------------*

FORM get_data2 .

SELECT pernr
begda
endda
FROM pa0001
INTO CORRESPONDING FIELDS OF TABLE itab1
FOR ALL ENTRIES IN itab
WHERE pernr = itab-pernr
AND begda LE sy-datum
AND endda GE sy-datum .

LOOP AT itab1 .
v_enddate = itab1-endda .
v_years = sy-datum - itab1-begda.

IF v_years GE v_currentdate AND v_enddate GE '99991231' .
itab1-serv = v_years .
MODIFY itab1 TRANSPORTING serv .
ENDIF .

ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form top of page
*----------------------------------------------------------------------*

TOP-OF-PAGE.
WRITE:/ 'Personnel no',
15 'join date' ,
30 'last date ',
45 'LAST NAME',
65 'FIRST NAME',
85 'DOB',
98 'EMP AGE',
109 'EMP SERVICE' .
ULINE.



ALSO READ:

- BADI HRECM00_BDG0001 - Upload Initial Budgets From Excel Sheet.

- Get Employee Picture In Selection Screen.

- Unified Access to All HR Infotypes.

- F4(Value On Request) For Organization Unit In HR Report Program.

- Employee Pay Scale Report Program.

.....Back To Sub-Index On HR ABAP.

.....Back To MAIN INDEX.