Using the SOAP ISG WSDL interface for API integration.
Product Oracle E-Business Suite Integrated SOA Gateway
Product Version 126.96.36.199 (special ISG patch too)
Operating System Linux x86-64
* Trying to create, update, modify existing orders, just starting with a simple test case of create an order.
* works fine from PLSQL direct call
* dies via SOAP call <X_RETURN_STATUS>U</X_RETURN_STATUS>
How does one figure out the problem for this message?
#1. How do we get this message Unexpected Error: FND_API.G_RET_STS_UNEXP_ERROR to show why?
#2. In our PLSQL we have oe_debug_pub.debug_on; & oe_debug_pub.initialize; How do we get the default WSDL package to do this?
#3. The response code from plsql comes back empty errorCode : null & errorTrace: null (is this supposed to be that way? )
FOR i IN 1 .. x_msg_count
Oe_Msg_Pub.get( p_msg_index => i
, p_encoded => Fnd_Api.G_FALSE
, p_data => l_msg_data
, p_msg_index_out => l_msg_index_out);
x_msg_data := x_msg_data ||' '||l_msg_data;
then xml response is:
<X_MSG_DATA>ORA-06502: PL/SQL: numeric or value error: NULL index table key value in Package OE_Delayed_Requests_PVT Procedure LOGREQUEST User-Defined Exception in Package OE_Header_Util Procedure Pre_Write_Process</X_MSG_DATA>
This is a weird message, again with the PLSQL API we have default record l_header_rec := OE_ORDER_PUB.G_MISS_HEADER_REC;
Do we have to do more details in SOAP XML request that are not normally required in the PLSQL API call because of this?
Ok, so we modified the PACKAGE ISG_OE_ORDER_PUB_PROCESS_ORDER (edit the procedure and details)
and edit the error out lines and put some debugging into the mapping function.
Turns out the WSDL XSD validation is very strict, like the ORDER of the ELEMENTS must be exact or the SOA server craps out with mercurial messages.
<faultstring>FND_SOA_SERVICE_EXECUTION_ERR:oracle.apps.fnd.soa.util.SOAException: ServiceExecutionError: Error while executing the service Exception returned from JCA Service Runtime. Exception returned from JCA Service Runtime. null
:Please see service monitor logs for full error trace</faultstring>
Bottom line, get the ORDER of the ELEMENTS EXACTLY as the service is expecting or it doesn't map them into the PLSQL procedure. It's very brittle XML parser, maybe the coders uses an index to sequence the element list instead of name value lookup. It has to be ALL CAPS case sensitive too.
We're using SOAPUI and 3rd party EAI WSDL Connection adapter so this is not Oracle middleware SOA Suite or 11 BPEL engine stuff, maybe it's easier if you utilize those native tools. I doubt it, but maybe.
PS: make sure you use the
... set all the semi-important not used by you crappy elements to nil ...
<proc:FIRST_ACK_CODE xsi:nil="true" />
<proc:FIRST_ACK_DATE xsi:nil="true" />
<proc:LAST_ACK_CODE xsi:nil="true" />