1. はじめに
このブログでは、SAP Fiori ElementsのList Reportで、各行(アイテム)に対して“添付ファイル“のような項目を持たせ、行単位でファイルのアップロード・参照・削除の実現方法を紹介します。
List Reportのデータソースは、ABAP RESTful Application Programming Model(RAP)フレームワークを使用して開発したOData V4サービスを対象とし、RAP開発においてファイルアップロードを実現するために必要な実装についての内容となっています。
2. ファイルアップロード実装のポイント
ファイルアップロード実装においては、①ファイル格納に必要なテーブル項目の定義、および、②ファイルオブジェクト格納用項目とファイルタイプ格納用項目への適切なアノテーション付与の2点が必要となります。
ファイル格納に必要なテーブル項目の定義
カスタムテーブルに以下の3つの項目を設定します(項目名は、サンプルです。)
ファイルオブジェクト格納用項目(ファイルサイズを指定しない場合、abap.rawstring(0)とする)例:attachment: abap.rawstring(0);ファイル名格納用項目例:filename: abap.char(128);ファイルタイプ格納用項目例:mimetype: abap.char(128);CDS Viewでのファイルオブジェクト格納用項目とファイルタイプ格納用項目への適切なアノテーション付与ファイルオブジェクト格納用項目例:@Semantics.largeObject : {
mimeType: ‘Mimetype’,
fileName: ‘Filename’,
contentDispositionPreference: #INLINE
}ファイルタイプ格納用項目@Semantics.mimeType: true
3. 実装例
本ブログでは、RAP開発の簡略化のため、RAP Generatorを使用します。RAP Generatorは、カスタムテーブルからCDS ViewやBehavior Definition等のRAP オブジェクト群をウィザードによる設定のみで生成可能なツールです。RAP Generator を利用して RAP オブジェクトを生成する場合、ドラフト機能を持つ更新処理(Managed Runtime)に対応したサービスが生成されます。そのため、テーブル定義にドラフト機能や更新処理に利用するための必須項目を定義している必要があります。RAP Generatorについては、以下のSAP Helpをご確認ください。
SAP Help: Generating a RAP Business Service with the Generate ABAP Repository Objects Wizards
以下の実装手順は、SAP Help: Example: OData UI Service Generation Based on a Database Tableのサンプルをベースとした実装例となります。
1. RAP Generatorによるオブジェクトを格納するためのパッケージを作成します。
2. 1で作成したパッケージ内にカスタムテーブルを作成します。
@EndUserText.label : ‘Custom Table for file upload test’
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zpt_file_upload {
key client : abap.clnt not null;
key customer_id : /dmo/customer_id not null;
first_name : /dmo/first_name;
last_name : /dmo/last_name;
title : /dmo/title;
street : /dmo/street;
postal_code : /dmo/postal_code;
city : /dmo/city;
country_code : land1;
phone_number : /dmo/phone_number;
email_address : /dmo/email_address;
attachment : abap.rawstring(0);
filename : abap.char(128);
mimetype : abap.char(128);
local_created_by : abp_creation_user;
local_created_at : abp_creation_tstmpl;
local_last_changed_by : abp_locinst_lastchange_user;
local_last_changed_at : abp_locinst_lastchange_tstmpl;
last_changed_at : abp_lastchange_tstmpl;
}
3. RAP Generatorを実行し、ウィザードに沿って設定します。
対象のカスタムテーブルを右クリック→”Generate ABAP Repository Objects…” で実行
サービスタイプの選択
生成オブジェクト格納用パッケージの選択
生成されるオブジェクトを確認し、必要に応じて名称変更やエイリアス名を設定
4. 生成されたデータモデル(CDS View)へファイルアップロードのためのアノテーションを追加し、有効化します。
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: ‘##GENERATED ZPT_FILE_UPLOAD’
define root view entity ZR_PT_FILE_UPLOAD
as select from zpt_file_upload
{
key customer_id as CustomerID,
first_name as FirstName,
last_name as LastName,
title as Title,
street as Street,
postal_code as PostalCode,
city as City,
country_code as CountryCode,
phone_number as PhoneNumber,
email_address as EmailAddress,
@Semantics.largeObject : {
mimeType: ‘Mimetype’,
fileName: ‘Filename’,
contentDispositionPreference: #INLINE
}
attachment as Attachment,
filename as Filename,
@Semantics.mimeType: true
mimetype as Mimetype,
@Semantics.user.createdBy: true
local_created_by as LocalCreatedBy,
@Semantics.systemDateTime.createdAt: true
local_created_at as LocalCreatedAt,
@Semantics.user.localInstanceLastChangedBy: true
local_last_changed_by as LocalLastChangedBy,
@Semantics.systemDateTime.localInstanceLastChangedAt: true
local_last_changed_at as LocalLastChangedAt,
@Semantics.systemDateTime.lastChangedAt: true
last_changed_at as LastChangedAt
}
5. サービスバインディングを公開します。
6. エンティティを選択して、プレビューします。
7. “Create”ボタンからデータの登録およびファイルのアップロードを実行します。
4. まとめ
上記の実装により、ABAP RESTful Application Programming Model(RAP)を用いたOData V4サービスを利用し、SAP Fiori ElementsのList Reportで各行(アイテム)ごとに“添付ファイル”項目を持たせ、行単位でファイルのアップロード・参照・削除を実現することが可能です。是非ご活用下さい。
参考情報
SAPUI5 Document: Enabling Stream Support
1. はじめにこのブログでは、SAP Fiori ElementsのList Reportで、各行(アイテム)に対して“添付ファイル“のような項目を持たせ、行単位でファイルのアップロード・参照・削除の実現方法を紹介します。List Reportのデータソースは、ABAP RESTful Application Programming Model(RAP)フレームワークを使用して開発したOData V4サービスを対象とし、RAP開発においてファイルアップロードを実現するために必要な実装についての内容となっています。 2. ファイルアップロード実装のポイントファイルアップロード実装においては、①ファイル格納に必要なテーブル項目の定義、および、②ファイルオブジェクト格納用項目とファイルタイプ格納用項目への適切なアノテーション付与の2点が必要となります。ファイル格納に必要なテーブル項目の定義カスタムテーブルに以下の3つの項目を設定します(項目名は、サンプルです。)ファイルオブジェクト格納用項目(ファイルサイズを指定しない場合、abap.rawstring(0)とする)例:attachment: abap.rawstring(0);ファイル名格納用項目例:filename: abap.char(128);ファイルタイプ格納用項目例:mimetype: abap.char(128);CDS Viewでのファイルオブジェクト格納用項目とファイルタイプ格納用項目への適切なアノテーション付与ファイルオブジェクト格納用項目例:@Semantics.largeObject : {
mimeType: ‘Mimetype’,
fileName: ‘Filename’,
contentDispositionPreference: #INLINE
}ファイルタイプ格納用項目@Semantics.mimeType: true3. 実装例本ブログでは、RAP開発の簡略化のため、RAP Generatorを使用します。RAP Generatorは、カスタムテーブルからCDS ViewやBehavior Definition等のRAP オブジェクト群をウィザードによる設定のみで生成可能なツールです。RAP Generator を利用して RAP オブジェクトを生成する場合、ドラフト機能を持つ更新処理(Managed Runtime)に対応したサービスが生成されます。そのため、テーブル定義にドラフト機能や更新処理に利用するための必須項目を定義している必要があります。RAP Generatorについては、以下のSAP Helpをご確認ください。SAP Help: Generating a RAP Business Service with the Generate ABAP Repository Objects Wizards以下の実装手順は、SAP Help: Example: OData UI Service Generation Based on a Database Tableのサンプルをベースとした実装例となります。 1. RAP Generatorによるオブジェクトを格納するためのパッケージを作成します。2. 1で作成したパッケージ内にカスタムテーブルを作成します。 @EndUserText.label : ‘Custom Table for file upload test’
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zpt_file_upload {
key client : abap.clnt not null;
key customer_id : /dmo/customer_id not null;
first_name : /dmo/first_name;
last_name : /dmo/last_name;
title : /dmo/title;
street : /dmo/street;
postal_code : /dmo/postal_code;
city : /dmo/city;
country_code : land1;
phone_number : /dmo/phone_number;
email_address : /dmo/email_address;
attachment : abap.rawstring(0);
filename : abap.char(128);
mimetype : abap.char(128);
local_created_by : abp_creation_user;
local_created_at : abp_creation_tstmpl;
local_last_changed_by : abp_locinst_lastchange_user;
local_last_changed_at : abp_locinst_lastchange_tstmpl;
last_changed_at : abp_lastchange_tstmpl;
} 3. RAP Generatorを実行し、ウィザードに沿って設定します。対象のカスタムテーブルを右クリック→”Generate ABAP Repository Objects…” で実行 サービスタイプの選択 生成オブジェクト格納用パッケージの選択 生成されるオブジェクトを確認し、必要に応じて名称変更やエイリアス名を設定 4. 生成されたデータモデル(CDS View)へファイルアップロードのためのアノテーションを追加し、有効化します。@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: ‘##GENERATED ZPT_FILE_UPLOAD’
define root view entity ZR_PT_FILE_UPLOAD
as select from zpt_file_upload
{
key customer_id as CustomerID,
first_name as FirstName,
last_name as LastName,
title as Title,
street as Street,
postal_code as PostalCode,
city as City,
country_code as CountryCode,
phone_number as PhoneNumber,
email_address as EmailAddress,
@Semantics.largeObject : {
mimeType: ‘Mimetype’,
fileName: ‘Filename’,
contentDispositionPreference: #INLINE
}
attachment as Attachment,
filename as Filename,
@Semantics.mimeType: true
mimetype as Mimetype,
@Semantics.user.createdBy: true
local_created_by as LocalCreatedBy,
@Semantics.systemDateTime.createdAt: true
local_created_at as LocalCreatedAt,
@Semantics.user.localInstanceLastChangedBy: true
local_last_changed_by as LocalLastChangedBy,
@Semantics.systemDateTime.localInstanceLastChangedAt: true
local_last_changed_at as LocalLastChangedAt,
@Semantics.systemDateTime.lastChangedAt: true
last_changed_at as LastChangedAt
}5. サービスバインディングを公開します。 6. エンティティを選択して、プレビューします。 7. “Create”ボタンからデータの登録およびファイルのアップロードを実行します。 4. まとめ上記の実装により、ABAP RESTful Application Programming Model(RAP)を用いたOData V4サービスを利用し、SAP Fiori ElementsのList Reportで各行(アイテム)ごとに“添付ファイル”項目を持たせ、行単位でファイルのアップロード・参照・削除を実現することが可能です。是非ご活用下さい。 参考情報SAPUI5 Document: Enabling Stream Support Read More Technology Blog Posts by SAP articles
#SAP
#SAPTechnologyblog