LoginSignup
2
0

More than 1 year has passed since last update.

Form Entry Object PageでObject Pageだけのアプリを作る

Last updated at Posted at 2022-12-25

はじめに

この記事では、FioriのFlexible Programming Modelで利用可能になったテンプレートの一つである、Form Entry Object Pageを使ってObject Pageだけのアプリを作成します。Flexible Programming Modelが使えるようになる前は、Object Pageだけの画面を作りたかったとしてもList Reportの画面を経由する必要がありました。Form Entry Object Pageを使うことで、「タイルをクリックして直接登録用のObject Pageを開く」ということが可能になります。
image.png

前提

  • OData V4を使用していること
  • ドラフトが有効であること

今回は、以下のリポジトリにあるCAPのプロジェクトをベースに作成します。
https://github.com/miyasuta/flex-orders

受注のヘッダと明細、そしてマスタデータというシンプルな構成です。
image.png

UIアノテーションは以下のファイルで設定しています。
https://github.com/miyasuta/flex-orders/blob/main/srv/order-srv-ui.cds

Form Entry Object Pageの生成

ウィザードを使ってFioriアプリを生成します。ポイントとなるステップに絞って説明します。

Fiori elementsのテンプレートで"Form Entry Object Page"を選択します。
image.png

メインのエンティティおよびナビゲーションエンティティ(明細がある場合)を選択します。
image.png

動作確認

生成が完了すると、Application Infromationの画面が表示されます。"Preview Application"をクリックします。
image.png

ドロップダウンでwatch-<アプリ名> cds watch --open ...の方を選択します。こちらのオプションでは、CAPのサービスを起動すると同時にブラウザでアプリを開きます。
image.png

以下の画面が表示されました。
image.png
明細の"Create"ボタンを押すと何もないObject Pageに遷移してしまいます。
image.png

拡張

生成されたアプリケーションで気になる点がいくつかあるので、手を加えていきます。

1. 明細をインラインで入力する

明細をインラインで入力できるようにしたいので、manifest.jsonに以下の変更を加えます。

            "targets": {
                "OrdersObjectPage": {
                    "type": "Component",
                    "id": "OrdersObjectPage",
                    "name": "sap.fe.templates.ObjectPage",
                    "options": {
                        "settings": {
                            ...,
                            "controlConfiguration":{                              
                                "to_Items/@com.sap.vocabularies.UI.v1.LineItem":{
                                    "tableSettings": {       
                                        "creationMode":{                                          
                                            "name": "Inline"           
                                        }                                  
                                    }                              
                                }                      
                            } 
                        }
                    }
                },

結果、インラインでの明細入力ができるようになりました。
image.png
新規明細は1番上に挿入されます。
image.png

2. 明細のObject Pageへナビゲーションさせない

明細のObject Pageへのナビゲーションをさせないように、以下の変更を加えます。

  • 明細詳細へのルートとナビゲーション、ターゲットを削除(以下の選択した部分)
    image.png
    image.png

image.png

3. 登録時のメッセージを変更する

デフォルトでは、"Create"を押すと"Object created"のメッセージが表示されます。
image.png
このメッセージはあまりにも一般的なので、"Order created"というメッセージに変えたいと思います。このためには、カスタムのi18nファイルを作成し、manifest.jsonにそのファイルを指定します。

  • カスタムのi18nファイル
    i18nフォルダの中にcustomI18N.propertiesというファイルを作成しました(名前は何でもよい)。
    image.png
C_TRANSACTION_HELPER_OBJECT_CREATED=Order created

上書きできる標準メッセージは以下のドキュメントに載っています。
Localization of UI Texts

  • manifest.jsonの設定
    ObjectPageのoptions>settingsに"enhanceI18n"を追加。上記で作成したi18nファイルを指定する
"targets": {
                "OrdersObjectPage": {
                    "type": "Component",
                    "id": "OrdersObjectPage",
                    "name": "sap.fe.templates.ObjectPage",
                    "options": {
                        "settings": {
                            ...,
                            "controlConfiguration":{                              
                                "to_Items/@com.sap.vocabularies.UI.v1.LineItem":{
                                    "tableSettings": {       
                                        "creationMode":{                                          
                                            "name": "Inline"           
                                        }                                  
                                    }                              
                                }                      
                            },
                            "enhanceI18n": "i18n/customI18N.properties"
                        }
                    }
                }
            }

結果、登録時のメッセージが"Order created"に変わりました。i18nファイルなので、もちろん翻訳も可能です。
image.png

おわりに

Form Entry Object Pageを使うことで、List Reportを経由せずに直接Object Pageを開くことが可能になります。注意点としては、Form Entry Object Pageは登録専用であり、照会、変更には使えないということです。登録、変更、照会が必要なアプリケーションの場合は従来通りList Reportのテンプレートを使用しましょう。

2
0
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
2
0