createFlightCustomerGetListRequest Bean は、後続の SAP エンドポイントの RFC 呼び出しで使用される exchange メソッドで SAP 要求オブジェクトを構築するロールを果たします。次のコードスニペットは、リクエストオブジェクトを作成する一連の操作を示しています。
public void create(Exchange exchange) throws Exception {
// Get SAP Endpoint to be called from context.
SapSynchronousRfcDestinationEndpoint endpoint =
exchange.getContext().getEndpoint("sap-srfc-destination:nplDest:BAPI_FLCUST_GETLIST",
SapSynchronousRfcDestinationEndpoint.class);
// Retrieve bean from message containing Flight Customer name to
// look up.
BookFlightRequest bookFlightRequest =
exchange.getIn().getBody(BookFlightRequest.class);
// Create SAP Request object from target endpoint.
Structure request = endpoint.getRequest();
// Add Customer Name to request if set
if (bookFlightRequest.getCustomerName() != null &&
bookFlightRequest.getCustomerName().length() > 0) {
request.put("CUSTOMER_NAME",
bookFlightRequest.getCustomerName());
}
} else {
throw new Exception("No Customer Name");
}
// Put request object into body of exchange message.
exchange.getIn().setBody(request);
}
public void create(Exchange exchange) throws Exception {
// Get SAP Endpoint to be called from context.
SapSynchronousRfcDestinationEndpoint endpoint =
exchange.getContext().getEndpoint("sap-srfc-destination:nplDest:BAPI_FLCUST_GETLIST",
SapSynchronousRfcDestinationEndpoint.class);
// Retrieve bean from message containing Flight Customer name to
// look up.
BookFlightRequest bookFlightRequest =
exchange.getIn().getBody(BookFlightRequest.class);
// Create SAP Request object from target endpoint.
Structure request = endpoint.getRequest();
// Add Customer Name to request if set
if (bookFlightRequest.getCustomerName() != null &&
bookFlightRequest.getCustomerName().length() > 0) {
request.put("CUSTOMER_NAME",
bookFlightRequest.getCustomerName());
}
} else {
throw new Exception("No Customer Name");
}
// Put request object into body of exchange message.
exchange.getIn().setBody(request);
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
returnFlightCustomerInfo Bean は、前の SAP エンドポイントから受け取った exchange メソッドで、SAP レスポンスオブジェクトからデータを展開するロールを果たします。次のコードスニペットは、レスポンスオブジェクトからデータを抽出する一連の操作を示しています。
public void createFlightCustomerInfo(Exchange exchange) throws Exception {
// Retrieve SAP response object from body of exchange message.
Structure flightCustomerGetListResponse =
exchange.getIn().getBody(Structure.class);
if (flightCustomerGetListResponse == null) {
throw new Exception("No Flight Customer Get List Response");
}
// Check BAPI return parameter for errors
@SuppressWarnings("unchecked")
Table<Structure> bapiReturn =
flightCustomerGetListResponse.get("RETURN", Table.class);
Structure bapiReturnEntry = bapiReturn.get(0);
if (bapiReturnEntry.get("TYPE", String.class) != "S") {
String message = bapiReturnEntry.get("MESSAGE", String.class);
throw new Exception("BAPI call failed: " + message);
}
// Get customer list table from response object.
@SuppressWarnings("unchecked")
Table<? extends Structure> customerList =
flightCustomerGetListResponse.get("CUSTOMER_LIST", Table.class);
if (customerList == null || customerList.size() == 0) {
throw new Exception("No Customer Info.");
}
// Get Flight Customer data from first row of table.
Structure customer = customerList.get(0);
// Create bean to hold Flight Customer data.
FlightCustomerInfo flightCustomerInfo = new FlightCustomerInfo();
// Get customer id from Flight Customer data and add to bean.
String customerId = customer.get("CUSTOMERID", String.class);
if (customerId != null) {
flightCustomerInfo.setCustomerNumber(customerId);
}
...
// Put bean into body of exchange message.
exchange.getIn().setHeader("flightCustomerInfo", flightCustomerInfo);
}
public void createFlightCustomerInfo(Exchange exchange) throws Exception {
// Retrieve SAP response object from body of exchange message.
Structure flightCustomerGetListResponse =
exchange.getIn().getBody(Structure.class);
if (flightCustomerGetListResponse == null) {
throw new Exception("No Flight Customer Get List Response");
}
// Check BAPI return parameter for errors
@SuppressWarnings("unchecked")
Table<Structure> bapiReturn =
flightCustomerGetListResponse.get("RETURN", Table.class);
Structure bapiReturnEntry = bapiReturn.get(0);
if (bapiReturnEntry.get("TYPE", String.class) != "S") {
String message = bapiReturnEntry.get("MESSAGE", String.class);
throw new Exception("BAPI call failed: " + message);
}
// Get customer list table from response object.
@SuppressWarnings("unchecked")
Table<? extends Structure> customerList =
flightCustomerGetListResponse.get("CUSTOMER_LIST", Table.class);
if (customerList == null || customerList.size() == 0) {
throw new Exception("No Customer Info.");
}
// Get Flight Customer data from first row of table.
Structure customer = customerList.get(0);
// Create bean to hold Flight Customer data.
FlightCustomerInfo flightCustomerInfo = new FlightCustomerInfo();
// Get customer id from Flight Customer data and add to bean.
String customerId = customer.get("CUSTOMERID", String.class);
if (customerId != null) {
flightCustomerInfo.setCustomerNumber(customerId);
}
...
// Put bean into body of exchange message.
exchange.getIn().setHeader("flightCustomerInfo", flightCustomerInfo);
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow