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.

Similar Messages

  • Putting a null character in a String?

    Hi,
    I need to send a null character through a nio channel. Specifically, it needs to be decoded from a String into a byte array. Can I append a null character to a String so that getBytes() method will return it? Thanks,
    ranko

    Thanks, I tried that but it doesn't work. I also
    tried appending '\0' and an uninitialized character
    which should by default have a value of a null
    character. I tried creating a String out of a char
    array that has one element containing a null character
    but that did not work either. I guess that since null
    characters end the String, you cannot actually add
    them to the body of the String. Or is there a way?FYI, strings aren't null-terminated in Java.

  • [JCO.ServerThread-1] ERROR  SERVER-EXCEPTION - [null,null,null,] com.sap.mw

    When we execute a SAP transaction through xMII, xMII server is brought down.
    I looked in the cms.log file and found this:
    <b><i><i>2007-10-16 11:07:23,355 [JCO.ServerThread-1] ERROR  SERVER-EXCEPTION - [null,null,null,] com.sap.mw.jco.JCO$Exception: (129) JCO_ERROR_SERVER_STARTUP: Server startup failed at Tue Oct 16 11:07:23 EDT 2007.
    This is caused by either a) erroneous server settings, b) the backend system has been shutdown, c) network problems. Will try next startup in 64 seconds.</i></i></b>
    When I try to log back onto xMII, I see the following: 
    <b><i>Error Executing Transaction Status (500) Internal Server Error.</i></b>
    I created a Business Logic Services transaction within XMII.  This BLS extracts data from AFPO Order Item table.  A Repeater loops through the RESPONSE output table, and executes a SAP Query to load the data into Oracle tables.
    I also have a BLS that executes BAPI_PRODORD_GET_LIST. 
    When I execute either one of these transactions, the system will fail with the above error when the amount of data being extracted reaches a specific number.
    I have simplified the BLS to run a JCO block for BAPI_PRODORD_GET_LIST and a tracer block.  When I execute the BLS that executes BAPI_PRODORD_GET_LIST to retrieve 2,000 production orders, the transaction hangs.  After 30 minutes, I terminate the transaction so it won’t take the xMII server down again.  However, had I had a repeater to loop through the output and load into the oracle tables, the server goes down.
    That’s my problem.  My other question to the problem is this. 
    What are the limitations to the amount of data that can be extracted from SAP via xMII?  Excel spreadsheets can download 40,000 records.  You can write a SELECT * in any language and pull down 40,000 records.  What is going on?

    David,
    Just an FYI the error message that you have found is not connected to your BLS transaction but rather the default IDoc listener trying to connect to something that doesn't exist.  This listener will automatically start each time xMII starts, as a result you can set it up to connect to an RFC destination or delete the default configuration and it will go away. 
    Now onto your issue; How many Production Orders are being returned from the BAPI?  How are you loading each of them into Oracle?  How much memory is allocated to ServletExec vs. How much is available on the machine?  By default xMII will limit all SQL/Tag queries to their <b>RowCount</b> with a max at 250k rows but this does not apply to the JCo call.
    My suggestion here is to look for the other error message that pertains to your transaction which may reside in the ServletExec logs and not xMII, they can be found on your xMII machine here: http://localhost/servletexec/admin/login.jsp
    Hope this helps.
    Sam

  • 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

  • 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

  • Converting ASCII text (byte array ending in null) to a String

    Hi all,
    I am trying to convert a null terminated ascii string stored in a byte array to a java String. When I pass the byte array to the String constructor it
    does not detect/interpret the null as a terminator for the ascii string. Is this something I have to manually program in? ie Check for where the null is and then
    pass that subarray of everything before the null to the String constructor?
    example of problem
    //               A   B  C   D   null   F   (note F is junk in the array, and should be ignored since it is after null)
    byte[] asciiArray = { 65, 66, 67, 68, 0,  70 };
    System.out.println(new String(asciiArray, "UTF-8"));
    //this prints ABCD"sqare icon"F

    Why do you expect the null character to terminate the string? If you come from a C or C++ background, you need to understand that java.lang.String is not just a mere character array. It's a full-fledged Java object that knows its length without having any need for null terminator. So Ascii 0 is just another character for String object. To achieve what you want to do, you have to manually loop through the byte array and stop when you encounter a null character.

  • Match Pattern does not function properly when searching for a null character

    I'm using Match Pattern to extract a null terminated string from a response I'm getting from a device on a serial port. The VI is attached and below is a screenshot of the block diagram.
    It works just fine with index set to 0, 1, or 2. When index is 3, I get the output shown below.
    Why is Match Pattern not finding the null character?
    Thanks!
    Solved!
    Go to Solution.
    Attachments:
    Grab Nullterm String.vi ‏15 KB

    I'm a dope, need to remove the wire from the Offset control to the Match Pattern control.
    DUH!

  • 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...

  • [Microsoft][ODBC SQL Server Driver]Invalid character value for cast specifi

    [Microsoft][ODBC SQL Server Driver]Invalid character value for cast specification
    An you help me with this error?
    This is the problemativ query:
    Search QUERY : SELECT DISTINCT theK_files.fileid, theK_files.name, theK_files.t
    itle, theK_files.description, theK_users1.name AS AuthorName, theK_users1.surn
    ame AS AuthorSurname, [theK_file-extensions].name AS Extension, theK_files.publ
    ished, theK_files.updated FROM theK_users INNER JOIN [theK_users-to-groups] ON
    theK_users.userid = [theK_users-to-groups].userid INNER JOIN theK_usergroups
    ON [theK_users-to-groups].groupid = theK_usergroups.groupid INNER JOIN [theK_g
    roups-to-files] ON theK_usergroups.groupid = [theK_groups-to-files].groupid INN
    ER JOIN theK_files ON [theK_groups-to-files].fileid = theK_files.fileid INNER
    JOIN theK_users theK_users1 ON theK_files.authorid = theK_users1.userid INNER
    JOIN [theK_file-extensions] ON theK_files.extensionid = [theK_file-extensions]
    .extensionid WHERE theK_users.userid = '1' AND theK_files.extensionid = '1' AN
    D ( theK_files.name LIKE '%a%' OR theK_users1.name LIKE '%a%' OR theK_files.de
    scription LIKE '%a%' )

    are these columns character/string/varchar:
    theK_users.userid = '1'
    theK_files.extensionid = '1'
    if these are number columns, change them to
    theK_users.userid = 1
    theK_files.extensionid = 1
    Jamie

  • JCO Server implementation questions

    Hi experts,
    I want to try to create a JCO Server with the JCO 3 library.
    I'm kinda lost in all the links I've found since there is still a lot of things from the JCO 2 on the internet and I don't understand everything I'm doing.
    Please note that there is already a working Java JCO server with old IBM tools and we need to migrate to JCO 3.
    So here are my questions :
    What do I have to do exactly in the sm59 transaction ?
    Here is what I get in the RSGWLST transaction http://i.imgur.com/IRgAyO8.png http://i.imgur.com/YyfDQbt.png (Loic-PC is my machine so I guess my java jco server is up.) Is everything ok ?
    I have followed this link (Java Program for Creating a Server Connection - Components of SAP Communication Technology - SAP Library) to create my java jco server. What exactly are ServerDataProvider.JCO_GWHOST, ServerDataProvider.JCO_GWSERV and above all ServerDataProvider.JCO_PROGID)
    How do I testmy Java JCO server ? I understood that I have to call STFC_TRANSACTION in se37 where I put my jco destination (previously set up in sm59 ?) and a string but I have a dump when I'm tying that.
    I hope someone can help me, everything is still really blurry to me.
    Regards
    Here is the code I use to try to connect :
        static String SERVER_NAME1 = "JCO_SERVER";
        static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";
        static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";
        static
            Properties connectProperties = new Properties();
            connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "172.16.200.114");
            connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "00");
            connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "500");
            connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "develop2");
            connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "passw0rd");
            connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");
            createDataFile(DESTINATION_NAME1, "jcoDestination", connectProperties);
            connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
            connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,    "10");
            createDataFile(DESTINATION_NAME2, "jcoDestination", connectProperties);
            Properties servertProperties = new Properties();
            servertProperties.setProperty(ServerDataProvider.JCO_GWHOST, "sapdevdb02");
            servertProperties.setProperty(ServerDataProvider.JCO_GWSERV, "sapgw00");
            servertProperties.setProperty(ServerDataProvider.JCO_PROGID, "JCOServer");
            servertProperties.setProperty(ServerDataProvider.JCO_REP_DEST, "ABAP_AS_WITH_POOL");
            servertProperties.setProperty(ServerDataProvider.JCO_CONNECTION_COUNT, "2");
            createDataFile(SERVER_NAME1, "jcoServer", servertProperties);

    Hi Loic.
    The properties GWHost is Gateway Host and GWSERV stands for Gateway Server.
    Please look at this link to get more details:
    Possible Parameters (SAP Library - Components of SAP Communication Technology)
    Could you please put your full code for this class?
    I'm saying this because the code you have wrote only creates the propreties file that JCO uses to configure the server but you have to run your server through the main statement.
    You have to do something like that on your StfcConnectionHandler class.
    public static void main(String[] args) {
           step1SimpleServer();
    See my example:
    StfcConnectionHandler class--------------------
    package main;
    import com.sap.conn.jco.JCoException;
    import com.sap.conn.jco.JCoFunction;
    import com.sap.conn.jco.server.DefaultServerHandlerFactory;
    import com.sap.conn.jco.server.JCoServer;
    import com.sap.conn.jco.server.JCoServerContext;
    import com.sap.conn.jco.server.JCoServerFactory;
    import com.sap.conn.jco.server.JCoServerFunctionHandler;
    public class StfcConnectionHandler implements JCoServerFunctionHandler {
      private static final String SERVER_NAME1 = "YOUR_SERVER_NAME";
      public void handleRequest(JCoServerContext serverCtx, JCoFunction function) {
      System.out
      .println("----------------------------------------------------------------");
      System.out.println("call              : " + function.getName());
      System.out
      .println("ConnectionId      : " + serverCtx.getConnectionID());
      System.out.println("SessionId         : " + serverCtx.getSessionID());
      System.out.println("TID               : " + serverCtx.getTID());
      System.out.println("repository name   : "
      + serverCtx.getRepository().getName());
      System.out
      .println("is in transaction : " + serverCtx.isInTransaction());
      System.out.println("is stateful       : "
      + serverCtx.isStatefulSession());
      System.out
      .println("----------------------------------------------------------------");
      System.out.println("gwhost: " + serverCtx.getServer().getGatewayHost());
      System.out.println("gwserv: "
      + serverCtx.getServer().getGatewayService());
      System.out.println("progid: " + serverCtx.getServer().getProgramID());
      System.out
      .println("----------------------------------------------------------------");
      System.out.println("attributes  : ");
      System.out.println(serverCtx.getConnectionAttributes().toString());
      System.out
      .println("----------------------------------------------------------------");
      System.out.println("req text: "
      + function.getImportParameterList().getString("REQUTEXT"));
      function.getExportParameterList().setValue("ECHOTEXT",
      function.getImportParameterList().getString("REQUTEXT"));
      function.getExportParameterList().setValue("RESPTEXT", "Hello World");
      static void step1SimpleServer() {
      JCoServer server;
      try {
      server = JCoServerFactory.getServer(SERVER_NAME1);
      } catch (JCoException ex) {
      throw new RuntimeException("Unable to create the server "
      + SERVER_NAME1 + ", because of " + ex.getMessage(), ex);
      JCoServerFunctionHandler stfcConnectionHandler = new StfcConnectionHandler();
      DefaultServerHandlerFactory.FunctionHandlerFactory factory = new DefaultServerHandlerFactory.FunctionHandlerFactory();
      factory.registerHandler("STFC_CONNECTION", stfcConnectionHandler);
      server.setCallHandlerFactory(factory);
      server.start();
      System.out.println("The program can be stopped using <ctrl>+<c>");
      public static void main(String[] args) {
      step1SimpleServer();
    StepByStepServer class
    package main;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Properties;
    import com.sap.conn.jco.ext.DestinationDataProvider;
    import com.sap.conn.jco.ext.ServerDataProvider;
    public class StepByStepServer
        static String SERVER_NAME1 = "SERVER";
        static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";
        static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";
        static
            Properties connectProperties = new Properties();
            connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "ls4065");
            connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "85");
            connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "800");
            connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "farber");
            connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "laska");
            connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");
            createDataFile(DESTINATION_NAME1, "jcoDestination", connectProperties);
            connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
            connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,    "10");
            createDataFile(DESTINATION_NAME2, "jcoDestination", connectProperties);
            Properties servertProperties = new Properties();
            servertProperties.setProperty(ServerDataProvider.JCO_GWHOST, "binmain");
            servertProperties.setProperty(ServerDataProvider.JCO_GWSERV, "sapgw53");
            servertProperties.setProperty(ServerDataProvider.JCO_PROGID, "JCO_SERVER");
            servertProperties.setProperty(ServerDataProvider.JCO_REP_DEST, "ABAP_AS_WITH_POOL");
            servertProperties.setProperty(ServerDataProvider.JCO_CONNECTION_COUNT, "2");
            createDataFile(SERVER_NAME1, "jcoServer", servertProperties);
        static void createDataFile(String name, String suffix, Properties properties)
            File cfg = new File(name+"."+suffix);
            if(!cfg.exists())
                try
                    FileOutputStream fos = new FileOutputStream(cfg, false);
                    properties.store(fos, "for tests only !");
                    fos.close();
                catch (Exception e)
                    throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
    Regards

  • 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)#

  • Print a null character

    Okay, so I open a socket and connect to a networked machine that accepts strings as commands. Commands are terminated by the null character '\0'. I know this works as I've done it in Python with no problems. Right now all I'm trying to do is write an ascii char "0" followed by a null. My machine isn't responding and I'm pretty sure its because Java is ignoring my '\0' and just writing the characters preceding it.
       public void connect() throws IOException{
            System.out.println("Trying to connect...\n");
            //connect to roobt
            Socket outsock = new Socket("13.62.154.243", 15223);
            Socket insock = new Socket("13.62.154.243",15224);
            //setup reading/writing.
            PrintWriter out = new PrintWriter(outsock.getOutputStream());
            BufferedReader in = new BufferedReader(new InputStreamReader(insock.getInputStream()));
            String r = in.readLine();
            System.out.println("Received: " + r + "\n");
            //inform robot that connection is closing
            out.print("0\0");
            //close sockets
            outsock.close();
            insock.close();
        }Am I wrong? Is there a way to force the null character to be written?
    And as an aside, is there a way to read lines terminated by a null as opposed to a newline \n or carriage return \r? I can modify the code on the machine to respond with lines terminated by \n's, but I'd rather not have to redo it all. I wrote the code for my machine to function with a Python socket script, and now I'm attempting to rewrite this into Java.

    http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scan
    ner.html
    Use the null character as the delimiter.Okay, I see how this could be useful, except I don't have a string yet. A have a BuffereReader that I need to make into a string. Once its a string, then I could use the scanner. Right? So, I still have a problem.

  • JCO Server - function template definition

    Hi all,
    I'm writing a JCO Server application where I define a function template with three tables each with a number of character fields.
    It seems that I need to set the length of each field to the double of the corresponding field of the SAP function.
    For example, the field COD_ZONE should be a char(2) (valid value: B1) and then I need to set the char length to 4 otherwise a truncated value is received.
    It looks like a double-byte character set is set in SAP environment, but it should not be the case.
    Do you have any idea ?
    Thanks for helping

    Yes,
    we have unicode environment.
    That means that I can't use following definition ?
    fmeta = new JCO.MetaData("FUNC");
    fmeta.addInfo("TABLE", JCO.TYPE_TABLE, 2, 0, 0, 0, "HEADER");
    repository.addFunctionInterfaceToCache(fmeta);
    JCO.MetaData tableMeta = new JCO.MetaData("HEADER");
    tableMeta.addInfo("OBJECT_ID", JCO.TYPE_CHAR,  2, -1, 0);

  • JCO.server could not create server function - IDOC_INBOUND_ASYNCHRONOUS

    Hello all.
    On this platform I have found some threads for the above error we get, but unfortunately the solution was not described in detail.
    We get this error in sending Idocs from a SAP 4.7 system to our Business Connector.
    Complete error info is :
    com.sap.mw.jco.JCO$Exception: (120) JCO_: JCO.Server could not create server function 'ä¥u201Eä½u0192å½u2030ä¹u201Aä½u2022ä¹u201E彁åu2122ä¹u0192ä¡u2019'
    com.sap.mw.jco.JCO$Exception: (123) JCO_: Server repository could not create function template 'ä¥u201Eä½u0192å½u2030ä¹u201Aä½u2022ä¹u201E彁åu2122ä¹u0192ä¡u2019' caused by: com.sap.mw.jco.JCO$Exception: (102) RFC_ERROR_COMMUNICATION: Connect to SAP gateway failed Connect_PM GWHOST=CPAAQAT.US.CPO.COM, GWSERV=sapgw01, ASHOST=CPAAQAT.US.CPO.COM, SYSNR=01 LOCATION CPIC (TCP/IP) on local host ERROR partner not reached (host 172.20.12.65, service 3301) TIME Fri Jul 15 10:35:58 2011 RELEASE 640 COMPONENT NI (network interface) VERSION 37 RC -10 MODU
    Typically the message gets rolled-back and no sender, receiver or message info in visable in the transaction list.
    Transaction List
    Date    TID    Sender    Receiver    Msg Type    State   Delete
    2011-07-14 08:00:19 BST  AC140C4150524E1E92E80002     Rolled back   
    Who can help us.
    Thanks in advance.
    Marcel

    Hi,
    ä¥u201Eä½u0192å½u2030ä¹u201Aä½u2022ä¹u201E彁åu2122ä¹u0192ä¡
    looks like a character encoding error. Did you check the Unicode, code page at the RFC destination, and related SAP notes?
    Sandra

  • 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.

Maybe you are looking for

  • Deploy PAR with NWDS SP19

    Hi All,   I am trying to deploy the PAR file from NWDS, it brings up the dialog and after i enter my password, the deployment progress is stuck, let us say at 80% and my NWDS is hung. I have to terminate it and reopen it again. I upgraded my NWDS rec

  • Can not run my NI-cDAQ 9191 on windows 8.1 pro while it was working fine on windows 7 - can you help me?

    I am having  Windows 8.1 pro - 64 bit with 8GB Ram on Laptop. I am connecting my NI-cDAQ 9191 to the Laptop via ethernet cable. I am running MAX. It appears  under network devices.  Once I click on it the ip adddress disappear from the system setting

  • Unable to load Reports on Web

    We are working with Developer6.0,OAS 4.0.7, Oracle 8.0. We have a static implementation. Initially, we had Jinitiator 1.1.7.11. Reports were working fine. Later, We upgraded Jinitiator to 1.1.7.18. From then on I am unable to load reports on the web.

  • PROBLEM IN DELETE THE PARKED INVOICE

    Dear cons     We have parked an invoice document. but we want to delete the document.at the time of deletion the system gives an error message" that Transfer table would lead to a duplicate record in CDPOS/CDPOS_UID.When the generated update module X

  • Tinkum

    I have Adobe Photoshop CS5 Creative Suite 5.0 and it will not open raw files from my Canon G-15 camera.  How can I get these raw files to open up?  ng