Using first call? in LVOOP

LVOOP experts,
I am quite green when in comes to LV classes, but am striving to understand them better.
Is there any way to use the First Call? primitive inside a static dispatch method VI? It seems to work fine when I have one instance of my class, but does not work if I create several instances (which was my goal in the first place). The First Call only returns true for the very first instance, all the others it returns false all the time.
It is quite easy for me to add an initialise method to the class, but was wondering if its possible to do it with the First Call?
Thanks
Neil
nrp
CLA
Solved!
Go to Solution.

First things first:
I am not a LVOOP expert but I am trying!
You can use the fFirst Call but it wil only be true the first time the containing VI runs. It could be used to develop a Singlton design pattern so that if multiple threads try to init the class using a VI with First Call could enusre that only a single instance it created.
I think you should go with the "Init" or "Create" method for each instance.
like i said, I am no expert. Please reply if I am not making sense!
Ben
Ben Rayner
I am currently active on.. MainStream Preppers
Rayner's Ridge is under construction

Similar Messages

  • First Call?

    Hello, does anyone know where the First Call? vi is located in the toolbars?
    thanks,
    joe

    Hello all:
    So this part of the post seemed to be a battlefield? Anyway in the past
    I've used all sorts of notifiers and synchros on my codes because I
    managed motion coordinates, acquisition and Vision in parallel loops I
    have not used "first call" so it is rather really foreign to me since
    anyway your .INI could be called at the start-up anyway. But since this
    is really new I would like to ask how does it really work? I am
    somewhat confused about "first call" being like and should be really be
    called "first time" or even "first time call". May I ask about this
    "first call" thing:
    Q1. Would it flag me a value (Boolean) when I clicked my Icon or when I simply push for a run button?
    Q2. If I abort or stop in the middle of the process does "first call"
    reverts again to an uninitialized state? (like it's going to be first
    call again?)
    Q3. Would it work for a case I want to latched a condition at the
    "power-up" of the VI and never go back at it again? Would an abort or
    stop the VI revert it?
    Q4. Is the "first call" a first time to push a run button or first time to execute a part of the code?
    Thank you in advance for those who would enlighten me on this?
    Regards,
    Berns B.
    Bernardino Jerez Buenaobra
    Senior Test and Systems Development Engineer
    Test and Systems Development Group
    Integrated Microelectronics Inc.- Philippines
    Telephone:+632772-4941-43
    Fax/Data: +632772-4944
    URL: http://www.imiphil.com/our_location.html
    email: [email protected]

  • How to create bdc for fbs1 using both call transaction and session

    Hi Friends,
    i have one problem with tcode FBS1, i need to create a bdc program for both call transaction and session method using subroutine.
    first call transaction needs to execute if there is an error sesion has to execute. if u have code please forward.
    thanks in advance.
    chandramouli pothugunta

    where as in call transaction we can do error handling explictly.those errors  are stored in one file .this file will send to the error log(session method),i.e session log.
    in the above case we use both call transaction n session method at time in one program.sample code is below ,go through it .
    data : begin of itxk01 occurs 0,
    end of itxk01.
    data : bdcdata like itbdcdata occurs 0 with header line.
    data : itbdcmsgcoll like itbdcmsgcoll occurs 0 with header line,
             itxk01 like itxk01-dup occurs 0 with header line.
    call gui-upload.
    loop at itxk01.
    refresh itxk01.
    perform bdc-dynpr0 using 'prg' 'scr'
    perform bdc-dynfld using fnam fval
    call transaction 'xk01' using bdcdata mode 'a' update 's' messages into itbdcmsgcoll.
    if sy-subrc ne 0.
    append itxk01 into  itxk01-dup.
    endif.
    endloop.
    if not itxk01-dup[] is initial.
    refresh itck01.
    call bdc_open_group
    itxk01 = itxk01-dup.
    loop at itxk01.
    refresh itxk01.
    perform bdc-dynpr0 using 'prg' 'scr'
    perform bdc-dynfld using fnam fval
    call bdc-insert.
    endloop.
    call bdc-close-group.
    form bdc-dynpr0 using pr sc
    endform .
    form bdc-field  using fnam faval
    endform.
    this will help u.
    reward points for me
    kiran

  • SOLVED: How can I use or call a function that returns %ROWTYPE?

    Hi
    edit: you can probably skip all this guff and go straight to the bottom...In the end this is probably just a question of how to use a function that returns a %rowtype.  Thanks.
    Currently reading Feuerstein's tome, 5th ed. I've downloaded and run the file genaa.sp, which is a code generator. Specifically, you feed it a table name and it generates code (package header and package body) that will create a cache of the specified table's contents.
    So, I ran:
    HR@XE> @"C:\Documents and Settings\Jason\My Documents\Work\SQL\OPP5.WEB.CODE\OPP5.WEB.CODE\genaa.sp"
    749  /
    Procedure created.
    HR@XE> exec genaa('EMPLOYEES');which generated a nice bunch of code, viz:
    create or replace package EMPLOYEES_cache is
        function onerow ( EMPLOYEE_ID_in IN HR.EMPLOYEES.EMPLOYEE_ID%TYPE) return HR.EMPLOYEES%ROWTYPE;
        function onerow_by_EMP_EMAIL_UK (EMAIL_in IN HR.EMPLOYEES.EMAIL%TYPE) return HR.EMPLOYEES%ROWTYPE;
        procedure test;
    end EMPLOYEES_cache;
    create or replace package body EMPLOYEES_cache is
        TYPE EMPLOYEES_aat IS TABLE OF HR.EMPLOYEES%ROWTYPE INDEX BY PLS_INTEGER;
        EMP_EMP_ID_PK_aa EMPLOYEES_aat;
        TYPE EMP_EMAIL_UK_aat IS TABLE OF HR.EMPLOYEES.EMPLOYEE_ID%TYPE INDEX BY HR.EMPLOYEES.EMAIL%TYPE;
        EMP_EMAIL_UK_aa EMP_EMAIL_UK_aat;
        function onerow ( EMPLOYEE_ID_in IN HR.EMPLOYEES.EMPLOYEE_ID%TYPE)
            return HR.EMPLOYEES%ROWTYPE is
            begin
                return EMP_EMP_ID_PK_aa (EMPLOYEE_ID_in);
            end;
        function onerow_by_EMP_EMAIL_UK (EMAIL_in IN HR.EMPLOYEES.EMAIL%TYPE)
            return HR.EMPLOYEES%ROWTYPE is
            begin
                return EMP_EMP_ID_PK_aa (EMP_EMAIL_UK_aa (EMAIL_in));
            end;
        procedure load_arrays is
            begin
                FOR rec IN (SELECT * FROM HR.EMPLOYEES)
                LOOP
                    EMP_EMP_ID_PK_aa(rec.EMPLOYEE_ID) := rec;
                    EMP_EMAIL_UK_aa(rec.EMAIL) := rec.EMPLOYEE_ID;
                end loop;
            END load_arrays;
        procedure test is
            pky_rec HR.EMPLOYEES%ROWTYPE;
            EMP_EMAIL_UK_aa_rec HR.EMPLOYEES%ROWTYPE;
            begin
                for rec in (select * from HR.EMPLOYEES) loop
                    pky_rec := onerow (rec.EMPLOYEE_ID);
                    EMP_EMAIL_UK_aa_rec := onerow_by_EMP_EMAIL_UK (rec.EMAIL);
                    if rec.EMPLOYEE_ID = EMP_EMAIL_UK_aa_rec.EMPLOYEE_ID then
                        dbms_output.put_line ('EMP_EMAIL_UK  lookup OK');
                    else
                        dbms_output.put_line ('EMP_EMAIL_UK  lookup NOT OK');
                    end if;
                end loop;
            end test;
        BEGIN
            load_arrays;
        end EMPLOYEES_cache;
    /which I have run successfully:
    HR@XE> @"C:\Documents and Settings\Jason\My Documents\Work\SQL\EMPLOYEES_CACHE.sql"
    Package created.
    Package body created.I am now trying to use the functionality within the package.
    I have figured out that the section
        BEGIN
            load_arrays;
        end EMPLOYEES_cache;
    /is the initialization section, and my understanding is that this is supposed to run when any of the package variables or functions are referenced. Is that correct?
    With that in mind, I'm trying to call the onerow() function, but it's not working:
    HR@XE> select onerow(100) from dual;
    select onerow(100) from dual
    ERROR at line 1:
    ORA-00904: "ONEROW": invalid identifier
    HR@XE> select employees_cache.onerow(100) from dual;
    select employees_cache.onerow(100) from dual
    ERROR at line 1:
    ORA-06553: PLS-801: internal error [55018]
    HR@XE> select table(employees_cache.onerow(100)) from dual;
    select table(employees_cache.onerow(100)) from dual
    ERROR at line 1:
    ORA-00936: missing expressionHe provides the code genaa.sp, and a very brief description of what it does, but doesn't tell us how to run the generated code!
    Now, I have just done some googling, and it seems that what I am trying to do isn't possible. Apparently %ROWTYPE is PL/SQL, and not understood by SQL, so you can't call onerow() from sql. Correct?
    So I try wrapping the call in an exec:
    HR@XE> exec select employees_cache.onerow(100) from dual;
    BEGIN select employees_cache.onerow(100) from dual; END;
    ERROR at line 1:
    ORA-06550: line 1, column 30:
    PLS-00382: expression is of wrong type
    ORA-06550: line 1, column 7:
    PLS-00428: an INTO clause is expected in this SELECT statement
    HR@XE> exec select table(employees_cache.onerow(100)) from dual;
    BEGIN select table(employees_cache.onerow(100)) from dual; END;
    ERROR at line 1:
    ORA-06550: line 1, column 14:
    PL/SQL: ORA-00936: missing expression
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignored
    HR@XE> exec employees_cache.onerow(100)
    BEGIN employees_cache.onerow(100); END;
    ERROR at line 1:
    ORA-06550: line 1, column 7:
    PLS-00221: 'ONEROW' is not a procedure or is undefined
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignoredNo joy.
    Of course, now that I'm looking at it again, it seems that the way to go is indicated by the first error:
    PLS-00428: an INTO clause is expected in this SELECT statement
    So am I supposed to create a type of EMPLOYEES%ROWTYPE in a PL/SQL procedure, and the idea of this code, is that the first call to onerow() runs the initialiation code, which populates the cache, and all subsequent calls to onerow() (whether by my session or any other) will use the cache?
    I've had a stab at this, but still, no joy:
    create or replace procedure testcache is
        emp employees%rowtype;
        begin
            select employees_cache.onerow(100) from dual into emp;
            dbms_output.put_line('Emp id: ' || emp.employee_id);
        end testcache;
    show errors
    HR@XE> @testcache.sql
    Warning: Procedure created with compilation errors.
    Errors for PROCEDURE TESTCACHE:
    LINE/COL ERROR
    4/9      PL/SQL: SQL Statement ignored
    4/54     PL/SQL: ORA-00933: SQL command not properly ended
    HR@XE>Have a feeling this should be really easy. Can anybody help?
    Many thanks in advance.
    Jason
    Edited by: 942375 on 08-Feb-2013 11:45

    >
    Ha, figured it out
    >
    Hopefully you also figured out that the example is just that: a technical example of how to use certain Oracle functionality. Unfortunately it is also an example of what you should NOT do in an actual application.
    That code isn't scaleable, uses expensive PGA memory, has no limit on the amount of memory that might be used and, contrary to your belief will result in EVERY SESSION HAVING ITS OWN CACHE of exactly the same data if the session even touches that package.
    Mr. Feuerstein is an expert in SQL and PL/SQL and his books cover virtually all of the functionality available. He also does an excellent job of providing examples to illustrate how that functionality can be combined and used. But the bulk of those examples are intended solely to illustrate the 'technical' aspects of the technology. They do not necessarily reflect best practices and they often do not address performance or other issues that need to be considered when actually using those techniques in a particular application. The examples show WHAT can be done but not necessarily WHEN or even IF a given technique should be used.
    It is up to the reader to learn the advantages and disadvantages of each technicalogical piece and determine when and how to use them.
    >
    Now, I have just done some googling, and it seems that what I am trying to do isn't possible. Apparently %ROWTYPE is PL/SQL, and not understood by SQL, so you can't call onerow() from sql. Correct?
    >
    That is correct. To be used by SQL you would need to create SQL types using the CREATE TYPE syntax. Currently that syntax does not support anything similar to %ROWTYPE.
    >
    So am I supposed to create a type of EMPLOYEES%ROWTYPE in a PL/SQL procedure, and the idea of this code, is that the first call to onerow() runs the initialiation code, which populates the cache, and all subsequent calls to onerow() (whether by my session or any other) will use the cache?
    >
    NO! That is a common misconception. Each session has its own set of package variables. Any session that touches that package will cause the entire EMPLOYEES table to be queried and stored in a new associative array specifically for that session.
    That duplicates the cache for each session using the package. So while there might be some marginal benefit for a single session to cache data like that the benefit usually disappears if multiple sessions are involved.
    The main use case that I am aware of where such caching has benefit is during ETL processing of staged data when the processing of each record is too complex to be done in SQL and the records need to be BULK loaded and the data manipulated in a loop. Then using an associative array as a lookup table to quickly get a small amount of data can be effective. And if the ETL procedure is being processed in parallel (meaning different sessions) then for a small lookup array the additional memory use is tolerable.
    Mitigating against that is the fact that:
    1. Such frequently used data that you might store in the array is likely to be cached by Oracle in the buffer cache anyway
    2. Newer versions of Oracle now have more than one cache
    3. The SQL query needed to get the data from the table will use a bind variable that eliminates repeated hard parsing.
    4. The cursor and the buffer caches ARE SHARED by multiple sessions globally.
    So the short story is that there would rarely be a use case where ARRAYs like that would be preferred over accessing the data from the table.

  • CoCreateInstance returns 0x8007007e (Module could not be found) for the first call only at system startup on Windows 2008 Enterprise SP2

    Hi Guys,
    I'm experiencing a problem with CoCreateInstance, where it returns error 0x8007007e.
    The code is something like this:
    HRESULT hRes = S_OK;
    CComPtr<IMyInterface> spObj;
    if(FAILED(CoInitialize(NULL))) { /* quit */ }while(FAILED(hRes = spObj.CoCreateInstance(CLDIS_MyClass, NULL, CLSCTX_LOCAL_SERVER)))
    // LogFailure(hRes);
    Sleep(10);
    The problems occurs only on a single machine having Windows 2008 Enterprise SP2 installed (it works fine on other machines / OS versions). It happens only during the system startup (this is a Windows Service) and only for the first call of the CoCreateInstance.
    The second call always succeeds.
    The problem does not occurr when starting the service manually from Services.
    I did some investigation using Process Monitor and found that the HKCR\CLSID\[CLSID of MyClass]\LocalServer32!LocalServer32 registry value is accessed before the failure. The registry value exists - it is added by the Windows Installer during
    installation.
    If I remove the registry value then the CoCreateInstance always succeeds.
    I've been trying to lookup for some documentation on HKCR\CLSID\...\LocalServer32!LocalServer32 but haven't found anything useful other than it's a "Windows Installer Entrypoint". I assume that the Windows Installer does some integrity checks when
    calling CoCreateInstance for such class and this fails for some reason but currently I fail to find the reason.
    Can anyone help finding out what's the root cause of the 0x8007007e error here, please? Any help or tip is much appreciated.
    Many thanks!
    Marcin.

    Hi Marcin,
    This forum is mainly for talk about the product use related issue and not the best place to talk about the develop issue, for the develop issue we can post in MSDN forum for
    the further help and your issue may need capture a dump then for the further analysis it is not an efficient way to work in this community since we may need more resources which is not appropriate to handle in the community. I‘d like to suggest that you submit
    a service request to MS Professional tech support service so that a dedicated Support Professional can further assist with this request.
    MSDN forum
    https://social.msdn.microsoft.com/Forums/en-US/home
    Please visit the below link to see the various paid support options that are available to better meet your needs.
    http://support.microsoft.com/default.aspx?id=fh;en-us;offerprophone
    Thanks for your understanding and support.
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Support, contact [email protected]

  • How to get the size of physical memory by using system call ?

    how to get the size of physical memory by using system call ?What system call can be used for me to get the size of physical memor? thanks.

    %vmstat 3
    procs memory page disk faults cpu
    r b w swap free re mf pi po fr de sr s0 -- -- -- in sy cs us sy id
    0 0 0 3025816 994456 4 19 6 0 0 0 0 8 0 0 0 459 253 139 1 1 99
    0 0 0 2864688 777408 0 2 0 0 0 0 0 3 0 0 0 428 134 175 0 1 99
    0 0 0 2864688 777408 0 0 0 0 0 0 0 7 0 0 0 448 112 166 0 0 100
    one interesting observation about vmstat I found out is (mostly on Solaris)
    the first line of information always off chart, so I usually do a few interval to get constant result.
    if you use linux
    just
    cat /proc/meminfo

  • Skype Windows client hangs for the first call - co...

    Hi,
    Skype on my Windows 8.1 (depending on its mood) hangs for the first call. It will keep ringing and ringing till it times out, during that time I am not able to hang up the call as well, the red hang up button doesnt work and we have to let the call go on till it drops on its own. Then on the second try it connects perfectly fine. This happens most of the times, there are only a few days where it connects on the first try otherwise its always the 2nd time. 
    Please let me know what could be the possible solution for this one?
    Thanks

    Hi Marcin,
    This forum is mainly for talk about the product use related issue and not the best place to talk about the develop issue, for the develop issue we can post in MSDN forum for
    the further help and your issue may need capture a dump then for the further analysis it is not an efficient way to work in this community since we may need more resources which is not appropriate to handle in the community. I‘d like to suggest that you submit
    a service request to MS Professional tech support service so that a dedicated Support Professional can further assist with this request.
    MSDN forum
    https://social.msdn.microsoft.com/Forums/en-US/home
    Please visit the below link to see the various paid support options that are available to better meet your needs.
    http://support.microsoft.com/default.aspx?id=fh;en-us;offerprophone
    Thanks for your understanding and support.
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Support, contact [email protected]

  • Cannot pick up calls on wait, Cannot make a second call holding the first call

    I have a really weird problem with my iPhone 5S. (iOS 7.1)
    1. When I am on a call, I am not able to pick up a second call that is on wait. I can see the second call, I can hear the beep sounds but as soon as I pick up, the call freezes in 00.00 time, and My first caller is still active, not on hold.
    2. When I am on a call, I am not able to make a second call placing the first call on hold. The second call disconnects immediately with 3 beeps.
    3. I am able to see the incoming calls on wait, when I am already on a call. I am able to hear the beeps coming in. SO it means the call waiting is on (Tried turning it on/off/on too.) But when I pick up the call, the above problem comes in.
    What have I tried to solve this: (None of them helped)
    1. I tried a hard reset of my iPhone (Holding Power and Home button)
    2. I tried toggling the Call waiting button
    3. I tried resetting network settings.
    4. I called my Operator for assistance. I am using Airtel, India. They told me to dial this code - *43# . I tried it and it gave me this screen. But the problem is not solved yet.
    Is there anybody here who is facing the same issue with your iPhone? I never had this problem with my iPhone 4.

    Make sure you do not have "Do Not Disturb" turned on. This feature will block the first call, but is someone calls right back it will be put through.
    On the iPhone, go to Settings/Do Not Disturb
    Make sure you do not have Do Not Disturb turned on manual or scheduled.

  • When receiving an call waiting can't push the hold and answer button.Because: it will put on hold the first caller, answer to the second, but you can't hear the second until you end the first call !!! Anyone has the same problem ? Did anyone know why ?

    When receiving an call waiting can't push the hold and answer button.Because: it will put on hold the first caller, answer to the second, but you can't hear the second until you end the first call !!! Anyone has the same problem ? Did anyone know why ?

    Contact iTunes Customer Service and request assistance
    Use this Link  >  Apple  Support  iTunes Store  Contact

  • The ATA only rings the first call

    HelloI've just had instaled an ATA Linksys SPA2102 conecting it to a DSL modem CTC UNION model ATU-R130. The SIP is INPHONEX.COM
    My ISP had to redirect some ports to a fixed IP address in order to make the ATA RING.
    I make a call to the number assigned to the ATA and it rings ok the first call (many rings but only the first call).
    After that I make as many calls as I can, but the ATA doesn't detect that a call is going on. Then I must reset the ata with the factory default values and re-enter all the SIP information in order to get the ATA ringing again.The ATA works fine making calls.  The problem is receiving them.Does somebody know what's wrong?
    Thanks
    Juan

    On your next attempt on calling the ATA , try checking the Info page under the Voice tab then look for Hook State, you may want to check first if the ATA disconnected the last call properly. Try checking also if you're using the latest firmware on the unit.

  • First call attempt fails with 12000; reason="Routes available for this request but no available gateway at this point"

    We've installed a new Audiocodes Mediant 1000B gateway for our customer.  They only have about 6 users enabled for Enterprise voice and using Lync for all calls.  They have an intermittent problem whereby the first call attempt to a number on the
    PSTN fails with 12000; reason="Routes available for this request but no available gateway at this point".  There is only one PSTN gateway installed.  All routes point to this gateway.  What I found initially is that the calls
    were failing after 10 seconds which is the default "failovertimeout" in the OutboundRouting.exe.config.  I found this post http://voipnorm.blogspot.co.uk/2012/06/lync-2010-gateway-timeout-call-failures.html and
    changed the value to 20 seconds.  Subsequent failures failed after 20 seconds (the new value).  The interesting thing is that the second attempt even a couple of seconds later succeeds.  My Lync server event log has 46046 "A call to a PSTN
    number failed due to non availability of gateways." for the failed call and 46047 "A PBX gateway is now responding to requests after some failures." for the successful call moments later.
    My environment is Lync 2010.  A single enterprise edition Front End with collocated mediation.  The server is virtual and in a different physical location to the gateway.  The two sites are connected via a LES1000.  The RTT between the
    sites is very low so it isn't necessarily networking.
    In the Syslog output on the Audiocodes we don't see the call even reach the gateway.  It's likely that Lync has simply marked the gateway as down and doesn't route the first call.  Then it wakes up and marks it as up and routes the next call.
    Update wise I'm on 4.0.7577.183, 199 and 217 for those that are up to date and the only components that are behind say that 223 is available.  Those being Core Components, Lync Server, Conferencing Server and Web Components.
    As I said, this is intermittent, apparently doesn't happen for every user (which I don't buy), but is easily replicated on request.
    I definitely think changing the failovertimeout value has reduced the number of failures.  But realistically I don't want users sitting there for 20 seconds before their call fails.  Or 19 seconds for the call to route.
    I've found a few posts on this and similar issues.  I don't get the 25051 or 25052 errors.
    Any help gratefully appreciated.
    Regards
    Randy Chapman
    Best Regards Randy Chapman

    Try to change the value of Failovertimeout to 1000.
    We
    are trying to better understand customer views on social support experience, so your participation in this
    interview project would be greatly appreciated if you have time.
    Thanks for helping make community forums a great place.

  • First call function problem

    hello there,
    i am using labview's first call function inside a for loop, inside a sequence structure. inside the for loop the function works fine activating a true/false structure, however, when i attempt to do the same thing outside the for loop i get a broken arrow. It says that the the tunnel of the case structure, to which i have wired the first call function, is missing an assignment to it. Cant understand why it is fine in one part and not in the other. Perhaps somebody has encountered this before? I have atttached the relevant code
    Thank you
    Dave
    Attachments:
    forum.vi ‏467 KB

    Stranger, I think if you will look closely at the case statement you will see that you have inadvertently added an output tunnel. Either delete the case and redo it or just click on the input tunnel and move it down enough to see and delete the unwired output tunnel.
    goldie

  • Re-seting "first call?" in sub VI

     I am trying to use the 'first call?" thinger in a sub-VI.  I thought it would re-set when the sub-VI was closed, but when it is called again, the "first call?" thing does not give me a true.  Is there any way of correcting this?

    The state has nothing to do with the visibility of the front panel, it will reset every time you newly start the toplevel VI.
    For any given run (not subVI call!), "first call?" will be true exactly once.
    If you want your case to be true every time the subVI is called, replace it with a TRUE boolean diagram constant Another option would be an initialized shift register. It really depends on the details of your code.
    LabVIEW Champion . Do more with less code and in less time .

  • 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

  • Know steps names of called sequence file using sequence call step type in TestStand

    Hi,
        I have a problem in accessing step names in called sequence file using "Sequence call"step type in TestStand 4.0.
    I would list out all step names of called sequence file. Is it possible to do through C#.NET? If, yes, Please explain to me in detail with possible example.
    Thank you,
    regards
    RKK

    Hey RKK,
    I want to first set your expectations for the forums.  This is not a place for people to review and rewrite your code for you; this is a place for specific and general questions.  I am not saying your question in this thread is inappropriate, because it is a good questions.  We should just not post code and ask others to fix it here.  If you are looking for this type of service we have alliance members that can help you write your TestStand Operator Interface (www.ni.com/alliance).
    As for you question about getting the sequence names for a sequence file that is not the currently running sequence file, you will need to open a reference to that sequence files and then use the API calls that I mentioned in my previous posts.  You can use the Enigine.GetSequenceFileEx function to open a reference to sequence file, and you will need to close the reference with the Engine.ReleaseSequenceFile function when you are done using it.  After you have a reference to this external Sequence File, you can use the example dll and sequence I previously sent you.  I also attach a new sequence file (SeqFile2.seq) plus an updated GetNames.seq to illustrate how to use the above mentioned functions.  I hope this helps.  Have a great day!
    Best Regards,
    Software Engineer
    Jett R
    Attachments:
    GetNamesOfSequencesInFile.zip ‏52 KB

Maybe you are looking for