GN125、グラディウス400のメンテナンス/カスタムブログです。Studio【Talend】SAPに接続しRFC_READ_TABLEでデータを取得する今回は、TalendでSAPと接続する方法についてまとめてみました。SAPというのはその業界では割と有名なERPパッケージです。Talendには多彩な外部システム接続用のコンポーネントがありますので、今回はSAPを例に、連携してみようと思います。おわりにSAPって?さくっと、全くSAPを知らない人向けに説明しておきます。SAPとは、ERPパッケージです!ERPというのは、企業の数多ある業務種類をまとめて管理するためのプログラム製品です。財務会計周りは勿論、人事システム、在庫管理システムなどを内包するパッケージです。(こちらの方のブログがパッと見分かり易かったのでどうぞ⇒今更ながら、SAPとはなんぞや)SAP連携用の設定を行うこれから使用するTalendのコンポーネントは、sapjcoなどのdllが必要になりますので、その入手/配置が必要になります。sapjcoの入手sapjcoは、外部からSAPシステムに接続するために使用するライブラリです。これがないと、Talendを含めたSAP外のシステムからSAPに連携することはできません。入手は、SAP公式ヘルプにある通りhttp://service.sap.com/connectorsからダウンロードすることができます。アクセスのためにはSAPのユーザ認証が必要です。無事アクセスできれば、sabjcoのダウンロードができます。sapjco3.dllの2つがあればokです。sapjcoの配置こちらのTalend公式フォーラムの回答の通り配置すれば問題無く動きます。配置するTalendを再起動するという手順を踏めばokです。SAPと連携するジョブを作るそれでは、実装に入りましょう。SAP接続用のコンポーネント、tSAPConnectionをパレットから探してきてジョブに落っことします。コンポーネントに対する接続設定を行います。ここの設定は、SAPを導入している環境によって設定は変わりますので、割愛します。ちなみに、こうした接続は環境によって変わることが殆どだと思いますので、コンテキスト等に外出ししておくことが望ましいかと。SAP接続先情報をcontextで管理connectionの設定が終わったら、今度は、tSAPInputというコンポーネントをジョブに落っことします。tSAPInputがコアなコンポーネントで、SAPの機能を実際に呼び出してくれます。tSAPConnectionコンポ―ネントから、OnComponentOKで接続します。(OnSubjobOKでもok)接続が完了したら、コンポーネント設定を行います。inputを設定SAPの方を見ると、入力パラメータで必須となっているのがQUERY_TABLEだったので、QUERY_TABLEパラメータは確実にセットしておきます。インポートに定義されているので、単一値をセットすれば良さそう、ということで、パラメータのTypeはinput_singleにします。ROWCOUNTなどはお好みでOutputsを設定Schemaは、テキトーな名称でokですTypeは、SAPの定義を見るとTABLEだったので、table_outputを選択TableNameは、SAPから取得するテーブル名を記述します。SAPの定義を見ると、DATAとFIELDSでしたので、その2つを受け取ることにします。Mappingの項目も定義します。(後述)tSAPInputのパラメータ編集Mapping項目ですが、ここは少し注意が必要です。項目をクリックすると、専用の編集ウインドウが開きます。Columnの方は、とりあえずスキーマ名と同じものをセットすれば良いでしょう。XPathQuerysです。XPathって言われても...XML定義とか無いし...詰んだな、と思っていましたが、こちらの記事を見て解決しました。(才能の例では、SAPに接続する)(完全なる英語の機械翻訳っぽいページで内容はすごくわかりにくいんですけど...)各レコードはWAと呼ばれる一意のフィールドを持っていますとありますので、取得データは、XML上”WA”という要素に格納されているらしいので、とりあえず”WA”と記述すれば良いとのこと。———-追記———-XPathQuerysは、SAPの戻り変数の構造のプロパティ(メンバ?列?)名を渡せば良いようです。RFC_READ_TABLEであれば、下記の様に判明します。汎用モジュール参照画面で知りたいモジュール名を検索(今回はRFC_READ_TABLE)2.そのモジュールの返却する名称を確認(今回は、DATAとFIELDS)⇒ここが「TableName(StructureName)」に入る3.受け取りたい変数名の「関連する型」を見る4.受け取りたい変数名の中のプロパティ名がMappingのXPathQuerysに入る名称という感じで求まります。———-追記ここまで———-同様に、FIELD_NAMEの方は、XPathQuerysに”FIELDNAME”をセットすれば良いようです。同じようにマッピング設定を行っておきます。以上で設定は完了です。tSAPInputコンポーネントでWAとFIELD_NAMEを定義しましたので、それぞれの出力を受け取るリンクを張って、ジョブ構築は完了です。実行してみると、想定通りの値が取得できていることが確認できます。SAP連携コンポーネントの罠Talendを日本語化していると、Outputs側のtype選択肢に同じものが現れてしまいます。この選択肢は、英語表記だと、table_outputとoutput_tableの異なる2種類が存在するのですが...日本語版だと全く同じものになってしまいます。似ていますが、table_outputとoutput_tableは全く異なる結果になりますので、注意が必要です。SAP連携時は、外観を英語にしておくのが無難だと思います。(私は、日本語版でジョブを組んでいて、この部分で2時間は詰まりました...)おわりに今回は、SAPとTalendの連携について書いてみました。情報無さすぎて辛い所はありますが、外部連携用のコンポーネントが存在するのはとてもありがたいですね。Talend-SAP連携は、海外サイトにはそこそこ記事が散見されたので、海外のものを中心に探してみると良いかもしれません。2016.11.02今回は、いつかのSAPに接続しRFC_READ_TABLEでデータを取得するに引き続き、SAP連携について書いていきます。hidetaso[...]【Talend】sequenceで連番を振る方法。PMTalendでSAPデータを取得することができました。ありがとうございます。table_inputの日本語表記)について補足させてください。table_outputとoutput_tableがどちらも「出力テーブル」と表記されますが、メニューで正しい位置を選択すれば大丈夫だろうと思ったのですが、ダメでした。(勝手に選択が変わってしまいます。)そこで、日本語表記を修正しました。ExchangeからコンポーネントをダウンロードしてTalendに組み込みます。tSAPInputの場合、コンポーネントファイルの中に「tSAPInput_messages_ja.properties」というファイルがあり、ここに日本語表記が格納されています。以下のように書き換えると、table_outputは「テーブル出力」に、table_inputは「テーブル入力」に変わります。~~.TABLE_OUTPUT=\u51FA\u529B\u30C6\u30FC\u30D6\u30EB~~.TABLE_INPUT=\u5165\u529B\u30C6\u30FC\u30D6\u30EB↓~~.TABLE_OUTPUT=\u30D6\u30EB\u51FA\u529B\u30C6\u30FC~~.TABLE_INPUT=\u30C6\u30FC\u30D6\u30EB\u5165\u529Bこれで表記が変わり、正しく選択できるようになりました。tSAPOutputが標準で入っている場合でも、インストールフォルダを探せば見つかるのではないかと思います。PMYOSさん、こんにちは。「テーブル出力」問題は仕様かと思い諦めていたのですが...早速試してみます!ありがとうございました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。【Javascript】爆速でChrome拡張プラグイン開発を試す。作り方は意外とかんたんでした。【Talend】グローバル変数の使い方(globalMapとcontext)【JSF入門02】ボタン押下時のイベントを扱う。入門01】開発環境の構築。TalendをインストールしようETL開発ツールは比較するまでもなくTalend一択だと思う。入門02】CSVデータを変換する。Talendの使い方からはじめます。【エストレヤ】なんと妹がバイク乗りになるらしい。いうわけでバイクを購入しました。Songバイクでツーリングいこっ!心に残る絶景を写真にGN倶楽部IT系カテゴリの最新記事2019.03.06Wordpress,【WordPress】突然固定ページが404エラーで表示されなくなった!?ので私の対処法を書きます。WebSlides,【WebSlides】HTML+CSS+Javascriptでプレゼン資料を作成したら割とウケた話。React,【React】Reactに爆速で入門する4。React,【React】Reactに爆速で入門する3。React,【React】Reactに爆速で入門する2。WordPress.。