Siebel Reports Administration Guide > Configuring Parameterized Reports > Configuring Parameters for Reports >

Creating the Parameterized Reports in Actuate e.Report Designer Professional


Make sure you have installed Actuate e.Report Designer Professional from the DVD-ROM. Since the report design process is similar to any other report, only the design specific to a parameterized report is described in this topic. The general process in designing a parameterized report includes two main steps:

  • Creating parameters and referencing the parameters where they are used.
  • Additionally, certain report methods to be modified using Actuate e.Report Designer Professional to pass the parameter values selected or entered by the Siebel applications user.

The first step is generic to all parameterized reports. The second step is specific to Siebel parameterized reports and is described for the Revenue Analysis Summary report.

When Revenue Analysis Summary report is run from a Revenues screen, the parameter screen appears after the report is selected from the Reports menu or after the schedule parameters are entered with the Schedule Report option. The user needs to select a value for each of the three parameters from the drop-down lists before clicking Finish.

The report is then generated and displays the first parameter field (which is the grouping field) in a cross tab format with the second parameter in aggregated date scale along columns, and the third parameter as rows. Therefore, this report is essentially a cross tab report (for more details, see Using Reports with Group Sections in this book with the displayed field selected by the user at run time. The second parameter defines the columns and the third parameter defines the rows.

To set report parameters

The report process parameters are set by the user in the client in the following order.

  1. In the top-level report object. store language dependent parameters fetched from the report ROV file (in the Start() method of root node 'revd') as global variables.

    Sub Start()

    ...........................

          ' get language values from user entered parameters

          ThenParameterV=ThenInRevenue

          ValueParameterV=ShowInRevenue

          ByParameterV=ByInRevenue

    ................................................

    End Sub

  2. Get the language independent codes for the parameter values selected by the user from the LOV table.

    ThenParameter = represents a group key.

    ValueParameter = represents a metric key.

    ByParameter = represents a date key.

    These values are necessary to support internal report logic that is language independent. The parameter retrieval is based on the ssSmart.rol library custom DataStream control ssList_Of_ValuesQuery (select ssSmart.rol from Library Organizer menu, double click on ssList_Of_ValuesQuery, and select Class tab).

    Modify the control methods Start() and Fetch() to set a search specification dynamically and store retrieved parameter language independent values.

    Function Start() As Boolean

    Dim DateSt as String

    Dim ValueSt as String

    Dim ThenSt as String

    ' create Search Spec date portion based on LOV or default '

    ' value

    if revdet::ByParameterV <> "" Then

    DateSt = "[Value] = '" & revdet::ByParameterV & "'"

    else

    DateSt = "[Name] = 'Month'"

    end if

    ' create Search Spec Value portion based on LOV or default '

    ' value

    if revdet::ValueParameterV <> "" Then

    ValueSt = "[Value] = '" & revdet::ValueParameterV &"'"

    else

    ValueSt = "[Name] = 'Revenue'"

    end if

    ' create Search Spec Then portion based on LOV or default '

    ' value

    if revdet::ThenParameterV <> "" Then

    ThenSt = "[Value] = '" & revdet::ThenParameterV & "'"

    else

    ThenSt = "[Name] = 'Account'"

    end if

    ' dynamic search spec

    SearchSpec="[Type] = 'REVN_FUNCTIONCAPTIONS' AND " & ValueSt

    + & " OR [Type] = 'REVN_SERIESCAPTIONS' AND " & ThenSt

    + & " OR [Type] = 'FCST_INTVL_PERD_TYPE' AND " & DateSt

    Start = Super::Start( )

    End Function

    Function Fetch( ) As AcDataRow

    Dim aRow As ssList_Of_ValuesDataRow

    Set Fetch = Super::Fetch( )

    If Fetch Is Nothing Then

       Exit Function

    End If

    set aRow = fetch

       Select Case aRow.ssValue

       case revdet::ByParameterV

       revdet::ByParameter=aRow.ssName

       case revdet::ValueParameterV

       revdet::ValueParameter=aRow.ssName

       case revdet::ThenParameterV

       revdet::ThenParameter=aRow.ssName

       End Select

       End Function

  3. Use date parameter ByParameterV to set a search specification for ssPeriodQuery data stream from revper.rol. As a result Period business component returns only period record of specified type (day or month or quarter or year).

    Sub Start( )

    Super::Start( )

    ' set search spec to get only needed period type records

    ssReport::ssSearchSpec = "[Period Type]='" &

    revdet::ByParameterV & "' "

    End Sub

  4. Use ByParameter and ValueParameter parameter values to fill out revenue Line Item record dynamically. The purpose is to create a list of revenue records that are independent of user parameters to make sure that general logic works correctly. Later, line item records are stored in a memory list for further aggregation.

    Function CreateUListRow(Rec as acDataRow ) as uListRow

    Dim uRec as uListRow

    Dim aRec as ssRevenueDataRow

    dim CurrentSection as integer ' put into root

    ' calculate section key and UnitKeyStat

    CurrentSection=GetGroupKey()

    Set aRec = rec

    set uRec = New uListRow

    ' filter ByParameter

    Select Case LCase(revdet::ThenParameter)

       case "account"

          uRec.uThen=aRec.GetValue("ssAccount")

       case "campaign"

          uRec.uThen=aRec.GetValue("ssCampaign")

       case "opportunity"

          uRec.uThen=aRec.GetValue("ssOpportunity")

       case "project"

          uRec.uThen=aRec.GetValue("ssProject")

       case "partner"

          uRec.uThen=aRec.GetValue("ssPartner")

       case "product"

          uRec.uThen=aRec.GetValue("ssProduct")

       case "product line"

          uRec.uThen=aRec.GetValue("ssProduct_Line")

       case "description"

          uRec.uThen=aRec.GetValue("ssDescription")

       case "revenue type"

          uRec.uThen=aRec.GetValue("ssRevenue_Type")

       case "revenue class"

          uRec.uThen=aRec.GetValue("ssRevenue_Class")

       case "win probability"

          uRec.uThen=aRec.GetValue("ssWin_Probability")

       case "sales rep"

          uRec.uThen=aRec.GetValue("ssSales_Rep")

       case "contact last name"

          uRec.uThen=aRec.GetValue("ssContact_Last_Name")

       case "Quote"

          uRec.uThen=aRec.GetValue("ssQuote")

       Case Else

          if gErrorMsg = "" then gErrorMsg =

    "'Then' parameter is invalid"

             Exit Function

    End Select

    ' filter ValueParameter

    Select Case LCase(revdet::ValueParameter)

    case "revenue"

    uRec.uValue=toCur(aRec.GetValue("ssFunctional_Revenue_

    Formatted"))

    case "margin"

    uRec.uValue=toCur(aRec.GetValue("ssFunctional_Margin_

    Formatted"))

    case "cost"

    uRec.uValue=toCur(aRec.GetValue("ssFunctional_Cost_

    Formatted"))

    case "upside"

    uRec.uValue=toCur(aRec.GetValue("ssFunctional_Upside_

    Formatted"))

    case "downside"

    uRec.uValue=toCur(aRec.GetValue("ssFunctional_Downside

    _Formatted"))

    case "average price"

    uRec.uValue=toCur(aRec.GetValue("ssFunctional_Average_

    Price_Formatted"))

    case "quantity"

    uRec.uValue=toCur(aRec.GetValue("ssQuantity_Formatted"))

    Case Else ' default

    if gErrorMsg = "" then gErrorMsg = "'Show' parameter

    is invalid"

    Exit Function

    End Select

    ' Get values for the remaining fields

    uRec.uItem=aRec.GetValue("ssProduct")

    uRec.uCommit=aRec.GetValue("ssCommitted")

    uRec.uProb=aRec.GetValue("ssWin_Probability_Formatted"))

    uRec.uSalesRep=aRec.GetValue("ssSales_Rep")

    uRec.uRevCls=aRec.GetValue("ssRevenue_Class")

    uRec.uRevTp=aRec.GetValue("ssRevenue_Type")

    uRec.uCurrencyCode=aRec.GetValue("ssFunctional_Currency_Code")

    uRec.uDate=CDate(aRec.GetValue("ssDate_Formatted"))

    uRec.SectionKey = CurrentSection

    uRec.uDateUnit = UnitKeyStat ' GetUnitKey(uRec.uDate)

    ' create key for Item grouping based on displayed attributes

    ' Item+Commit+Prob

    uRec.ItemKey= Trim(uRec.uItem) & Trim(uRec.uCommit) &

    Trim(uRec.uProb)

    Set CreateUListRow = uRec

       End Function

Parts of the described approach to handling the user parameters can be of general use for other parameterized reports. They include Parameters retrieval, filtering Periods, and fetching values from the LOV table.

Siebel Reports Administration Guide Copyright © 2009, Oracle and/or its affiliates. All rights reserved. Legal Notices.