各製品の資料を入手。
詳細はこちら →SAPUI5 MVC Apps のSAP Netweaver Gateway にリアルタイム連携を実現
SAPUI5 でビルトインODataModel を使い、SAP Netweaver Gateway への変更をリアルタイムで反映するWeb アプリを作成します。
最終更新日:2022-12-09
この記事で実現できるSAP Netweaver Gateway 連携のシナリオ
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
この記事では、バックエンドデータベースに書き込むことなくSAP Netweaver Gateway API の機能を活用するSAPUI5 アプリを作成するために、CData API サーバーおよびADO.NET Provider for SAPGateway (または250+ の他のADO.NET Providers) を使用する方法を説明します。API サーバーは、サーバー上で実行されてSAP Netweaver Gateway のOData フィードを生成する軽量のWeb アプリケーションです。OData は、Web を介したリアルタイムデータアクセスの標準であり、SAPUI5 およびOpenUI5 にビルトインのサポートがあります。
API サーバーをセットアップ
以下のステップに従って、安全なSAP Netweaver Gateway OData サービスの作成を開始します。
デプロイ
API サーバーは独自のサーバーで実行されます。Windows では、スタンドアロンサーバーまたはIIS を使用して展開できます。Java サーブレットコンテナで、API Server WAR ファイルをドロップします。詳細とハウツーについては、ヘルプドキュメントを参照してください。
API Server は、Microsoft Azure、Amazon EC2、Heroku にも簡単にデプロイできます。
SAP Netweaver Gateway に接続
API サーバーとADO.NET Provider for SAPGateway を展開した後、[Settings]->[Connections]をクリックし、API サーバー管理コンソールで新しい接続を追加してSAP Netweaver Gateway に接続するために必要な認証値とその他の接続プロパティを指定します。
SAP Gateway 接続プロパティの取得・設定方法
SAP Gateway のテーブルにアクセスするには、次の接続プロパティを設定します。
- URL = お使いの環境のURL、またはサービスの完全URL。例えば、完全URL は次のようになります:https://sapes5.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/。この例では、環境URL は次のようになります:https://sapes5.sapdevcenter.com。CustomUrlParams プロパティを使用して、追加プロパティを追加します。
- Namespace = 適切なService Namespace。先ほどの例では、IWBEP が名前空間です。サービスへの完全URL が指定されている場合は任意です。
- Service = データを取得するサービス。先ほどの例では、サービスはGWSAMPLE_BASIC です。完全URL が指定されている場合は必須ではありません。
- CustomUrlParams = HTTP リクエストに含まれる必要のある追加プロパティ;例えばsap-client=001&sap-language=EN。
SAP Gateway への認証
SAP Gateway はBasic 認証、OAuth 2.0 認証、SAP BTP Destination 認証を許可します。
Basic 認証
Basic 認証を有効にするには、以下のプロパティを設定します。
- AuthScheme = Basic。
- User = SAP Gateway へのログインに使用するユーザー名。
- Password = SAP Gateway へのログインに使用するパスワード。
上記のプロパティを設定したら、接続の準備は完了です。ローカルデータにアクセスするには、個人の認証情報を使用します。
他の認証方法については、ヘルプドキュメントの「接続の確立」セクションを参照してください。
次に、[Settings]->[Resources]をクリックして、API サーバーへのアクセスを許可するSAP Netweaver Gateway エンティティを選択できます。この記事では、例としてSalesOrderLineItems を用います。
API サーバーユーザーを承認
作成するOData サービスを決定したら、[Settings]->[Users]をクリックしてユーザーを承認します。API サーバーは、認証トークンベースの認証を使用して主要な認証スキームをサポートします。SSL を使用して、接続を認証及び暗号化することができます。アクセスはIP アドレスによって制限することもできます。デフォルトでは、ローカルマシンのみに制限されています。
ビューの作成
この記事では、ユーザーはSAPUI5 テーブルコントロールを介してSAP Netweaver Gateway を表示および操作します。テーブルのカラムは、API サーバーのAPI エンドポイントから取得したメタデータから自動的に検出されます。次のテーブルを別のView.view.xml ファイルで定義します。
<mvc:View controllerName="sap.ui.table.sample.OData2.Controller" xmlns="sap.ui.table" xmlns:mvc="sap.ui.core.mvc" xmlns:u="sap.ui.unified" xmlns:c="sap.ui.core" xmlns:m="sap.m"> <m:Page showHeader="false" enableScrolling="false" class="sapUiContentPadding"> <m:content> <Table id="table" selectionMode="MultiToggle" visibleRowCount="10" enableSelectAll="false" rows="{/SalesOrderLineItems}" threshold="15" enableBusyIndicator="true" columns="{ path: 'meta>/dataServices/schema/[${namespace}===\'CData\']/entityType/[${name}===\'SalesOrderLineItems\']/property', factory: '.columnFactory' }"> <toolbar> <m:Toolbar> <m:Title text="SAP Netweaver Gateway SalesOrderLineItems"></m:Title> </m:Toolbar> </toolbar> <noData> <m:BusyIndicator class="sapUiMediumMargin"/> </noData> </Table> </m:content> </m:Page> </mvc:View>
モデルとコントローラーの作成
SAPUI5 では、OData クエリを作成する必要はありません。ODataModel インスタンスはアプリケーションのデータアクセスコマンドを処理します。 次に、API サーバーはクエリをSAP Netweaver Gateway API 呼び出しに変換します。
コントローラーはユーザー入力を処理し、ビューを通じてユーザーに情報を表示します。新しいファイルであるController.controller.js でコントローラーを定義します。onInit 関数でモデルをインスタンス化します。API サーバーへのURL、API サーバーのOData エンドポイントへのアクセスを許可されたユーザー、そしてユーザーの認証トークンのプレースホルダー値を置き換える必要があります。
sap.ui.define([ "sap/ui/core/mvc/Controller", "sap/ui/model/odata/v2/ODataModel", "sap/ui/model/json/JSONModel", "sap/ui/table/Column", "sap/m/Text", ], function(Controller, ODataModel, JSONModel, Column, Text ) { "use strict"; return Controller.extend("sap.ui.table.sample.OData2.Controller", { onInit : function () { var oView = this.getView(); var oDataModel = new ODataModel("http://myserver/api.rsc/",{user:"MyUser", password:"MyAuthToken"}); oDataModel.getMetaModel().loaded().then(function(){ oView.setModel(oDataModel.getMetaModel(), "meta"); }); oView.setModel(oDataModel); var oTable = oView.byId("table"); var oBinding = oTable.getBinding("rows"); var oBusyIndicator = oTable.getNoData(); oBinding.attachDataRequested(function(){ oTable.setNoData(oBusyIndicator); }); oBinding.attachDataReceived(function(){ oTable.setNoData(null); //use default again ("no data" in case no data is available) }); }, onExit : function () { }, columnFactory : function(sId, oContext) { var oModel = this.getView().getModel(); var sName = oContext.getProperty("name"); var sType = oContext.getProperty("type"); var iLen = oContext.getProperty("maxLength"); iLen = iLen ? parseInt(iLen, 10) :10; return new Column(sId, { sortProperty: sName, filterProperty: sName, width: (iLen > 9 ? (iLen > 50 ?15 :10) :5) + "rem", label: new sap.m.Label({text: "{/#SalesOrderLineItems/" + sName + "/@name}"}), hAlign: sType && sType.indexOf("Decimal") >= 0 ?"End" :"Begin", template: new Text({text: {path: sName}}) }); } }); });
アプリケーションロジックの説明
アプリケーションのリソースを含むコンポーネントを作成します。Component.js で以下を定義します。
sap.ui.define([ 'sap/ui/core/UIComponent' ], function(UIComponent) { "use strict"; return UIComponent.extend("sap.ui.table.sample.OData2.Component", { metadata : { rootView : "sap.ui.table.sample.OData2.View", dependencies : { libs : [ "sap.ui.table", "sap.ui.unified", "sap.m" ] }, config : { sample : { stretch : true, files : [ "View.view.xml", "Controller.controller.js" ] } } } }); });
OpenUI5 をブーストラップして起動
MVC アプリケーションを完了するには、ブートストラップと初期化コードを追加します。これらをindex.html に直接追加します。
<!DOCTYPE HTML> <html> <head> <meta http-equiv="x-ua-compatible" content="ie=edge" /> <meta charset="utf-8"> <title>SAP Netweaver Gateway SalesOrderLineItems</title> <script id="sap-ui-bootstrap" src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" data-sap-ui-libs="sap.m" data-sap-ui-theme="sap_bluecrystal" data-sap-ui-xx-bindingSyntax="complex" data-sap-ui-preload="async" data-sap-ui-compatVersion="edge" data-sap-ui-resourceroots='{"sap.ui.table.sample.OData2": "./", "sap.ui.demo.mock": "mockdata"}'> </script> <!-- application launch configuration --> <script> sap.ui.getCore().attachInit(function() { new sap.m.App ({ pages: [ new sap.m.Page({ title: "SAP Netweaver Gateway SalesOrderLineItems", enableScrolling : false, content: [ new sap.ui.core.ComponentContainer({ height :"100%", name : "sap.ui.table.sample.OData2" })] }) ] }).placeAt("content"); }); </script> </head> <!-- UI Content --> <body class="sapUiBody" id="content" role="application"> </body> </html>
結果のSAPUI5 テーブルコントロールは、リモートSAP Netweaver Gateway 内のテーブルへの変更を反映します。これで、現在のSAP Netweaver Gateway を参照および検索できます。
