調べ物のついでに、SAP HANA express editionをVMWareで起動して、oDataでちょろっとアクセスしてみたので備忘録的に。
自分の備忘録なので、いつにもまして適当だけれども気にしない感じで。
ちなみにHANAであって、S/4 HANAじゃないぞ念のため。
1.SAP HANA express edition環境の構築
まぁ基本的にこちらの2記事に沿って導入しただけですな。
SAP HANAに触れてみよう! SAP HANA, express editionクイックインストールガイド | SAPジャパン ブログ
SAP HANAに触れてみよう!その2:SAP HANA 2.0, express edition + 各種ツール類のセットアップのご紹介 | SAPジャパン ブログ
あえて気をつけることと言えば、その2記事に記載してある通り、インスタンス番号が00ではなく90になっている事と、自分はeclipseバージョン2019-09を使っているので、HANA Studioは https://tools.hana.ondemand.com/2019-09/ からインストールしたことくらいかな。
ちなみに「Server only」 をダウンロードしたので、Web IDEやCockpitなんかの確認はしていない。
アドミンツールは http :// IPアドレス:8090/sap/hana/xs/admin で、ユーザ名はSYSTEM、パスワードは起動時に変更したものを使用する。
2.oDataアクセス環境の構築
こちらはVMWareの外からHANA studion on eclipseにて作業。
これはこちらのサイトの「5.1. HANA System の登録」と「5.2. リポジトリの登録」をお手本にして、
5. HANA XS Project の準備 — OData for SAP HANA セットアップガイド 初版 2016-12-01 intra-mart Accel Platform
お手軽にanonymousで認証すっ飛ばしたので、.xaccess以下はこちらを参考に
How to Expose a HANA Table via oData | SAP Blogs
なのでeclipse(HANA studio)のリポジトリはこんな感じ。
各々の内容は以下の通り。
.xaccess
{ "exposed" : true, "authentication" : null, "mime_mapping" : [{ "extension" : "jpg", "mimetype" : "image/jpeg" }], "prevent_xsrf" : false, "force_ssl": false, "enable_etags" : true, "anonymous_connection" : "toku.oData::anonuser", "cors": [{ "enabled": true, "allowMethods": ["GET","POST","PUT","DELETE", "HEAD"], "allowOrigin": ["*"] }], "allowHeaders": [ "Accept", "Authorization", "Content-Type", "X-CSRF-Token", "Access-Control-Allow-Origin" ], "exposeHeaders": [ "x-csrf-token" ], "cache_control": "no-cache, no-store" }
ちなみに "anonymous_connection" : "toku.oData::anonuser", を "authentication" :{"method": "Basic"}, に帰るとベーシック認証になるよ。
.xsapp
空っぽ
anonuser.xssqlcc
{"description":"Anonymous SQL connection"}
参照先は以下にしたので、
sensorjump.xsodataの内容はこんな感じ。エイリアスからはアンダースコア外したほうが良かったかな、と思ったりしたがとりあえずそのまま。
service { "SYS"."ADAPTERS_" as "ADAPTERS_"; }
各々のファイルは右クリックメニューでアクティベートしておかないとアドミンツールに出てこないので注意。
あと、参考サイトそのままコピーでエラーになる場合はダブルクォートがおかしかったりするので、アクティベートでエラーになる場合は打ち直してみたりすると良い。
アドミンツールは前述の http :// IPアドレス:8090/sap/hana/xs/admin で、設定。
最初は参照先サイトのようにエラーメッセージが出るけれど、右下のeditでHANA接続IDとパスワードをセットして以下の通り。
3.ブラウザから確認
APIの情報は以下で確認
http :// IPアドレス:8090/toku/oData/sensorjump.xsodata
<service xml:base="http://IPアドレス:8090/toku/oData/sensorjump.xsodata/"> <workspace> <atom:title>Default</atom:title> <collection href="ADAPTERS_"> <atom:title>ADAPTERS_</atom:title> </collection> </workspace> </service>
http :// IPアドレス:8090/toku/oData/sensorjump.xsodata/$metadata
<edmx:Edmx Version="1.0"> <edmx:DataServices m:DataServiceVersion="2.0"> <Schema Namespace="toku.oData.sensorjump"> <EntityType Name="ADAPTERS_Type"> <Key> <PropertyRef Name="ADAPTER_OID"/> </Key> <Property Name="ADAPTER_OID" Type="Edm.Int64" Nullable="false"/> <Property Name="OWNER_OID" Type="Edm.Int64" Nullable="false"/> <Property Name="ADAPTER_NAME" Type="Edm.String" MaxLength="64"/> <Property Name="PROPERTIES" Type="Edm.String" MaxLength="1000"/> <Property Name="CONFIGURATION" Type="Edm.String" MaxLength="2147483647"/> <Property Name="IS_SYSTEM_ADAPTER" Type="Edm.Byte" Nullable="false"/> </EntityType> <EntityContainer Name="sensorjump" m:IsDefaultEntityContainer="true"> <EntitySet Name="ADAPTERS_" EntityType="toku.oData.sensorjump.ADAPTERS_Type"/> </EntityContainer> </Schema> </edmx:DataServices> </edmx:Edmx>
データ内容は以下で確認。$format=json って入れないと、レスポンスはXMLで返ってくるよ。
・データ全部
http :// IPアドレス:8090/toku/oData/sensorjump.xsodata/ADAPTERS_?$format=json
・主キー指定(このテーブルの主キーはADAPTER_OIDなので、ADAPTER_OID=145525という条件で取得していることになる)
最後にLがついているのは型指定かな、あんま調べてないけど。
http :// IPアドレス:8090/toku/oData/sensorjump.xsodata/ADAPTERS_(145525L)?$format=json
・主キー&取得項目指定(ADAPTER_OIDとADAPTER_NAME)
http :// IPアドレス:8090/toku/oData/sensorjump.xsodata/ADAPTERS_(145525L)?$format=json&$select=ADAPTER_OID,ADAPTER_NAME
・条件指定(ADAPTER_NAME='aseodbc')&取得項目指定(ADAPTER_OIDとADAPTER_NAME)
http :// IPアドレス:8090/toku/oData/sensorjump.xsodata/ADAPTERS_?$format=json&$select=ADAPTER_OID,ADAPTER_NAME&$filter=ADAPTER_NAME%20eq%20%27aseodbc%27
ちなみに主キー指定の例だと、こんな感じのレスポンスが返ってくるよ。
{ "d": { "__metadata": { "type": "toku.oData.sensorjump.ADAPTERS_Type", "uri": "http://IPアドレス:8090/toku/oData/sensorjump.xsodata/ADAPTERS_(145525L)" }, "ADAPTER_OID": "145525", "OWNER_OID": "131072", "ADAPTER_NAME": "aseodbc", "PROPERTIES": "display_name=ASE (ODBC);description=Sybase ASE", "CONFIGURATION": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><RemoteSourceDescription name=\"Root\" id=\"1\">略</RemoteSourceDescription>", "IS_SYSTEM_ADAPTER": 1 } }