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

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

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 05 марта 2018

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

2 голосов
/ 27 февраля 2010

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

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

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

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

...