You are on page 1of 39

BUSINESS OBJECT IMPORTANT FEATURES

1.Generating LOVS

ListofvaluesorLOVisadistinctlistofdatavaluesassociatedwithanobject.Whenanydimensionof
detailsobjectiscreatedLOVisassignedtoanobjectautomatically.
UseofListofvalues.
Whenuserneedstofilterdatainaquerybasedonspecificobjectvalues,UsercansimplyviewtheLOVof
thatobjectsandchoosethevalueonwhichtheywanttofilterthedata.
e.g.ifCOUNTRYdimensionhasfollowingdistinctvalues
A,B,CandifuserwantstofilterthedataofcountryB,usercanputafilteronCountrydimensionand
choosetheBasfilterwhileexecutingthequery.
HowtocreateaLOVforanobject.
1.

Doubleclickonobjectindesignertoviewitsproperties.

2.

ClickonPropertiesTab

3.

ClickonAssociateaListofValuescheckbox.

4.

SelectotherLOVoptionsbasedonrequirement.

WhenfirstLOViscreateditisstoredin.LOVfilenameatuniversesubfolderonthesystemfilesystem.
Thedefaultlocationis
C:\DocumentsandSettings\<UserName>\ApplicationData\BusinessObjects\BusinessObjects
12.0\Universes\@<ServerName>\<UniverseName>
LOVOptions
ListName
ItsthenameofLOVfilebywhichitwillstoredonlocalfilesystem.Usercanoverridethedefaultname
andcanenterhisownLOVname.Maximumcharacterlimitis8.
AllowUserstoEditListofValues
Whencheckedthisoptionallowsreportuserstoeditthelistofvaluesofanobjects.Thepurposeofalistof
valuesisusuallytolimitthesetofavailablevaluestoauser.Iftheycaneditalist,younolongerhave

controloverthevaluestheychoose.Normally,ifyouarenotusingapersonaldatafileasalistofvalues
source,youclearthisoptiontoensurethatusersdonoteditlistsofvalues.
AutomaticRefreshbeforeUse
WhenselectedthisoptionLOVwillberefreshedeachtimesitisreferredandusedinreport.Youshould
choosethisoptiononlyifcontentsofunderlyingcolumnarefrequentlychanging.Thisoptionsshouldbe
useverycarefullyafterevaluation.IfthisoptionisnotselectedLOVisrefreshedfirstwhentheobjectsis
usedinausersession.
HierarchicalDisplay
SelecttheHierarchicalDisplaypropertytodisplaythecascadinglistofvaluesasahierarchyinWeb
Intelligence.
ExportwithUniverse
WhenthisoptionisselectedLOVfileassociatedwithobjectisexportedtouniverseCMSandgetsstored
asXMLonCMS
ViewingtheLOVofanobject
ToviewtheLOVofanobjectsclickondisplaybuttononpropertiestabofanobject

ModifyingtheLOVofanobject
YoucanremovethevaluesfromLOVofanobjectbyapplyingafilteroraddvaluestoLOVbyaddinga
column.
ApplyconditiononLOV
ToapplyconditiononLOV
1.

ClickonEditbuttononobjectseditpropertiestab

2.

ThedesignerquerypanelwillappearshowingdefaultobjectofaLOV

3.

Dragdroptheconditionobjectinconditionpaneandspecifytheappropriatecondition.

4.

YoucanalsoviewtheSQLoftheLOVquerybyclickonSQLiconontoolbar.

5.

RunthequerytotestthevaluesafterapplyingconditiononLOV

ViewandEditLOVofcompleteuniverse
YoucanalsoviewalltheobjectwhichhasLOVassociatedwiththemandeditthem.
1.

ClickonTools>ListofValues>Edit

2.

Listofvaluesdialogwillappear

3.

SelecttheLOVobjectsandclickonEditifyouwanttoeditaLOV.

1.

InadditiontoqueryyoucanalsodefineLOVforanobjectusingpersonaldatafilelikeCSVand
valuesfromthisfilecanalsobeusedasLOVforanobject.Todoso.

2.

ClickonPersonalDataandprovidethedetailsonPersonaldataLOVdialogbox.

CascadingLOV
CascadingLOVisaLOVassociatedwithhierarchyofanobjectintheuniverse.CascadingLOViscreated,
andifanyoftheobjectisusedaspromptfilterinreportquery,userhastoanswerseriesofvaluesfrom
cascadingLOV.
HowtocreateCascadingLOV
1.

ClickonTools>ListofValues>CreateCascadingLOV.

1.

Addtheobjectandrearrangethemasperyourhierarchy

2.

ClickongenerateLOVs

3.

ClickOK.

Nowifyouuseanyoftheobjectsaspromptinquery.ItwillpromptthehierarchicalLOVtouser.

1.FUNCTIONS IN BUSINESS OBJECT


a.@prompt
Description:
Use this function to prompt user for a value will be used during report run. For example if you want to run a
monthly report against a specific month, you have to prompt the user to enter the Month or even select it
from the list of value displayed.

Before we start:

I assume that you are familiar with BO universe designer and BO web
inelegance. If you need to go through universe or Webi rich client
tutorial please use the following links:

Universe Tutorial:

BO Fast user guide Part # 1 [Navigation]:

BO Fast user guide Part # 2[Report View mode]

Universe Parameters

Syntax:
@prompt ('prompt text (1)', 'type (2)', 'list of values(3)', 'mono/multi(4)', 'free/constrained(5)')
Parameters:
Para
m

Description

Mandator
y

Values

Text used to prompt the user when he trying to


run/refresh the report

Yes

N/A

Type of the expected value entered by the user and also


must be same type of the object that we will use the
prompt return value to compare with

Yes

List of values that will displayed to the user if he click on


the Values button when he prompted to enter a value

No

Number of valued allowed

No

User can edit enter a value by himself or not.

No

A: alphanumeric
C: string
D: Date
N: Number
U: Unicode
Object defined to retrieve
list of values
Mono: user can select
one value only
Multi: user can select
Multi Values
Free: user can type his
own value
Constrained: user must
select from list of values.

Where to use this function:


You can use this function anywhere; this is some places that you can use this function

Filter: you can use this function to prompt the user for a value that will use in filtering the retrieved

[Click here for more information about conditions & Predefined filters in BO]
data.

Where clause: when you create an object you can use this function in the where clause.

Select clause: you can use this function even in the select clause see examples.

Derived table: you can use this function in your derived table query. [Click here for more information
about how to use prompt with derived tables]

Tips and Tricks:

You can use the same prompt in more than one place; just make sure that the prompt text exactly
the same when you use it with other universe objects.

You can use data conversion function to convert the prompt returned value before using it. For
example if the prompt return "Jan09" and you want to compare it with a Date column in database
you have to convert it before using it. In our case we will use to_date (@prompt(,,,,,),'MONYY').

If your prompt will return multi value use IN operation instead of equal (=)

Note that not all users having permission to view list of values while they trying to run or refresh the
report by default. The administrator should grant this permission to this user.

If you will use the free mode (user can type what he want) you should give a hint in the prompt text
message about the data format expected. For example if the user should enter month in format
(MON YY) then the prompt message should be descriptive like "Please enter month like Jan 09".

Example # 1 (simple prompt):


We need to create a new condition that will prompt user to enter a valid date to display data related to this
date in our report.
Create a new condition with the specification below [Insert --> Condition]

Name: As of Date prompt

Description: Prompt user to enter a specified as of date value

Where:
@select(Dimensions/As of Date) = @prompt ('Enter As of Date:', 'D', ['Dimensions/As of Date'],
mono, constrained)

Notes:

Red single quote places. It will give you error message "Parse failed: invalid definition UNV0023"

Example # 2 (Prompt returns multi values):

We need to create a new condition that will prompt user to select cities that he wants to display revenue
data
Create a new condition with the specification below [Insert --> Condition]

Name: Cities prompt

Description: Prompt user to select one or multiple cities to filter data according to

Where:
@select(Dimensions/City) IN @prompt ('Select one or more cities from the list:', 'C',
['Dimensions/City'], Multi, constrained)

Notes:

We used Multi key word instead of mono this time this to indicate that the prompt will return one or
more values.

Note also we used the IN operator instead of equal. This is because the return value is a collection
of values not one single value as the previous example.

Example # 3 (user type Free Prompt):


We need to create a new condition that will prompt user to type the city that he want to display report data
for.
Create a new condition with the specification below [Insert --> Condition]

Name: City prompt

Description: Prompt user to select or type a city

Where:
@select(Dimensions/City) = @prompt ('Type a City name:', 'C', ['Dimensions/City'], mono, free)

Notes:

Note that we have used free key word instead of constrained. This will give the user the flexibility to
type the city name directly without need to select form list of values.

Note that if the user type Paris while the stored value in @select(Dimensions/City) is PARIS then
the query will return no data. To solve this issue you can use the Upper or lower function that will
return the given string in upper case format or lower case format.
UPPER(@select(Dimensions/City)) = UPPER(@prompt ('Type a City name:', 'C',
['Dimensions/City'], mono, free))

If you want the user to type multiple cities use this form
@select(Dimensions/City) IN @prompt ('Type Cities name:', 'C', ['Dimensions/City'], Multi,
free)

Please note that user will enter values comma separated without space Like:
(Paris,London,Roma,Cairo)

Example # 4 (From To prompt):


We need to create a new condition that will prompt user to enter "From Date" and "To Date" to display data
related to this period in our report.
Create a new condition with the specification below [Insert --> Condition]

Name: From To prompt

Description: Prompt user to enter a specified period

Where:
@select(Dimensions/As of Date) Between @prompt ('From Date:', 'D', ['Dimensions/As of Date'],
mono, constrained) AND @prompt ('To Date:', 'D', ['Dimensions/As of Date'], mono, constrained)

Example # 5 (Use prompt with dimensions):


We need to create a new dimension that will display customer segment description based on what language
user will select.

Prerequisites:

Language dimension Created.

Segment English Description created.

Segment France Description created.

Segment Dutch Description created.

Segment Arabic Description created.

Create a new Dimension with the specification below [Insert --> Dimension]

Name: Customer Segment Description

Description: Customer Segment Description based on the user selected language.

Select:
Decode(@prompt ('Select Language:', 'C', ['Dimensions/Language'], mono, constrained),
'EN', @select(Dimensions/Segment English Description),
'FR', @select(Dimensions/Segment France Description),

'DE', @select(Dimensions/Segment Dutch Description),


'AR', @select(Dimensions/Segment Arabic Description), @select(Dimensions/Segment English
Description))

PromptinSAPBusinessObjectsWEBIReport

Introduction:
Thereis2typesoffiltersthatyoucanuseincreatequeryinyourWebireport.
StaticFilters:Doesn'tneedanyinteractionfromtheenduser.thecriteriaorfiltervaluesareimpeded
insidethefilterandwillsubmitteddirectlytothedatabase.Staticfilteriseithercreatedintheuniverseand
youcanjustdragandusethem.Theywillappearslikeayellowcone.Youcanalsocreateyourownstatic
filtersbydragginganobjectandsetyoufiltervaluestoconstantorselectfromlistofvalues.Again,when
yourefreshdatafroyourreportitwillnotasktheendusertoenteranyvaluesasthefiltervaluesalready
defined.

DynamicFilters:[Alsoknownasprompt]Itwillpromptorasktheendusertoenterorselectfiltervalues
beforesubmittingthequerytothedatabase.Youcancreateyourpromptintheuniversedesignerandmake
itavailableandreadyforuseoryoucandoitonthereportdevelopmenttime.Formoreinformationabout
howtocreatepromptinuniverseclickhere.
Tocreateapromptininfovieworrichclientdataqueryjustdragtheobjectthatyouwanttouseitasa
promptletsayRegionorProductforexample.Thenselecttherequiredoperator,letssayEqualtoor
greaterthan.AfterthatyouneedtoselectPromptinthefiltervalue.
Thefollowingwindowwilldisplayedtosetthepromptthefollowingpromptoptions:
PromptText:Enterthetextthatwillbedisplayedfortheendusertoaskhimtoenterorselectvalue.
PromptProperties:
Promptwithlistofvalues:Willdisplayalistofvaluesfortheselectedobjecttotheenduser.theenduser
willbeabletoselectoneormultiplevalueinsteadofenteringthemmanually.
KeepLastValueselected:Willkeepthelastvalueenteredbytheenduserselected.
Selectonlyfromlist:enduserwillnotbeabletoenteranydatamanuallyandhewilljustforcedtoselect
fromthelistofvalues.ofcoursethisoptionwillbeenabledonlyofweselectedthepromptwithlistof
valuesoption.
Optionalprompt:Ifthisoptionisselectedtheendusewillbeabletoskipthisprompt.thevaluewillbe
consideredonlyiftheenduserselectedavalueforthisprompt.
SetDefaultValues:YoucanenterDefaultvalueshere.

Best Practice:
Asyoucancreatestaticanddynamicfilterintheuniverseyouneedtodifferentiatebetweenthem.we
usedtowrite[Filter]besidethestaticfilternamelike:LastYear[Filter].andweusethe?attheendof
filternameifitisadynamicone[Prompt]like:EnterYear?
Chooseaclearpromptmessage
Ifyouwillusethepromptwithlistofvaluesoptionthenyouhavetooptimizeitfromtheuniverseto
insuretheperformance

Derived Table in SAP Business Objects Universe Designer

Overview:
DerivedtableisoneofthefeaturesprovidebySAPbusinessobjectsuniversedesigner.Itisalogicaltable
createdonthesemanticlayerlevel[Universe]andwillbeexecutedatruntime.Thisisdifferentfrom

physicaltableasphysicaltablestoredataandcanbemanipulatedbyDDLandtransactionalstatement.
WhileinDerivedtableitactslikedatabaseview.

HowtocreateandimplementDerivedtables:

Openuniversedesignerandrightclickonanyemptyspaceintherightban(physicallayer)ORgo
toinsertmenuandselectderivedtable

Typeapropernameforyourderivedtable.

WritetheSQLselectstatementthatwillbeusedtodefineyourderivedtablein:EnterSQL
ExpressionArea

YoucanuseTable&Columnspanelinthebottomleftcornertomakeiteasierforyouwhen
selectingtherequiredcolumninyourderivedtabledefinition.

Youcanselectaderivedtablefromderivedtablepaneltocreateanestedderivedtable.

Youcanselecttherequiredoperatorfromtheoperatorpanelinyourcalculatedfields.

ChecksyntaxofyourderivedtabledefinitionandresolveSQLerrorsifany.

Clickoktocompleteyourderivedtable.

Nowyouwillbeabletoseeyourderivedtableinthephysicallayerandyoucanstartuseitasa
normaltable(Join,Createobjects,etc)

Using Prompt in derived table:


Youcanuseapromptinthedefinitionofderivedtable.Whenyouuseanyobjectrelatedtothisderived
tableitwillprompttheendusertoentertherequiredvalues.Youcanusepromptinthewhereclauseas
wellasincalculatedcolumndefinition.

Nested Derived Table:


Nestedderivedtableisaderivedtablecreatedontopofanotherderivedtable.ThisisanewfeatureinBO
XI3.0andonward.Youwilluseonederivedtabletodefinetheotherone.Normallyweusenestedderived
tablesifwewanttosimplifythedesignwhenhaveaverycomplexbusinesslogic.Inthatcasewewill
buildsmallderivedtablesandwewillstartusingtheminthebiggerone.Pleasenotethatyoucancreateas
manyderivedtablesasyouwishbutyouonlyallowedtonestupto20levelofderivedtable.

List of derived tables:


forverylargeuniverseitwillbeimpossibletomanageyourderivedtablesifyoudonthaveacentralized
placetoaccessthem.Listofderivedtablewindowwillgiveyouthatfunction.toaccessitclickontools
menu,thenselectListofderivedtables.youcaneditremoveoraddderivedtablesfromthatwindow.

Derived table best practice, advantages & disadvantages:

Write your derived table name in capital letters and without


spaces. You can use _ as a separator between words. Example:
AB_EXAMPLE_TABLE_DRV

Use _DRV as a suffix to your derived table name to segregate


between derived tables and other tables (Aliases & physical
tables)

If you have a permission to create a DB view, then it is better to


use it and imported to your physical layer.

Use derived tables in the following cases:


o

If you need to use a prompt inside your table.

If you have a complex logic to be implemented and you


can do it from report level.

If you have one big lookup table and you want to create
specific mini lookups.

Always check syntax before creating derived table.

Give calculated columns a meaningful name as it will be


displayed in the table view.

Use nested derived tables when you have very complex business
logic. This will make your universe more readable and
understandable by other developers.

You may encounter a bad performance when using derived table


as it is a logical table and there is no data stored in it. You can
create an index or adjust table space or do any performance
enhancement on your derived table. But on the other hand you
can be carful by optimizing the performance for the SQL select
statement used in the derived table definition.

Add SQL comments in the definition of your derived table to


explain your derived table and make it easier for other
developers to know why this derived table was created. You can
also describe business logic and column definition.

Remember this constrain: Nesting derived table is limited to 20


level

Derived Table Examples:

Derived table:

Nested Derived Table:

Derived table with prompt:

Using @Variable Functions in the Universe


Iwroteanarticleearlierthisyearregardingtheuseofthe@VariableuniversefunctionintheEND_SQL
universeparametertohelpDBAsidentifyBusinessObjectsqueries(seerelatedarticleIdentifyingSAP
BusinessObjectsqueriesusingEND_SQL).The@VariablefunctioncanalsobeusedintheSELECT
clauseofobjectsfordisplaytotheuserorintheWHEREclausetorestrictdata.Forexample,inmy
presentationSecureUniversesUsingRestrictionSets,IimplementedrowlevelsecurityontheeFashion
universeusing@Variable('BOUSER').Rowlevelsecuritycanalsobeimplementedinsideofthe
universebytheuseofamandatorycondition,agreatnewfeatureintroducedinDesignerXI3.0.
NOTE:StartingwithBI4.0,theDesignerapplicationfromXIR2/XI3.0/XI3.1isnowknownasthe
UniverseDesignTool.
TheSAPBusinessObjectsXI3.1universedesignermanual(clicktodownloadfromSAPHelpPortal)describes
forthefirsttimeseveralnewsystemvariables.ItsunclearwhetherthevariableswereintroducedwithXI
3.0(theyrenotdocumentedintheXI3.0editionoftheuniversedesignermanual)orweresimply
undocumentedinpreviousreleases.Whileonthesubjectofdocumentation,allowmetomentionthatDave
Rathbunelegantlydescribesseveralpreviouslyundocumentedattributestothe@Promptfunction(see
DaveRathbunsarticleDesignerXI3NewFeature:ExtendedPromptSyntax)thatarefinally
documentedintheXI3.0/XI3.1universedesignerdocumentation(p.537538).

Thebuiltin@VariablesforXI3.1areBOUSER,DBUSER,DBPASS,DOCNAME,DPNAME,DPTYPE,
UNVNAME,andUNVID.Tousethem,placetheminsideofsinglequotesasaparametertothe@Variable
function.Itisimportanttonotethat@Variableisauniversefunction(alongwith@Prompt,@Select,
@Where,etc.)tobeusedintheUniverseDesignTool(Designer),notareportlevelfunctiontobeused
withinWebIntelligence.

Icreatedsomeobjectsinauniversetodemonstrateeach@Variable.TheirvaluescanbeseenintheWeb
Intelligencereportbelow.Oneminorlessonlearnedduringthecreationofthisblogpost:Ihadoriginally
namedtheWebIntelligencedocumentUsing@Variables,butthiswreakedhavocwithSQLgeneration
becauseIwasalsousing@Variable('DOCNAME')intheEND_SQLoftheuniverse.Aminor
recursionproblem,apparently.ThatiswhythesampleWebIntelligencedocumentisinsteadnamedUsing
ATVariables.

The@Variable('BOUSER')returnsthenameoftheInfoViewuserrunningqueriesinthedocument,
whichinthisexampleisDMarks.PriortoXIRelease2,therewasa@Variable('BOPASS'),butithas
beendepreciatedforsecurityreasons.SimilartoBOUSER/BOPASS,@Variable('DBUSER')and
@Variable('DBPASS')returntheusernameandpasswordonlyiftheuserhasdatabasecredentials
enabledintheiruserprofileintheCMC.Ifthedatabaseusername/passwordisdefinedbyauniverse
connection,these@Variableswillbeblank.

@Variablecanalsobeusedtoreturninformationaboutthecurrentreport.The
@Variable('DOCNAME')isthesavednameofthereport.The@Variable('DPNAME')returnsthe
nameofthedataprovider,asdefinedintheQuerypropertiesintheWebIntelligenceEditQuerypanel.In
thescreenshotbelow,IhaverenamedthedefaultQuery1toMyDataProvider.

The@Variable('DPTYPE')describesthedataprovidertype.Iwasunabletofindanenumeratedlist
inthedocumentation,butastandarduniverseonarelationaldatabasehasan
@Variable('DPTYPE')valueofDPUNIVERS.Icanonlyspeculatethatuniversesconstructedfrom
storedproceduresorOLAPcubesprobablyhavedifferentvalues.
The@Variable('UNVNAME')returnsthenameoftheuniverseasdefinedontheParameterstabofthe
UniverseProperties.IlamentedthatXIR2didnothaveavariable(atleastnotdocumented)toidentifythe
universe,soitsawelcomeaddition.Inmyexample,thenameoftheuniverseisDashboard.

The@Variable('UNVID')isanewvariableinXI3.1.ItreturnstheIDoftheuniverseobject,whichis
listednexttotheCUIDintheCMC.TheuniverseinthisexamplehasanIDof1303.

BeginningwithXI3.1SP2,universedesignerscanusetwonewlocale
variables.@Variable('PREFERRED_VIEWING_LOCALE')istheusersPreferredViewingLocale,
thelocalechosenbytheusertodisplaymetadataanddatainhisreporting
tool.@Variable('DOMINANT_PREFERRED_VIEWING_LOCALE')canbeusedtocategorizeorroll
uppreferredviewinglocales.
SAPBusinessObjectsBusinessIntelligence4.0supportsthefollowingXI3.1@Variables:BOUSER,
DBUSER,DOCNAME,DOMINANT_PREFERRED_VIEWING_LOCALE,DPNAME,DPTYPE,
PREFERRED_VIEWING_LOCALE,UNVNAME,andUNVID.BI4.0alsoaddsanewvariable
DOCIDandCMCdefineduserattributes.The@VariablefunctionscanbeusedinclassicUNVuniverses
createdbytheUniverseDesignTool(formerlyDesigner)ortheInformationDesignTool.Thesefunctions
aredocumentedintheSAPBusinessObjectsBusinessIntelligence4.0InformationDesignToolUser
GuideontheSAPHelpPortal.
ThelastitemIdliketobringupisntauniverselevel@Variable,butanewWebIntelligencefunctionthat
hasbeensorelymissedandawelcomeadditiontoXI3.x.TheReportName()functionreturnsthename
ofthecurrentreporttabintheWebIntelligencedocument.Iveoftenwantedtousethenameonthereport
tabinthereporttitleandnowIcan.SAPlikedthisnewfunctionsomuchthatitisusedforthedefault
reporttitlecellinWebIntelligence4.0.
@VariableshavemanyapplicationsandIhopethisarticlewillhelpyoutakeadvantageoftheminyour
universes.

Condition (Pre-Defined filter) in BO Universe designer


Overview:
Itisabestpracticetocreatepredefinedfilters(knownasconditions)tohelpendbusinessuserstodefine
therequiredfiltersintheiranalysisandreports.forexampleifwehavethefollowingaccountstatuses:

N: Normal

D: Dormant

I: In Active

C: Closed

Assumethatthereisbusinessrulethatstatethefollowing:activeaccountsaretheaccountswhichisnormal
ordormant.
Thebestpracticeistocreateapredefinedfilter(Activeaccounts)whichwillfilteronlynormaland
dormantaccountsasperthedefinition.thisfilterwillbeavailableinthebusinessmodelandtheenduser
caneasilyselectthisfilterinhis/herreportoranalysistonarrowthereportresultstoonlyactiveaccounts.
Asabestpractice,youshoulddefineallyourbusinessrulesduringbusinessrequirementsgathering
session.thenyouneedyoudataanalysttotranslateitinatechnicalITform(usuallySQLcondition).Then
youneedtocreatethecorrespondingconditions(Predefinedfilters)inthebusinessmodelatBOuniverse
designer.

How to create a condition (pre-defined filter):

Firstyouneedtoswitchtoconditionlist,thennavigatetothefolderthatyouwanttocreateyourcondition
in.thisfoldershouldsomehowrelatedtoyourcondition.forexampleifyouhaveaproductclass(folder)
andyouwanttocreateaconditiontofilteronelectronicproductslikeTVs,Radiosetc.thentheproduct
folderisthebestplacetocreatethatcondition.clickontheconditionicon(yellowcone)andthenfollow
thestepsinthefollowingsectiontodefineyourcondition

what you need to define you condition (pre-defined filter):

ConditionName:thisnameshouldbedescriptiveandinbusinessterms.Fortheearlieractiveaccount
example.wenamedourfilteractiveaccountbecausethisdescribethebusinessruleclearly.
Conditiondescription:Youshouldwriteadescriptionhereaboutthisfilter,whentouseit.whatyou
expectwhenyouuseit.
Conditionwhere:thisshouldcontainsthetechnicalSQLstatementgeneratedbythedataanalysisforthe
businessrules.youcanusetheformulaeditorformorecomplexconditions.

FormulaEditor:

Mandatory filters:
Youcansiteyourconditiontobeusedasamandatoryfilterinyouruniverseorclassbytickingthe
followingoptionwhilecreatingyourcondition:
Usefilterasmandatoryinquery:
Applyonuniverse:filterwillbeappliedoneveryquerygeneratedusingthisuniverse.
applyonclass:filterwillbeappliedifanyobjectusedfromthecurrentclass.
applyonlistofvalues:filterwillbeappliedonallLOV(listofvalues)generatedforeachobjectinside
thisclass(folder).Pleasenotethatthisoptionavailableonlyafteryouselectapplyonclass

Types of conditions:

filters: it doesnt need any input from the user. it will apply the
criteria impeded inside this condition when dragged to the query
filter.

Prompt: It will ask the end user for his input to apply the filet.

Q. Effect of cardinalities
ThecardinalityofajoindoesnothavearoleintheSQLgeneratedwhenyourunaquery.However,
Designerusescardinalitiestodeterminecontextsandvalidquerypaths.

Acontextisacollectionofjoinswhichprovideavalidquerypath.Youusecontextstoresolvejoin
problemsthatcanreturntoomanyortoofewrowsbecauseofthewaythattablesarelinkedinthetarget
database.ContextsaffecttheSQLgeneratedforaqueryastheyeitherdirecttheendusertotakea
particularjoinpath,orsolveajoinpathproblem:
"Youneedtoverifythatcardinalitiesarecorrectlysetforalljoinsinyourschematoensurethatyouhave
thecorrectcontexts,andthatyouhavevalidjoinpaths."

Settingcardinalitiescanalsohelpyouunderstandhowtablesarerelatedinthedatabase,andtographically
identifypotentialjoinpathproblemsinyourschema.
hemainimpactisthatyouwillnotbeabletousethedetectcontextfunctionality.
Thereareotherminorpoints,butthatisthemostimportant.Itwillnotaffectthewaythatqueriesare
generate

Personally, I see absolutely no reason for not setting cardinalities. Like


adding object descriptions, it's another step closer to a properlyconstructed universe that you'd be happy to inherit.
Everythingworksfineasitiswithorwithoutcardinalities.

Definingcardinalitieswillgiveyoulotofadvantages:

1.Automaticcontextdetection
2.AvoidingwarningmessagesduringIntegritycheck
3.Confusiontonewusersviewingormodifiingtheuniverse

Soitsalwaysbestpracticetodefinecardinalities.Otherthanthateverythingworksfine.

Q. Types of Joins in Business Objects Universe


FollowingjointypesareavailableinBusinessObjectsUniverseDesignerwhichcanbeusedtojointwo
tables.
EquiJoin

Equijoinisjoinwhichuses=equaloperatortojointwotables.Generallyequijoinisusedtojoin
primarytableusingprimarykeywithforeigntaleusingforeignkey
Whentwotablesareusedusingequijoinitreturnsallthoserowsfromselectedtablewhichmatchesthe
equalitycondition.
OuterJoin
Outerjoinlinkstwotablesusingajoinoperator.Whentablesarelinkedusingouterjoinstheselectquery
returnsalltherecordswhichmatchesthejoinconditionandreturnsalltherecordsfromonetableeven
thoughdonotmatchthejoincondition.
Therearetwotypesofouterjoin
LeftOuterjoin:Thisouterjoinreturnsalltherecordsfromlefttableevenwhentheydomatchthejoin
condition.
RightOuterjoin:Thisouterjoinreturnsalltherecordsfromrighttableevenwhentheydomatchthejoin
condition.

Youshouldavoidusingouterjoinsasitmaycausequerytorunslower.Outerjoinsshouldbeplacedatthe
endofajoinpathotherwiseitmaybecausesotherqueriestomatchaNULLequalityconditionwhich
mightgiveanerror.
ThetaJoin
Athetajoinisabetweentypejointhatsjoinstablesbasedonarelationshipotherthanbetweentwo
columns.Itisgenerallyusedtodemonstrateranges.Athetajoincanuseanyoperatorotherthanequality
operator.
Letsseehowtocreateathetajoin
1.

FromInsertmenuclickonjointocreateanewjoin

2.

Selectthetable1whichshouldbejoinedtoanothertableusingbetweenoperator.

3.

Selectthetable2

4.

Nowselectthetwocolumnsfromtabletwowhichshouldrepresenttherange.

5.

SetthecardinalitytoN1

6.

ClickOk

Thisthetajoinsusesbetweenoperatorstojointwotables

ShortcutJoin
Ashortcutjoinisajoinwhichprovidesshorterwaytojointwotablesbyavoidingintermediatetables
betweenjoinpathsoftables.Itisveryhelpfultoimprovetheperformanceofaqueryasitreducesnumber
ofjoinsinaquery.
ShortcutjoinsarealsousefultosolveloopsinaUniverse.
LetstakeanexampleofShortcutjoin.
Shop_facts,Article_lookupandproductpromotionfactsarejoinedthroughArticleid.Nowifwewantto
seeDurationandamountsoldthequerywillhaveunnecessaryjoinofshop_factandArticle_lookuptable
asthereisnojoinbetweenshop_factsandproduct_promotion_fact.
Howeverifwejoinshop_factsandproduct_promotion_fact,itwillcreateacircularloopwhichmight
confuseuniversetodecideonwhichjoinpathtotake.Thiscanbeavoidedbyusingshortcutjoininsteadof
usingnormaljoin.Shortcutjoinisrepresentedbydottedlineindesigner.
SelfRestrictingJoin
Selfrestrictingjoinisnotactuallyajoinbutarestrictiononatable.Generallyitisusedtorestrictthedata
returnedbyatable.
Tocreateaselfrestrictingjoin
1.

ClickonInsertmenuandclickonjointocreatenewjoin

2.

Selectthetableonwhichyouwanttocreateselfrestrictingjoin.

3.

Selectthesametablenamefromtable2comboboxalso.

4.

Selectthecolumnwhichshouldbeusedforselfrestrictingjoin.

5.

Edittheexpressionandputtherestrictioncondition

6.

ClickOK.

Cardinalityofselfrestrictingjoinshouldbesetto1:1otherwiseitgiveserrorwhiledetectingcontexts.
TrytocreateeachtypeofjoininBOuniverseandpracticeitandtestitusingQueryPanel.

You might also like