Problem in receving IDOCS

I have a problem receving an IDOC. I checked the SM58 Xn and it says " Error when opening RFC connection "
So I reprocessed the IDOC by transaction WE19 and then BD87 where SAP says it has sent the IDOC and staus is set to 03.
However I again checked SM58 this time it says " RfcAbort : Cannot lock transaction " ........
any idea or pointers as what the problem is or might be?
Below is the RFC Server code which i am using......it is the sample code that comes along with the  sapjco.jar
Thanks a lot
package milestone.ups;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.ext.DestinationDataProvider;
import com.sap.conn.jco.ext.ServerDataProvider;
import com.sap.conn.jco.server.DefaultServerHandlerFactory;
import com.sap.conn.jco.server.JCoServer;
import com.sap.conn.jco.server.JCoServerContext;
import com.sap.conn.jco.server.JCoServerContextInfo;
import com.sap.conn.jco.server.JCoServerErrorListener;
import com.sap.conn.jco.server.JCoServerExceptionListener;
import com.sap.conn.jco.server.JCoServerFactory;
import com.sap.conn.jco.server.JCoServerFunctionHandler;
import com.sap.conn.jco.server.JCoServerState;
import com.sap.conn.jco.server.JCoServerStateChangedListener;
import com.sap.conn.jco.server.JCoServerTIDHandler;
public class StepByStepServer
    static String SERVER_NAME1 = "SERVER";
    static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";
    static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";
    static MyTIDHandler myTIDHandler = null;
    static
        Properties connectProperties = new Properties();
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, " PRIVATE_IP ");
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "01");
        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "001");
        connectProperties.setProperty(DestinationDataProvider.JCO_USER, " usr");
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "pwd ");
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "en");
        createDataFile(DESTINATION_NAME1, "jcoDestination", connectProperties);
        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");
        createDataFile(DESTINATION_NAME2, "jcoDestination", connectProperties);
        Properties servertProperties = new Properties();
        servertProperties.setProperty(ServerDataProvider.JCO_GWHOST, " PRIVATE_IP ");
        servertProperties.setProperty(ServerDataProvider.JCO_GWSERV, "sapgw01");
        servertProperties.setProperty(ServerDataProvider.JCO_PROGID, "JCO_SERVER");
        servertProperties.setProperty(ServerDataProvider.JCO_REP_DEST, "ABAP_AS_WITH_POOL");
        servertProperties.setProperty(ServerDataProvider.JCO_CONNECTION_COUNT, "2");
        createDataFile(SERVER_NAME1, "jcoServer", servertProperties);
    static void createDataFile(String name, String suffix, Properties properties)
        File cfg = new File(name + "." + suffix);
        if(!cfg.exists())
            try
                FileOutputStream fos = new FileOutputStream(cfg, false);
                properties.store(fos, "for tests only !");
                fos.close();
            catch(Exception e)
                throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
    static class StfcConnectionHandler implements JCoServerFunctionHandler
        public void handleRequest(JCoServerContext serverCtx, JCoFunction function)
            System.out.println("----
            System.out.println("call              : " + function.getName());
            System.out.println("ConnectionId      : " + serverCtx.getConnectionID());
            System.out.println("SessionId         : " + serverCtx.getSessionID());
            System.out.println("TID               : " + serverCtx.getTID());
            System.out.println("repository name   : " + serverCtx.getRepository().getName());
            System.out.println("is in transaction : " + serverCtx.isInTransaction());
            System.out.println("is stateful       : " + serverCtx.isStatefulSession());
            System.out.println("----
            System.out.println("gwhost: " + serverCtx.getServer().getGatewayHost());
            System.out.println("gwserv: " + serverCtx.getServer().getGatewayService());
            System.out.println("progid: " + serverCtx.getServer().getProgramID());
            System.out.println("----
            System.out.println("attributes  : ");
            System.out.println(serverCtx.getConnectionAttributes().toString());
            System.out.println("----
            System.out.println("CPIC conversation ID: " + serverCtx.getConnectionAttributes().getCPICConversationID());
            System.out.println("----
            System.out.println("req text: " + function.getImportParameterList().getString("REQUTEXT"));
            function.getExportParameterList().setValue("ECHOTEXT", function.getImportParameterList().getString("REQUTEXT"));
            function.getExportParameterList().setValue("RESPTEXT", "Hello World");
            // In sample 3 (tRFC Server) we also set the status to executed:
            if(myTIDHandler != null)
                myTIDHandler.execute(serverCtx);
    static class MyThrowableListener implements JCoServerErrorListener, JCoServerExceptionListener
        public void serverErrorOccurred(JCoServer jcoServer, String connectionId, JCoServerContextInfo serverCtx, Error error)
            System.out.println(">>> Error occured on " + jcoServer.getProgramID() + " connection " + connectionId);
            error.printStackTrace();
        public void serverExceptionOccurred(JCoServer jcoServer, String connectionId, JCoServerContextInfo serverCtx, Exception error)
            System.out.println(">>> Error occured on " + jcoServer.getProgramID() + " connection " + connectionId);
            error.printStackTrace();
    static class MyStateChangedListener implements JCoServerStateChangedListener
        public void serverStateChangeOccurred(JCoServer server, JCoServerState oldState, JCoServerState newState)
            // Defined states are: STARTED, DEAD, ALIVE, STOPPED;
            // see JCoServerState class for details.
            // Details for connections managed by a server instance
            // are available via JCoServerMonitor
            System.out.println("Server state changed from " + oldState.toString() + " to " + newState.toString() + " on server with program id "
                    + server.getProgramID());
    static void step2SimpleServer()
        JCoServer server;
        try
            server = JCoServerFactory.getServer(SERVER_NAME1);
        catch(JCoException ex)
            throw new RuntimeException("Unable to create the server " + SERVER_NAME1 + ", because of " + ex.getMessage(), ex);
        JCoServerFunctionHandler stfcConnectionHandler = new StfcConnectionHandler();
        DefaultServerHandlerFactory.FunctionHandlerFactory factory = new DefaultServerHandlerFactory.FunctionHandlerFactory();
        factory.registerHandler("STFC_CONNECTION", stfcConnectionHandler);
        server.setCallHandlerFactory(factory);
        // additionally to step 1
        MyThrowableListener eListener = new MyThrowableListener();
        server.addServerErrorListener(eListener);
        server.addServerExceptionListener(eListener);
        MyStateChangedListener slistener = new MyStateChangedListener();
        server.addServerStateChangedListener(slistener);
        server.start();
        System.out.println("The program can be stoped using <ctrl>+<c>");
    static class MyTIDHandler implements JCoServerTIDHandler
        Map<String, TIDState> availableTIDs = new Hashtable<String, TIDState>();
        public boolean checkTID(JCoServerContext serverCtx, String tid)
            // This example uses a Hashtable to store status information. But usually
            // you would use a database. If the DB is down, throw a RuntimeException at
            // this point. JCo will then abort the tRFC and the R/3 backend will try
            // again later.
            System.out.println("TID Handler: checkTID for " + tid);
            TIDState state = availableTIDs.get(tid);
            if(state == null)
                availableTIDs.put(tid, TIDState.CREATED);
                return true;
            if(state == TIDState.CREATED || state == TIDState.ROLLED_BACK)
                return true;
            return false;
            // "true" means that JCo will now execute the transaction, "false" means
            // that we have already executed this transaction previously, so JCo will
            // skip the handleRequest() step and will immediately return an OK code to R/3.
        public void commit(JCoServerContext serverCtx, String tid)
            System.out.println("TID Handler: commit for " + tid);
            // react on commit e.g. commit on the database
            // if necessary throw a RuntimeException, if the commit was not
            // possible
            availableTIDs.put(tid, TIDState.COMMITTED);
        public void rollback(JCoServerContext serverCtx, String tid)
            System.out.println("TID Handler: rollback for " + tid);
            availableTIDs.put(tid, TIDState.ROLLED_BACK);
            // react on rollback e.g. rollback on the database
        public void confirmTID(JCoServerContext serverCtx, String tid)
            System.out.println("TID Handler: confirmTID for " + tid);
            try
                // clean up the resources
            // catch(Throwable t) {} //partner wont react on an exception at
            // this point
            finally
                availableTIDs.remove(tid);
        public void execute(JCoServerContext serverCtx)
            String tid = serverCtx.getTID();
            if(tid != null)
                System.out.println("TID Handler: execute for " + tid);
                availableTIDs.put(tid, TIDState.EXECUTED);
        private enum TIDState
            CREATED, EXECUTED, COMMITTED, ROLLED_BACK, CONFIRMED;
    public static void main(String[] a)
        // step1SimpleServer();
        step2SimpleServer();
        // step3SimpleTRfcServer();

thx sameer.
I am sending IDOCs when delivery is created i.e through transaction VL01N /VL02N.
I dont know for some reason i dont have mw ppackage in my sapjco.jar. I got from the sap market place.
I modified the code to handle IDOC request as u sugguested. I have put system.out in the code to check whether handler is being invovked? But it didnt when I run the code.
I tried to reprocess the IDOC through we19....but they failed(as shown in sm58).
Here is the modified code....
package milestone.ups;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
import com.sap.conn.idoc.IDocDocumentList;
import com.sap.conn.idoc.IDocXMLProcessor;
import com.sap.conn.idoc.jco.JCoIDoc;
import com.sap.conn.idoc.jco.JCoIDocHandler;
import com.sap.conn.idoc.jco.JCoIDocHandlerFactory;
import com.sap.conn.idoc.jco.JCoIDocServerContext;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.ext.DestinationDataProvider;
import com.sap.conn.jco.ext.ServerDataProvider;
import com.sap.conn.jco.server.JCoServer;
import com.sap.conn.jco.server.JCoServerContext;
import com.sap.conn.jco.server.JCoServerContextInfo;
import com.sap.conn.jco.server.JCoServerErrorListener;
import com.sap.conn.jco.server.JCoServerExceptionListener;
import com.sap.conn.jco.server.JCoServerState;
import com.sap.conn.jco.server.JCoServerStateChangedListener;
import com.sap.conn.jco.server.JCoServerTIDHandler;
import com.sap.conn.idoc.jco.*;
public class StepByStepServer
    static String SERVER_NAME1 = "SERVER";
    static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";
    static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";
    static MyTIDHandler myTIDHandler = null;
    static
        Properties connectProperties = new Properties();
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "172.31.64.74");
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "01");
        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "001");
        connectProperties.setProperty(DestinationDataProvider.JCO_USER, "US9904");
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "us9904");
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "en");
        createDataFile(DESTINATION_NAME1, "jcoDestination", connectProperties);
        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");
        createDataFile(DESTINATION_NAME2, "jcoDestination", connectProperties);
        Properties servertProperties = new Properties();
        servertProperties.setProperty(ServerDataProvider.JCO_GWHOST, "172.31.64.74");
        servertProperties.setProperty(ServerDataProvider.JCO_GWSERV, "sapgw01");
        servertProperties.setProperty(ServerDataProvider.JCO_PROGID, "JCO_SERVER");
        servertProperties.setProperty(ServerDataProvider.JCO_REP_DEST, "ABAP_AS_WITH_POOL");
        servertProperties.setProperty(ServerDataProvider.JCO_CONNECTION_COUNT, "2");
        createDataFile(SERVER_NAME1, "jcoServer", servertProperties);
    static void createDataFile(String name, String suffix, Properties properties)
        File cfg = new File(name + "." + suffix);
        if(!cfg.exists())
            try
                FileOutputStream fos = new FileOutputStream(cfg, false);
                properties.store(fos, "for tests only !");
                fos.close();
            catch(Exception e)
                throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
    static class MyIDocHandler implements JCoIDocHandler
        public void handleRequest(JCoServerContext serverCtx, IDocDocumentList idocList)
             System.out.println("IN Handler");   - THIS DIDNT PRINT on the CONSOLE             FileOutputStream fos=null;
            OutputStreamWriter osw=null;
              try
                   IDocXMLProcessor xmlProcessor =
                        JCoIDoc.getIDocFactory().getIDocXMLProcessor();
                fos=new FileOutputStream(serverCtx.getTID()+"_idoc.xml");
                osw=new OutputStreamWriter(fos, "UTF8");
                   xmlProcessor.render(idocList, osw,
                             IDocXMLProcessor.RENDER_WITH_TABS_AND_CRLF);               
                   osw.flush();
              catch (Throwable thr)
                   thr.printStackTrace();
            finally
                try
                    if (osw!=null)
                        osw.close();
                    if (fos!=null)
                        fos.close();
                catch (IOException e)
                    e.printStackTrace();
    static class MyIDocHandlerFactory implements JCoIDocHandlerFactory
         private JCoIDocHandler handler = new MyIDocHandler();
         public JCoIDocHandler getIDocHandler(JCoIDocServerContext serverCtx)
              System.out.println("Handler Object created and invoked");
              return handler;
    static class MyThrowableListener implements JCoServerErrorListener, JCoServerExceptionListener
        public void serverErrorOccurred(JCoServer jcoServer, String connectionId, JCoServerContextInfo serverCtx, Error error)
            System.out.println(">>> Error occured on " + jcoServer.getProgramID() + " connection " + connectionId);
            error.printStackTrace();
        public void serverExceptionOccurred(JCoServer jcoServer, String connectionId, JCoServerContextInfo serverCtx, Exception error)
            System.out.println(">>> Error occured on " + jcoServer.getProgramID() + " connection " + connectionId);
            error.printStackTrace();
    static class MyStateChangedListener implements JCoServerStateChangedListener
        public void serverStateChangeOccurred(JCoServer server, JCoServerState oldState, JCoServerState newState)
            // Defined states are: STARTED, DEAD, ALIVE, STOPPED;
            // see JCoServerState class for details.
            // Details for connections managed by a server instance
            // are available via JCoServerMonitor
            System.out.println("Server state changed from " + oldState.toString() + " to " + newState.toString() + " on server with program id "
                    + server.getProgramID());
    static void step2SimpleServer()
         JCoIDocServer server;
        try
            server = JCoIDoc.getServer(SERVER_NAME1);
        catch(JCoException ex)
            throw new RuntimeException("Unable to create the server " + SERVER_NAME1 + ", because of " + ex.getMessage(), ex);
        //JCoServerFunctionHandler stfcConnectionHandler = new StfcConnectionHandler();
        server.setIDocHandlerFactory(new MyIDocHandlerFactory());
        //factory.registerHandler("STFC_CONNECTION", stfcConnectionHandler);
        // additionally to step 1
        MyThrowableListener eListener = new MyThrowableListener();
        server.addServerErrorListener(eListener);
        server.addServerExceptionListener(eListener);
        MyStateChangedListener slistener = new MyStateChangedListener();
        server.addServerStateChangedListener(slistener);
        server.start();
        System.out.println("Server Started");
        System.out.println("The program can be stoped using <ctrl>+<c>");
    static class MyTIDHandler implements JCoServerTIDHandler
        Map<String, TIDState> availableTIDs = new Hashtable<String, TIDState>();
        public boolean checkTID(JCoServerContext serverCtx, String tid)
            // This example uses a Hashtable to store status information. But usually
            // you would use a database. If the DB is down, throw a RuntimeException at
            // this point. JCo will then abort the tRFC and the R/3 backend will try
            // again later.
            System.out.println("TID Handler: checkTID for " + tid);
            TIDState state = availableTIDs.get(tid);
            if(state == null)
                availableTIDs.put(tid, TIDState.CREATED);
                return true;
            if(state == TIDState.CREATED || state == TIDState.ROLLED_BACK)
                return true;
            return false;
            // "true" means that JCo will now execute the transaction, "false" means
            // that we have already executed this transaction previously, so JCo will
            // skip the handleRequest() step and will immediately return an OK code to R/3.
        public void commit(JCoServerContext serverCtx, String tid)
            System.out.println("TID Handler: commit for " + tid);
            // react on commit e.g. commit on the database
            // if necessary throw a RuntimeException, if the commit was not
            // possible
            availableTIDs.put(tid, TIDState.COMMITTED);
        public void rollback(JCoServerContext serverCtx, String tid)
            System.out.println("TID Handler: rollback for " + tid);
            availableTIDs.put(tid, TIDState.ROLLED_BACK);
            // react on rollback e.g. rollback on the database
        public void confirmTID(JCoServerContext serverCtx, String tid)
            System.out.println("TID Handler: confirmTID for " + tid);
            try
                // clean up the resources
            // catch(Throwable t) {} //partner wont react on an exception at
            // this point
            finally
                availableTIDs.remove(tid);
        public void execute(JCoServerContext serverCtx)
            String tid = serverCtx.getTID();
            if(tid != null)
                System.out.println("TID Handler: execute for " + tid);
                availableTIDs.put(tid, TIDState.EXECUTED);
        private enum TIDState
            CREATED, EXECUTED, COMMITTED, ROLLED_BACK, CONFIRMED;
    public static void main(String[] a)
        // step1SimpleServer();
        step2SimpleServer();
        // step3SimpleTRfcServer();

Similar Messages

  • PROBLEM IN CUSTOM IDOC CREATION

    Hi Friends,
                    I'm facing a problem in custom idoc creation plz try to assist me
    1.As per the information i have  i'm creating segment in we31
    for cremas01 idoc.But when i enter the name for segment i'm getting message "Name range Voilation particular name which i had given is not permitted in customer system?
    Plz clarify this,and are there any formalities which i should look for before creating custom idoc?
    Good answers will be rewarded.
                                                                              Regards,
                                                                               Vinod.

    The Problem might be.... with the naming of the segment.
    Standard segments should be created with 'E1' and all the custom segments are created using 'Z1' and the name with 8 characters long only is permitted.
    Reward Points if useful.

  • XI Problem: File to Idoc Scenario - IDOC_INBOUND_ASYNCHRONOUS

    Hi,
       I'm having problems with inbound IDOCS in R/3. The idocs from XI are sent as tRFC using the FM IDOC_INBOUND_ASYNCHRONOUS and this is a problem because i have like 200 or 300 idocs to be sent at the same time and each IDOC takes like 5 minutes to process, hence the system crash due the amount of simultaneous logins (error message ThISend: ThRollout ).
    I need to fix this problem using some kind of serialization and the use of the function module IDOC_INBOUND_IN_QUEUE.
    Does anyone know how to achieve this?.
    The scenario configuration in XI and R/3 is as follows:  (PI 7.0 SP15) - (R/3 SAP ECC 6.0)
    File to Idoc.
    Sender CC->
    File content conversion
    Exactly once in order
    Receiver CC->
    IDOC protocol
    Queue Processing
    R/3 Partner profile config.
    Message type BOMMAT
    Trigger immediately
    Thanks.

    Hi,
    You have to split the messages in the sender file adapter, by using the parameter "Recordsets per Message".
    I hope that it will solve your problem. Please see the below link, it might be useful to you.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/2c/181077dd7d6b4ea6a8029b20bf7e55/content.htm
    Regards,
    Rajesh

  • Problem with HRMD_A06 idoc

    Dear All,
    I am using the IDOC HRMD_A06 for carrying out various operation on the available HR infotypes.Kindly go thru the below mentioned details for further insight of the problem
    1.Scenario:
    a.An interface to SAP HR system needs to be built
    b.The interface will supply incremental master-data in 
      form of flat-files
    c.An integration broker ,SAP XI will then convert the
      flat-files to I-Docs and send I-Docs to SAP HR system
    d.The I-Doc chosen for this purpose is HRMD_A.HRMD_A06
    e.However this I-Doc is not supporting different
      operations on incremental data like modify, delete etc
    f.Further validations are also not being supported
    g.Also segments for certain info-type records are missing
    Example for Delete Operation mode:
    <b>Operation Delete</b>: Delete existing infotype record
    <b>Expected Result</b>: Only the particular info-type record, as supplied in the I-Doc should be deleted and not the entire personal number with all the info-types
    <b>Actual Result</b>: The entire personal Number is deleted.
    Is it that the Idoc behaves in this fashion or there is some other flag apart from OPERATION, which needs to be set.
    Regards
    Vinay

    Hi Vinay,
    Have you found a solution ?
    Because I'm a similar problem by using IDoc HRMD_A06. I have not a segment E1P0021 when I delete the infotype 0021 on an employee. I have only its segment E1PITYP.
    Regards
    Mickael

  • Problems at sending IDOC from XI to R/3

    Hello everybody, I have a problem sending an IDOC (WPUUMS) from XI to R/3. Everytime the ERP system presents overflow problems at the locked table, the IDOC, send by the XI, is not created. The type of the sending message is asynchronous. I tried to use the ALE configuration but it doesn´t seem to work.
    I hope anyone can help me to figure out this issue.
    Thank you.

    Julio
    Please try this...
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/f6d2d790-0201-0010-9382-b50b499b3fbe?quicklink=index&overridelayout=true
    http://help.sap.com/saphelp_nw70/helpdata/en/44/a1b46c4c686341e10000000a114a6b/content.htm
    Check the Queue [SMQ2] & if the message got struck in queues clear the queues
    Then goto SMQR - De-register & register the queues.
    I hope it helps you ...
    Thanks,
    Vasanth.

  • Problems with sending IDOC via RFC from Unicode to NonUnic

    Hello
    I have following problem, sending an IDOC via RFC from Unicode to Non Unicode System. IDoc is not sent with error: codepage of receiver system cant determined. receiver destination was: Message no. B1999
    I have tried different options in sm59, but it didnt help.
    Any ideas? The recipient system is rather old, version 4.0

    hey,
    I had a similar experience. I was interfacing between 4.6 (RFC), PI and ECC 6.0 (ABAP Proxy). When data was passed from ECC to 4.6, RFC received them incorrectly. So i had to send trimmed strings from ECC and receive them as strings in RFC (esp for CURR and QUAN fields). Also the receiver communication channel in PI (between PI and  RFC) had to be set as Non unicode. This helped a bit. But still I am getting 2 issues, truncation of values and some additional digits !! But the above changes resolved unwanted characters problem like "<" and "#". You can find a related post in my id. Hope this info helps..

  • Problem in sendinfg Idoc's

    Hi All,
    I am facing problem in sending idoc's form one SAP sys to another. I had written a outbound program for sending IDOC's. When i execute the program the idoc is  generated in the sending system ( With status 03 ) but no idocs were posted on the target system. But if i manually try to send the IDOC ( WE19 ) the idocs are posted to the target system.
    Can any one give me an idea where the exact problem lies in...
    Regards,
    Swamy Mantha.

    Hi,
              Ru close the master idoc with a commit .
    <b>*Reward points</b>
    Regards

  • Problem with Delivery IDOC staus 51

    Hi all,
    I have problem with Delivery IDOC.
    An IDOC is sent from the logistics provider with reference to a manually created delivery, which creates another IDOC & another partial delivery.
    The second IDOC created then confirms the partial delivery created by the first IDOC.
    When IDOC try to confirm this delivery, it goes to status 51 with error " Delivery does not exist".
    In some case IDOC was correctly processed & confirmed the delivery.
    In some cases it went wrong.
    Any ideas regarding this?

    Hi Suneel,
    It seems there is timing issue between the first IDoc and second IDoc.
    When the first IDoc has not yet commit to DB then the second IDoc tries to process with reference to the first IDoc.
    Is there any that can distinguish between 1st and 2nd IDocs?
    In other word, can you post the second IDoc within minutes delay?
    Just my two cents.
    Regards,
    Ferry Lianto

  • Problems with multiple idocs in one file ( Inbound file )

    HI,
    Thanks in Advance for your suggestions.. Highly appreciated.
    We have problems with multiple IDocs in one file.
    We are using XIB ( Amtrix ) as Middleware to receive the files.
    Curretenly When the file contains one IDoc then there is no problem. IDoc is created and everything is ok.
    If file contains two IDocs ( for example two messages ORDERS and DELVERY ) then it is creating two IDocs but both IDocs contains ORDERS plus DELIVERY segements information. That is the problem. Some how SAP unable to differentiate the IDocs in the file.. But it knows that how many idocs are there in the file..because it is creating exact number of idocs.
    We are using TRFC port ... Do I need to change it to File port..
    When we have more than one idoc do we need set any parameter in the file ...

    Thanks for the swift response. Always ideas are useful.
    As of now , Middleware cannot split the file.
    Thing is SAP is creating two Idocs with different message types. Problem is First IDoc contains ORDERS message type but also DELIVERY segments as well. Second IDoc with DELIVERY message tyoe but ORDERS segments as well... This is the problem... I think we are missing some field activation in file for EDIDC record.
    As far as I know file port supports the number of IDocs in one file.. Hope TRFC port also supports that

  • Terminated by user problem in  incomming  idoc while creating the sales ord

    This is a file to idoc issue.
    Idoc basic type: ORDERS03
    When an SO is created by an incoming idoc, problem comes with status u201Cterminated by useru201D with 51 status.
    When we tried to post this issue in BD87 t.code the document posts with out any issue.
    We are not able to create this issue in Quality box as well,
    Experts let us know if you have ever faced such problem in user system.

    "Terminated by user" means what it says. Someone has physically interrupted processing of the IDoc. That's all there is to it.

  • Problem in  Outbound IDOC from SAP R/3

    Hi,
    I am working on to send an IDOC from SAP R/3 to XI.
    I configured all necessary things as follows:
    1. Created for XI in sender system -- RFC dest, PORT and a partner profile with an outbound parameters and reciever port as XI port.
    2. created for sender system in XI -- RFC dest, PORT(as SAP<SID>) in IDX1 and assigned an idoc type(coming from sender system) to the port.
    Now I am trying to push the IDOC from sender system using Test IDOC transaction and gets success message as data is passed to port.
    My problem is I am not able to see any message in SM58 of XI server.
    Could anyone help me out?
    Thanks In Advance.
    Yaseen.

    Yasseen,
    you hardly see the idocs in Xi in sm58. Try sxmb_moni.
    If you see anything there try sm58 on the sending R/3. There you see if you have connection problems (eg authorization in XI or missing receiver determinitions).
    Hope it hellps,
    helge

  • Problems with sender IDoc scenario

    hi experts..,
    when i create message Interface for a Outbound Idoc my scenario is not working.
    if i use idoc directly instead of message interface its working properly
    And in Interface Determination if i gv interface mapping we are gting errors and without mentioning interface mapping in Configuration its is working fine
    can any one explain me what is the reason for my two questions
    thx in advance
    john wesly

    Hi,
    I will explain one example by taking one IDOC
    we have ORDERS05 Idoc and we are using the same Idoc for two scenarios
    Scenario1 -
    IDOC---File( FTP Server)
    Scenario2----IDOC-JDBC
    Now let us assume that we have configured two scenarios.
    If we trigger the IDOC Orders05 from SAP R/3 means
    1) The Idoc will be triggered and it will reach to XI.
    Now your doubt is which Receiver will be take place and to be executed.
    This time the problem my come or may not come, let it be like that.
    If your requirement is like the above mentioned thing means
    1) We can develop a single scenario like
                     IDOC-------File( FTP Server)
    JDBC
    Here what we have to do is when the idoc comes to xi we have route the Idoc to the particular receiver based on some condition in Receiver Determination
    And one more thing is in mapping also if we have two mappings then we can use Interface determination based on condition which interface mapping to be execute.
    I hope this clears yor doubt
    Regards
    Seshagiri

  • Problems with posting iDocs from MDM in SAP R3

    Hi,
    I am an MDM consultant, with limited knowledge about SAP R3.
    We send material master data from MDM, via PI to R3 using iDocs.
    We are having problems with posting MATMAS, and it seems the problems are with updating already existing materials.
    In BD87 we get the following warnings:
    The field MARA-ERVOE is not ready for input and was therefore not initialized
    The field MARA-ERVOL is not ready for input and was therefore not initialized
    The field MARA-FERTH is not ready for input and was therefore not initialized
    The field MARA-KZGVH is not ready for input and was therefore not initialized
    The field MARA-XCHPF is not ready for input and was therefore not initialized
    With the last message being:
    No changes made
    I have checked the MDM syndicator, and none of these idoc-fields are linked to the MDM repository.
    So they are syndicated blank.
    If we try to resend the material, it is again stopped and in BD87 I see the same messages.
    Please help me understanding how to solve these issues.
    Thanks,
    Thomas

    Hi,
    Please refer the below threads which talks about the similar problem
    http://scn.sap.com/thread/3180116
    http://scn.sap.com/thread/1374222
    Generally the basic view of the material to be created first. Then the sales, purchasing and other views to be created.
    There are few fields in the other views which gets values from the basic data view.
    Regards,
    Antony

  • Problem with mapping [Idoc to EDI]

    Hi experts,
    i am facing a new problem in my mapping (idoc to edi scenario)
    my target is as follow:
    InvoiceDME
    >Invoice 1..1
    >>InvoiceHeader 1..1
    >>>IncotermsCode 1..1
    My Idoc is as follow:
    IDOC
    >E1EDK17 0..20
    >>QUALF
    >>LKOND
    >>LKTEXT
    There can be 2 scenarios in my source:
    1st:
    IDOC
    >E1EDK17
    >>QUALF = 001
    >>LKOND = lkond001
    >>LKTEXT
    2nd:
    IDOC
    >E1EDK17
    >>QUALF = 001
    >>LKOND = lkond001
    >>LKTEXT
    >E1EDK17
    >>QUALF = 002
    >>LKOND = lkond002
    >>LKTEXT = lktext002
    If QUALF=002 then I have to take both values of LKOND and LKTEXT and map them to incotermcode
    else if qualf=001 alone, then map LKOND to incotermcode
    my mapping is as follow:
    http://www.flickr.com/photos/30317046@N05/2862446903/
    as you can see, the problem is if i am in my second scenario, i get the wrong value in incotercode (lkond001 instead of the concatenate of LKOND and LKTEXT for QUALF = 002)
    Do you have any idea how I can solve this??
    Thanks a lot,
    Regards,
    Jamal

    Actually i used java mapping:
        //write your code here
    try
         String returnString = "";
         for (int i = 0; i < QUALF.length; i++)
              if (("002".equals(QUALF<i>.trim())))
                   returnString = returnString +" "+ LKOND<i> +" "+ LKTEXT<i>;
                   result.addValue(returnString);                   
    catch(Exception e)
         e.printStackTrace();
    and the condition on the 'count' of QUALF (if = 2 then else)
    Thanks,
    Regards,
    Jamal

  • Problem in Extended Idoc

    Hi All,
    I have Extended ORDERS05 for adding custom fields for inbound process,
    Steps i have fallowed to create Extend Idoc:
    1,Created new segment with all Z-fields and released,
    2,Created Extension Idoc with reference standard Idoc ORDER05, and added custom segment under standard segment E1EDP01,
    released Extend Idoc,
    am able to see all Z-fields in Z-segment,
    but my problem is am unable to see any standard fields under any standard segment in my Extended Idoc?
    why am not able to see all standard fileds?
    Regards
    suresh.d

    Hi,
    Are you checking in WE30 or in WE02?
    In WE30 you cans ee only Segment names.
    Give the segment name in SE11 and then see if you are able to see the fields.
    Regards,
    Sravan

Maybe you are looking for

  • SQL Agent Job Fails To Run A SSIS Package

    Hi, I have a SSIS Package which basically truncates the table and re-loads it from an excel file .The job runs fine if i run it manually on visual studio.However, i try to shcedule a SQL Agent job and it fails with the following error  Description: T

  • Bonjour64msi error unable to install itunes 10.5 and ios 5.0

    Please can someone help me I can't download the ios 5.o as I need the 10.5 itunes which I also can't install because of this stupid Bonjour64msi error. I've tried unintalling this bonjour and it says it doesn't exsist well if it doesn't exsist what i

  • IEEE 802.1x with EAP-TLS issue in cisco 2960

    In My Cisco 2960 switch is not working with EAP-TLS mechanism of 802.1x but its works well with other  protocols like EAP-PEAP or MAC Address authentication. Below is the configuration aaa authentication login default group tacacs+ local aaa authenti

  • HP Officejet 4630

    I can't print a document from word wirelessly from my computer. When I print the the diagnostic report it works. Any Ideas? Thanks!

  • Is it possible to Archive by folder, rather than selecting each email

    I do project work, sort email by project & want to keep the project folders intact, not split up by Year