【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編)

 2013.11.06  リアルテックジャパン

まず、前回までの復習からです。このシリーズで作りたいWebアプリケーションは以下のようなものになります。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 1

SAPシステムから取得した情報と、Google Mapから取得した情報を一画面で連携させているところがポイントです。

【前回までの記事】

第1回 SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(序章)

用語の解説とアプリケーション全体像のご説明

第2回 SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(Gateway編)

SAP Netweaver Gatewayを利用したサービスの開発方法

このシリーズではNetweaver Gateway経由で取得したデータとGoogle Mapのルート情報をSAPUI5を使って連携させるWebアプリを開発してきています。前回までの記事でSAPシステム内部のデータをOData形式で公開するところまで完了しています。

oDataはXMLやJSON形式なので、SAP外部のアプリケーションから扱いやすい形式になっています。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 2

 

今回は、SAPシステム外部からSAPシステム内部のデータを利用するケースとして、Webブラウザでの表示を取り上げています。

Webブラウザでの画面の開発にはFioriやSAP ByDesignにも利用されているSAPUI5を利用することにします。

SAPUI5を実際に見てみたい場合はこちらのURLで実際に触ることができます。

https://sapui5.hana.ondemand.com/sdk/#content/Controls/index.html

また、Webならではということで、公開されているWebAPIの代表格であるGoogle Mapとの連携をさせてみようと思います。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 3

事前準備(開発環境構築)

今回、SAPUI5での画面開発に利用した環境は以下の通りとなります。

[RELATED_POSTS]

開発環境

  • Windows 7
  • Eclipse Java EE IDE for Web Developers Version: Juno Service Release 2(事前インストール済み)
  • UI Development Toolkit for HTML5 Version SAPUI5 1.12.1

UI Development Toolkit for HTML5はEclipseのプラグインです。SAP Service Marketplaceから事前にダウンロードしておいてください。

http://service.sap.com/swdcにて、「SAPUI5 TOOLS IDE PLUGIN」で検索すると見つかります。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 4

ダウンロードが完了しましたら、Eclipseを起動して、「Help」>「Install New Software」を選択します。

「Install」画面が表示されるので、「Add」ボタンをクリックします。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 5

ダウンロードしておいたUI Development Toolkit for HTML5のZIPファイルを解凍すると「tools-updatesite」フォルダが出来るのでそのパスを以下のように指定して「OK」をクリックします。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 6

UI development toolkit for HTML5を選択して「Next」ボタンをクリックします。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 7

インストールが始まりますので暫く待ち、インストールが完了したら、Eclipseを再起動します。

SAPUI5開発プロジェクト作成

開発環境が整いましたので、実際に画面を開発していきます。まずはSAPUI5用のプロジェクトを作成します。

Eclipseを起動して、New->Otherと選択します。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 8

「SAPUI5アプリケーション開発」フォルダにある、「アプリケーションプロジェクト」を選択し、Nextボタンをクリックします。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 9

プロジェクト名を入力してNextボタンをクリックします。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 10

SAPデータコピーツール Data Sync Manager
SAPユーザー必見!テスト・トレーニング・データ移行時に機密データを守る方法は?

ビュー(画面部分)に関しては以下の項目から開発方法を選択できます。

  • JavaScript
  • XML
  • JSON
  • HTML

今回はJavaScriptを利用して開発を進めていきます。

ビューの名称を入力し、Finishボタンをクリックします。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 11

ポップアップが表示されるので「Yes」ボタンをクリックします。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 12

ここまででプロジェクトが作成されるはずです。Eclipseからプロジェクトの中を見てみましょう。

以下のような3ファイルが生成されています。

  • View名称.controller.js(今回はSAPGoogleMashup.controller.js)
  • View名称.view.js(今回はSAPGoogleMashup.view.js)
  • Index.html

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 13

これでSAPUI5開発プロジェクトの作成が完了しました。

[SMART_CONTENT]

SAPUI5でHello World

まずはHello Worldから試してみましょう。

Index.htmlに以下のコードを追記します。

ヘッダ部分

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>

ボディ部分

<div id="content">Hello World!!</div>

修正後のindex.htmlは以下のようになります。

&lt;!DOCTYPE HTML&gt;&lt;html&gt;    &lt;head&gt;        &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;        &lt;!--追記  --&gt;        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;charset=UTF-8&quot;/&gt;        &lt;script src=&quot;resources/sap-ui-core.js&quot;                id=&quot;sap-ui-bootstrap&quot;                data-sap-ui-libs=&quot;sap.ui.commons&quot;                data-sap-ui-theme=&quot;sap_goldreflection&quot;&gt;        &lt;/script&gt;        &lt;!-- add sap.ui.table,sap.ui.ux3 and/or other libraries to &#39;data-sap-ui-libs&#39; if required --&gt;        &lt;script&gt;                sap.ui.localResources(&quot;realtech_sapui5&quot;);                var view = sap.ui.view({id:&quot;idSAPGoogleMashup1&quot;, viewName:&quot;realtech_sapui5.SAPGoogleMashup&quot;, type:sap.ui.core.mvc.ViewType.JS});                view.placeAt(&quot;content&quot;);        &lt;/script&gt;    &lt;/head&gt;    &lt;body class=&quot;sapUiBody&quot; role=&quot;application&quot;&gt;        &lt;!--追記  --&gt;        &lt;div id=&quot;content&quot;&gt;Hello World!    &lt;/body&gt;&lt;/html&gt;

Eclipseから実行してみましょう。(今回はJetty というプラグインを使ってローカルPCでテスト実行しています)

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 14

「Hello World!」の表示が確認できました。(ここまでは普通のHTMLと同じです。)

 

OData形式で公開したSAPシステム内部情報の表示

次に、SAP Netweaverから取得したData形式のデータを画面へ表示するコーディングを追加します。

まずは、index.htmlに必要なライブラリを追加するコードを追加します。

 

【自動生成直後の状態】

data-sap-ui-libs="sap.ui.commons"

【使用するライブラリを追加した状態】

data-sap-ui-libs="sap.ui.ux3, sap.ui.commons, sap.ui.table"

 

修正後のコードは以下のようになります。

 

&lt;!DOCTYPE HTML&gt;&lt;html&gt;    &lt;head&gt;        &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;charset=UTF-8&quot;/&gt;        &lt;!-- UIライブラリを追加 --&gt;        &lt;script src=&quot;resources/sap-ui-core.js&quot;                id=&quot;sap-ui-bootstrap&quot;                data-sap-ui-libs=&quot;sap.ui.ux3, sap.ui.commons, sap.ui.table&quot;                data-sap-ui-theme=&quot;sap_goldreflection&quot; &gt;        &lt;/script&gt;        &lt;script&gt;                sap.ui.localResources(&quot;realtech_sapui5&quot;);                var view = sap.ui.view({id:&quot;idSAPGoogleMashup1&quot;, viewName:&quot;realtech_sapui5.SAPGoogleMashup&quot;, type:sap.ui.core.mvc.ViewType.JS});                view.placeAt(&quot;content&quot;);        &lt;/script&gt;    &lt;/head&gt;    &lt;body class=&quot;sapUiBody&quot; role=&quot;application&quot;&gt;        &lt;div id=&quot;content&quot;&gt;Hello World!&lt;/div&gt;    &lt;/body&gt;&lt;/html&gt;

次に、SAPGoogleMashup.view.jsにコーディングを追加します。

コーティングの前に日本語が文字化けしないように文字コードをUTF-8に変更します。

SAPGoogleMashup.view.jsを選択し、右クリックからPropertiesを選択します。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 15

 

以下の画面の通り、Text file encodingをUTF-8に変更します。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 16

 

コードを記載する箇所は画面の通り、createContentの部分です。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 17

 

上記の画像で示した部分に以下のコードを記載します。

var layout = new sap.ui.commons.layout.MatrixLayout(&quot;layout&quot;);        layout.setWidth(&quot;80%&quot;);       var rPannel = new sap.ui.commons.Panel(&quot;rPannel&quot;);        var rTitle = new sap.ui.commons.Title(&quot;rTitle&quot;);          rTitle.setText(&quot;ルート検索&quot;);        rPannel.setTitle(rTitle);               var oTable = new sap.ui.table.Table({visibleRowCount: 15});         //日本語が文字化けするので、utf-8で保存する      oTable.addColumn(               new sap.ui.table.Column({               label: new sap.ui.commons.Label({text: &quot;得意先名&quot;}),                  template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;Name1&quot;),              filterProperty: &quot;Name1&quot;              }));      oTable.addColumn(               new sap.ui.table.Column({               label: new sap.ui.commons.Label({text: &quot;都道府県&quot;}),                  template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;RegioT&quot;),              }));          oTable.addColumn(               new sap.ui.table.Column({               label: new sap.ui.commons.Label({text: &quot;市区町村&quot;}),                  template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;Ort01&quot;),              }));        oTable.addColumn(               new sap.ui.table.Column({               label: new sap.ui.commons.Label({text: &quot;地名/番地-号&quot;}),                 template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;Stras&quot;),              }));        var oModel = new sap.ui.model.odata.ODataModel(              &quot;proxy/http/[ホスト名]:[ABAP HTTPポート番号]/sap/opu/odata/sap/ZCUSTOMER1_SRV/&quot;,              false,              &quot;[ユーザ名]&quot;,              &quot;[パスワード]&quot;               );                  oTable.setModel(oModel);                oTable.bindRows(&quot;/CUSTOMER&quot;);         rPannel.addContent(oTable);                       layout.createRow(rPannel);                this.addContent(layout);

※ユーザー名、パスワード、ホスト名、ABAP HTTPポート番号は環境毎の適切な値に置き換えてください。

 

コーディングが完了したら実行していみると、SAPシステムの内部情報がブラウザにテーブルレイアウトで表示されます。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 18

 

 

 

Google Mapとの連携

SAPシステムより取得した得意先の住所情報をGoogleMapと組み合わせて、現在地から選択した得意先までのルートを表示します。

index.htmlの文字コードをUTF-8へ変更します。

 

最初にindex.htmlファイルに関しても、先ほどのJavaScriptファイルと同様にエンコードをUTF-8に変更します。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 19

以下のようにコードを追加していきます。

index.html

&lt;!DOCTYPE HTML&gt;&lt;html&gt;    &lt;head&gt;        &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;charset=UTF-8&quot;/&gt;        &lt;!-- UIライブラリを追加 --&gt;        &lt;script src=&quot;resources/sap-ui-core.js&quot;                id=&quot;sap-ui-bootstrap&quot;                data-sap-ui-libs=&quot;sap.ui.ux3, sap.ui.commons, sap.ui.table&quot;                data-sap-ui-theme=&quot;sap_goldreflection&quot; &gt;        &lt;/script&gt;        &lt;script&gt;                sap.ui.localResources(&quot;realtech_sapui5&quot;);                var view = sap.ui.view({id:&quot;idSAPGoogleMashup1&quot;, viewName:&quot;realtech_sapui5.SAPGoogleMashup&quot;, type:sap.ui.core.mvc.ViewType.JS});                view.placeAt(&quot;content&quot;);        &lt;/script&gt;        &lt;!-- Google Api読み込み--&gt;               &lt;script type=&quot;text/javascript&quot; src=&quot;https://maps.googleapis.com/maps/api/js?sensor=false&quot;&gt;        &lt;/script&gt;        &lt;!-- Google Map連携コード --&gt;        &lt;script type=&quot;text/javascript&quot;&gt;                  //google map URL CALL                  function openroute(to){                         if (navigator.geolocation) {                             navigator.geolocation.getCurrentPosition(                                 function(position) {                                     var url = &quot;https://maps.google.co.jp/maps?f=d&amp;output=embed&amp;saddr=(&quot;                                  +position.coords.latitude                                  +&quot;,&quot;                                  +position.coords.longitude                                  +&quot;)&amp;daddr=&quot;+to+&quot;&amp;hl=ja&quot;;                         var encurl = encodeURI(url);                          document.getElementById(&quot;map&quot;).src = encurl;                     },                      function(e) {                         handleNoGeolocation(true);                     });                      } else {                             handleNoGeolocation(false);                         }                     }                             function handleNoGeolocation(errorFlag) {                     if (errorFlag) {                             var content = &#39;位置情報の取得に失敗しました。&#39;;                       } else {                         var content = &#39;本ブラウザでは位置情報が使えません。&#39;;             }                       alert(content);                  }        &lt;/script&gt;    &lt;/head&gt;    &lt;body class=&quot;sapUiBody&quot; role=&quot;application&quot;&gt;        &lt;div id=&quot;content&quot;&gt;&lt;/div&gt;    &lt;/body&gt;&lt;/html&gt;

※ユーザー名、パスワード、ホスト名、ABAP HTTPポート番号は環境毎の適切な値に置き換えてください。

参考URL:https://developers.google.com/maps/documentation/javascript/examples/map-geolocation?hl=ja

http://www.shurey.com/html/googlemaps.html

SAPGoogleMashup.view.js

sap.ui.jsview(&quot;realtech_sapui5.SAPGoogleMashup&quot;, {    /** Specifies the Controller belonging to this View.     * In the case that it is not implemented, or that &quot;null&quot; is returned, this View does not have a Controller.    * @memberOf realtech_sapui5.SAPGoogleMashup    */     getControllerName : function() {        return &quot;realtech_sapui5.SAPGoogleMashup&quot;;    },    /** Is initially called once after the Controller has been instantiated. It is the place where the UI is constructed.     * Since the Controller is given to this method, its event handlers can be attached right away.     * @memberOf realtech_sapui5.SAPGoogleMashup    */     createContent : function(oController) {        var layout = new sap.ui.commons.layout.MatrixLayout(&quot;layout&quot;);        layout.setWidth(&quot;80%&quot;);         var rPannel = new sap.ui.commons.Panel(&quot;rPannel&quot;);          var rTitle = new sap.ui.commons.Title(&quot;rTitle&quot;);        rTitle.setText(&quot;ルート検索&quot;);          rPannel.setTitle(rTitle);               var oTable = new sap.ui.table.Table({visibleRowCount: 7});         //日本語が文字化けするので、utf-8で保存する      oTable.addColumn(               new sap.ui.table.Column({               label: new sap.ui.commons.Label({text: &quot;得意先名&quot;}),                template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;Name1&quot;),              filterProperty: &quot;Name1&quot;              }));      oTable.addColumn(               new sap.ui.table.Column({               label: new sap.ui.commons.Label({text: &quot;都道府県&quot;}),                template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;RegioT&quot;),              }));          oTable.addColumn(               new sap.ui.table.Column({               label: new sap.ui.commons.Label({text: &quot;市区町村&quot;}),                template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;Ort01&quot;),              }));        oTable.addColumn(               new sap.ui.table.Column({               label: new sap.ui.commons.Label({text: &quot;地名/番地-号&quot;}),               template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;Stras&quot;),              }));        var oModel = new sap.ui.model.odata.ODataModel(              &quot;proxy/http/[ホスト名]:[ABAP HTTPポート番号]/sap/opu/odata/sap/ZCUSTOMER1_SRV/&quot;,              false,              &quot;ユーザ名&quot;,              &quot;パスワード&quot;               );                  oTable.setModel(oModel);                oTable.bindRows(&quot;/CUSTOMER&quot;);       rPannel.addContent(oTable);                       layout.createRow(rPannel);            //map用        oTable.setSelectionMode(sap.ui.table.SelectionMode.Single);        oTable.attachRowSelectionChange(function(oEvent){          var currentRowContext = oEvent.getParameter(&quot;rowContext&quot;);            var oCusomer = oModel.getProperty(&quot;Name1&quot;, currentRowContext);          mTitle.setText(&quot;From 現在地 To &quot;+oCusomer);          var oCustomerAdd = oModel.getProperty(&quot;RegioT&quot;, currentRowContext);          oCustomerAdd += oModel.getProperty(&quot;Ort01&quot;, currentRowContext);          oCustomerAdd += oModel.getProperty(&quot;Stras&quot;, currentRowContext);          openroute(oCustomerAdd);        });      var mPannel = new sap.ui.commons.Panel(&quot;mPannel&quot;);          var mTitle = new sap.ui.commons.Title(&quot;mTitle&quot;);        mPannel.setTitle(mTitle);          mPannel.addContent(new sap.ui.core.HTML({                content : &quot;&lt;iframe id=&#39;map&#39; width=100% height=400px&gt;&lt;/iframe&gt;&quot;          }));      layout.createRow(mPannel);      //      this.addContent(layout);    }});

ここまで完了して実行してみると以下の画面の通りSAPシステム内部の情報とGoogle Mapを連携させたWebアプリケーションが完成です。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 20

この第3回の記事の内容でもわかる通り、フロントエンド画面の開発にABAPは全く出てきません。Netweaver Gatewayで公開されたデータは様々なデバイスやプログラム言語からも利用しやすい形式になっています。これにより、SAPスキルの無い技術者もSAPシステムのデータを扱えるようになります。今後、そこから新たな価値が生まれてくるかもしれません。

簡易デモ

このWebアプリを試してみたいと思った方のために、今回作ったWebアプリの簡易デモを準備しましたのでご自身のPCでも触ってみていただけます。

簡易デモなのでデータはダミーのものを使っています。

&lt;!DOCTYPE HTML&gt;&lt;html&gt;    &lt;head&gt;        &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;charset=UTF-8&quot;/&gt;        &lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js&quot; type=&quot;text/javascript&quot; &gt;&lt;/script&gt;        &lt;script src=&quot;https://sapui5.hana.ondemand.com/resources/sap-ui-core.js&quot;                  id=&quot;sap-ui-bootstrap&quot;                data-sap-ui-libs=&quot;sap.ui.commons, sap.ui.ux3, sap.ui.table&quot;                data-sap-ui-theme=&quot;sap_goldreflection&quot; &gt;        &lt;/script&gt;        &lt;script&gt;        //Define some sample data        function demo(){        var aData = [            {Name1: &quot;リアルテックジャパン&quot;, RegioT: &quot;東京都&quot;, Ort01: &quot;千代田区&quot;, Stras: &quot;九段北1-8-10&quot;},            {Name1: &quot;A社(東京駅前)&quot;, RegioT: &quot;東京都&quot;, Ort01: &quot;千代田区&quot;, Stras: &quot;丸の内1丁目&quot;},            {Name1: &quot;B社(品川駅前)&quot;, RegioT: &quot;東京都&quot;, Ort01: &quot;港区&quot;, Stras: &quot;高輪3丁目&quot;},            {Name1: &quot;C社(新宿駅前)&quot;, RegioT: &quot;東京都&quot;, Ort01: &quot;新宿区&quot;, Stras: &quot;新宿3丁目&quot;},            {Name1: &quot;D社(横浜駅前)&quot;, RegioT: &quot;神奈川県&quot;, Ort01: &quot;横浜市西区&quot;, Stras: &quot;高島2丁目&quot;}        ];        var rTitle = new sap.ui.commons.Title(&quot;rTitle&quot;);          rTitle.setText(&quot;ルート検索&quot;);          var oTable = new sap.ui.table.Table({visibleRowCount: 7});        oTable.addColumn(                   new sap.ui.table.Column({                   label: new sap.ui.commons.Label({text: &quot;得意先名&quot;}),                    template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;Name1&quot;),                  width: &quot;100px&quot;,                  filterProperty: &quot;Name1&quot;                  }));        oTable.addColumn(                   new sap.ui.table.Column({                   label: new sap.ui.commons.Label({text: &quot;都道府県&quot;}),                    template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;RegioT&quot;),                  width: &quot;50px&quot;                  }));                oTable.addColumn(                   new sap.ui.table.Column({                   label: new sap.ui.commons.Label({text: &quot;市区町村&quot;}),                    template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;Ort01&quot;),                  width: &quot;50px&quot;                  }));              oTable.addColumn(                   new sap.ui.table.Column({                   label: new sap.ui.commons.Label({text: &quot;地名/番地-号&quot;}),                   template: new sap.ui.commons.TextField().bindProperty(&quot;value&quot;,&quot;Stras&quot;),                  width: &quot;70px&quot;                  }));              var oModel = new sap.ui.model.json.JSONModel();            oModel.setData({modelData: aData});            oTable.setModel(oModel);            oTable.bindRows(&quot;/modelData&quot;);            oTable.setSelectionMode(sap.ui.table.SelectionMode.Single);            oTable.attachRowSelectionChange(function(oEvent){                var currentRowContext = oEvent.getParameter(&quot;rowContext&quot;);                  var oCusomer = oModel.getProperty(&quot;Name1&quot;, currentRowContext);                mTitle.setText(&quot;From 現在地 To &quot;+oCusomer);                var oCustomerAdd = oModel.getProperty(&quot;RegioT&quot;, currentRowContext);                oCustomerAdd += oModel.getProperty(&quot;Ort01&quot;, currentRowContext);                oCustomerAdd += oModel.getProperty(&quot;Stras&quot;, currentRowContext);                openroute(oCustomerAdd);              });             var mTitle = new sap.ui.commons.Title(&quot;mTitle&quot;);                oTable.placeAt(&quot;content&quot;);        };        window.onload=demo;        &lt;/script&gt;        &lt;!-- Google Api読み込み--&gt;               &lt;script type=&quot;text/javascript&quot; src=&quot;https://maps.googleapis.com/maps/api/js?sensor=false&quot;&gt;        &lt;/script&gt;        &lt;!-- Google Map連携コード --&gt;        &lt;script type=&quot;text/javascript&quot;&gt;        //google map URL CALL        function openroute(to){            if (navigator.geolocation) {                navigator.geolocation.getCurrentPosition(                    function(position) {                        var url = &quot;https://maps.google.co.jp/maps?f=d&amp;output=embed&amp;saddr=(&quot;                            +position.coords.latitude                            +&quot;,&quot;                            +position.coords.longitude                            +&quot;)&amp;daddr=&quot;+to+&quot;&amp;hl=ja&quot;;                var encurl = encodeURI(url);                 document.getElementById(&quot;map&quot;).src = encurl;            },             function(e) {                handleNoGeolocation(true);            });            } else {                handleNoGeolocation(false);            }        }        function handleNoGeolocation(errorFlag) {            if (errorFlag) {                    var content = &#39;位置情報の取得に失敗しました。&#39;;              } else {                var content = &#39;本ブラウザでは位置情報が使えません。&#39;;            }             alert(content);        }        &lt;/script&gt;    &lt;/head&gt;    &lt;body class=&quot;sapUiBody&quot; role=&quot;application&quot;&gt;        &lt;div id=&quot;content&quot;&gt;&lt;/div&gt;        &lt;iframe id=&#39;map&#39; width=100% height=400px&gt;&lt;/iframe&gt;    &lt;/body&gt;&lt;/html&gt;

上記のコードをメモ帳にコピーして、「.html」という拡張子で保存します。この際、文字コードは「UTF-8」を選択します。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 21

HTMLファイルが保存されたらIEで開いてみてください。

初回の実行時には少し時間がかかります。これはJavaScriptのライブラリ(JQueryとSAPUI5)をダウンロードするためです。

ダウンロードが終わりページが開いたら行を選択してみると自分の位置情報が必要になるので、許可してください。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 22

これでSAPUI5を利用したWebアプリをご自身で触ってみることができます。

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編) 23

最後までお読みいただきありがとうございました。

 
ビジネスプロセス管理(RunMyJobs️)

RECENT POST「技術情報」の最新記事


技術情報

SAP導入を成功させるポイントはこれだ

技術情報

SAPのパフォーマンスに問題が出てきたら?その分析のポイント

技術情報

SAP Business Process Automation(SAP BPA)とは?

技術情報

【祝SAP Tech JAM】NUTANIX環境の実機が見られます!

【第3回】SAPUI5とSAP Netweaver Gatewayによるマッシュアップ開発入門(SAPUI5編)
New Call-to-action

RECENT POST 最新記事

RANKING人気記事ランキング

ブログ購読のお申込み