cancel
Showing results for 
Search instead for 
Did you mean: 

ABAP code for finding number of days worked

Former Member
0 Kudos

Hi all,

Does anybody has code to find the number of days and years an employee

has been in the organization..

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

just ask your abaper to take Date of Joining and compare with sydatm

Doj you can get from IT 0001 or IT0041

This is simple logic

you wont get this info in clusters

Warm Regards

Answers (2)

Answers (2)

Former Member
0 Kudos

check wday field in wpbp table through tcode pc_payresult.

Former Member
0 Kudos

Hi,

You can use this code to get the total Experience in company.

FUNCTION zhr_total_exp.

*"----


""Local Interface:

*" IMPORTING

*" REFERENCE(PERNR) TYPE PERNR_D

*" EXPORTING

*" REFERENCE(TOT_YEARS) TYPE C

*"----


INFOTYPES : 0000,

0041.

TYPES : BEGIN OF x_stat,

stat2 TYPE stat2,

massn TYPE massn,

date01 TYPE begda,

date02 TYPE endda,

END OF x_stat.

DATA : it_stat TYPE STANDARD TABLE OF x_stat,

wa_stat TYPE x_stat.

TYPES : BEGIN OF x_hire,

stat2 TYPE stat2,

massn TYPE massn,

date01 TYPE begda,

date02 TYPE endda,

END OF x_hire.

DATA : it_hire TYPE STANDARD TABLE OF x_hire,

wa_hire TYPE x_hire.

DATA: itab_pa0041 TYPE STANDARD TABLE OF pa0041 WITH HEADER LINE.

DATA: wa_pa0041 LIKE itab_pa0041.

DATA: hire_date LIKE pa0041-dat01, "hire date

curr_date LIKE sy-datum, "current date

join_date LIKE pa0041-dat01, "joining date

separate_date LIKE pa0041-dat03,

dar LIKE pa0041-dar01,

dat LIKE pa0041-dat01.

DATA: mon1 TYPE p0000_af-nomns, year1 TYPE p0000_af-noyrs.

DATA: flag TYPE i. "CH10

flag = 0. "CH10

DATA: dat1 LIKE pa0041-dat01, "CH13

dat9 LIKE pa0041-dat01. "CH13

curr_date = sy-datum.

DATA: BEGIN OF it_empgrp OCCURS 0,

pernr TYPE pa0001-pernr,

begda TYPE pa0001-begda,

persg TYPE pa0001-persg,

END OF it_empgrp.

DATA: BEGIN OF it_action OCCURS 0,

pernr TYPE pa0000-pernr,

begda TYPE pa0000-begda,

massn TYPE pa0000-massn,

END OF it_action.

  • get the actions

SELECT pernr begda massn FROM pa0000 INTO TABLE it_action WHERE pernr = pernr.

  • get the employee group from table pa0001

SELECT pernr begda persg INTO TABLE it_empgrp FROM pa0001 WHERE pernr = pernr AND endda = '99991231'.

SORT it_empgrp DESCENDING BY begda.

  • end of ch12

SELECT * FROM pa0041 INTO TABLE itab_pa0041 WHERE pernr = pernr AND endda = '99991231' .

SORT itab_pa0041 DESCENDING BY begda.

CLEAR : dar, dat.

LOOP AT it_empgrp WHERE persg = 'G' OR persg = 'H' OR persg = 'I' OR persg = 'J'.

ENDLOOP.

IF sy-subrc EQ 0.

***************Start of CH13

LOOP AT itab_pa0041 INTO wa_pa0041.

DO 12 TIMES VARYING dar FROM wa_pa0041-dar01

NEXT wa_pa0041-dar02

VARYING dat FROM wa_pa0041-dat01

NEXT wa_pa0041-dat02.

CASE dar.

WHEN '01'.

MOVE dat TO dat1.

WHEN '09'.

MOVE dat TO dat9.

ENDCASE.

ENDDO.

ENDLOOP.

IF dat1 <> dat9.

hire_date = dat1.

IF hire_date IS NOT INITIAL AND curr_date IS NOT INITIAL.

PERFORM calcexp USING hire_date curr_date CHANGING tot_years .

ENDIF.

ELSE.

CLEAR: hire_date,

curr_date,

tot_years.

ENDIF.

ELSE.

CLEAR: dar , dat , dat1, dat9.

LOOP AT itab_pa0041 INTO wa_pa0041.

DO 12 TIMES VARYING dar FROM wa_pa0041-dar01

NEXT wa_pa0041-dar02

VARYING dat FROM wa_pa0041-dat01

NEXT wa_pa0041-dat02.

CASE dar.

WHEN '01'.

MOVE dat TO hire_date.

IF hire_date IS NOT INITIAL AND curr_date IS NOT INITIAL.

PERFORM calcexp USING hire_date curr_date CHANGING tot_years .

ENDIF.

ENDCASE.

ENDDO.

ENDLOOP.

ENDIF.

IF tot_years IS INITIAL.

CONCATENATE '00' '.' '00' INTO tot_years.

ENDIF.

ENDFUNCTION.

                    • To Find Out The Difference Between 2 Dates **********

FORM calcexp USING date1 date2 CHANGING total_years .

DATA: mon1 TYPE p0000_af-nomns,

year1 TYPE p0000_af-noyrs,

day1 TYPE p0000_af-nodys.

CALL FUNCTION 'HR_CALC_YEAR_MONTH_DAY'

EXPORTING

begda = date1

endda = date2

IMPORTING

years_out = year1

months_out = mon1

days_out = day1.

IF day1 > 15.

mon1 = mon1 + 1.

CLEAR day1.

ENDIF.

IF mon1 > 11.

year1 = year1 + mon1 DIV 12.

mon1 = mon1 MOD 12.

ENDIF.

CONCATENATE year1 '.' mon1 INTO total_years.

ENDFORM. "calcexp

Thanks & Regards,

Aniruddha Bane