RFC Call not returning in normal exec;retunrs in debugger

Hi all
i m sorry for posting it twice,due to my ignorance
i first posted it in wrong forum
i had a requirement to invoke a RFC Async and recieve the results in my program with a condition that the name and parameters of RFC are determined runtime.
To meet this requirement, i generated a the RFC call and return form code dynamically and called that code from my program via a subroutine.
The problem i am facing is that, whenever i execute my program in debug mode the RFCs are called and the parameters are returned( perform on end of task edition is used)
via subroutine, but when i execute the code via F8 the program goes in indefinite wait for return parameters.I am calling 2-3 RFcs at same time, and all of them are on local host.
the Functions are working well and the RFC destination is also working well.
But this amalgum of my program and dynamic calls is not going through.
I read in documentation that if we change the program context or the roll area then the results are not recieved by main program. by the way i am using WAIT to receive the results.
For the moment if i consider, my program context or roll area is getting changed because of dynamic code generation then also the dynamically generated code is the one containing the RFC call and its revieve subroutine, therefore there shall be no problem with that, the other thought i am getting is that in debugger implict commit work happens, is the program working because of that in debugger?? i dont know....
Can any one help me with this, in the above long paragraph if anyone gets confused..i can again try to restate my problem.
One more thing..i have checked the ST22 and SM50 for any abnormalities, couold not find one.
thanks in advance
praveen

WAIT statement also triggers a DB commit like debugger.
Are you using WAIT UNTIL <condition>?
Regards
Sridhar

Similar Messages

  • Simple RFC call not returning results

    Hi,
    I have created a VERY simple Dynpro project to return the results of a simple RFC.  I've created the JCO connections and they test fine but the RFC doesn't return results to my application.
    Steps:
    1. create the project
    2. import the RFC Adaptive Model specifying the JCO connections
    3. Create an application
    4. Add the rfc model to the "Models Used"
    5. Bind the model to the component
    6. Context map two variables to the view (one input and one output)
    7. Create the method on the component
    8. Bound the UI elements to the model
    9. Set up the JCO connections from http://portal:50000/webdynpro/welcome
    For the JCO Connection creation, I used "Application" type through a load balanced connection for the Model Data connection (WD_MODELDATA_DEST) and the "Dictionary" type for the Metadata connection (WD_RFC_METADATA_DEST).
    Code:
    1. In the wdDoInit() of the controller
    wdContext.nodeZ_Hr_Get_Perno_Input().bind(new Z_Hr_Get_Perno_Input());
    2. In the wdDoInit() of the view
    wdContext.currentContextElement():setLogin_id( "mylogon" );
    wdThis.wdGetRfcTestComponentController().executeZ_Hr_Get_Perno_Input();
    My gut tells me it's an issue with my JCO connections but I can't be sure.
    I'm using Developer Studio SP9 with Patch 1 connecting to EP6 SP9 Patch 6.  When I start the Dev Studio, however, it displays version 2.0.9, is this the same for everyone?
    I've tested the function module from SE37 and it definitely returns a value. Also, if I don't set the login_id in the wdDoInit() before executing, it gives me the error that the input variable has not been set. So, this tells me that it connected to R3 to know that the variable was not passed but it still doesn't return any value when the variable is passed.
    Any ideas??  HELP!!!!!!!!!!
    Thanks,
    Andrew

    Okay, I'm not going crazy.  The issue was with my "simple" rfc.  When I changed the input and output to char(), it returned as expected.  I just have to figure out why the Dictionary types from R3 caused an issue.
    Andrew

  • MSCS failover to B node does not return to normal

    Good morning!
    We click "move group" on MSCS A node, and the resources go to the B node
    successfully.
    However, above resources does not return back to A node after the specified
    time in the cluster configuration.
    There is no error log.
    Could you please tell how to fix this?
    Thanks!

    Hi,
    It will not come automatically to normal automatically. You have to move resources to node A manually.
    Thanks
    Sunny

  • RFC is not returning parameters

    Hi All,
    I have written an Java code in my UDF to call the RFC. Basically i am sending some Import parameters to RFC and getting the Export parameters from the RFC. My RFC structure is like this.
    XX_RFC
        IMPORT
           a
           b
        EXPORT
           c
           d
           e
    My UDF code (Queue) is :
    AbstractTrace trace;
    java.util.Map map;
    map = container.getTransformationParameters();
    trace = container.getTrace();
    trace.addDebugMessage(" XX_RFC lookup started ");
    String strSystem =  (String) map.get(StreamTransformationConstants.RECEIVER_SERVICE);
    String[] tagNames = { "a", "b"};
    ArrayList arrayList = new ArrayList();
    int iNoOfValuesToBeSet = a.length;
    try {
         RFCLookup rfcl = new RFCLookup("XX_RFC");
         rfcl.setConn(strSystem,"RFCLookUp_Receiver");
         arrayList.add(a);
         arrayList.add(b);
         rfcl.setTable(arrayList, "IMPORT", tagNames, iNoOfValuesToBeSet);
         trace.addInfo(" Table set. Going to invoke RFC.");
         trace.addDebugMessage("\n Start of Request XML \n" + rfcl.getRequestRoot() + "\n *** End of Request XML *** \n");
         rfcl.invoke();
         trace.addInfo("RFC invoked. Parsing the Response.");
         trace.addInfo("\n Start of Response XML \n" + rfcl.getResponseRoot() + "\n *** End of Response XML *** \n");
         strArrTempOut1 = rfcl.getParam("EXPORT", "c");
         strArrTempOut2 = rfcl.getParam("EXPORT", "d");
         strArrTempOut3 = rfcl.getParam("EXPORT", "e");
    }catch (Exception e) {
         trace.addWarning("!!! Exception caught !!! " + e+ " : \n" + e.toString());
    finally
    I have declared all the global variables in the Java section and i am writing an UDF for using those global variables.
    the UDF (Queue) is :
    if(strArrTempSTRASOut == null)
      result.addValue("");
    else
    for (int i=0;i<strArrTempOut1.length;i++)
                         result.addValue(strArrTempOut1<i>);
    When i call the RFC with a valid data, my output XML is not getting formed actually. But, the RFC is working fine when i check it in the SAP system. Any help would be greatly appreciated.
    regards,
    Sherin Jose P

    Hi Sherin,
           Please refer the following blog to acehive your Functionaliy.Its very simple to use and .Because the lookup code gives you RFC response  as XML. apply the DOm parisng code to get the desired value from the output XML structure.Follow the article and use the following piece of code in the 5th step of the code given in the article.
    http://www.sdn.sap.com/irj/scn/index;jsessionid=(J2EE3417400)ID0702528050DB00626426829334031456End?rid=/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439&overridelayout=true
    *5. Execute lookup.*
           Payload result = accessor.call(payload);
           InputStream in = result.getContent();
         /*  out = new ByteArrayOutputStream(1024);
           byte[] buffer = new byte[1024];
           for (int read = in.read(buffer); read > 0; read = in.read(buffer))
           out.write(buffer, 0, read);
           content = out.toString();*/  you can avoid the commented code
           DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
           DocumentBuilder builder = factory.newDocumentBuilder();
           Document document = builder.parse(in);
           NodeList list = document.getElementsByTagName("C"); //same way for D, E
           Node node = list.item(0);
           if (node != null) {
                node = node.getFirstChild();
                if (node != null) {
                      Cvalue = node.getNodeValue(); //Desired value of C in string
    Thanks,
    Ram.

  • JDBC to RFC synch RFC call not executing.

    Hi,
    I am working on the synchronous JDBC to RFC without BPM. After completing design and config when I test the complete scenario the data from databse is not getting updated in R/3. And I do not see any errors in MONI. But when compared the moni logs I observed the following between the working scenario and not working scenario.
    <u>Working scenario log in MONI:</u>
    <SAP:Receiver>
      <SAP:Party agency="" scheme="" />
      <SAP:Service>ECS300</SAP:Service>
      <SAP:Interface namespace="<b>http://sap.com/xi/XI/System</b>">InterfaceCollection</SAP:Interface>
    - <SAP:Mapping notRequired="S">
      <SAP:ObjectId>YYgNVKC9PTCW4JlMapfxZQ==</SAP:ObjectId>
      <SAP:SWCV>IrmTYNPLEdqKItGjlusuXw==</SAP:SWCV>
    <u>Not working log from the MONI:</u>
    ++++++++++++++++++++++++
    <SAP:Receiver>
      <SAP:Party agency="" scheme="" />
      <SAP:Service>ECS300</SAP:Service>
      <SAP:Interface namespace="<b>http://my_Own_namespace</b>">JDBC_Rfc_Synch_MI</SAP:Interface>
    - <SAP:Mapping notRequired="M">
      <SAP:ObjectId>28ZZbGggOw6UcnigDXMD7A==</SAP:ObjectId>
      <SAP:SWCV>IrmTYNPLEdqKItGjlusuXw==</SAP:SWCV>
      <SAP:SP>-1</SAP:SP>
      </SAP:Mapping>
    Could some body point me where I am doing wrong ?
    Thaks
    Steve.

    Hi Steve,
    I think the error is because your database table is expecting some kind of input and the input you are passing has some error in it.Just cross check the table using DESCRIBE <tablename> with the data you are trying to enter.
    Also Just look at Query SQL Statement part ubnder this link,
    http://help.sap.com/saphelp_nw04/helpdata/en/7e/5df96381ec72468a00815dd80f8b63/content.htm
    Regards,
    abhy

  • RFC call do not return any value

    Hi All,
    I have an RFC written in one R/3 system(call center R/3) and i am calling this RFC in the ERP system.
    If i try to run the RFC locally in the call center system ,it runs correctly and returns me proper values.
    But when i try  to call it from other R/3 system(ERP) the RFC does not return value.(both cases i am passing same parameters).
    Also , RFC parameters are defined with pass by value option.
    I am not able to trace why this behaviour,can anyone pin point what could be the possible cause of error.
    Thanks in advance,
    Swati

    No ,there i snot RFC connection problem ,i have checked it from SM59.
    Neither do i get any dump or error of no authorization.In fact the sy-subrc after the RFC call is 0.
    St22 do not have any trace for the same.
    my RCC call is something like this,
    IF dest <> ' '.
    CALL FUNCTION 'Z_GET_CIC061' DESTINATION dest
                      EXPORTING
                           p_comp        = itab_cic-company
                           p_asc_code    = itab_cic-customer
                           p_wbill_no    = itab_cic-bill_no
                      IMPORTING
                           e_tr_no       = tr_no
                           e_model_code  = model_code
                           e_data_origin = data_origin
                     EXCEPTIONS
                             communication_failure = 1
                             system_failure        = 2.
    ELSE.
                MESSAGE i000 WITH 'RFC Destination is empty!'.
                EXIT.
              ENDIF.
    Can anyone please suggest whats wrong in the above code.
    Also what is transaction RFC call?is it related to what i am using in the above code of mine.
    Thanks in advance,
    Swati

  • RFC calls keep old buffer tables PS and PSINFO

    Hello!
    I have written a BSP application for an R/3 system which is release 4.6c.  For that reason, we have a stand-alone WebAS which must make RFC's to the core R/3 system to retrieve and update HR data.
    Originally the RFC destination to connect to the core R/3 system from WebAS was not a trusted connection, but we ran into problems with structural authorizations where the RFC was not returning all of the data for the actual user.  We found that the problem was related to the fact that the RFC destination was using a hard-coded user ID to make the connection to the R/3 HR system.  That particular user ID was being used as SY-UNAME in a routine used by structural authorizations, and it wasn't finding the correct data for the User ID that was entered as the RFC user.  Therefore, we made the change on the RFC destination in WebAS so that now we have the "Current User" checkbox checked, the hard-coded user ID and password has been removed, and now the "Trusted System" radio button is selected.  Those changes resolved our issue with structural authorizations because now the routine has the actual user ID as SY-UNAME instead of the generic RFC user ID.
    I'm not sure if the RFC trusted connection is part of this issue or not, but I wanted to provide that information.
    Here is the actual issue...  Several of the RFC's update different HR infotypes, and most of these use function module HR_INFOTYPE_OPERATION to insert new HR infotype records or modify existing ones, etc.  We started receiving short dumps and getting strange results, and I was able to track it down to the fact that the PS and PSINFO buffer tables are not being refreshed.  I was expecting that these tables would be "clean" everytime I make a new RFC call.  However, this is not the case.  I watched this in debugger, and I see that the PS and PSINFO tables are still filled from the last RFC whenever I make a subsequent RFC!  When it finally gets to the point that dialog HR_MAINTAIN_MASTER_DATA is called, it still has the old data in these tables, so it tries to process the infotypes AGAIN.  This is very bad!  For one thing, the previous RFC which used HR_INFOTYPE_OPERATION might have been for an applicant number (TCLAS = 'B') and the current RFC might be for an employee number (TCLAS = 'A').  We have seen this happen, and it resulted in a short dump (it's a long story - just trust me when I say that it is causing a lot of problems!).
    I was able to resolve the issue in one of my function modules by adding a call to function module HR_PSBUFFER_INITIALIZE at the beginning of the function module.  However, I don't want to have to add this to the beginning of every function module that I write.  Also, I think that this is a problem which needs to actually be solved instead of using a band-aid like this.
    This is what I want to know - Why are these buffer tables still filled from the last RFC whenever I make the next RFC?  Is this because it is set up as a "trusted" connection?  Is this related to the fact that my BSP application is stateful instead of stateless?  Does something need to be changed on my RFC destination configuration so that each RFC starts out with "clean" buffer tables?
    Thanks in advance for whatever advice you can offer me!
    Shannon

    I don't think this has anything to do with the trusted connection. It is because your application is stateful.  If you watch in the process overview in your system you will see that with a stateful application, no only does your BSP session state remain between calls, but also you should see a thread per user for the RFC connection. 
    That means that the Session state is also still alive on your R/3 4.6C system for a period of time as well (RFC keep alive time).  We have used this to our advantage before when building BSP applications (caching of data in Global Data of a Function Group).
    However you have the opposite problem.  It sounds like you would want to call the HR_PSBUFFER_INIT at the start of each transaction.  If you writting this as a Classic Dynpro Transaction would you not do the same? 
    You might try calling RFC_CONNECTION_CLOSE as well.  This should close the connection and end the state on the R/3 side.  However you will have the performance overhead of reestablishing a new connection on the next call.  But RFC connections seem to be very efficient.  I doubt you would notice any performance difference.

  • Custom Metadata Extension with RFC call

    Hi all,
    I am trying to create a custom metadata extension that pulls data from ECC via an RFC call and returns values as a IMetaValueList in the getAllowedValues method.
    Does anybody have any experience?
    Thx
    Ismail

    Hello Sanjeev,
    - I Kept External break point in SRM where we are calling RFC Call for ECC, I am able to debug untill the RFC call,
    - But, on RFC Call ( CALL FUNCTION ZABC destination <Destination>), when I press F5 it is not going inside the function module.
    - I am getting Export parameter values, means ctrl is going to ECC, but not able to debugg our BE system -ECC.
    Pls suggest. Thanks for your quick reply.
    Regards,
    Mohan Vamsi

  • Can't get the tables normally using RFC call to BC

    SAP Business Connector Developer.
    ->IDataUtil.getIDataArray function (can't work properly using RFC CALL)( I think it's the source of problem)
    I use the SAP Business Connector Developer(4.7) to get data from db2.
    and I create a JAVA service in th BC named writeData,
    the most important snippet shown below.
      // Get IDataCursor to manipulate pipeline
      IDataCursor idcPipeline = pipeline.getCursor();       
      // If the value is not an IData[], returns null.
      IData[] recordListIn = IDataUtil.getIDataArray( idcPipeline, "ORICONTENT" );
      idcPipeline.first( "CHECKEDDATE" );
      String checkedDate  = (String) idcPipeline.getValue();
      idcPipeline.first( "CPYCOD" );
      String cpycod= (String) idcPipeline.getValue();
       /* if ( recordListIn == null )
              errMsg += "No Input Data";
              recLen=0;
      }else{
            recLen= recordListIn.length;
      try{
         recLen= recordListIn.length;
      catch(Exception ed){
         errMsg += "\r\nExceptionIn: " + ed.getMessage();
         recLen=0;
      In BC, the variable recLen can get the record list length normally, but if i call the function in the SAP,
    the system throw an exception, the ed.getMessage() return value NULL.
      I think the problem which the rfc can't work properly is that the method IDataUtil.getIDataArray execute unnormal.
      I have set value to ORICONTENT(record list) in SAP, and it can return the record that i have set to the SAP System,
    and in the java service,  I have return another record list creating using the following spippet, It can work normally.
    com.wm.app.b2b.server.DBConnection db
            =new com.wm.app.b2b.server.JDBCConnection(driverString,userName,
                    userPwd);
              com.wm.util.Values ida= db.execSQL(selectSql);
              idcPipeline.insertAfter("OUTDATAREC", ida );
              db.close();
    I have tried some adjustments, but nothing can work.
    The reason That I use one jave service instead of standard flow services is I have to transfer data to more than two db2 servers, and I have to keep the consistency.
    Attached please find the SAP test page (using se37) and the java service code.
    May you kindly help me to solve this problem, I don't know the real reason, and which is very emergent, but i can't changed Priority(If I changed it ,the page is unuseful).
    Additional,I have added some code shown below,
    idcPipeline.first( "ORICONTENT" );
    java.lang.Object curObj = idcPipeline.getValue();
    if (curObj == null)
    errMsg +=" object is null ";
    else{
    errMsg +=" object isnt null ";
    try{
    recordListIn=(IData[])curObj;
    } catch(Exception ed){
    errMsg += " ExceptionOBj: " + ed.getMessage();
    recLen=0;
    In BC, everything is ok. but call the function in the sap, Show the following informatin:
    Object isnt null
    ExceptionOBj: com.wm.util.Table

    Hi, Mei Xie
    you mentioned 'In BC, everything is ok. but call the function in the sap, Show the following informatin: ....', I think the return value of RFC is null.
    have you tried to add a try catch around the RFC call, like following:
    try {
      IDataCursor idcPipeline = pipeline.getCursor();
    } catch (Exception ...)
    I'm not familiar with jave, only worked on C#, but I think try to catch the exception on RFC call is worth doing. Maybe it will descript some information around the problem.
    By the way, can you tell me which RFC/BAPI you are calling?
    I don't know what 'In BC, everything is ok.' mean. I have no experience on BC, only used dotnet connector. So can you explain how you use BC for me?
    thanks

  • Runtime.getRuntime().exec() does not return

    Hello,
    I am running into a case where the call to Runtime.getRuntime.exec(command) does not return. The scenario is that the main thread spawns another thread which calls the Runtime.exec(). Since the call does not return, both threads seems to be hung. The jstack output from the main thread shows
    ----------------- t@2 -----------------
    0xfeedab45 ___lwp_cond_wait + 0x15
    0xfeb4030d void os::PlatformEvent::park() + 0xa9
    0xfebadd48 void ObjectMonitor::wait(long long,bool,Thread*) + 0x26c
    0xfe770287 void ObjectSynchronizer::wait(Handle,long long,Thread*) + 0xef
    0xfe76ffbb JVM_MonitorWait + 0x20f
    0xfb20a032 * java.lang.Object.wait(long) bci:0 (Interpreted frame)
    0xfb20308d * java.lang.Thread.join(long) bci:38 line:1143 (Interpreted frame)
    0xfb20308d * java.lang.Thread.join() bci:2 line:1196 (Interpreted frame)
    0xfb20308d * DataLoader.checkThreadGroup() bci:92 line:316 (Interpreted frame)
    0xfb202f27 * DataLoader.checkTables(int) bci:1 line:336 (Interpreted frame)
    0xfb202f69 * DataLoader.runLoad(int, java.lang.String, java.lang.String, java.lang.String, com.sabre.fltsked.apm.util.FSIOHelper)
    ... more below ....
    So it is waiting for the spawned thread on a join()
    And the jstack dump for the thread that called exec() is
    ----------------- t@70 -----------------
    0xfeed7409 __lwp_park + 0x19
    0xfeed1be7 cond_wait_queue + 0x5e
    0xfeed1f64 cond_wait_common + 0x1db
    0xfeed20d2 condwait + 0x7b
    0xfeed20fd cond_wait + 0x21
    0xfeed2136 pthread_cond_wait + 0x1b
    0x9741082a soft_delete_object_cleanup + 0x57
    0x97410906 soft_delete_object + 0x5b
    0x97410953 soft_delete_all_objects_in_session + 0x2e
    0x97407b7a soft_delete_session + 0xec
    0x97407860 soft_delete_all_sessions + 0x3c
    0x97402525 finalize_common + 0x66
    0x974026ae softtoken_fini + 0x34
    0x974355f9 _fini + 0x21
    0xfefdd49a remove_hdl + 0x766
    0xfefd8be9 dlclose_core + 0xb1
    0xfefd8c1d dlclose_intn + 0x21
    0xfefd8c96 dlclose_check + 0x2a
    0xfefd8d00 dlclose + 0x38
    0x97480aeb pkcs11_slottable_delete + 0xb1
    0x9747c691 finalize_common + 0xe2
    0x9747c6e0 pkcs11_fini + 0x3e
    0x9747c3bf pkcs11_fork_child + 0x73
    0xfee628b8 postforkchild_handler + 0x2f
    0xfeeca9ec fork + 0x12e
    0xfe338029 Java_java_lang_UNIXProcess_forkAndExec + 0x395
    0xfb20a032 * java.lang.UNIXProcess.forkAndExec(byte[], byte[], int, byte[], int, byte[], boolean, java.io.FileDescriptor, java.io.FileDescriptor, java.io.FileDescriptor) bci
    :0 (Interpreted frame)
    0xfb202f69 * java.lang.UNIXProcess.<init>(byte[], byte[], int, byte[], int, byte[], boolean) bci:62 line:53 (Interpreted frame)
    0xfb20308d * java.lang.ProcessImpl.start(java.lang.String[], java.util.Map, java.lang.String, boolean) bci:182 line:65 (Interpreted frame)
    0xfb202f27 * java.lang.ProcessBuilder.start() bci:112 line:452 (Interpreted frame)
    0xfb202f27 * java.lang.Runtime.exec(java.lang.String[], java.lang.String[], java.io.File) bci:16 line:593 (Interpreted frame)
    0xfb202f27 * java.lang.Runtime.exec(java.lang.String, java.lang.String[], java.io.File) bci:69 line:431 (Interpreted frame)
    0xfb202f27 * java.lang.Runtime.exec(java.lang.String) bci:4 line:328 (Interpreted frame)
    0xfb202f27 *SQLLoad(java.lang.StringBuffer) bci:181 line:51 (Interpreted frame)
    0xfb202e61 *FSLoadThread.run() bci:84 line:54 (Interpreted frame)
    The command I am trying to exec is "sqlldr" and I do have it in my PATH variable. Why is that the call to exec does not return? Any ideas?
    This is on jdk1.6.0_17
    Thanks,
    Bijoy.

    It has definitely forked, and this is the child process. It says so. If it was the parent process it would just show Java code related to launching processes. That does not involve PKCS11. After the fork there are two identical processes with the same stack: the child process of the fork goes on to replace itself with the target command via Unix exec(), which it doesn't look like it is succeeding at. The parent process doesn't do much at all, probably just housekeeping and then a Unix wait() for Process.waitFor() to hook into.

  • Program making a RFC call to Function Module not working in background

    Hi All,
    I have an ABAP Program which is used to do a reconciliation check between the R/3 and BI system for Invoice Data. Please find below the details of the program flow:
    1.     Program counts the number of records in the DSO table and aggregates the Net_Value based on the date range (passed as parameters)
    2.     Program calls a Function Module (RFC Call) which counts the number of records in the R/3 table and aggregates the Net_Value for the same date range
    3.     Function Module Passes back the count values and aggregated Net_Value to the program
    4.     Program compares the count and aggregated Net_Value from EDWH and MSP systems and sends an email mentioning whether the counts match or not
    However we are facing an issue.
    Whenever, we execute the program in dialog mode, it works fine and fetches results within 5-6 minutes. However if we schedule the program to run in background (parameters through a variant), it gives no results even after running for over 3-4 hours. We tried figuring it out yesterday but could not come to any conclusion. Since there is a RFC call being to the function module, we were wondering if we need to specify some other parameter as well.
    Thanks & Regards
    Dharmendra

    RFC Call is a procedure for executing remote enables function modules. It is done via the 'Remote Enabled' radio button on the function module's attribute screen.

  • Assigning value returned from RFC call to a global variable

    If I have an RFC call to SAP how can I assign the value returned to a global variable on my data services job?

    Hi,
    For now, it seems u haven't specified the destination properly. the call function statement must be suffixed with the 'destination' addition to make sure that the function call is an RFC and the particular function be executed at the desired destination.

  • 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

  • Call to flush() does not return

    I have an application that manages network connections to various other applications and sends and receives messages (lines of text) to and from each. Each message to be sent is written to the socket's output stream, followed by a call to flush()
    Occasionally, a call to flush() on one of the sockets will freeze, and fail to return. This behavior is random and fairly rare and thus I haven't been able to reproduce it. A stack trace of the affected thread follows:
    TradeThread 2" daemon prio=10 tid=0x0000000043618800 nid=0x4b5 runnable [0x00000000427f4000]
       java.lang.Thread.State: RUNNABLE
            at java.net.SocketOutputStream.socketWrite0(Native Method)
            at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
            at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
            at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
            at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)
            at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)
            at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)
            - locked <0x00002aaab36a6558> (a java.io.OutputStreamWriter)
            at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)
    {code}
    Perhaps the buffer on the consumer end of the socket is full, but that seems unlikely, as the app consuming the messages has no exceptions, and seems to be performing fine (i.e. is not consuming messages slower than they are being sent).
    Does anybody know of any other reason a call to flush would not return?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    Will that call block forever?No, see below. However there's no write timeout if that's what you mean.
    It seems that being unable to flush a buffer because the consumer won't take any more data would warrant an exception being thrown.Why? What if the consumer stops reading for an hour? a day? a year? Where exactly are you going to draw the line? A write timeout would be nice but TCP doesn't have one.
    What if the app on the consumer side of the connection exits? Wouldn't that cause an IOException to be thrown?Yes, IOException: connection reset by peer, if the peer closes the connection via any means.

  • JCo's StatefulServerExample problem (returning a value from RFC call?)

    Hi,
    I'm using JCo3 and want to run StatefulServerExample sample program. I've created the ABAP-side code according to JCo's docs (2 wrappers and report ZJCO_STATEFUL_COUNTER). I'm connecting to SAP CRM. I've successfully runned all other sample programs.
    I've got a problem with receiving data from the JCo server to CRM report. The error is reported on the SAP's side:
    error:          CALL_FUNCTION_WRONG_VALUE_LENG
    description:    Incorrect field length for 'Remote Function Call'.
    error analysis:
    A data error occured when executing a Remote Function Call
    The length of one of the fields is incorrect.
    Length of source field... 1
    Length of target field .. 4
    Data type of field....... 8
    (Data type 0=C, 1=D, 2=P, 3=T, 4=X, 6=N, 7=F, 8=I)
    error is triggered by the call to 'Z_GET_COUNTER' (see code below).
    There is no problem with preceding calls to JCo server which do not return anything.
    I would appreciate any help with this problem!
    Piotr
    Problematic report code:
    *& Report  ZJCO_STATEFUL_COUNTER
    REPORT  ZJCO_STATEFUL_COUNTER.
    PARAMETER dest TYPE RFCDEST.
    DATA value TYPE I.
    DATA loops TYPE i VALUE 5.
    DO loops TIMES.
      CALL FUNCTION 'Z_INCREMENT_COUNTER' DESTINATION dest.
    ENDDO.
    CALL FUNCTION 'Z_GET_COUNTER' DESTINATION dest
      IMPORTING
        GET_VALUE = value.
    IF value <> loops.
      write: / 'Error expecting ', loops, ', but get ', value,
      ' as counter value'.
    ELSE.
      write: / 'success'.
    ENDIF.

    It seems to me that the ABAP code in the example is wrong - it should be INT1 instead of i:
    DATA value TYPE INT1.
    Now it works.

Maybe you are looking for