Programmatically select global variable object

Hello all.
I have a rookie question that may have an easy answer (or perhaps you can direct me to a different method which is fine too).  I’m using a global variable in an instance where it’s controlled by a parent VI and read by multiple children VIs.  The global variable contains Boolean switches, each with a specific name.  
If possible, I’d like to make the ‘child VI’ more generic and programmatically flexible so that I don’t have unique children.  That way, instead of four children, I just have one (makes debugging easier).  Here’s the crux of my question:  selecting which object is assigned to the global variable on the block diagram is done by clicking on it with the mouse – can I instead do that programmatically?
More specifically, when using the global in children VIs (as instructed in the “Creating Global Variables” section of the help files), you can select the global vi and add it to your block diagram.  The next step is to select the front panel object to associate the placed variable with the proper data (you do this by mouse clicking the node you just created – see the attached image).  My question is, can I select the object associated with the placed node programmatically instead of needing to mouse click on it?
Cheers!
Attachments:
ForumEX files.zip ‏31 KB

Steve Chandler wrote:
There is a better way of doing this as the others have already pointed out.
Even Single Process Shared Variables with their API Interface would be better as Globals:
Using this VI to read the variables gives you the ability to reference them with a string (Link to Variable). You may have to add an additional variable in future versions of your code, where you just need to add the new variable to the project and pass the string to the VI without changing the code. Single Process Shared Variables are based on Global Variables, which are usually just a bit faster. Single Process Variables can easily be converted to network variables.
However, I agree with Damien that Data Value References would probably be the best sulution.
Btw, there is a good KB talking about Globals: Are LabVIEW Global Variables good or bad, and when is it ok to use them?
Christian

Similar Messages

  • How can I programmatically create and use a global variable?

    I have an app where the number of AI DAQmx tasks I create are specified in a config file.  I have a monitor task that periodically looks at the latest values from all DAQ tasks.  I've been doing this with a set of global variables because it was the simplest way to do it.  But to do this, I have to explicitly create a separate AI task that uses the hard-coded global variable name for the DAQmx samples.  I would prefer to only write one VI for the DAQ loop that writes to a global variable that I programmatically create based on the config file.  The only solution I can think of is to use a global variable "pool" that is sized bigger than I expect to need, and then have a big switch case to select which one I want based on the task index.  But this sounds pretty silly.

    I tend to agree with Ben. I don't buy the concept of taking the asy way out (globals) because it very rarely will things remain static. You almost always have to extend the features and functionality of an application and then you will run into issues with sloppy and lazy implementations. The solutions offered may require a little time to learn but once you do it doesn't really require any extra effort.
    Mark Yedinak
    "Does anyone know where the love of God goes when the waves turn the minutes to hours?"
    Wreck of the Edmund Fitzgerald - Gordon Lightfoot

  • How to Use Transient View Objects to Store Session-level Global Variables

    hi
    Please consider section "40.8.5 How to Use Transient View Objects to Store Session-level Global Variables"
    at http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcstatemgmt.htm#ADFFD19610
    Based on this documentation I created the example application
    at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.01.zip
    It behaves as show in the screencast at http://screencast.com/t/qDvSQCgpvYdd
    Its Application Module has a Transient View Object instance "MyEmployeesContextVOVI", as master for the child View Object instance "EmpInCtxJobVI".
    On rollback the Transient View Object instance keeps its row and attribute values.
    Also when passivation and activation is forced (using jbo.ampool.doampooling=false ) the Transient View Object instance seems to keep its row and attribute values.
    questions:
    - (q1) Why does the expression #{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty} evaluate as true when a Transient View Object instance attribute value is changed (as shown in screencast at http://screencast.com/t/qDvSQCgpvYdd )?
    - (q2) What would be a robust approach to make a Transient View Object instance more self-contained, and manage itself to have only one single row (per instance) at all times (and as such removing the dependency on the Application Module prepareSession() as documented in "5. Create an empty row in the view object when a new user begins using the application module.")?
    many thanks
    Jan Vervecken

    Thanks for your reply Frank.
    q1) Does sample 90 help ? http://blogs.oracle.com/smuenchadf/examples/
    Yes, the sample from Steve Muench does help, "90. Avoiding Dirtying the ADF Model Transaction When Transient Attributes are Set [10.1.3] "
    at http://blogs.oracle.com/smuenchadf/examples/#90
    It does point out a difference in marking transactions dirty by different layers of the framework, "... When any attribute's value is changed through an ADFM binding, the ADFM-layer transaction is marked as dirty. ...".
    This can be illustrate with a small change in the example application
    at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.02.zip
    It now shows the result of both these expressions on the page ...
    #{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty}
    #{bindings.MyEmployeesContextVOVIIterator.dataControl.dataProvider.transaction.dirty}... where one can be true and the other false respectively.
    See also the screencast at http://screencast.com/t/k8vgNqdKgD
    Similar to the sample from Steve Muench, another modification to the example application introduces MyCustomADFBCDataControl
    at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.03.zip
    public class MyCustomADFBCDataControl
      extends JUApplication
      @Override
      public void setTransactionModified()
        ApplicationModule vApplicationModule = (ApplicationModule)getDataProvider();
        Transaction vTransaction = vApplicationModule.getTransaction();
        if (vTransaction.isDirty())
          super.setTransactionModified();
    }Resulting in what seems to be more consistent/expected transaction (dirty) information,
    see also the screencast at http://screencast.com/t/756yCs1L1
    Any feedback on why the ADF Model layer is so eager to mark a transaction dirty is always welcome.
    Currently, question (q2) remains.
    regards
    Jan

  • Passing Global Variable in Sql Object

    Hi
    How can i pass my global variable into SQL object? I tried to pass it but then I tried to update the schema it giving me the error at varble
    Please advise me

    The Update schema is used only to get the structure for the Output.
    Once you have a valid structure and the SQL Parses without any variables use the syntax for applying variables as in any Script within DI.
    $GV_MyVar enclosed within square brackets will be replaced by Value of the variable.
    $GV_MyVar enclosed within curly brackets will be replaced by Value of the variable enclosed in single quotes.
    When the job runs, the variables will be replaced with values OR values with quotes. It is at this time, the SQL send to the database is validated for syntax.
    Therefore, you will not know the validity of your SQL with Global Variables until you run the job.
    Hope this helps!
    Thanks & Regards
    Tiji
    Edited by: Tiji Mathew on May 8, 2009 3:40 PM
    The actual syntax was being posted as a link. edited to make the text descriptive.

  • Selection screen values in global variable user exit

    Hi all,
    I made a project report global variable of type 3 (User Exit) and I develop the related code in enhancement KKDR0001 component EXIT_SAPLKYP1_003. In this code I need the value of project definition that user entered on selection screen.
    Does anybody know how can I get this data?
    Thanks!

    Hi,
    You can do the following for getting project in Earlier screen
    Data: l_string(20) type c
    Field-symbols: <fs> type any.
    l_string = '(Screen)variable name'.
    assign l_string to <FS>.
    Just try above...

  • Global Variable for selection screen variable

    Hi All,
    We need to create a report where calendar day has to be included in the selection screen.Later after executing the report we should be able to retrieve the selection screen input for calendar day and modify it and use the modified one for other calculations.Can somebody help me out in finding the global variable in the variable exit where we find all the inputs for selection screen variables....
    Regards,
    Shravani

    shravani,
    I_vnam will store the varaible names...if you have varaible in the query...
    please use this code for ur help...
    DATA: ww_der_date LIKE sy-datum,
            wzdate LIKE sy-datum,
            wzact_gi_dte TYPE /bi0/oiact_gi_dte.
      wzact_gi_dte = sy-datum.
      IF i_step = 2.
        READ TABLE i_t_var_range INTO wa_i_t_var_range WITH KEY vnam =
        'ZNODAYS'.
        ww_der_date = sy-datum - wa_i_t_var_range-low.
            CLEAR wa_i_t_var_range.
        IF i_vnam = 'ZVAGIDCUSTEXIT'.
          CLEAR l_s_range.
          l_s_range-low    =  ww_der_date .
          l_s_range-high   =  wzact_gi_dte.
          l_s_range-sign   = 'I'.
          l_s_range-opt    = 'BT'.
          APPEND l_s_range TO e_t_range.
          CLEAR l_s_range.
        ENDIF.
      ENDIF.
    in this case user will enter no.of days in ZNODAYS and that being is used in calculation and used in the next varaible....

  • Problem with view object for global variables

    Hi,
    I'm using jdeveloper 11.1.2.3.0
    We are using view object with transient attributes for global variables.
    we defined the view as explained here:
    http://docs.oracle.com/cd/E14571_01/web.1111/b31974/bcstatemgmt.htm#ADFFD19610
    also we defined one of the attributes as primary key.
    When we start to test our application with disable connection pooling we got some problems.
    sometimes the row in the global view object is deleted.
    (for example after using executeEmptyRowSet on other view object).
    it looks strange, we couldn't fוnd why does it happen.
    Any idea?

    As Timo said, it is very hard to help without source.
    Are you sure that you do the next step:
    After the call to super.prepareSession(), add code to create a new row in the transient view object and insert it into the view object.

  • Can a global variable be used in a text object ?

    Can a global variable ( defined in Form Properties ) be used as part of a text object ?
    I am creating a PDF document (using LiveCycle ES ) that can be used by multiple departments.
    In LiveCycle Designer, I created an XDP with multiple pages.
    The form includes a variable varDepartment that I set to the respective department
    I then cut individualized PDFs for each department ( not all pages apply to all departments ) & change the department variable.
    I would like to have the Title of each page to include the department e.g. Survey Finance department (Page: Main)
    There are 10+ pages, each different.
    Is this possible ?
    Thanks for your help
    Aubrey

    Thanksjnicholas330,
    I am trying to avoid writing any code. Just place it the text - Something like "Survery {varDepartment} department".
    Also, I cannot find a floating field object - I am using Adobe Pro 9 with the included LiveCycle Designer 8.2 ES
    Aubrey

  • Two selection option-variables for the same object

    Hi,
    I'm using two selection-option variables for the same characteristic in my query:
    One is authorization variable and the other is used for restrictions (filter) in a selection screen.
    I get an error: SELOPT/Query variable .... does not allow any further selections.
    If a selection option-variable is used, no additional selections can be specified for this characteristic in this element.
    Is there a way to overcome this problem?
    Thanks,
    Hagit

    Hi,
    I have solved the problem by changing the authorization object (in RSECADMIN) from range to single value and also the variable in BEx from selection single value.
    To be more clear:
    object in RSECADMIN was: infoobject BT var1 - var5
    I have changed it to:
    infoobject EQ var1
    infoobject EQ var2
    infoobject EQ var3
    infoobject EQ var4
    infoobject EQ var5
    Hope this helps.
    Hagit

  • Menubar connected to Global variable

    I am using a menubar component. Some of the items in the menu
    need to change what they say according to the state of a global
    variable. I have set up the menu using XML that look likes this...
    <menu label="Grid "><mnuitm label="Show Grid "
    labelAlt="Hide Grid " act="switchGrid" global="G_GRID_VIZ"
    /></menu>
    By using the labelfunction shown below, I am able to have the
    label change but it only happens on rollover not when the menu
    opens.
    CMP_menubar.labelFunction =
    function(itemObj:Object,addCheck){
    if(Boolean(itemObj.attributes.global)){
    var globalVal:String = itemObj.attributes.global;
    if(_root[globalVal]) return itemObj.attributes.labelAlt;
    else return itemObj.attributes.label;
    Does anyone have any suggestions? I am at the end of my rope
    and need some help.
    Thanks

    1. Make your edits.
    2. On the menu select Operate > Make Current Values Default (operates on all the controls) or right click on the control and select Data Operations > Make Current Value Default (operates on a single control).
    3. Save the vi.
    Tim

  • Allowing access to select few public objects (moved from Native forum)

    I am moving my posting from Java Forums > Fundamentals > Key Classes > Native forum to this one. Sorry for posting it on the wrong forum earlier. Before each reply I have added a lien for clarity.
    Allowing access to select few public objects
    Author: COOLNM Posts: 5 Registered: 12/21/05
    Dec 21, 2005 9:59 AM
    I am developing a java application. I need to provide some scripting support (using Jython or Rhino) to my application so that the user can better use my application. Now the problem is I just want a select few public objects to be accesible via scripts and not all public objects I have written internally. I read somewhere that class name and code obfuscation could be a option but not a full proof solution. Can anyone suggest how a full proof solution can be achieved? Would running the script interpreter in seperate JVM help (and propogate the calls to the original JVM) ? Would a custom class loader help? Please suggest.
    Thanks,
    COOLNM
    Re: Allowing access to select few public objects
    Author: IanSchneider Posts: 1,381 Registered: 10/26/00
    Dec 21, 2005 10:14 AM (reply 1 of 10)
    I read somewhere that class name and code obfuscation could be a option but not a full proof solution.Correct, someone could still can call obfuscated methods.
    Would running the script interpreter in seperate JVM help (and propogate the calls to the original JVM) ?No.
    Would a custom class loader help? Possibly depending upon how the interpreter dispatches calls.
    Can anyone suggest how a full proof solution can be achieved?With jython, you could write custom PyObject subclasses (or general java facade classes) to expose only the methods you want to. The former technique allows more cool scripting functionality, the latter would presumably work in other interpreters. This would have to be done for every object you want to expose.
    Alternatively, you could enable a SecurityManager and allow only trusted code to invoke yours.
    Re: Allowing access to select few public objects
    Author: COOLNM Posts: 5 Registered: 12/21/05
    Dec 21, 2005 9:36 PM (reply 2 of 10)
    I read somewhere that class name and codeobfuscation could be a option but not a full proof
    solution.
    Correct, someone could still can call obfuscated
    methods.
    Would running the script interpreter in seperate JVMhelp (and propogate the calls to the original JVM) ?
    No.Could you please explain why this wouldn't work?
    The plan is:
    Let say I have 2 public objects A & B and I want the user to only use A via their scripts.
    In JVM1: I use both A & B
    In JVM2: I write a psuedo A and not B. For all the methods of A, I propogate the calls to JVM1 (I think this is achievable but not sure how)
    The script interpreter runs on JVM2.
    Now if the user tries to access A then the call would go to JVM1 but if he tries to access B then there is no B available in JVM2 so the user cant access B.
    I know this method could be heavy as each call would have to go from JVM1 to JVM2.
    By sepeate JVMs I mean seperate instance of java.
    >
    Would a custom class loader help? Possibly depending upon how the interpreter
    dispatches calls.
    Can anyone suggest how a full proof solution can beachieved?
    With jython, you could write custom PyObject
    subclasses (or general java facade classes) to expose
    only the methods you want to. The former technique
    allows more cool scripting functionality, the latter
    would presumably work in other interpreters. This
    would have to be done for every object you want to
    expose.
    Alternatively, you could enable a SecurityManager and
    allow only trusted code to invoke yours.-----------------------------------------------------------------------------------------------------
    Re: Allowing access to select few public objects
    Author: allquixotic Posts: 12 Registered: 12/19/05
    Dec 22, 2005 5:09 AM (reply 3 of 10)
    RMI has a way for multiple JVMs to communicate programmatically; you could also use sockets on the loopback network device (localhost). These techniques are how mature Java products constrain their number of running instances to a finite number (usually 1), they terminate any starting JVM early in the initialization procedures of the main method if the "already-running test" indicates one is running.
    If you use the networking method, you could basically read from a ServerSocket on the "executing" JVM, while the "scripting" JVM writes to a Socket. Then use reflection in the executing (server) side to determine if the method or object being referenced is one you want to expose. If not, do something -- like write back to the client that the method invocation was invalid. Reflection will slow down your code a lot though, so I don't recommend it for apps that already take up 50 megs or more of RAM ;)
    Regards,
    Sean
    Re: Allowing access to select few public objects
    Author: IanSchneider Posts: 1,381 Registered: 10/26/00
    Dec 22, 2005 9:05 AM (reply 4 of 10)
    Would running the script interpreter in seperate JVMhelp (and propogate the calls to the original JVM) ?
    No.
    Could you please explain why this wouldn't work?It could work. I said no because the other methods are better - easier to implement and vastly more performant without wasting resources.
    Re: Allowing access to select few public objects
    Author: COOLNM Posts: 5 Registered: 12/21/05
    Dec 23, 2005 12:48 AM (reply 5 of 10)
    Ya, the seperate JVM approach seems complex and might not be fully achievable.
    Can someone give small code snippets on how the method level control be achieved using Java SecurityManager. Just a recap on what I am trying to achieve -
    A & B are two public objects defined internally by my app.
    I have to give the user of my app the ability to write some code. But only B
    is to be exposed to client and not A.
    Let say I have this code -
    Object A = Interpreter.InitializeEngine(..);
    A.executeFromUser(stdin);
    The user mostly uses some scripting language, say Python and the Interpreter
    is Jython. Now my Interpreter is capable of understanding calls to Java
    objects from Python. If the user tries to access B via the scripts then it
    should be allowed to do so but access to A should not be allowed via the
    scripting language.
    Thanks,
    Neeraj
    Re: Allowing access to select few public objects
    Author: bschauwejava Posts: 721 Registered: 1/13/04
    Dec 26, 2005 2:13 PM (reply 6 of 10)
    What you probably want is to give the user access to an interface - not a class - that only exposes the methods that you want to expose.
    This is the way all RMI APIs are exposed to client programs.
    Re: Allowing access to select few public objects
    Author: bschauwejava Posts: 721 Registered: 1/13/04
    Dec 26, 2005 2:16 PM (reply 7 of 10)
    Just one more comment. You haven't said very much about the runtime model of the scripting environment vs your java environment. How many processes do you expect to have running to make the system work? Are you expecting your java code to wind up in a jar file and get loaded by the Python process? Or are you planning on the java code executing in a separate process? If the latter, then RMI is probably your best bet.
    Re: Allowing access to select few public objects
    Author: COOLNM Posts: 5 Registered: 12/21/05
    Dec 27, 2005 4:20 AM (reply 8 of 10)
    I haven't finalized on the runtime model yet as the scripting security issue is still not resolved. But I am sure that the java app code would init and run the scripting code and not the other way round. The app is pretty huge with heavy UI. Ya, the java code would be wrapped in jars (but mostly not in a single jar as I dont want the jar to be too hefty).
    Can someone comment on the use of SecurityManager in this case. My initial investigation shows that the objective on implementing method level security can't be implemented by this.
    Re: Allowing access to select few public objects
    Author: IanSchneider Posts: 1,381 Registered: 10/26/00
    Dec 27, 2005 9:14 AM (reply 9 of 10)
    My initial reply suggested writing a facade in java or by subclass PyObject. I highly recommend this path for ease of development, use, and runtime performance.
    Given that you don't understand the basics of java security, I will recommend this again.
    Re: Allowing access to select few public objects
    Author: COOLNM Posts: 5 Registered: 12/21/05
    Dec 27, 2005 11:33 PM (reply 10 of 10)
    I have started investigating on facade in java and subclassing PyObject. But I am not sure how these would resolve the primary issue. Even if I use these and if the script writer knows that there is a public class, say XYZ in my app then he can always access that class directly skipping my subclassed PyObject or the Java facade. Or am I missing something here?

    I have started investigating on facade in java and subclassing PyObject. But I am not sure
    how these would resolve the primary issue. Even if I use these and if the script writer knows
    that there is a public class, say XYZ in my app then he can always access that class directly
    skipping my subclassed PyObject or the Java facade. Or am I missing something here?Presumably your objects are somehow connected to the application. Your user could do something like:
    from com.foo import Player
    p = Player()
    p.setGold(Integer.MAX_VALUE)But of course the new Player object would not be part of the game. Now if you have some kind of static/singleton game state, then the malicious user could insert the Player into the game model...
    The real trick lies in understanding how to setup the jython interpreter. If your interpreter classloader can only load facade classes (and system classes) then the client script could not load other classes. There is also a hook for the import keyword so you could disallow importing java classes. Each interpretor instance has the ability to setup the locals and globals for the session so you can insert live game objects.
    I am only familiar with jythons internals, so this may or may not be applicable to rhino.

  • Use of global variables like g_cnt_transactions_transferred in the LSMW

    Hi SapAll.
    when i had a look at the some of the LSMW's whic use IDOC as the object of uploading data into SAP from external Files i have found in the coding under the step "Maintain Field Mapping and Conversion Rules" that they use some of the global variables like below
    .if p_trfcpt = yes or sy-saprl >= '46A'.
      EDI_DC40-DOCNUM = g_cnt_transactions_transferred + 1.
    endif.
    .EDI_DC40-CIMTYP = g_cimtyp.
    .EDI_DC40-MESTYP = g_mestyp.
    .EDI_DC40-MESCOD = g_mescod.
    .if p_filept = yes.
      EDI_DC40-SNDPOR = g_fileport.
    elseif p_trfcpt = yes.
      EDI_DC40-SNDPOR = g_trfcport.
    endif.
    my doubt is where i can find these variables 'g_cnt_transactions_transferred ','g_cimtyp','g_mescod','g_fileport','g_trfcport' in the LSMW and what is the use of the variable  'g_cnt_transactions_transferred ' in the LSMW.
    I have treid to find out the above listed variables looking in step 'Maintain Field Mapping and Conversion Rules' under global variabels list and the other lists also but i couldnt found.
    can any one help me in this ?
    regards.
    Seetha.

    Hi Seetha,
               In the LSMW Workbench go to the option user menu.  And check the option display conversion program.
    Now when you execute with the radio button on dislplay conversion program, you ll see the code that got generated in the background while you built your LSMW.
    The global variables that you have mentioned are bound to be there in this program generated in the background..
    You can put a break point here and see for yourself what the value of these global variables are at runtime.
    File port, TRFC port , no. of transactions executed by one run of the LMSW Idoc program , message type are some of the fields that you have asked for .
    Regards,
    Arun

  • Java Threads vs. Native Global Variables

    A brief description of the problem:
    I am trying to integrate a multi-threaded Java app with legacy Fortran code. The Fortran code in question makes extensive use of global variables in the form of Fortran's Common Block data structure.
    If multiple threads were allowed access to a native routine, they would over write each others data which is stored in global variables.
    If only one thread at a time can have access to the native routine for the duration of the native routine, the whole advantage of using threads is completely nullified.
    These native routines cannot be rewritten (3rd party code) and must be used.
    One solution I envisioned was to load a new copy of the native shared object code for each Java object that used the native code. However, it seems System.loadLibrary() can only be used in a static context.
    Is there any known solution to this problem?

    Here is an elaboration on the earlier suggestions. It's a high overhead solution, because you have to start a bunch of JVMs.
    1. You have a java control program, which will start up a pool of "services", make requests to them, and gather the results.
    2. Each service is a small java program with a native method:
    o java communications front-end.
    o native method declaration.
    o native - in your case fortran - method implementation.
    3. Each service is started using "exec". That puts it in a separate process.
    4, Since each service is a java program, you can use java to do communications between the control program and the service.
    o You could use RMI.
    o You could - perhaps - use java Process communications, i.e., have the services write to stdout, and have the control program capture the output.
    o You could use socket communications.

  • Can F4IF_INT_TABLE_VALUE_REQUEST FM return a value in a global variable?

    Hi everybody,
    I need to use F4IF_INT_TABLE_VALUE_REQUEST FM because I have to let users select an specific option before choosing another value. The point is that I need to save in a program global variable what the user selects, and decide something with it in the program.
    Is it possible that F4IF_INT_TABLE_VALUE_REQUEST FM returns the value in a sinple variable or it has to be paramter?
    I look in a lot of previous threads but I didn't find anything, and I don't know if it's possible.
    Thanks and kind regards,
    MMP.

    Hi,
    Sure you can. All you need to do is to store what the function returns in your global variable. It don't need to be returned back to screen field.
    DATA: BEGIN OF VALUES OCCURS 0,
             CARRID TYPE SPFLI-CARRID,
             CONNID TYPE SPFLI-CONNID,
           END OF VALUES.
    DATA: VALUES_TAB TYPE TABLE OF VALUES,
              G_VALUE TYPE SPFLI-CONNID.  "global variable to store what is returned
    "in PAI first populate your table
      SELECT  CARRID CONNID
        FROM  SPFLI
        INTO  CORRESPONDING FIELDS OF TABLE VALUES_TAB
        UP TO 10 ROWS.
    "then call the function but don't return the value to screen field
    "If you specify the import parameters DYNPPROG, DYNPNR, and DYNPROFIELD, the useru2019s selection is
    "returned to the corresponding field on the screen. If you specify the table parameter RETURN_TAB, the
    "selection is returned into the table instead.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
           EXPORTING
                RETFIELD         = 'CONNID'
                VALUE_ORG        = 'S'
           TABLES
                VALUE_TAB        = VALUES_TAB
                RETURN_TAB      = RETURN_TAB.
    "now simply read first row of return tab and store the value returned there in some global var
    READ RETURN_TAB INDEX 1.
    MOVE RETURN_TAB-FIELDVAL TO G_VALUE.
    Regards
    Marcin

  • How do you override global variable values when calling oraxsl or xsl.exe?

    I am a newbie to oracle xslt.
    I have down loaded the latest version of xdk (10.1.0.2...). (Jan 2, 2009).
    In the past I haveI used micorsoft's "msxsl.exe" to perform my transformations.
    I am looking for a more up-to-date transformation tool.
    I found Oracle's version, and thought I would try it out.
    I have run the "bin/xsl.exe -hh" command.
    I read its help data. It states that variables are
    passed by coding a pramater "-V <var> <value>".
    I have also examined the oraxls.bat file.
    I found the documentation on "oracle.xml.parser.v2.oraxsl" class.
    It states that parameters are passed after the "-p" switch.
    It says the value of the -p parameter is "a list of paramemters".
    I don't find this sufficient information to be useful.
    I can spend days guessing, and I might get lucky.
    I thought it my be better to ask for help.
    I need to pass in (override) values for 3 global variables.
    I saw the method
    "setParam(namespace, variable, value)",
    near the documentation for the "oraxsl" class.
    How do you format the options string to communicate more than one param statement?
    (in either xsl.exe and/or oraxsl class).
    Suppose I have an xslt stylesheet as follows:
    ==================================================
    <?xml version="1.0" ?>
    <xsl:stylesheet version="1.1" xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
    <xsl:param name='a' select='"default_a"' />
    <xsl:param name='b' select='"default_b"' />
    <xsl:param name='c' select="'default_c"' />
    <xsl:template match='/'>
    this is value for a: <xsl:value-of select='$a' />
    this is value for b: <xsl:value-of select='$b' />
    this is value for c: <xsl:value-of select=$c' />
    <xsl:apply-templates />
    </xsl:template>
    </xsl:stylesheet>
    ========================================================
    Now as part of the calling of the XSL processor I want to change the value of these
    three global parameters.
    I want:
    a="current_a",
    b="current_b",
    and c="current_c"
    How do I express this using xsl.exe and its paramter string (-V ????).
    and/or how do I express it to the oraxsl class ( -p (xsl, a,"current_a"), (....) )???
    The syntax for specifying this information is not very clear in either situation.
    Of course I am making the "assumption" that by "param" they are
    refering to "global parameters" (as in my stylesheet), rather than some other global parameters of XLST.
    As an aside inquiry:
    I had hopped that the Oracle's xsl Verion 2 routine could handle xslt 2.0 commands
    such as "xsl:for-each-group", since it handled multiple xsl:outputs.
    From reading some of the documentation it seems it only handles xslt 1.0 syntax/commands.
    Is this true? (or is the documentation not up-to-date?).
    Any help on passing param values to xsl.exe and/or "oraxsl" class is appreciated.
    Thanks.

    Here is the line from one of my testing .bat files that passed in one parameter. I can't recall if I've passed in two, but this will give you a starting point for passing in multiple
    java -cp %CPath% oracle.xml.parser.v2.oraxsl -p show_image='yes' %ValXML% %ValXSLT% As for XSLT 2.0 support, it appears it does per {thread:id=503445}

Maybe you are looking for