This content has been marked as final. Show 6 replies
Updated the default ISG PLSQL package "ISG_OE_ORDER_PUB_PROCESS_ORDER.sql" with the following:
OE_DEBUG_PUB.G_FILE := '';
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" />