BusinessObjects Board

disabling all LOV's in a Universe

I think I already know the answer but I am going to ask anyway. Is there a way to globally disable or disassociate all LOV’s in a Universe without doing it object by object.

Why you ask? We use a third party software (a type of Business views for Oracle applications) and when a user selects show LOV, it lauches a select distinct on that column running the view wide open with no conditions and this can take hours to complete. Users will cancel out of there local process and leave the phantom process running on the DB. Although users have been informed about not using LOVs in these Universes, it continues to happen more and more frequently. Because of this I would like to disable all LOV’s in the Oracle App Universes but there are literally thousands of objects.


jswoboda :us: (BOB member since 2002-06-20)

I think you can do it by updating the Repository tables.


reemagupta (BOB member since 2002-09-18)

True, but not a supported solution. Jeffrey, are you able to use a SDK solution? I will write up a short VBA routine that can disable all LOVs via the Designer SDK, and it would be a supported solution.


Dwayne Hoffpauir :us: (BOB member since 2002-09-19)

thanks for the offer Dwayne but we are not licensed for SDK.


jswoboda :us: (BOB member since 2002-06-20)

I’ll go ahead and post the solution, in case it would be useful to someone later on. {Jeffrey, let your conscience be your guide}

Step 1: Open the VB Editor (Alt-F11) from a VBA host app (I used Excel)
Step 2: Set a reference to the Designer SDK (Tools, References…, choose BusObj Designer)
Step 3: Insert a module (Insert, Module)
Step 4: Copy the following into the module

Sub NoLOVsPlease()
    
    Dim DesApp As Designer.Application
    Dim Univ As Designer.Universe

    Set DesApp = New Designer.Application
    DesApp.Visible = True
    'use one of the following two lines as appropriate
    Call DesApp.LoginAs 'for v5 / v6
    'Call DesApp.LoginDialog 'for XI
    Set Univ = DesApp.Universes.Open

    Call TurnOffLOVs(Univ.Classes)

End Sub

Sub TurnOffLOVs(Clss As Designer.Classes)

    Dim Cls As Designer.Class
    Dim Obj As Designer.Object

    For Each Cls In Clss
        For Each Obj In Cls.Objects
            Obj.HasListOfValues = False
        Next Obj
        If Cls.Classes.Count > 0 Then
            Call TurnOffLOVs(Cls.Classes)
        End If
    Next Cls

End Sub

Step 5: Run the NoLOVsPlease procedure (Alt-F8 from Excel)
Step 6: Log in to Designer when prompted
Step 7: Open the desired universe when prompted
Step 8: In Designer, review that the LOVs are now disabled, and save the universe (I love saying that :rotf: )

{edited 28-Jul-2008 to add Login option for XI}


Dwayne Hoffpauir :us: (BOB member since 2002-09-19)

OK, Thanks - :wink:


jswoboda :us: (BOB member since 2002-06-20)

Hi Dwayne,
Thanks you so much for the code. You saved my Time… :slight_smile:

Thanks,
Anil


anil (BOB member since 2003-07-18)

Moving to the SDK forum. Leaving a shadow topic in the Designer forum as well. That way it appears in both places. 8)


Dave Rathbun :us: (BOB member since 2002-06-06)

You’re quite welcome. You might want to “conveniently” not mention this to your boss. Let them think you’re slaving away doing it manually. 8)


Dwayne Hoffpauir :us: (BOB member since 2002-09-19)

In the supervisor module you can prevent users to working with LOVs, and can do the same in the Repository (on EXPORTED universes only). Otherwise, go with the D-Mans code.

-RM


digpen :us: (BOB member since 2002-08-15)

Hi Dwayne Hoffpauir,
I was trying to Disable the LOV’s in the Universe by following your procedure.
But I am getting an error (attached) I am new to use macros so please let me know how to fix this problem.

Thank you for your code.

GNK_BO.
error.doc (22.0 KB)


GNK_BO (BOB member since 2007-07-17)

Change .LoginAs to .LoginDialog for XI. I’ll update the original post for future reference.


Dwayne Hoffpauir :us: (BOB member since 2002-09-19)

for BO XI R2:

Replace the .LoginAs to .LoginDialog
and get the following error:

Run-time error ‘438’:

Objects doesn’t support this property or method


hailieu :us: (BOB member since 2008-03-18)

Replace the .LoginDialog to .LogonDialog and it works!

Dwayne Hoffpauir, could you update the script. :?


hailieu :us: (BOB member since 2008-03-18)

Hi Dwayne Hoffpauir,
Thank you for quick response.

I did tried as you suggest but I am getting new error now.
I am getting the same error as Hailieu got.
Attached screen shot shows the errors both before and after doing the
" .LoginAs to .LoginDialog" change for XI R2.

Please let us know how to work with that.
Thanks once again for your reponse.
GNK_BO.
error.doc (25.0 KB)


GNK_BO (BOB member since 2007-07-17)

Hi Hailieu ,

Thanks for your response I missed you just by 3mins timing before I could see your post.
But anyways I tried by the change you suggested and its working now.

Thanks.
GNK_BO.


GNK_BO (BOB member since 2007-07-17)

My apologies, but I am simply unable to recreate the error. With .LogonDialog, it works fine for me (and others) in the XI version.


Dwayne Hoffpauir :us: (BOB member since 2002-09-19)

Hi Dwayne Hoffpauir,
Thanks for your code it really saves lot of time and work :smiley:

Thanks
GNK_BO.


GNK_BO (BOB member since 2007-07-17)

Hi,

I am having a big Universe. There is a Class: Customer Details (and this has many sub-classes).

I want to remove LOV selection for all the Objects within this class only (and not the entire Universe). How should I modify the code?


Smith85 (BOB member since 2009-12-10)

Have it start with that class and process all sub-classes only, instead of doing all classes at the root (top) level.


Dave Rathbun :us: (BOB member since 2002-06-06)