Ошибка RFC "Элемент BAPIRETURN1 метаданных контейнера ... неизвестен" - PullRequest
2 голосов
/ 05 июля 2019

В моей программе на 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 неизвестен

Когда я пробую это с таблицей, я получаю тот же результат.

Где ошибка в моем коде? Или это может быть проблема с разрешением?

1 Ответ

4 голосов
/ 05 июля 2019

Имя параметра - «ВОЗВРАТ», а не «BAPIRETURN1», как указано вами. «BAPIRETURN1» - это имя типа, то есть имя для связанных метаданных.

...