5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Web APIAdvent Calendar 2021

Day 11

OutSystemsでSAP ES5からデータ取得するアプリを作成する

Last updated at Posted at 2021-12-10

本記事はWeb API Advent Calendar 2021の11日目の記事です
SAP ES5からOutSystemsでデータ取得するアプリを作成方法について説明します。
今回はOdataでES5からデータ取得していますが、Odata≒RestAPIなんで普通のAPIもほぼ同じ方法で実装できます。

##OutSystems
ローコードの開発ツールです。
https://www.outsystems.com/ja-jp/
無償の環境で殆どの機能を使うことができ、リアクティブなSPAアプリケーションはフルスクラッチの数倍のスピードで開発することができます。
一部制約はありますがノーコードでなくローコードなので一部プログラムを書いて開発もでき比較的自由度が高い製品です。

##SAP ES5とは?
SAP Netweaver Gatewayのデモシステムです。
ES5で公開されているOdata(API)をサンプルデータとして使うことでアプリケーションを作る事ができます。

#今回の主な流れ
・OutSystemsの無償環境を登録
・SAP ES5に登録
・Rest APIでES5からOdataを取得するサーバー処理を作成
・取得データを一覧で表示する画面を作成
##OutSystemsの無償環境を登録
OutSystemsのローコードプラットフォーム
上記リンクの無償トライアルボタンから登録してください。
無償環境はクラウド環境で長期間ログインが無いと警告メール後環境がダウンされます(作ったアプリとか消えちゃう)
またローカルにエクセルなどでデータをインポートすることが可能でそれらのデータとアプリ本体のデータなど全部で2GB 程度使うことが可能です。
前は5GBくらい使えた気がしたんですが、いまLifetimeで確認したら2GBになっていました。
image.png

##SAP ES5に登録
Create an Account on the SAP Gateway Demo System
上記リンクに従って登録ください。

##Rest APIでES5からOdataを取得するサーバー処理を作成
OutSystemsで新規のアプリを作ったら
Logicタブ→Integrationに開いていきRESTを右クリック、Consume REST APIをクリック
image.png

ADD SINGLE METHODを選択
image.png

今回は一覧表示するアプリを作るのでURLを以下のように設定
ES5に登録されているProductSetというEntityを10件だけとってきます

https://sapes5.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/ProductSet?$top=10

image.png

Headers/AuthのタブでES5に登録したusernameとPasswordを設定
JsonでデータがほしいのでContent-Typeも設定しておきます
image.png

TESTタブを押してテスト実行
問題なくデータが取れてきたらOKです
image.png

FINISHボタンで閉じたあと以下の画像の下の方にあるOn Before RequestOn After Requestを設定します。

これらの処理は今回はいじらないですが
On Before Request:API実行前に動く処理。主に画面からもらってきた検索条件の設定などを行う。
On After Request:API実行実行後に動く処理。返却値の設定やエラー処理を行う。

image.png

##取得データを一覧で表示する画面を作成
interfaceタブ→UI Flow→MainFlowを右クリックでAdd Screenします

image.png

Empty画面をクリックしてCreate Screenします

image.png

新しく作ったScreenを右クリックしてAdd Local Variableをします。
これで画面内で使うローカル変数が作れます。
image.png

###ローカル変数の型を変更します
デフォルトだとTextになっています
Data TypeのタブをList→ResuitItemを選択します
これでListのResuitItem型に設定できます。
ResuitItem型はOdataのResponsをOutsystemsが自動で解釈して
Dataタブ→Structures→Sapes5Sapdevcenterに作ってくれたEntityになります
以下のjsonのresults部分と同じ形になっています

Respons.json
{
  "d": {
    "results": [
      {
        "__metadata": {
          "id": "https://sapes5.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/ProductSet('HT-1000')",
          "uri": "https://sapes5.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/ProductSet('HT-1000')",
          "type": "GWSAMPLE_BASIC.Product",
          "etag": "W/\"datetime'2021-12-02T00%3A00%3A53.0000000'\""
        },
        "ProductID": "HT-1000",
        "TypeCode": "PR",
        "Category": "Notebooks",
        "Name": "Notebook Basic 15",
        "NameLanguage": "EN",
        "Description": "Notebook Basic 15 with 2,80 GHz quad core, 15\" LCD, 4 GB DDR3 RAM, 500 GB Hard Disc, Windows 8 Pro",
        "DescriptionLanguage": "EN",
        "SupplierID": "0100000046",
        "SupplierName": "SAP",
        "TaxTarifCode": 1,
        "MeasureUnit": "EA",
        "WeightMeasure": "4.200",
        "WeightUnit": "KG",
        "CurrencyCode": "USD",
        "Price": "956.00",
        "Width": "30.000",
        "Depth": "18.000",
        "Height": "3.000",
        "DimUnit": "CM",
        "CreatedAt": "2021-12-02T00:00:53Z",
        "ChangedAt": "2021-12-02T00:00:53Z",
        "ToSupplier": {
          "__deferred": {
            "uri": "https://sapes5.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/ProductSet('HT-1000')/ToSupplier"
          }
        },
        "ToSalesOrderLineItems": {
          "__deferred": {
            "uri": "https://sapes5.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/ProductSet('HT-1000')/ToSalesOrderLineItems"
          }
        }
      }
    ]
  }
}

image.png

image.png

###画面からREST APIの処理を呼び出す
画面の左端の一覧からBuutonオブジェクトをScreenの右上のあたりにドラックアンドドロップします

image.png

On Clickイベントが未設定でエラーになっているので新しいクライントActionを作ります

image.png

StartとEndの間に先程作ったGetProductSetをドラックアンドドロップします

image.png

左端の一覧からassignを次にドラックアンドドロップして左のように設定します
これでRESTでとってきたデータを画面のローカル変数に代入できます

image.png

Screen画面に戻って画面の真ん中あたりにTableオブジェクトをドラックアンドドロップします

image.png

テーブルオブジェクトのSouceにローカル変数を設定します

image.png

画面に出したいカラムを選んでドラックアンドドロップします

image.png

あとこれをパブリッシュすればボタンを押すとES5から取得したデータを一覧表示するアプリが作れます。

image.png

image.png

※参考
OutSystemsでのSAP ODataサービスの利用

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?