В моей программе на C #, в которой используется коннектор SAP .NET, я хочу вызвать функцию RFC "BAPI_GET_PAYROLL_RESULT_LIST" и прочитать результат.
Я посмотрел на функцию с SE37
. Там я обнаружил, что параметр экспорта должен быть BAPIRETURN1
, который является структурой.
Поэтому я искал пример кода вызова RFC и изменил его для своего случая.
Я уже пытался прочитать таблицу BAPI7004_RL
, потому что она была в информации в SE37
, и я не знаю, должен ли я использовать параметр экспорта или таблицу.
Это мой код:
string appServerHost = ConfigurationManager.AppSettings["AppServerHost"];
string name = ConfigurationManager.AppSettings["Name"];
string systemnumber = ConfigurationManager.AppSettings["SystemNumber"];
string user = ConfigurationManager.AppSettings["User"];
string pw = ConfigurationManager.AppSettings["Password"];
string client = ConfigurationManager.AppSettings["Client"];
string language = ConfigurationManager.AppSettings["Language"];
RfcConfigParameters parms = new RfcConfigParameters
{
{ RfcConfigParameters.AppServerHost, appServerHost },
{ RfcConfigParameters.Name, name },
{ RfcConfigParameters.SystemNumber, systemnumber },
{ RfcConfigParameters.User, user },
{ RfcConfigParameters.Password, pw },
{ RfcConfigParameters.Client, client },
{ RfcConfigParameters.Language, language }
};
RfcDestination dest = RfcDestinationManager.GetDestination(parms);
RfcRepository repo = dest.Repository;
IRfcFunction fnc = dest.Repository.CreateFunction("BAPI_GET_PAYROLL_RESULT_LIST");
fnc.SetValue("employeenumber", "0001");
fnc.Invoke(dest);
RfcStructureMetadata TableMetaData = dest.Repository.GetStructureMetadata("BAPIRETURN1");
IRfcStructure stru = fnc.GetStructure("BAPIRETURN1"); //BAPI7004_RL
//IRfcTable tabDetail = fnc.GetTable("BAPI7004_RL"); //BAPIRETURN1
После строки IRfcStructure stru = fnc.GetStructure("BAPIRETURN1")
во время выполнения выдается исключение, которое говорит:
Элемент BAPIRETURN1 контейнера BAPI_GET_PAYROLL_RESULT_LIST неизвестен
Когда я пробую это с таблицей, я получаю тот же результат.
Где ошибка в моем коде? Или это может быть проблема с разрешением?