Прежде всего, ваш get BAPI также немного неправильный, возможно, на старых версиях PyRF C он работал, но теперь модуль pyrf c имеет объект Connection
, а не connection
, и ваш код вызывает компиляцию ошибка. Это должно быть следующим образом:
import pyrfc
from pyrfc import Connection
RIS=pyrfc.Connection(user='USER', passwd='pw', ashost='hostey.com', sysid='KEK', sysnr='00', client='200', lang='EN', trace='3')
result=RIS.call("BAPI_USER_GET_DETAIL", USERNAME='MUELLER')
print(result['ADDRESS']['FULLNAME'])
Во-вторых, изменение BAPI называется так же, как get BAPI, для меня этот код работал
ADDR = { "E_MAIL": 'wazawaza@mail.com'}
ADDX = { "E_MAIL": 'X'}
changed=RIS.call("BAPI_USER_CHANGE", USERNAME='MUELLER', ADDRESS=ADDR, ADDRESSX=ADDX)
print(changed["RETURN"])
, он должен показывать вам что-то вроде этого вывода, если выполняется правильно
[{'TYPE': 'S', 'ID': '01', 'NUMBER': '039', 'MESSAGE': 'Пользователь MUELLER изменился' , 'LOG_NO': '', 'LOG_MSG_NO': '000000', 'MESSAGE_V1': 'MUELLER', 'MESSAGE_V2': '', 'MESSAGE_V3': '', 'MESSAGE_V4': '', 'PARAMETER ':' ',' ROW ': 0,' FIELD ':' BNAME ',' SYSTEM ':' T90CLNT090 '}]
Странно новый адрес электронной почты не не показывал ни с вызовом BAPI, ни в SE37, но отлично показано в SU01.
![enter image description here](https://i.stack.imgur.com/qbhQv.png)
Я думаю, что это из-за длинного поля char в структуре BAPI, которое предотвращает его от показа правильно. Может быть, именно поэтому вы сочли ваш звонок неудачным?