Nav
You are viewing an older version of this section. Click here to navigate to the latest version.

Troubleshooting

This page contains some common troubleshooting suggestions for the SAP Connector.

Checking Log Files

Mule ESB stores log files (which are store on a per application basis) in the $MULE_HOME\logs directory:

  • mule.log: Default Mule ESB log file

  • mule-app-YOUR_APP_NAME.log: Per application log file

Enabling JCo Trace

JCo Trace can be enabled from outside Mule ESB; it values to the following java startup environment properties:

  • -Djco.trace_level=N (where 0 ⇐ N ⇐ 10, with 10 = most detailed trace)

  • -Djco.trace_path=<PATH> (optional)

For more information, consult the JCo documentation.

To enable trace at Connector level, complete the following steps”:

  1. Set the attribute jcoTrace to true or provide the extended JCo property jco.client.trace or jco.server.trace with value 1.

  2. Provide a value for -Djco.trace_level=Nat Mule ESB startup. Permissible levels are [0 .. 10]. The most commonly used levels are:

    • 0 - nothing

    • 1 - errors and warnings

    • 2 - execution path, errors, and warnings

    • 3 - full execution path, errors, and warnings

    • 4 - execution path, info messages, errors, and warnings

    • 6 - full execution path, info messages, errors, and warnings

    • 7 - debug messages, full execution path, info messages, errors, and warnings

    • 8 - verbose debug messages, full execution path, info messages, errors, and warnings

  3. Optionally, you can provide a value for -Djco.trace_path=<PATH>. This is supposed to be the complete path to an existing directory where trace files will be stored, but there other special values can be applied:

    • stdout - JCo trace information is sent to standard output stream

    • stderr - JCo trace information is sent to standard error stream

If -Djco.trace_path is not set, then trace files will be stored in the working directory. For Mule ESB standalone, this is usually the $MULE_HOME/bin folder.

Common Errors

IDOC_ERROR_METADATA_UNAVAILABLE

          
       
1
2
3
4
RfcException: [mc-vmware|a_rfc] message: (3) IDOC_ERROR_METADATA_UNAVAILABLE: The meta data for the IDoc type "??????????????????????????å å" with extension "  ORDSAPB6L B60CL          ???" is unavailable.
    Return code: RFC_FAILURE(1)
    error group: 104
    key: RFC_ERROR_SYSTEM_FAILURE

The RFC destination should support Unicode. You can implement this in SAP with transaction SM59.

SAP Transport cannot join transaction of type [org.mule.TransactionClass].

The action of type [srfc|trfc|qrfc] will be stateless, because SAP Transport doesn’t support Multi Transactions for the moment.

Missing transaction handler

          
       
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[10-11 08:02:26] ERROR SapJcoServerDefaultListener [JCoServerThread-1]: Exception occured on idoc_send connection 3-10.30.9.26|sapgw00|idoc_send: check TID fault: No transaction handler is installed. Unable to process tRFC/qRFC requests.
RfcException: [mule.local|MULESOFT_IDOC_SEND_TEST]
    message: check TID fault: No transaction handler is installed. Unable to process tRFC/qRFC requests.
    Return code: RFC_FAILURE(1)
    error group: 104
    key: RFC_ERROR_SYSTEM_FAILURE
Exception raised by myhost.com.ar|MULESOFT_IDOC_SEND_TEST
    at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.playbackTRfc(MiddlewareJavaRfc.java:2625)
    at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.handletRfcRequest(MiddlewareJavaRfc.java:2546)
    at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.listen(MiddlewareJavaRfc.java:2367)
    at com.sap.conn.jco.rt.DefaultServerWorker.dispatch(DefaultServerWorker.java:284)
    at com.sap.conn.jco.rt.DefaultServerWorker.loop(DefaultServerWorker.java:369)
    at com.sap.conn.jco.rt.DefaultServerWorker.run(DefaultServerWorker.java:245)
    at java.lang.Thread.run(Thread.java:680)

If you are getting the message: No transaction handler is installed. Unable to process tRFC/qRFC requests then you may need to set the rfcType has to be trfc or qrfc in the <sap:inbound-endpoint />

Parameter 'parameter name' not supported

SAP extended properties (configure in a Map bean or as endpoint address parameters) should have valid names. If you provide an invalid property name you will get an error message similar to:


          
       
1
2
3
4
5
6
7
8
9
10
11
Root Exception stack trace:
RfcException: [null]
message: Parameter 'type' not supported: 'f'
Return code: RFC_INVALID_PARAMETER(19)
error group: 101
key: RFC_ERROR_PROGRAM
 
at com.sap.conn.rfc.api.RfcOptions.checkParameters(RfcOptions.java:182)
at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcClient.connect(MiddlewareJavaRfc.java:1328)
at com.sap.conn.jco.rt.ClientConnection.connect(ClientConnection.java:731)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)

In this example, JCo libraries are informing that the parameter with name type is not valid. The complete list of valid property names can be found here.

(101) JCO_ERROR_CONFIGURATION: Server configuration for your-server is already used for a running server

          
       
1
2
3
4
5
6
7
8
9
10
ERROR 2012-07-05 10:11:30,525 [WrapperListener_start_runner] com.mulesoft.mule.transport.sap.SapMessageReceiver: Error connecting to server
com.sap.conn.jco.JCoException: (101) JCO_ERROR_CONFIGURATION: Server configuration for sapavalara-1.0-SNAPSHOT-gettax is already used for a running server
at com.sap.conn.jco.rt.StandaloneServerFactory.update(StandaloneServerFactory.java:358)
at com.sap.conn.jco.rt.StandaloneServerFactory.getServerInstance(StandaloneServerFactory.java:176)
at com.sap.conn.jco.server.JCoServerFactory.getServer(JCoServerFactory.java:74)
at com.mulesoft.mule.transport.sap.jco3.SapJcoRfcServer.initialise(SapJcoRfcServer.java:46)
at com.mulesoft.mule.transport.sap.jco3.SapJcoServerFactory.create(SapJcoServerFactory.java:60)
at com.mulesoft.mule.transport.sap.SapMessageReceiver.doConnect(SapMessageReceiver.java:56)
at org.mule.transport.AbstractTransportMessageHandler.connect(AbstractTransportMessageHandler.java:218)
at org.mule.transport.AbstractConnector.registerListener(AbstractConnector.java:1254)

There cannot be two or more JCo servers with the same set of configuration parameters, even if they have different configuration names.

The server group key (that determines the uniqueness of a JCo sever connection) is given by the following attributes:

  • jco.server.gwhost

  • jco.server.gwserv

  • jco.server.progid

So, you can start two servers in the same Mule instance (JCo keeps this information in a Singleton class) as long as they have different values for gwhost, gwserv and progId.