Tag: Intermediate Document (IDOC)

IDOC_ERROR_PARSE_FAILURE: Namespace in IDOCs

IDOC_ERROR_PARSE_FAILURE: Namespace in IDOCs

Scenario:

In a SOAP to IDOC scenario with a XSLT mapping, the receiving IDOC Communication Channel produced an error message.

Error:

The following error message is shown in the Message Log:

Error before sending due to idoc parsing error: (7) IDOC_ERROR_PARSE_FAILURE: Invalid XML 1.0 character encountered within IDoc-XML for type <ORDERS05>:
state=EXPECTING_IMMEDIATE_TAG_END, charPosition=64, lineNumber=1, columnNumber=65, invalidChar=U+0078,
sourceSnippet=…UTF-8″ standalone=”no”?><ORDERS05 xmlns:a=”http://example.namespace.com/order”><IDOC BEGIN=”1″><EDI_DC40 SEGMENT=”1…
—————————————————^

Error Message in PIMON Message Monitor
Error Message in PIMON Message Monitor

Solution:

Namespaces are not allowed in IDOCs. You can add the exclude-result-prefixes parameter to your stylesheet definition to make sure that the given namespaces are not added to the target document.

<ns0:stylesheet version="1.0" xmlns:a="http://example.namespace.com/order" xmlns:ns0="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="a">

Multiple namespaces can be added by using a white space as separator:

<ns0:stylesheet version="1.0" xmlns:a="http://example.namespace.com/order" xmlns:ns0="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="a b c">
Commit fault: ASJ.ejb.005043 (Failed in component: sap.com/com.sap.aii.ad)

Commit fault: ASJ.ejb.005043 (Failed in component: sap.com/com.sap.aii.ad)

Scenario

Simple ERP to PI communication via IDOC.

Error

The IDOC is not send out to PI and the following error message is shown in transaction SM58 on ERP system:

Commit fault: ASJ.ejb.005043 (Failed in component: sap.com/com.sap.aii.ad)

Error in SM58
Error in SM58

Solution

To find out why the IDOC cannot be send to our PO system we will check the channel monitoring of the IDOC sender communication channel first. If there is no error in the channel monitor, we have to do dive deeper into the system, by using the XPI Inspector:

  1. Open the XPI Inspector on your SAP PO system.

    http://po.host.name/xpi_inspector

  2. Select Example “50 (XI Channel)” and add your IDOC sender communication channel by searching for the channel name, checking the checkbox and clicking the “Add selected” button.

    XPI Inspector configuration page
    XPI Inspector configuration page
  3. It is best to stop the XPI inspector as soon as possible. Otherwise, you have to look through thousands of log entries. Therefore, open SM58 and search for you message to be prepared to resend the IDOC (Edit -> Execute LUW (F6)).
  4. Hit the “Start” button in XPI inspector and wait till the start page is loaded.
  5. Resend the IDOC (Edit -> Execute LUW (F6)) in SM58.
  6. Click the “Stop” button in XPI inspector and wait for the result page to show up.
  7. Click on the number in the “Records Count” column of the Server Nodes table. If you have multiple Server Nodes, you have to go through all of them.

    XPI Inspector result page
    XPI Inspector result page
  8. Search for a log entry with your IDOC (you can use the browser search CTRL+F and search for your IDocNumber, MessageType or anything else)
    Client = 001
    CreationDate = 20170615
    CreationTime = 171650
    Direction = 1
    EDIMessage =
    EDIMessageGroup =
    EDIMessageType =
    EDIStandardFlag =
    EDIStandardVersion =
    EDITransmissionFile =
    ExpressFlag =
    IDocNumber = 0000000052812406
    IDocSAPRelease = 750
    IDocCompoundType = null
    IDocType = DELVRY07
    IDocTypeExtension =
    MessageCode =
    MessageFunction =
    MessageType = Z_DELV_IT
    OutputMode = 2
    SenderAddress =
    SenderLogicalAddress =
    SenderPartnerFunction =
    SenderPartnerNumber = A22001
    SenderPartnerType = LS
    SenderPort = SAPA22
    Serialization = 20170615171650
    RecipientAddress =
    RecipientLogicalAddress =
    RecipientPartnerFunction =
    RecipientPartnerNumber = RECPPRN
    RecipientPartnerType = LS
    RecipientPort = A000000003
    Status = 30
    TestFlag =
    ROOT (Type: ROOT)
    !
    +-- E2EDL20004 (Type: E1EDL20)
    !
    +-- E2EDL22001 (Type: E1EDL22)
    !
    +-- E2EDL21 (Type: E1EDL21)
    ! !
    ! +-- E2EDL23 (Type: E1EDL23)
  9. Some lines below you should find a line with a red or yellow background with your error
    Warning in XPI Inspector
    Warning in XPI Inspector
    [EXCEPTION]
    com.sap.aii.af.service.cpa.CPAObjectNotFoundException: Couldn't retrieve inbound binding for the given P/S/A values: FP=;TP=;FS=A22_001;TS=;AN=Z_DELV_IT.DELVRY07;ANS=urn:sap-com:document:sap:idoc:messages;
    at com.sap.aii.af.service.cpa.impl.lookup.CommonLookup.getInboundBinding(CommonLookup.java:211)
    at com.sap.aii.af.service.cpa.impl.lookup.CommonLookup.getInboundBinding(CommonLookup.java:175)
    at com.sap.aii.af.service.cpa.InboundRuntimeLookup.(InboundRuntimeLookup.java:88)
    at com.sap.aii.af.service.cpa.impl.lookup.AbstractLookupManager.getBinding(AbstractLookupManager.java:597)
    at com.sap.aii.af.idoc.inbound.IDocInboundProcessor.findBindingAndChannel(IDocInboundProcessor.java:792)
    at com.sap.aii.af.idoc.inbound.IDocInboundProcessor.initForIDocListProcessing(IDocInboundProcessor.java:998)
    at com.sap.aii.af.idoc.inbound.IDocInboundProcessor.process(IDocInboundProcessor.java:146)
    at com.sap.aii.af.idoc.inbound.IDocReceiverBean.onCommit(IDocReceiverBean.java:127)
    at sun.reflect.GeneratedMethodAccessor1393.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MessageListenerType.invoke(Interceptors_MessageListenerType.java:86)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Lock.invoke(Interceptors_Lock.java:21)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
    at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
    at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)
    at com.sap.engine.services.ejb3.runtime.impl.MDBProxyInvocationHandler.invoke(MDBProxyInvocationHandler.java:142)
    at com.sun.proxy.$Proxy3278.onCommit(Unknown Source)
    at com.sap.mw.jco.jra.JRA$ReaderThread.commit(JRA.java:8639)
    at com.sap.conn.jco.rt.DefaultServerWorker.onCommit(DefaultServerWorker.java:209)
    at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.playbackTRfc(MiddlewareJavaRfc.java:3008)
    at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.handletRfcRequest(MiddlewareJavaRfc.java:2875)
    at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.listen(MiddlewareJavaRfc.java:2674)
    at com.sap.conn.jco.rt.DefaultServerWorker.dispatch(DefaultServerWorker.java:275)
    at com.sap.conn.jco.rt.DefaultServerWorker.loop(DefaultServerWorker.java:356)
    at com.sap.conn.jco.rt.DefaultServerWorker.run(DefaultServerWorker.java:232)
    at com.sap.mw.jco.jra.JRA$ReaderThread.run(JRA.java:8947)
    at com.sap.engine.services.connector.jca15.work.TaskImpl.run(TaskImpl.java:245)
    at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)
    at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101)
    at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)

The error message

Couldn’t retrieve inbound binding for the given P/S/A values:

probably means that your ICO is not configured correctly. Check that you selected the right IDOC and sending system. Maybe you forgot to transport the configuration? Also, it could be a cache refresh problem. You can edit the description, save the configuration and activate it again to refresh the cache.