Tag: Enterprise-Resource-Planning (ERP)

Message in status Message recorded (commit missing)

Message in status Message recorded (commit missing)

Scenario

You created a test message with the testing tool in transaction SPROXY to test an asynchronous interface out of your ERP system. Afterwards you checked transaction “SXMB_MONI” or “SXI_MONITOR” for the test message.

Error

The message has a white flag and shows the following error:

Message in status Message recorded (commit missing)

sxi_monitor: Messages in status commit
sxi_monitor: Messages in status commit

Solution

Asynchronous message are recorded until the work is committed. Go back to the “Test Service Consumer” view of transaction “SPROXY” and click on Extras – > Trigger COMMIT WORK.

Trigger Commit Work in Proxy Test Tool
Trigger Commit Work in Proxy Test Tool

The message should be sent to the receiving system now. If you call your proxy out of some ABAP code, make sure you do not forget to add a commit statement.

Forbidden Error in XI Receiver Channel

Forbidden Error in XI Receiver Channel

Scenario

In a configuration with an SAP R3 system as receiver, which is connected via a XI Receiver Channel, the message cannot be delivered to the target system.

Error

The following message is shown in the Message Log of PIMON:

SOAP: Error occurred: com.sap.engine.interfaces.messaging.api.exception.MessagingException: java.io.IOException: HTTP Error response for SOAP request or invalid content-type.; HTTP 403 Forbidden

Exception caught by adapter framework: java.io.IOException: HTTP Error response for SOAP request or invalid content-type.; HTTP 403 Forbidden

Transmitting the message to endpoint <local> using connection JPR failed, due to: com.sap.engine.interfaces.messaging.api.exception.MessagingException: java.io.IOException: HTTP Error response for SOAP request or invalid content-type.; HTTP 403 Forbidden

Solution

Activate the Integration Engine Service on your target system:

  1. Open SAP GUI and connect to your target system
  2. Open transaction “SICF”
  3. Enter “/sap/xi/engine” as “Service Path” and click execute

    Transaction SCIF: Service Path /sap/xi/engine
    Transaction SCIF: Service Path /sap/xi/engine
  4. Right click on “Integration Engine (SAP XI Message Format)” and select “Activate Service”

    Transaction SCIF: Activate Integration Engine Service
    Transaction SCIF: Activate Integration Engine Service
  5. Restart your message
  6. If it still does not work, check that the used user has the role “SAP_XI_APPL_SERV_USER”
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.

Reset CAE Status for Argentina Invoices (AFIP)

Reset CAE Status for Argentina Invoices (AFIP)

Scenario

During the integration of the synchronous AFIP webservice for Argentina invoices via  SAP PI / PO, I did some End-to-End tests and struggled with multiple errors on PI side. Unfortunately, sometimes it was impossible to do a new test because one invoice was no longer in a send able state.

These are the possible states:

CAE Status Description
I Sent to AFIP
A Approved
P Approved with Reservations
R Rejected
N New Document
C Contingency
E Validation Error
O Observations

Error

The following error message is shown when clicking on “Send to AFIP” button in SAP ERP transaction “J1AEXPMONITOR”:

Another document is already in process

Solution

  1. Goto transaction SE16
  2. Insert table name “J_1ACAE” and click on the “Table contents” button
  3. Insert some filters into the mask (optional) and click on the “Execute” button

    Data Browser: J_1ACAE Selection Screen
    Enter filter values and execute
  4. Select line where you would like to change the CAE status and click on the “Change” button

    Data Browser: Table J_1ACAE
    Select one table entry of table “J_1ACAE” to edit
  5. Remove the “X” in field “RFC SENT LOCK” and click on “Save” button

    Change CAE STATUS for table entry
    Change CAE STATUS for table entry
  6. Leave the data browser to unlock the table
  7. Try to resend the message in transaction “J1AEXPMONITOR”
Reset RFC Sent Lock for Argentina Invoices (AFIP)

Reset RFC Sent Lock for Argentina Invoices (AFIP)

Scenario

During the integration of the synchronous AFIP webservice for Argentina invoices via  SAP PI / PO, I did some End-to-End tests and struggled with multiple errors on PI side. Unfortunately, after every test I had to create a new invoice in ERP system, because the invoice was marked as already sent.

As creating a new invoice for every test takes time, I looked for a way to reset the send status of existing invoices.

Error

The following error message was shown when clicking on “Send to AFIP” button in SAP ERP transaction “J1AEXPMONITOR”:

Document is in process

Solution

  1. Goto transaction SE16
  2. Insert table name “J_1ACAE” and click on the “Table contents” button
  3. Insert some filters into the mask (optional) and click on the “Execute” button

    Data Browser: J_1ACAE Selection Screen
    Enter filter values and execute
  4. Select one line and click on the “Change” button

    Data Browser: Table J_1ACAE
    Select one table entry of table “J_1ACAE” to edit
  5. Remove the “X” in field “RFC SENT LOCK” and click on “Save” button

    Remove RFC SENT LOCK for table entry
    Remove RFC SENT LOCK for table entry
  6. Leave the data browser to unlock the table
  7. Try to resend the message in transaction “J1AEXPMONITOR”