JCO Function Module Listener

I have created a JCO Function Module Listener to be triggered after a BAPI in R/3 is called.
I have made the following modifications to the modification-config.xml:
     <function-module-listener>
     <param name="fmevent:ZBAPISDORDER_GETDETAILEDLIST" value="com.xxx.listeners.ZBAPISDORDER_GETDETAILEDLIST_Listener" />
     </function-module-listener>
The default BAPI implementation has been changed with a new BAPI. I have made the configuration changes to refer to the new BAPI and the new BAPI also is getting called. Should I register for Function Module listener to the Original one or to the modified BAPI name..
When I execute this BAPI, the Function Module listener class is not getting called. I have a debug statement to write to the logs at the start of the "connectionEvent" method and seems this itself is not getting called.
Should I register this class to be notified for events..
Please letme know if there are any configuration to be made from the SAP side or from SAP J2EE Engine to get this done.
Thanks & Regards,
D.Vinodh

Vinodh
<b>Should I register for Function Module listener to the Original one or to the modified BAPI name..</b>
   --> I hope it should registered for Modified One !!!
Thanks
Jack
Allot points if it helps !!!

Similar Messages

  • JCO : Function Module to be executed

    Hi all
       I have a z Function Module in my R/3 System. I want to execute it through JCo.
    My z function module  is importing 4 fileds and exports a RETURN Value and a TABLE.
    1.How do i Call this Z function module using DIRECT methd?
    2.How do i pass the Values of the IMPORTING Paramters?  
    3.How do i get the RETURN value and TABLES contents ?
    Could anybody help me out in this task in SAP JCo ???
    Thanks
    Kay

    Try posting this question in the Java forum: Java Development
    This is not the correct place.

  • Passing request table to Jco function

    Hello Experts,
      We have one requirement where we need to pass the table data from the BLS to SAP Jco Function Module call.  For example we are reading the material numbers from the oracle database and then we need to pass these material numbers to SAP Function Module as a table to read the further details from SAP for the given material numbers. 
      We wrote a custom function module in SAP which accepts the material number as table.  Is it possible to pass the table request parameter to Function Module?  If possible how can we do this?  I tried to pass the XML document to Function Module table, but no luck.
    Thanks
    Mohan

    Mohan,
    in the BLT, configure the JCO action to use you custom function. After pressing enter, MII reads the xml structure of the function (if the connection MII to SAP is working). In the further processing of the BLT, you can fill the RFC table which you can see in the link editor using your query results and the link editor types "AppendXML" or "AppendAfter".
    The following thread might help: [RFC call with multiple input|http://forums.sdn.sap.com/click.jspa?searchID=34070350&messageID=8134561].
    Michael

  • Access Function Module "RSDU_EXEC_SQL" via Jco

    Hello Experts,
    is there a possibility to acces the FM "RSDU_EXEC_SQL" via Jco?
    My Testcode is like this:
    public class JcoTest {
         public static void connect(){
              Client connection = JCO.createClient("100", "user", "password", "EN",
                        "some.server", "00");
              connection.connect();
              Repository repository = new JCO.Repository("Test", connection);
              IFunctionTemplate functionTemplate = repository.getFunctionTemplate("RSDU_EXEC_SQL");
              Function function = functionTemplate.getFunction();
              System.out.println(function.getImportParameterList().toString());
              connection.disconnect();
         public static void main(String[] args) {
              connect();
    But this leads to an Exception: (126) NOT_FOUND: EXCEPTION NOT_FOUND RAISED
    When i access the RFC_READ_TABLE instead, everything is fine.
    Thanks in advance,
    Tanja

    Check whether RSDU_EXEC_SQL is remote enabled or not.
    You need to make it remote enabled. Only then it will become an RFC from a Function module.

  • Calling unremotable ABAP function modules (JCO)

    Hello,
    i want to develop a java-application around cFolders calling RFCs with JCO.
    I get the following error code from JCO:
    "[code]com.sap.mw.jco.JCO$Exception: (104) RFC_ERROR_SYSTEM_FAILURE: The function module "CFX_API_USER_GET_LIST" cannot be used for 'remote' calls.
         at com.sap.mw.jco.rfc.MiddlewareRFC$Client.nativeExecute(Native Method)[/code]
    Is there an easy ABAP-code example which offers the function modules in the cfx_*-namespace remotable to bind it in the JAVA-Code?

    Hi,
    For some reason I cannot see the entire error message that you have posted, but sounds like you are calling a function that is NOT remote enabled, that means you can call it only from inside SAP.
    If you look at the attributes of the function, it should be remote enabled, only then you can call it from an external system.
    Regards,
    Ravi
    Note : Please mark the helpful answers

  • Jco Call a Function Module in BackGround

    Hello All.
    Some one can send me a simple exemplo how to call a ABAP Function Module in BackGround.
    Can i set this in Java side?
    ..or only set the BackGround Work Process in SAP side?
    In my java application call the Abap Function Module like this:
    client.execute(function);
    How to set parameters to execute the function in BackGround.
    My rpoblem is when the return the data to java side ...occurs the error TIME_OUT in Dialog WorkProcess.
    I need to call in background to better performance and to prevent the TIME_OUT.
    Best regards.
    Taylor.

    Hi.
    I don’t know how to do, but, you can do a previous RFC, this new RFC execute the original function in background mode. I did something like that:
    - JAVA: client.execute("RFC_FUNCTION", input, output);
    - SAP: RFC_FUNCTION:
    CALL FUNCTION func IN BACKGROUND TASK
                         [DESTINATION dest]
                         parameter_list
                         [AS SEPARATE UNIT].
    or
    CALL FUNCTION update_function IN UPDATE TASK
                                 [EXPORTING p1 = a1 p2 = a2 ...]
                                 [TABLES t1 = itab1 t2 = itab2 ...].
    I hope that help you

  • Steps to create JCO to call R3 Function module in ISA CRM b2b webshop

    Hi experts,
    Can u help me in creating a JCo connection to R3 from CRM isa b2b webshop.
    See i am working on CRM 5.0 isa . I have a default jco connection calling to CRM.
    But i wanted an another JCO to call FM of R3.
    Can u pls give me the steps in creating this jco (XCM, Xml, changes etc )?
    Hope you have understood my question.
    Pls reply,
    thanks in advance,
    Niraja.

    Hi Niraja,
    The second option would be easy to do, as the connection is already made you can just use the connection pool.
    I feel maintaining/creating two connections would lead to performance issues.
    So its better to go with FM in CRM to FM in R/3
    If you want to go for a different connection or connection pool then follow this example
    In the world of database connectivity, creating individual connections to a database system is technically expensive and often incurs unwanted overhead in both client and server-side applications. Connection pools allow your application to check connections out from a pool and release a connection once the transaction has completed. This tip briefly explores the value and implementation of using connection pools in JCo.
    The following code presents two classes that demonstrate the use of a connection pool and its restrictions. You should be able to pull code from this example when adding pooling to your own Java/JCo application.
    The first JCo application does not use pooling:
    import com.sap.mw.jco.*;
    public class JcoTest {
    private static JCO.Client theConnection;
    private static IRepository theRepository;
    public static void main(String[] args) {
      createConnection();
      retrieveRepository();
      try {
      JCO.Function function = getFunction("RFC_READ_TABLE");
      JCO.ParameterList listParams = function.getImportParameterList();
      listParams.setValue("BSAUTHORS", "QUERY_TABLE");
      theConnection.execute(function);
      JCO.Table tableList = function.getTableParameterList().getTable("DATA");
      if (tableList.getNumRows() > 0) {
       do {
        for (JCO.FieldIterator fI = tableList.fields();
          fI.hasMoreElements();)
          JCO.Field tabField = fI.nextField();
          System.out.println(tabField.getName()
               + ":t" +
               tabField.getString());
         System.out.println("n");
       while (tableList.nextRow() == true);
      catch (Exception ex) {
       ex.printStackTrace();
    private static void createConnection() {
      try {
       theConnection = JCO.createClient("000", "DDIC", "minisap", "en", "sincgo", "00");
       theConnection.connect();
      catch (Exception ex) {
       System.out.println("Failed to connect to SAP system");
    private static void retrieveRepository() {
      try {
       theRepository = new JCO.Repository("saprep", theConnection);
      catch (Exception ex)
       System.out.println("failed to retrieve repository");
      public static JCO.Function getFunction(String name) {
        try {
             return theRepository.getFunctionTemplate(name.toUpperCase()).getFunction();
        catch (Exception ex) {
         ex.printStackTrace();
          return null;
    To add connection pooling you simply add this code to the beginning of the main method:
        if (connPool == null) {
          JCO.addClientPool(POOL_NAME,
                            5,
                            "000",
                            "bcuser",
                            "minisap",
                            "EN",
                            "sincgo",
                            "00");
    And replace the call to the createConnection() method with this:
             theConnection = JCO.getClient(POOL_NAME);
    The code should now look like this:
    import com.sap.mw.jco.*;
    public class JcoTest {
    private static JCO.Client theConnection;
    private static IRepository theRepository;
        private static final String POOL_NAME = "myPool";
    public static void main(String[] args) {
        JCO.Pool connPool = JCO.getClientPoolManager().getPool(POOL_NAME);
        if (connPool == null) {
          JCO.addClientPool(POOL_NAME,
                            5,      //number of connections in the pool
                            "client",
                            "username",
                            "paswword",
                            "EN",
                            "hostname",
                            "00");
            theConnection = JCO.getClient(POOL_NAME);
      retrieveRepository();
      try {
      JCO.Function function = getFunction("RFC_READ_TABLE");
      JCO.ParameterList listParams = function.getImportParameterList();
      listParams.setValue("BSAUTHORS", "QUERY_TABLE");
      theConnection.execute(function);
      JCO.Table tableList = function.getTableParameterList().getTable("DATA");
      if (tableList.getNumRows() > 0) {
       do {
        for (JCO.FieldIterator fI = tableList.fields();
          fI.hasMoreElements();)
          JCO.Field tabField = fI.nextField();
          System.out.println(tabField.getName()
               + ":t" +
               tabField.getString());
         System.out.println("n");
       while (tableList.nextRow() == true);
      catch (Exception ex) {
       ex.printStackTrace();
      JCO.releaseClient(theConnection);
    private static void retrieveRepository() {
      try {
       theRepository = new JCO.Repository("saprep", theConnection);
      catch (Exception ex)
       System.out.println("failed to retrieve repository");
      public static JCO.Function getFunction(String name) {
        try {
             return theRepository.getFunctionTemplate(name.toUpperCase()).getFunction();
        catch (Exception ex) {
         ex.printStackTrace();
          return null;
    Now, when this class executes, it will create a pool of 5 SAP connections. Once created, a single connection is retrieved and executed against. After the call to SAP has finished, the connections are released with:
    JCO.releaseClient(theConnection);
    You can easily integrate this code in any application that acts as a server or requires multiple users to access SAP via the Web.
    Regards,
    Sateesh Chandra

  • System failure, during call of function module RSWR_RFC_SERVICE_TEST

    Hi Team,
         I am working with BW and Portal Integration, with the Netweaver
    2004s SP 11 version. I have a issue when i run the RSPOR_SETUP program
    to test the configuration.
    The error is on status 5 and 12, i get the following error:
    System failure, during call of function module RSWR_RFC_SERVICE_TEST,
    and when i enter at the dev_jrfc.trc log file, i have the following
    error:
    Exception thrown [Tue Jul 10 16:12:16,687]:Exception thrown by
    application running in JCo Server
    java.lang.RuntimeException: call FM RSWR_RFC_SERVICE_TEST to ProgId
    smxpedvc_PORTAL_EPD on host smxpedvc.grupoempresarialangeles.com.mx
    with SSO not authorized: No login module succeeded.
            at
    com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest
    (RFCDefaultRequestHandler.java:79)
            at com.sap.engine.services.rfcengine.RFCJCOServer.handleRequest
    (RFCJCOServer.java:156)
            at com.sap.mw.jco.JCO$Server.dispatchRequest(JCO.java:7785)
            at com.sap.mw.jco.MiddlewareJRfc$Server.dispatchRequest
    (MiddlewareJRfc.java:2405)
            at com.sap.mw.jco.MiddlewareJRfc$Server.listen
    (MiddlewareJRfc.java:1728)
            at com.sap.mw.jco.JCO$Server.listen(JCO.java:8145)
            at com.sap.mw.jco.JCO$Server.work(JCO.java:8265)
            at com.sap.mw.jco.JCO$Server.loop(JCO.java:8212)
            at com.sap.mw.jco.JCO$Server.run(JCO.java:8128)
            at com.sap.engine.core.thread.impl3.ActionObject.run
    (ActionObject.java:37)
            at java.security.AccessController.doPrivileged(Native Method)
            at com.sap.engine.core.thread.impl3.SingleThread.execute
    (SingleThread.java:100)
            at com.sap.engine.core.thread.impl3.SingleThread.run
    (SingleThread.java:170)
    Could you help me to solve this issue.
    Thanks so much.

    Have you checked the user that is used to connect from J2EE back to ABAP?
    I had a similar problem, went into the Visual Administrator and found the incorrect password (or possibly outdated password) was being used to communicate back to ABAP, and updating that sorted out my problem.
    Hope this helps.
    Cheers,
    Andrew

  • RFC Error While Invoking A Remote Function Module.

    I am invoking A remote function module while invoking it get  an exception when i see the error logs
    com.sap.tc.webdynpro.modelimpl.dynamicrfc.WDDynamicRFCExecuteException:      Screen output without connection to user.                           , error key: RFC_ERROR_SYSTEM_FAILURE at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClassExecutable.execute(DynamicRFCModelClassExecutable.java:101) at... [see details]
    can anyone pls tell me what the error is..
    regards
    Nilesh Taunk.

    Hi Nilesh Taunk,
    You can go through the following steps
    -o JCO Exceptions 1. http://help.sap.com/saphelp_nw04s/helpdata/en/f6/daea401675752ae10000000a155106/frameset.htm
    -o JCO Exceptions 2. http://help.sap.com/saphelp_nw04/helpdata/en/f6/e002416225f023e10000000a155106/frameset.htm
    -o Restart of the J2EE instance and try re-importing the RFC model. Sometimes it helps.
    -o Logon into WebDynpro Content Administrator as a J2EE Admin and check if the JCO Connections and User /pwd of your application is correct. You can <b>ping </b>or <b>test your JCO connections</b>. if something is wrong, enter the values again for JCO n retest them.
    -o Try undeploying or removing the complete application and redeploy it.
    Tu undeploy please go to
    Go to <b>Visual Admin -> Server -> Services -> Deploy ->
    </b>
    Under Runtime Tab
    select the server, open the tree , you would find the webdypro list there.
    Now select an application, first stop it, remove it and redeploy if necessary.
    Let us know if you could solve the problem or not, gud luck!
    Rgds,
    Sreenivas.

  • Functional module table parameters values not getting displayed in Java sys

    Hi,
    We are calling the Table parameter through Java code from functional
    module ZCRM_ICSS_PROJ_CUST_USR is not giving any rows value .If I execute
    the same functional module with passing the import parameter value User
    id: MLDL010 its giving value in CRM.
    I am checking Function module( Remote enabled ) in Debugging mode,
    before displaying values it is raising message like
    SY-MSGNR - 005
    SY-MSGTY - CRM_LINK
    in T100 Table
    SPRSL : EN
    ARBGB : CRM_LINK
    MSGNR : 005
    TEXT :'No Links corresponding to the specified data could be determined'
    Is that related to any communication problem CRM & JAVA ICSS System ?
    Regards,
    Pavan.

    The message in simple English just means that "You are doing something really bad" !!! It is absolutely not the communication problem, but understanding problem.
    Though you may be executing the same function using SE37 or in the webshop application through JCo, the runtime context is different and without knowing what exactly your Z rfc is doing, it is very difficult to help. To start with, the userid - that is who is running the RFC is different in both situations. In SE37, it is the logon user and in the web, depending upon whether the connection is stateless or stateful, it could be the anonymous ICSS user or the logged in user. Here again, if you have used UME, it is the user id and if you have used ALIAS user, then it is the alias user id. This is just an example. Your runtime context can be different due to many other reasons too.
    So, to make this simpler - what is that you are trying to do?
    BTW, try not to create multiple threads for the same issue..

  • How to define null or empty value in BAPI function modules?

    Hi,
    I have problem with BAPI functions, where some parameters are mandatory.
    For example: when I try to use HR BAPI's(BAPI_PERSDATA_CHANGE, etc.) I have to insert parameters like SUBTYPE,OBJECTID,LOCKINDICATOR. The PA0002 table that is used from this BAPI doesn't have SUBTYPE, OBJECTID, LOCKINDICATOR, for any of the records that I would like to select.
    So what I tried, was to put a ' ', to indicate that is empty. It returned an error message saying "Make an entry in all required fields". Next tried to put in some values for these fields -- and it returned an error message saying "No data selected from 0002 for this period".
    I also tried to run BAPI_FAMILY_CHANGE that uses data from table PA0021. Here I found some records with  SUBTYPE, OBJECTID fields that were not empty, but LOCKINDICATOR was still missing. So I tried to put LOCINDICATOR value directly in to database (with MS SQL Enterprise Manager).  After that I was able to use BAPI_FAMILY_CHANGE.
    I think that manually inserting data in database is not normal procedure.
    Is there something that I have missed out?
    I mean -- how can I get this to work without inserting data directly in database?
    How can I define null or empty value in BAPI function modules?
    Thank you in advance.
    Best regards,
    Mihail

    Defining an empty value for a parm in a table is easy.
    First get the function's definition from the SAP system
    Second only populate the fields for which you have a value to set
    Third execute the function.
    The JCO takes care of the rest.
    Enjoy

  • Is it possible to call custom designed RFC function module, apart from BAPI

    Hi Friends,
    1.     Is it possible to call custom designed RFC function module, apart from BAPI.
    2.     Why we call it Adaptive RFC layer, Since every time the JCO layer updated with SAP, Why can’t be dynamic.
    Thanx for Ur time.
    Cheers,
    Sam

    Also check <a href="http://help.sap.com/saphelp_nw04/helpdata/en/41/38bc8f813719488ddc9d9b21251ec3/frameset.htm">here</a> for more information on aRFC. Here you can find why it is called adaptive.
    Regards,
    Christophe

  • Error executing custom function module

    Hi all,
    am trying to read a function module form my java code as below.
    There is no problem with the function module.
    I think there is some problem with the java code that is written. I am sure the problem lies with the  TABLES IT_PRODUCT_DATA STRUCTURE  ZOG_ITEM_SCREENSTR.
    Function module parameters and signature.
    FUNCTION ZGET_CUST_ORDERGUIDE_ITEMDATA.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(IV_ORDER_GUID) TYPE  CRMT_OBJECT_GUID OPTIONAL
    *"     VALUE(IV_CUSTOMER) TYPE  BU_PARTNER
    *"  TABLES
    *"      IT_PRODUCT_DATA STRUCTURE  ZOG_ITEM_SCREENSTR
    Java Code that is Implemented is attached above.
    public ArrayList fetchOrderGuide(String customerNumber) {
              ArrayList itemList = new ArrayList();
                                       ItemSalesDoc itemSalesDoc = new ItemSalesDoc();
              if (log.isDebugEnabled()) {
                   log.debug("inside ZAdminLogin");
              try
              JCoConnection aJCoCon = (JCoConnection) getConnectionFactory().getConnection(com.sap.isa.core.eai.init.InitEaiISA.FACTORY_NAME_JCO,
                                                                                                 com.sap.isa.core.eai.init.InitEaiISA.CON_NAME_ISA_STATEFUL);
                   try
                        try
                             JCO.Function zFetchSalesOrderFunctionModule = aJCoCon.getJCoFunction("ZGET_CUST_ORDERGUIDE_ITEMDATA");
                             // set the import values
                             Table zItemsTable = new Table("ITEMS");
                                       //zPackagesTable.addColumn(Table.TYPE_STRING,"HUI");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JOGITEM");
                             zItemsTable.addColumn(Table.TYPE_INT,"JPRUOM");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JPRSEQ");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JOGDESC");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JLINE");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JOGNR");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JPACK");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JSIZE");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JBRAND");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JWEEKAVG");
                             zItemsTable.addColumn(Table.TYPE_STRING,"JDELFLAG");
                             JCO.ParameterList importParams = zFetchSalesOrderFunctionModule.getImportParameterList();
                             importParams.setValue("BP-104", "IV_CUSTOMER");
                             aJCoCon.execute(zFetchSalesOrderFunctionModule);
                             JCO.Table zRtItems = zFetchSalesOrderFunctionModule.getTableParameterList().getTable("IT_PRODUCT_DATA");
                                            int numberOfPackages = zRtItems.getNumRows();
                                            if (log.isDebugEnabled()) {
                                                 log.debug("number of packages " + numberOfPackages);
                                            if (numberOfPackages > 0)
                                                 for (int j=0; j<numberOfPackages; j++)
                                                      TableRow itemRow = zItemsTable.insertRow();
                                                      //itemRow.setRowKey(new TechKey(zRtItems.getString("EXIDV")));
                                                      //packageRow.getField("HUI").setValue(zGoods.getString("EXIDV"));
                                                      itemRow.getField("JOGITEM").setValue(zRtItems.getString("OGITEM"));
                                                      itemRow.getField("JPRSEQ").setValue(zRtItems.getString("PRSEQ"));
                                                      itemRow.getField("JOGDESC").setValue(zRtItems.getString("OGDESC"));
                                                      itemRow.getField("JLINE").setValue(zRtItems.getString("LINE"));
                                                      itemRow.getField("JOGNR").setValue(zRtItems.getString("OGNR"));
                                                      itemRow.getField("JPACK").setValue(zRtItems.getString("PACK"));
                                                      itemRow.getField("JSIZE").setValue(zRtItems.getString("SIZE"));
                                                      itemRow.getField("JBRAND").setValue(zRtItems.getString("BRAND"));
                                                      itemRow.getField("JWEEKAVG").setValue(zRtItems.getString("WEEKAVG"));
                                                      itemRow.getField("JDELFLAG").setValue(zRtItems.getString("DELFLAG"));
                                                      zRtItems.nextRow();
                        catch(JCO.AbapException abapException)
                             //Exception thrown, user is not valid
                             if(log.isDebugEnabled())
                                  log.debug(  abapException.getKey());
                   catch (Exception ex)
                        if (log.isDebugEnabled()) {
                             log.debug(ex);
                   finally
                        aJCoCon.close();
              catch(BackendException beeEx)
                   if(log.isDebugEnabled())
              return itemList;     
    LOGDETAILS
    ZGET_CUST_ORDERGUIDE_ITEMDATA:: - IN: INPUT * IV_CUSTOMER='BP-104' IV_ORDER_GUID='00000000000000000000000000000000'
    Oct 9, 2008 6:48:41 AM,507 SAPEngine_Application_Thread[impl:3]_7 Error com.sap.isa.core.eai.sp.jco.JCoConnectionStateful Error occcurred in EAI layer "com.sap.mw.jco.JCO$Exception: (106) JCO_ERROR_RESOURCE: Trying to access row values in a table which does not have any rows yet".
    [EXCEPTION]
    com.sap.mw.jco.JCO$Exception: (106) JCO_ERROR_RESOURCE: Trying to access row values in a table which does not have any rows yet
                at com.sap.mw.jco.JCO$Record.checkRowCapacity(JCO.java:12354)
                at com.sap.mw.jco.JCO$Record.getString(JCO.java:12827)
                at com.sap.mw.jco.JCO$Field.getString(JCO.java:11055)
                at com.sap.isa.core.eai.sp.jco.JCoUtil.paramIterator(JCoUtil.java:412)
                at com.sap.isa.core.eai.sp.jco.JCoUtil.logCall(JCoUtil.java:382)
                at com.sap.isa.core.eai.sp.jco.JCoUtil.logCall(JCoUtil.java:236)
                at
    All helpful answers will be rewarded heavily

    hi,
    first of all you do not set the import values for your table correct. You should do something similar like this:
    Function myFunction = connection.getJCoFunction(Z_FM");
    Table myTable = myFunction.getTableParameterList().getTable("Z_TABLE");
    for(int i=0; i<2; i++) {
        myTable.appendRow();
                        myTable.setValue(value1,"VALUE1");
                        myTable.setValue(value2,"vALUE2");
                   connection.execute(myFunction);
    Did you debug your java class? You should check at which point your java class throws the error.
    Regards
    Michael

  • RFC Error while trying to access function module from business connector

    Hi,
    I am getting the following RFc exceptions in BC server when we invoke the service pub.sap.client:invoke fail as a flow step in Idoc_Status_Add(this service is calling a function module in sap namely ZYBC_IDOC_STATUS_ADD_FROM_BC which Adds status to Idoc (from Business Connector).But no trace of failures are recorded in sap side
    except 1: rfc_failure in BC trace files under monitoring.I need to know the root cause of these errors as the same services have run finely later and IDOCs were also processed successfully without any problem.
    com.sap.mw.jco.JCO$Exception: (104) RFC_ERROR_SYSTEM_FAILURE: See RFC trace file or SAP system log for more details
    at com.sap.mw.jco.rfc.MiddlewareRFC$Client.nativeExecute(Native Method)
    at com.sap.mw.jco.rfc.MiddlewareRFC$Client.execute(MiddlewareRFC.java:1217)
    at com.sap.mw.jco.JCO$Client.execute(JCO.java:3684)
    at com.sap.mw.jco.JCO$Client.execute(JCO.java:3129)
    at com.wm.pkg.sap.rfc.SAPSession.invoke(SAPSession.java:437)
    at pub.sap.client.invoke(client.java:297)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:281)
    at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:709)
    at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:140)
    at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:292)
    at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:559)
    at com.wm.lang.flow.FlowState.step(FlowState.java:430)
    at com.wm.lang.flow.FlowState.invoke(FlowState.java:400)
    at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1786)
    at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:709)
    at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:140)
    at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:292)
    at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:559)
    at com.wm.lang.flow.FlowState.step(FlowState.java:430)
    at com.wm.lang.flow.FlowState.invoke(FlowState.java:400)
    at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1786)
    at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:709)
    at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:496)
    at wm.server.net.EmailTransaction$RunService.write(EmailTransaction.java:1375)
    at wm.server.net.EmailTransaction$RunService.run(EmailTransaction.java:1218)
    at com.wm.util.pool.PooledThread.run(C:/NT/Perforce/basis/4.1.0-terra/module/core/source/com/wm/util/pool/PooledThread.java:103)
    at java.lang.Thread.run(Unknown Source)
    could anyone throw light on how this kind of error can be resolved and why it occured?
    Thanks.

    What does the RFC trace file and log say? Has there been any dump on the SAP server? Check the logs and transaction st22 in your SAP system to see if the RFC-module has dumped.
    My guess is the problem is in the RFC-module, I think you should start looking there.
    regards,
    Dionisios

  • Problem while calling RFC function module in java

    Hi all
    com.sap.mw.jco.JCO$Exception: (102) RFC_ERROR_COMMUNICATION: Connect to SAP gateway failed
    Connect_PM  GWHOST=<system.ab.ydydy.yyyd.com>, GWSERV=sapgw00, ASHOST=<system.ab.ydydy.yyyd.com>, SYSNR=00
    LOCATION    CPIC (TCP/IP) on local host
    ERROR       hostname '<system.ab.ydydy.yyyd.com>' unknown
    TIME        Mon Jun 06 14:50:25 2005
    RELEASE     640
    COMPONENT   NI (network interface)
    VERSION     37
    RC          -2
    MODULE      ninti.c
    LINE        332
    DETAIL      NiPGetHostByName2: hostname '<system.ab.ydydy.yyyd.com>' not found
    SYSTEM CALL gethostbyname_r
    COUNTER     1
         at com.sap.mw.jco.rfc.MiddlewareRFC$Client.nativeConnect(Native Method)
         at com.sap.mw.jco.rfc.MiddlewareRFC$Client.connect(MiddlewareRFC.java:1098)
         at com.sap.mw.jco.JCO$Client.connect(JCO.java:2983)
         at MyProject.Bapi2.<init>(Bapi2.java:43)
         at MyProject.Bapi2.main(Bapi2.java:231)
    Pl help me
    pradeep

    Hi
    This is my code....
    Created on Jun 2, 2005
    To change the template for this generated file go to
    Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
    package MyProject;
    @author pradeep
    To change the template for this generated type comment go to
    Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
    import com.sap.mw.jco.*;
    public class Bapi2 extends Object {
       JCO.Client mConnection;
       JCO.Repository mRepository;
       public Bapi2() {
           try {
              // Change the logon information to your own system/user
              mConnection =
                JCO.createClient("122", // SAP client
                   "<pradeep>", // userid
                   "*****", // password
                   "EN", // language
                   "<abc11.aa.abc23.company.com>", // application server host name
                   "<00>");//system no
              mConnection.connect();
              mRepository = new JCO.Repository("HLL", mConnection);
          catch (Exception ex) {
            ex.printStackTrace();
            System.exit(1);
          JCO.Function function = null;
          JCO.Table codes = null;
            try {
               function = this.createFunction("BAPI_COMPANYCODE_GETLIST");
               if (function == null) {
                 System.out.println("BAPI_COMPANYCODE_GETLIST" +
                                         " not found in SAP.");
                 System.exit(1);
               mConnection.execute(function);
               JCO.Structure returnStructure =
                 function.getExportParameterList().getStructure("RETURN");
               if (! (returnStructure.getString("TYPE").equals("") ||
                        returnStructure.getString("TYPE").equals("S")) ) {
                 System.out.println(returnStructure.getString("MESSAGE"));
                 System.exit(1);
               codes =
                 function.getTableParameterList().getTable("COMPANYCODE_LIST");
               codes.setRow(2);
    codes.deleteRow();
    codes.deleteRow(5);
    codes.appendRow();
    codes.setValue("XXXX", "COMP_CODE");
    codes.setValue("Does not exist", "COMP_NAME");
    codes.appendRows(2);
    codes.setValue("YYYY", "COMP_CODE");
    codes.setValue("Does not exist either", "COMP_NAME");
    codes.nextRow();
    codes.setValue("ZZZZ", "COMP_CODE");
    codes.setValue("Nor does this", "COMP_NAME");
    for (int i = 0; i < codes.getNumRows(); i++) {
    codes.setRow(i);
                 System.out.println(codes.getString("COMP_CODE") + '\t' +
                                         codes.getString("COMP_NAME"));
            catch (Exception ex) {
               ex.printStackTrace();
               System.exit(1);
            try {
               codes.firstRow();
               for (int i = 0; i < codes.getNumRows(); i++, codes.nextRow()) {
                 function = this.createFunction("BAPI_COMPANYCODE_GETDETAIL");
                 if (function == null) {
                    System.out.println("BAPI_COMPANYCODE_GETDETAIL" +
                                            " not found in SAP.");
                    System.exit(1);
                 function.getImportParameterList().
                    setValue(codes.getString("COMP_CODE"), "COMPANYCODEID");
                 mConnection.execute(function);
                 JCO.Structure returnStructure =
                    function.getExportParameterList().getStructure("RETURN");
                 if (! (returnStructure.getString("TYPE").equals("") ||
                          returnStructure.getString("TYPE").equals("S") ||
                          returnStructure.getString("TYPE").equals("W")) ) {
                    System.out.println(returnStructure.getString("MESSAGE"));
                 JCO.Structure detail =
                    function.getExportParameterList().
                    getStructure("COMPANYCODE_DETAIL");
                 System.out.println(detail.getString("COMP_CODE") + '\t' +
                                         detail.getString("COUNTRY") + '\t' +
                                         detail.getString("CITY"));
           catch (Exception ex) {
              ex.printStackTrace();
              System.exit(1);
           mConnection.disconnect();
         public JCO.Function createFunction(String name) throws Exception {
           try {
              IFunctionTemplate ft =
                mRepository.getFunctionTemplate(name.toUpperCase());
              if (ft == null)
                return null;
              return ft.getFunction();
          catch (Exception ex) {
            throw new Exception("Problem retrieving JCO.Function object.");
       public static void main (String args[]) {
          Bapi2 app = new Bapi2();
    This is the error i'm getting...
    com.sap.mw.jco.JCO$Exception: (102) RFC_ERROR_COMMUNICATION: Connect to SAP gateway failed
    Connect_PM  GWHOST=<abc11.aa.abc23.company.com>, GWSERV=sapgw00, ASHOST=<abc11.aa.abc23.company.com>, SYSNR=00
    LOCATION    CPIC (TCP/IP) on local host
    ERROR       hostname '<abc11.aa.abc23.company.com>' unknown
    TIME        Mon Jun 06 17:15:12 2005
    RELEASE     640
    COMPONENT   NI (network interface)
    VERSION     37
    RC          -2
    MODULE      ninti.c
    LINE        332
    DETAIL      NiPGetHostByName2: hostname
                '<abc11.aa.abc23.company.com>' not
         at com.sap.mw.jco.rfc.MiddlewareRFC$Client.nativeConnect(Native Method)
         at com.sap.mw.jco.rfc.MiddlewareRFC$Client.connect(MiddlewareRFC.java:1098)
         at com.sap.mw.jco.JCO$Client.connect(JCO.java:2983)
         at MyProject.Bapi2.<init>(Bapi2.java:45)
         at MyProject.Bapi2.main(Bapi2.java:233)
    Thx
    PRadeep

Maybe you are looking for

  • Desperate - How can I delete an entire index at once?

    I have accidentally entered the index references for a quarterly into the 'topics' panel when they should have been inthe 'reference' panel. (Darned radio buttons....) There are dozens of entries and deleting them individually from the index will tak

  • How can i set a column which would show me the name of the user

    how can i write a trigger which would show me the name of the user now make changes in the table.

  • Hiding the cost column in Billing document

    Hi, We have a requirement to hide the COST column in transaction VF01, VF02; VF03.Please let me know if any body has any clues. In the current system there are two companies. Company 1 Users should not see cost; Company 2 Users has to see the cost. I

  • Add custom fields in Approval List

    Hi, How can I add more information to the Pending Approval List? I've seen in the database that the "request preview" column in the list is html code filled into the REQ table. May be there is a configuration to determine which fields are included in

  • SSIS DTEXEC Memory Issue

    I have 4 SSIS packages running on my Windows 2012/ SQL Server 2012 machine to load data from other LAN SQL Servers to local SQL Server database. Recently I noticed receiving an odd error from data flow task. The error message is just "Unspecified Er