Get a reference of a local class at another program

Hello experts! Sorry if this has been asked before, but I couldn't find exactly what I'm searching for.
Within function-pool MIGO (main program of transaction MIGO), there's a local class LCL_MIGO_KERNEL. This class has the private attribute PT_CHANGE_TAKEIT (which is an internal table).
During the execution of MIGO, for a certain criteria, I would like to clear the contents of PT_CHANGE_TAKEIT. Since it's a private attibute, I have managed to create a new public method that just clears it. This method was defined and inplemented within ENHANCEMENT SPOTS available all over SAPLMIGO. My method is ZZ_CLEAR_PT_CHANGE_TAKEIT. So far so good.
Now, I have to call this method. I have found no other ENHANCEMENT SPOTS in SAPLMIGO at a place where I would me able to make the call (eg, don't know if the criteria fits yet).
Inside BADI MB_MIGO_BADI, method LINE_MODIFY, I have just what I need to know if I should clear PT_CHANGE_TAKEIT.
However, inside here I don't have access to the instance of class LCL_MIGO_KERNEL (the instance itself is (SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL)
So far I have managed to get a pointer to the instance with:
  FIELD-SYMBOLS: <lfs_kernel> TYPE ANY.
  ASSIGN ('(SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL')
    TO <lfs_kernel>.
So I have the instance of the class, but how can I call my method ZZ_CLEAR_PT_CHANGE_TAKEIT?
The command  call method <lfs_kernel>->zz_clear_pt_change_takeit.
can't be done because ""<LFS_KERNEL>" is not a reference variable" as the sintax check tells me.
I have tried stuff like
  CREATE DATA dref TYPE REF TO
             ('\FUNCTION-POOL=MIGO\CLASS=LCL_MIGO_KERNEL').
  ASSIGN dref->* TO <ref>.
but nothing works so far.
I know if LCL_MIGO_KERNEL was a class from SE24 (not a local one), I could just create a field-symbol of that type instead of type ANY and it would work.
Does anyone have an idea how that can be done?
Thank you very much!

I have managed to do what I needed by calling my method from other ENHANCEMENT SPOTS within SAPLMIGO and some extra coding on MB_MIGO_BADI, but unfortunately I couldn't do what I originaly wanted which was to call a method of a local class from another program, something that could be handy in other situations.
If it's not lack of knowledge by myself and it really can't be done, I think the ABAP OO framework fell just short of having that flexibility, since I can get the field-symbol to point to the instance of the class, but just can't call the method because of syntax issues.
Thanks!
Well it seems you already solved, but I got curious and knew how this could be done, so I wanted to prove it and here it is:
* This would be inside the Function group
CLASS lcl_kernel DEFINITION.
  PUBLIC SECTION.
    METHODS:
      zz_clear_pt_change_takeit.
ENDCLASS.                    "lcl_kernel DEFINITION
CLASS lcl_kernel IMPLEMENTATION.
  METHOD zz_clear_pt_change_takeit.
    WRITE 'Dummy! I do nothing!'.
  ENDMETHOD.                    "zz_clear_pt_change_takeit
ENDCLASS.                    "lcl_kernel IMPLEMENTATION
START-OF-SELECTION.
* This is just to create the reference. It corresponds to
* (SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL in your example
  DATA: kernel  TYPE REF TO lcl_kernel.
  CREATE OBJECT kernel.
*----------------- Now your program (which supposedly does not have
*----------------- access to kernel or even lcl_kernel def)
*----------------- would begin
  FIELD-SYMBOLS: <lfs_kernel> TYPE ANY.
  DATA: generic_ref           TYPE REF TO object.
  ASSIGN ('KERNEL')
    TO <lfs_kernel>.
  generic_ref = <lfs_kernel>.
  TRY.
      CALL METHOD generic_ref->('ZZ_CLEAR_PT_CHANGE_TAKEIT').
    CATCH cx_sy_dyn_call_illegal_method .
  ENDTRY.
Apart from that, I wouldn't access a local class this way. There's a reason for blocking the access, one of them being that SAP could change local classes without notice thus breaking your program.

Similar Messages

  • How can I get a reference to the Local interface of a EJB 3 session?

    Hi,
    How can I get a reference to the Local interface of a EJB 3 session?
    My session implements both the local and remote interfaces, so in my client, when I look up the remote interface using the following code, I did get a reference
              processor = (IItemProcessorRemote)initialContext.lookup(IItemProcessorRemote.class.getName());but if I also look up the local interface in th eclient using this:
    processorLocal =(IItemProcessor)initialContext.lookup(IItemProcessor.class.getName());I got errors like the following, do you know why? Thanks a lot!
    Exception in thread "main" javax.naming.NameNotFoundException: sessions.IItemProcessor not found
         at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:203)
         at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:175)
         at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:61)
         at com.sun.enterprise.naming.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:116)
         at sun.reflect.GeneratedMethodAccessor114.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:121)
         at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:650)
         at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:193)
         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1705)
         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1565)
         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:947)
         at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:178)
         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:717)
         at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:473)
         at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1270)
         at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:479)

    BTW, findItemByTitle(String title) is a business method in my ItemProcessor session bean.
    public String findItemByTitle(String title) {
              AuctionItem item;
              String result = null;
              try {
                   Query query = entityManager
                             .createNativeQuery("SELECT i from AuctionItem i WHERE i.title LIKE : aTitle");
                   query.setParameter("aTitle", title);
                   item = (AuctionItem) query.getSingleResult();
                   result = item.toString();
              } catch (EntityNotFoundException notFound) {
              } catch (NonUniqueResultException nonUnique) {
              return result;
         }

  • Getting appmod reference in UIX controller class

    Hi,
    I tried using ServletBindingUtils.getApplicationModule(BajaContext) method in a static method in UIX controller class to get the reference of application module defined in UIX page. But i am getting null. How can i get the reference of view and appmod in UIX controller class
    regards,
    srivatsan

    Your event handler has to be within a <bc4j:findRootAppModule> element.

  • Local Classes

    hi.
    seeing the example
        class outer{
        void aloha(){
          final int i=0;
          int j=0;
          class local{
              System.out.println(i);//compile-ok
              System.out.println(j);//compile-error
      why the local class only access final variables of the enclosing code block.

    Rules:
    (1) Local variables are stored on the stack.
    (2) Therefore, when a method returns, its local variables no longer exist. (The stack is unwound when the method returns.)
    (3) The local class may exist beyond the return of the method, maybe you stored it in a field, or passed it to another object.
    So what if the local class tried to change the value of the local variable 'j'? After the method aloha() returns? 'j' doesn't exist anymore, it has no storage allocated to it and nowhere to lay its weary head.
    If we make the variable final, then we can pass it by value instead of by reference to the local class. Passing by value means we make a separate copy for the inner class, but it also means that changes to the copy aren't reflected in the original variable.
    But if it's final, we know it will never be assigned to again, so our inner class's copy is valid.
    So Java only allows inner classes to access local variables that are declared final.

  • When is it best to use Local Classes..?

    Hi All,
           We all know that a global class creation is very helpful wherein the class can be reused by multiple programs.In contrast when is it best to use a local class within the program...?
    Can anyone please share the sample scenarios where we need to make use of a local class...?
    Cheers
    Nishanth

    Hi Nishanth,
    First of all, there will be a few cases when creating a local class in your program is mandatory. For example,
    if you're using an ALV Grid on your screen using the OO Approach, then you <b>must</b> declare a class locally in
    your program if you want to handle the events. You cannot use a subroutine in this case.
    Secondly, if you are looking for an explanation that is more introductory in nature, then the ABAP Programming
    help has got some good documentation. Here are the links which explain the concepts with an example as a
    transition from function groups to classes -
    http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    Regards,
    Anand Mandalika.

  • Local class invisible after transport to test system

    Hello,
    i face the following strange problem:
    I have a local class within another class, and in the development system, i can access this local class via its entry in the object tree in object navigator. My class has a subnode "Local Classes" there, which also has a subnode for my specific local class.
    I transported the coding to the test system and it works well there too, but for some reason i cannot see my local class in the se80. The class is apparently transported, the programm works, and if i execute my programm in debugging mode, i can even go through the code lines of the local class, but i can't find it in the se80.
    Does anyone know why this happens?

    Tobias Falke wrote:
    > But why do i have to do this manually?
    Good question. Next question?

  • Getting cl_abap_structdescr for method parameters of LOCAL classes?

    Hi guys
    I have a bit of a of a problem with getting an instance of the cl_abap_structdescr class for a method parameter type of a local class. The RTTI structure abap_parmdescr can only be used to diffrentiate between the basic built-in ABAP types and whether types are structures, tables or references. The question now arrives that once you have diffentiated that the parameter is a structure how do you determine the actual structure TYPE name for local classes to create an instance of the cl_abap_structdescr to continue your run-time analysis. For dictionary classes the parameter type name can be retrieved from the seosubcodf table, to me it looks as if one would have to resort to scanning the source code of local classes to arrive at the actual  structure type name, but before I go to THAT kind of trouble I was wondering whether somebody out there might have a better solution for me. Your help would be grreatly appreciated and rewarded ;).
    Kind regards
    Ettienne Hugo

    Hello Uwe
    Thanks for your reply, I checked out the CL_OO_LOCAL_CLASSES class, unfortunately the class actually operates on the local classes declared for a dictionary class. I think to clarify my question I should point out that the parameters I'm trying to process are parameters that belong to classes that are defined and implemented using include programs, these include programs would then typically be used in Function Groups to construct applications so the classes that I refer to are actually not in any way related to dictionary classes. The cl_abap_classdescr class works fine on these types of classes when you refer to them using the "\PROGRAM=my_program\CLASS=my_class" format with the describe_by_name method, unfortunately the class just does not provide sufficient information for structure type parameters to actually construct them during run-time...
    Stay well
    Ettienne

  • How to get a reference to the owner of a class instance?

    Within a method of a class, how can I get a reference to the
    object containing the class instance?
    To be clear: I have class B that contains a method, say
    "myfunc()". Class A (say, the application itself or a custom
    component) instantiates a new instance of Class B : myclassB=new
    ClassB()
    Now, from within myfunc() can I get a reference to Class A?
    The simplest way here is to pass a "this" reference when
    calling myfunc(), i.e. "myclassB.myfunc(this)" but I would prefer
    not to have to remember to always use 'this'.

    Are these objects within each other. Does classA own classB?
    If that is the case, then Greg is correct and it should be
    available in parentDocument.
    In projects in the past we have created a central
    refObjectLocator object that is available to all objects.
    Mostly we use events to communicate between objects. Dispatch
    an event and let whoever listen for it.
    Here is a copy of our reflocator if you are interested.
    package com.goconfigure.model {
    import mx.collections.ArrayCollection;
    import com.adobe.cairngorm.model.ModelLocator;
    import com.goconfigure.util.HashMap;
    [Bindable]
    public class RefObjectLocator implements ModelLocator {
    // this instance stores a static reference to itself
    private static var refObject : RefObjectLocator;
    public var refObjectHM : HashMap = new HashMap();
    // singleton: constructor only allows one model locator
    public function AppLocator() : void {
    if ( RefObjectLocator.refObject != null )
    throw new Error( "Only one RefObjectLocator instance should
    be instantiated" );
    // singleton: always returns the one existing static
    instance to itself
    public static function getInstance() : RefObjectLocator {
    if ( refObject == null )
    refObject = new RefObjectLocator();
    return refObject;
    public function addRefObject( pRefObject : Object, pName :
    String ) : void {
    refObjectHM.put(pName,pRefObject);
    public function getRefObject( pName : String ) : Object {
    return refObjectHM.getValue(pName);
    public function removeRefObject( pName : String ) : void {
    refObjectHM.remove(pName);
    public function clearRefObject() : void {
    refObjectHM.clear();

  • Problem with local class, static private attribute and public method

    Hello SDN,
    Consider the following situation:
    1) I have defined a LOCAL class airplane.
    2) This class has a private static attribute "type table of ref to" airplane (array of airplanes)
    3) A public method should return the private static table attribute
    Problems:
    a) The table cannot be given as an EXPORTING parameter in the method because TYPE TABLE OF... is not supported and I get syntax errors. I also cannot define a dictionary table type because it is a local class.
    b) The table cannot be given as a TABLES parameter in the method because TABLES is not supported in the OO context.
    c) The table cannot be given as an EXPORTING parameter in the method defined as LIKE myStaticAttribute because my method is PUBLIC and my attribute is PRIVATE. ABAP syntax requires that all PUBLIC statements are defined before PRIVATE ones, therefore it cannot find the attribute to reference to with LIKE.
    I see only 2 solutions:
    a) Never ever use local classes and always use global classes so that I might define a dictionary table type of my class which I can then use in my class.
    b) Make the attribute public, but this goes against OO principles, and isn't really an option.
    Am I missing anything here, or is this simply overlooked so far?

    Hello Niels
    Since your class is local and, thus, only know to the "surrounding" application is does not really make sense to make it public to any other application.
    However, if you require to store instances of your local classes in internal tables simply use the most generic reference type possible, i.e. <b>OBJECT</b>.
    The following sample report shows how to do that. Furthermore, I believe it also shows that there are <u><b>no </b></u>serious inconsistency in the ABAP language.
    *& Report  ZUS_SDN_LOCAL_CLASS
    REPORT  zus_sdn_local_class.
    " NOTE: SWF_UTL_OBJECT_TAB is a table type having reference type OBJECT
    *       CLASS lcl_airplane DEFINITION
    CLASS lcl_airplane DEFINITION.
      PUBLIC SECTION.
        DATA:    md_counter(3)             TYPE n.
        METHODS: constructor,
                 get_instances
                   RETURNING
                     value(rt_instances)   TYPE swf_utl_object_tab.
      PRIVATE SECTION.
        CLASS-DATA: mt_instances    TYPE swf_utl_object_tab.
    ENDCLASS.                    "lcl_airplane DEFINITION
    *       CLASS lcl_airplane IMPLEMENTATION
    CLASS lcl_airplane IMPLEMENTATION.
      METHOD constructor.
        APPEND me TO mt_instances.
        DESCRIBE TABLE mt_instances.
        md_counter = syst-tfill.
      ENDMETHOD.                    "constructor
      METHOD get_instances.
        rt_instances = mt_instances.
      ENDMETHOD.                    "get_instance
    ENDCLASS.                    "lcl_airplane IMPLEMENTATION
    DATA:
      gt_instances      TYPE swf_utl_object_tab,
      go_object         TYPE REF TO object,
      go_airplane       TYPE REF TO lcl_airplane.
    START-OF-SELECTION.
      " Create a few airplane instance
      DO 5 TIMES.
        CREATE OBJECT go_airplane.
      ENDDO.
      gt_instances = go_airplane->get_instances( ).
      CLEAR: go_airplane.
      LOOP AT gt_instances INTO go_object.
        go_airplane ?= go_object.
        WRITE: / 'Airplane =', go_airplane->md_counter.
      ENDLOOP.
    END-OF-SELECTION.
    Regards
      Uwe<u></u>

  • How to get File Reference of a properties file from EJB

    Hi,
    I am using Sun App server 7 with Oracle 9i. I am keeping all my SQL statements in a properties file from which I am loading it while making a database operation from Stateless beans. My problem is I am not able to get the reference of the properties file. Here is the code through which I am getting the SQL statements loaded to a cache.
    String sqlFileName = "SQL.properties";
    sqlCache.load(new FileInputStream(sqlFileName));
    From the cache I am sending the SQL statement depending on the key value. But the problem is I have to keep the SQL.properties file on the App Server config directory of the instance where the server.xml file resides. Otherwise it is not able to find the properties file. But I don't want to put the properties file on the config directory of the server instance. Please help how to get the properties file from the packakge. My file is residing inside a package com.company.sql . Botht the properties file and the class accessing the file are residing in the same package. Please help how to get the reference of the file with out putting the file in the config directory.
    Thanks
    Amit Patnaik

    Just wanted to warn you of the hazards if you read a file from EJB
    So please make sure that these hazards will not affect your application. However the solution suggested to use getResourceStream() concurs with ejbSpec
    This snippet is from suns blueprint on ejb
    Why can't EJBs read and write files and directories in the filesystem? And why can't they access file descriptors?
    Enterprise beans aren't allowed to access files primarily because files are not transactional resources. Allowing EJBs to access files or directories in the filesystem, or to use file descriptors, would compromise component distributability, and would be a security hazard.
    Another reason is deployability. The EJB container can choose to place an enterprise bean in any JVM, on any machine in a cluster. Yet the contents of a filesystem are not part of a deployment, and are therefore outside of the EJB container's control. File systems, directories, files, and especially file descriptors tend to be machine-local resources. If an enterprise bean running in a JVM on a particular machine is using or holding an open file descriptor to a file in the filesystem, that enterprise bean cannot easily be moved from one JVM or machine to another, without losing its reference to the file.
    Furthermore, giving EJBs access to the filesystem is a security hazard, since the enterprise bean could potentially read and broadcast the contents of sensitive files, or even upload and overwrite the JVM runtime binary for malicious purposes.
    Files are not an appropriate mechanism for storing business data for use by components, because they tend to be unstructured, are not under the control of the server environment, and typically don't provide distributed transactional access or fine-grained locking. Business data is better managed using a persistence interface such as JDBC, whose implementations usually provide these benefits. Read-only data can, however, be stored in files in a deployment JAR, and accessed with the getResource() or getResourceAsStream() methods of java.lang.Class.
    Hope this info helps!

  • Excel Get ActiveX References​.vi and closing references -- grrr

    I'm new to ActiveX stuff, but eager to learn! 
    The "grrr" in my Subject line is a reference to how I feel about LabVIEW's documentation from time to time.  I'm a dinosaur who came from text-based programming, and did a fair amount of C coding, so sometimes with LabVIEW I'm left with this awful feeling in the pit of my stomach like, "Good grief!  How much memory must LabVIEW be hogging up in the background when I use this vi?" or "What happens to those variables (wires) in that subVI when it completes but doesn't close?  What are their statuses when I come back in the next time?" or "What if I put a lot of elements into that array the first time and then started from element zero the second time and just put in a few?  What has happened with the memroy that was allocated when there were a lot of elements?"
    Today I'm stewing about this "Excel Get ActiveX References.vi," and what happens to the "ActiveX references" it generates each time I call the subVI in which "Excel Get ActiveX References.vi" lives.  I think that at least one of the "ActiveX references" it generates when I call it is of the type Excel._Application.  Then there appears to be an Excel._Workbook, and others.  You see, I've used "Excel Easy Report.vi" to put some data into an Excel spreadsheet, and I want to tell Excel to do a "Save" on the open spreadsheet.  I think ActiveX is the (a) right way to do that, so I'm wading into the ActiveX fray...  But this "Excel Get ActiveX References.vi" says in its help file, "Do not close ActiveX references opened with the Excel Get ActiveX References VI. References must remain open until the report is closed. Otherwise the error 3001 will occur."  Well, these Excel workbooks that get created by my VI could well stay open until after my LabVIEW VI terminates!
    So (finally), here are some of my quesitons:
    1)  When I go through my subVI once, pointing to one workbook, I'll get one set of references "created" or "opened" or whatever you call it when ActiveX references spring into existance.  Now, when I exit the subVI, is it going to automatically try to "close" those ActiveX references?  I don't suppose so, since subVI's stay in memory until the calling VI closes.
    2)  Now, I come back into my subVI a second time.  New workbook gets created, so I get new references.  Ok, fine.  Uh oh!  What happened to those old references?  I suppose that if I didn't somehow save them off, I've probably lost the ability to get them back (maybe I'm wrong, but I don't need them back), but is LabVIEW going to "close" those old references (from previous times through the subVI) because I can't get to them anymore?  Won't that cause the dreaded error 3001?  If LabVIEW is not going to "close" them, what in tarnation happens to them (the old C programmer in me creeping back out)??  Now it's some oddball, orphaned reference, floating out there, hogging memory, waiting to make something crash intermittently and be a debugging nightmare?
    3)  Now, here's the real scary one.  I think I might dodge the "error 3001" bullet in questions 1) and 2), but now let's say the user closes my LabVIEW application while Excel is still open.  All those workbooks are still open.  Presumably, all those ActiveX references I was not supposed to close are still open.  I really hope that LabVIEW is decent enough to close/erase/delete/blow-away (whatever the right word is) all those ActiveX references which were opened/created by "Excel Get ActiveX References.vi" when my program terminates.  But, oh no!  Won't the error 3001 come along then?  I suppose I can just dump it in the shutdown error handling.
    Well, thanks for reading my novel.  I don't know what can be done with LabVIEW documentation to make it more satisfying to folks like me, but perhaps someone can weigh in on all my ActiveX questions here.
    Thank you in advance,
    Steve Brady
    Solved!
    Go to Solution.

    You need to close EVERY ActiveX reference you open.  If you don't you'll end up with some Excel processes running even after LabVIEW exits.  You can see them in Task Manager.
    I, personally, don't like the LabVIEW Report Generation Tool Kit for working with Excel.  I don't think it's flexible enough.  I have a growing library of VIs that I've written that open, manipulate, and close Excel.  Some references I pass from VI to VI and some I close right after I use them.  It all depends on what I'm doing.  If I want to enter read or write data from/to a certain range I'll get the range reference, read or write the data, then close it right away because I have no use for it any more.  On the other hand, when I open Excel or a Workbook I keep the reference until I'm done, which could be later in the program.
    1)  When I go through my subVI once, pointing to one workbook, I'll get one set of references "created" or "opened" or whatever you call it when ActiveX references spring into existence.  Now, when I exit the subVI, is it going to automatically try to "close" those ActiveX references?  I don't suppose so, since subVI's stay in memory until the calling VI closes.
    2)  Now, I come back into my subVI a second time.  New workbook gets created, so I get new references.  Ok, fine.  Uh oh!  What happened to those old references?  I suppose that if I didn't somehow save them off, I've probably lost the ability to get them back (maybe I'm wrong, but I don't need them back), but is LabVIEW going to "close" those old references (from previous times through the subVI) because I can't get to them anymore?  Won't that cause the dreaded error 3001?  If LabVIEW is not going to "close" them, what in tarnation happens to them (the old C programmer in me creeping back out)??  Now it's some oddball, orphaned reference, floating out there, hogging memory, waiting to make something crash intermittently and be a debugging nightmare?
    3)  Now, here's the real scary one.  I think I might dodge the "error 3001" bullet in questions 1) and 2), but now let's say the user closes my LabVIEW application while Excel is still open.  All those workbooks are still open.  Presumably, all those ActiveX references I was not supposed to close are still open.  I really hope that LabVIEW is decent enough to close/erase/delete/blow-away (whatever the right word is) all those ActiveX references which were opened/created by "Excel Get ActiveX References.vi" when my program terminates.  But, oh no!  Won't the error 3001 come along then?  I suppose I can just dump it in the shutdown error handling.
    1)  No, LabVIEW will NOT close those references.  You need to make sure that happens.
    2)  You can save the references in a functional global or use a class but if you're not going to save them close them as soon as you're done with them.
    3)  Your user should not be able to close your LabVIEW application without it going through the shutdown routine you've created for your program.  The ABORT button should never be exposed to the user and you should capture and discard the panel close event so your program ALWAYS shuts down is an orderly fashion.  If you don't you will have fragments of Excel hanging around in your operating system and will have to kill those processes using Task Manager.  That should only be a problem during development, not once deployed.
    I used to program in C and Assembly many moons ago.  You should have seen my first LabVIEW code.  I go back and look at it just so I can see how far I've come in the last 12 years.  I feel your pain.
    Kelly Bersch
    Certified LabVIEW Developer
    Kudos are always welcome

  • Not able to get group name by using memberof class, getting Total groups as 0 even I am member of that group.

    Not able to get group name by using memberof class, getting Total groups as 0 even I am member of that group. Through this memberof class I am trying to find full qualified name(DN) of my group.
    code I have used:
    //specify the LDAP search filter
                   String searchFilter = "(&(objectClass=user)(CN=Username))";
                   //Specify the Base for the search
                   String searchBase = "";
    Also I have used,
                 String searchFilter = "(&(objectClass=user)(CN=Username))";
                   //Specify the Base for the search
                   String searchBase = "ou=ibmgroups,o=ibm.com";
    But in both cases I am getting value for Total groups as 0.
    Code Reference:
    * memberof.java
    * December 2004
    * Sample JNDI application to determine what groups a user belongs to
    import java.util.Hashtable;
    import javax.naming.*;
    import javax.naming.ldap.*;
    import javax.naming.directory.*;
    public class memberof     {
         public static void main (String[] args)     {
              Hashtable env = new Hashtable();
              String adminName = "CN=Administrator,CN=Users,DC=ANTIPODES,DC=COM";
              String adminPassword = "XXXXXXX";
              String ldapURL = "ldap://mydc.antipodes.com:389";
              env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
              //set security credentials, note using simple cleartext authentication
              env.put(Context.SECURITY_AUTHENTICATION,"simple");
              env.put(Context.SECURITY_PRINCIPAL,adminName);
              env.put(Context.SECURITY_CREDENTIALS,adminPassword);
              //connect to my domain controller
              env.put(Context.PROVIDER_URL,ldapURL);
              try {
                   //Create the initial directory context
                   LdapContext ctx = new InitialLdapContext(env,null);
                   //Create the search controls          
                   SearchControls searchCtls = new SearchControls();
                   //Specify the search scope
                   searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
                   //specify the LDAP search filter
                   String searchFilter = "(&(objectClass=user)(CN=Andrew Anderson))";
                   //Specify the Base for the search
                   String searchBase = "DC=antipodes,DC=com";
                   //initialize counter to total the group members
                   int totalResults = 0;
                   //Specify the attributes to return
                   String returnedAtts[]={"memberOf"};
                   searchCtls.setReturningAttributes(returnedAtts);
                   //Search for objects using the filter
                   NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);
                   //Loop through the search results
                   while (answer.hasMoreElements()) {
                        SearchResult sr = (SearchResult)answer.next();
                        System.out.println(">>>" + sr.getName());
                        //Print out the groups
                        Attributes attrs = sr.getAttributes();
                        if (attrs != null) {
                             try {
                                  for (NamingEnumeration ae = attrs.getAll();ae.hasMore();) {
                                       Attribute attr = (Attribute)ae.next();
                                       System.out.println("Attribute: " + attr.getID());
                                       for (NamingEnumeration e = attr.getAll();e.hasMore();totalResults++) {
                                            System.out.println(" " +  totalResults + ". " +  e.next());
                             catch (NamingException e)     {
                                  System.err.println("Problem listing membership: " + e);
                   System.out.println("Total groups: " + totalResults);
                   ctx.close();
              catch (NamingException e) {
                   System.err.println("Problem searching directory: " + e);
    Any help will be highly appreciated.

    Not able to get group name by using memberof class, getting Total groups as 0 even I am member of that group. Through this memberof class I am trying to find full qualified name(DN) of my group.
    code I have used:
    //specify the LDAP search filter
                   String searchFilter = "(&(objectClass=user)(CN=Username))";
                   //Specify the Base for the search
                   String searchBase = "";
    Also I have used,
                 String searchFilter = "(&(objectClass=user)(CN=Username))";
                   //Specify the Base for the search
                   String searchBase = "ou=ibmgroups,o=ibm.com";
    But in both cases I am getting value for Total groups as 0.
    Code Reference:
    * memberof.java
    * December 2004
    * Sample JNDI application to determine what groups a user belongs to
    import java.util.Hashtable;
    import javax.naming.*;
    import javax.naming.ldap.*;
    import javax.naming.directory.*;
    public class memberof     {
         public static void main (String[] args)     {
              Hashtable env = new Hashtable();
              String adminName = "CN=Administrator,CN=Users,DC=ANTIPODES,DC=COM";
              String adminPassword = "XXXXXXX";
              String ldapURL = "ldap://mydc.antipodes.com:389";
              env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
              //set security credentials, note using simple cleartext authentication
              env.put(Context.SECURITY_AUTHENTICATION,"simple");
              env.put(Context.SECURITY_PRINCIPAL,adminName);
              env.put(Context.SECURITY_CREDENTIALS,adminPassword);
              //connect to my domain controller
              env.put(Context.PROVIDER_URL,ldapURL);
              try {
                   //Create the initial directory context
                   LdapContext ctx = new InitialLdapContext(env,null);
                   //Create the search controls          
                   SearchControls searchCtls = new SearchControls();
                   //Specify the search scope
                   searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
                   //specify the LDAP search filter
                   String searchFilter = "(&(objectClass=user)(CN=Andrew Anderson))";
                   //Specify the Base for the search
                   String searchBase = "DC=antipodes,DC=com";
                   //initialize counter to total the group members
                   int totalResults = 0;
                   //Specify the attributes to return
                   String returnedAtts[]={"memberOf"};
                   searchCtls.setReturningAttributes(returnedAtts);
                   //Search for objects using the filter
                   NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);
                   //Loop through the search results
                   while (answer.hasMoreElements()) {
                        SearchResult sr = (SearchResult)answer.next();
                        System.out.println(">>>" + sr.getName());
                        //Print out the groups
                        Attributes attrs = sr.getAttributes();
                        if (attrs != null) {
                             try {
                                  for (NamingEnumeration ae = attrs.getAll();ae.hasMore();) {
                                       Attribute attr = (Attribute)ae.next();
                                       System.out.println("Attribute: " + attr.getID());
                                       for (NamingEnumeration e = attr.getAll();e.hasMore();totalResults++) {
                                            System.out.println(" " +  totalResults + ". " +  e.next());
                             catch (NamingException e)     {
                                  System.err.println("Problem listing membership: " + e);
                   System.out.println("Total groups: " + totalResults);
                   ctx.close();
              catch (NamingException e) {
                   System.err.println("Problem searching directory: " + e);
    Any help will be highly appreciated.

  • Get Specific References for all Controls

    Using slightly modified code from here, I am generating an array of all control references on my main front panel which is then passed through to a number of subVIs. Although this functionality does work, it would be preferable to get specific references to the controls (for example, Boolean RefNum instead of Control RefNum). 
    Getting these specific references seems possible using To More Specific Class and Class Specifier constants. However, data storage becomes an issue because I can no longer use arrays (as they are a different data type). I am not sure if there is another way to pass this data on. I have experimented casting the RefNums to Variants, but to get the data from the variant, I have to know what RefNum type I am expecting which sort of defeats the purpose of doing this in the first place.
    A secondary problem is keeping the names of the references. The Control RefNums do not have names associated with them nor do I know how to assign names to them. I've again tried using variants and using the OpenG Set Data Name function, but this crashes LabVIEW without any indication of why.
    I've attached a version of my code that tries assign names using OpenG Set Data Name and build a variant array. To run it, simple add the VI as a subVI to a VI that has some boolean controls on the Front Panel. Apologies for the rough state of the code - I'm still in the process of figuring out how to make it work so things are a bit messy.
    Solved!
    Go to Solution.
    Attachments:
    Get Specific Control Refs.vi ‏28 KB

    I don't know if you'll get much better.  There is really no way I know of to have some fully flexible way of building named clusters of references based on any given front panel set you feed to it.
    I tend to do things the manual way (as there are also a bunch of references to front panel elements I wouldn't need).  I would do all the bundling work in a subVI.
    I'm attaching a zip file that contains the key VI's (unless I missed something) on the first project where I really tried to abstract out the reference building.  The files are LV9.
    On my main VI, I have the subVI called Build UI References early in the VI during an initialization phase.  I pass the reference to the main VI into that subVI that builds all the references.  I worked it as a master cluster that contains elements that are arrays of references of related controls.  It uses another subVI called Get References and Label Names that I created to help find controls.  I still need to use More Specific Class to get the property references, but I don that only once at the beginning.  I then pass that cluster wire out and to anywhere in my VI that would need access to the references for front panel elements.
    I use arrays of strings to supply the names I need to build and bundle the references.  This lets me ignore controls I don't care about.  The disadvantages to my system is that if I change the name of any control, I need to update the name within this subVI.  And if I want to add any controls, not only do I need to add the label names for the searching functions, I also need to update my typedef cluster (and you definitely want this to be a typedef) to add a spot to store the new reference.
    I hope this gives you some ideas.  It worked for me and I will likely use the scheme on another project (or even rewrite past projects using this scheme.)  If there are any ideas for improvements, I'd be happy to hear them.
    Attachments:
    Build UI refs.zip ‏83 KB

  • How to get the reference of the cell id in validate method in adf

    Hi All,
    I am using Jdeveloper 11.1.1.2 and i am using custom validator where i have registered the validator in facesconfig.xml.I need to know how can i get the ID of the inputtext box which is present in the hierarchy as Panel Header->Table->column->textbox :-
    Below is my custom validator class source , please tell me how to get the reference of the textbox which is present in such hierarchy.:-
    package validator;
    import java.io.Serializable;
    import java.util.Date;
    import javax.faces.application.FacesMessage;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.validator.Validator;
    import javax.faces.validator.ValidatorException;
    import oracle.adf.view.rich.component.rich.input.RichInputDate;
    import oracle.adf.view.rich.component.rich.input.RichInputText;
    import oracle.adfinternal.view.faces.bi.util.JsfUtils;
    public class ValidateConversion implements Serializable, Validator {
    public ValidateConversion() {
    super();
    public void validate(FacesContext facesContext, UIComponent uIComponent,
    Object object) throws ValidatorException {
    System.out.println("*************");
    System.out.println((String)object);
    //get component id by get("AttributeName");
    String conversionComponentId = (String)uIComponent.getAttributes().get("UncommittedOrder_PH:t7:it14");
    System.out.println("conversionComponentId=" + conversionComponentId);
    RichInputText conversionComponent = (RichInputText)uIComponent.findComponent(conversionComponentId);
    Integer conversion = (Integer)conversionComponent.getValue();
    Integer quantityInBags = (Integer)object;
    //get labels from the two inputDate component.
    String conversionLabel = conversionComponent.getLabel();
    String quantityInBagsLabel = ((RichInputText)uIComponent).getLabel();
    Integer remainder = (quantityInBags % conversion);
    //throw error if valiation fails
    if (remainder > 0) {
    throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
    "The " + quantityInBagsLabel + " should be in multiples of" + conversion +".",
    null));
    Thanks,
    Plese reply!!!

    Thanks Jabr,
    This is my jsff page source and i need to find the reference of it14 which is the textbox :-
    <af:panelGroupLayout id="pgl1" styleClass="AFStretchWidth">
    <af:panelHeader text="Results" id="Results_PH" size="1">
    <af:table value="#{bindings.queryProductResponseType.collectionModel}"
    var="row"
    rows="#{bindings.queryProductResponseType.rangeSize}"
    emptyText="#{bindings.queryProductResponseType.viewable ? 'No data to display.' : 'Access Denied.'}"
    fetchSize="#{bindings.queryProductResponseType.rangeSize}"
    rowBandingInterval="1"
    filterModel="#{bindings.queryProductResponseTypeQuery.queryDescriptor}"
    queryListener="#{bindings.queryProductResponseTypeQuery.processQuery}"
    filterVisible="true" varStatus="vs" id="ResultTable_t"
    width="99%" partialTriggers="::cb1 ::cb2 ::cb3 it14"
    binding="#{viewScope.GrowerOrderBean.resultTable}"
    columnStretching="last" rowSelection="multiple"
    sortListener="#{viewScope.GrowerOrderBean.sortResultTable_action}"
    autoHeightRows="8" first="0"
    inlineStyle="height:196px;margin:10px"
    selectionListener="#{viewScope.GrowerOrderBean.resultRowSelect_action}">
    <af:column filterable="false" sortable="false" headerText="Select"
    id="c9" width="55" rendered="false"
    filterFeatures="caseInsensitive">
    <div align="center">
    <af:selectBooleanCheckbox value="#{row.bindings.booleanFlag.inputValue}"
    label="#{bindings.queryProductResponseType.hints.booleanFlag.label}"
    required="#{bindings.queryProductResponseType.hints.booleanFlag.mandatory}"
    shortDesc="#{bindings.queryProductResponseType.hints.booleanFlag.tooltip}"
    id="it19" autoSubmit="true">
    <f:validator binding="#{row.bindings.booleanFlag.validator}"/>
    </af:selectBooleanCheckbox>
    </div>
    </af:column>
    <!-- START of column created by SYSTIME -->
    <af:column sortProperty="quantity" headerText="Quantity in Bags" filterFeatures="caseInsensitive"
    id="c54" rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterable="true" sortable="true">
    <af:inputText label="Quantity in Bags" id="it14"
    partialTriggers="it19" autoSubmit="true"
    readOnly="#{row.activeYN == 'N' or row.availability &lt; 0 or row.availability ==0}"
    valueChangeListener="#{viewScope.GrowerOrderBean.compare}">
    <af:validateLongRange id="RangeCheck_Val1" minimum="1"
    maximum="#{row.availability * row.conversion}"
    messageDetailNotInRange="You have entered a quantity more than is available. Quantity entered must be in the range of {2} to {3}"
    messageDetailMinimum="Minimum {0} allowed is {2}"
    messageDetailMaximum="Maximum {0} allowed is {2}"
    hintNotInRange="#{'Quantity In Bags to Order'}"/>
    <af:validateRegExp pattern="^[1-9]+[0-9]*$"
    messageDetailNoMatch="Quantity In Bags must be in whole number format."/>
    <f:validator validatorId="custom.conversionValidator"/>
    </af:inputText>
    </af:column>
    <!-- END of column created by SYSTIME -->
    <af:column sortProperty="quantity" filterable="true"
    sortable="true" headerText="Quantity" id="c3"
    width="60"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive" visible="false">
    <div align="center" >
    <af:inputText value="#{row.bindings.quantity.inputValue}"
    label="#{bindings.queryProductResponseType.hints.quantity.label}"
    required="#{bindings.queryProductResponseType.hints.quantity.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.quantity.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.quantity.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.quantity.tooltip}"
    id="it5" partialTriggers="it19"
    readOnly="#{row.activeYN == 'N' or row.availability &lt; 0 or row.availability ==0}">
    <f:validator binding="#{row.bindings.quantity.validator}"/>
    <af:validateLongRange id="RangeCheck_Val" minimum="1"
    maximum="#{row.bindings.availability.inputValue}"
    messageDetailNotInRange="You have entered a quantity more than is available. Quantity entered must be in the range of {2} to {3}"
    messageDetailMinimum="Minimum {0} allowed is {2}"
    messageDetailMaximum="Maximum {0} allowed is {2}"
    hintNotInRange="#{'Quantity to Order'}"/>
    <af:validateRegExp pattern="^[1-9]+[0-9]*$"
    messageDetailNoMatch="Quantity must be in whole number format."/>
    </af:inputText>
    </div>
    </af:column>
    <af:column sortProperty="brand" filterable="true" sortable="true"
    headerText="Brand" id="c10" width="80"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive" displayIndex="-1">
    <af:inputText value="#{row.bindings.brand.inputValue}"
    label="#{bindings.queryProductResponseType.hints.brand.label}"
    required="#{bindings.queryProductResponseType.hints.brand.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.brand.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.brand.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.brand.tooltip}"
    id="it7" readOnly="true">
    <f:validator binding="#{row.bindings.brand.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="seedsz" filterable="true" sortable="true"
    headerText="Seed Size" id="c7" width="50"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive">
    <af:inputText value="#{row.bindings.seedsz.inputValue}"
    label="#{bindings.queryProductResponseType.hints.seedsz.label}"
    required="#{bindings.queryProductResponseType.hints.seedsz.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.seedsz.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.seedsz.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.seedsz.tooltip}"
    id="it11" readOnly="true"
    contentStyle="text-transform:uppercase">
    <f:validator binding="#{row.bindings.seedsz.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="pckSize" filterable="true"
    sortable="true" headerText="Pkg Size" id="c11"
    width="50"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive"
    inlineStyle="#{row.conversion > 1 ? 'background-color:Yellow;' : 'background-color:White;'}">
    <af:inputText value="#{row.bindings.pckSize.inputValue}"
    label="#{bindings.queryProductResponseType.hints.pckSize.label}"
    required="#{bindings.queryProductResponseType.hints.pckSize.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.pckSize.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.pckSize.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.pckSize.tooltip}"
    id="it8" readOnly="true">
    <f:validator binding="#{row.bindings.pckSize.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="conversion" filterable="true"
    sortable="true" headerText="Conv" id="c4" width="50"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive" displayIndex="-1">
    <af:inputText value="#{row.bindings.conversion.inputValue}"
    label="#{bindings.queryProductResponseType.hints.conversion.label}"
    required="#{bindings.queryProductResponseType.hints.conversion.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.conversion.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.conversion.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.conversion.tooltip}"
    id="conversion_it" readOnly="true">
    <f:validator binding="#{row.bindings.conversion.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="treatment" filterable="true"
    sortable="true" headerText="Treatment" id="c13"
    width="70"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive">
    <af:inputText value="#{row.bindings.treatment.inputValue}"
    label="#{bindings.queryProductResponseType.hints.treatment.label}"
    required="#{bindings.queryProductResponseType.hints.treatment.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.treatment.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.treatment.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.treatment.tooltip}"
    id="it20" readOnly="true">
    <f:validator binding="#{row.bindings.treatment.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="availability" filterable="true"
    sortable="true" headerText="Availability" id="c15"
    width="60"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive">
    <af:inputText value="#{row.availability> 500 ? '>=500': (row.availability> 100 and row.availability&lt;500 ? '100-500' : row.availability) }"
    label="#{bindings.queryProductResponseType.hints.availability.label}"
    required="#{bindings.queryProductResponseType.hints.availability.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.availability.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.availability.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.availability.tooltip}"
    id="it9" readOnly="true">
    <f:validator binding="#{row.bindings.availability.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="desiredDeliveryDate" filterable="true"
    sortable="true" headerText="Desired Delivery Month" id="c2"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive" width="90">
    <af:selectOneChoice id="soc1" partialTriggers="it19"
    unselectedLabel="#{viewScope.GrowerOrderBean.desiredDeliveryDate}"
    value="#{row.bindings.desiredDeliveryDate.inputValue}"
    readOnly="#{row.activeYN == 'N'}">
    <af:forEach var="item"
    items="#{viewScope.GrowerOrderBean.selectItems}">
    <af:selectItem label="#{item.label}" value="#{item.value}"/>
    </af:forEach>
    </af:selectOneChoice>
    </af:column>
    <af:column sortProperty="maturity" filterable="true"
    sortable="true" headerText="Maturity" id="c5"
    width="60"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive">
    <div align="center">
    <af:inputText value="#{row.bindings.maturity.inputValue}"
    label="#{bindings.queryProductResponseType.hints.maturity.label}"
    required="#{bindings.queryProductResponseType.hints.maturity.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.maturity.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.maturity.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.maturity.tooltip}"
    id="it16" readOnly="true">
    <f:validator binding="#{row.bindings.maturity.validator}"/>
    </af:inputText>
    </div>
    </af:column>
    <af:column sortProperty="technology" filterable="true"
    sortable="true" headerText="Technology" id="c14"
    rendered="true" filterFeatures="caseInsensitive">
    <af:inputText value="#{row.bindings.technology.inputValue}"
    label="#{bindings.queryProductResponseType.hints.technology.label}"
    required="#{bindings.queryProductResponseType.hints.technology.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.technology.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.technology.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.technology.tooltip}"
    id="it15" readOnly="true">
    <f:validator binding="#{row.bindings.technology.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="prdLine" filterable="true"
    sortable="true" headerText="Product Line" id="c6"
    width="70"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive">
    <af:inputText value="#{row.bindings.prdLine.inputValue}"
    label="#{bindings.queryProductResponseType.hints.prdLine.label}"
    required="#{bindings.queryProductResponseType.hints.prdLine.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.prdLine.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.prdLine.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.prdLine.tooltip}"
    id="it12" readOnly="true">
    <f:validator binding="#{row.bindings.prdLine.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="brandMktName" filterable="true"
    sortable="true" headerText="Marketing Brand" id="c8"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive" width="80">
    <af:inputText value="#{row.bindings.brandMktName.inputValue}"
    label="#{bindings.queryProductResponseType.hints.brandMktName.label}"
    required="#{bindings.queryProductResponseType.hints.brandMktName.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.brandMktName.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.brandMktName.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.brandMktName.tooltip}"
    id="it17" readOnly="true">
    <f:validator binding="#{row.bindings.brandMktName.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="itemID" filterable="true" sortable="true"
    headerText="Item#" id="c1"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive" width="60">
    <af:inputText value="#{row.bindings.itemID.inputValue}"
    label="#{bindings.queryProductResponseType.hints.itemID.label}"
    required="#{bindings.queryProductResponseType.hints.itemID.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.itemID.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.itemID.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.itemID.tooltip}"
    id="it6" readOnly="true">
    <f:validator binding="#{row.bindings.itemID.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="descp" filterable="true" sortable="true"
    headerText="Description" id="c17" width="105"
    rendered="#{row.bindings.booleanFlag.inputValue != 'E'}"
    filterFeatures="caseInsensitive">
    <af:inputText value="#{row.bindings.descp.inputValue}"
    label="#{bindings.queryProductResponseType.hints.descp.label}"
    required="#{bindings.queryProductResponseType.hints.descp.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.descp.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.descp.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.descp.tooltip}"
    id="it10" readOnly="true">
    <f:validator binding="#{row.bindings.descp.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="primaryUOM" filterable="true"
    sortable="true"
    headerText="#{bindings.queryProductResponseType.hints.primaryUOM.label}"
    id="c16" rendered="false"
    filterFeatures="caseInsensitive">
    <af:inputText value="#{row.bindings.primaryUOM.inputValue}"
    label="#{bindings.queryProductResponseType.hints.primaryUOM.label}"
    required="#{bindings.queryProductResponseType.hints.primaryUOM.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.primaryUOM.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.primaryUOM.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.primaryUOM.tooltip}"
    id="it18">
    <f:validator binding="#{row.bindings.primaryUOM.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="secondaryUOM" filterable="true"
    sortable="true"
    headerText="#{bindings.queryProductResponseType.hints.secondaryUOM.label}"
    id="c12" rendered="false"
    filterFeatures="caseInsensitive">
    <af:inputText value="#{row.bindings.secondaryUOM.inputValue}"
    label="#{bindings.queryProductResponseType.hints.secondaryUOM.label}"
    required="#{bindings.queryProductResponseType.hints.secondaryUOM.mandatory}"
    columns="#{bindings.queryProductResponseType.hints.secondaryUOM.displayWidth}"
    maximumLength="#{bindings.queryProductResponseType.hints.secondaryUOM.precision}"
    shortDesc="#{bindings.queryProductResponseType.hints.secondaryUOM.tooltip}"
    id="it21">
    <f:validator binding="#{row.bindings.secondaryUOM.validator}"/>
    </af:inputText>
    </af:column>
    </af:table>
    <af:spacer width="10" height="5" id="s7"/>
    <af:toolbar id="t1">
    <af:commandButton id="AddToOrderButton2"
    actionListener="#{viewScope.GrowerOrderBean.addToOrder_action}"
    partialSubmit="true"
    styleClass="addToOrderButton">
    <af:clientListener method="setFocus" type="action"/>
    </af:commandButton>
    </af:toolbar>
    <f:facet name="context">
    <af:group id="g1">
    <af:spacer width="60" height="10" id="s1"/>
    <af:commandButton id="cb4"
    actionListener="#{viewScope.GrowerOrderBean.addToOrder_action}"
    partialSubmit="true"
    styleClass="addToOrderButton">
    <af:clientListener method="setFocus" type="action"/>
    </af:commandButton>
    </af:group>
    </f:facet>
    <f:facet name="info"/>
    <f:facet name="legend"/>
    <f:facet name="menuBar"/>
    <f:facet name="toolbar"/>
    </af:panelHeader>
    </jsp:root>
    Please reply !!
    Thanks.

  • How to get the reference of one object's parent

    hello guys
    i have classA and classB like bellow
    class ClassA{
    public var myVar:String="test";
    public function ClassA()
    new ClassB();
    class ClassB{
    public function ClassB()
    trace("my parent is"+XXX);
    trace("my parent var is"+ XXX["myVar"]);
    suppose XXX in classB is the reference of instance of ClassA.how do i get it?

    Parent/child relationships pertain to display list only. When you instantiate ClassB in ClassA - it becomes a property of the scope where you instantiated it - NOT A CHILD. Note the word "scope" - variable may belong to class or function, etc.
    Instance of a class is totally agnostic to who instantiated it unless you pass a reference of the class that made the instance. Nevertheless, of a class is a DisplayObject, once it is placed on display list - it knows who the parent is.
    Instance can be either property or child or both proeprty and child.

Maybe you are looking for

  • How do I use the HP dvd1040 burner with my iBook?

    I am going to Italy tomorrow and want to bring my iBook but need to have the external dvd burner to load all of the pictures I will take because my hard drive is almost completely full. I am using Roxio Toast to try and burn the dvds and the iBook is

  • Itunes 7 wont play videos on ipod

    I hope someone can help. I upgraded to itunes 7 and i went to watch a video on my ipod and it didnt work. Instead, it looks just like a music track. the audio works but the the video. It does work just on my computer though. please help! thank you

  • UCS Management Pack for System Center 2012 OpsMgr add monitor wizard error

    We're successfully using the 2.6.0.179 version of the UCS Management Pack for System Center 2012 Operations Manager in our 2012 SP1 OpsMgr environment; however, in the new 2012 R2 OpsMgr environment we've stood-up and in which we installed the 2.6.2.

  • 10.3.6 weblogic server start error

    on windows 7 I installed oepe-juno-installer-12.1.1.1.0.201207241647-10.3.6-win32 (bundled installer) from http://www.oracle.com/technetwork/developer-tools/eclipse/downloads/oepe-bundle-1861326.html at completion of the installation, started the Qui

  • XR:015 Information Message in BDoc

    Hi Experts, we are creating contact persons to customers in CRM (4.0). Customers were created before in R/3. The BDoc of the contact person always shows information message: XR:015 (No classification is assigned to business partner &1 <BP number>). A