createFlightCustomerGetListRequest bean 负责在其交换方法中构建 SAP 请求对象,这些方法用于后续 SAP 端点 RFC 调用。以下代码片段演示了构建请求对象的操作序列:
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 端点接收的交换方法中提取 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