Tokyo Discussions
都市の垣根なく、日本語でQ&Aできます
cancel
Showing results for 
Search instead for 
Did you mean: 

$batchを使用したOData複数レコードの一括処理方法

nao_ito
Explorer
0 Kudos

ODataの複数レコード一括処理方法について下記ご相談させてください。

■背景:Postmanを使用してODataサービスの複数レコード一括更新方法を検証しております。一括更新には$batchを用いることが判明したので$batchを使用してCRUD処理の手順を明確にしたいと考えております。

<検証の前準備>

1.アドオンテーブルを作成

2.アドオンテーブルからデータ取得更新を行うCDS Viewを作成

3.Tr-CD:/IWFND/MAINT_SERVICEでCDS ViewをOData公開

nao_ito_0-1692266544386.png

nao_ito_1-1692266616441.png

<検証でできたこと>

$batchを使用してPOSTリクエストを送り、複数レコードを一括登録することはできました。

nao_ito_2-1692266895508.png

nao_ito_3-1692267005376.png

 

■困っていること

POSTができたので、PostmanのBodyを変更しUPDATE、DELETE、GETを試しましたが405エラーが発生してしまいます。SAP Blogに投稿されていた記事を参考にBodyの修正を行いましたが、405エラーのまま変化しません。

nao_ito_5-1692267228374.png

<エラーメッセージ>

"The specified HTTP method is not allowed for the resource identified by the Data Service Request URI"
 
<Bodyに記載したデータ>
--request-separator
Content-Type:multipart/mixed;boundary=changeset_1

--changeset_1
Content-Type: application/http
Content-Transfer-Encoding: binary

DELETE Z_CX_BATCH('1000000001') HTTP/1.1
Content-Type:application/json
Accept:application/json

--changeset_1--
--request-separator--


上記問題に関し何かご知見のある方いらっしゃいましたら解決方法をご教示いただけませんでしょうか。
以上、よろしくお願いいたします。
5 REPLIES 5

MakotoS
Product and Topic Expert
Product and Topic Expert
0 Kudos

$batchを試す前にまずは単体のDELETEリクエストが動くかどうかチェックしてみるのはいかがでしょうか?

masa_139
Product and Topic Expert
Product and Topic Expert
0 Kudos

Gateway の Error ログを確認するのと、Delete method に ABAP external break point でひっかければ何かヒントが見つかるかもしれないです。

 

nao_ito
Explorer
0 Kudos

@MakotoS さん @masa_139 さん

ヒントありがとうございます。
記載漏れてしまっておりましたが、単体のリクエストはCREATE、UPDATE、DELETE、GET全てできていることを確認しております。

また、GatewayのErrorログにはPostmanのレスポンスに記載されたエラーメッセージと同様の内容が出力されております。

デバッグなどしながら引き続き調査してまいりますが、もし追加で知見や解決方法の心当たりがあればご教示いただけると幸いです。

MakotoS
Product and Topic Expert
Product and Topic Expert
0 Kudos

よくみると、$batchのリクエスト自体もDELETEになっている画面がみられました。
$batchを行う際は、HTTP のBodyの中にはDELETEを入れたりしますが、実際のリクエスト自体は常にPOSTで行います。

0 Kudos

@MakotoS さん
ご教示いただきありがとうございます。
いただいたヒントをもとに無事解決することができました。
下記に解決した内容を共有させていただきます。

■UPDATE
ポイント:
・リクエストをPOSTにする

・空行を入れる

nao_ito_0-1692598734288.png

■DELETE
ポイント:
・リクエストをPOSTにする

・2行空行を入れる

nao_ito_1-1692598859090.png