私たちのソフトウェアは C# で書かれており、SAP に接続する必要があります。一部のお客様は古いバージョンの SAP を使用しており、他のお客様は SAP PI を使用していないため、Web サービスを介して接続することはできません。
次のように、SAP NetWeaver Remote Function Call Library (sapnwrfc.dll) を介して SAP に接続しようとしました。
- sapnwrfc.dll および NWRFC_6-20004550.SAR の他の dll (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 text, String caption, uint type);
MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
正常に動作します。
これをうまく機能させるための提案はありますか (JCo を使用して Java プロキシを作成してこの問題を回避する必要はありません)。