Program - Parallel processing

Hi
I need to get an idea about the parallel processing of a program to get a better performance and submit the program in background. If anyone have any simple code which give a better undersatnding please post it.

Hi Vighnesh
You can search a lot about 
parallel processing
in SCN.
Use advance search option like.....
https://www.sdn.sap.com/irj/scn/advancedsearch?cat=sdn_all&query=parallelprocessing&adv=false&sortby=cm_rnd_rankvalue
Let me know in case of any issues.
s@chin

Similar Messages

  • Standard Program - Parallel Processing

    Hi Gurus -
    Is there any standard program or transaction which allows me to execute another program parallely ( in background with multiple sessions ) ? ( It's not SM37 ).
    Thanks
    John

    Hi,
    To multitask an abap program, a standard way is to use asynchronous RFC calls with this syntax :
    CALL FUNCTION func STARTING NEW TASK task
                  [DESTINATION {dest|{IN GROUP {group|DEFAULT}}}]
                  parameter_list
                  [{PERFORMING subr}|{CALLING meth} ON END OF TASK].
    Extras:
    1. ... DESTINATION IN GROUP {group|DEFAULT}
    2. ... {PERFORMING subr}|{CALLING meth} ON END OF TASK
    Check this example :
    <a href="http://help.sap.com/saphelp_nw70/helpdata/en/22/042592488911d189490000e829fbbd/frameset.htm">Asynchronous RFC Parallel processing Example</a>
    Best Regards,
    Olivier

  • ABAP program parallel processing

    Dear team,
    (Not sure if I have opened this message at correct place)
    We have A program (forecasting that is related to Production planning). It runs country wise.
    We have it running for Country XYZ where there are many plants; the job runs without any glitch to system.
    Same program runs for another country at different time. (with different variant). Problem arises here..... All the dialog work process gets clogged with the Sequential read of table swequeue. Also Internal RFC destinations (those pointing towards Application server of ECC and 'NONE') get occupied in SM58.
    When this job runs; It is impossible to login to system or even put another tcode. (simply system has no free dialog work process).
    What could be reason ? in sm58 I see that all transaction are either running or recorded or error like Comm. table full (that is cause gateway comm. limit)
    All I see in SM58 is the Function module IDOCs_OUTPUT_VIA_XML_HTTP is running in parallel.
    Please help.
    Regards,
    Arthur

    Maybe you do not have other programs that use that much of parallelism...
    By default parallel groups defined in RZ12 should include some quota rules to avoid saturating the dialog process...
    Have a look at parameter rdisp/rfc_check, I had to set it from default 1 to 2 in a similar scenario.
    With the default value (1) only asynchronous RFC calls are restricted, with (2) the quotas are also applied for synchronous RFC calls.
    Regard
    https://help.sap.com/saphelp_nw70/helpdata/en/76/992c1f8731514c8467e77f115796c7/content.htm
    Level 2: Monitors, additionally to level 1, all RFCs started anew from asynchronous RFC sessions. This includes synchronous RFCs.So that applications that transmit a lot of RFCs can run at this level, the number of dialog processes used for RFCs may have to be increased. (rdisp/rfc_min_wait_dia_wp may have to be reduced).
    Increase the value if you notice that your application server becomes flooded with RFCs and dialog mode is no longer possible, even though you have set rdisp/rfc_min_wait_dia_wp.

  • Parallel Processing through ABAP program

    Hi,
    We are trying to do the parallel processing through ABAP. As per SAP documentation we are using the CALL FUNCTION STARTING NEW TASK DESTINATION.
    We have one Z function Module and as per SAP we are making this Function module (FM)as Remote -enabled module.
    In this FM we would like to process data which we get it from internal table and would like to send back the processed data(through internal table) to the main program where we are using CALL FUNCTION STARTING NEW TASK DESTINATION.
    Please suggest how to achieve this.
    We tried out EXPORT -IMPORT option meaning we used EXPORT internal table in the FM with some memory ID and in the main program using IMPORT internal table with the same memory ID.  But this option is not working even though ID and name of the internal table is not working.
    Also, SAP documentation says that we can use RECEIVE RESULTS FROM FUNCTION 'RFC_SYSTEM_INFO'
    IMPORTING RFCSI_EXPORT = INFO in conjunction with CALL FUNCTION STARTING NEW TASK DESTINATION. Documentation also specifies that "RECEIVE is needed to gather IMPORTING and TABLE returns of an asynchronously executed RFC Function module". But while creating the FM remote-enabled we cant have EXPORT or IMPORT parameters.
    Please help !
    Thanks in advance
    Santosh

    <i>We tried out EXPORT -IMPORT option meaning we used EXPORT internal table in the FM with some memory ID and in the main program using IMPORT internal table with the same memory ID. But this option is not working even though ID and name of the internal table is not working</i>
    I think that this is not working because that memory does not work across sessions/tasks.  I think that the
    IMPORT FROM SHARED BUFFER and EXPORT TO SHARED BUFFER would work.  I have used these in the past and it works pretty good.
    Also,
    here is a quick sample of the "new task" and "recieve" functionality.   You can not specify the importing parameters when call the FM.  You specify them at the recieving end.
    report zrich_0001 .
    data: session(1) type c.
    data: ccdetail type bapi0002_2.
    start-of-selection.
    * Call the transaction in another session...control will be stop
    * in calling program and will wait for response from other session
      call function 'BAPI_COMPANYCODE_GETDETAIL'
               starting new task 'TEST' destination 'NONE'
                   performing set_session_done on end of task
        exporting
          companycodeid             = '0010'
    * IMPORTING
    *   COMPANYCODE_DETAIL        = ccdetails
    *   COMPANYCODE_ADDRESS       =
    *   RETURN                    =
    * wait here till the other session is done
      wait until session = 'X'.
      write:/ ccdetail.
    *       FORM SET_session_DONE
    form set_session_done using taskname.
    * Receive results into messtab from function.......
    * this will also close the session
      receive results from function 'BAPI_COMPANYCODE_GETDETAIL'
        importing
           companycode_detail        = ccdetail.
    * Set session as done.
      session = 'X'.
    endform.
    Hope this helps.
    Rich Heilman

  • Hi preventing parallel processing for a program treating open dataset

    Hi
    Has anyone come into a situation where he had to do an inbound interface
    (i.e using open dataset by scanning all the file in AL11)
    how do you treat program running in parallel in this situation.
    what i mean is that if the same program is doing an open dataset and treating the same file in al11.  Then inconsistencies may occur
    is there a way to lock a program that is running that is triggering an error message "

    Hi,
    I too faced a similar situation and this is what I implemented.
    Whenever your programs starts processing a particular AL11 File, Create a New Flag File in the Same Directory.
    Say if my file name is usr\bin\ABC.DAT, before OPEN DATASET command on this file, I would create a new file usr\bin\ABC.DAT.FLAG!!!.
    After the processing ABC.DAT is done, I delete the Flag File.
    In the mean time, If some other program, (or for that matter the same program) executes in a different session and tries to open the same file, we can check for the existence of the FLAG FILE.
    So the code is as follows.
    CHECK for the Existence of FLAG FILE.
    If FLAG FILE Exists, STOP. " another session is processing it.
    ELSE.
    CREATE FLAG FILE.
    OPEN DATASET, and rest others.
    CLOSE DATASET.
    ENDIF.
    Hope this helps.
    Thanks,
    Surya

  • Parallel processing of the IDOCs through the program RBDAPP01

    Hello All,
    We are prcoessing the inbound IDOCS using the program RBDAPP01 by scheduling but this processing is taking lot of time to process the IDOCs.
    Please let me know how do we improove the performance of this program RBDAPP01 by making use of
    parallel processing of IDOCS?I read some documentation in this forum but not understand clearly.
    Please give some info regarding this who have already done this requirement earlier.
    Regards
    Mahesh

    Hi,
    Thanks a lot for your quick reply just by giving the package size it will initiate parallel processing?
    in our partner profiles we have setting to trigger through back ground only.
    How to use parallel processing tab in the selection screen of the program RBDAPP01?
    Regards
    Mahesh

  • Parallel processing for program RBDAPP01

    Hi All,
    I am running this program RBDAPP01 daily after every 30minutes to clear the error I Docs (Status 51 Application document not posted) Status Message u201CObject requested is currently locked by user ADMINJOBSu201D when I run this job it only clears few Idocs because of the Status Message u201CObject requested is currently locked by user ADMINJOBSu201D Means when one Idoc is getting updated the second one tries to update the same time for same order, same customer, same material and same plant but different ship to party it finds locked and cannot be posted.
    Can any one tell me what parallel processing is and will it help my case.
    Thanks

    You didn't specfiy which release you use so I can just give some suggestions:
    Note 547253 - ALE: Wait for end of parallel processing with RBDAPP01
    Note 715851 - IDoc: RBDAPP01 with parallel processing
    Markus

  • Parallel Processing : Unable to capture return results using RECIEVE

    Hi,
    I am using parallel processing in one of my program and it is working fine but I am not able to collect return results using RECIEVE statement.
    I am using
      CALL FUNCTION <FUNCTION MODULE NAME>
             STARTING NEW TASK TASKNAME DESTINATION IN GROUP DEFAULT_GROUP
             PERFORMING RETURN_INFO ON END OF TASK
    and then in subroutine RETURN_INFO I am using RECEIVE statement.
    My RFC is calling another BAPI and doing explicit commit as well.
    Any pointer will be of great help.
    Regards,
    Deepak Bhalla
    Message was edited by: Deepak Bhalla
    I used the wait command after rfc call and it worked additionally I have used Message switch in Receive statement because RECIEVE statement was returing sy-subrc 2.

    Not sure what's going on here. Possibly a corrupt drive? Or the target drive is full?
    Try running the imagex command manually from a F8 cmd window (in WinPE)
    "\\OCS-MDT\CCBShare$\Tools\X64\imagex.exe" /capture /compress maximum C: "\\OCS-MDT\CCBShare$\Captures\CCB01-8_15_14.wim" "CCB01CDrive" /flags ENTERPRISE
    Keith Garner - Principal Consultant [owner] -
    http://DeploymentLive.com

  • Parallel processing of mass data : sy-subrc value is not changed

    Hi,
    I have used the Parallel processing of mass data using the "Start New Task" . In my function module I am handling the exceptions and finally raise the application specific old exception to be handled in my main report program. Somehow the sy-subrc is not getting changed and always returns 0 even if the expection is raised.
    Can anyone help me about the same.
    Thanks & Regards,
    Nitin

    Hi Silky,
    I've build a block of code to explain this.
      DATA: ls_edgar TYPE zedgar,
            l_task(40).
      DELETE FROM zedgar.
      COMMIT WORK.
      l_task = 'task1'.
      ls_edgar-matnr = '123'.
      ls_edgar-text = 'qwe'.
      CALL FUNCTION 'Z_EDGAR_COMMIT_ROLLBACK' STARTING NEW TASK l_task PERFORMING f_go ON END OF TASK
        EXPORTING
          line = ls_edgar.
      l_task = 'task2'.
      ls_edgar-matnr = 'abc'.
      ls_edgar-text = 'def'.
      CALL FUNCTION 'Z_EDGAR_COMMIT_ROLLBACK' STARTING NEW TASK l_task PERFORMING f_go ON END OF TASK
        EXPORTING
          line = ls_edgar.
      l_task = 'task3'.
      ls_edgar-matnr = '456'.
      ls_edgar-text = 'xyz'.
      CALL FUNCTION 'Z_EDGAR_COMMIT_ROLLBACK' STARTING NEW TASK l_task PERFORMING f_go ON END OF TASK
        EXPORTING
          line = ls_edgar.
    *&      Form  f_go
    FORM f_go USING p_c TYPE ctype.
      RECEIVE RESULTS FROM FUNCTION 'Z_EDGAR_COMMIT_ROLLBACK' EXCEPTIONS err = 2.
      IF sy-subrc = 2.
    *this won't affect the LUW of the received function
        ROLLBACK WORK.
      ELSE.
    *this won't affect the LUW of the received function
        COMMIT WORK.
      ENDIF.
    ENDFORM.                    "f_go
    and the function is:
    FUNCTION z_edgar_commit_rollback.
    *"*"Interface local:
    *"  IMPORTING
    *"     VALUE(LINE) TYPE  ZEDGAR
    *"  EXCEPTIONS
    *"      ERR
      MODIFY zedgar FROM line.
      IF line-matnr CP 'a*'.
    *comment raise or rollback/commit to test
    *    RAISE err.
        ROLLBACK WORK.
      ELSE.
        COMMIT WORK.
      ENDIF.
    ENDFUNCTION.
    ok.
    In your main program you have a Logical Unit of Work (LUW), witch consists of an application transaction and is associated with a database transaction. Once you start a new task, your creating an independent LUW, with it's own database transaction.
    So if you do a commit or rollback in your function the effect is only on the records your processing in the function.
    There is a way to capture the event when this LUW concludes in the main LUW. That is the PERFORMING whatever ON END OF TASK. In there you can get the result of the function but you cannot commit or rollback the LUW from the function since it already have implicitly happened at the conclusion of the funtion. You can test it by correctly comment the code I've supplied.
    So, if you  want to rollback the LUW of the function you better do it inside it.
    I don't think it matches exactly your question, maybe it lead you on the right track. Give me more details if it doesn't.
    Hope it helps,
    Edgar

  • How to do parallel processing with dynamic internal table

    Hi All,
    I need to implement parallel processing that involves dynamically created internal tables. I tried doing so using RFC function modules (using starting new task and other such methods) but didn't get success this requires RFC enabled function modules and at the same time RFC enabled function modules do not allow generic data type (STANDARD TABLE) which is needed for passing dynamic internal tables. My exact requirement is as follows:
    1. I've large chunk of data in two internal tables, one of them is formed dynamically and hence it's structure is not known at the time of coding.
    2. This data has to be processed together to generate another internal table, whose structure is pre-defined. But this data processing is taking very long time as the number of records are close to a million.
    3. I need to divide the dynamic internal table into (say) 1000 records each and pass to a function module and submit it to run in another task. Many such tasks will be executed in parallel.
    4. The function module running in parallel can insert the processed data into a database table and the main program can access it from there.
    Unfortunately, due to the limitation of not allowing generic data types in RFC, I'm unable to do this. Does anyone has any idea how to implement parallel processing using dynamic internal tables in these type of conditions.
    Any help will be highly appreciated.
    Thanks and regards,
    Ashin

    try the below code...
      DATA: w_subrc TYPE sy-subrc.
      DATA: w_infty(5) TYPE  c.
      data: w_string type string.
      FIELD-SYMBOLS: <f1> TYPE table.
      FIELD-SYMBOLS: <f1_wa> TYPE ANY.
      DATA: ref_tab TYPE REF TO data.
      CONCATENATE 'P' infty INTO w_infty.
      CREATE DATA ref_tab TYPE STANDARD TABLE OF (w_infty).
      ASSIGN ref_tab->* TO <f1>.
    * Create dynamic work area
      CREATE DATA ref_tab TYPE (w_infty).
      ASSIGN ref_tab->* TO <f1_wa>.
      IF begda IS INITIAL.
        begda = '18000101'.
      ENDIF.
      IF endda IS INITIAL.
        endda = '99991231'.
      ENDIF.
      CALL FUNCTION 'HR_READ_INFOTYPE'
        EXPORTING
          pernr           = pernr
          infty           = infty
          begda           = '18000101'
          endda           = '99991231'
        IMPORTING
          subrc           = w_subrc
        TABLES
          infty_tab       = <f1>
        EXCEPTIONS
          infty_not_found = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
        subrc = w_subrc.
      ELSE.
      ENDIF.

  • Using BAPI_PO_CREATE1  in parallel processing

    Hi experts,
    I am using BAPI_PO_CRATE1 in parallel processing to create multiple Purchase Orders. The Programs is creating only one PO (the Ist one)  however it should create multiple PO as per the program and data.
    For rest of the data it is returning error message saying "No instance of object type PurchaseOrder has been created".
    Please suggest how can I fix this issue.
    Points are sure.
    Thanks & Regards.
    Anirudh

    Without looking at some poriton of the code around this call and your parallel processing logic, it will be difficult to say.

  • Parallel processing using ABAP objects

    Hello friends,
                        I had posted in the performance tuning forum , regarding a performance issue problem , I am reposting it as it involves OO concept .
    the link for the previous posting
    Link: [Independent processing of elements inside internal table;
    Here is the scenario,
    I have a internal table with 10 records(indepentent) , and i need to process them .The processing of one record doesnt have any influence on the another . When we go for loop , the performance issue is that , the 10 th record has to wait until the 9 records get processed even though there is no dependency on the output.
    Could some one tell a way out to improve the performance..
    If i am not clear with the question , i would explain it still clearer...
    A internal table has 5 numbers , say( 1,3,4,6,7)
    we are trying to find square of each number ,,,
    If it is a loop the finding of suare of 7 has to wait until 6 is getting completed and it is waste of time ...
    This is related to parallel processing , I have refered to parallel processing documents,But I want to do this conceptually ..
    I am not using conventional procedural paradigm but Object orientedness...I am having a method which is performing this action .What am I supposed to do in that regard.
    Comradely ,
    K.Sibi

    Hi,
    As examplified by Edward, there is no RFC/asynchronous support for Methods of ABAP Objects as such. You would indeed need to "wrap" your method or ABAP Object in a Function Module, that you can then call with the addition "STARTING NEW TASK". Optionally, you can define a Method that will process the results of the Function Module that is executed asynchronously, as demonstrated as well in Edward's program.
    You do need some additional code to avoid the situation where your program takes all the available resources on the Application Server. Theoretically, you cannot bring the server or system down, as there is a system profile parameter that determines the maximum number of asynchronous tasks that the system will allow. However, in a productive environment, it would be a good idea to limit the number of asynchronous tasks started from your program so that other programs can use some as well.
    Function Group SPBT contains a set of Function Modules to manage parallel processing. In particular, FM SPBT_INITIALIZE will "initialize" a Server Group and return the maximum number of Parallel Tasks, as well as the number of free ones at the time of the initialization. The other FM of interest is SPBT_GET_CURR_RESOURCE_INFO, that can be called after the Server Group has been initialized, whenever you want to "fork" a new asynchronous task. This FM will give you the number of free tasks available for Parallel Processing at the time of calling the Function Module.
    Below is a code snippet showing how these Function Modules could be used, so that your program always leaves a minimum of 2 tasks for Parallel Processing, that will be available for other programs in the system.
          IF md_parallel IS NOT INITIAL.
            IF md_parallel_init IS INITIAL.
    *----- Server Group not initialized yet => Initialize it, and get the number of tasks available
              CALL FUNCTION 'SPBT_INITIALIZE'
              EXPORTING
                GROUP_NAME                           = ' '
                IMPORTING
                  max_pbt_wps                          = ld_max_tasks
                  free_pbt_wps                         = ld_free_tasks
                EXCEPTIONS
                  invalid_group_name                   = 1
                  internal_error                       = 2
                  pbt_env_already_initialized          = 3
                  currently_no_resources_avail         = 4
                  no_pbt_resources_found               = 5
                  cant_init_different_pbt_groups       = 6
                  OTHERS                               = 7.
              md_parallel_init = 'X'.
            ELSE.
    *----- Server Group initialized => check how many free tasks are available in the Server Group
          for parallel processing
              CALL FUNCTION 'SPBT_GET_CURR_RESOURCE_INFO'
                IMPORTING
                  max_pbt_wps                 = ld_max_tasks
                  free_pbt_wps                = ld_free_tasks
                EXCEPTIONS
                  internal_error              = 1
                  pbt_env_not_initialized_yet = 2
                  OTHERS                      = 3.
            ENDIF.
            IF ld_free_tasks GE 2.
    *----- We have at leasr 2 remaining available tasks => reserve one
              ld_taskid = ld_taskid + 1.
            ENDIF.
        ENDIF.
    You may also need to program a WAIT statement, to wait until all asynchronous tasks "forked" from your program have completed their processing. Otherwise, you might find yourself in the situation where your main program has finished its processing, but some of the asynchronous tasks that it started are still running. If you do not need to report on the results of these asynchronous tasks, then that is not an issue. But, if you need to report on the success/failure of the processing performed by the asynchronous tasks, you would most likely report incomplete results in your program.
    In the example where you have 10 entries to process asynchronously in an internal table, if you do not WAIT until all asynchronous tasks have completed, your program might report success/failure for only 8 of the 10 entries, because your program has completed before the asynchronous tasks for entries 9 and 10 in your internal table.
    Given the complexity of Parallel Processing, you would only consider it in a customer program for situations where you have many (ie, thousands, if not tens of thousands) records to process, that the processing for each record tends to take a long time (like creating a Sales Order or Material via BAPI calls), and that you have a limited time window to process all of these records.
    Well, whatever your decision is, good luck.

  • Parallel processing for ABAP prorams in Process chain.

    Hi All,
    In one of the process chain, we have added the ABAP program. In Backend,the job is running as "BI_PROCESS_ABAP".
    I just want to know, same like DTP, can we keep parallel processing for the ABAP programs also. Please suggest.
    Thanks.

    Hello Jalina
    Also check with BASIS if the memory allocated to run this program has not overflowed and the selections you have in your ABAP program is in small chunks and use variants to run them in parallel OR series
    Thanks
    Abhishek Shanbhogue

  • "Parallel" process

    I don't think I ever got this answered..I'm running a functional test  (LV2014..Win 7..DAQ6229)  In the functional test.vi is a flat seq structure.  In each of these seq's is a subvi... subvi1 then subvi2 etc.  Each of these subvis I use the DAQ to measure DIO/voltages...etc. to do my UUT testing.  Is there a way in ethier the functional test.vi or the subvis to monintor a boolean which stops the functional vi?  Just looking for a way to have the DAQ running its thing...running the test ..and monitor a door switch  ( the boolean) so that if the user opens the door to the test set it stops the test and turns on a Software LED that I've put on the front panel GUI of functional test.  I know how to implement the boolean..I know how to implement the functional tests.   I just don't know how to combined them so that they are both running simutaneously.
    Thanks..
    Solved!
    Go to Solution.

    There are two questions here.  One is "How do I get an immediate response to a change, either to a control or to an instrument reading?", and the other is "How do I synchronize the activities of two parallel processes?"
    The first can be handled by an Event structure residing inside a While loop.  This is something that patiently "waits" for one or more of the Events it is programmed to recognize.  These are typically changes in the value of a Front Panel control, or "signalling changes" to a LabVIEW control or indicator (this means that you change the value in LabVIEW, but "signal" that the value changed).
    There are numerous ways to get two parallel processes to exchange information.  If you want to control the second process (such as to stop it), you need one or more "points of intervention".  Unfortunately, if you have your process-to-be-controlled structured as a long, single sequence, figuring out an intuitive way of "interrupting" it can be tricky.
    One thing you can do (given your existing architecture) is to look at each of the sub-processes (which I gather reside in sub-VIs).  Is there a point within them that, if you had a "Stop" VI that returned a True value, would cause the sub-process to immediately exit, and that if Stop were true when it started, would again cause it to exit?  [This is sometimes called a VI Global or a Functional Global Variable].
    If this is the case, write yourself a Stop VI that contains a While loop with an uninitialize Shift Register holding a Boolean value (and initially False, by default).  Wire the output to a Boolean Indicator called Stop, with a Boolean input called "Set Stop".  Inside, put a Case statement such that if Set Stop is ever True, it sets the Shift Register (and thus Stop) to True.
    In your Event structure, if a Stop condition appears, call the Stop VI with True wired to Set Stop.  In each of your sub-VIs, call Stop in such a way that if it ever becomes True, the sub-VI exits (doing a safe shutdown, if necessary).
    Note that you can have multiple Stop VIs sprinkled around your code, and even within a sub-VI -- you need to find the "vulnerable" points that are accessed sufficiently frequently to allow Stop to have an effect.
    I'll leave it to others to discuss restructuring the entire top-level program (a single sequence is not a good way to do this, if for no other reason than it is absolutely inflexible ...).
    Bob Schor

  • Parallel Process Model vs Asynchrono​us Sequence

    I've been studying the features of TestStand, and learning how to use it for about a month, so still very new to the environment (although I have been using Labview and Veristand pretty heavily for about a year).  I wanted to get a little clarification on the use of the different process models, because I think I may be misunderstanding some of the terminology.  
    Here is a little background of my project:
    I have a Labview VI that I created to interface with a remote target (emulator).  I previously used the VI to run tests manually, and would like to use it as a code module in TestStand so that I can run automated tests.  I intend to use the same VI repeatedly throughout the test sequence.  The functionality of the system is dependent on maintaining constant communication with the emulator, so I can't be opening and closing the code module repeatedly.  Once it is open, it has to stay open and continually communicate  (I'm hoping I will not have to create "wrapper" code modules to be the go-between with my current VI).  Breaking communication would cause most of the test results to become invalid.  For these reasons, I had chosen to call the VI as a code module in a sub sequence so that it can be run asynchronously, outside of the main sequence.
    Now, as I learn more about the details of TestStand, I am introduced to the concept of "Process Models".  I had initially been using the default Sequential Process model, but would like to know if I should switch to the Parallel Process model.  From what I can tell, the parallel process model is used when testing multiple UUTs, or running tests in parallel.  Is this correct?  To clarify my situation, I will only be testing 1 UUT, I will only be using 1 code module, and I will be running several test steps with that 1 code module.  I will need to continually pass data back and forth with the code module as it runs in parallel to the main sequence, and there will likely be several sub sequences called during the process, so that I can maintain modularity with my testing.
    So the question is, do I switch to the Parallel Process Model, or should I continue with the Sequential Process Model and the asynchronous sequence to run my code module in parallel?  Thanks much.
    GSinMN          
    Solved!
    Go to Solution.

    Hey GSinMN,
    Are you wanting to run your test steps in parallel with each other, or will that need to be a sequential process? The Parallel model is probably not the right choice for this application. The purpose of the Parallel model is to run the same test program on multiple UUT's at once, as you mentioned. Since you are just testing with a single UUT, the best approach would be to run the emulator communication module asynchronously, as you mentioned. You can easily pass data to this code module using a TestStand queue or a similar synchronization object.
    Daniel E.
    TestStand Product Support Engineer
    National Instruments

Maybe you are looking for

  • Can I restore an iPhone 5 backup on iTunes to an iPhone 4S?

    I had (still have) a 4S; I upgrade to the 5 on 10/25/12. I backed up my 4S and loaded that backup on to my 5 on 10/25/12, then I erased the 4S. Well, I just lost my iPhone 5 and I was able to restore my old 4S with the 10/25/12 back that I made (I mu

  • Depreciation posted against expense GL account are incorrect

    Dear All, We have a situation as depreciation incorrectly posted against accounts 500000 and 500020(these are two Deprn GL accounts). This is due to, a. July-September is accounting depreciation that has not been adjusted for tax b. There is an incor

  • Bye to this thread!

    They send me a mail, that my tone here isn´t good enough. And they will kick me out, if i go on... So I leave by choice. Didn´t think I harm anybody - if so -  please excuse. Also I postet a review at the product site which never could be seen (wasn´

  • Finding TV Shows

    I'm new to iTunes, so hopefully this doesn't sound too dumb. I read the instructions for downloading TV shows, and they said to select TV shows from the genre list. When I open the pull-down genre list, TV shows is not an option. Am I missing somethi

  • How to Programmatically Pair and Unpair a bluetooth device?

    Hi all, I have a Bluetooth modem, which i want to programmatically Pair & Unpair. Using the available VIs, i could able to search the services and when i try to connect to the device using one service, windows pops-up the dialog to enter the Passkey