この記事のポイント
SAP ODataはS/4HANA時代の標準API。Fiori・外部連携・AIエージェントの3用途で共通インターフェースとして使われる
新規開発はOData V4が原則。V2はサポート継続で$batchやMERGE等の基本機能は備えるが、主要な機能革新はV4中心で$metadataの標準ボキャブラリも厳密
RAPの3層モデル(Data Model & Behavior/Service Definition/Service Binding)でODataは「書く」のではなく「宣言する」設計が標準
Joule Studio Agent Builderが2026年GA。CAP ODataのActionが6フェーズ手順でAIエージェントのスキルに昇格する
S/4HANA Cloud Public Edition は$180-400/user/月(第三者調査ベースの目安)、OData $topは最大5,000件、URL 8,000文字、ペイロード500MBの制約あり

Microsoft MVP・AIパートナー。LinkX Japan株式会社 代表取締役。東京工業大学大学院にて自然言語処理・金融工学を研究。NHK放送技術研究所でAI・ブロックチェーンの研究開発に従事し、国際学会・ジャーナルでの発表多数。経営情報学会 優秀賞受賞。シンガポールでWeb3企業を創業後、現在は企業向けAI導入・DX推進を支援。
SAP ODataとは、SAP S/4HANA時代における「SAP標準のWeb APIプロトコル」で、Fiori UI・外部システム連携・AIエージェントの3用途を貫く共通インターフェースとして機能します。
2026年は、ABAP Cloud×RAPによる宣言的なサービス定義、新規開発でのOData V4優先方針の浸透、Joule for DevelopersのOData UI Service Wizard、そしてJoule Studio Agent BuilderによるODataのAIエージェント化が同時並行で進む節目の年です。
本記事では、OData V2/V4の違いと選定軸、SEGW/RAP/CAPの実装ルート、RAPでのサービス定義3層モデルとBehavior Definitionの具体構文、Joule世代がもたらす開発体験の刷新、S/4HANA Cloud APIの制限実数値、BAPI/RFC/IDocとの使い分け、設計のベストプラクティスを2026年6月時点で体系的に整理します。
目次
SAP ODataとは——S/4HANA時代の標準Web APIプロトコル
SAP ODataサービスの実装ルートとRAPでのサービス定義
Business Object(Simple/Composite)
managed/unmanaged/draft-enabled の使い分けとBDL構文
Joule for Developersが変えるSAP OData実装フロー
OData UI Service from Scratch Wizard
VS Code対応とABAP MCP Server(2026年ロードマップ)
Joule StudioでCAP ODataをAIエージェントに昇格させる手順
SAP ODataの費用構造とS/4HANA Cloud API制限の実数値
S/4HANA Cloud Public Editionのライセンス相場
Joule Studio Agent Builderの2026年末までの無料アクセス
SAP ODataとは——S/4HANA時代の標準Web APIプロトコル
SAP ODataとは、SAPのシステムが持つビジネスデータと業務ロジックを、HTTPベースの標準的なWeb APIとして公開するためのプロトコルです。
ベースとなるOData(Open Data Protocol)はMicrosoftが2007年に提唱し、現在はOASISとISO/IEC 20802で国際標準化されているオープン規格です。HTTPメソッド(GET/POST/PUT/PATCH/DELETE)と、V4ならJSON、V2ならXML/JSONでデータをやり取りします。
SAPの中ではS/4HANA時代に決定的な役割を担うようになりました。SAP Fioriアプリの裏で動くデータレイヤー、外部システム連携の標準窓口、そして2026年以降はJouleを中心としたAIエージェントから業務データを呼び出すためのインターフェースまで、いずれもOData経由で実現されます。
本記事ではこの「Fiori・外部連携・AIエージェントの3用途を貫く共通インターフェース」という位置づけを起点に、バージョン選定・実装ルート・Jouleがもたらす変化・費用とAPI制限・他連携方式との使い分け・落とし穴を順に整理します。

OData V2とV4の違いと、SAP環境での選定軸
「ODataを使う」と決めた次に必ず出てくる論点が、V2とV4どちらを採用するかです。SAPは公式に「新規開発はV4」と方向を出していますが、現場ではFioriテンプレや既存システムの都合でV2が必要になるケースが残ります。本セクションは、SAP環境におけるV2/V4の違いと、ケース別の選定軸を一気に整理することを目的としています。

OData V2とV4の主な違い
OData V4は2014年にOASISで標準化された改訂版で、V2に対して機能・パフォーマンス・メタデータ表現力の3軸で前進しています。以下の表は、SAP公式の「Summary of Differences Between OData V2 and V4」を踏まえ、SAP実装でとくに効いてくる項目をピックアップしたものです。

| 観点 | OData V2 | OData V4 |
|---|---|---|
| 標準化団体 | OData(プロトコル) | OASIS/ISO/IEC 20802 |
| データ形式 | XML原則、JSON補助 | JSON原則、XMLも可 |
| クエリ機能 | ||
| HTTPメソッド | 仕様上はGET/POST/PUT/MERGE/DELETE。PUT/DELETE非対応クライアントにはX-HTTP-Methodヘッダによるトンネリングが用意される | GET/POST/PUT/PATCH/DELETEを素直に使う |
| メタデータ | 緩やか。アノテーションは独自拡張が多い | 必須に近い厳密さ。UI/Common/Communicationなど標準ボキャブラリで意味を明確化 |
| 階層関係 | フラットなEntity中心 | Containment・継承などモデリング表現を強化 |
| バッチ/Deep Insert | $batchエンドポイントによるBatch Processing対応、Deep Insertは限定的 | $batchがJSON-batchまで標準化、Deep Insert・Deep Updateがフル対応 |
| AsyncJob/LROサポート | なし(個別実装で対応する例あり) | あり(長時間ジョブを非同期で受けてポーリング) |
| デルタクエリ | プロトコル標準にはなし。SAP NetWeaver Gatewayでは実装依存のDelta Token対応例あり | 標準化された$deltaトークン・Delta Linkで差分取得 |
| 型システム | 緩い(Edm.DateTime等) | 厳密(Edm.Date/Edm.TimeOfDay/Edm.DateTimeOffset/Enum等) |
SAPの中での実務的な意味合いに言い換えると、V4は「FioriやAIエージェントが$metadataだけ読めば挙動を再現できる」設計になりやすいバージョンです。V2は標準ボキャブラリが弱い分、UIや外部システム側で「このフィールドは何のラベルか」「必須かどうか」をハードコードする実装が多くなりがちで、後の保守コストとして跳ね返ります。
加えてV4は$deltaトークン・Delta Linkによる差分取得がプロトコル標準として備わっており、差分連携の設計がシンプルになります。V2にもSAP NetWeaver Gateway側で実装依存のDelta Token対応例はあるものの、Cloud上の標準APIをそのまま使う前提では「差分を取りたいならV4」というのが現実的な判断です。
どちらを選ぶかの判断軸
V2/V4どちらを選ぶかは、**「これから10年使うか」「いま動いている資産との接続が前提か」**で割り切るのがシンプルです。以下にケース別の指針をまとめました。

-
新規にFioriや外部連携を作る場合
原則V4。S/4HANA Cloudが公開する標準APIもV4が中心で、SAP API Business Hub上ではOData V4のカタログが拡充されています
-
既存V2サービスを延命したい場合
V2のままでよい。V2は2026年時点でも公式に「サポート継続」と扱われています。ただしV4以降に追加された新機能(JSON-batchの標準化、 delta)はV2には載らないため、リファクタの計画は早めに立てておくのが安全ですsearchによる全文検索、Function/Actionの一級扱い、AsyncJob/LROサポート、標準化された
-
AIエージェントから呼び出す場合
V4が第一候補。$metadataの標準ボキャブラリが厳密で、エージェントが「このODataはこういう挙動」を機械的に解釈しやすいため
-
既存のSAPUI5資産との互換性を最優先する場合
V2が必要な領域が残る。Fioriエレメントの一部テンプレートはV2前提の挙動を持っているため、移行はテンプレ単位で要件確認が必要
-
数百万件規模の差分連携が前提の場合
V4を第一候補に。プロトコル標準の$delta/Delta LinkがそのままCloud標準APIで使えるため、運用設計の難易度が下がる
SAPは公式の発言として「OData V4 is the new OData V2」とSAPコミュニティで明言しており、長期方針はV4に寄せる前提で組み立てるのが現実的な判断です。
支援現場の実感としても、「V4で組めばよかった」という声は数年経って必ず出てきます。Service Bindingのv2/v4切り替えはRAPなら宣言1行で済むものの、UI・外部システム・テストを含めた波及修正は数人月になりがちで、最初からV4で組むことの効果は時間が経つほど効いてきます。
SAP ODataサービスの実装ルートとRAPでのサービス定義
SAP ODataサービスを作る経路は、SEGW(Service Builder)/RAP(RESTful ABAP Programming Model)/CAP(Cloud Application Programming Model)の3つに整理できます。本セクションでは、3ルートの位置づけと、ABAP Cloud時代のデファクトであるRAPの3層モデル・Business Object設計・managed/unmanaged/draft の使い分けを構文サンプル付きで深掘りします。

3つの実装ルートの位置づけ
3ルートはどれも公式にサポートされていますが、対象環境と将来性に差があります。以下の表で整理しました。

| 実装ルート | 主な対象環境 | 中心言語 | 推奨される使いどころ | 将来性 |
|---|---|---|---|---|
| SEGW(Service Builder) | SAP NetWeaver Gateway/オンプレECC/S/4HANA on-premise | ABAP | 既存ECCや旧Gateway環境を延命したい場合 | 縮小傾向。新規プロジェクトでは非推奨 |
| RAP(RESTful ABAP Programming Model) | S/4HANA Cloud/on-premise(ABAP Cloud) | ABAP(Clean ABAP)+CDS | ABAP Cloudを前提とした標準実装 | デファクト |
| CAP(Cloud Application Programming Model) | SAP BTP(Cloud Foundry/Kyma) | Node.js/Java(+CDS) | BTP側でNode/Java拡張アプリを作る場合 | BTPでの第一候補 |
2026年現在、ABAP Cloud(S/4HANA Cloud Public/Private、ABAP Environment)を前提とする限りRAPが事実上のデフォルトになっています。SEGWはECC 6.0や古いS/4HANA on-premiseの保守として残るものの、新規プロジェクトでは選択しないのが安全策です。CAPはBTP上でNode.js/JavaのODataサービスを作るときの第一候補で、RAPと同様にCDSを共通言語として使えるため、ABAP側と表現が揃う利点があります。
「ABAPは既存資産がある/拡張アプリを別言語で作りたい」の軸で迷うなら、ABAP資産がある業務トランザクション系はRAP、新規拡張アプリの軽量データAPIはCAP、というのが実務的な落としどころです。
RAPの3層モデル
RAPは、CDSとBehavior Definitionを起点に**「ODataサービスを書くのではなく、宣言するとフレームワークが生成する」**という思想で組まれています。SAP公式の学習コースでは、RAPアプリは以下の3層で整理されます。

-
Data Model & Behavior層
CDSデータモデリングビュー・CDS Behavior Definition・ABAPクラスでの振る舞い実装を含むビジネスオブジェクトを定義する。データモデルとデータ関連ロジックを「消費とは独立して」記述する
-
Service Definition層
ビジネスサービスのスコープを定義する。BO Projection(消費向けの投影層)のうち、どれをサービスとして公開するかを束ねる
-
Service Binding層
通信プロトコル(OData V2/V4)と、サービスの種類(UI Service/Web API)を確定する。同じデータモデル・Service Definitionから複数のService Bindingを生やし、UI向けとAPI向けを並走させることもできる
この3層分離の効果は大きく、データモデルや業務ロジックを書き換えずに「UI向けの公開」「外部API向けの公開」「将来のAIエージェント向けの公開」を1つのBOから派生させられる点が、SEGW時代の手書きODataから決定的に変わった部分です。
Business Object(Simple/Composite)
RAPのBusiness Object(BO)には2つの構造があります。

- Simple BO: 単一ノードのEntity。マスタデータの軽量公開などに使う
- Composite BO: ルート(ヘッダ)と子ノード(明細)からなる階層構造。販売注文のようなドキュメント型業務オブジェクトに使う
Behavior層では、データに対するCRUD(Create/Update/Delete)・特定アクション/関数・フィーチャーコントロール(読み取り専用・必須等)・同時実行制御(ロック・ETag)・認可制御を宣言します。これらすべてをBehavior Definition Language(BDL)で記述し、フレームワークがOData層に展開する流れです。
managed/unmanaged/draft-enabled の使い分けとBDL構文
Behavior Definitionの最初の選択肢が、managedとunmanaged、そしてオプションとしてのdraft-enabledです。これは「永続化(DB書き込みとロック)をRAPに任せるか、自社のレガシーロジックに任せるか/編集中断・再開を許すか」を決めるスイッチに相当します。

-
managed
RAPフレームワークがDB操作・採番・ロックを担当する。新規CDSベースのアプリは基本これ
-
unmanaged
既存のABAPロジック(BAPI/関数モジュール)を呼び出す形で永続化を行う。既存資産を活かしてOData公開するときに使う
-
managed with additional save
managedをベースにしつつ、自社ロジックをsaveシーケンスに差し込めるハイブリッド
-
with draft
Fiori UIの編集中断・再開(途中保存)に対応する。Fiori Elements(List Report/Object Page)の標準挙動
managed with draft の典型的なBehavior Definitionは、以下のような構文になります(SAP公式の解説に基づく代表的なパターン)。
managed; with draft;
define behavior for Z_R_Travel alias Travel
implementation in class ZBP_R_Travel unique
persistent table ztravel
draft table ztravel_d
etag master last_changed_at
lock master
authorization master ( instance )
{
create;
update;
delete;
association _Booking { create; with draft; }
field ( readonly ) travel_id, last_changed_at;
field ( mandatory : create ) agency_id, customer_id, begin_date, end_date;
determination calculateTotalPrice on save { create; field booking_fee; }
validation validateCustomer on save { create; field customer_id; }
}
このアプローチの利点は複数あります。
第一に、DB書き込み・採番・ロックといった定型処理を1行も書かずに済む点です。persistent table ztravel という宣言だけでRAPが永続化を担当し、ABAP側で書くのはBehavior Pool(ZBP_R_Travel)に置く業務ロジック(determinationやvalidationの実装本体)だけになります。
第二に、draft対応がフラグ1つで完成する点です。with draft と draft table ztravel_d を宣言するだけで、Fiori UIから編集中断→再開ができるようになり、ユーザーがネットワーク切断で作業を失うリスクが消えます。
第三に、認可・ETag・必須項目・フィーチャーコントロールをすべて宣言で完結できる点です。authorization master ( instance ) でインスタンスレベルの認可フックが、field ( mandatory : create ) で項目必須が、etag master last_changed_at で楽観ロックが、それぞれ宣言ベースで一元化されます。UI側でガードを書く必要がなくなり、API経由・Joule経由のどこから呼ばれても同じ権限ロジックが効きます。
これに対してunmanagedは、既存のBAPI/関数モジュールでデータ操作を行う場合に使います。
unmanaged;
define behavior for Z_R_TravelLegacy alias Travel
implementation in class ZBP_R_TravelLegacy unique
etag master last_changed_at
lock master
{
create;
update;
delete;
}
unmanagedでは persistent table を書かず、Behavior Pool(ZBP_R_TravelLegacy)の中で手動でBAPI_TRAVEL_CREATE等の既存関数を呼び、結果をRAPに返す実装になります。新規プロジェクトでmanagedを選び、既存資産を抱える場合はunmanagedで包む——これがSAP Helpの推奨パターンです。managedはバージョンアップ時の追従が劇的に楽になるため、選べる場面では選んでおく価値があります。
CDS命名規則とBehavior Poolの慣習
RAPのCDS Viewには命名規則の慣習があり、レイヤーごとに接頭辞を切り替えます。
- Z_R_xxx(Root View Entity): ルートデータモデル(DBテーブルへの直接接続)
- Z_I_xxx(Interface): インターフェース投影層(複数のRから合成する中間層)
- Z_C_xxx(Consumption): 消費プロジェクション(Service Definitionに直接渡す層)
- ZBP_xxx(Behavior Pool): Behavior Definitionの実装クラス。CL_ではなくBP_接頭辞を使う
3層のCDSを切り分けるとUI/API/AIエージェント向けに別Consumptionを生やせるため、後段のService Bindingバリエーションが効きます。最初はZ_R_とZ_C_だけで始めても問題ありませんが、外部連携やJoule経由のエージェント呼び出しが視野に入ってきたらZ_I_を中間に挟む構成にリファクタしておくと拡張が楽になります。
Joule for Developersが変えるSAP OData実装フロー
SAP ODataの世界で2026年に最も大きく動いたのが、AIアシスタント「Joule」周辺の開発体験です。ODataの実装が「人間が書く」から「フレームワークに宣言する」を経て、いまや「Jouleに頼んで生成する」段階まで来ています。本セクションでは、ODataサービス実装に直接関わるJoule for Developersの機能群を、実装フロー目線で整理します。

OData UI Service from Scratch Wizard
Joule for Developersの中核機能のひとつが、**「OData UI Service from Scratch Wizard」**です。

自然言語で「販売注文と明細を持つアプリを作りたい」「フィールドは商品コード・数量・単価・通貨・納期で、合計金額は自動計算」と入力すると、ウィザードがCDS View(ルート+投影)・Behavior Definition(managed with draft)・Service Definition・Service Bindingまでまとめて雛形を生成します。SAP公式のJoule for Developers ABAPドキュメントとSAPコミュニティブログ「2025 set the pace, 2026 wins the race」では、ウィザード経由で生成された雛形に対してJouleチャットで「Determinationを追加して」「通貨換算ロジックを足して」と指示することでRAPアプリ全体を分単位で組み立てられる、と明言されています。
公式ブログのメッセージは「prompts → projects, minutes not weeks(プロンプトからプロジェクトへ、週単位ではなく分単位で)」。従来は週単位を要したODataサービスの雛形整備が、ウィザード経由で分単位まで圧縮されるのが2026年の到達点です。
/consumeコマンドでクライアント自動生成
逆方向の動き(既存ODataサービスを呼び出すクライアントを作る)もJouleが支援します。

ABAP Development Tools(ADT)上で /consume コマンドを叩くと、対象のOData V4サービスの$metadataをJouleが解析し、クライアント呼び出しのプロキシコード雛形・サンプル呼び出し例を出力します。手動で cl_web_http_client_manager のセットアップを書いていた工程が短縮され、ABAP側からのOData呼び出しの試作も分単位で進められます。
ABAP実装を補助する3つのAI機能
OData UI Service Wizardでサービスの骨格が組めたあと、業務ロジック・拡張・既存コードの読み解きまで支援するAI機能が3つ用意されています。

-
RAP Business Logic Prediction
ODataサービスを実装する過程で必要になるvalidations(入力検証)・determinations(自動計算)を、Jouleが業務文脈から提案する。CDSのフィールド構成と業務オブジェクトの名前(Travel/Booking/SalesOrder等)から「このフィールドはこういう検証が必要では」「この値はこのタイミングで自動計算するのが自然」と提案する仕組みで、開発者は提案を採用するかどうかの判断に集中できる
-
Extensibility AI Assistant
S/4HANA Cloud Public Editionで管理されるカスタムフィールド・BADI・Value Helpを、自然言語で伝えるだけでメタデータ定義とコードまで生成する。ODataサービスにカスタムフィールドが含まれるケースで、フィールドのアノテーション・ラベル・参照値リスト等の付帯設定までAIが一括で組むため、Cloud Public Edition上の拡張作業のスピードが上がる
-
Custom Code Migration(CCM)
レガシーABAPコードを読み込んで「このコードの目的・処理フロー・データ依存関係」を自然言語で解説し、ABAP Cloud対応への書き換え提案を出す。BAPIに依存する旧来の業務処理をunmanaged RAPで包む際の足場作りとして、ABAPコードを丸ごとJouleに渡して「何をやっているか」「どうRAPに移すか」を聞ける状態になっている
3機能を通して効くのは「設計判断は人間、定型実装はAI」という役割分担です。validationsの判断ロジック・カスタムフィールドの業務意味・レガシーコードの仕様意図といった「人間が決めるべき部分」に集中できるよう、定型的な記述部分をAIが担う構造になっています。
VS Code対応とABAP MCP Server(2026年ロードマップ)
SAP公式の2026年ロードマップでは、ABAP Platform AIを「独立したAIスキル群」からフルスケールのエージェンティックAIへ転換する方針が示されています。

中核となるのは、VS Code向けのABAP language serverとABAP MCP(Model Context Protocol)serverの整備です。Eclipse・VS Code・将来のクラウドIDEで同じJoule体験を提供するため、共通基盤としてのMCPサーバが用意される設計で、これによりJoule以外のAIアシスタント(Claude/GPTなど)からもABAPワールドのコンテキストを参照しながらコードを生成できるようになります。
実装者目線では、ODataサービスの開発はJouleで雛形生成→開発者が宣言を磨く→将来のクラウドIDEに移行、というワークフローが新しい既定値になりつつあると捉えるのが現実的です。
Joule StudioでCAP ODataをAIエージェントに昇格させる手順
2026年、ODataの使われ方を最も大きく塗り替えたのがJoule Studio Agent Builderです。これまでODataは「人間UIや外部システムが叩くWeb API」でしたが、Joule StudioによりODataのAction/FunctionがそのままAIエージェントのスキル定義として登録され、エージェントの推論ループから呼び出されるようになりました。本セクションでは、SAPコミュニティブログ「SAP Generative AI Hub: Extending Joule with Custom Skills & AI Agents」で公開されている手順を、前提条件(IAS/Booster/Joule Studio capability packageの有効化)と6フェーズの実装手順に再整理して、実装者がそのまま辿れる粒度で示します。

Joule Studioの全体像と無料アクセス
SAP News(2026年5月)によれば、Joule Studio Agent Builderはエンタープライズ規模でAIエージェント・アプリ・ワークフローのライフサイクル全体を管理する基盤で、SAP Signavio Process Consultant Agent・SAP Knowledge Graph・SAP Domain Modelsとの連携を前提に動きます。

事例として公開されているのがSonyとAccentureの数字です。Sonyは「10〜15分でend-to-endソリューションを生成(従来3〜4日)」、Accentureは「48の多様なシナリオで一貫して高品質なコードを生成」と公表されています。
費用面では、2026年末まで、SAP顧客およびパートナー向けに設計時の利用(AI支援開発機能を含む)がfair-use条件で無料で提供されます。PoC段階のコストを抑えながらODataのエージェント化を検証できる、極めて重要な期間です。
CAP ODataアクションの典型例
Joule Studioに渡すCAP側のODataアクション例として、公式ブログでは以下2つが提示されています。

-
searchMasterData
入力: query(String, 必須)/maxResults(Integer)
出力: materialNumber/description/similarity/aiSummary
用途: マスタデータをベクトル検索で類似検索し、AI要約付きで返す
-
askKnowledgeBase
入力: question(String, 必須)/category(String, 任意)
出力: answer/sources(配列)/modelUsed
用途: 社内ナレッジベースをRAGで検索し、回答・ソース・利用モデル名を返す
これらはCAPのactions定義としてCDS上で宣言し、Node.js/Java実装側でAI CoreやHANA Vector Engineを呼ぶ実装を書きます。エージェントから呼ばれる前提のActionは、人間UIだけを意識した設計より一段、入出力スキーマと説明文を丁寧に整える必要があります。
6フェーズの実装手順
前提として、SAP Build Process Automation(build-defaultプラン)/Joule(foundation/standardプラン)/SAP Cloud Identity Services(IAS)の有効化、BTP CockpitでのJoule Boosterの実行、SAP Build Process AutomationでのJoule Studio capability packageの有効化が完了していることを確認してから着手します。これらが揃ったうえで、CAP OData ActionをJoule Agentまで持っていく流れは、以下の6フェーズに分かれます。

- フェーズ1: BTP Destination Configuration
SAP Build Lobby側からCAPアプリを呼べるようDestinationを設定する。最低限以下のプロパティを宣言する。
Name: AI_SAP_KNOWLEDGE_SERVICE
Type: HTTP
URL: https://ai-sap-service-srv.cfapps.<region>.hana.ondemand.com
Authentication: OAuth2ClientCredentials
sap.processautomation.enabled = true
HTML5.DynamicDestination = true
WebIDEEnabled = true
最も多くハマるのが sap.processautomation.enabled = true の見落としで、これが欠けるとDestinationがJoule Studio側から見えない
-
フェーズ2: Action Project作成
SAP Build Lobby → Connectors → Actions → Create でアクションプロジェクトを作る。API Source として「SAP Cloud Application Programming Model」を選び、OData DestinationにフェーズのDestinationを指定する。各Actionについて Input/Output タブで入出力が正しく表示されるかを確認し、Release → Publish to Library まで進める(Publishしないとスキル側から見えない)
-
フェーズ3: Joule Skill作成
SAP Build Lobby → Create → Joule Skill で個別スキルを作る。AskSAPKnowledgeBase のような名前で、Description(説明文)にJouleがルーティング判断する文脈を書き込むのが最重要ポイントになる。例えば「Answers questions about SAP configuration, HANA procedures, migration runbooks. Use when the user asks 'how do I', 'what is the process for', 'explain'...」のように、想定される問いの型まで明示する。Canvas上で Call Action → askKnowledgeBaseを選択 → 入力/出力マッピング を行い、応答カードを Send Message で組む
-
フェーズ4: Joule Agent組み立て
SAP Build Lobby → Create → Joule Agent で、複数スキルを束ねるエージェントを組む。Agent Instructionsで「You are an SAP AI assistant with access to ... Always ground your answers in the retrieved context」のような行動原則を自然言語で書き、Tools にスキルを登録する(AskSAPKnowledgeBase / SAPExceptionLogTriage / searchMasterData など)。重要度の高いスキル(例: 障害ログトリアージ)は Human-in-the-Loop の確認プロンプトを入れる設計が推奨
-
フェーズ5: テスト
スキル単体のテストとエージェント全体のテストを分けて行う。エージェントのテスト画面(debug interface)では、境界例の問いを投げてルーティングが意図どおりか・入出力マッピングが想定どおりかを実行ログで確認する。「ハイドロリックポンプに似た部品を探して」「このSAPログを分析して」「整数オーバーフローの対処は」など、スキルごとに代表クエリを用意する
-
フェーズ6: 本番デプロイ
スキル・エージェントそれぞれをDeployし、BTP Cockpit → System Landscape → Formations でアクティブな能力リストに表示されることを確認する。ユーザーはS/4HANA/Fiori/SAP Build Work ZoneのJoule UIから同じスキル・エージェントを叩けるようになる
この6フェーズを最後まで通せば、CAP側で書いたOData Actionが、人間UIからは見えないがJouleのスキルとしてエンタープライズ全体で使えるようになります。SonyやAccentureが「分単位でエージェント体験を組める」と公表しているのは、この設計がスタンプを切るレベルで標準化されたためです。
よく起きる失敗と対処
公式ブログから抽出した、フェーズ1〜6で頻発するエラーと対処法を整理します。

| エラー/現象 | 根因 | 対処 |
|---|---|---|
| Error 6011 — Tenant Administration Worker | Booster未完了、もしくは孤立Formationが残存 | System Landscape → Formationsを削除し、Boosterを再実行 |
| Destinationが Joule Studio に見えない | sap.processautomation.enabled = true プロパティ欠落 | DestinationのAdditional Propertiesに当該プロパティを追加 |
| ActionがSkill Builderに見えない | Released済みだが Publish to Library未実施 | Action Project → Versions → Publish to Library を実行 |
| エージェントが想定と違うスキルを呼ぶ | スキル説明文の重複・曖昧さ | 各スキルのDescriptionを互いに排他的に書き直し、境界例で再テスト |
| スキルからActionを呼ぶと404 | Destination変数の指定環境ミスマッチ | スキルのDestination変数を確認・再デプロイ |
| Principal propagationが効かない | IAS(SAP Cloud Identity Services)信頼設定の不備 | 両サブアカウントが同一IASテナントを使うよう設定 |
**6フェーズの中で実装者が最も時間を溶かしやすいのはフェーズ1(Destination設定)とフェーズ3(Skill Descriptionの書き方)**です。Destinationプロパティの抜けは「設定したのに見えない」という症状で気付きにくく、Skill Descriptionの曖昧さは「テストでは動くが本番で意図と違うスキルが選ばれる」というルーティング事故につながります。
支援現場の実感としても、最初のCAP OData → Joule Agent化PoCは、エラー6011の解消とDescription書き直しの2回転で1〜2日溶けるのが典型パターンです。最初から「Boosterを完走させる」「Description文面を境界例とともにテンプレ化する」を運用標準に組み込んでおくと、PoC期間が大幅に短縮されます。
SAP ODataの費用構造とS/4HANA Cloud API制限の実数値
「SAP ODataはタダで使えるのか、それとも別料金か」「API呼び出しは何件まで投げられるのか」は、検討初期に必ず出てくる質問です。結論から言うと**「ODataプロトコル自体は無料、課金は実装環境とS/4HANAライセンス、運用時は具体的なレート制限の壁にぶつかる」**というのが正確です。本セクションでは、2026年6月時点の正式公表値・第三者調査ベースの相場・実装時のAPI制限実数値を整理します。

S/4HANA Cloud Public Editionのライセンス相場
OData自体はOASIS標準のオープンプロトコルで、SAPに対して別料金(ライセンス料)を支払う必要はありません。S/4HANA契約に含まれる範囲で、ABAP Cloud上にODataサービスを生成・公開する権利が付与されています。

ただし実行環境となるS/4HANA Cloud Public Edition自体のライセンス費用は当然発生します。第三者調査ベンチマーク(erp-pilot.com 2026年版)では、Public Edition の相場は以下のように公表されています。
| 項目 | 相場(2026年) |
|---|---|
| ユーザー単価 | $180〜400/ユーザー/月 |
| 100ユーザー規模の3年TCO(ライセンス+実装+トレーニング) | $798K〜$2.0M |
| 実装期間の目安 | 3〜6か月(業務スコープによる) |
Fiori UIサービスや外部APIといったODataサービス本体は、この契約内枠の中で完結するため、ODataサービスを増やしても直接的なライセンス追加課金は生じません。一方、Joule経由のスキル化はSAP Build Process Automation・Joule・IAS・BTP Destinationなど別の構成要素を伴うため、Joule Studio/BTP側の権利・runtime費用は別途確認が必要です。S/4HANA契約だけで完結すると考えると見積もりがズレるため、Joule経由のスキル化を視野に入れる段階で関連サービスの契約状況を棚卸しするのが安全です。
OData API制限の実数値
ODataサービスを本番運用する際に必ず突き当たるのが、APIレート制限と1リクエスト上限です。SAPは単一のテナント横断レート制限値を公開していませんが、API個別のガイドライン・技術制約・スロットリング挙動はSAPコミュニティで公開されています。

| 項目 | 数値 |
|---|---|
| Journal Entry Post API の同期並列呼び出し推奨上限 | 15並列 |
| Journal Entry Post API の非同期並列呼び出し推奨上限 | 30並列 |
| Product API のデフォルトページサイズ | 100件 |
| Product API の $top 最大値 | 5,000件 |
| Purchase Order OData API のデフォルトページサイズ | 1,000件 |
| Purchase Order OData API の $top 最大値 | 5,000件 |
| カスタムOData API の $top 最大値(変更不可) | 5,000件 |
| OData V4 のURL長 | 最大8,000文字 |
| 1リクエスト最大ペイロード | 500MB |
| バッチ更新 | 並列ではなく逐次処理 |
5,000件上限は意外と早く効いてくる制約です。マスタデータの全件取得や、ERPからデータレイクへの初回投入のような用途では、
レート制限を超えた場合の挙動は「短時間に大量リクエストするとAPIアクセスが一時ブロックされる」となっており、SAPは指数バックオフ付きのリトライ処理を実装することを推奨しています。テナント固有のハードリミットを知りたい場合は、SAPサポートに個別インシデントを開く運用です。
BTP上でCAPを使う場合の費用構造
BTPでCAPを使ってODataサービスを作るパターンでは、実装環境(Cloud FoundryまたはKyma)のRuntime課金とDB課金が中心コストになります。SAP Discovery Centerで提供される費用試算では、概ね以下のような費用構造です。

- Cloud Foundry/Kymaのアプリランタイム利用料(メモリ・vCPU従量)
- SAP HANA Cloud(DBaaS)のCompute/Storage従量
- Identity Authentication/Connectivityなどの周辺サービス利用料
金額はリージョンと契約形態で変動するため、実数値はSAP公式のDiscovery Centerミッションで確認するのが確実です。Cloud Foundry小規模インスタンス+HANA Cloud最小構成からスタート可能で、PoCフェーズは小規模構成から段階的に拡張していくのが現実的な進め方になります。
Joule Studio Agent Builderの2026年末までの無料アクセス
費用観点で特筆すべきが、Joule Studio Agent Builderの設計時アクセスが2026年末までfair-use条件で無料で提供される点です。
SAP Newsの2026年5月リリースでは「Through the end of 2026, SAP customers and partners can receive free design-time access, including AI-assisted development capabilities under fair-use limits.」と明示されており、CAP ODataをJoule Skill→Joule Agentに昇格させるワークフローを試すPoCコストを劇的に下げられる期間です。fair-useの具体的な上限値は公表されておらず、実プロジェクトで使う際は契約担当に都度確認が必要ですが、本番運用フェーズの費用は2027年以降のSAPアナウンスを継続ウォッチする前提で、いまPoCを進める価値が大きい時期にあります。
なお、Joule for Developers ABAPは別案内・別ページで提供条件が公開されています。Joule Studioとは課金体系・無料アクセス期限が独立しているため、Joule for Developersの設計時アクセス条件は公式ページで都度確認するのが安全です。
SAP OData・BAPI・RFC・IDocの使い分け
SAPには歴史的にOData以外にも複数の連携方式があり、現場では「BAPIで十分では」「IDoc連携と何が違うのか」が頻繁に出てきます。本セクションは、4方式の特性とケース別の使い分けを整理することを目的としています。

4つの連携方式の特性整理
以下の表は、SAPの代表的な4つの連携方式の特性を一覧で整理したものです。

| 方式 | 通信レイヤー | 主な用途 | データ形式 | 同期/非同期 | 2026年現在の位置づけ |
|---|---|---|---|---|---|
| OData | HTTP(REST) | UI・外部システム・AIエージェント | JSON/XML | 同期中心、$batchで擬似的に複数同期 | 新規開発の第一候補 |
| BAPI | RFC | 業務トランザクション呼び出し(ECC時代の主役) | バイナリ(RFC構造体) | 同期 | レガシーラッパ/RAP unmanagedの裏側として残存 |
| RFC | 専用プロトコル(DIAG/SNC) | システム間の関数呼び出し全般 | バイナリ | 同期/非同期両対応 | レガシーバッチや特殊連携で継続利用 |
| IDoc | tRFC/ALE | EDI・基幹間バッチ連携 | 構造化テキスト | 非同期(メッセージング) | EDI・受発注EDIで現役 |
**OData以外の3方式は「使うな」ではなく「使い分け」**が答えになります。たとえばBAPIはECC時代の業務処理を関数として呼ぶ標準窓口で、RAPのunmanagedモードで包んでODataとして公開するパターンが現実解として広く採用されています。IDocは大量バッチ・EDI・サプライチェーン連携で依然強力で、HTTPベースのODataに置き換えるのは現実的でないケースが多くあります。
ケース別の使い分け推奨
SAP実装の現場で迷いやすい場面を、ケース別に整理しました。

-
Fiori UIの裏側/PWAアプリ/モバイル連携
OData V4を第一候補に。Fioriエレメント側の最新テンプレートはV4を前提に組まれている
-
外部Webシステム・SaaSとのリアルタイム連携
OData V4が第一候補。OAuth/API Managementとの相性が良い
-
AIエージェント・JouleからのSAPデータ呼び出し
OData V4。アノテーション豊富な設計にしておくとエージェントが扱いやすい
-
既存ECC/レガシーABAPの業務処理を残したまま外部公開
RAP unmanagedでBAPIを包んでOData V4化、もしくはCAPでラップ
-
大量データの夜間バッチ・EDI・取引先連携
IDoc/PI/CIで設計。ODataで全件流すのはHTTPのオーバーヘッドが効いてくる
-
同一SAPランドスケープ内の関数呼び出し(システム間Job連携)
RFCのまま。HTTP化する実装メリットが薄い
支援現場の実感としても、新規はODataから入り、既存資産はRAP unmanagedかCAPでODataに昇格、それでも置き換えにくいバッチ系はIDocで残すという三層構成が落としどころになるケースが多いです。「全部ODataで統一」を目標にしないことが、運用コストを抑えるコツです。
SAP OData設計のベストプラクティスと典型的な落とし穴
SAP OData設計はRAPとJouleの登場で大きく自動化されたものの、設計判断の質はそのままFiori UIのレスポンス、外部システムとの安定性、AIエージェントの精度に直結します。本セクションでは、SAP OData設計で押さえておきたい4原則と、実装後にハマる5つの典型的な落とし穴を、症状・原因・対処の構文付きで整理します。

設計時に押さえたい4つの原則
新規にODataサービスを設計するなら、最低限以下の4原則を満たしているかをチェックリストとして持っておくと、運用フェーズに入ってから後悔せずに済みます。

-
CDS View駆動で設計する
「ABAPロジック先に書いてCDSは後付け」は将来の保守を重くする。先に投影層のCDSを引き、Behavior Definitionで振る舞いを宣言、最後にABAPロジックを書く順番を守る
-
Service BindingはV4を第一候補にする
新規でV2を選ぶ理由は、Fioriエレメントの互換要件など明確な根拠がある場合に限る
-
AuthorizationはBehavior側に閉じる
UI側で権限制御を書くと、API呼び出しやJoule経由の呼び出しから抜け穴ができる。CDSの @AccessControl.authorizationCheck とBehavior Definitionの authorization master ( instance ) で一元化する
-
アノテーションを「読まれる前提」で書く
UIラベル・必須・通貨単位・コードリストの参照などのアノテーションは、FioriだけでなくAIエージェントのスキル理解にも使われる時代になった。UI.LineItem/Common.Label/Common.Textを妥協せず付けておく
4原則のうち2つ以上が守られていないODataサービスは、本番投入後に必ず再設計案件として戻ってきます。「CDS駆動・V4・Authorizationは下層・アノテーション多め」を合言葉にしておくと迷いません。
実装後にハマる5つの典型的な落とし穴
設計通りに作ってもハマるのが、運用時の典型パターンです。SAP実装の現場で頻出する5つを、症状・原因・対処の3点セットで整理します。

-
N+1問題でレスポンスが急激に悪化する
症状: 1件取得すると速いが、$expand付きで複数件取得すると数十倍遅くなる。
原因: $expandの先でDeterminationが行ごとにDBクエリを発行している。
対処: BehaviorのDeterminationを行単位の処理ではなく**集合操作(FOR ALL ENTRIESや内部テーブルでまとめてSELECT)**で書く。さらにService Definitionで$expandの段数を必要なものに限定する
-
Deep Insertが想定どおり動かない
症状: 親と子を一括登録する$batch/Deep Insertで、親は作れるが子で失敗する。
原因: Behavior Definitionで子側のassociationに create by association が宣言されていない、あるいは子側の必須項目に field ( mandatory : create ) が抜けている。
対処: 親側Behaviorに association _Child { create; } を、子側に field ( mandatory : create ) foreign_id, ... を宣言する
-
AuthorizationがJoule経由で抜ける
症状: Fioriからは権限制御が効くのに、Joule Studio経由でAction呼び出しすると権限なしユーザでもデータが取れる。
原因: 権限制御をUI側のFiori Catalog/PFCG Role割当だけで完結させており、Behavior Definition側に authorization master ( instance ) とCDS側に @AccessControl.authorizationCheck: #CHECK が宣言されていない。
対処: Authorization は必ずBehavior側に閉じる。Jouleから呼ばれても同じ権限ロジックが効く
-
$metadataの肥大化で初回ロードが致命的に遅くなる
症状: Fiori Launchpadからアプリを開くたびに数秒待たされる。
原因: 1つのService Definitionに大量のCDSを束ねており、$metadata XMLが数MB級に膨らんでいる。
対処: Service Definitionを用途単位で分割する。「販売注文画面用」「外部API用」「Joule用」のように消費先ごとにService Definitionを切る
-
フィールドを必要以上に公開してしまう
症状: 外部システムから取得したCSVに、原価情報や社員IDなど内部用フィールドが含まれている。
原因: 公開CDSが内部用フィールドまで投影しており、$selectでクライアントが指定すれば取得可能になっている。
対処: Projection CDS(Z_C_xxx)で「外向きに見せる列」を明示的に絞り込む。投影層を切れば内部用フィールドは$metadataにも出ない
5つのうち4つはService Definition/Behavior Definitionの宣言段階で防げるもので、実装中はESLint的なチェックを習慣化すると事故が激減します。Joule Studio経由のスキル化が一般化する2026年以降は、特にAuthorizationとフィールド過剰公開の影響範囲が広がる点に注意が必要です。
SAPのAPI戦略にAIエージェントを組み込むなら
SAP ODataの設計は、2026年に入って「人間が叩くWeb API」から「AIエージェントが叩くスキル定義」へと役割を広げています。Joule StudioによるODataアクションのスキル化、Joule for DevelopersによるRAPアプリの自動生成、そしてSAP外部のエージェント基盤との連携——これらを統合して業務に落とすには、ODataの設計品質と、エージェント側のオーケストレーション戦略を同時に整える必要があります。
AI総合研究所では、SAP環境を含む基幹システムにAIエージェントを組み込むPoC設計、部門別ユースケース、運用統制・セキュリティのチェックポイントを220ページにまとめた「AI業務自動化ガイド」を無料で公開しています。Joule Studio・AI Agent Hubを含むエージェント基盤の選定軸、OData起点の連携設計、PoCから全社展開までのロードマップを整理する起点として活用ください。
SAPとAIエージェントをつなぐ最短ルートを設計する
OData起点のAgentic設計を1冊で
SAP ODataをAIエージェントから直接呼び出す構成は、Joule StudioやAI Agent Hubのようなエージェント基盤と組み合わせて初めて実用フェーズに入ります。AI業務自動化ガイド(220ページ)では、PoC段階から全社展開までの進め方、部門別ユースケース、AI運用における統制・セキュリティのチェックポイントを整理しています。
まとめ
本記事では、SAP ODataのプロトコル定義、OData V2/V4の違いと選定軸、3つの実装ルートとRAPの3層モデル・Behavior Definitionの具体構文、Joule世代がもたらす開発体験の刷新、Joule Studioによる6フェーズのエージェント化手順、S/4HANA Cloudの費用とAPI制限の実数値、BAPI/RFC/IDocとの使い分け、設計のベストプラクティスを2026年6月時点で解説しました。要点を改めて整理します。
-
SAP ODataはS/4HANA時代の標準Web APIプロトコルで、Fiori・外部システム連携・AIエージェントの3用途で共通インターフェースとして機能する
-
OData V2/V4は新規開発はV4が原則。V2はサポート継続で
search・Function/Actionの一級扱い・AsyncJob・標準化されたbatchやMERGEなど基本機能は備えるものの、主要な機能革新(JSON-batch・ metadataの機械可読性もAIエージェント時代に有利delta/Delta Link)はV4中心で、
-
実装ルートはSEGW/RAP/CAPの3つで、ABAP Cloud前提ならRAP、BTP上の拡張ならCAPがそれぞれデフォルト。RAPは3層モデル(Data Model & Behavior/Service Definition/Service Binding)で「書く」のではなく「宣言する」設計
-
Joule for DevelopersのOData UI Service from Scratch Wizard・/consumeコマンド・RAP Business Logic Prediction・Extensibility AI Assistant・CCMが、ODataサービスの実装フローを分単位まで圧縮する
-
Joule Studio Agent BuilderはCAP OData→Joule Skill→Joule Agent→本番デプロイの6フェーズで、ODataをそのままAIエージェントのスキルに昇格させる。Sonyは「10〜15分でend-to-endソリューション生成(従来3〜4日)」を公表
-
**S/4HANA Cloud Public Editionは
top最大5,000件・URL 8,000文字・ペイロード500MB・Journal Entry Post 15並列同期/30並列非同期などの制約あり。Joule Studio Agent Builderの設計時アクセスは2026年末までfair-use無料180〜400/ユーザー/月(第三者調査ベースの目安)**、OData APIは
-
BAPI/RFC/IDocは置き換えではなく使い分け。OData V4を新規の第一候補に据えつつ、既存資産はRAP unmanagedで包み、大量バッチはIDocで残す三層構成が現実的
-
**設計4原則(CDS駆動・V4第一候補・Authorization下層集約・アノテーション多め)と落とし穴5つ(N+1/Deep Insert/Authorization抜け/$metadata肥大化/フィールド過剰公開)**は、症状・原因・対処を構文付きで持っておくと再設計案件を未然に防げる
SAP環境のAPI戦略を検討する担当者にとって、SAP ODataは「いま動いている資産」ではなく「2026年以降のAIエージェント連携の入口」として再定義するタイミングに来ています。Joule世代の開発体験が本番運用に入ってくる前に、CDS駆動・V4第一候補・Authorizationの下層集約・アノテーション多めの4原則を社内標準として固め、CAP OData→Joule Skill→Joule Agentの6フェーズをPoCで一度通しておくことが、後段で発生する再設計コストを最も効果的に抑える備えになります。









