Another Boolean formula in BW 3.5

Hello,
Again I'm sorry for asking questions about formula, but I'm having real problems with this
=IF((-A-B)>0,IF(((-A-B-C-D)/(-A-B))<30%,(-A-B-C-D)/(-A-B),""),"") and getting it into boolean logic. I've tried breaking the two IF calculations and creating two formula and then a third that combines the two and I'm getting figures, but not what I would expect.
I also want my result as a percentage and can't get this to work at all.
Any help would be really really appreciated.
Thanks,
Sam

Hi Sam,
if I understand correctly your formula, maybe you can try to insert the next one:
( (-A-B) > 0 ) * ( (-A-B-C-D) / (A-B) < 0,3) ) ) * (-A-B-C-D) / (A-B)
For percentage, you can use the fx mentioned above.
Hope it helps.
Best regards.
Simone.

Similar Messages

  • Using a boolean formula in condition

    Hi All,
    In my report I've two prices, legal price and audit price.
    Legal price is a Nav. att. in cube it is an attribute of material.
    My requirement is to show only those records where audit price < legal price.
          First, I tried to achieve this by putting audit price in condition and creating a varriable for legal price, but it didn't do anything that condition shows all the records.
    Then I've created a boolean formula called flag and put this condition in it. It shows me 0 and 1 correctly. But, when I create any condition based on this flag saying flag > 0 or flag = 1, or flag = 0; I got no record.
    Can anyone pls. explain what I'm doing wrong or Bex. treat boolean formulas differently in conditions.
    Regards
    Tarun

    Tarun,
       Try this.
       Create a calculated key figure = audit price - legal price.
    Now create a condition on this new key figure like if value < 0 to display.
    You can hide this field.
    Hope it Helps
    Srini

  • Parsing Boolean Formula

    Hey guys, i'm having some trouble with a program i've been working on. Im a bit of a newbie so do forgive me if I seem as though i'm being a bit thick. I'm trying to split a boolean formula into it's sub formulas and parse the results into an array. For example, with the formula a&(a&b) i would have 'a' and 'a&b' store in the array and with the formula a&(a&b)&(b&c) I would have 'a', 'a&b' and 'b&c' I've been trying at it for a while now but don't seem to be getting anywhere. Code I have so far is:
    import java.io.*;
    public class ReadString
         public static void main (String[] args)
              String[][] myArray = new String[40][4];
              System.out.print("Please enter a formula: ");
              BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
              String inputtedFormula = null;
              try
                   inputtedFormula = br.readLine();
              catch (IOException ioe)
                   System.out.println("IO error trying to read your formula!");
                   System.exit(1);
              myArray[0][0] = inputtedFormula;
              Loopy(myArray);
         public static void Loopy (String myArray[][])
              int countStart = 0;
              int countEnd = 0;
              String formula = myArray[0][0];
              int stringLength = formula.length();
              int stringPosition = stringLength;
              for(;stringPosition>=0;stringPosition--)
    I know I need to run through the formula and keep track of open and closed brackets and also keep track of start and end positions of these brackets so the code knows which sections to parse separately but I just can't figure it out and pretty much feel like i've hit a brick wall. Any help will be much appreciated.

    How very helpful, thanks for that. I have been researching but so far everything i've found is either too rigid or not complex enough. I've tried using stringTokenizer and streamTokenizer but couldn't get the results i needed. All i could do was remove the brackets and take what's between but i need the program to recognise the operators and i don't really know how to do this

  • Can BEX boolean formula give text value?

    The logic is:
    If quantity > 4, then "Successful", otherwise "failed".
    In BEX formula boolean:
    (quantity > 4) * "Successful" + (quantity < 4) * "failed".
    But somehow we can't find a way of adding the text wording "Successful" or "failed" into the BEX formula window.  Any workaround?
    Thanks and we will give you reward points!

    Hi Kevin,
    Instead of displaying text in the report column you can populate 1 or 0 using a formula or formula variable. Again if you are displaying the report on web you can use the concept of table interface which can replace 1 or 0 with the required text (n BW3.5).
    http://help.sap.com/saphelp_nw04/helpdata/en/e3/e60138fede083de10000009b38f8cf/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/e3/e60138fede083de10000009b38f8cf/frameset.htm

  • How to copy table from one sheet to another making formulas relative to current sheet

    I'm truly sorry if this has been answered within this forum but I've been reading these posts for the last hour and nothing. Ok so here's my issue:
    I'm trying to do a budget spreadsheet. My ss contains sheets with each one representing a month. So sheet 1 is called January, 2 February etc.
    I have two table in each sheet, one with a list of expenses and the other is a subtable with that references the first table for special expenses. The second table is identical in functionality in each sheet so I do a copy from January into February. However, when I copy into Feburary, all my formulas still point to 'January::' and I have to go and remove the 'January::' from each cell.
    Is there any way to copy the second table and make it relative to the sheet that it's in? It seems simple and maybe I'm doing something fundamentally wrong but I can't find the answer anywhere.

    I made a simple version of what I think you are describing:
    I gave each table a name "Tabl" and "SubTable"
    SubTable cell A1 is assigned as follows:
    A1=Table :: A1
    Then I duplicated the January Sheet by highlighting the sheet and typing the key command <COMMAND>+d (or selceting the menu item "Edit > Duplicate"):
    Then I change the name of the new shee from "January -1" to "February"
    The relative reference should already exist.
    You can confim this by changing the contants of the informaiton in cell A1 of Table in the "February sheet

  • How to use SQL import to set the attribute value based on another?

    Hello all,
    I want to set an attribute of a dimension based on another attribute (if matches). Let's say I have a dimension PRODUCT. And I have defined two user defined attributes MANAGER and ISVISIBLE.
    Now within a PERMIT_READ program I want to set the ISIVISIBLE to true where the MANAGER Value is selected from a table.
    Something like
    <define a cursor c1 to select all the Manager values>
    sql import c1 into -
    :MATCHSKIPERR PRODUCT_MANAGER then <PRODUCT_ISVISIBLE (PRODUCT MANAGER) = true>
    <etc>
    Obviously the above is not correct. But I am stuck as to how this can be done? Can some one on this forum please help me with correct syntax/ approach please?
    Thanks a lot.
    Pxsheth
    This statement assigns true to the isvisible attribute for every gc_dim_bu dimension (selected as part of cursor c1).
    SO FAR SO GOOD.. NOW -
    If I want to change the above so that the attribute value gets assigned based on another attribute for the dimension (say a flag). i.e.
    Set the isvisible to true where attribute flag has a certain value. How do I code this in OLAP DML?

    There are a number of ways to do this. If you want to use an attribute that has been defined within AWM as an attribute of Product then simply using the mapping tool to populate the attribute as part of the normal dimension load procedure.
    Alternatively you could create an attribute at the DML level, and assuming you are not using surrogate keys, you can then define a cursor to read the relational table to populate your attribute. Something like this:
    sql declare MKT_BASKET cursor for -
    select PRODUCT_ID, PROD_MGR , PROD_VISIBLE -
    from PRODUCT_DIM
    if SQLCODE ne 0
    then goto ERROR
    sql open MY_CURSOR
    sql fetch MY-CURSOR loop into :append PRODUCT, :PRODUCT_MANAGER, :PRODUCT_ISVISIBLE
    sql close MY_CURSOR
    sql cleanup
    update
    commit
    If you want to create a complex PERMIT function using OLAP DML then personally I would create a formula and assign a program of type BOOLEAN and have the program return a YES or NO depending on the outcome of your test. Then your PERMIT_READ still references a dimension object. For example:
    DEFINE PROD.ISVISIBLE BOOLEAN FORMULA <PRODUCT>
    EQ PRG.ISVISIBLE(PRODUCT)
    DEFINE PRG.ISVISBLE PROGRAM BOOLEAN
    The program will then return Yes or No depending on the processing you need to do.
    Hope this helps
    Keith Laker
    Data Warehouse Solution Architect
    Oracle EMEA Consulting
    BI Blog: http://oraclebi.blogspot.com/
    DM Blog: http://oracledmt.blogspot.com/
    BI on Oracle: http://www.oracle.com/bi/
    BI on OTN: http://www.oracle.com/technology/products/bi/
    BI Samples: http://www.oracle.com/technology/products/bi/samples/

  • If..then formula requiring numeric values

    Post Author: scd07
    CA Forum: Formula
    I have the need to create a formula that will analyze one field in order to determine the value of another field.  Below is a formula that follows the correct logic, but as it is a Boolean formula, it returns a  True/False answer, instead of the correct (numeric) data.  I do not know how to rephrase the formula that will return the numeric value.
    if {TLORDER.BILL_NUMBER} = previous ({TLORDER.BILL_NUMBER}) then {TLORDER.TOTAL_CHARGES} = 0 else {TLORDER.TOTAL_CHARGES} = {TLORDER.TOTAL_CHARGES}
    I appreciate any help!  Thank you!

    Post Author: scd07
    CA Forum: Formula
    Ok, this formula also works well, and I can now go in and create a Running total.  But again, I barely know what I am doing!  Here is what I put in the formula:
    Whileprintingrecords;Currencyvar Amount;
    if {LEGSUM.LS_TRIP_NUMBER}={LEGSUM.LS_TRIP_NUMBER} then Amount := Amount + {@Total Charges}
    This is providing a running total of the Last entry for each group.  It is not totaling All the records within the group.  I certainly appreciate your help with this.  I am actually a network person being impressed into reporting duty, and I am definitely experiencing "Trial by fire".  Thanks!
    Sara

  • Formula Builder

    hai
    what is formula builder and formula collusion wt is the difference between them
    plz give me the answer......
    with regards...
    Raghavendra

    Hi,
    Use
    You can use the Formula Builder to implement methods for Business Add-Ins without writing a single line of ABAP code. The methods are implemented by means of socalled formulas.
    This type of implementation does not require you to have programming knowledge. However, the functions it offers are more restricted than if you implement a method by writing ABAP code. If the range of functions provided by the Formula Builder is not sufficient, you can change the implementation type of the method at any time.
    Features
    A formula can consist of the following steps:
    Condition
    You define a Boolean formula expression whose result can be true or false. This formula expression is a logical condition based on the importing and changing parameters of the method. Depending on whether the condition is true or false, the system triggers different steps. If you do not specify a dependent step for one of these two possibilities, the system continues with the next superior step.
    Substitution
    The system replaces the value of a specific parameter with another value which you define as a constant value or by means of a mathematic formula. Substitution is only possible if the method contains changing, exporting or returning parameters.
    Message
    The system issues a message. All messages issued are collected in a log table. You define the message variables as constant values or by means of mathematic formulas. The system can only issue a message if you created a log table during method definition.
    Exception
    The system exits the method. No further steps are executed, and the application program continues in accordance with the exception defined. You can additionally display a message whose variables you define as constant values or by means of mathematic formulas. An exception can only be triggered if the method contains exceptions.
    A formula editor is available which you can use to enter formula expressions. After starting the formula editor, you can display information on how to use it by choosing the pushbutton next to the status display (traffic light).
    Activities
    You implement the method using the BAdI Builder. For information on this topic, see Implementing Business Add-Ins. To implement a method as a formula, choose the Formula implementation type on the Interface tab. Double-clicking the method name takes to to the Formula Builder: BadI Implementation screen.
    You can change the implementation type of the method on the Interface tab. You can implement a method both using a formula and using ABAP code. At the runtime of the application program, the system executes the implementation type currently chosen.
    You create the necessary steps in the left section of the screen. To do this, choose and then select the appropriate step type from the dropdown list. Using the other icons available or the context menu (which you can call by clicking the right mouse button), you then determine the arrangement and the descriptions of the steps. You can also copy steps to use them as templates for other steps, or you can delete individual steps.
    To specify the parameters for the individual steps, double-click the corresponding entry in the left section of the screen. You then enter the data required in the right section of the screen.
    The formula builder has two modes: Standard and expert mode. In the standard mode, you can only enter the formulas using the pushbuttons and by double clicking on functions and fields. In the expert mode, however, you can enter formulas directly. You can also toggle between the tow modes when entering a formula.
    The company code field (0COMP_CODE) is not included in your data target or InfoSource. However you can determine the company code from the first four character spaces of the cost center (0COSTCENTER).
    You create the following formula for this purpose:
    SUBSTRING( cost center, '0' , '4')
    Syntax:
    SUBSTRING( String, Offset , Länge )
    Step-by-Step Procedure in Standard mode:
    In the transformation library, on the right hand side under Show Me, choose the category Strings. From the list, select the Substring function by double-clicking on it. The syntax of the formula is displayed in the formula window: SUBSTRING( , , )
    The cursor automatically appears over the first parameter that needs to be specified.
    From the list on the left-hand side of the screen, choose the Cost Center field by double-clicking on it.
    Place the cursor where you want to enter the next parameter.
    Enter the number 0 using the Constant button (for the Offset parameter). The commas are added automatically.
    Place the cursor where you want to enter the next parameter.
    Enter the number 4 using the Constant button (for the Length parameter).
    Choose Back. The formula is now checked and saved if it is correct. You receive a message if errors occurred during the check, and the system highlights the erroneous element in color.
    ____For Formula Collision see this link
    http://help.sap.com/saphelp_bw32/helpdata/en/d2/02223c5f00612be10000000a11402f/frameset.htm
    *********Asgin points if usefull*********
    Cheers
    Satya

  • How do I create a Parameter Field From a Formula?

    I am new to Crystal Reports 2008.  IN version 8.5, I used to easiuly create a formula, and then a dynamic parameter field based upon that forumla.
    In version 2008, thus far, I create a formula field, then I try to create the parameter field, but it won;t give me the optioin of choosing the formula I have created.
    Is this a bug or is this a featuer they removed from version 2008?  I am using Crystal Reports 2008 12.3.0.601.
    Thanks in Advance!
    Travis

    Sure.
    I want to use a Full Name as a Dynamic Parameter.  The DB stores the name in FirstName in one columns, LastName in another.
    Formula:
    FirstName" "LastName
    Then I usually make this the dynamic parameter field, as I am doing with older version of 8.5.
    What am I missing?

  • Escaping Boolean & Try/Catch blocks

    Hi everyone-
    You all have been so great. I finally got my double/int and all working on my calculator. Now, I have one more question that I cannot figure out. My booleans to escape when form is not completed correctly are not working. That is, it will output error, but then still attempt the rest, giving printouts/general exception. I tried using another boolean, but not working. Here is the applet:
    www.quiltpox.com/HSTCalc.html
    and code: www.quiltpox.com/HSTCalc.java
       public void actionPerformed(ActionEvent evt) { //1
                     //declarations
             try{
              //reset all fields to null so user can start over
              if(source == button1)
                   text1.setText("");     
                   text2.setText("");
                   text3.setText("");
              if(source == button2)
                   //check that all fields have been completed
                   if(t1.length() == 0 || t2.length() == 0 || t3.length() == 0)
                            output.append("\nPlease complete the required fields and try again.");
                            verify = false;
                   //parse string into integer data and verify
                   if(verify)
                   //parsing
                   if(size == 0 || numOfSquares == 0 || WOF == 0)
                        output.append("\nYou have entered a null value for Square Size, " +
                             "\nQuantity of HSTs, and/or Fabric Width. Please try again. ");
                        verify = false;
                        proceed = false;
                   if(proceed)
                        all codes/printouts/methods
                   }     //end of if proceed
                   }     //end of verify
              }     //end of if
               }     //end of try
            catch (Exception e ) {
                    output.append("General Exception");
              finally {
                    textArea1.setText(output.toString());
       }     //end of action performed(i hope i quoted that right)
    Any ideas on how to resolve this? I know I could use a switch in a standard java, but not sure if that works with applet/try-catch.
    Thanks again,
    Kimberly

    You need to use "else" clauses here.if(t1.length() == 0 || t2.length() == 0 || t3.length() == 0)
      output.append("\nPlease complete the required fields and try again.");
    } else {
      if(size == 0 || numOfSquares == 0 || WOF == 0)
        output.append("\nYou have entered a null value for Square Size, " +
        "\nQuantity of HSTs, and/or Fabric Width. Please try again. ");
      } else {
        // all codes/printouts/methods

  • Query definition - exclusion of calculated formulas

    Hello
    I have a formula 1 and a formula 2.
    Let's say formula 1 has the result 1 = 100
    On the other hand formula 2 has the result 2 = 30.
    Another formula 3 subtracts the values of both formulas, 1 and 2, result  3 =  70.
    Another example:
    Formula 1, result 1 = 100
    Formula 2, result 2 = '    '
    As we can see, result 2 has no values as there are no records available in the InfoCube.
    Now I would like to calculate formula 3 in the way, that this constellation of result 1 (=100) and result 2 (='   ') is ignored. That means there should be NO value be calculated for result 3.
    How can this be achieved?
    Regards

    All right, I would like to explain it from my view.
    Two cubes are assigend to a multiprovider.
    Cube 1 contains actual data.
    Cube 2 contains plan data.
    F1 is calculated on one characteristic, called customer and the keyfigure revenue, coming from cube 1 (actual data).
    F2 is  calculated on one characteristic, called customer and the keyfigure revenue, coming from cube 2 (plan data).
    Customer 007 (James Bond) belongs to customer group MI6 (text: British Secret Service) and caused an actual revenue of 100 Moneypennies in May 2011.
    The same customer 007 has no records in May 2011 in the planning area (cube 2), It means there were never uploaded planning data into this cube, therefore no records.
    In the report (BEx Analyzer) I will definetely have two columns, one columne with actual data of 100 Moneypennies and one column which is blank (NOT zero) for the planning case. On the same line the customer 007 and month May 2011 is listed.
    Any ideas?
    Thanks

  • @DatePart formula produces constant result

    Currently using an @datapart formula and it consistently produces the same result regardless of date.
    Here is my member formula:
    @datepart("Lease date",DP_Year)
    The result is always 1970
    Another member formula for month
    @datepart("lease date",DP_Month)
    The result is always 8 regardless of month

    Hi,
    Provided that you have installed the string CDF pack from below url, you can use below formula:
    (http://www.oracle.com/technetwork/indexes/samplecode/essbase-sample-522117.html)
    Don't worry if it looks complicated, all it does is to convert planning date format to Essbase's.
    @DatePart(@TODATEEX ("mm/dd/yyyy",
    @JconcatStrings(@LIST(
    /*Generate mm*/
    @JgetStringFromDouble (@ROUND(("DateMember"-@ROUND("DateMember"/10000,0)*10000)/100,0),@_false,@_false),"/",
    /*Generate dd*/
    @JgetStringFromDouble ("DateMember"-(@ROUND("DateMember"/10000,0)*10000+
    @ROUND(("DateMember"-@ROUND("DateMember"/10000,0)*10000)/100,0)*100),@_false,@_false),"/",
    /*Generate yyyy*/
    @JgetStringFromDouble (@ROUND("DateMember"/10000,0),@_false,@_false) )
    ),DP_MONTH);
    Cheers,
    Alp

  • Calculated Key Figures Decimal Place Error

    Hi Experts,
    Wonder if there is anybody to help me out to explain why I am having a problem on the calculated key figures decimal places when if I report on the components of the calculated key figure (restricted key figure) are working correctly?
    The calculated key figure is a boolean formula made up of 2 restricted key figures.  The 2 restricted key figure are having 2 decimal place (one is 0.36 another is 0.00).  In the current condition, the 2 restricted key figure just sums up - 0.36 + 0.00 = 0.36.  However the calculated key figure displayed as 0.359999 (6 decimal places) as the result.
    I am using BEx Analyzer Excel.

    Hi Fang,
    right mouse click on your KF and select properties. Then define the number of decimal places you want.
    Ciao.
    Riccardo.

  • C# Script to open and read an Excel spreadsheet with multiple worksheets

    Can someone provide me the C# syntax and Edit Script to open an Excel spreadsheet with multiple worksheets and then using the data to create and output a .csv file? The multiple worksheets contain different data elements that I'll need to parse out and then
    store as a .csv file that will then be read to pump data into our SQL Server Database.
    Thanks for your review and am hopeful for a reply.
    PSULionRP

    I think this code originally came from Joel, who comes here quite a bit.  I'm not a C# expert, like Joe is, but I think this is pretty close to what you want.
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Excel = Microsoft.Office.Interop.Excel;
    using Microsoft.Office.Interop.Excel;
    using System.IO;
    namespace WindowsFormsApplication2
    public partial class Form1 : Form
    public Form1()
    InitializeComponent();
    private void button1_Click(object sender, EventArgs e)
    Main();
    public void Main()
    string filePath = "C:\\Users\\Ryan\\Desktop\\MainExcel.xlsx";
    Microsoft.Office.Interop.Excel.Application xlobj = new Microsoft.Office.Interop.Excel.Application();
    Workbook w = default(Workbook);
    Workbook w1 = default(Workbook);
    Worksheet s = default(Worksheet);
    Worksheet s1 = default(Worksheet);
    Worksheet xlsht = default(Worksheet);
    xlobj.Visible = true;
    int intItem = 1;
    DirectoryInfo dirSrc = new DirectoryInfo(@"C:\Users\Ryan\Desktop\Test_Folder\");
    foreach (FileInfo ChildFile in dirSrc.GetFiles())
    try
    // Renaming the excel sheet
    w = xlobj.Workbooks._Open(ChildFile.FullName,
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
    Type.Missing, Type.Missing);
    w1 = xlobj.Workbooks._Open(filePath,
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
    Type.Missing, Type.Missing);
    //this doesn't make any sense
    //w1 = xlobj.Workbooks.Open(filePath);
    //if (intItem > 3)
    Excel.Worksheet lastSht =
    (Excel.Worksheet)w1.Worksheets[w1.Worksheets.Count];
    xlsht = (Excel.Worksheet)w1.Worksheets.Add(Type.Missing,
    lastSht,
    Type.Missing, Type.Missing);
    s = (Excel.Worksheet)w.Worksheets[1];
    s1 = (Excel.Worksheet)w1.Worksheets[intItem];
    s1.Name = ChildFile.Name;
    // it will copy and paste sheet from one to another with formula
    s.UsedRange.Copy(Type.Missing);
    Excel.Range r = s1.get_Range("A1", Type.Missing);
    r.PasteSpecial(Excel.XlPasteType.xlPasteValues,
    Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
    Type.Missing, Type.Missing);
    s1.UsedRange.Formula = s.UsedRange.Formula;
    // Renaming the excel sheet
    //w.Save();
    w.Close(false, Type.Missing, Type.Missing);
    w1.Close(false, Type.Missing, Type.Missing);
    catch (Exception ex)
    //w.Save();
    w1.Save();
    w.Close(false, Type.Missing, Type.Missing);
    w1.Close(false, Type.Missing, Type.Missing);
    intItem = intItem + 1;
    //Dts.TaskResult = ScriptResults.Success
    Do you need help getting everything into a CSV, or can you take it from here???
    Knowledge is the only thing that I can give you, and still retain, and we are both better off for it.

  • How to use a timer together with an event.

    Dear All,
    Today I tried all day to accomplish someting with labview, but I didn't succeed. Perhaps you can help me.
    The problem is as follows. 
    I have an event structure inside a while loop. The events are all triggered by booleans. Those booleans initiate
    for instance some pumps or  other apparatus. The time-out is put at 200ms and inside the time-out structure 
    are some GET function (for instance to obtain the values of some balances and to do some calculations with those obtained values.
    Now I would like to be able to start an experiment. This means by pressing a boolean initiate the experiment. This experiment involves 
    the starting of a timer and after every 10 minutes, the obtained/calculated data (from the time-out) structure should be written to a .xls file.
    I'm not able to programm this part of the program. My first problem is that I need an event (triggered by a boolean) that start a timer. This timer should run always (independant of other events) until stopped by another boolean. After every 10 minutes this timer should initiate (with a boolean?) the data writing to a .xls file.  Can this be done by resetting the timer after every writing event?
    So I have multiple questions, but my main question is how to build an event which is trigger by a boolean and then initiates an overall timer.
    Thanks! 
    Bio

    OK.  That worked.
    You have made all the mistakes self-taught beginners with LabVIEW make, except that you apparently have a pretty good idea of what you want your program to do.
    1.  LV is a dataflow language.  This means that any node which has all its inputs satisfied can run and once started any node runs to completion before another starts.  In your event case the timeout case will execute 200 ms after the loop starts (assuming the user did not push a button before that).  The Waits in the sequence frames mean it will be at least 555 ms before the timeout case completes.  200 ms later is will run again, if not other event has occurred.  Furthermore, you do not know whether the Waits will run before or after the other code in each od the sequence frames because there is no data dependency between the Waits and that other code.
    2. A matter of style: It is recommended that front panels and block diagrams do not exceed one screen size.
    3. Local variables violate the dataflow paradigm and are almost always unnecessary.  The WIRE is the variable.  Connect things via wires not local or global variables.  You will also need some shift registers.
    4. Sequence structures are almost never required.  One exception: Single frame structures around something like the Wait function which does not have error clusters for dataflow.
    5. Look at the Producer/Consumer Design Patterns which come with LV.  File >> New.. >> VI >>  From Template >> Frameworks >> Design Patterns..  The events version will be useful.  Also learn about state machines.  That architecture is versatile, powerful, adaptable, and much more likely to get you to where you need to be with your program.
    6. The events will all be queued up in the internal event queue.  It just takes a long time for your program to get to them.  I like to keep the code in every event case simple enough that it executes before the user could get to the next button. The queued message handling in the Producer/Consumer takes care of this.
    7.  You probably should have an event for Stop experiment.  It would send a command to the consumer loop to shut down all pumps, close files, and any other "cleaning up" which needs to be done before stopping the program.
    This may seem like a lot, but you have most of the pieces.  Some re-arrangement and re-organization will help a lot.
    Lynn 

Maybe you are looking for