290.14. SAP の例
290.14.1. 例 1: SAP からのデータの読み取り リンクのコピーリンクがクリップボードにコピーされました!
概要 リンクのコピーリンクがクリップボードにコピーされました!
この例は、SAP から FlightCustomer
ビジネスオブジェクトデータを読み取るルートを示しています。ルートは、データを取得するために SAP 同期 RFC 宛先エンドポイントを使用して FlightCustomer
BAPI メソッド、BAPI_FLCUST_GETLIST
を呼び出します。
ルートの Java DSL リンクのコピーリンクがクリップボードにコピーされました!
サンプルルートの Java DSL は次のとおりです。
from("direct:getFlightCustomerInfo") .to("bean:createFlightCustomerGetListRequest") .to("sap-srfc-destination:nplDest:BAPI_FLCUST_GETLIST") .to("bean:returnFlightCustomerInfo");
from("direct:getFlightCustomerInfo")
.to("bean:createFlightCustomerGetListRequest")
.to("sap-srfc-destination:nplDest:BAPI_FLCUST_GETLIST")
.to("bean:returnFlightCustomerInfo");
ルートの XML DSL リンクのコピーリンクがクリップボードにコピーされました!
また、同じルートの Spring DSL は次のとおりです。
createFlightCustomerGetListRequest bean リンクのコピーリンクがクリップボードにコピーされました!
createFlightCustomerGetListRequest
Bean は、後続の SAP エンドポイントの RFC 呼び出しで使用される exchange メソッドで SAP リクエストオブジェクトをビルドします。次のコードスニペットは、リクエストオブジェクトを作成する一連の操作を示しています。
returnFlightCustomerInfo bean リンクのコピーリンクがクリップボードにコピーされました!
returnFlightCustomerInfo
Bean は、前の SAP エンドポイントから受け取った exchange メソッドで、SAP レスポンスオブジェクトからデータを展開するロールを果たします。次のコードスニペットは、レスポンスオブジェクトからデータを抽出する一連の操作を示しています。
290.14.2. 例 2: SAP へのデータの書き込み リンクのコピーリンクがクリップボードにコピーされました!
概要 リンクのコピーリンクがクリップボードにコピーされました!
この例は、SAP で FlightTrip
ビジネスオブジェクトインスタンスを作成するルートを示しています。ルートは、FlightTrip
BAPI メソッド BAPI_FLTRIP_CREATE
を呼び出し、宛先エンドポイントを使用してオブジェクトを作成します。
ルートの Java DSL リンクのコピーリンクがクリップボードにコピーされました!
サンプルルートの Java DSL は次のとおりです。
from("direct:createFlightTrip") .to("bean:createFlightTripRequest") .to("sap-srfc-destination:nplDest:BAPI_FLTRIP_CREATE?transacted=true") .to("bean:returnFlightTripResponse");
from("direct:createFlightTrip")
.to("bean:createFlightTripRequest")
.to("sap-srfc-destination:nplDest:BAPI_FLTRIP_CREATE?transacted=true")
.to("bean:returnFlightTripResponse");
ルートの XML DSL リンクのコピーリンクがクリップボードにコピーされました!
また、同じルートの Spring DSL は次のとおりです。
トランザクションサポート リンクのコピーリンクがクリップボードにコピーされました!
SAP エンドポイントの URL では、transacted
オプションが true
に設定されています。「トランザクションサポート」 で説明されているように、このオプションを有効にすると、エンドポイントは、RFC 呼び出しを呼び出す前に SAP トランザクションセッションが開始されていることを確認します。このエンドポイントの RFC は SAP で新しいデータを作成するため、ルートの変更を SAP で永続的にするには、このオプションが必要です。
リクエストパラメーターの設定 リンクのコピーリンクがクリップボードにコピーされました!
createFlightTripRequest
および returnFlightTripResponse
Bean は、前の例で示したのと同じ一連の操作に従って、リクエストパラメーターを SAP リクエストに入力し、SAP レスポンスからレスポンスパラメーターをそれぞれ展開します。
290.14.3. 例 3: SAP からのリクエストの処理 リンクのコピーリンクがクリップボードにコピーされました!
概要 リンクのコピーリンクがクリップボードにコピーされました!
この例は、SAP から BOOK_FLIGHT
RFC へのリクエストを処理するルートを示しています。これはルートによって実装されています。さらに、JAXB を使用して SAP リクエストオブジェクトとレスポンスオブジェクトをカスタム Bean にアンマーシャリングおよびマーシャリングする、コンポーネントの XML シリアライゼーションサポートを示します。
このルートは、旅行代理店 FlightCustomer
に代わって FlightTrip
ビジネスオブジェクトを作成します。ルートは、最初に、SAP サーバーエンドポイントによって受信された SAP リクエストオブジェクトをカスタム JAXB Bean に非整列化します。次に、このカスタム Bean はエクスチェンジで 3 つのサブルートにマルチキャストされ、フライト旅行の作成に必要な旅行代理店、フライト接続、乗客情報が収集されます。最後のサブルートは、前の例で示したように、SAP でフライトトリップオブジェクトを作成します。最後のサブルートは、SAP レスポンスオブジェクトにマーシャリングされ、サーバーエンドポイントによって返されるカスタム JAXB Bean も作成して返します。
ルートの Java DSL リンクのコピーリンクがクリップボードにコピーされました!
サンプルルートの Java DSL は次のとおりです。
ルートの XML DSL リンクのコピーリンクがクリップボードにコピーされました!
同じルートの XML DSL は次のとおりです。
BookFlightRequest bean リンクのコピーリンクがクリップボードにコピーされました!
次のリストは、シリアライズされた形式の SAP BOOK_FLIGHT
リクエストオブジェクトからアンマーシャリングする JAXB Bean を示しています。
BookFlightResponse Bean リンクのコピーリンクがクリップボードにコピーされました!
次のリストは、シリアライズされた形式の SAP BOOK_FLIGHT
レスポンスオブジェクトにマーシャリングする JAXB Bean を示しています。
レスポンスオブジェクトの複雑なパラメーターフィールドは、応答の子要素としてシリアル化されます。
FlightInfo ビーン リンクのコピーリンクがクリップボードにコピーされました!
次のリストは、複雑な構造体パラメーター FLTINFO
のシリアル化された形式にマーシャリングする JAXB Bean を示しています。
ConnectionInfoTable Bean リンクのコピーリンクがクリップボードにコピーされました!
次のリストは、複雑なテーブルパラメーター CONNINFO
のシリアル化された形式にマーシャリングする JAXB Bean を示しています。
JAXB Bean のルート要素タイプの名前は、接尾辞 _TABLE
が付いた行構造体タイプの名前に対応し、Bean には行要素のリストが含まれています。
ConnectionInfo bean リンクのコピーリンクがクリップボードにコピーされました!
次のリストは、上記のテーブルの行要素のシリアル化された形式にマーシャリングする JAXB Bean を示しています。