Как я могу подключиться к SAP с C # через библиотеку SAP NetWeaver RFC (sapnwrfc.dll)?

StackOverflow https://stackoverflow.com/questions/2342324

Вопрос

Наше программное обеспечение написано на C # и должно быть подключено к SAP.Поскольку некоторые из наших клиентов используют более старые версии SAP, а у других нет SAP PI, мы не можем подключиться через веб-сервисы.

Я попытался подключиться к SAP через библиотеку удаленных вызовов функций SAP NetWeaver (sapnwrfc.dll) следующим образом:

  • Добавьте sapnwrfc.dll и другие библиотеки DLL из NWRFC_6-20004550.SAR (будучи icudt34.dll, icuin34.dll, icuuc34.dll, libicudecnumber.dll и libsapucum.dll) в C:\WINDOWS\system32, чтобы быть уверенным, что их можно найти.
  • В моем коде на C # добавьте следующее в определение класса:
        [DllImport("sapnwrfc.dll", кодировка = CharSet.Auto)]
        публичный статический extern void RfcInit();
    и следующее в методе, который должен выполнить эту работу:
        RfcInit();

Запуск этого кода выдает исключение DllNotFoundException:
Не удается загрузить библиотеку DLL 'sapnwrfc.dll':Этому приложению не удалось запуститься из-за неправильной конфигурации приложения.Переустановка приложения может устранить эту проблему.(Исключение из HRESULT:0x800736B1)

Запуск стандартного примера подключения к C ++ из C #
    [DllImport("user32.dll", кодировка = CharSet.Unicode)]
    public static extern int MessageBox(IntPtr hWnd, текст строки, заголовок строки, тип uint);
    MessageBox(новый IntPtr(0), "Привет, мир!", "Диалог приветствия", 0);
работает нормально.

Любые предложения, как заставить это работать нормально (чтобы нам не нужно было обходить эту проблему путем написания Java-прокси с использованием JCo)?

Это было полезно?

Решение

Вы проверяли с помощью средства просмотра зависимостей, не отсутствует ли у вас какая-либо библиотека DLL?Однажды я написал управляемую оболочку для библиотеки rfc (по крайней мере, ее части), и я помню, что у меня были проблемы с некоторыми загруженными мной библиотеками rfc.Одна версия просто не сработала, и я не понял, в чем дело.Другая версия (более старая) работала просто отлично.

Однако у меня были проблемы с библиотекой Unicode (какая-то проблема с доступом к памяти, которая появилась случайным образом), поэтому мне пришлось переключиться на версию, отличную от unicode...

Если бы мне пришлось сделать что-то подобное снова, я бы очень серьезно подумал о покупке разъема:http://www.theobald-software.com/en/products/erpconnect.htm

Я не могу сказать, есть ли в этом какая-то польза, но, похоже, они существуют уже некоторое время.

Другие советы

Почему бы вам просто не использовать ".NET Connector" от SAP (NCo3)?Ссылку на страницу загрузки и документацию см. в SAP note 856863.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top