技術・ツール

Fiori Elements実装ガイド|List Report + Object Pageを作る

目次

はじめに

Fiori Elementsで最も使うパターンがList Report + Object Page(LR+OP)です。S/4HANAの標準Fioriアプリの大半はこの組み合わせで実装されています。

一度作り方を覚えれば、業務系の検索〜詳細編集画面の9割はこのパターンで対応できます。この記事では、プロジェクト生成からCDSビュー設計、画面表示までのステップを整理します。


完成イメージ

  • List Report:画面上部に検索フィルタ、下部に結果一覧テーブル。1行クリックで詳細へ遷移
  • Object Page:単一レコードのヘッダ、タブ構造、関連情報表示、編集モード

基礎概念はFiori Elements全体像を先に確認してください。


ステップ1:プロジェクト生成

Business Application Studio(BAS入門)で、「SAP Fiori」テンプレートからプロジェクトを生成します。

選択肢:

  • Template:List Report Object Page
  • Floorplan:List Report Page
  • Data Source:OData v4 service(S/4HANAのサービスURLまたはMock)
  • Main Entity:対象のエンティティセット(例:SalesOrder)
  • Navigation Entity:明細エンティティ(例:SalesOrderItem)

生成されると webapp/manifest.json にFiori Elements用の設定が書き込まれたアプリの雛形ができます。


ステップ2:CDSビュー設計とアノテーション

Fiori ElementsはCDSビュー(または外部OData EDMX)のアノテーションから画面を組み立てます。実務ではABAP CDS View(Cloud Development Tools使用、ABAP Cloud入門参照)でメタモデルを定義します。

@AbapCatalog.sqlViewName: 'ZV_SO'
@UI.headerInfo: {
  typeName: '販売オーダー',
  typeNamePlural: '販売オーダー一覧',
  title: { value: 'SoId' }
}
define view ZV_SalesOrder as select from vbak {
  @UI.lineItem: [{ position: 10 }]
  @UI.selectionField: [{ position: 10 }]
  key vbeln as SoId,

  @UI.lineItem: [{ position: 20 }]
  kunnr as Customer,

  @UI.lineItem: [{ position: 30 }]
  netwr as NetAmount
}

重要なアノテーション:

  • @UI.headerInfo:Object Pageのヘッダ表示定義
  • @UI.lineItem:List Reportのテーブル列定義(positionが並び順)
  • @UI.selectionField:フィルタバーの検索項目

これだけで、List Reportのフィルタと一覧、Object Pageのヘッダが自動生成されます。詳細はCDS UIアノテーション完全ガイドで解説します。


ステップ3:Object Pageのファセット定義

Object Pageに複数タブを表示する場合は @UI.facet を使います。

@UI.facet: [
  { id: 'general', purpose: #HEADER, type: #FIELDGROUP_REFERENCE,
    label: '基本情報', targetQualifier: 'General' },
  { id: 'items', type: #LINEITEM_REFERENCE,
    label: '明細', targetElement: '_Items' }
]

_Items はNavigation Propertyで、販売オーダー明細への関連を表します。明細側のCDSビューにも @UI.lineItem を定義しておくと、Object Pageの「明細」タブに明細テーブルが自動表示されます。


ステップ4:manifest.json設定

Fiori Elementsの挙動はmanifest.jsonの sap.ui5.routingsap.fe セクションで制御されます。プロジェクト生成時に基本設定は入っていますが、追加でカスタマイズする項目があります。

"sap.ui5": {
  "routing": {
    "routes": [...],
    "targets": {
      "SalesOrderList": {
        "type": "Component",
        "name": "sap.fe.templates.ListReport"
      },
      "SalesOrderDetail": {
        "type": "Component",
        "name": "sap.fe.templates.ObjectPage"
      }
    }
  }
}

ステップ5:実行と確認

npm start または BAS の Preview 機能でローカル実行します。OData v4のMockデータを使うか、S/4HANA接続設定(Destination)でリアルデータを取得します。

flowchart LR
  CDS["CDS View
+ @UI アノテーション"] --> OD["OData v4
サービス"] OD --> FE["Fiori Elements
ランタイム"] FE --> LR["List Report
画面"] FE --> OP["Object Page
画面"]
凡例 データとアノテーションの流れ [ ] コンポーネント

カスタマイズポイント

カスタムアクション追加

manifest.jsonの controlConfiguration でカスタムアクションを定義し、Controllerで処理を書きます。

カスタムセクション追加

@UI.facettype: #FIELDGROUP_REFERENCE とXML Fragmentの参照を組み合わせて、独自のセクションを差し込みます。

フィルタの初期値設定

manifest.jsonの settings.initialLoadinitialFilterValues で初期表示条件をカスタマイズできます。


よくある疑問

Q. OData v2のサービスでも使えますか?

A. 使えますが、新機能はv4前提です。新規プロジェクトはv4を推奨します。

Q. 生成したコードを直接編集してもいいですか?

A. Fiori Elementsテンプレートの仕組み上、Viewのコード自体は存在しません。カスタマイズはアノテーション、manifest.json、Extension Pointで行います。

Q. リスト表示を数万件対応にできますか?

A. サーバー側ページングがOData v4で標準サポートされており、スクロールに応じて追加ロードされます。バックエンド側でCDSのパフォーマンスを確保しておくのが前提です。

Q. モックデータでの開発は可能ですか?

A. 可能です。BASテンプレートでMock Dataソースを選ぶと、ローカルJSONを使った開発が行えます。


まとめ

  • List Report + Object PageはFiori Elementsで最頻出のパターン
  • プロジェクト生成→CDSビューのアノテーション付与→manifest.json→実行、の4ステップで動く
  • 画面コードは存在せず、CDSのアノテーションが設計図になる
  • カスタマイズはアノテーション、manifest.json、Extension Pointの3箇所
  • OData v4 + CDS の組み合わせが標準

次はAnalytical List Page / Overview Page実装ガイドで、分析系Floorplanの作り方を見ていきます。


List Report + Object Pageの構築手順を記事で学んだ後は、動くプロジェクトを一から作る実践で理解が定着します。CDSモデリングからFiori UIの実装、BTPへのデプロイまでをハンズオン形式で体験できます。

▶ SAP Fiori UI5 & CAPM on BTP – Zero to Real Project 全97レクチャー / 評価4.6 / ※英語での受講になります
← Fiori Elements全体像|5テンプレート(List Report/Object Page/ALP/Worklist/OVP)の使い分け Fiori Elements実装ガイド|Analytical List Page / Overview Page →
← 記事一覧に戻る