Facts and Best Practice for List of Values(LOV)
List of Value commonly known as LOV, are of two types Static and Dynamic.
What’s the purpose of LOV?
I am an owner of an organization. This organization has 5 branches and under each branch there are 10 departments. Under each department I have several thousands of employees working. Now if I want to see the data of only one specific branch then how can I achieve this using Crystal reports?
The answer here is either you hard code the selection criteria in record selection for a specific Branch or create a report based on command object in which you mention the Branch name in where clause. But this report limits you to fetch the data of other branches at runtime.
So to overcome this I decide to utilize a feature in Crystal Reports called as parameter. Now I have the list of my branches under the parameter which prompts while I run the report and at runtime I can select the respective branch name and the data is fetched. This parameter is static in nature now.
Over a period of time my business expands and it grows drastically. This adds to some more number of branches. Surprisingly, these branch names are not listed in the parameter list. So what do I do to have a list that populates dynamically and brings in the most current data from the database? The solution is to use a Dynamic parameter. A Dynamic parameter fetches data from the reporting database at runtime and picks up the updated List of Values.
This resolves my issue
Facts about Dynamic LOVs
If I have Crystal Reports and I am designing reports with Dynamic LOVs and viewing it through it then it won’t make much difference. However the business need is not only about generating reports but managing them and sharing them across for business needs. At the same time it’s necessary to maintain the security of the data.
For this purpose Business Objects Enterprise provides client tools like InfoView and CMC.
If a report which consists of dynamic parameter (Dynamic LOV) is saved to the Enterprise Repository, then for this particular LOV following objects are created automatically in the Business View Manager
- Data Connection
- Data Foundation
- Business view
- Business Element
And a prompt group is generated too.
Business View Manager is a Client tool of Business Objects Enterprise which provides an interface to manage the Dynamic LOVs and its respective Objects.
Data Connection is the connection through which the LOV connects to the database to fetch the data. This connection holds the information and required credentials to connect to the database.
Data Foundation is the building block in which the field resides on which the LOV is created. It’s the table which holds the respective field. This data foundation can contain multiple tables.
Business element contains the selected fields to be utilized for the purpose of reporting or generating LOVs
Business View is similar to the data source which can be utilized for reporting purpose.
LOV holds the field and actual data whereas Prompt Group is the setting for the respective LOV. When you create a Dynamic LOV, in the lower panel it has the settings available out of which we can utilize as per our requirement.
The Dynamic LOV created from Crystal Reports whenever undergoes any changes in settings those number of prompt group are generated for it i.e. it increases the number of objects in Business View Manager. The underlying LOV remains the same however the rest of objects are replicated.
This in return would create a huge amount of objects under one folder. Whenever you create a dynamic LOV automatically a prompt group is created whether you save it to the enterprise or not. But if you save it to the enterprise you will be able to re utilize this prompt group
In the above diagram Fig a.2 you can see the highlighted rectangle in which the Prompt group is generated for the Dynamic LOV. This prompt group corresponds to the respective settings of the LOV. Whenever I make any changes to the settings of the LOV and save to Enterprise (Server) it will generate a prompt group. Now if you create LOV based on the same field again in some report then similarly one more prompt group will be generated. Refer Fig a.3
So now if I create LOV based on the same field for ten times or make any changes multiple times then that number of times all the reference objects will be created. This ultimately would pile up the folder with too many unnecessary replicated objects. At the end it will become difficult to manage these objects in Business View Manager. Just imagine if you have to migrate all your objects from the current environment to the new. Then there will be a set of thousands of objects which you would need to take care of.
Best practice for LOVs
I have multiple people who work on the reports. If each one creates Dynamic LOVs using the field Customer ID then at the end my Business View Manager will be populated with all the similar objects again and again. So what I will do is I will be creating the List of Value in Business View Manager (BVM).
There is one more benefit by creating it in BVM, you can create the LOVs in a proper folder structure and you will be able to manage all these objects. If you create LOVs in Crystal Reports and save the report to enterprise then all the objects are created under single folder structure in BVM. This in future leads to a tedious task to manage these objects. You can use these objects from Crystal Reports by logging in to Repository Explorer. To avoid multiple objects creation in BVM one can reutilize the Prompt groups as well. Prompt group retains the settings for the LOV and has the LOV as the underlying object, so you can utilize the Prompt group if you’re familiar with the settings associated with prompt group
At times when a same field is used multiple times as a dynamic parameter in multiple reports then the respective objects like Data Connection Data foundation and so on are also generated after saving this report to enterprise. If I have a table Customer I created a Dynamic LOV for Customer Id. Now in another report using the same table I created Dynamic LOV based on Customer name then for these two different LOVs two different Data Connection will be created. This is again replication of same objects. Creating LOVs in BVM would help to overcome these replications. What I will do is will use the same Data Connection and Data Foundation to create the LOVs.
In future if one needs to migrate the objects to a new environment then it won’t pose as a complex task in front of the Admin. As the objects are all under managed folder structure and are comparatively less number it would be easier for the process of migration.
So the use of Business View Manager would just ease the way you use LOVs