5

私たちのソフトウェアは 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 プロキシを作成してこの問題を回避する必要はありません)。

4

3 に答える 3

2

いくつかの DLL が欠落しているかどうか、依存関係ビューアーで確認しましたか? rfc ライブラリ (少なくともその一部) のマネージ ラッパーを書いたことがあるのですが、ダウンロードした rfc ライブラリのいくつかに問題があったことを覚えています。1 つのバージョンは単に機能せず、何が問題なのかわかりませんでした。別のバージョン (古いバージョン) は問題なく動作しました。

ただし、Unicode ライブラリに問題があったため (ランダムに発生するメモリ アクセスの問題)、非 Unicode バージョンに切り替える必要がありました...

もう一度このようなことをしなければならない場合は、コネクタを購入することを非常に真剣に検討します: http://www.theobald-software.com/en/products/erpconnect.htm

それが良いかどうかはわかりませんが、しばらくの間存在しているようです。

于 2010-02-27T12:38:47.783 に答える