2012年2月8日水曜日

.NET開発 SAPとの接続(SAP .NET Connector 3.0)

.NETの開発で、SAPとの連携について検証を行ったためそれをまとめます。

・コネクタ用意
SAP接続用のコネクタをダウンロードする(ダウンロードには登録が必要)。
SAP Service Market Placeからダウンロード。32bit版と64bit版があるので注意。


特徴として、SAP GUI(具体的にはlibrfc.dll)への依存がなくなっていることと、SAP側のファンクションとの同期が不要になっている。

・開発準備
・共通
これはSAPコネクタに限ったことではない(よう?)だが、configファイルを記述する際、configSectionsが先頭にこないとビルド時にエラーになる(WPFで確認)。この点に注意。
開発に当たっては、通常のdll同様参照を通しておく(なぜかlibicudecnumber.dllにだけ参照が通らないが、特に不都合はない)。

・クライアントアプリ開発(VB.NET、WPFなど)の場合の注意点
ターゲットのフレームワークにClient Profile版(※)を設定してはならない(デフォルトClientProfileなので注意)。これは、SAPコネクタ(sapnco)でSystem.Webに依存している部分があり、これがClientProfile版にはないためである。

コンパイル > 詳細コンパイルオプション > 対象のフレームワークで確認する。

※Client Profileとは、.NET Frameworkのライト版である。.NET Frameworkは重くてインストールに失敗しやすくてこれインストールしないとアプリは使えません、となると非常にやるせない気持ちになってしまう。これを解消するために、大体の必須機能が入ったライト版があり、それがClient Profileである。

・Web開発(ASP.NET)の場合
まず、Webサーバーに「Microsoft Visual C++ 2010 再頒布可能パッケージ」が入っているか確認しよう(というか、普通入っていない)。これがないと、参照を通してBinフォルダに入れているにもかかわらずrscp4n.dllが見つかりませんというエラーが出る。

それと、前述の通りSAPコネクタには32bit版と64bit版があるため、サーバーが64bitの場合は注意が必要。

・開発
準備の道のりに比べたらたやすいものである。
サンプルのファイル(StepByStepClient)に丁寧にコードが書いてるので、それを元に開発すればすぐにできる。
注意点としては、SAP側でRFC呼び出し可能として登録されている汎用モジュールしか呼び出せない点である(クラスのメソッドなどは不可、IDocにも非対応)。
具体的には、SAP上のテーブルTFDIRで更新モードが「R」になっているものが呼び出し可能。

なお、ここまで書いておいて難だが、今後のSAPとの連携の流れとしてはWebサービスが主流になる。そのため、SAP側がWebサービスに対応している(6.0以降、具体的にはNetWeaverならOK?)なら、そちらで連携した方がコネクタいらずで簡単である。
最近ではSAP NetWeaver GatewayというRESTライクな形式でのアクセスを可能にするコンポーネントも出ている。そのため、理解ある環境ならこの流れに乗った方がいい(Webサービスを使いたい→その為の作業工数は、カネはどこから出るんだね→orz ということも多いので、その場合は本記事を参照されたし)。



参考

 特にC++ランタイムへの依存の発見はスーパープレイだと思う。Eric Laschingerさんは本当にすごい人だ。


0 件のコメント:

コメントを投稿