JCo Server - ABAP to NWJ2EE - Metadata Access

Hi Friends,
we are here in a project, which also deals to fetch data from an external non ABAP system. The calling system is a 4.6C. We therefore use the JCo server service (registered RFC connection), which can be called by the 4.6C system. Basicly it works, but we discovered, that currently we get a single point of failure, because we have to provide repository information (connection information) within the visual admin.
The help page
<a href="http://help.sap.com/saphelp_nw04/helpdata/en/b0/46e13d82fcfb34e10000000a114084/frameset.htm">SAP JCo Server Programming</a> and its examples, would lead us to provide connection properties, e.g. within the coding. Therefore, within visual admin, section "JCo RFC Provider", JNDI name, program ID and connection properties are maintained. The J2EE application therefore use those predefined entries. When starting the first request to JCo server, metadata are being read from repository, which here must be the calling system (our 4.6C system). Within the repository section, you can only provide dedicated application server login information, not e.g. a load balanced one. Thus this is for reasons of high availability, a single point of failure. An ABAP instance itself is not HA required, because you can use multiple of them. The message service itself but is HA required.
Now after this long explanation my question:
Are we on the right way, using e.g. visual admin to define the registered server programs, etc - or is there a more integrated, flexible integration possible?
Perhaps, we need only the correct entry point of documentation or workshops, to direct our project developers to the right way.
All information I found about higher integration was only for Web Dynpro - and therefore for JCo client integration. But this is not our scenario.
thanks a lot in advance for your replies,
reiner leibig

You might benefit by reading the JCO pdf delivered with the jco download from sapservice.com....(free)....
Usually it is easier to define the structure and the function interface as an SAP function even if there is no body (abap to java). This means that the JCO will read correctly all the metainformation about the function. You then call the function as an RFC specifying the host...
Have fun...
In your case I would read carefully the example (getting the company code info etc...)
It shows how to manipulate the table returned by ABAP...

Similar Messages

  • Access/set dynamic configuration in client/server abap proxy

    Hi,
    I have 2 question regarding reading/setting dynamic configuration in ABAP proxies:
    1) Is it possible to set dynamic configuration objects in a server abap proxy (SAP --> XI)?
    When looking at the class CL_PROXY_FRAMEWORK is looks as if it is possible. This class has en attribute IF_XMS_MAIN~DY which is a reference to the class CL_XMS_MSGHDR30_DYNAMIC.
    I'm not sure if I'm supposed to try and access the dynamic configuration objects via this class or if I'm supposed to use the GET_PROTOCOL method in some manner as suggested by:
    http://help.sap.com/saphelp_nw04s/helpdata/en/51/d5cd16235e4643ae8ec92395c4ad97/frameset.htm
    Above link is for client proxies not server, and I've been unable to find any documentation on this for server proxies.
    2) The same question goes for server proxies (XI --> SAP), though now I would like to set some dynamic configuration data.
    This I believe should be done using get_protocol( if_wsprotocol=>ws_header ) as indicated by before mentioned link.
    However in both cases I'm not sure of if it is indeed possible and which road to choose for sure. So a hint or 2 would be really nice.
    Best Regards,
    Daniel
    ps. maybe I should just mention that I am pretty new to the ABAP world, so bear with me.

    The link that you gave does give you an example for both server and client proxies:
    Accessing Protocol Classes for Client Proxies
    In client proxies, you access the protocol class by using the GET_PROTOCOL method. Below is an example for the IF_WSPROTOCOL_PAYLOAD protocol:
    DATA:
    lo_clientProxy      TYPE REF TO co_clientProxy,
    lo_payload_protocol TYPE REF TO if_wsprotocol_payload
    lo_payload          TYPE REF TO if_ws_payload.
    CREATE OBJECT lo_clientProxy.
    Get Protocol Class Using Method GET_PROTOCOL
    lo_payload_protocol ?=
           lo_clientProxy->get_protocol( if_wsprotocol=>payload ).
    CALL METHOD lo_clientProxy->execute_synchronous
                EXPORTING output  = ls_request
                IMPORTING input   = ls_response.
    Use Protocol Methods
    lo_payload = lo_payload->get_sent_request_payload( ).
    Accessing Protocol Classes for Server Proxies (XI Only)
    Within the implementation of a server proxy, you get the protocol class by using the CL_PROXY_ACCESS=>GET_SERVER_CONTEXT( ) method:
    DATA:  lo_server_context   TYPE REF TO if_ws_server_context,
           lo_payload_protocol TYPE REF TO if_wsprotocol_payload.
    lo_server_context   = cl_proxy_access=>get_server_context( ).
    lo_payload_protocol =
         lo_server_context->get_protocol( if_wsprotocol=>payload ).

  • ABAP process hangs when calling a jCO Server J2EE-available RFC

    Hi there
    Here's the scenario:
    We have deployed a jCO server under the SAP WAS. This jCO server implements two functions. They are both called from ABAP process through RFC. We are using the same RFC destination for both
    First function is defined with import/export parameters and the second one only operates with a TABLE parameter.
    Incidentally, these functions are captured by the jCO server, which calls an IBM MQ server
    First function works fine. Second function hangs and there is not even a timeout so the ABAP process (run on foreground) can stay forever.
    The interesting part is that the same application works really fine when called from a Tomcat using a standalon instance of the jCO.
    Additional info:
    We have noticed that some time after the second function gets called, there are five dumps on the system (the same amount of servers we make available). These are CALL_FUNCTION_SIGNON_REJECTED.
    The fun part of the dumps is that the user making the RFC call is a different user that the one we use for the jCO connection, and the client number is '000', instead of the '728' we are using for the connection. Somehow they seem related but we do not know how yet:
    Short text
        You are not authorized to logon to the target system (error code 1).
    What happened?
        Error in the ABAP Application Program
        The current ABAP program "SAPMSSY1" had to be terminated because it has
        come across a statement that unfortunately cannot be executed.
    Error analysis
        RFC (Remote Function Call) sent with invalid
        user ID "%_LOG01% " or client 000.
        User "ARINSO " under client 001 from system "SMD " has tried to carry out an
         RFC
        call under the user ID "%_LOG01% " and client 000 (Note: For releases < 4.0,
         the
         information on caller and caller system do not exist.).
    Call Program........."SAPLSMSY_ACTUALIZE_DATA"
    Function Module..... "SCSM_SYSTEM_LIST"
    Call Destination.... "SM_ET7CLNT000_READ"
    Source Server....... "sapwasmd_SMD_10"
    Source IP Address... "172.17.82.80"
    Termination occurred in the ABAP program "SAPMSSY1" - in
         "REMOTE_FUNCTION_CALL".
        The main program was "SAPMSSY1 ".
        In the source code you have the termination point in line 67
        of the (Include) program "SAPMSSY1".
    Any tip or suggestion on where to look at is more than welcome
    Thanks in advance,
    Miguel

    And this is the content of the defaultTrace.0.trc log from the WAS
    1.#005056AB04C500440000000200002B0000046B495CA1AF67#1243862737727#com.sap.caf.um.relgrou
    ps.imp.principals.RelGroupFactory##com.sap.caf.um.relgroups.imp.principals.RelGroupFactor
    y.RelGroupFactory()#######SAPEngine_System_Thread[impl:5]_13##0#0#Info#1#/System/Server#P
    lain###sap.com caf/um/relgroups/imp MAIN_NW701P03_C 2846629#
    #1.#005056AB04C500240000000100002B0000046B495CCDAAFB#1243862740608#com.sap.engine.library
    .monitor.mapping.ccms.Trace##com.sap.engine.library.monitor.mapping.ccms.Trace####n/a##b3
    89a8004eaf11dec9b7005056ab04c5#SAPEngine_System_Thread[impl:5]_39##0#0#Error##Plain###Reg
    isterNode</Kernel/System Threads Pool/WaitingTasksCount>: com.sap.engine.library.monitor.
    mapping.ccms.CcmsConnectorException: 2100850: Invalid configuration group for node'/Kerne
    l/System Threads Pool/WaitingTasksCount' (MANAGERS.SThreadPool.WaitingInRequestQueueCount
    , max. 40 characters)#
    #1.#005056AB04C500240000000200002B0000046B495CCDB4CC#1243862740612#com.sap.engine.library
    .monitor.mapping.ccms.Trace##com.sap.engine.library.monitor.mapping.ccms.Trace####n/a##b3
    89a8004eaf11dec9b7005056ab04c5#SAPEngine_System_Thread[impl:5]_39##0#0#Error##Plain###Reg
    isterNode</Kernel/System Threads Pool/WaitingTasksQueueOverflow>: com.sap.engine.library.
    monitor.mapping.ccms.CcmsConnectorException: 2100850: Invalid configuration group for nod
    e'/Kernel/System Threads Pool/WaitingTasksQueueOverflow' (MANAGERS.SThreadPool.Waiting4Fr
    eeReqQueueSlotCount, max. 40 characters)#
    #1.#005056AB04C500240000000300002B0000046B495CCDCDA1#1243862740618#com.sap.engine.library
    .monitor.mapping.ccms.Trace##com.sap.engine.library.monitor.mapping.ccms.Trace####n/a##b3
    89a8004eaf11dec9b7005056ab04c5#SAPEngine_System_Thread[impl:5]_39##0#0#Error##Plain###Reg
    isterNode</Kernel/Application Threads Pool/WaitingTasksCount>: com.sap.engine.library.mon
    itor.mapping.ccms.CcmsConnectorException: 2100850: Invalid configuration group for node'/
    Kernel/Application Threads Pool/WaitingTasksCount' (MANAGERS.AThreadPool.WaitingInRequest
    QueueCount, max. 40 characters)#
    #1.#005056AB04C500240000000400002B0000046B495CCDD69B#1243862740620#com.sap.engine.library
    .monitor.mapping.ccms.Trace##com.sap.engine.library.monitor.mapping.ccms.Trace####n/a##b3
    89a8004eaf11dec9b7005056ab04c5#SAPEngine_System_Thread[impl:5]_39##0#0#Error##Plain###Reg
    isterNode</Kernel/Application Threads Pool/WaitingTasksQueueOverflow>: com.sap.engine.lib
    rary.monitor.mapping.ccms.CcmsConnectorException: 2100850: Invalid configuration group fo
    r node'/Kernel/Application Threads Pool/WaitingTasksQueueOverflow' (MANAGERS.AThreadPool.
    Waiting4FreeReqQueueSlotCount, max. 40 characters)#
    #1.#005056AB04C500600000001600002B0000046B4960688301#1243862801089#com.sap.slm.exec.messa
    ge.SLMApplication#sap.com/tcslmslmapp#com.sap.slm.exec.message.SLMApplication#Guest#0##
    n/a##c59827604eaf11de9fb3005056ab04c5#SAPEngine_Application_Thread[impl:3]_0##0#0#Error##
    Java###null##
    #1.#005056AB04C500730000000000002B0000046B4CF0593ABD#1243878100908#System.err#arinso.com/
    valtran_validator#System.err#Guest#0##ET7#MIGUELGU                        #4A240FF606CD5E
    5AE10000000A38418C#Thread[JCO.ServerThread-11,5,SAPEngine_Application_Thread[impl:3]_Grou
    p]##0#0#Error##Plain###com.sap.mw.jco.JCO$AbapException: (126) 1: Array index out of rang
    e: 48#
    #1.#005056AB04C500730000000100002B0000046B4CF0594028#1243878100909#System.err#arinso.com/
    valtran_validator#System.err#Guest#0##ET7#MIGUELGU                        #4A240FF606CD5E
    5AE10000000A38418C#Thread[JCO.ServerThread-11,5,SAPEngine_Application_Thread[impl:3]_Grou
    p]##0#0#Error##Plain### at com.efh.jco.valtran.sap.ValtranRequestHandler.serverExceptionO
    ccurred(ValtranRequestHandler.java:164)#
    #1.#005056AB04C500730000000200002B0000046B4CF059406B#1243878100910#System.err#arinso.com/
    valtran_validator#System.err#Guest#0##ET7#MIGUELGU                        #4A240FF606CD5E
    5AE10000000A38418C#Thread[JCO.ServerThread-11,5,SAPEngine_Application_Thread[impl:3]_Grou
    p]##0#0#Error##Plain### at com.sap.mw.jco.JCO.fireServerExceptionOccurred(JCO.java:880)#
    #1.#005056AB04C500730000000300002B0000046B4CF05940A3#1243878100910#System.err#arinso.com/
    valtran_validator#System.err#Guest#0##ET7#MIGUELGU                        #4A240FF606CD5E
    5AE10000000A38418C#Thread[JCO.ServerThread-11,5,SAPEngine_Application_Thread[impl:3]_Grou
    p]##0#0#Error##Plain### at com.sap.mw.jco.JCO$Server.listen(JCO.java:8187)#
    #1.#005056AB04C500730000000400002B0000046B4CF05940DB#1243878100910#System.err#arinso.com/
    valtran_validator#System.err#Guest#0##ET7#MIGUELGU                        #4A240FF606CD5E
    5AE10000000A38418C#Thread[JCO.ServerThread-11,5,SAPEngine_Application_Thread[impl:3]_Grou
    p]##0#0#Error##Plain### at com.sap.mw.jco.JCO$Server.work(JCO.java:8303)#
    #1.#005056AB04C500730000000500002B0000046B4CF0594111#1243878100910#System.err#arinso.com/
    valtran_validator#System.err#Guest#0##ET7#MIGUELGU                        #4A240FF606CD5E
    5AE10000000A38418C#Thread[JCO.ServerThread-11,5,SAPEngine_Application_Thread[impl:3]_Grou
    p]##0#0#Error##Plain### at com.sap.mw.jco.JCO$Server.loop(JCO.java:8250)#
    #1.#005056AB04C500730000000600002B0000046B4CF0594143#1243878100910#System.err#arinso.com/
    valtran_validator#System.err#Guest#0##ET7#MIGUELGU                        #4A240FF606CD5E
    5AE10000000A38418C#Thread[JCO.ServerThread-11,5,SAPEngine_Application_Thread[impl:3]_Grou
    p]##0#0#Error##Plain### at com.sap.mw.jco.JCO$Server.run(JCO.java:8166)#
    #1.#005056AB04C500730000000700002B0000046B4CF05941F0#1243878100910#System.err#arinso.com/
    valtran_validator#System.err#Guest#0##ET7#MIGUELGU                        #4A240FF606CD5E
    5AE10000000A38418C#Thread[JCO.ServerThread-11,5,SAPEngine_Application_Thread[impl:3]_Grou
    p]##0#0#Error##Plain### at java.lang.Thread.run(Thread.java:770)#

  • Problem accessing frontend for Trial:SAP NetWeaver Application Server ABAP 7.4 on SAP MaxDB

    Hi all,
    had to set up short timed a trial instance of SAP NetWeaver Application Server ABAP 7.4 on SAP MaxDB in Amazon Cloud
    Installtion was pretty straightforward but now if have the problem of accessing the frontend via RDP.
    Connecting via ssh works fine but when it comes to rdp it just says something like "rdp not activated or computer not reachable or down". Ping is also not working.
    The instance is created as public.
    Tried to reach it from my corporate network (ports opened), from home, from mobile broadband. Same result, ssh working, rdp not.
    Any ideas?
    thanks
    Ferdinand

    Hi Ferdinand,
    not every appliance in CAL comes with an Windows system that has the UI tools preinstalled. The system you are currently using comes with a Linux server only on which the NetWeaver ABAP and the MaxDB run. Here are a few hints which help to understand if RDP is available:
    1) take a look at the default "Access Point" configuration. If Port 3389 (RDP) is not opened by default, then there is probably no RDP available
    2) take a look at the number of virtual machines (instances) the solution details. If there is only one VM listed, it is the one with the server components (very likely not Windows).
    3) Check if the connect button on the "INSTANCES" screen lists RDP (the connect button becomes visible after the solution has been started). If there is no option for RDP, then it is not available.
    In a nutshell, for this particular solutions there is no Windows RDP available. Nevertheless, the user guides explains how to fetch and install SAPGUI to your client machine so that you are able to connect to the system.
    Thanks and Regards,
      Hannes
    Best Regards / Freundliche Grüße / 敬具 / 此致敬礼 / Поздрави
    Hannes Kuehnemund | Product Owner - SAP Cloud Appliance Library
    Vote in our latest poll here: http://cal.sap.com - Information on Instance Popup

  • Scenario SAP R/3 --(RFC)-- XI--(RFC)-- JCo.Server

    Hello,
    I am wondering if anyone can send me some feeback for such scenario. SAP R/3 version is 4.6c, SAP XI is 3.0 and JCo are 2.0.12.
    I am having some trouble which I think are link to the fact that the SAP XI is Unicode and not the JCo.Server ... However I was thinking SAP XI will adapt, since it works well for scenario SAP R/3 (RFC)> XI (RFC)> SAP R/3.
    Thanks for your feeback.

    Hi Grégory,
    I guess I faced a similar problem,  the problem was that in the receiver RFC adapter you have to specify both an RFC target system and a system to lookup the metadata.
    The target RFC system hat to have the same unicodeness of the metadata lookup system that means in your case that if jco server is non unicode also you R3 has to be non unicode otherwhise it will not (never) work, because this is a mandatory requirement of the RFC adapter.
    In my case this was not possible so I was redirecting the RFC call to the ABAP stack of XI (where I had exposed the same function module which was simply recalling the same function module to the target system) and it worked/works.
    Regards,
    Sergio

  • Creating Repository for JCO Server

    Hi all,
    I have seen examples that we have to build the repository manually in the jco server codes .
    e.g.
    MetaData fmeta = new JCO.MetaData("STFC_CONNECTION");
            fmeta.addInfo("REQUTEXT", JCO.TYPE_CHAR, 255, 0, 0, JCO.IMPORT_PARAMETER, null);
            fmeta.addInfo("ECHOTEXT", JCO.TYPE_CHAR, 255, 0, 0, JCO.EXPORT_PARAMETER, null);
            fmeta.addInfo("RESPTEXT", JCO.TYPE_CHAR, 255, 0, 0, JCO.EXPORT_PARAMETER, null);
            repository.addFunctionInterfaceToCache(fmeta);
    I would like to know is there anyway to access the structures of from SAP to build the repository in my jco server ? Such that i do not need to define this manually.
    Deeply appreciate any help.
    Thank you.

    Seems like there are examples provided in JCO 2.x and JCo 3.x zip package.

  • How to deploy a JCO Server????

    Hello Experts!
    I have written a JCO Server by using the Netweaver Developer Studio. Now I want to deploy this JCO Server on our SAP XI Server. The aim of this should be to create a connection between ABAP and JAVA to send data from JAVA to ABAP.
    The RFC connection already exists and is working. What I don't know is how to deploy my JCO Server and how to start this JCO Server from our XI Server. I hope anybody could help me.
    Thanks in advance!!!
    Greetings Alexander
    Here is the source code of my JCO Server:
    public class JCOServer implements JCO.ServerExceptionListener, JCO.ServerStateChangedListener {
      static public class Repository extends JCO.BasicRepository implements IRepository {
        public Repository(String name)
          super(name);
      protected static IRepository repository;
      static {
        repository = new Repository("TestRepository");
        JCO.MetaData fmeta = new JCO.MetaData("ZEJB_TEST_ZUGRIFF");
        fmeta.addInfo("REQUTEXT", JCO.TYPE_CHAR, 255,   0,  0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("ECHOTEXT", JCO.TYPE_CHAR, 255,   0,  0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("RESPTEXT", JCO.TYPE_CHAR, 255,   0,  0, JCO.EXPORT_PARAMETER, null);
        repository.addFunctionInterfaceToCache(fmeta);
      static public class Server extends JCO.Server {
        public Server(String gwhost, String gwserv, String progid, boolean isUnicode, IRepository repository)
          super(gwhost,gwserv,progid,repository);
           this.setProperty("jco.server.unicode", isUnicode?"1":"0");
        protected void handleRequest(JCO.Function function)
          JCO.ParameterList input  = function.getImportParameterList();
          JCO.ParameterList output = function.getExportParameterList();
          JCO.ParameterList tables = function.getTableParameterList();
          System.out.println("handleRequest(" + function.getName() + ")");
          System.out.println("Anfrage vom SAP-Server: " + input.getString("REQUTEXT"));
          if (function.getName().equals("ZEJB_TEST_ZUGRIFF")) {
            output.setValue(input.getString("REQUTEXT"),"ECHOTEXT");
            output.setValue("Das ist eine Antwort von JCOServer","RESPTEXT");
       JCO.Server srv[] = new JCO.Server[1];
      public JCOServer()
         JCO.addServerExceptionListener(this);
         JCO.addServerStateChangedListener(this);
      public void startServers()
        srv[0] = new Server("vxi1","sapgw00","BEAN",true,repository);
        for (int i = 0; i < srv.length; i++) {
    try {
    srv.setTrace(true);
    srv.start();
    catch (Exception ex) {
    System.out.println("Konnte Server nicht starten: " + srv.getProgID() + ":
    " + ex);
          }//try
        }//for
      public void serverExceptionOccurred(JCO.Server server, Exception ex)
        System.out.println("Ausnahme in Server " + server.getProgID() + ":
    " + ex);
        ex.printStackTrace();
      public void serverStateChangeOccurred(JCO.Server server, int old_state, int new_state)
        System.out.print("Server " + server.getProgID() + " hat den Status geändert von [");
        if ((old_state & JCO.STATE_STOPPED    ) != 0) System.out.print(" GESTOPPT ");
        if ((old_state & JCO.STATE_STARTED    ) != 0) System.out.print(" GESTARTED ");
        if ((old_state & JCO.STATE_LISTENING  ) != 0) System.out.print(" HORCHEN ");
        if ((old_state & JCO.STATE_TRANSACTION) != 0) System.out.print(" TRANSAKTION ");
        if ((old_state & JCO.STATE_BUSY       ) != 0) System.out.print(" BESCHÄFTIGT ");
        System.out.print("] nach [");
        if ((new_state & JCO.STATE_STOPPED    ) != 0) System.out.print(" GESTOPPT ");
        if ((new_state & JCO.STATE_STARTED    ) != 0) System.out.print(" GESTARTED ");
        if ((new_state & JCO.STATE_LISTENING  ) != 0) System.out.print(" HORCHEN ");
        if ((new_state & JCO.STATE_TRANSACTION) != 0) System.out.print(" TRANSAKTION ");
        if ((new_state & JCO.STATE_BUSY       ) != 0) System.out.print(" BESCHÄFTIGT ");
        System.out.println("]");
      public static void main(String[] argv)
        JCOServer obj = new JCOServer();
        obj.startServers();

    Hello Alexander,
    congratulations to the invention of the wheel....
    Now, what do you think is the function of the application server itself? what you do here is to put a shell around JCO and then try to run it from another shell. Why not just use it from your program?
    I recommend to do some of the examples with JCO and then see what  the difference on this is.
    Regards,
    Benny

  • JCO - RFC_ERROR_SYSTEM_FAILURE: com/sap/mw/jco/JCO$Server

    Hi,
    I call from Java an ABAP RFC and this RFC in turn call back the Java stack and it fails.
    At Java side I get:
    #1#com.sap.mw.jco.JCO$Exception: (104) RFC_ERROR_SYSTEM_FAILURE: com/sap/mw/jco/JCO$Server
         at com.sap.mw.jco.MiddlewareJRfc.generateJCoException(MiddlewareJRfc.java:516)
         at com.sap.mw.jco.MiddlewareJRfc$Client.execute(MiddlewareJRfc.java:1515)
         at com.sap.mw.jco.JCO$Client.execute(JCO.java:3996)
         at com.sap.mw.jco.JCO$Client.execute(JCO.java:3544)
         at com.sap.sup.admin.setup.SolManRfcAdapter.getJabapLandscape(SolManRfcAdapter.java:787)
         at com.sap.sup.admin.setup.SetupUpgrader.execute(SetupUpgrader.java:52)
    At ABAP side I get:
    Category               ABAP Programming Error
    Runtime Errors      CALL_FUNCTION_REMOTE_ERROR
    ABAP Program      CL_DIAGLS_SMSY_FACTORY========CP
    Application Component  SV-SMG-DIA
    Date and Time        21.09.2009 17:50:59
    Short text
         "com/sap/mw/jco/JCO$Server"
    Is it allowed to call JAVA -> ABAP -> JAVA from JCO point of view?
    Thanks in advance!
    Regards,
    Serge.

    Hi Serge,
    Two doubts:
    - Does your RFC work when you call it directly from the SE37 puting the same input parameters used by Java application?
    - Was the RFC changed after the coding of Java application? If so, the interface between Java and RFC must be regenerated.
    Regards,
    Rodrigo.

  • RFC call failed: JCO.Server could not find server function 'SET_SLD_DATA'

    Hi, All
    the system is PI 7.0 EHP1 oraclei Win2003 server, I configured SLD but I run RZ70, having error "RFC call failed: JCO.Server could not find server function 'SET_SLD_DATA' ". I know there are lot of tread about this error, but none of themsolve my problem. all JCO, RFC connections and SDL DATA supplier(VA) seem OK. error message in SM21 is "Could not send SLD data"
    detail from SM21
    The system could not send the data that has been collected automatical
    for the System Landscape Directory (SLD). Check whether the gateway
    configured in transaction RZ70 has been started and whether the SLD
    bridge has been registered with this gateway.
    You can use transaction SM59 to check this in the sending system for t
    implemented RFC destinations. The RFC destinations have the standard
    names "SLD_UC" for Unicode sending systems and "SLD_NUC" for non-Unico
    sending systems. If a different RFC destination has been entered in
    RZ70, check this destination instead.
    You can use the Gateway Monitor to check the target gateways. In ABAP
    systems, this monitor is started with transaction SMGW, or you can use
    the external SAP program "gwmon". Check whether the specified gateway
    has an active registration.
    OF COURSE I checked  RFC of  SLD_UC and SMGW
    any different ideas
    Regards
    ABH

    Hi
    Please check the following notes are implemented
    Note 906454                           
    Note 907729
    You may be aware but if you are not --->RZ70 creates the required SLD* RFCs during runtime - therefore if you have defined these RFCs manually first using the same namespace you can get RFC conflicts which result in a failed submission    
    Please also check the user in the RFC is known to both systems and has required authorization to write to SLD
    Generally with SLD you have to install or select a suitable gateway to handle incoming data supply traffic
    Also the gateway you are using has be known to SLD and reflected in RZ70 - i.e these defintions have to be the same
    It is also recommended to delete all references to SLD_* RFCs in data supplier and target SLD
    after a failed submission attempt to allow RZ70 to recreate these consistently once the above has been checked
    Best wishes
    Stuart

  • "jco.server.unicode" is gone in JCO 3.0.5??!!

    Recently  we have migrated from   JCO 2.1.8  to  3.0.5.   Currently we are witnessing some problems with communications from non-Unicode Sap systems.
    In the previous version  (JCO 2.1.8)  JCoIDoc.Server had a property "jco.server.unicode"  in the latter one the property  is gone.
    AS far as I  understand, JCo3 Server based on the data sent form a client recognizes encoding and applies proper conversion. However when we try to establish a non-Unicode connection ( from a Unicode enabled system),  through setting In the SM59 transaction (tab MDMP & Unicode) u201ECommunication Type with Target Systemu201D  to Non-Unicode, we are getting  the following error :
    com.sap.conn.idoc.IDocMetaDataUnavailableException: (3) IDOC_ERROR_METADATA_UNAVAILABLE: The meta data for the IDoc type "??????????????????
    ????????å å" with extension "     SAPCFL CF5CL          ???" is unavailable.
            at com.sap.conn.idoc.rt.DefaultIDocDocument.(JCoIDocDocument.java:92)
            at com.sap.conn.idoc.jco.rt.JCoIDocDocument.createIDocDocument(JCoIDocDocument.java:170)
            at com.sap.conn.idoc.jco.rt.JCoIDocRuntime.createIDocDocumentList(JCoIDocRuntime.java:80)
            at com.sap.conn.idoc.jco.JCoIDoc$DefaultJCoIDocRuntime.createIDocDocumentList(JCoIDoc.java:144)
            at com.sap.conn.idoc.jco.rt.DefaultJCoIDocServerWorker$IDocDispatcher.handleRequest(DefaultJCoIDocServerWorker.java:107)
            at com.sap.conn.jco.rt.DefaultServerWorker.dispatchRequest(DefaultServerWorker.java:153)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.dispatchRequest(MiddlewareJavaRfc.java:3300)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.executePlayback(MiddlewareJavaRfc.java:2780)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.playbackTRfc(MiddlewareJavaRfc.java:2598)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.handletRfcRequest(MiddlewareJavaRfc.java:2489)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.listen(MiddlewareJavaRfc.java:2310)
            at com.sap.conn.jco.rt.DefaultServerWorker.dispatch(DefaultServerWorker.java:277)
            at com.sap.conn.jco.rt.DefaultServerWorker.loop(DefaultServerWorker.java:337)
            at com.sap.conn.jco.rt.DefaultServerWorker.run(DefaultServerWorker.java:238)
            at java.lang.Thread.run(Thread.java:619)
    11:15:20,062 ERROR   Sap server details
    Class: com.syncron.bpe.engine.extinterface.sap.idoc.SapIDocServer
    Program id: GIM
    Thread name: JCoServerThread-1
    Registered (at gateway) connection count: 5
    Max thread count: 1
    Exception occured
    com.sap.conn.jco.JCoException: (104) RFC_ERROR_SYSTEM_FAILURE: IDocException occurred (raised by system karbie-nc6400|a_rfc)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc.generateJCoException(MiddlewareJavaRfc.java:639)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.listen(MiddlewareJavaRfc.java:2395)
            at com.sap.conn.jco.rt.DefaultServerWorker.dispatch(DefaultServerWorker.java:277)
            at com.sap.conn.jco.rt.DefaultServerWorker.loop(DefaultServerWorker.java:337)
            at com.sap.conn.jco.rt.DefaultServerWorker.run(DefaultServerWorker.java:238)
            at java.lang.Thread.run(Thread.java:619)
    Caused by: RfcException: karbie-nc6400
        message: IDocException occurred
        Return code: RFC_FAILURE(1)
        error group: 104
        key: RFC_ERROR_SYSTEM_FAILURE
    Exception raised by karbie-nc6400|a_rfc
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.executePlayback(MiddlewareJavaRfc.java:2785)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.playbackTRfc(MiddlewareJavaRfc.java:2598)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.handletRfcRequest(MiddlewareJavaRfc.java:2489)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.listen(MiddlewareJavaRfc.java:2310)
            ... 4 more
    Caused by: RfcException: karbie-nc6400
        message: IDocException occurred
        Return code: RFC_FAILURE(1)
        error group: 104
        key: RFC_ERROR_SYSTEM_FAILURE
    Exception raised by karbie-nc6400|a_rfc
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.dispatchRequest(MiddlewareJavaRfc.java:3329)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.executePlayback(MiddlewareJavaRfc.java:2780)
            ... 7 more
    Caused by: com.sap.conn.idoc.IDocRuntimeException: IDocException occurred
            at com.sap.conn.idoc.jco.rt.DefaultJCoIDocServerWorker$IDocDispatcher.handleRequest(DefaultJCoIDocServerWorker.java:151)
            at com.sap.conn.jco.rt.DefaultServerWorker.dispatchRequest(DefaultServerWorker.java:153)
            at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.dispatchRequest(MiddlewareJavaRfc.java:3300)
            ... 8 more
    Caused by: com.sap.conn.idoc.IDocMetaDataUnavailableException: (3) IDOC_ERROR_METADATA_UNAVAILABLE: The meta data for the IDoc type "???????
    ???????????????????å å" with extension "     SAPCFL CF5CL          ???" is unavailable.
            at com.sap.conn.idoc.rt.DefaultIDocDocument.(JCoIDocDocument.java:92)
            at com.sap.conn.idoc.jco.rt.JCoIDocDocument.createIDocDocument(JCoIDocDocument.java:170)
            at com.sap.conn.idoc.jco.rt.JCoIDocRuntime.createIDocDocumentList(JCoIDocRuntime.java:80)
            at com.sap.conn.idoc.jco.JCoIDoc$DefaultJCoIDocRuntime.createIDocDocumentList(JCoIDoc.java:144)
            at com.sap.conn.idoc.jco.rt.DefaultJCoIDocServerWorker$IDocDispatcher.handleRequest(DefaultJCoIDocServerWorker.java:107)
            ... 10 more
    With JCO 2.1.8  we used to solve it through setting the mentioned "jco.server.unicode"   to 1, in the  current one it seems that there is not much to configure regarding encoding.
    Please advice.

    In unicode ABAP backend systems you always have to set the destination in SM59 to "Unicode" if the communication partner is JCo. There is no choice for setting the Non-Unicode option. It won't work.
    JCo3 does not require a manual setting of the "jco.server.unicode" property any longer. Therefore the property has been deleted. In JCo3 you don't have to take care for this anymore.

  • JCo server programming, properties and connection settings

    Greetings, SAP professionals.
    The reason I come to this forum is that I'm hoping to gain some insights into the use of the SAP Java Connector (JCo). I am a developer who was tasked with making a new component for a systems integration application. As is typical of integration software, our app can link together various different systems using a variety of protocols, as well as providing the means to apply business logic on messages passed from one location to another. We already have a connector acting as an SAP client which was implemented using JCo. Now, we were asked to develop a new component: a server capable of accepting RFCs from a remote SAP system acting as client. The server is to be created using the JCo classes, so basically an extension of JCo.Server, with some logic for creating function templates from configuration files.
    However, while I'm understanding the structure of the Java API, it's not entirely clear to me just what the classes do. I've found the JavaDoc for JCo to be mostly descriptive of the interface of classes and methods, but not really explaining what these achieve, or how. So I'm hoping to be set straight, as I fear I'm kind of misunderstanding the functionality of JCo... Being mainly an integrations developer, I unfortunately often have to settle for gaining a superficial knowledge of a variety of systems to quickly interface with them, so I don't have any prior knowledge of SAP but still need to be able to implement something with JCo without too much delay.
    The most important question I have is this: when a JCO.Server implementation is started, does it act as a fully standalone component capable of receiving calls, or does it merely act as a sort of listener for some main SAP system? I'm not talking about a reliability on the two .dll files (or .so for Linux) that are required for the use of JCo, I just wish to know if the JCo package is entirely self-sufficient for server functionality or if it is intended to be linked to some SAP system.
    A second problem I have is that the parameters passed to various constructors aren't clear to me... I'm not familiar with SAP terminology, nor have I worked with any client apps that make use of an SAP system.
    The meaning of client strings, gwhost, gwservice, ashost, system IDs and program IDs mostly elude me, especially when it comes to knowing what client parameters must match what server parameters.
    In order to familiarize myself with the classes, I've tried playing around with them a bit trying to create a small test app that first starts a JCO.Server instance, then tries to make a remote function call to it with a JCO.Client (within the same class, for simplicity and debugging purposes). I was wondering if this actually makes sense... Would a JCo client be capable of connecting to a JCo server, all running purely in Java, or is that nonsense?
    To eliminate some common troubleshooting options, I'll quicly describe the steps I've taken:
    Both librfc32.dll and sapjcorfc.dll were placed in the Windows system32 folder. Maybe only librfd32 needs to be placed there, but I copied both anyway to make sure.
    The directory containing the jar file and both dll files is included in my environment path variable.
    I've added a line to the C:\Windows\system32\drivers\etc\services file as follows:
    sapgw00          3300/tcp                           #SAP System Gateway Port
    I've opened port 3300 in my Windows firewall. In fact, I also tested with the firewall completely turned off.
    However, I do not manage to get my test class to work. I've tried ports 3300, 3200 and 3600. I've tried various permutations of the client and server properties. I've tried removing the line from the services file, which would prompt the client to state upon connecting that the service "sapgw00" is unknown. When I add it back in, the error changes to "partner not reached", so it is definitely picking something up.
    The server itself starts just fine, but connecting through a client doesn't work. My class source code is posted below. Maybe what I'm trying to do doesn't make any sense, but at the moment it's my best guess.
    I realize this is a pretty long post and the class, while not exactly big, also implies a bit of reading of its own. But if anyone could give me any answers that are new to me, I'd be hugely grateful. Right now I'm kind of stuck, and just setting up the service and letting our customer test on it is a somewhat slow approach that can't match developing and testing on one and the same host.
    Preliminary thanks to everyone who took the effort to read this.
    //Start of code
    import java.util.Properties;
    import com.sap.mw.jco.IFunctionTemplate;
    import com.sap.mw.jco.IMetaData;
    import com.sap.mw.jco.IRepository;
    import com.sap.mw.jco.JCO;
    public class Test {
         public static void main(String[] args) {
              Test test = new Test();
              ServerThread serverThread = test.new ServerThread();
              serverThread.start();
              while(!serverThread.isReady) {
                   try {
                        Thread.sleep(5000);
                   } catch(final InterruptedException i) {
                        System.out.println("Rudely awakened");
              try {
    //               JCO.Function func = getSampleFunction(test, "STAY");
    //               serverThread.server.handleRequest(func);
    //               System.out.println(func.getExportParameterList().toXML());
    //               func = getSampleFunction(test, "STOP");
    //               serverThread.server.handleRequest(func);
    //               System.out.println(func.getExportParameterList().toXML());
                   final Properties clientProps = getClientProps();
                   JCO.Client client = JCO.createClient(clientProps);
                   client.connect();
                   IRepository rep = JCO.createRepository("1", client);
                   IFunctionTemplate templ = rep.getFunctionTemplate("TEST_FUNC");
                   JCO.Function function = templ.getFunction();
                   function.getImportParameterList().setValue("STAY", "FIELD1");
                   client.execute(function);
                   JCO.Function function2 = templ.getFunction();
                   function2.getImportParameterList().setValue("STOP", "FIELD1");
                   client.execute(function2);
              } catch(final Exception e) {
                   e.printStackTrace(System.out);
                   serverThread.requestStop();
                   while(serverThread.isAlive) {
                        try {
                             Thread.sleep(5000);
                        } catch(final InterruptedException i) {
                             System.out.println("Rudely awakened");
              } finally {
         private static Properties getClientProps() {
              final Properties props = new Properties();
              props.setProperty("jco.client.client", "100");
              props.setProperty("jco.client.user", "");
              props.setProperty("jco.client.passwd", "");
              props.setProperty("jco.client.lang", "");
              props.setProperty("jco.client.sysnr", "00");
              props.setProperty("jco.client.ashost", "/H/localhost/S/sapgw00");
              props.setProperty("jco.client.gwhost", "localhost");
              props.setProperty("jco.client.gwserv", "sapgw00");
              return props;
         public class ServerThread extends Thread {
              public void run() {
                   isAlive = true;
                   IRepository repos = new TestRepository("testrep");
                   repos.addFunctionInterfaceToCache(getFunctionInterface());
                   server = new TestServer(repos);
                   server.start();
                   System.out.println("Server successfully started");
                   isReady = true;
                   while(!stop) {
                        try {
                             Thread.sleep(1000);
                        } catch(final InterruptedException i) {
                             System.out.println("Wouldn't let me sleep...");
                        stop = server.stopRequested;
                   server.stop();
                   isAlive = false;
                   System.out.println("Server successfully stopped");
              public void requestStop() {
                   server.requestStop();
              public TestServer server;
              public boolean isReady = false;
              public boolean isAlive = false;
         public class TestServer extends JCO.Server {
              public TestServer(IRepository rep) {
                   super("localhost", "sapgw00", "PROGID", rep);
              public void handleRequest(JCO.Function fct) {
                   try {
                        JCO.ParameterList importParams = fct.getImportParameterList();
                        final String importXML = importParams.toXML();
                        System.out.println("XML representation of import parameters: ");
                        System.out.println(importXML);
                        final String input = importParams.getString("FIELD1");
                        System.out.println("FIELD1 value: " + input);
                        JCO.ParameterList exportParams = fct.getExportParameterList();
                        if(input.equals("STOP")) {
                             exportParams.getField("FIELD2").setValue("OK");
                             stopRequested = true;
                   catch(JCO.AbapException ex) {
                        throw ex;
                   catch(Throwable t) {
                        throw new JCO.AbapException("SYSTEM_FAILURE", t.getMessage());
              public boolean checkAuthorization(String functionName, int authorMode, String partner, byte[] key) {
                   System.out.println(functionName + " " + partner);
                   return true;
              public void requestStop() {
                   stopRequested = true;
              public boolean stopRequested = false;
         public class TestRepository extends JCO.BasicRepository implements IRepository {
              public TestRepository(String name) {
                   super(name);
         public static IMetaData getFunctionInterface() {
              JCO.MetaData metaData = new JCO.MetaData("TEST_FUNC");
              metaData.addInfo("FIELD1", IMetaData.TYPE_STRING, 4);
              metaData.setFlags(0, IMetaData.IMPORT_PARAMETER);
              metaData.addInfo("FIELDX", IMetaData.TYPE_STRING, 8);
              metaData.setFlags(1, IMetaData.IMPORT_PARAMETER & IMetaData.OPTIONAL_PARAMETER);
              metaData.addInfo("FIELD2", IMetaData.TYPE_STRING, 2);
              metaData.setFlags(2, IMetaData.EXPORT_PARAMETER);
              return metaData;
         public static JCO.Function getSampleFunction(Test test, String s) {
              TestRepository testRep = test.new TestRepository("testrepository");
              testRep.addFunctionInterfaceToCache(getFunctionInterface());
              JCO.Function func = testRep.getFunctionTemplate("TEST_FUNC").getFunction();
              func.getImportParameterList().setValue(s, "FIELD1");
              return func;
         private static boolean stop = false;

    If I understood you correctly, you want to provide a "service" that can be called from SAP. To provide this service you've chosen to implement an (external) RFC server program via JCo. One common method for RFC server programs is to register in SAP on the gateway - you do this by supplying the three parameters
    <ol>
    <li><b>jco.server.gwhost</b> -  SAP gateway host on which the server should be registered (so this would be the server name or IP address of the SAP gateway; localhost is only correct, if your RFC server program runs on the same server as the SAP gateway)</li>
    <li><b>jco.server.gwserv</b>  - Gateway service, i.e. the port on which a registration can be done</li>
    <li><b>jco.server.progid</b> - Program ID under which your RFC server program can be reached (free, made-up case sensitive name, that should represent the service your RFC server is providing)</li>
    </ol>
    So essentially you're creating a listener, that is registered in SAP and waits for any invocations. Within SAP they will define a <i>RFC destination</i>, which basically represents a TCP/IP connection pointing to the SAP gateway where you registered with the given program ID. If you want more details, check the SAP help pages for <a target="_blank" href="http://help.sap.com/saphelp_nw04/helpdata/en/22/04262b488911d189490000e829fbbd/content.htm">RFC destinations</a> (you're looking for destination type <b>T</b>, see explanations <a target="_blank" href="http://help.sap.com/saphelp_nw04/helpdata/en/22/042652488911d189490000e829fbbd/content.htm">here</a>).
    Usually gateway host and service (port) are given to you by the SAP basis folks and you tell them which program ID you're using. They will then enter those parameters in an RFC destination of type <b>T</b> in SAP. So no need for any of the client parameters you've mentioned. Although, I'd like to repeat, it's usually handy to also have SAP logon parameters maintained on your RFC server program, so that you can utilize the repository data from SAP (might be irrelevant in your case).
    Hope this clarifies it a bit...

  • JCO.Server appends null character to string

    I am a complete SAP and JCO newbie so I'll try making as much since as I can, given the fact that I'm not familiar with SAP terminology and technology. I've been lent as a developer to another group which needs a legacy application rewritten. The application processes a RFC and decrypts the RFC encrypted payload and returns it along with a status code.
    I have made progress - I'm able to register my server with the SAP runtime and using the SAP GUI application and the help of a SAP developer, I'm able to make an RFC call to my application. I'm able to read the parameters sent from SAP and write parameters back.
    The problem is that one of the parameters I'm writing back (java.lang.String) appears to have and extra character on SAP side. On the GUI it appears as a '#' (pound) sign. The SAP developer told me the string is terminated with a null character which I know is a C/C++ thing but not a Java thing. I don't think it is a Unicode issue. The Java server is not running in Unicode mode and any attempt to set the jco.server.unicode property (I may have forgotten the exact name) to a value of 1 causes the RFC to fail.
    I think the issue is likely to be the manner in which I defined the function parameters or the manner in which I write them. The following are code snippets:
    Defining the function:
    JCO.MetaData metadata = new JCO.MetaData(Constants.FUNCTION_DECRYPT);
    metadata.addInfo(Constants.PARAMETER_SCHEME,      JCO.TYPE_INT,    255,   0,  0, JCO.IMPORT_PARAMETER, null);
    metadata.addInfo(Constants.PARAMETER_ENCRYPTED,   JCO.TYPE_STRING, 255,   0,  0, JCO.IMPORT_PARAMETER, null);
    metadata.addInfo(Constants.PARAMETER_DECRYPTED,   JCO.TYPE_STRING, 255,   0,  0, JCO.EXPORT_PARAMETER, null);
    metadata.addInfo(Constants.PARAMETER_RETURN_CODE, JCO.TYPE_INT,    255,   0,  0, JCO.EXPORT_PARAMETER, null);
    Server request handling code:
    protected void handleRequest(JCO.Function function)
                    // Obtaining import/export parameter lists.
                    JCO.ParameterList input  = function.getImportParameterList();
                    JCO.ParameterList output = function.getExportParameterList();
                    // Getting scheme and encrypted text parameters.
                    int scheme       = input.getInt(Constants.PARAMETER_SCHEME);
                    String encrypted = input.getString(Constants.PARAMETER_ENCRYPTED);
                    // Decoding base 64 string.
                    byte[] bytes = Base64.decode(encrypted);
                    // Obtaining cipher by scheme and decrypting the text.
                    AppCipher cipher = ApplicationConfiguration.getDecryptor(scheme);
                    if(cipher == null)
                                    logger.error("Unable to get cipher due to an unknown encryption scheme: " + scheme);
                    else
                                    byte[] decrypted = cipher.decrypt(bytes);
                                    String plainText = new String(decrypted);
                                    // Setting decrypted value information and return code.
                                    output.setValue(plainText, Constants.PARAMETER_DECRYPTED);
                                    output.setValue(Constants.RETURN_CODE_SUCCESS, Constants.PARAMETER_RETURN_CODE);

    I seem to have made progress. If I define the parameter type as JCO.TYPE_CHAR instead of JCO.TYPE_STRING, it works:
    metadata.addInfo(Constants.PARAMETER_DECRYPTED,   JCO.TYPE_CHAR,   255,   0,  0, JCO.EXPORT_PARAMETER, null);
    That is the only change I made. I'm still setting the parameter value as java.lang.String. I hope this won't cause issues elsewhere. I was also able to change the field definition and set it as a byte array. However, that had the problem of having to define the exact length of the byte array in the field metadata otherwise the remaining bytes would appear as null bytes on SAP side.

  • JCO.SERVER could not find the server function

    Hi,
    I am calling "BAPI_COMPANY_GETDETAIL".thuough the zprogram"ZBAPI_COMPANY_GETDETAIL"
    REPORT ZBAPI_COMPANY_GETDETAIL.
    DATA:BEGIN OF ITAB,
    RCOMP LIKE T880-RCOMP,
    END OF ITAB.
    ITAB-RCOMP = 99999.
    CALL FUNCTION 'BAPI_COMPANY_GETDETAIL'
    EXPORTING
    COMPANYID = ITAB.
    IMPORTING
    COMPANY_DETAIL =
    RETURN =
    The Details I Gave......
    In SM59 of R/3:
    PROGRAMID:LCRSAPRFC_PIT
    GATEWAYHOST:PITEST
    GATEWAYSERVICE:sapgw01
    Tested the connection and it is running
    ID:
    In Communication Channel.
    Application server (Gateway):PITEST
    Application server Service (Gateway):
    PROGRAMID:LCRSAPRFC_PIT
    RFC Metadata Repository parameter.
    ip of XI Server
    System No Xi System NO
    username
    pwd
    In SM58 I find the Following error.
    "JCO.SERVER could not find the server function BAPI_COMPANY_GETDETAIL.
    I Tested RFC ADAPTOR in  RWG and it is ok.
    I do not Understand where the problem is.
    Please clarify.
    Thanks,
    Srinivasa

    Thanks for the reply,
    Yes RFC is in the Sender  side.
    I am calling "BAPI_COMPANY_GETDETAIL".thuough the zprogram"ZBAPI_COMPANY_GETDETAIL"
    REPORT ZBAPI_COMPANY_GETDETAIL.
    DATA:BEGIN OF ITAB,
    RCOMP LIKE T880-RCOMP,
    END OF ITAB.
    ITAB-RCOMP = 99999.
    CALL FUNCTION 'BAPI_COMPANY_GETDETAIL'
    EXPORTING
    COMPANYID = ITAB.
    IMPORTING
    COMPANY_DETAIL =
    RETURN =
    The Details I Gave......
    In SM59 of R/3:
    PROGRAMID:LCRSAPRFC_PIT
    GATEWAYHOST:PITEST(XI system name)
    GATEWAYSERVICE:sapgw01
    Tested the connection and it is running
    ID:
    In Communication Channel.
    Application server (Gateway):PITEST(XI system name)
    Application server Service (Gateway):
    PROGRAMID:LCRSAPRFC_PIT
    RFC Metadata Repository parameter.
    ip of XI Server
    System No Xi System NO
    username
    pwd
    In SM58 I find the Following error.
    "JCO.SERVER could not find the server function BAPI_COMPANY_GETDETAIL.
    I Tested RFC ADAPTOR in RWG and it is ok.
    I do not Understand where the problem is.
    These is what I gave,

  • JCO.Server could not find server function 'CONTROL_RECIPE_AVAILABLE'

    Hi Experts,
    I've been trying to read some of the topics in the forums to find answers about the error JCO.Server could not find server function but still haven't resolve the issue.
    Basically, the scenario is from SAP r/3 to PI 7.1 ehp1 (process integration) system.
    All of the aforementioned steps we're done.
    R/3 (SAP) end
    1.) Create RFC destination (T)
    2. ) Indicate the program ID
    3.) Indicate the server/hostname
    4.) Indicate the sap gateway
    Test connection was made and it was successful.
    SAP PI end.
    Integration Directory (Let me skip from the basics and state directly the setup of my senderRFC)
    1.) RFC Comm Channel (set as Sender)
    2.) Indicated the server hostname (sending system), sap gateway and Program ID (basically what was indicated in RFC setup in SAP end)
    3.) RFC Metadata Repository Parameters (In here I used the details of PI environment)..Created user with SAP_ALL profile..I used system without Load Balancing (Parameter, AppServer, SysNo, Logon User, Logon Password, Language and Client)
    I was able to test a message from SAP end but still "JCO.Server could not find server function" was the result upon checking sm58.
    Did I miss something from my setup and config?

    Hi Michal,
    I guess there's a big difference with RFC Server Parameters and with RFC Metadata Repository Parameters.
    Note: Im using PI 7.1 ehp1
    For RFC Server Parameters it includes:
    - Application Server (gateway)*
    - Application Server Service (gateway)*
    - Program ID*
    For RFC Metadata Repository Parameters it includes:
    - Load Balancing or no Load Balancing (choices)..in here my choice is no Load Balancing
    - Application Server*
    - System No*
    - Logon Language*
    - Logon Client*
    - Authentication Mode (Use Log-on Data for SAP System or Secure Network Connection for RFC)
    if Use Log-on Data for SAP System it includes:
    - Logon User*
    - Logon Password*
    If Secure Network Connection for RFC it includes:
    - Quality of Protection
    - SNC Partner Name
    Looked onto your blogs mentioned several times, but no information on RFC Metadata Repository Parameters.

  • How to set JCO.Server to unicode

    Hi,
    I'm trying to call a Java class (myExample5)from a R/3 that is unicode compliant.  Using example5 in the sapjco-ntintel-2.1.5.zip, I've created the ABAP program to call STFC_CONNECTION with the destination 'JCO'.  I get to my JAVA program, but the input it receives is null.  I think I need to set the JCO.Server to be unicode, but I can't figure out how. 
    Can someone provide me with an example? 
    Also, do I need to had any additional dll to my system32 directory?
    Thanks ahead of time for any insight.

    Hello ,
    If you want to make outbound RFC calls from a Unicode SAP system to a JCo server instance, the server must be set up using the additional serverProperty
    You also need to set the unicode option for your RFC destination in transaction SM59 in transaction SM59 (tab page MDMP_Unicode).
    You can create Unicode Compatible JCOSERVER01  as follows
    static public class Server extends JCO.Server {
        public Server(String gwhost, String gwserv, String progid, boolean isUnicode, IRepository repository)
          super(gwhost,gwserv,progid,repository);
          this.setProperty("jco.server.unicode", isUnicode?"1":"0");
    for more details use following link :
    http://help.sap.com/saphelp_nwpi711/helpdata/en/48/7238b836701b5ae10000000a42189c/frameset.htm
    Regards,
    Pushkar Dhale

Maybe you are looking for

  • Credit Management - Maximum time overdue limit for open item

    Dear all, I've this scenario to configure for automatic credit control. A customer is billed on Jan 22nd '10 and now the account receiveable shows an open item. This customer is allowed 52 calendar days to make payment for this invoice, hence no cred

  • ROS (without SUS) and EBP in same client-Transferred BP status?

    Friends, We are working on SRM 7. The ROS (without SUS) and EBP are implemented on the same SRM client. In supplier registration process, when the accepted business partner is transferred from ROS to EBP, a supplier is correctly created in EBP client

  • Hai GURU 's plz help me in this Issue !

    Hi Guru ! Please let me know what is the difference between Subsequent Debit Note and the debit note. Thanks in advance GURU.

  • Easy problem !

    Hello ! My problem is that I want to write in a text file adding each time one line, under the linewritten before, but when I do it, the line I add is put juste after the line written before ! How can I write each line under the one written before ?

  • Adding sounds to ipad

    I see you can change sounds for things like alerts, mail sent, etc.  Is there a way to purchase additional sounds?  I really would like to add different animal sounds for the alerts, especially cat sounds.  But I can't figure out how to purchase new