Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Coding reqd using HR_MAINTAIN_MASTERDATA function for upload

Former Member
0 Likes
891

Hi all,Good evg...

With the above said subject...if anyone have, pls post me here or to my mail-id...since im struggling to get it in sdn search....

I have the infotype calling function...but not the above one...and its also reqd for my client work...

thanks & regards

<Post was moderated>

1 ACCEPTED SOLUTION
Read only

manubhutani
Active Contributor
0 Likes
534

Please reward points if helpful.

Please check out the code

----


***INCLUDE LHRWPC_PCR_WT_ACTIONSF01 .

----


&----


*& Form run_action_50

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM run_action_50 .

action = '50'.

  • Fill proposed values for action infotype(0000)

PERFORM fill_prop_values_action using action.

  • Fill proposed values for organization assignment infotype(0001)

PERFORM fill_prop_value_org_assign using action.

  • Fill proposed values for plant working time infotype(0007)

  • perform fill_prop_value_wrk_time.

  • Fill proposed values for basic pay infotype(0008)

PERFORM fill_prop_value_basic_pay using action.

  • Fill proposed values for cost distribution infotype(0027)

*skip this infotype

  • perform fill_prop_value_cost_dist.

  • Fill proposed values for internal data infotype(0032)

*skip this infotype

  • PERFORM fill_prop_value_inter_data.

  • Fill proposed values for work tax area infotype(0208)

*skip this infotype

  • PERFORM fill_prop_value_wrk_area.

  • Fill proposed values for unemployment status infotype(0209)

*skip this infotype

  • PERFORM fill_prop_value_unemp_stat.

  • Fill proposed values for compensation programe infotype(0758)

PERFORM fill_prop_value_comp_prog.

  • Fill proposed values for time recording infotype(0050)

PERFORM fill_prop_value_time_rec.

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'

EXPORTING

pernr = pernr

  • massn = massn

actio = 'COP'

begda = v_inrec-eff_date

dialog_mode = '2'

IMPORTING

return1 = return

TABLES

proposed_values = t_proposed_values.

IF NOT return IS INITIAL.

MESSAGE ID return-id TYPE return-type NUMBER return-number

WITH return-message_v1 return-message_v2

return-message_v3 return-message_v4.

RAISE action_stopped.

ELSE.

MESSAGE s054(hrwpc_pcr).

ENDIF.

ENDFORM. " run_action_50

&----


*& Form run_action_52

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM run_action_52 .

action = '52'.

    • Fill proposed_values

  • Fill proposed values for action infotype(0000)

PERFORM fill_prop_values_action using action.

  • Fill proposed values for organization assignment infotype(0001)

PERFORM fill_prop_value_org_assign using action.

  • Fill proposed values for plant working time infotype(0007)

perform fill_prop_value_wrk_time using action.

  • Fill proposed values for basic pay infotype(0008)

PERFORM fill_prop_value_basic_pay using action.

  • Fill proposed values for cost distribution infotype(0027)

perform fill_prop_value_cost_dist.

  • Fill proposed values for internal data infotype(0032)

PERFORM fill_prop_value_inter_data.

  • Fill proposed values for work tax area infotype(0208)

PERFORM fill_prop_value_wrk_area.

  • Fill proposed values for unemployment status infotype(0209)

PERFORM fill_prop_value_unemp_stat.

  • Fill proposed values for withholding info infotype(0210)

perform fill_prop_withholding_info.

  • Fill proposed values for compensation programe infotype(0758)

PERFORM fill_prop_value_comp_prog.

  • Fill proposed values for time recording infotype(0050)

PERFORM fill_prop_value_time_rec.

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'

EXPORTING

pernr = pernr

  • massn = massn

actio = 'COP'

begda = v_inrec-eff_date

dialog_mode = '2'

IMPORTING

return1 = return

TABLES

proposed_values = t_proposed_values.

IF NOT return IS INITIAL.

MESSAGE ID return-id TYPE return-type NUMBER return-number

WITH return-message_v1 return-message_v2

return-message_v3 return-message_v4.

RAISE action_stopped.

ELSE.

MESSAGE s054(hrwpc_pcr).

ENDIF.

ENDFORM. " run_action_52

&----


*& Form run_action_53

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM run_action_53 .

  • Set action equal to '53'

action = '53'.

refresh t_proposed_values.

  • Fill proposed values for action infotype(0000)

PERFORM fill_prop_values_action using action.

  • Fill proposed values for organization assignment infotype(0001)

PERFORM fill_prop_value_org_assign using action.

  • Fill proposed values for plant working time infotype(0007)

perform fill_prop_value_wrk_time using action.

  • Fill proposed values for basic pay infotype(0008)

PERFORM fill_prop_value_basic_pay using action.

  • Fill proposed values for compensation programe infotype(0758)

PERFORM fill_prop_value_comp_prog.

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'

EXPORTING

pernr = pernr

  • massn = massn

actio = 'COP'

begda = v_inrec-eff_date

dialog_mode = '2'

IMPORTING

return1 = return

TABLES

proposed_values = t_proposed_values.

IF NOT return IS INITIAL.

MESSAGE ID return-id TYPE return-type NUMBER return-number

WITH return-message_v1 return-message_v2

return-message_v3 return-message_v4.

RAISE action_stopped.

ELSE.

MESSAGE s054(hrwpc_pcr).

ENDIF.

ENDFORM. " run_action_53

&----


*& Form fill_prop_values_action

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_values_action using p_action.

CLEAR w_proposed_values.

w_proposed_values-infty = '0000'.

w_proposed_values-fname = 'P0000-MASSN'.

w_proposed_values-fval = p_action.

APPEND w_proposed_values TO t_proposed_values.

If p_action = '50' .

CLEAR w_proposed_values.

w_proposed_values-infty = '0000'.

w_proposed_values-fname = 'P0000-MASSG'.

w_proposed_values-fval = '05'.

  • w_proposed_values-fval = v_inrec-reason_code.

APPEND w_proposed_values TO t_proposed_values.

elseif p_action = '52'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0000'.

w_proposed_values-fname = 'P0000-MASSG'.

w_proposed_values-fval = '04'.

  • w_proposed_values-fval = v_inrec-reason_code.

APPEND w_proposed_values TO t_proposed_values.

elseif p_action = '53'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0000'.

w_proposed_values-fname = 'P0000-MASSG'.

w_proposed_values-fval = '06'.

  • w_proposed_values-fval = v_inrec-reason_code.

APPEND w_proposed_values TO t_proposed_values.

endif.

ENDFORM. " fill_prop_values_action

&----


*& Form fill_prop_value_org_assign

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_org_assign using p_action.

if p_action = '50' or p_action = '52'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0001'.

w_proposed_values-fname = 'P0001-PLANS'.

w_proposed_values-fval = v_inrec-pos_num.

APPEND w_proposed_values TO t_proposed_values.

*CLEAR w_proposed_values.

  • w_proposed_values-infty = '0001'.

  • APPEND w_proposed_values TO t_proposed_values.

elseif p_action = '53'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0001'.

APPEND w_proposed_values TO t_proposed_values.

endif.

ENDFORM. " fill_prop_value_org_assign

&----


*& Form fill_prop_value_wrk_time

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_wrk_time using p_action .

if p_action = '50' or p_action = '53'.

  • SELECT * FROM zhr_wrk_schedule WHERE pernr = pernr UPTO 1 row.

  • ENDSELECT.

*

*

  • IF sy-subrc EQ 0.

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0007'.

  • w_proposed_values-fname = 'P0007-SCHKZ'.

  • w_proposed_values-fval = zhr_wrk_schedule-z_schkz.

  • APPEND w_proposed_values TO t_proposed_values.

*

*

  • IF z_wrk_schedule-z_pa NE 'X'.

*

  • zhr_wrk_schedule-z_pa = 'X'.

  • UPDATE z_wrk_schedule FROM zhr_wrk_schedule.

  • ENDIF.

*

  • ENDIF.

data: wa_schedule type zhr_wrk_schedule.

SELECT * FROM zhr_wrk_schedule

INTO wa_schedule

UP TO 1 ROWS

WHERE pernr = v_inrec-pernr .

ENDSELECT.

IF syst-subrc = 0.

  • Updating the proposed value table with work schedule rule

  • add_value: '0007' 'P0007-SCHKZ' wa_schedule-z_schkz.

w_proposed_values-infty = '0007'.

w_proposed_values-fname = 'P0007-SCHKZ'.

w_proposed_values-fval = wa_schedule-z_schkz.

APPEND w_proposed_values TO t_proposed_values.

v_pte = wa_schedule-z_pte.

  • If PA indicator in the table is initial the set it else keep it as it is

IF wa_schedule-z_pa IS INITIAL.

wa_schedule-z_pa = 'X'.

UPDATE zhr_wrk_schedule FROM wa_schedule.

ENDIF.

ELSE.

ENDIF.

elseif p_action = '53'.

clear w_proposed_values.

w_proposed_values-infty = '0007'.

APPEND w_proposed_values TO t_proposed_values.

endif.

ENDFORM. " fill_prop_value_wrk_time

&----


*& Form fill_prop_value_basic_pay

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_basic_pay using p_action .

if p_action = '50' or p_action = '53'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0008'.

w_proposed_values-fname = 'P0008-PREAS'.

*check reason

w_proposed_values-fval = pay_change_reason.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0008'.

w_proposed_values-fname = 'P0008-ANSAL'.

w_proposed_values-fval = v_inrec-new_salary.

APPEND w_proposed_values TO t_proposed_values.

elseif p_action = '52'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0008'.

APPEND w_proposed_values TO t_proposed_values.

endif.

ENDFORM. " fill_prop_value_basic_pay

&----


*& Form fill_prop_value_cost_dist

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_cost_dist .

DATA: t_0001 TYPE STANDARD TABLE OF p0001 WITH HEADER LINE,

t_0003 TYPE STANDARD TABLE OF p0003,

last_paydate TYPE sydatum.

DATA: w_0001 TYPE p0001,

w_0003 TYPE p0003.

CALL FUNCTION 'HR_READ_INFOTYPE'

EXPORTING

  • TCLAS = 'A'

pernr = pernr

infty = '0001'

begda = v_inrec-eff_date

TABLES

infty_tab = t_0001[]

EXCEPTIONS

INFTY_NOT_FOUND = 1

OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  • Sort the Employee records based on Begin Date

ENDIF.

SORT t_0001 BY begda DESCENDING.

  • Read the latest employee records

READ TABLE t_0001 INTO w_0001 INDEX 1.

IF sy-subrc = 0.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-KSTAR'.

w_proposed_values-fval = '01'.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-KBU01'.

w_proposed_values-fval = w_0001-bukrs.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-KST01'.

w_proposed_values-fval = w_0001-kostl.

APPEND w_proposed_values TO t_proposed_values.

  • Read the last payroll run date from PCL2

CALL FUNCTION 'HR_MX_LAST_NEXT_PAYROLL_PERIOD'

EXPORTING

pernr = v_inrec-pernr

  • IN_RGDIR =

IMPORTING

  • LAST_PAY_PERIOD =

  • LAST_PAY_YEAR =

  • LAST_FPPER =

  • LAST_FPBEG =

  • LAST_FPEND =

  • NEXT_PAY_PERIOD =

  • NEXT_PAY_YEAR =

  • NEXT_FPPER =

  • NEXT_FPBEG =

  • NEXT_FPEND =

last_paydate = last_paydate

  • OUT_RGDIR =

EXCEPTIONS

no_rgdir_entries = 1

it1_error = 2

t549a_error = 3

t549q_error = 4

OTHERS = 5

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-BEGDA'.

w_proposed_values-fval = last_paydate.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-ENDDA'.

w_proposed_values-fval = v_inrec-eff_date.

APPEND w_proposed_values TO t_proposed_values.

ENDIF.

ENDFORM. " fill_prop_value_cost_dist

&----


*& Form fill_prop_value_wrk_area

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_wrk_area .

CLEAR w_proposed_values.

w_proposed_values-infty = '0208'.

w_proposed_values-fname = 'P0208-WTART'.

w_proposed_values-fval = v_inrec-wrk_state.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0208'.

w_proposed_values-fname = 'P0208-ALLPC'.

w_proposed_values-fval = '100'.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_wrk_area

&----


*& Form fill_prop_value_inter_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_inter_data .

CLEAR w_proposed_values.

w_proposed_values-infty = '0032'.

w_proposed_values-fname = 'P0032-ZLOCN_TYPE'.

w_proposed_values-fval = v_inrec-loc_type.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0032'.

w_proposed_values-fname = 'P0032-ZLOCN_CODE'.

w_proposed_values-fval = v_inrec-loc_code.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0032'.

w_proposed_values-fname = 'P0032-ZPTE'.

w_proposed_values-fval = V_pte.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_inter_data

&----


*& Form fill_prop_value_unemp_stat

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_unemp_stat .

  • Pick work site and location code from ZHCM_MWS

select * from ZHCM_MWS up to 1 rows where CAESAR_CODE = v_inrec-loc_code .

endselect.

CLEAR w_proposed_values.

w_proposed_values-infty = '0209'.

w_proposed_values-fname = 'P0209-TAXAU'.

w_proposed_values-fval = ZHCM_MWS-taxau.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0209'.

w_proposed_values-fname = 'P0209-WKSIT'.

w_proposed_values-fval = ZHCM_MWS-wksit.

APPEND w_proposed_values TO t_proposed_values.

*CLEAR w_proposed_values.

  • w_proposed_values-infty = '0209'.

  • w_proposed_values-fname = 'P0209-TAXAU'.

  • w_proposed_values-fval = v_inrec-wrk_state.

  • APPEND w_proposed_values TO t_proposed_values.

*

ENDFORM. " fill_prop_value_unemp_stat

&----


*& Form fill_prop_value_comp_prog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_comp_prog .

CLEAR w_proposed_values.

w_proposed_values-infty = '0758'.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_comp_prog

&----


*& Form fill_prop_value_withhold_info

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_withhold_info .

CLEAR w_proposed_values.

w_proposed_values-infty = '0210'.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_withhold_info

&----


*& Form fill_prop_value_time_rec

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_time_rec .

CLEAR w_proposed_values.

w_proposed_values-infty = '0050'.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_time_rec

&----


*& Form fill_prop_withholding_info

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_withholding_info .

DATA: t_0006 TYPE STANDARD TABLE OF p0006 WITH HEADER LINE.

DATA: w_0006 TYPE p0006,

ls_proposed_values TYPE pprop.

DEFINE add_value.

w_proposed_values-infty = &1.

w_proposed_values-fname = &2.

w_proposed_values-fval = &3.

append w_proposed_values to t_proposed_values.

END-OF-DEFINITION.

  • Read permant adress of an employee

CALL FUNCTION 'HR_READ_INFOTYPE'

EXPORTING

  • TCLAS = 'A'

pernr = v_inrec-pernr

infty = '0006'

begda = v_inrec-datum

  • ENDDA = '99991231'

  • BYPASS_BUFFER = ' '

  • LEGACY_MODE = ' '

  • IMPORTING

  • SUBRC =

TABLES

infty_tab = t_0006[]

  • EXCEPTIONS

  • INFTY_NOT_FOUND = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • Sort the Employee records based on Begin Date

SORT t_0006 BY begda DESCENDING.

  • Read the latest employee records

READ TABLE t_0006 INTO w_0006 INDEX 1.

IF syst-subrc = 0.

  • Update the proposed value table with work tax area and filing status

add_value:

'0210' 'P0210-TAURT' w_0006-state,

'0210' 'P0210-TXSTA' '01'.

ENDIF.

ENDFORM. " fill_prop_withholding_info

&----


*& Form lock_emp

&----


  • text

----


  • -->P_PERNR text

----


FORM lock_emp USING l_pernr.

CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'

EXPORTING

number = l_pernr.

  • IMPORTING

  • RETURN = .

ENDFORM. " lock_emp

&----


*& Form unlock_emp

&----


  • text

----


  • -->P_PERNR text

----


FORM unlock_emp USING l_pernr.

CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'

EXPORTING

number = l_pernr.

  • IMPORTING

  • RETURN = .

ENDFORM. " unlock_emp

&----


*& Form maintain_infotype

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM maintain_infotype USING l_action .

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'

EXPORTING

pernr = pernr

  • massn = l_action

actio = 'COP'

tclas = 'A'

begda = v_inrec-eff_date

endda = '99991231'

  • OBJPS =

  • SEQNR =

  • SPRPS =

  • SUBTY =

  • WERKS =

  • PERSG =

  • PERSK =

  • PLANS =

DIALOG_MODE = '2'

  • LUW_MODE = '1'

  • NO_EXISTENCE_CHECK = ' '

  • NO_ENQUEUE = ' '

  • IMPORTING

  • RETURN =

  • RETURN1 =

  • HR_RETURN =

TABLES

proposed_values = t_proposed_values

  • MODIFIED_KEYS =

.

ENDFORM. " maintain_infotype

**********************************************************

&----


*& Form create_vacancy

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM create_vacancy .

DATA: new_date TYPE char10.

DATA: position TYPE pm0d1-seark.

  • position = v_inrec-oldposition.

position = v_objid.

PERFORM format_date USING v_inrec-vac_eff_dt CHANGING new_date.

IF v_inrec-vacancy_flag EQ '1'.

CALL FUNCTION 'ZOM_CREATE_VACANCY'

EXPORTING

vacancy_code = position

begda = new_date

  • ENDDA = '12319999'

.

ENDIF.

endform. " create_vacancy

&----


*& Form format_date

&----


  • text

----


  • -->U_DATE text

  • -->C_DATE text

----


FORM format_date USING u_date CHANGING c_date.

c_date0(2) = u_date4.

c_date2(2) = u_date6.

c_date+4(4) = u_date.

ENDFORM. "format_date

&----


*& Form find_position

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM find_position .

DATA: l_object TYPE hrobject_t,

l_begda TYPE begda,

l_endda TYPE endda,

t_object TYPE p1001tab,

w_object1 TYPE LINE OF p1001tab,

w_object TYPE LINE OF hrobject_t,

new_date TYPE char10.

w_object-plvar = '01'.

w_object-otype = 'P'.

w_object-objid = pernr.

APPEND w_object TO l_object.

CALL FUNCTION 'HR_HCP_GET_POSITION_FOR_EMPL'

EXPORTING

im_objecttab = l_object[]

im_begda = v_inrec-eff_date

im_endda = '99991231'

IMPORTING

ex_1001_tab = t_object[]

EXCEPTIONS

read_1001_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

EXIT.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

READ TABLE t_object INTO w_object1 INDEX 1.

v_objid = w_object1-sobid.

ENDFORM. " find_position

*&----


**& Form fill_prop_value_cost_dist

*&----


    • text

*----


    • --> p1 text

    • <-- p2 text

*----


*FORM fill_prop_value_cost_dist .

*

  • DATA: t_0001 TYPE STANDARD TABLE OF p0001 WITH HEADER LINE.

  • DATA: next_paydate TYPE sydatum,

  • w_0001 TYPE p0001.

  • CALL FUNCTION 'HR_READ_INFOTYPE'

  • EXPORTING

  • pernr = pernr

  • infty = '0001'

  • begda = eff_date

  • TABLES

  • infty_tab = t_0001[]

  • EXCEPTIONS

  • infty_not_found = 1

  • OTHERS = 2.

  • IF sy-subrc <> 0.

  • EXIT.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  • ENDIF.

*

  • SORT t_0001 BY begda DESCENDING.

*

    • Read the latest employee records

  • READ TABLE t_0001 INTO w_0001 INDEX 1.

  • IF sy-subrc = 0.

*

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-KSTAR'.

  • w_proposed_values-fval = '01'.

  • APPEND w_proposed_values TO t_proposed_values.

*

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-KBU01'.

  • w_proposed_values-fval = w_0001-bukrs.

  • APPEND w_proposed_values TO t_proposed_values.

*

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-KST01'.

  • w_proposed_values-fval = w_0001-kostl.

  • APPEND w_proposed_values TO t_proposed_values.

*

**Get the payroll period

  • CALL FUNCTION 'HR_MX_LAST_NEXT_PAYROLL_PERIOD'

  • EXPORTING

  • pernr = pernr

  • IMPORTING

  • last_paydate = next_paydate

  • EXCEPTIONS

  • no_rgdir_entries = 1

  • it1_error = 2

  • t549a_error = 3

  • t549q_error = 4

  • OTHERS = 5.

  • IF sy-subrc <> 0.

  • EXIT.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  • ENDIF.

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-BEGDA'.

  • w_proposed_values-fval = next_paydate.

  • APPEND w_proposed_values TO t_proposed_values.

*

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-ENDDA'.

  • w_proposed_values-fval = eff_date.

  • APPEND w_proposed_values TO t_proposed_values.

  • ENDIF.

*ENDFORM. " fill_prop_value_cost_dist

2 REPLIES 2
Read only

manubhutani
Active Contributor
0 Likes
535

Please reward points if helpful.

Please check out the code

----


***INCLUDE LHRWPC_PCR_WT_ACTIONSF01 .

----


&----


*& Form run_action_50

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM run_action_50 .

action = '50'.

  • Fill proposed values for action infotype(0000)

PERFORM fill_prop_values_action using action.

  • Fill proposed values for organization assignment infotype(0001)

PERFORM fill_prop_value_org_assign using action.

  • Fill proposed values for plant working time infotype(0007)

  • perform fill_prop_value_wrk_time.

  • Fill proposed values for basic pay infotype(0008)

PERFORM fill_prop_value_basic_pay using action.

  • Fill proposed values for cost distribution infotype(0027)

*skip this infotype

  • perform fill_prop_value_cost_dist.

  • Fill proposed values for internal data infotype(0032)

*skip this infotype

  • PERFORM fill_prop_value_inter_data.

  • Fill proposed values for work tax area infotype(0208)

*skip this infotype

  • PERFORM fill_prop_value_wrk_area.

  • Fill proposed values for unemployment status infotype(0209)

*skip this infotype

  • PERFORM fill_prop_value_unemp_stat.

  • Fill proposed values for compensation programe infotype(0758)

PERFORM fill_prop_value_comp_prog.

  • Fill proposed values for time recording infotype(0050)

PERFORM fill_prop_value_time_rec.

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'

EXPORTING

pernr = pernr

  • massn = massn

actio = 'COP'

begda = v_inrec-eff_date

dialog_mode = '2'

IMPORTING

return1 = return

TABLES

proposed_values = t_proposed_values.

IF NOT return IS INITIAL.

MESSAGE ID return-id TYPE return-type NUMBER return-number

WITH return-message_v1 return-message_v2

return-message_v3 return-message_v4.

RAISE action_stopped.

ELSE.

MESSAGE s054(hrwpc_pcr).

ENDIF.

ENDFORM. " run_action_50

&----


*& Form run_action_52

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM run_action_52 .

action = '52'.

    • Fill proposed_values

  • Fill proposed values for action infotype(0000)

PERFORM fill_prop_values_action using action.

  • Fill proposed values for organization assignment infotype(0001)

PERFORM fill_prop_value_org_assign using action.

  • Fill proposed values for plant working time infotype(0007)

perform fill_prop_value_wrk_time using action.

  • Fill proposed values for basic pay infotype(0008)

PERFORM fill_prop_value_basic_pay using action.

  • Fill proposed values for cost distribution infotype(0027)

perform fill_prop_value_cost_dist.

  • Fill proposed values for internal data infotype(0032)

PERFORM fill_prop_value_inter_data.

  • Fill proposed values for work tax area infotype(0208)

PERFORM fill_prop_value_wrk_area.

  • Fill proposed values for unemployment status infotype(0209)

PERFORM fill_prop_value_unemp_stat.

  • Fill proposed values for withholding info infotype(0210)

perform fill_prop_withholding_info.

  • Fill proposed values for compensation programe infotype(0758)

PERFORM fill_prop_value_comp_prog.

  • Fill proposed values for time recording infotype(0050)

PERFORM fill_prop_value_time_rec.

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'

EXPORTING

pernr = pernr

  • massn = massn

actio = 'COP'

begda = v_inrec-eff_date

dialog_mode = '2'

IMPORTING

return1 = return

TABLES

proposed_values = t_proposed_values.

IF NOT return IS INITIAL.

MESSAGE ID return-id TYPE return-type NUMBER return-number

WITH return-message_v1 return-message_v2

return-message_v3 return-message_v4.

RAISE action_stopped.

ELSE.

MESSAGE s054(hrwpc_pcr).

ENDIF.

ENDFORM. " run_action_52

&----


*& Form run_action_53

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM run_action_53 .

  • Set action equal to '53'

action = '53'.

refresh t_proposed_values.

  • Fill proposed values for action infotype(0000)

PERFORM fill_prop_values_action using action.

  • Fill proposed values for organization assignment infotype(0001)

PERFORM fill_prop_value_org_assign using action.

  • Fill proposed values for plant working time infotype(0007)

perform fill_prop_value_wrk_time using action.

  • Fill proposed values for basic pay infotype(0008)

PERFORM fill_prop_value_basic_pay using action.

  • Fill proposed values for compensation programe infotype(0758)

PERFORM fill_prop_value_comp_prog.

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'

EXPORTING

pernr = pernr

  • massn = massn

actio = 'COP'

begda = v_inrec-eff_date

dialog_mode = '2'

IMPORTING

return1 = return

TABLES

proposed_values = t_proposed_values.

IF NOT return IS INITIAL.

MESSAGE ID return-id TYPE return-type NUMBER return-number

WITH return-message_v1 return-message_v2

return-message_v3 return-message_v4.

RAISE action_stopped.

ELSE.

MESSAGE s054(hrwpc_pcr).

ENDIF.

ENDFORM. " run_action_53

&----


*& Form fill_prop_values_action

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_values_action using p_action.

CLEAR w_proposed_values.

w_proposed_values-infty = '0000'.

w_proposed_values-fname = 'P0000-MASSN'.

w_proposed_values-fval = p_action.

APPEND w_proposed_values TO t_proposed_values.

If p_action = '50' .

CLEAR w_proposed_values.

w_proposed_values-infty = '0000'.

w_proposed_values-fname = 'P0000-MASSG'.

w_proposed_values-fval = '05'.

  • w_proposed_values-fval = v_inrec-reason_code.

APPEND w_proposed_values TO t_proposed_values.

elseif p_action = '52'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0000'.

w_proposed_values-fname = 'P0000-MASSG'.

w_proposed_values-fval = '04'.

  • w_proposed_values-fval = v_inrec-reason_code.

APPEND w_proposed_values TO t_proposed_values.

elseif p_action = '53'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0000'.

w_proposed_values-fname = 'P0000-MASSG'.

w_proposed_values-fval = '06'.

  • w_proposed_values-fval = v_inrec-reason_code.

APPEND w_proposed_values TO t_proposed_values.

endif.

ENDFORM. " fill_prop_values_action

&----


*& Form fill_prop_value_org_assign

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_org_assign using p_action.

if p_action = '50' or p_action = '52'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0001'.

w_proposed_values-fname = 'P0001-PLANS'.

w_proposed_values-fval = v_inrec-pos_num.

APPEND w_proposed_values TO t_proposed_values.

*CLEAR w_proposed_values.

  • w_proposed_values-infty = '0001'.

  • APPEND w_proposed_values TO t_proposed_values.

elseif p_action = '53'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0001'.

APPEND w_proposed_values TO t_proposed_values.

endif.

ENDFORM. " fill_prop_value_org_assign

&----


*& Form fill_prop_value_wrk_time

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_wrk_time using p_action .

if p_action = '50' or p_action = '53'.

  • SELECT * FROM zhr_wrk_schedule WHERE pernr = pernr UPTO 1 row.

  • ENDSELECT.

*

*

  • IF sy-subrc EQ 0.

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0007'.

  • w_proposed_values-fname = 'P0007-SCHKZ'.

  • w_proposed_values-fval = zhr_wrk_schedule-z_schkz.

  • APPEND w_proposed_values TO t_proposed_values.

*

*

  • IF z_wrk_schedule-z_pa NE 'X'.

*

  • zhr_wrk_schedule-z_pa = 'X'.

  • UPDATE z_wrk_schedule FROM zhr_wrk_schedule.

  • ENDIF.

*

  • ENDIF.

data: wa_schedule type zhr_wrk_schedule.

SELECT * FROM zhr_wrk_schedule

INTO wa_schedule

UP TO 1 ROWS

WHERE pernr = v_inrec-pernr .

ENDSELECT.

IF syst-subrc = 0.

  • Updating the proposed value table with work schedule rule

  • add_value: '0007' 'P0007-SCHKZ' wa_schedule-z_schkz.

w_proposed_values-infty = '0007'.

w_proposed_values-fname = 'P0007-SCHKZ'.

w_proposed_values-fval = wa_schedule-z_schkz.

APPEND w_proposed_values TO t_proposed_values.

v_pte = wa_schedule-z_pte.

  • If PA indicator in the table is initial the set it else keep it as it is

IF wa_schedule-z_pa IS INITIAL.

wa_schedule-z_pa = 'X'.

UPDATE zhr_wrk_schedule FROM wa_schedule.

ENDIF.

ELSE.

ENDIF.

elseif p_action = '53'.

clear w_proposed_values.

w_proposed_values-infty = '0007'.

APPEND w_proposed_values TO t_proposed_values.

endif.

ENDFORM. " fill_prop_value_wrk_time

&----


*& Form fill_prop_value_basic_pay

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_basic_pay using p_action .

if p_action = '50' or p_action = '53'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0008'.

w_proposed_values-fname = 'P0008-PREAS'.

*check reason

w_proposed_values-fval = pay_change_reason.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0008'.

w_proposed_values-fname = 'P0008-ANSAL'.

w_proposed_values-fval = v_inrec-new_salary.

APPEND w_proposed_values TO t_proposed_values.

elseif p_action = '52'.

CLEAR w_proposed_values.

w_proposed_values-infty = '0008'.

APPEND w_proposed_values TO t_proposed_values.

endif.

ENDFORM. " fill_prop_value_basic_pay

&----


*& Form fill_prop_value_cost_dist

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_cost_dist .

DATA: t_0001 TYPE STANDARD TABLE OF p0001 WITH HEADER LINE,

t_0003 TYPE STANDARD TABLE OF p0003,

last_paydate TYPE sydatum.

DATA: w_0001 TYPE p0001,

w_0003 TYPE p0003.

CALL FUNCTION 'HR_READ_INFOTYPE'

EXPORTING

  • TCLAS = 'A'

pernr = pernr

infty = '0001'

begda = v_inrec-eff_date

TABLES

infty_tab = t_0001[]

EXCEPTIONS

INFTY_NOT_FOUND = 1

OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  • Sort the Employee records based on Begin Date

ENDIF.

SORT t_0001 BY begda DESCENDING.

  • Read the latest employee records

READ TABLE t_0001 INTO w_0001 INDEX 1.

IF sy-subrc = 0.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-KSTAR'.

w_proposed_values-fval = '01'.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-KBU01'.

w_proposed_values-fval = w_0001-bukrs.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-KST01'.

w_proposed_values-fval = w_0001-kostl.

APPEND w_proposed_values TO t_proposed_values.

  • Read the last payroll run date from PCL2

CALL FUNCTION 'HR_MX_LAST_NEXT_PAYROLL_PERIOD'

EXPORTING

pernr = v_inrec-pernr

  • IN_RGDIR =

IMPORTING

  • LAST_PAY_PERIOD =

  • LAST_PAY_YEAR =

  • LAST_FPPER =

  • LAST_FPBEG =

  • LAST_FPEND =

  • NEXT_PAY_PERIOD =

  • NEXT_PAY_YEAR =

  • NEXT_FPPER =

  • NEXT_FPBEG =

  • NEXT_FPEND =

last_paydate = last_paydate

  • OUT_RGDIR =

EXCEPTIONS

no_rgdir_entries = 1

it1_error = 2

t549a_error = 3

t549q_error = 4

OTHERS = 5

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-BEGDA'.

w_proposed_values-fval = last_paydate.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0027'.

w_proposed_values-fname = 'P0027-ENDDA'.

w_proposed_values-fval = v_inrec-eff_date.

APPEND w_proposed_values TO t_proposed_values.

ENDIF.

ENDFORM. " fill_prop_value_cost_dist

&----


*& Form fill_prop_value_wrk_area

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_wrk_area .

CLEAR w_proposed_values.

w_proposed_values-infty = '0208'.

w_proposed_values-fname = 'P0208-WTART'.

w_proposed_values-fval = v_inrec-wrk_state.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0208'.

w_proposed_values-fname = 'P0208-ALLPC'.

w_proposed_values-fval = '100'.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_wrk_area

&----


*& Form fill_prop_value_inter_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_inter_data .

CLEAR w_proposed_values.

w_proposed_values-infty = '0032'.

w_proposed_values-fname = 'P0032-ZLOCN_TYPE'.

w_proposed_values-fval = v_inrec-loc_type.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0032'.

w_proposed_values-fname = 'P0032-ZLOCN_CODE'.

w_proposed_values-fval = v_inrec-loc_code.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0032'.

w_proposed_values-fname = 'P0032-ZPTE'.

w_proposed_values-fval = V_pte.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_inter_data

&----


*& Form fill_prop_value_unemp_stat

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_unemp_stat .

  • Pick work site and location code from ZHCM_MWS

select * from ZHCM_MWS up to 1 rows where CAESAR_CODE = v_inrec-loc_code .

endselect.

CLEAR w_proposed_values.

w_proposed_values-infty = '0209'.

w_proposed_values-fname = 'P0209-TAXAU'.

w_proposed_values-fval = ZHCM_MWS-taxau.

APPEND w_proposed_values TO t_proposed_values.

CLEAR w_proposed_values.

w_proposed_values-infty = '0209'.

w_proposed_values-fname = 'P0209-WKSIT'.

w_proposed_values-fval = ZHCM_MWS-wksit.

APPEND w_proposed_values TO t_proposed_values.

*CLEAR w_proposed_values.

  • w_proposed_values-infty = '0209'.

  • w_proposed_values-fname = 'P0209-TAXAU'.

  • w_proposed_values-fval = v_inrec-wrk_state.

  • APPEND w_proposed_values TO t_proposed_values.

*

ENDFORM. " fill_prop_value_unemp_stat

&----


*& Form fill_prop_value_comp_prog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_comp_prog .

CLEAR w_proposed_values.

w_proposed_values-infty = '0758'.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_comp_prog

&----


*& Form fill_prop_value_withhold_info

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_withhold_info .

CLEAR w_proposed_values.

w_proposed_values-infty = '0210'.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_withhold_info

&----


*& Form fill_prop_value_time_rec

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_value_time_rec .

CLEAR w_proposed_values.

w_proposed_values-infty = '0050'.

APPEND w_proposed_values TO t_proposed_values.

ENDFORM. " fill_prop_value_time_rec

&----


*& Form fill_prop_withholding_info

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_prop_withholding_info .

DATA: t_0006 TYPE STANDARD TABLE OF p0006 WITH HEADER LINE.

DATA: w_0006 TYPE p0006,

ls_proposed_values TYPE pprop.

DEFINE add_value.

w_proposed_values-infty = &1.

w_proposed_values-fname = &2.

w_proposed_values-fval = &3.

append w_proposed_values to t_proposed_values.

END-OF-DEFINITION.

  • Read permant adress of an employee

CALL FUNCTION 'HR_READ_INFOTYPE'

EXPORTING

  • TCLAS = 'A'

pernr = v_inrec-pernr

infty = '0006'

begda = v_inrec-datum

  • ENDDA = '99991231'

  • BYPASS_BUFFER = ' '

  • LEGACY_MODE = ' '

  • IMPORTING

  • SUBRC =

TABLES

infty_tab = t_0006[]

  • EXCEPTIONS

  • INFTY_NOT_FOUND = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • Sort the Employee records based on Begin Date

SORT t_0006 BY begda DESCENDING.

  • Read the latest employee records

READ TABLE t_0006 INTO w_0006 INDEX 1.

IF syst-subrc = 0.

  • Update the proposed value table with work tax area and filing status

add_value:

'0210' 'P0210-TAURT' w_0006-state,

'0210' 'P0210-TXSTA' '01'.

ENDIF.

ENDFORM. " fill_prop_withholding_info

&----


*& Form lock_emp

&----


  • text

----


  • -->P_PERNR text

----


FORM lock_emp USING l_pernr.

CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'

EXPORTING

number = l_pernr.

  • IMPORTING

  • RETURN = .

ENDFORM. " lock_emp

&----


*& Form unlock_emp

&----


  • text

----


  • -->P_PERNR text

----


FORM unlock_emp USING l_pernr.

CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'

EXPORTING

number = l_pernr.

  • IMPORTING

  • RETURN = .

ENDFORM. " unlock_emp

&----


*& Form maintain_infotype

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM maintain_infotype USING l_action .

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'

EXPORTING

pernr = pernr

  • massn = l_action

actio = 'COP'

tclas = 'A'

begda = v_inrec-eff_date

endda = '99991231'

  • OBJPS =

  • SEQNR =

  • SPRPS =

  • SUBTY =

  • WERKS =

  • PERSG =

  • PERSK =

  • PLANS =

DIALOG_MODE = '2'

  • LUW_MODE = '1'

  • NO_EXISTENCE_CHECK = ' '

  • NO_ENQUEUE = ' '

  • IMPORTING

  • RETURN =

  • RETURN1 =

  • HR_RETURN =

TABLES

proposed_values = t_proposed_values

  • MODIFIED_KEYS =

.

ENDFORM. " maintain_infotype

**********************************************************

&----


*& Form create_vacancy

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM create_vacancy .

DATA: new_date TYPE char10.

DATA: position TYPE pm0d1-seark.

  • position = v_inrec-oldposition.

position = v_objid.

PERFORM format_date USING v_inrec-vac_eff_dt CHANGING new_date.

IF v_inrec-vacancy_flag EQ '1'.

CALL FUNCTION 'ZOM_CREATE_VACANCY'

EXPORTING

vacancy_code = position

begda = new_date

  • ENDDA = '12319999'

.

ENDIF.

endform. " create_vacancy

&----


*& Form format_date

&----


  • text

----


  • -->U_DATE text

  • -->C_DATE text

----


FORM format_date USING u_date CHANGING c_date.

c_date0(2) = u_date4.

c_date2(2) = u_date6.

c_date+4(4) = u_date.

ENDFORM. "format_date

&----


*& Form find_position

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM find_position .

DATA: l_object TYPE hrobject_t,

l_begda TYPE begda,

l_endda TYPE endda,

t_object TYPE p1001tab,

w_object1 TYPE LINE OF p1001tab,

w_object TYPE LINE OF hrobject_t,

new_date TYPE char10.

w_object-plvar = '01'.

w_object-otype = 'P'.

w_object-objid = pernr.

APPEND w_object TO l_object.

CALL FUNCTION 'HR_HCP_GET_POSITION_FOR_EMPL'

EXPORTING

im_objecttab = l_object[]

im_begda = v_inrec-eff_date

im_endda = '99991231'

IMPORTING

ex_1001_tab = t_object[]

EXCEPTIONS

read_1001_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

EXIT.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

READ TABLE t_object INTO w_object1 INDEX 1.

v_objid = w_object1-sobid.

ENDFORM. " find_position

*&----


**& Form fill_prop_value_cost_dist

*&----


    • text

*----


    • --> p1 text

    • <-- p2 text

*----


*FORM fill_prop_value_cost_dist .

*

  • DATA: t_0001 TYPE STANDARD TABLE OF p0001 WITH HEADER LINE.

  • DATA: next_paydate TYPE sydatum,

  • w_0001 TYPE p0001.

  • CALL FUNCTION 'HR_READ_INFOTYPE'

  • EXPORTING

  • pernr = pernr

  • infty = '0001'

  • begda = eff_date

  • TABLES

  • infty_tab = t_0001[]

  • EXCEPTIONS

  • infty_not_found = 1

  • OTHERS = 2.

  • IF sy-subrc <> 0.

  • EXIT.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  • ENDIF.

*

  • SORT t_0001 BY begda DESCENDING.

*

    • Read the latest employee records

  • READ TABLE t_0001 INTO w_0001 INDEX 1.

  • IF sy-subrc = 0.

*

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-KSTAR'.

  • w_proposed_values-fval = '01'.

  • APPEND w_proposed_values TO t_proposed_values.

*

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-KBU01'.

  • w_proposed_values-fval = w_0001-bukrs.

  • APPEND w_proposed_values TO t_proposed_values.

*

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-KST01'.

  • w_proposed_values-fval = w_0001-kostl.

  • APPEND w_proposed_values TO t_proposed_values.

*

**Get the payroll period

  • CALL FUNCTION 'HR_MX_LAST_NEXT_PAYROLL_PERIOD'

  • EXPORTING

  • pernr = pernr

  • IMPORTING

  • last_paydate = next_paydate

  • EXCEPTIONS

  • no_rgdir_entries = 1

  • it1_error = 2

  • t549a_error = 3

  • t549q_error = 4

  • OTHERS = 5.

  • IF sy-subrc <> 0.

  • EXIT.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  • ENDIF.

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-BEGDA'.

  • w_proposed_values-fval = next_paydate.

  • APPEND w_proposed_values TO t_proposed_values.

*

  • CLEAR w_proposed_values.

  • w_proposed_values-infty = '0027'.

  • w_proposed_values-fname = 'P0027-ENDDA'.

  • w_proposed_values-fval = eff_date.

  • APPEND w_proposed_values TO t_proposed_values.

  • ENDIF.

*ENDFORM. " fill_prop_value_cost_dist

Read only

0 Likes
534

thanks gaurav.m