3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【BOPF】明細が登録できないときは

Last updated at Posted at 2020-05-16

##はじめに
BOPF + CDSアノテーションを使ったサンプルを作ろうとしていますが、色々な問題が起こります。CDSにアノテーションをつけるだけだから、間違えようがないと思うのですが、それでもうまくいかないことがあります。今回は、以下の事象についてご紹介します。

##事象:「明細が登録できない!」
前提:ヘッダ、明細でAssociation関係があるCDSビューを登録しています。
CRUD処理を許可しており、登録は可能なはずです。

ヘッダコンサンプションビューのアノテーション

@ObjectModel: {
    compositionRoot: true,
    transactionalProcessingDelegated: true,
    semanticKey: ['SoId'],
    representativeKey: 'SoId',
    createEnabled: true,
    updateEnabled: true,
    deleteEnabled: true,
    draftEnabled: true
}

明細コンサンプションビューのアノテーション

@ObjectModel: {
    semanticKey: ['ItemPos'],

    createEnabled: true,
    updateEnabled: true,
    deleteEnabled: true
}

登録モードでObjectPageを開くと、明細は表示されるのですがCreateボタンが出ません。また、照会モードでナビゲーションもできません。
image.png

##原因
List Reportのウィザードで、OData Navigationを選択し忘れていたことが原因でした。
image.png

##対応方法
正しく登録した場合、manifest.jsonの"sap.ui.generic.app"の中に明細へのナビゲーション用のエントリができます。OData Navigationを選択し忘れた場合も、同じ内容を手で追加すれば大丈夫です。
image.png

結果、Createボタンが表示されるようになりました。
image.png

##トラブルの背景
同じODataサービスを使って途中でプロジェクトを登録しなおしたのですが、後から登録したプロジェクトで設定をミスっていました。最初は明細が登録できなくなっているのに気づかずCDSをいじったりしていたため、最初はCDSに原因があるのかと思いました。
コンサンプションビューを登録しなおしたり、ベースのビューから作り直したりしてもダメで、途方にくれました。

###考えてみると
やはり、CDSにアノテーションをつけるだけだから、間違えようがないです。CDSが間違っていないのだから、生成されるメタデータやアノテーションも正しいのです。とすれば、あとはUI側に問題があると考えればよかったです。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?