Fioriプロジェクト作成
12.2 Fioriプロジェクト作成
Visual Studio Code
先述の通り、Fioriアプリは、SAPが提供する最新のWebアプリ開発フレームワーク「SAPUI5」を使って作られます。
開発には「VS Code(Visual Studio Code)」という無料の開発ツールを利用します。
■開発の流れ(イメージ)
当研修における、開発の流れは下記となります。
1. VS CodeでFioriプロジェクトを作成
SAP Fiori Tools拡張機能を使って、テンプレートから簡単に作成できます。
2. 画面(View)と処理(Controller)を開発
XMLビューやJavaScriptで、画面デザインと動きを実装します。
3. ODataサービスと接続
バックエンド(ABAPのODataサービス。CDSビューに基づく場合もあります)からデータを取得します。
4. アプリをプレビュー・テスト
ブラウザ上で動作を確認できます。
※本研修ではデプロイは行わずローカルで動作確認します。
※今回は、ソースコードの細部まで理解するというより、全体の処理の流れをイメージすることを目標としてください。
プロジェクト登録
① VS Codeをダブルクリックして起動します。
②Template Selectionが表示されていない場合、Ctrl + Shift + P ボタンを押下し、
Fiori: Open Application Generator を選択します。
③Basic を選択します。
④Nextボタンを押下します。
⑤Connect to an OData Service を選択します。
⑥以下内容を入力します。
- OData service URL:ZODATA_YYMMnnn_SRVのURL
- Service username:ユーザ
- Service password:パスワード ※ログイン情報はSAPと同様
⑦Loginボタンを押下します。
プロジェクト登録手順の補足
ZODATA_YYMMnnn_SRVのURL
トランザクションコード:「/N/IWFND/MAINT_SERVICE」による、テスト実行時のURLを入力します。
⑧Nextボタンを押下します。※警告が表示されていてもOK
⑨Nextボタンを押下します。※デフォルトのままでOK
⑩以下内容を入力します。
- Module name:zfiori_yymmnnn_samp1
-
Application title:yymmnnn Title1
※そのほかの項目はデフォルトのままでOK
⑪Finishボタンを押下します。
⑫ポップアップが表示された場合、Yesボタンを押下します。
※プロジェクト作成中は、画面右下にInstalling dependencies…と表示されるので
プロジェクト作成完了まで待機
処理結果メッセージを表示する
処理結果(取得件数)を表示するプログラムを作成します。
①zfiori_yymmnnn_samp1>
webapp>
view>
View1.view.xml
を押下します。
②赤枠を以下内容に修正します。
<content> <Button id="btn" text="実行" press="onExecutePress" /> </content>
③Ctrl + S を押下します。※保存( Ctrl + S )するとファイル名右横の「〇」が消える
④zfiori_yymmnnn_samp1>
webapp>
controller>
View1. controller.js
を押下します。
⑤赤枠の通りに次頁の内容を追記します。
※最初の「,(カンマ)」を忘れない
,
//メッセージを出力する
onExecutePress: function () {
//ODataモデル
var oModel = this.getView().getModel();
var that = this;
//CUSTOSetメソッドを実行
oModel.read("/CUSTOSet", {
//結果を使ってメッセージ表示
success: function (oData) {
sap.m.MessageToast.show("取得件数: " + oData.results.length); //成功メッセージ
},
error: function (oError) {
sap.m.MessageToast.show("OData呼び出し失敗"); //エラーメッセージ
}
});
}
⑥Ctrl + S を押下します。※保存( Ctrl + S )するとファイル名右横の「〇」が消える
⑦zfiori_yymmnnn_samp1を右クリックし、Preview Applicationを押下します。
⑧start fiori run を押下します。
※押下後にTERMINALが起動するので、ブラウザが立ち上がるまで待機
⑨ユーザー名、パスワードを入力します。※ログイン情報はSAPと同様
⑩ログインボタンを押下します。
⑪実行ボタンを押下します。
⑫取得件数が表示されれば、処理成功です。
処理結果メッセージを表示するプログラムの補足
Viewについて
先述の通り、画面を作成しています。
<Page>では、画面に表示されるタイトルやコンテンツを設定しています。
<Button>では、実行ボタンを作成しています。
ボタン押下時にはcontrollerの「onExecutePress」メソッドを呼び出しています。
Controllerについて
先述の通り、処理(操作)を実装しています。
「onExecutePress」メソッドは、以下流れで処理しています。
①画面(View)のODataモデルを取得し、SAPのデータ読み書きを可能にする。
②ODataサービスの「CUSTOSet」というエンティティを呼び出して、データを読み込む。
③取得結果のメッセージを出力する。
Fiori実行時のデバッグ
Fiori実行でも、OData同様にデバッグが可能です。
①対象のメソッドを表示し、行をクリック(選択)します。※変更モードでもOK
②外部ブレークポイントの設定/削除ボタンを押下します。
③外部ブレークポイントが設定されたことを確認します。
④Fioriを実行します。※実行方法はP34~P37参照
⑤デバッガ画面が立ち上がるので、シングルステップなどを用いてデバッグします。
一覧画面に遷移する
一覧(処理結果)画面に遷移するプログラムを作成します
①zfiori_yymmnnn_samp1>
webapp>
view>
View1.view.xml
を押下します
②赤枠を「onPressButton」に修正します。
③Ctrl + S を押下します。※保存( Ctrl + S )するとファイル名右横の「〇」が消える
④zfiori_yymmnnn_samp1>
webapp>
controller>
View1. controller.js
を押下します。
⑤赤枠の通りに以下内容を追記します。※最初の「,(カンマ)」を忘れない
onPressButton: function(oEvent){
this.onExecutePress(); //メッセージ出力
this.onPressGoSecond(); //一覧画面へ遷移
}
⑥赤枠の通りに以下内容を追記します。※最初の「,(カンマ)」を忘れない
},
//画面遷移する
onPressGoSecond: function() {
//"View2"へ遷移
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("RouteView2");
}
⑦Ctrl + S を押下します。※保存( Ctrl + S )するとファイル名右横の「〇」が消える
⑧zfiori_yymmnnn_samp1>
webapp>
manifest.json
を押下します。
⑨赤枠の通りに次頁の内容を追記します。※最初の「,(カンマ)」を忘れない
,
"secondService": {
"uri": "/sap/opu/odata/sap/ZODATA_YYMMnnn_SRV/",
"type": "OData",
"settings": {
"annotations": [],
"localUri": "localService/mainService/metadata.xml",
"odataVersion": "2.0"
}
}
⑩赤枠の通りに以下内容を追記します。※最初の「,(カンマ)」を忘れない
,
"second": {
"dataSource": "secondService",
"preload": true,
"settings": {}
}
⑪赤枠の通りに以下内容を削除、追記します
削除:“config”の”viewPath”※最初の「,(カンマ)」を忘れない
,
{
"name": "RouteView2",
"pattern": "second",
"target": [
"TargetView2“
]
}
⑫赤枠の通りに以下内容を追記します。※TargetView1のviewNameも修正
"viewName": "zfioriyymmnnnsamp1.view.View1"
},
"TargetView2": {
"viewType": "XML",
"transition": "slide",
"clearControlAggregation": false,
"viewId": "View2",
"viewName": "zfioriyymmnnnsamp1.view.View2"
}
⑬Ctrl + S を押下します。※保存( Ctrl + S )するとファイル名右横の「〇」が消える
⑭zfiori_yymmnnn_samp1>
webapp>
viewを右クリックし、
New File…を押下します。
⑮「View2.view.xml」と入力し、エンターを押下します。
⑯赤枠の通りに次頁の内容を追記します。※P56~P58参照
<mvc:View controllerName="zfioriyymmnnnsamp1.controller.View2" xmlns:mvc="sap.ui.core.mvc" displayBlock="true"
xmlns="sap.m">
<Page id="page2" title="{i18n>title}">
<content>
<Table id="resultTable" items="{/CUSTOSet}">
<headerToolbar>
<Toolbar id="bar">
<Title id="list" text="得意先一覧" />
</Toolbar>
</headerToolbar>
<columns>
<Column id="c1">
<Text id="t1" text="得意先コード" />
</Column>
<Column id="c2">
<Text id="t2" text="国/地域" />
</Column>
<Column id="c3">
<Text id="t3" text="名称" />
</Column>
</columns>
<items>
<ColumnListItem id="cli">
<cells>
<Text id="f1" text="{Kunnr}" />
<Text id="f2" text="{Land1}" />
<Text id="f3" text="{Name1}" />
</cells>
</ColumnListItem>
</items>
</Table>
<Button id="btn2" text="戻る" press="onPressGoFirst" />
</content>
</Page>
</mvc:View>
⑰Ctrl + S を押下します。※保存( Ctrl + S )するとファイル名右横の「〇」が消える
⑱zfiori_yymmnnn_samp1>
webapp>
controllerを右クリックし、
New File…を押下します。
⑲「View2.controller.js」と入力し、エンターを押下します。
⑳赤枠の通りに次頁の内容を追記します。
sap.ui.define([
"sap/ui/core/mvc/Controller"
],
function (Controller) {
"use strict";
return Controller.extend("zfioriyymmnnnsamp1.controller.View2", {
onInit: function () {
},
//画面遷移する
onPressGoFirst: function () {
//"View1"へ遷移
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("RouteView1");
}
});
});
㉑Ctrl + S を押下します。※保存( Ctrl + S )するとファイル名右横の「〇」が消える
㉒zfiori_yymmnnn_samp1を右クリックし、Preview Applicationを押下します。
㉓start fiori run を押下します。※押下後にTERMINALが起動するので、ブラウザが立ち上がるまで待機
㉔ユーザー名、パスワードを入力します。※ログイン情報はSAPと同様
㉕ログインボタンを押下します。
㉖実行ボタンを押下します。
㉗一覧画面に遷移して取得件数が表示されれば、処理成功です。
※戻るボタンを押下すると第一画面へ遷移する
一覧画面に遷移するプログラムの補足
View1について
ボタン押下時にはcontrollerの「onPressButton」メソッドを呼び出しています。
View1.controllerについて
「onPressBuntton」メソッドは、
「onExecutePress」メソッドと「onPressGoSecond」メソッドを呼び出しています。
「onPressGoSecond」メソッドは、
「RouteView2」というナビゲーションを利用して、View2へ画面遷移します。
※「onExecutePress」メソッドは修正していないので割愛(P39参照)
manifestについて
簡単に説明すると、アプリの構成・動作・接続先などを定義する設定ファイルです。
アプリが「何とつながり」「どんな構成で」「どう動くか」 を設定します。
①基本情報
アプリ名、バージョン、IDなどの基本情報は
“id”、“title”に定義されます。
③UI設定
画面表示の設定(UI設定)は” sap.ui”、“sap.ui5”に定義されます。
④モデル定義
ODataモデルなど、モデル(データ)の紐付けは“models”に定義されます。
⑤ルーティング
画面遷移(第一画面 → 第二画面など)の設定は“routing”に定義されます。
コントローラーで”name”を指定すると“target”に設定している画面へ遷移することができます。
View2について
一覧(処理結果)画面を作成しています。
<Table>では、テーブルを作成しています。
ODataサービスの「CUSTOSet」で
取得したデータを利用します。
<headerToolbar>では、
テーブルのタイトルを設定します。
<columns>では、テーブルの項目名を設定します。
<items>では、出力する項目を設定します。
テーブルの下にボタンを作成しています。
ボタン押下時には
controllerの「onPressGoFirst」メソッドを
呼び出しています。
View2.controllerについて
「onPressGoSecond」メソッドは、
「RouteView1」というナビゲーションを利用して、View1へ画面遷移します。
一括登録する
ファイルをアップロードして、一括登録するプログラムを作成します。
まずはODataを作成して、サービス登録します。
①トランザクションコード:「SEGW」でSAP Gateway Service Builderを実行し、プロジェクトを登録します。
②登録ボタンを押下します。
③以下内容を入力します。
- プロジェクト :ZODATA_YYMMnnn_UPLOAD(nnnは受講生番号)
- Beschreibung :FILE DATA
-
パッケージ :$TMP
※そのほかの項目はデフォルトのままでOK
④続行ボタンを押下します。(EnterでもOK)
OData登録
当手順では、構造を一から定義して登録します。
①データモデルを選択した状態で、右クリックします。
登録>エンティティタイプを押下します。
②以下内容を入力します。
・ Name Entitätstyp:FILE
※そのほかの項目はデフォルトのままでOK
③続行ボタンを押下します。(EnterでもOK)
④FILE>プロパティをダブルクリックします。
⑤行追加ボタンを2回押下します。(2行追加)
⑥以下内容を入力します。
⑦保存ボタンを押下します。
OData登録手順の補足
Filenameについて
主キー(Is Key)として扱います。ファイルを一意に識別するためです。
Null許可(Nullw.mögl)は「オフ」に設定します。必ず値が必要です。
Filenameについて
実際のファイル内容(データ本体)を保持するフィールドです。
Null許可(Nullw.mögl)は「オン」(チェックあり)に設定します。空でもエラーにはなりません。
また、作成可能(Anlegbar)は「オン」(チェックあり)に設定します。データを登録することができます。
⑧Entity Setsを選択した状態で、右クリックします。
登録を押下します。
⑨以下内容を入力します。
- Name EntMenge :FILESet
- Name Entitätstyp:FILE
⑩続行ボタンを押下します。(EnterでもOK)
⑪プロジェクトを選択して、実行時オブジェクト作成ボタンを押下します。
⑫続行ボタンを押下します。(EnterでもOK)
※全項目デフォルトのままでOK
⑬ローカルオブジェクトボタンを押下します。
⑭オブジェクトが生成できたことを確認します。
(画面下部に以下のようなオブジェクト生成メッセージが表示できればOK)
⑮エンティティが登録できたら、メソッドを実装します。
対象のプロジェクト直下にある、Runtime Artifactsをダブルクリックします。
⑯ZCL_ZODATA_YYMMnnn_UPL_DPC_EXTをダブルクリックします。
⑰メソッド>継承メソッドを押下します。
FILESET_CREATE_ENTITYを右クリックし、再定義をクリックします。
⑱デフォルトのコードを削除します。
⑲次頁の内容を追記します。
※P93~P96参照
ファイルアップロード用の構造(ODataで受け取る型)
DATA:
WK_XSTRING TYPE XSTRING, "Base64デコード用
WK_STRING TYPE STRING, "文字列変換用(UTF-8)
ST_UPLOAD TYPE ZCL_ZODATA_YYMMnnn_UPL_MPC=>TS_FILE, "受信データ(OData)
IT_TABLE TYPE STANDARD TABLE OF ZTYYMMnnn11, "一括登録用内部テーブル
CL_CONV TYPE REF TO CL_ABAP_CONV_IN_CE. "文字コード変換用クラス
*ODataサービスのデータプロバイダからファイルデータを受信
IO_DATA_PROVIDER->READ_ENTRY_DATA( IMPORTING ES_DATA = ST_UPLOAD ).
*Base64 → XSTRING(デコード)
CALL FUNCTION 'SCMS_BASE64_DECODE_STR‘
EXPORTING
INPUT = ST_UPLOAD-FILEDATA
UNESCAPE = 'X‘
IMPORTING
OUTPUT = WK_XSTRING.
*XSTRING → UTF-8(文字列変換)
TRY.
CL_CONV = CL_ABAP_CONV_IN_CE=>CREATE( INPUT = WK_XSTRING ENCODING = 'UTF-8' ).
CL_CONV->READ( IMPORTING DATA = WK_STRING ).
CATCH CX_ROOT INTO DATA(E).
WRITE: / 'Conversion failed:', E->GET_TEXT( ).
ENDTRY.
*ファイル内容を改行で分割
SPLIT WK_STRING AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE DATA(IT_LINES).
*ファイル内容を内部テーブルに格納
LOOP AT IT_LINES INTO DATA(ST_LINE).
*カンマ区切りで分割
SPLIT ST_LINE AT ',' INTO TABLE DATA(IT_FIELDS).
*内部テーブルに格納
APPEND VALUE #( ZNUM = IT_FIELDS[ 1 ]
PLADAT = IT_FIELDS[ 2 ]
DELIVERY_STATUS = IT_FIELDS[ 3 ]
ZCARRIER = IT_FIELDS[ 4 ]
TRKNR = IT_FIELDS[ 5 ]
ZISDT = IT_FIELDS[ 6 ] ) TO IT_TABLE.
ENDLOOP.
*一括登録
INSERT ZTYYMMnnn11 FROM TABLE IT_TABLE.
*コミット
COMMIT WORK.
FILESET_CREATE_ENTITYのコード補足
記述したコードは以下の通りです
*ODataサービスのデータプロバイダからファイルデータを受信
IO_DATA_PROVIDER->READ_ENTRY_DATA( IMPORTING ES_DATA = ST_UPLOAD ).
*Base64 → XSTRING(デコード)
CALL FUNCTION 'SCMS_BASE64_DECODE_STR‘
EXPORTING
INPUT = ST_UPLOAD-FILEDATA
UNESCAPE = 'X‘
IMPORTING
OUTPUT = WK_XSTRING.
画面からファイルデータを受信します。
受信したBase64のデータをXSTRINGに変換(デコード)します。
*XSTRING → UTF-8(文字列変換)
TRY.
CL_CONV = CL_ABAP_CONV_IN_CE=>CREATE( INPUT = WK_XSTRING ENCODING = 'UTF-8' ).
CL_CONV->READ( IMPORTING DATA = WK_STRING ).
CATCH CX_ROOT INTO DATA(E).
WRITE: / 'Conversion failed:', E->GET_TEXT( ).
ENDTRY.
*ファイル内容を改行で分割
SPLIT WK_STRING AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE DATA(IT_LINES).
XSTRINGからUTF-8に変換します。
変換した文字列を改行で分割し、内部テーブル:IT_LINESに格納します。
*ファイル内容を内部テーブルに格納
LOOP AT IT_LINES INTO DATA(ST_LINE).
*カンマ区切りで分割
SPLIT ST_LINE AT ',' INTO TABLE DATA(IT_FIELDS).
*内部テーブルに格納
APPEND VALUE #(
ZNUM = IT_FIELDS[ 1 ]
PLADAT = IT_FIELDS[ 2 ]
DELIVERY_STATUS = IT_FIELDS[ 3 ]
ZCARRIER = IT_FIELDS[ 4 ]
TRKNR = IT_FIELDS[ 5 ]
ZISDT = IT_FIELDS[ 6 ]
) TO IT_TABLE.
ENDLOOP.
IT_LINESを一行ずつ、ST_LINESに格納します(LOOP)。
ST_LINESをカンマ区切りに分割し、IT_FIELDSに格納します。
IT_FIELDSの値を各項目に代入し、IT_TABLEに格納します。
*一括登録 INSERT ZTYYMMnnn11 FROM TABLE IT_TABLE. *コミット COMMIT WORK.
内部テーブル:IT_TABLEをDBテーブル:に一括登録します。
最後にコミットし、処理終了です。
今回のコードではエラー処理は未実装です。
実務では、エラー処理を実装しますが、当手順では割愛します。
確実に動作するファイルを用意し、実行しましょう。
※CSVファイルの作成方法はP101~P102参照
CSVファイル
①サクラエディタをダブルクリックして起動します。
②画像の通りに登録データを入力します。
③任意の保存場所を選択し、ファイル名(.csv)を設定します。※ファイルの種類、文字コードは画像の通りに設定
④保存ボタンを押下すると、CSVファイルの作成完了です。
⑳有効化ボタンをクリックします。
㉑続行ボタンを押下します。(EnterでもOK)※全項目デフォルトのままでOK
㉒トランザクションコード:「/N/IWFND/MAINT_SERVICE」でサービスの有効化および更新を実行し
作成したプロジェクトをサービスカタログに追加します。
㉓サービス追加ボタンを押下します。
㉔以下内容を入力します。
- システムエイリアス:LOCAL
- 技術サービス名:ZODATA_YYMMnnn_UPLOAD_SRV
㉕入力ボタンを押下します。(EnterでもOK)
㉖対象のサービスが表示されるので、選択します。
㉗選択済サービスの追加ボタンを押下します。
㉘Local Objectボタンを押下します。
(パッケージ割当に「$TMP」を入力してもOK)
㉙続行ボタンを押下します。(EnterでもOK)
※そのほかの項目はデフォルトのままでOK
㉚ポップアップ画面が表示されるので続行ボタンを押下します。
ODataが有効化できたら、
VS Code でFioriアプリケーションを開発します。
Fiori開発
① VS Codeをダブルクリックして起動します。
②Template Selectionが表示されていない場合、Ctrl + Shift + P ボタンを押下し、
Fiori: Open Application Generator を選択します。
③Basic を選択します。
④Nextボタンを押下します。
⑤Connect to an OData Service を選択します。
⑥以下内容を入力します。
- OData service URL:ZODATA_YYMMnnn_UPLOAD_SRVのURL
- Service username:ユーザ
-
Service password:パスワード
※ログイン情報はSAPと同様
⑦Loginボタンを押下します。
プロジェクト登録手順の補足
ZODATA_YYMMnnn_UPLOAD_SRVのURL
トランザクションコード:「/N/IWFND/MAINT_SERVICE」による、テスト実行時のURLを入力します。
⑧Nextボタンを押下します。※警告が表示されていてもOK
⑨Nextボタンを押下します。※デフォルトのままでOK
⑩以下内容を入力します。
- Module name:zfiori_yymmnnn_samp2
-
Application title:yymmnnn Title2
※そのほかの項目はデフォルトのままでOK
⑪Browse for folderボタンを押下します。
⑫以下を選択します。
- フォルダー:projects※1つ上の階層
⑬Finishボタンを押下します。
⑭ポップアップが表示された場合、Add Project to Workspaceボタンを押下します。
⑮ポップアップが表示された場合、Yesボタンを押下します。
※プロジェクト作成中は、画面右下にInstalling dependencies…と表示されるのでプロジェクト作成完了まで待機
⑯zfiori_yymmnnn_samp2>
webapp>
view>
View1.view.xml
を押下します。
⑰赤枠の通りに次頁の内容に修正します。※P122~P123参照
<mvc:View controllerName="zfioriyymmnnnsamp2.controller.View1"
xmlns:mvc="sap.ui.core.mvc" displayBlock="true"
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:layout="sap.ui.layout"
xmlns:unified="sap.ui.unified">
<content>
<Text id="text" text="CSVファイルを選択してアップロードしてください" />
<unified:FileUploader id="fileUploader" name="uploadFile" change="onFileChange" placeholder="ファイルを選択" fileType="csv"
width="80%" />
<Button id="btn" text=" アップロード" press="onUploadPress" />
</content>
⑱Ctrl + S を押下します。※保存( Ctrl + S )するとファイル名右横の「〇」が消える
⑲zfiori_yymmnnn_samp1>
webapp>
controller>
View1. controller.js
を押下します。
⑳赤枠の通りに次頁の内容を追記します。※P126~P129参照
//初期処理
onInit: function () {
this._file = null;
},
//ファイル選択時:FileUploaderのchangeイベント
onFileChange: function (oEvent) {
//ファイルオブジェクト取得
const oFileUploader = oEvent.getSource();
const oFile = oFileUploader.getFocusDomRef().files[0];
//ファイル選択失敗
if (!oFile) {
sap.m.MessageToast.show("ファイルが選択されていません");
return;
}
//ファイル選択成功
this._file = oFile;
sap.m.MessageToast.show("ファイルを選択しました: " + oFile.name);
},
// アップロードボタン押下時
onUploadPress: function () {
//ファイルが選択されていない場合、エラーメッセージを出力
if (!this._file) {
sap.m.MessageToast.show("先にファイルを選択してください");
return;
}
//ファイル読み込み準備
const oReader = new FileReader();
const that = this;
// ファイル読み込み処理
oReader.onload = function (e) {
//OData作成準備
const base64String = e.target.result.split(",")[1];
const oModel = that.getView().getModel();
const sEntitySet = "/FILESet";
//OData作成(エンティティをセット)
const payload = {
Filename: that._file.name,
Filedata: base64String
};
//ファイルアップロード処理
oModel.create(sEntitySet, payload, {
success: function () {
sap.m.MessageToast.show("アップロード成功!");
that._file = null;
},
error: function (oError) {
sap.m.MessageToast.show("アップロード失敗...");
console.error(oError);
}
});
};
//ファイルをBase64に変換
oReader.readAsDataURL(this._file);
}
㉑Ctrl + S を押下します。
※保存( Ctrl + S )するとファイル名右横の「〇」が消える
㉒zfiori_yymmnnn_samp1を右クリックし、
Preview Applicationを押下します。
㉓start fiori run を押下します。
※押下後にTERMINALが起動するので、ブラウザが立ち上がるまで待機
㉔ユーザー名、パスワードを入力します。
※ログイン情報はSAPと同様
㉕ログインボタンを押下します。
㉖Browse…ボタンを押下します。
㉗CSVファイルを選択します。(ファイル選択成功メッセージが表示)
㉘アップロードボタンを押下します。
㉙アップロード成功メッセージが表示されれば、処理成功です。
一括登録するプログラムの補足
Viewについて
ファイルアップロード画面を作成しています。
<xmlns>では、ファイルアップロードなどの拡張機能が使えるように設定しています。
<Text>では、画面に表示する文字を設定しています。
<unified>では、ファイルアップロード画面を作成しています。
また、ファイルアップロード時にはcontrollerの「onFileChange」メソッドを呼び出しています。
さらに、アップロードボタン押下時にはcontrollerの「onUploadPress」メソッドを呼び出しています。
Controllerについて
「onFileChange」メソッドは、以下流れで処理しています。
①画面(View)のファイルオブジェクトを取得する。
②ファイル取得(選択)結果によってメッセージを出力する。
「onUploadPress」メソッドは、以下流れで処理しています。
①ファイル取得(選択)失敗の場合、メッセージを出力する。
②ファイル読み込みができるようオブジェクトを取得する。
③ODataサービスの「FILESet」
というエンティティを呼び出して、
データを作成する。
④作成したODataをアップロードし、
アップロード結果によってメッセージを出力する。
⑤作成したODataをBase64に変換し、
サーバ(SAP)に送信する。
登録データについて
一括登録実行後のデータを確認します。
①トランザクションコード:「SE16」で、テーブル名(ZTYYMMnnn11)を入力し、テーブル内容ボタンを押下します。
②実行ボタンを押下します。
③一括登録データを確認します。
※CSVファイルの内容が登録されていることを確認