Oracle® Application Server Adapter for SAP R/3 User's Guide 10g Release 2 (10.1.2) B14061-03 |
|
![]() Previous |
![]() Next |
This chapter explains the limitations and workarounds when connecting to SAP. The following topics are discussed:
The adapter-specific errors listed in this chapter can arise whether using the adapter with an OracleAS Adapter J2CA or with an OracleAS Adapter Business Services Engine (BSE) configuration.
This topic provides troubleshooting information for SAP, separated into four categories:
Application Explorer
SAP
OracleAS Adapter J2CA
BSE
Application Explorer
To use Application Explorer on Windows for debugging or testing purposes, load the batch script ae.bat
, found under:
OracleAS_home\adapters\application\tools
On UNIX, load the shell script ae.sh
, found under:
OracleAS_home/adapters/application/tools
SAP
Note: Activation is an important SAP concept. If an object does not exist in an activated state, it may appear as present on the system, but is not available for use. This is especially important for IDOCs and SAP Business Objects. Consult your SAP documentation for further information. |
OracleAS Adapter J2CA
BPEL Process Manager
Error | Solution |
---|---|
Endpoint activation error on deployment of SAP event handling project (inbound) in JDeveloper | Verify that the channel used for this inbound J2CA service is stopped in Application Explorer. If you have started this channel for testing or debugging purposes, you must stop it before starting BPEL PM Server. Endpoint activation is managed by BPEL Process Manager. |
The following error message appears in BPEL PM Server Console:
|
Verify that the specified WSDL file exists at that URL and that the file is valid.
Workaround: Change the WSDL location to Alternative workaround: Add the IP address to the |
The following exception is thrown in JDeveloper during deployment of the BPEL process:
|
Verify that you have all the required patches installed. The required patches are listed and updated on the Oracle Technology Network Web site. |
This topic discusses the different types of errors that can occur when processing Web services through BSE.
BSE serves as both a SOAP gateway into the adapter framework and as the engine for some of the adapters. In both design time and runtime, various conditions can cause errors in BSE when Web services that use adapters are running. Some of these conditions and resulting errors are exposed the same way, regardless of the specific adapter; others are exposed differently, based on the adapter being used. This topic explains what you can expect if you encounter some of the more common error conditions on an adapter-specific basis.Usually the SOAP gateway (agent) inside BSE passes a SOAP request message to the adapter required for the Web service. If an error occurs, how it is exposed depends on the adapter and the API or interfaces that the adapter uses. A few scenarios cause the SOAP gateway to generate a SOAP fault. In general, anytime the SOAP agent inside BSE receives an invalid SOAP request, a SOAP fault element is generated in the SOAP response. The SOAP fault element contains fault string and fault code elements. The fault code contains a description of the SOAP agent error.
The following SOAP response document results when BSE receives an invalid SOAP request:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Client</faultcode> <faultstring>Parameter node is missing</faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
In this example, BSE did not receive an element in the SOAP request message that is mandatory for the WSDL for this Web service.
When an adapter raises an exception during runtime, the SOAP agent in BSE produces a SOAP fault element in the generated SOAP response. The SOAP fault element contains fault code and fault string elements. The fault string contains the native error description from the adapter target system. Since adapters use the target system interfaces and APIs, whether or not an exception is raised depends on how the target systems interface or API treats the error condition. If a SOAP request message is passed to an adapter by the SOAP agent in BSE and that request is invalid based on the WSDL for that service, the adapter may raise an exception yielding a SOAP fault. While it is almost impossible to anticipate every error condition that an adapter may encounter, the following is a description of how adapters handle common error conditions and how they are then exposed to the Web services consumer application.
OracleAS Adapter for SAP Invalid SOAP Request
If OracleAS Adapter for SAP receives a SOAP request message that does not conform to the WSDL for the Web services being carried out, then the following SOAP response is generated.
<?xml version="1.0" encoding="ISO-8859-1" ?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Error processing agent [XDSapIfrAgent] - XD[FAIL] SapIFRException: java.sql.SQLException: com.ibi.sapjco.SapCallableStatement: execute() j java.util.NoSuchElementException</faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Empty Result From SOAP Request
If OracleAS Adapter for SAP carries out an SAP object using input parameters passed in the SOAP request message that do not match records in SAP, then the following SOAP response is generated.
<?xml version="1.0" encoding="ISO-8859-1" ?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Error processing agent [XDSapIfrAgent] - XD[FAIL] SapIFRException: java.sql.SQLException: com.ibi.sapjco.SapCallableStatement: execute() java.sql.SQLException: JCO Error Key: NO_RECORD_FOUND Short Description: com.sap.mw.jco.JCO$AbapException: (126) NO_RECORD_FOUND: NO_RECORD_FOUND</faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Failure to Connect to SAP
If OracleAS Adapter for SAP cannot connect to SAP when executing a Web service, then the following SOAP response is generated:
<?xml version="1.0" encoding="ISO-8859-1" ?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Error processing agent [XDSapIfrAgent] - XD[RETRY] Connect to SAP gateway failed Connect_PM GWHOST=ESDSUN, GWSERV=sapgw00, ASHOST=ESDSUN, SYSNR=00 LOCATION CPIC (TCP/IP) on local host ERROR partner not reached (host ESDSUN, service 3300) TIME Mon Jun 30 16:01:02 2003 RELEASE 620 COMPONENT NI (network interface) VERSION 36 RC -10 MODULE ninti.c LINE 976 DETAIL NiPConnect2 SYSTEM CALL SO_ERROR ERRNO 10061 ERRNO TEXT WSAECONNREFUSED: Connection refused COUNTER 1</faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Invalid SOAP Request
If OracleAS Adapter for SAP receives a SOAP request message that does not conform to the WSDL for the Web services being carried out, then the following SOAP response is generated.
<?xml version="1.0" encoding="ISO-8859-1" ?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>RPC server connection failed: Connection refused: connect</faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Empty Result From OracleAS Adapter for SAP Request
If OracleAS Adapter for SAP carries out a SOAP request using input parameters passed that do not match records in the target system, then the following SOAP response is generated.
Note: The condition for this adapter does not yield a SOAP fault. |
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <m:RunDBQueryResponse xmlns:m="urn:schemas-iwaysoftware-com:iwse" xmlns="urn:schemas-iwaysoftware-com:iwse" cid="2A3CB42703EB20203F91951B89F3C5AF"> <RunDBQueryResult run="1" /> </m:RunDBQueryResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>