事象
以下の事象でかなり苦しんだので、解決方法について残しておきます。
①UIアノテーションをMetadata Extensionに記述している場合に、Metadata Extensionを変更して有効化しても、画面に反映されない
②ヘッダ、明細のようなアソシエーションがあるときに、明細のMetadata Extentionを変更して有効化しても、画面に反映されない
環境:S/4HANA 1909 FPS1
※RAPではなく@odata.publish: true
アノテーションによりODataサービスを公開している
※ODataバージョンはV2
①の対処方法
Metadata Extentionだけ有効化してもAnnotation Modelは更新されてくれないので、Metadata Extensionの元のCDSビュー(@OData.publish: trueが設定されているビュー)を同時に有効化します。
Annotationモデルが更新されているかどうかは、以下で確認できます。
Tr-cd: /IWFND/MAINT_SERVICE
対象のODataサービスを表示して、Service Implementationをクリック
②の対処方法
①の対応の結果、見た目上Annotation Modelが最新になっていても、明細のAnnotation変更が反映されない場合があります。私は以下の方法で変更を反映させることができました。
- ヘッダCDSビューから、明細のAssociationを一旦コメントアウトし、有効化する
- コメントアウトを解除し、再度有効化する
ODataのベースになっているCDSビューを有効化したとき、自身のMetadata Extensionは見に行くが、アソシエーション先までは見てくれない動きに思えました。
そこで、2. で「新しいアソシエーションが追加された」と錯覚させる(?)ことにより、明細のMetadata Extensionを読み込ませようと考えて、上記の方法をとりました。