cancel
Showing results for 
Search instead for 
Did you mean: 

How to Use BAPI_HRMASTER_SAVE_REPL_MULT. Thanks

Former Member
0 Kudos

Dear all,

Do you know how to update an employee's organization and postion using bapi 'BAPI_HRMASTER_SAVE_REPL_MULT'.

First, I get the Organizaiton Data By BAPI 'BAPI_EMPLOYEE_GETDATA'

Then I transfer them to the BAPI 'BAPI_HRMASTER_SAVE_REPL_MULT'

But, After commit, The Data in Table PA0001 has no change

Why? Thanks for you help ahead.

Below is my test program.

==============================================

REPORT z_hr_persondata_modify_03 MESSAGE-ID zm01

LINE-SIZE 132

LINE-COUNT 65

NO STANDARD PAGE HEADING.

*-< Header for an HR Object (Master Data or Organizational Data)

DATA: it_bapihrobj

LIKE BAPIHROBJ OCCURS 0 WITH HEADER LINE.

*-< HR: Transported Infotypes and Subtypes for an Object

DATA: it_bapihrinf

LIKE BAPIHRINF OCCURS 0 WITH HEADER LINE.

*-< HR Master Record: Infotype 0001 (Org. Assignment)

DATA: it_bapip0001b

LIKE BAPIP0001B OCCURS 0 WITH HEADER LINE.

*-< HR: HR Master Record Infotype 0001 (Org. Assignment)

DATA: it_bapihr0001

LIKE BAPIHR0001 OCCURS 0 WITH HEADER LINE.

*-< Return Parameter

DATA: it_return

LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

Refresh it_return.

CALL FUNCTION 'BAPI_EMPLOYEE_GETDATA'

EXPORTING

EMPLOYEE_ID = '00001732'

TABLES

ORG_ASSIGNMENT = it_bapip0001b.

REFRESH it_bapihrobj. CLEAR it_bapihrobj.

REFRESH it_bapihrinf. CLEAR it_bapihrinf.

REFRESH it_bapihr0001. CLEAR it_bapihr0001.

LOOP AT it_bapip0001b.

*-< Append Data to it_bapihrobj

it_bapihrobj-PLAN_VER = '01'.

it_bapihrobj-OBJ_TYPE = 'P '.

it_bapihrobj-OBJ_ID = it_bapip0001b-PERNO.

it_bapihrobj-PROOF = 'X'.

it_bapihrobj-OPERATOR = 'U'.

APPEND it_bapihrobj.

*-< Append Data to it_bapihrinf

it_bapihrinf-PLAN_VER = '01'.

it_bapihrinf-OBJ_TYPE = 'P '.

it_bapihrinf-OBJ_ID = it_bapip0001b-PERNO.

it_bapihrinf-INFOTYPE = it_bapip0001b-INFOTYPE.

it_bapihrinf-SUBTYPE = it_bapip0001b-SUBTYPE.

it_bapihrinf-FROM_DATE = '19980205'.

it_bapihrinf-TO_DATE = '99991231'.

APPEND it_bapihrinf.

*-< Append Data to it_bapihr0001

it_bapihr0001-OBJ_ID = it_bapip0001b-PERNO.

it_bapihr0001-INFOTYPE = it_bapip0001b-INFOTYPE.

it_bapihr0001-SUBTYPE = it_bapip0001b-SUBTYPE.

it_bapihr0001-OBJECT_IDENTIFICATION = it_bapip0001b-OBJECT_ID.

it_bapihr0001-LOCKINDIC = it_bapip0001b-LOCK_IND.

it_bapihr0001-TO_DATE = it_bapip0001b-TO_DATE.

it_bapihr0001-FROM_DATE = it_bapip0001b-FROM_DATE.

it_bapihr0001-IT_REC_NO = it_bapip0001b-SEQNO.

it_bapihr0001-CHANGED_ON = it_bapip0001b-CH_ON.

it_bapihr0001-CHANGED_BY = it_bapip0001b-CHANGED_BY.

  • it_bapihr0001-CHANGED_BY = 'LiangLiang'.

it_bapihr0001-HIST_FLAG = it_bapip0001b-HIST_FLAG.

it_bapihr0001-INFOTYPE_TEXT_EXISTS = it_bapip0001b-TEXTFLAG.

it_bapihr0001-REFERENCE_FILEDS_EXIST = it_bapip0001b-REF_FLAG.

it_bapihr0001-CONFIRMATION_FIELDS_EXIST = it_bapip0001b-CNFRM_FLAG.

it_bapihr0001-INFOTYPE_SCREEN_CONTROL = it_bapip0001b-SCREENCTRL.

it_bapihr0001-REASON_TO_CHANGE_MASTER_DATA = it_bapip0001b-REASON.

it_bapihr0001-FLAG_1 = it_bapip0001b-FLAG1.

it_bapihr0001-FLAG_2 = it_bapip0001b-FLAG2.

it_bapihr0001-FLAG_3 = it_bapip0001b-FLAG3.

it_bapihr0001-FLAG_4 = it_bapip0001b-FLAG4.

it_bapihr0001-RESERVED_FIELD_1 = it_bapip0001b-RESERVED1.

it_bapihr0001-RESERVED_FIELD_2 = it_bapip0001b-RESERVED2.

it_bapihr0001-COMP_CODE = it_bapip0001b-COMP_CODE.

it_bapihr0001-PERS_AREA = it_bapip0001b-PERS_AREA.

it_bapihr0001-EMPLOYEE_GROUP = it_bapip0001b-EGROUP.

it_bapihr0001-EMPLOYEE_SUBGROUP = it_bapip0001b-ESUBGROUP.

it_bapihr0001-ORGANIZATIONAL_KEY = it_bapip0001b-ORG_KEY.

it_bapihr0001-BUSINESS_AREA = it_bapip0001b-BUS_AREA.

it_bapihr0001-PERSONNEL_SUBAREA = it_bapip0001b-P_SUBAREA.

it_bapihr0001-LEGAL_PERSON = it_bapip0001b-LEG_PERSON.

it_bapihr0001-PAYROLL_AREA = it_bapip0001b-PAYAREA.

it_bapihr0001-EMPLOYMENT_CONTRACT = it_bapip0001b-CONTRACT.

it_bapihr0001-COSTCENTER = it_bapip0001b-COSTCENTER.

  • it_bapihr0001-ORG_UNIT = it_bapip0001b-ORG_UNIT.

it_bapihr0001-ORG_UNIT = '50020339'.

it_bapihr0001-POSITION = it_bapip0001b-POSITION.

it_bapihr0001-JOB = it_bapip0001b-JOB.

it_bapihr0001-SUPERVISOR_AREA = it_bapip0001b-SUPERVISOR.

it_bapihr0001-PAYROLL_ADMINISTRATOR = it_bapip0001b-PAYR_ADMIN.

it_bapihr0001-MASTER_DATA_ADMINISTRATOR = it_bapip0001b-PERS_ADMIN.

it_bapihr0001-TIME_ADMINISTRATOR = it_bapip0001b-TIME_ADMIN.

it_bapihr0001-SORT_NAME = it_bapip0001b-SORT_NAME.

it_bapihr0001-FORMATTED_NAME = it_bapip0001b-NAME.

it_bapihr0001-OBJ_TYPE = it_bapip0001b-OBJECTTYPE.

it_bapihr0001-ADMINISTRATOR_GROUP = it_bapip0001b-ADMINGROUP.

it_bapihr0001-CO_AREA = it_bapip0001b-CO_AREA.

it_bapihr0001-FUNDS_CTR = it_bapip0001b-FUNDS_CTR.

it_bapihr0001-FUND = it_bapip0001b-FUND.

  • it_bapihr0001- = it_bapip0001b-ORGTXT

  • it_bapihr0001- = it_bapip0001b-JOBTXT

  • it_bapihr0001- = it_bapip0001b-POSTXT

  • it_bapihr0001- = it_bapip0001b-FKBER

  • it_bapihr0001- = it_bapip0001b-GRANT_NBR

APPEND it_bapihr0001.

ENDLOOP.

CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'

EXPORTING

NUMBER = '00001732'.

REFRESH it_return. CLEAR it_return.

CALL FUNCTION 'BAPI_HRMASTER_SAVE_REPL_MULT'

TABLES

HR_OBJECT_HEADER = it_bapihrobj

HR_INFOTYPE_HEADER = it_bapihrinf

  • EMPLOYEE_PERSONNEL_ACTION =

EMPLOYEE_ORG_ASSIGNMENT = it_bapihr0001

RETURN = it_return.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'

EXPORTING

NUMBER = '00001732'.

Accepted Solutions (0)

Answers (1)

Answers (1)

suresh_datti
Active Contributor
0 Kudos

I doubt if you can change an Employee's Position without an Action.. You probably have to pass it0000 data also through the parameter employee_personnel_action.

Regards,

Suresh Datti

Former Member
0 Kudos

Thanks, I will try it right now

Former Member
0 Kudos

Suresh Datti.

Thank you.

I tried just now. But errors encountered. Error Message is 'The EMPLOYEE_ORG_ASSIGNMENT-JOB field is not maintainable in dialog, so it is ignored'.

I doubt that the action type is error or I do not have the authorization to modify the EMPLOYEE_ORG_ASSIGNMENT-JOB.

Am I right?

Many Thanks.

<b>====Below Is My Test Program=====</b>

REPORT z_hr_persondata_modify_03 MESSAGE-ID zm01

LINE-SIZE 132

LINE-COUNT 65

NO STANDARD PAGE HEADING.

--


<< Data Define >>--

*-< Tables >

*-< BAPI Related Internal Tables - Begin >

*-< Header for an HR Object (Master Data or Organizational Data)

DATA: it_bapihrobj

LIKE BAPIHROBJ OCCURS 0 WITH HEADER LINE.

*-< HR: Transported Infotypes and Subtypes for an Object

DATA: it_bapihrinf

LIKE BAPIHRINF OCCURS 0 WITH HEADER LINE.

*-< HR: HR Master Record Infotype 0000 (Actions)

DATA: it_bapihr0000

LIKE bapihr0000 OCCURS 0 WITH HEADER LINE.

*-< HR Master Record: Infotype 0001 (Org. Assignment)

DATA: it_bapip0001b

LIKE BAPIP0001B OCCURS 0 WITH HEADER LINE.

*-< HR: HR Master Record Infotype 0001 (Org. Assignment)

DATA: it_bapihr0001

LIKE BAPIHR0001 OCCURS 0 WITH HEADER LINE.

*-< Return Parameter

DATA: it_return

LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

*-< BAPI Related Internal Tables - End >

Refresh it_return.

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

DATA: wk_action_type LIKE pa0000-massn,

wk_action_reason LIKE pa0000-massg,

wk_user_defined_status LIKE pa0000-stat1,

wk_employment_status LIKE pa0000-stat2,

wk_special_payment_status LIKE pa0000-stat3.

SELECT SINGLE massn massg stat1 stat2 stat3

INTO (wk_action_type, wk_action_reason,wk_user_defined_status,

wk_employment_status, wk_special_payment_status)

FROM PA0000

WHERE pernr = '00001732'.

CALL FUNCTION 'BAPI_EMPLOYEE_GETDATA'

EXPORTING

EMPLOYEE_ID = '00001732'

TABLES

ORG_ASSIGNMENT = it_bapip0001b.

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

REFRESH it_bapihrobj. CLEAR it_bapihrobj.

REFRESH it_bapihrinf. CLEAR it_bapihrinf.

REFRESH it_bapihr0000. CLEAR it_bapihr0000.

REFRESH it_bapihr0001. CLEAR it_bapihr0001.

LOOP AT it_bapip0001b.

*-< Append Data to it_bapihrobj

it_bapihrobj-PLAN_VER = '01'.

it_bapihrobj-OBJ_TYPE = 'P '.

it_bapihrobj-OBJ_ID = it_bapip0001b-PERNO.

it_bapihrobj-PROOF = 'X'.

it_bapihrobj-OPERATOR = 'U'.

APPEND it_bapihrobj.

*-< Append Data to it_bapihrinf

it_bapihrinf-PLAN_VER = '01'.

it_bapihrinf-OBJ_TYPE = 'P '.

it_bapihrinf-OBJ_ID = it_bapip0001b-PERNO.

it_bapihrinf-INFOTYPE = it_bapip0001b-INFOTYPE.

it_bapihrinf-SUBTYPE = it_bapip0001b-SUBTYPE.

it_bapihrinf-FROM_DATE = '19980205'.

it_bapihrinf-TO_DATE = '99991231'.

APPEND it_bapihrinf.

*-< Append Data to it_bapihr0000

it_bapihr0000-OBJ_ID = it_bapip0001b-PERNO.

it_bapihr0000-INFOTYPE = it_bapip0001b-INFOTYPE.

it_bapihr0000-SUBTYPE = it_bapip0001b-SUBTYPE.

it_bapihr0001-OBJECT_IDENTIFICATION = it_bapip0001b-OBJECT_ID.

it_bapihr0001-LOCKINDIC = it_bapip0001b-LOCK_IND.

it_bapihr0000-TO_DATE = it_bapip0001b-TO_DATE.

it_bapihr0000-FROM_DATE = it_bapip0001b-FROM_DATE.

it_bapihr0000-IT_REC_NO = it_bapip0001b-SEQNO.

it_bapihr0000-CHANGED_ON = it_bapip0001b-CH_ON.

it_bapihr0000-CHANGED_BY = it_bapip0001b-CHANGED_BY.

  • it_bapihr0000-CHANGED_BY = 'LiangLiang'.

it_bapihr0000-HIST_FLAG = it_bapip0001b-HIST_FLAG.

it_bapihr0000-INFOTYPE_TEXT_EXISTS = it_bapip0001b-TEXTFLAG.

it_bapihr0000-REFERENCE_FILEDS_EXIST = it_bapip0001b-REF_FLAG.

it_bapihr0000-CONFIRMATION_FIELDS_EXIST = it_bapip0001b-CNFRM_FLAG.

it_bapihr0000-INFOTYPE_SCREEN_CONTROL = it_bapip0001b-SCREENCTRL.

it_bapihr0000-REASON_TO_CHANGE_MASTER_DATA = it_bapip0001b-REASON.

it_bapihr0000-FLAG_1 = it_bapip0001b-FLAG1.

it_bapihr0000-FLAG_2 = it_bapip0001b-FLAG2.

it_bapihr0000-FLAG_3 = it_bapip0001b-FLAG3.

it_bapihr0000-FLAG_4 = it_bapip0001b-FLAG4.

it_bapihr0000-RESERVED_FIELD_1 = it_bapip0001b-RESERVED1.

it_bapihr0000-RESERVED_FIELD_2 = it_bapip0001b-RESERVED2.

it_bapihr0000-action_type = wk_action_type.

  • it_bapihr0000-action_type = '17'.

it_bapihr0000-action_reason = wk_action_reason.

it_bapihr0000-user_defined_status = wk_user_defined_status.

it_bapihr0000-employment_status = wk_employment_status.

it_bapihr0000-special_payment_status = wk_special_payment_status.

APPEND it_bapihr0000.

*-< Append Data to it_bapihr0001

it_bapihr0001-OBJ_ID = it_bapip0001b-PERNO.

it_bapihr0001-INFOTYPE = it_bapip0001b-INFOTYPE.

it_bapihr0001-SUBTYPE = it_bapip0001b-SUBTYPE.

it_bapihr0001-OBJECT_IDENTIFICATION = it_bapip0001b-OBJECT_ID.

it_bapihr0001-LOCKINDIC = it_bapip0001b-LOCK_IND.

it_bapihr0001-TO_DATE = it_bapip0001b-TO_DATE.

it_bapihr0001-FROM_DATE = it_bapip0001b-FROM_DATE.

it_bapihr0001-IT_REC_NO = it_bapip0001b-SEQNO.

it_bapihr0001-CHANGED_ON = it_bapip0001b-CH_ON.

it_bapihr0001-CHANGED_BY = it_bapip0001b-CHANGED_BY.

it_bapihr0001-HIST_FLAG = it_bapip0001b-HIST_FLAG.

it_bapihr0001-INFOTYPE_TEXT_EXISTS = it_bapip0001b-TEXTFLAG.

it_bapihr0001-REFERENCE_FILEDS_EXIST = it_bapip0001b-REF_FLAG.

it_bapihr0001-CONFIRMATION_FIELDS_EXIST = it_bapip0001b-CNFRM_FLAG.

it_bapihr0001-INFOTYPE_SCREEN_CONTROL = it_bapip0001b-SCREENCTRL.

it_bapihr0001-REASON_TO_CHANGE_MASTER_DATA = it_bapip0001b-REASON.

it_bapihr0001-FLAG_1 = it_bapip0001b-FLAG1.

it_bapihr0001-FLAG_2 = it_bapip0001b-FLAG2.

it_bapihr0001-FLAG_3 = it_bapip0001b-FLAG3.

it_bapihr0001-FLAG_4 = it_bapip0001b-FLAG4.

it_bapihr0001-RESERVED_FIELD_1 = it_bapip0001b-RESERVED1.

it_bapihr0001-RESERVED_FIELD_2 = it_bapip0001b-RESERVED2.

it_bapihr0001-COMP_CODE = it_bapip0001b-COMP_CODE.

it_bapihr0001-PERS_AREA = it_bapip0001b-PERS_AREA.

it_bapihr0001-EMPLOYEE_GROUP = it_bapip0001b-EGROUP.

it_bapihr0001-EMPLOYEE_SUBGROUP = it_bapip0001b-ESUBGROUP.

it_bapihr0001-ORGANIZATIONAL_KEY = it_bapip0001b-ORG_KEY.

it_bapihr0001-BUSINESS_AREA = it_bapip0001b-BUS_AREA.

it_bapihr0001-PERSONNEL_SUBAREA = it_bapip0001b-P_SUBAREA.

it_bapihr0001-LEGAL_PERSON = it_bapip0001b-LEG_PERSON.

it_bapihr0001-PAYROLL_AREA = it_bapip0001b-PAYAREA.

it_bapihr0001-EMPLOYMENT_CONTRACT = it_bapip0001b-CONTRACT.

it_bapihr0001-COSTCENTER = it_bapip0001b-COSTCENTER.

it_bapihr0001-ORG_UNIT = it_bapip0001b-ORG_UNIT.

  • it_bapihr0001-ORG_UNIT = '50020339'.

it_bapihr0001-POSITION = it_bapip0001b-POSITION.

  • it_bapihr0001-JOB = it_bapip0001b-JOB.

it_bapihr0001-JOB = '50016676'.

it_bapihr0001-SUPERVISOR_AREA = it_bapip0001b-SUPERVISOR.

it_bapihr0001-PAYROLL_ADMINISTRATOR = it_bapip0001b-PAYR_ADMIN.

it_bapihr0001-MASTER_DATA_ADMINISTRATOR = it_bapip0001b-PERS_ADMIN.

it_bapihr0001-TIME_ADMINISTRATOR = it_bapip0001b-TIME_ADMIN.

it_bapihr0001-SORT_NAME = it_bapip0001b-SORT_NAME.

it_bapihr0001-FORMATTED_NAME = it_bapip0001b-NAME.

it_bapihr0001-OBJ_TYPE = it_bapip0001b-OBJECTTYPE.

it_bapihr0001-ADMINISTRATOR_GROUP = it_bapip0001b-ADMINGROUP.

it_bapihr0001-CO_AREA = it_bapip0001b-CO_AREA.

it_bapihr0001-FUNDS_CTR = it_bapip0001b-FUNDS_CTR.

it_bapihr0001-FUND = it_bapip0001b-FUND.

  • it_bapihr0001- = it_bapip0001b-ORGTXT

  • it_bapihr0001- = it_bapip0001b-JOBTXT

  • it_bapihr0001- = it_bapip0001b-POSTXT

  • it_bapihr0001- = it_bapip0001b-FKBER

  • it_bapihr0001- = it_bapip0001b-GRANT_NBR

APPEND it_bapihr0001.

ENDLOOP.

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

  • Lock the entry to be modified - RFC

CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'

EXPORTING

NUMBER = '00001732'.

REFRESH it_return. CLEAR it_return.

*-< Call Function to Dupliacte or Update The HR Master Data

CALL FUNCTION 'BAPI_HRMASTER_SAVE_REPL_MULT'

TABLES

HR_OBJECT_HEADER = it_bapihrobj

HR_INFOTYPE_HEADER = it_bapihrinf

EMPLOYEE_PERSONNEL_ACTION = it_bapihr0000

EMPLOYEE_ORG_ASSIGNMENT = it_bapihr0001

RETURN = it_return.

  • Commit the Modify

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

  • Unlock the entry

CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'

EXPORTING

NUMBER = '00001732'.