Hi Experts,
I'm using the awesome Python library - PyRFC to connect to an SAP ECC 6.0 IDES (running on a remote Windows host).
I am successfully able to READ an employee's data stored in IT 0002 using the BAPI: BAPI_EMPLOYEE_GETDATA.
The output of BAPI_EMPLOYEE_GETDATA is:
{'ARCHIVELINK': [], 'COMMUNICATION': [{'CHANGED_BY': 'BONIN', 'CH_ON': '20031126', 'CNFRM_FLAG': '', 'FLAG1': '', 'FLAG2': '', 'FLAG3': '', 'FLAG4': '', 'FROM_DATE': '20000101', 'HIST_FLAG': '', 'INFOTYPE': '0105', 'LOCK_IND': '', 'OBJECT_ID': '', 'PERNO': '00000072', 'REASON': '', 'REF_FLAG': '', 'RESERVED1': '', 'RESERVED2': '', 'SCREENCTRL': '', 'SEQNO': '000', 'SUBTYPE': '0010', 'TEXTFLAG': '', 'TO_DATE': '99991231', 'USERID': 'BROUGHTONB', 'USERTYPE': '0010', 'USRID_LONG': 'Freda.Fish@ides 'INTERNAL_CONTROL': [], 'ORG_ASSIGNMENT': [{'ADMINGROUP': '200', 'BUS_AREA': '', 'CHANGED_BY': 'C5115457', 'CH_ON': '20111114', 'CNFRM_FLAG': '', 'COMP_CODE': '2000', 'CONTRACT': '', 'COSTCENTER': '', 'CO_AREA': '1000', 'EGROUP': '1', 'ESUBGROUP': 'GC', 'FKBER': '', 'FLAG1': '', 'FLAG2': '', 'FLAG3': '', 'FLAG4': '', 'FROM_DATE': '20030101', 'FUND': '', 'FUNDS_CTR': '', 'GRANT_NBR': '', 'HIST_FLAG': '', 'INFOTYPE': '0001', 'JOB': '50012557', 'JOBTXT': 'Consultant', 'LEG_PERSON': '', 'LOCK_IND': '', 'NAME': 'Mrs Freda Fish', 'OBJECTTYPE': 'S', 'OBJECT_ID': '', 'ORGTXT': 'Project Team', 'ORG_KEY': '200', 'ORG_UNIT': '50002213', 'PAYAREA': 'G1', 'PAYR_ADMIN': '', 'PERNO': '00000072', 'PERS_ADMIN': '003', 'PERS_AREA': '200', 'POSITION': '50005677', 'POSTXT': 'Proj Team Ed', 'P_SUBAREA': '0002', 'REASON': '', 'REF_FLAG': '', 'RESERVED1': '', 'RESERVED2': '', 'SCREENCTRL': '', 'SEQNO': '000', 'SORT_NAME': 'FISH FREDA', 'SUBTYPE': '', 'SUPERVISOR': '', 'TEXTFLAG': '', 'TIME_ADMIN': '', 'TO_DATE': '99991231'}], 'PERSONAL_DATA': [{'ARI_TITLE': '', 'BIRTHCTRY': '', 'BIRTHDATE': '19650908', 'BIRTHDAY': '08', 'BIRTHDTPP': None, 'BIRTHMONTH': '09', 'BIRTHNME_K': '', 'BIRTHNME_R': '', 'BIRTHPLACE': '', 'BIRTHSTATE': '', 'BIRTHYEAR': '1965', 'CHANGED_BY': 'HOLDERM', 'CH_ON': '20030930', 'CNFRM_FLAG': '', 'FIRSTNAME': 'Freda', 'FLAG1': '', 'FLAG2': '', 'FLAG3': '', 'FLAG4': '', 'FORMOFADR': '2', 'FROM_DATE': '19650908', 'FSTNAME_M': 'FREDA', 'FST_NAME_K': '', 'FST_NAME_R': '', 'GENDER': '2', 'HIST_FLAG': '', 'INFOTYPE': '0002', 'INITIALS': '', 'KNOWN_AS': '', 'LANGU': 'E', 'LASTNAME_M': 'FISH', 'LAST_NAME': 'Fish', 'LAST_NAME2': '', 'LOCK_IND': '', 'LST_NAME_K': '', 'LST_NAME_R': '', 'MAR_DATE': None, 'MAR_STATUS': '', 'NAMEAFFIX': '', 'NAMEPREFIX': '', 'NAME_CON': '', 'NAME_FORM': '00', 'NATIONAL': 'MR', 'NATIONAL_2': '', 'NATIONAL_3': '', 'NICKNAME_K': '', 'NICKNAME_R': '', 'NO_O_CHLDR': Decimal('0'), 'OBJECT_ID': '', 'PERID': 'NA566669A', 'PERMO': '08', 'PERNO': '00000072', 'REASON': '', 'REF_FLAG': '', 'RELIGION': '', 'RESERVED1': '', 'RESERVED2': '', 'SCREENCTRL': '', 'SEQNO': '000', 'SUBTYPE': '', 'TEXTFLAG': '', 'TITLE': '', 'TITLE_2': '', 'TO_DATE': '99991231'}], 'RETURN': {'CODE': '', 'LOG_MSG_NO': '000000', 'LOG_NO': '', 'MESSAGE': '', 'MESSAGE_V1': '', 'MESSAGE_V2': '', 'MESSAGE_V3': '', 'MESSAGE_V4': '', 'TYPE': ''}}
To UPDATEdata, I'm trying to make use of BAPI: BAPI_PERSDATA_CHANGE.
To that end, I know that I must call the following three BAPI's in order:
BAPI_EMPLOYEE_ENQUEUE
BAPI_PERSDATA_CHANGE
BAPI_EMPLOYEE_DEQUEUE
But calling the BAPI - BAPI_PERSDATA_CHANGE with the following IMPORT parameters:
EMPLOYEENUMBER='72',
NOCOMMIT='X',
LOCKINDICATOR='',
OBJECTID='',
RECORDNUMBER='0',
VALIDITYBEGIN='19650908',
VALIDITYEND='99991231',
SUBTYPE='',
LASTNAME='Foosh'
Leads to this error:
ABAPRuntimeError: RFC_ABAP_RUNTIME_FAILURE (rc=3): key=UNCAUGHT_EXCEPTION, message=An exception occurred that was not caught.
I've used this code:
from pyrfc import Connection from pprint import pprint params = {'user': '******', 'passwd': '******', 'ashost':'********', 'sysnr':'**', 'client':'***'} conn = Connection(**params) # result = conn.call("BAPI_EMPLOYEE_GETDATA", EMPLOYEE_ID='00000072') # pprint(result) result = conn.call("BAPI_EMPLOYEE_ENQUEUE", NUMBER='00000072') pprint(result) result = conn.call("BAPI_PERSDATA_CHANGE", EMPLOYEENUMBER='72', NOCOMMIT='X', LOCKINDICATOR='', OBJECTID='', RECORDNUMBER='0', VALIDITYBEGIN='19650908', VALIDITYEND='99991231', SUBTYPE='', LASTNAME='Foosh') pprint(result) result = conn.call("BAPI_EMPLOYEE_DEQUEUE", NUMBER='00000072') pprint(result)
Error on command line:
Please help me resolve this error.