Siebel Reports Administration Guide > Smart Reports > Designing a Smart Report >

About the Opportunity Detail Smart Report


The Opportunity Detail report presents each opportunity with graphical information including order-of-merit indicator, Competitive Activity, Deal Size Thermometer, Buying Influencers Thermometer, Probability Thermometer, Sales Stage Slider, Contacts/Influence Map, and other details in the dashboard section and detail sections on contacts, products, competitors, activities, and notes. First a functional description of the components in this report is provided, followed by the report design in Actuate e.Report Designer Professional.

About the Functional Detail Section for the Opportunity Detail Smart Report

The functional detail includes a high-level description of the components of the Opportunity Detail report. This section also describes the properties of the specialized graphical components.

About the Graphical Components for the Opportunity Detail Smart Report

Order-of-merit indicator. The order-of-merit indicator indicates the overall measure for the opportunity and is calculated based on the following logic:

All three Thermometers above target = Up

Two of the Three Thermometers above target = Right

Otherwise = Down

Sales stage slider. This indicates how close the opportunity is in terms of closing the deal.

Deal size thermometer. This thermometer displays the deal size of the opportunity relative to the average across all opportunities. The minimum value is taken as zero, the trigger value is calculated to be the average across all opportunities, and the maximum is twice the trigger value.

Competitive activity. The competitive activity depicts the top four competitors in descending order; the value indicates the relative threat, which is determined by the sales representative or the status of each competitor. The value displayed in the graph is obtained from the List of Values table under type = 'TARGET_COMP_THREAT' and Value = Threat.

Buying influencers thermometer. The Buying Influencers thermometer depicts the buying influence based on the weighted average of the contacts involved with the opportunity (TASOrgStatusArray, ContactRoleArray, and TASPolitical AnalysisArray).

Probability thermometer. This thermometer shows an amount between 0 and 100, the percentage probability of converting the opportunity into an order.

Contacts influence map. The map shows the contacts associated with the opportunity, highlighting the decision makers.

About Other Components of the Opportunity Detail Smart Report

Page header. The page header includes a snapshot of the opportunity and shows the name of the opportunity, the revenue, the probability, and the order-of-merit indicator.

Dashboard. In this section, the graphical and textual information for the opportunity appears. The thermometers described earlier are in the dashboard, along with opportunity summary text.

Contact detail. This is one of the detail sections (or a subreport section) of the opportunity master section. The details of the contacts associated with this opportunity are shown in the form of a list report.

Products. The product offerings relevant to the opportunity are listed in this detail section.

Competitors. This section lists the competitors for this opportunity.

Decision issues. In this section, the decision issues for the opportunity are listed in order of priority.

All activities. This section lists all the activities undertaken for this opportunity.

Notes. This section shows the email messages, correspondence, and proposals sent for this opportunity.

About Technical Detail in the Opportunity Detail Smart Report

The Opportunity Detail report consists of two report sections. The first is the data collection section and the second is the main section, as shown in Figure 26.

Figure 26. Opportunity Detail Report Main Section
Click for full size image

The purpose of the data collection section is to obtain and manipulate data for the current master record (which is a record from the Opportunity business component). Specifically, the data from the List_of_Values of Opportunity object is obtained in the Fetch method for determining the values for the Buying Influencers thermometer.

About the Data Collection Section of the Opportunity Detail Smart Report

List of Values data collection is required for weighting factors used in the Buying Influencers thermometer. Three types of weighting factors, CONTACT_ROLE, TAS_POLITICAL_ANALYSIS, and TAS_ORG_STATUS, are stored in separate static arrays defined in the OpportunityDetail component. Also, minimum and maximum weighting factors are stored in separate static variables for each of the three types.

Data rows are collected by a component subclassed from the ssList_Of_ValuesQuery class defined in ssSmart.rol. The SearchSpec property is set to [Type] = 'CONTACT_ROLE' or [Type] = 'TAS_POLITICAL_ANALYSIS' or [Type] = 'TAS_ORG_STATUS'; DefaultWeightingFactor is a local property set to 1; NeutralTAS_ORG_STATUS is a local property set to Neutral. The Fetch method of ssList_Of_ValuesQuery3 decodes the type of weighting factor and populates the variables described above.

The data collection section can be created using the following procedure. The contents of this section appear in Actuate e.Report Designer Professional, as shown in Figure 27 and explained in the procedure.

Figure 27. Data Collection Section
Click for full size image

To create a data collection section for the Opportunity Detail Smart Report

  1. In Actuate e.Report Designer Professional, open the OpportunityDetail report (opdet.rod).
  2. From the application-level menu, choose View, and then the Libraries menu item.
  3. Drag and drop the ssRpt component from the sscustom.rol library in the Libraries window onto the Content slot of the ssSeq1 tree in the Report Structure window.
  4. Subclass the ssRpt component you created in Step 3, and then rename it to rptDataCollection.

    For more information, see Subclassing an Object, and Renaming an Object.

  5. Drag and drop the Query button from the main toolbar onto the DataStream tree in the Report Structure window.
  6. Drag and drop the ssList_Of_ValuesQuery component of the sssmart.rol library from the Libraries window on to the DataStream slot of the rptDataCollection tree in the Report Structure window.

    If the sssmart.rol library does not appear in the Libraries window, include it now. For more information, see Including a Library.

  7. Subclass the component you added in Step 6, and then rename it to ssList_Of_ValuesQuery3.
  8. Right-click ssList_Of_ValuesQuery3, and then choose Properties.
  9. Add a new variable to ssList_Of_ValuesQuery3 using values described in the following table.
    Property
    Value

    Name

    DefaultWeightingFactor

    Type

    Integer

    Externally Defined Data Type

    (Leave unchecked.)

    Storage

    Static

    Visibility

    Public

    For more information, see Adding a Variable.

  10. Add another variable to ssList_Of_ValuesQuery3 using values described in the following table.
    Property
    Value

    Name

    NeutralTAS_ORG_STATUS

    Type

    String

    Externally Defined Data Type

    (Leave unchecked.)

    Storage

    Static

    Visibility

    Public

  11. Click the Properties tab, and then set properties using values described in the following table.
    Property
    Value

    DefaultWeightingFactor

    1

    NeutralTAS_ORG_STATUS

    Neutral

    SearchSpec

    [Type] ='CONTACT_ROLE' or [Type] = 'TAS_POLITICAL_ANALYSIS' or [Type] = 'TAS_ORG_STATUS'

  12. Click the Methods tab, right-click Function Fetch () As AcDataRow, and then choose Edit.
  13. In the function editing window, modify the Fetch method from a Sub to a Function by entering the Actuate VB script provided in this step. Replace existing code, ignoring the Insert your code here instruction that appears in the editing window:

    Function Fetch( ) As AcDataRow

    Dim aRow As ssList_Of_ValuesDataRow

    Set aRow = Super::Fetch( )

    Do While Not aRow Is Nothing

       If Trim$(aRow.ssWeighting_Factor) = "" Then aRow.ssWeighting_Factor = Str$(DefaultWeightingFactor)

       If aRow.ssType = "CONTACT_ROLE" Then

          ContactRoleArraySize = ContactRoleArraySize + 1

          If MaxContactRole < Val( aRow.ssWeighting_Factor ) Then MaxContactRole = Val( aRow.ssWeighting_Factor )

          If MinContactRole > Val(aRow.ssWeighting_Factor) Then MinContactRole = Val(aRow.ssWeighting_Factor)

          ContactRoleArray( 2, ContactRoleArraySize ) = aRow.ssWeighting_Factor

          ContactRoleArray( 1, ContactRoleArraySize ) = aRow.ssName

    ElseIf aRow.ssType = "TAS_POLITICAL_ANALYSIS" Then

          TASPoliticalAnalysisArraySize = TASPoliticalAnalysisArraySize + 1

          If MaxTASPoliticalAnalysis < Val( aRow.ssWeighting_Factor Then MaxTASPoliticalAnalysis = Val(aRow.ssWeighting_Factor)

          If MinTASPoliticalAnalysis > Val(aRow.ssWeighting_Factor) Then MinTASPoliticalAnalysis = Val(aRow.ssWeighting_Factor)

          TASPoliticalAnalysisArray( 2, TASPoliticalAnalysisArraySize = aRow.ssWeighting_Factor

          TASPoliticalAnalysisArray( 1, TASPoliticalAnalysisArraySize = aRow.ssName

       ElseIf aRow.ssType = "TAS_ORG_STATUS" Then

          TASOrgStatusArraySize = TASOrgStatusArraySize + 1

          If MaxTASOrgStatus < Val( aRow.ssWeighting_Factor ) Then MaxTASOrgStatus = Val( aRow.ssWeighting_Factor )

          If MinTASOrgStatus > Val(aRow.ssWeighting_Factor) Then MinTASOrgStatus = Val(aRow.ssWeighting_Factor)

          If aRow.ssName = NeutralTAS_ORG_STATUS Then NeutralWeightingFactor = Val(aRow.ssWeighting_Factor)

          TASOrgStatusArray( 2, TASOrgStatusArraySize ) = aRow.ssWeighting_Factor

          TASOrgStatusArray( 1, TASOrgStatusArraySize ) = aRow.ssName

    Else

          ssDisplayMessage("Invalid LOV Type" & aRow.ssType )

    End If

          Set aRow = Super::Fetch( )

    Loop

    Set Fetch = Nothing

    End Function

Note that this technique requires variables to be defined in the top OpportunityDetail report component, as shown in Table 12.

Table 12. OpportunityDetail Report Components
Variable Name
Type
Storage
Visibility
Comment

ContactRoleArray(2,10)

String

Static

Public

Stores contact roles and weighting factors

ContactRoleArraySize

Integer

Static

Public

Used in array integration loops

TASOrgStatusArray(2,10)

String

Static

Public

Stores organization status identifiers and weighing factors

TASOrgStatusArraySize

Integer

Static

Public

Used in array integration loops

TASPoliticalAnalysisArray (2.10)

String

Static

Public

Stores political analysis identifiers and weighing factors

TASPoliticalAnalysisSize

Integer

Static

Public

Used in array integration loops

MaxContactRole

Integer

Static

Public

Maximum weighting factor

MinContactRole

Integer

Static

Public

Minimum weighting factor

MaxTASOrgStatus

Integer

Static

Public

Maximum weighting factor

MinTASOrgStatus

Integer

Static

Public

Minimum weighting factor

MaxTASPoliticalAnalysis

Integer

Static

Public

Maximum weighting factor

MinTASPolitical Analysis

Integer

Static

Public

Minimum weighting factor

About the Main Report Section of the Opportunity Detail Smart Report

The Main Report section provides the structure for gathering and displaying the data for each opportunity available from the Opportunity business component. Making the Opportunity data row available to detail sections (or subreports) requires static data row storage. OpportunityRow is a static variable of type ssOpportunityDataRow, defined in the OpportunityDetail component. The OnRow method of the rptMain report section assigns this variable equal to the current row from the ssOpportunityQuery as shown below.

Sub OnRow( row As AcDataRow )
   Super::OnRow( row )
   Set OpportunityRow = row
End Sub

The Main Report section contains components in the DataSource, PageHeader, and Content slots, as shown in Figure 28.

Figure 28. Main Report Section
Click for full size image
  • The DataStream section obtains data from the main business component, Opportunity, for this report.
  • PageHeader contains the information displayed in the header section of the report: the name of the opportunity, the revenue, the probability, and the order-of-merit indicator.
  • The Main Content section consists of the components (data collection sections, dashboard parallel section, and detail sections).
    • The Data Collection section consists of the Competitive Activity and Contacts sections. (The Data Collection sections are needed because this data is required in multiple report sections for each opportunity, but it is only possible to query the linked subreport business components once for each opportunity.)
    • The Dashboard parallel section contains sales stage slider graphics, a Main Dashboard section, a Competitive Activity section, a Deal Size thermometer, a Buying Influencers thermometer, and a Probability thermometer.
    • The Detail section consists of subsections on the contacts influence map, contact detail, products, competitors, decision issues, activities, and notes.
Creating the Sequential Report Section in the Opportunity Detail Smart Report

Create the main report section by subclassing from ssRpt into the content slot of ssSeq1. Rename this Report Section to rptMain. The rptMain section appears in Actuate e.Report Designer Professional as shown in Figure 29.

Figure 29. rptMain Section
Click for full size image
Defining the DataStream Section in the Opportunity Detail Smart Report

Click the library button and double-click opdet.rol to open the library. Drag and drop ssOpportunityQuery into the DataStream section under rptMain. It is not necessary to subclass.

Defining the Page Header Section in the Opportunity Detail Smart Report

The PageHeader frame provides the Order Of Merit graphic display because it is subclassed from the ssOrderOfMeritHeader class defined in ssSmart.rol library. The direction of the order-of-merit indicator is determined by assigning the ArrowDirection class variable in the Finish method before calling the superclass Finish method. In this method, the arrow direction is determined by the variable NumberOfThermometersAboveTarget, which is a static integer variable defined in the OpportunityDetail component.

If all three thermometers display data values higher than their trigger values, the up arrow appears. If only two of the thermometer data values exceed their trigger values, the right arrow appears. If one or none of the thermometer data values exceeds its trigger value, the down arrow appears.

To create a Page Header section in the Opportunity Detail Smart Report

  1. In Actuate e.Report Designer Professional, open the OpportunityDetail report (opdet.rod).
  2. From the application-level menu, choose the View screen, Libraries view.
  3. Drag and drop the ssOrderOfMeritHeader component of the sssmart.rol library in the Libraries window onto the PageHeader slot of the rptMain component in the Report Structure window.
  4. Subclass the component you added in, and then rename it to ssOrderOfMeritHeader3.

    For more information, see Subclassing an Object, and Renaming an Object.

  5. Right-click ssOrderOfMeritHeader3, and then choose Properties.
  6. In the Properties window, click the Methods tab, right-click Sub Finish (), and then choose Edit.
  7. In the editing window, delete the existing code, and then enter the following code:

      Sub Finish( )

      If NumberOfThermometersAboveTarget = 3 Then

      ArrowDirection = "UP"

      ElseIf NumberOfThermometersAboveTarget < 2 Then

      ArrowDirection = "DOWN"

      Else

      ArrowDirection = "PUSH"

      End If

      Super::Finish( )

      End Sub

  1. Add a new variable to the top-level OpportunityDetail component using values described in the following table.
    Property
    Value

    Name

    NumberOfThermometersAboveTarget

    Type

    Integer

    Externally Defined Data Type

    (Leave unchecked.)

    Storage

    Static

    Visibility

    Public

    For more information, see Adding a Variable.

  2. Drag and drop the ssTxt component of the sscustom.rol library in the Libraries window onto the ssOrderOfMeritHeader3 tree in the Report Structure window.
  3. Subclass the component you added in Step 9, and then rename it to ssTxtSectionHead1.
  4. Right-click ssTxtSectionHead1, choose Properties, and then enter [ssName] into the value for the ValueExp property. Make sure you include the brackets.
  5. Repeat Step 9 through Step 11 two more times to add two more components using values described in the following table.
Text Control Name
Value in ValueExp Property

ssTxtSectionHead2

[ssRevenue_Formatted]

ssTxtSectionHead3

[ssRep__] & "%"

  1. Drag and drop the ssLblBlueBlack component of the sscustom.rol library in the Libraries window onto the ssOrderOfMeritHeader3 tree in the Report Structure window.
  2. Subclass the component you added Step 13, and then rename it to ssLblSectionHead1.
  3. Right-click ssLblSectionHead1, choose Properties, and then define the property described in the following table.
    Property
    Value

    Text

    Revenue:

  4. Repeat Step 13 through Step 15, renaming the component to ssLblSectionHead2, and then defining the property described in the following table.
    Property
    Value

    Text

    Probability:

Defining the Content Main Section in the Opportunity Detail Smart Report

Subclass from ssSeq to create secMain in the Content slot of rptMain.

About the rptCollectCompetitiveActivity Section in the Opportunity Detail Smart Report

The rptCompetitiveActivity and rptCompetitors sections require Competitor data collection. The results of ssCompetitorQuery_3 query in Opdet.rol are stored in CompetitorDataList, a static variable defined in the OpportunityDetail component.

CompetitorIndexArray, an array of list position numbers, is maintained to facilitate retrieval of the four competitors with the highest threat value. The array is defined in the OpportunityDetail component.

The sifCompetitiveActivity component is subclasssed from the ssSingleInputFilter class in sscustom. The Start method of the sifCompetitiveActivity filter initializes the array values to zero for each opportunity. The Start method of the rptCollectCompetitiveActivity report section initializes the list for each opportunity. The Fetch method of the filter populates the list and the array.

To create a rptCollectCompetitiveActivity section in the Opportunity Detail Smart Report

  1. Place, subclass, and rename the components for the rptCollectCompetitiveActivity section.
  2. Define the CompetitorDataList variable (Type=AcList, Storage=Static) in the OpportunityDetail component.
  3. Override the Start method in sifCompetitiveActivity to initialize the CompetitorIndexArray for each opportunity.

      Function Start( ) As Boolean

      Dim i As Integer

      Start = Super::Start( )

      For i = 0 To 3

      CompetitorIndexArray(i) = 0

      Next

      End Function

  1. Override the Fetch method in sifCompetitiveActivity to obtain the top four competitors and the associated threat values as entered by the sales representative and to build the CompetitorDataList.

      Function Fetch( ) As AcDataRow

      Dim aRow As ssCompetitorDataRow

      Dim bRow As ssCompetitorDataRow

      Dim i As Integer

      Dim j As Integer

      Set aRow = New ssCompetitorDataRow

      Set aRow = InputAdapter.Fetch()

      If Not aRow Is Nothing Then

      CompetitorDataList.AddToTail(aRow)

      For i = 0 To 3

         If CompetitorIndexArray(i) > 0 Then

         Set bRow = CompetitorDataList.GetAt(CompetitorIndexArray(i))

         If Val(aRow.ssThreat_Value) >= Val(bRow.ssThreat_Value) Then

         For j = 3 T o i Step - 1

         CompetitorIndexArray(j + 1) = CompetitorIndexArray(j)

         Next

         CompetitorIndexArray(i) = CompetitorDataList.GetCount()

         Exit For

      End If

      Else

      CompetitorIndexArray(i) = CompetitorDataList.GetCount()

      Exit For

      End If

      Next

      Set Fetch = aRow

      End If

      End Function

About the rptCollectContacts Section in the Opportunity Detail Smart Report

The rptBuyingInfluencersThermometer, rptContactsInfluenceMap and rptContactDetail sections require Contact data collection. The results of ssContactQuery_1 query defined in Opdet.rol, are stored in the ContactDataList, a static variable defined in the OpportunityDetail component.

To create a rptCollectContacts section in the Opportunity Detail Smart Report

  1. Place, subclass, and rename the components for the rptCollectContacts section.
  2. Define the ContactDataList variable (Type=AcList, Storage=Static) in the OpportunityDetail component.
  3. Include code under the Fetch method in ftrContacts to obtain the contacts list.

      Function Fetch( ) As AcDataRow

      Dim aRow As ssContactDataRow

      Do

      Set aRow = InputAdapter.Fetch()

      If aRow Is Nothing Then Exit Function

      ContactDataList.AddToTail(aRow)

      Loop

End Function

About the parDashBoard Section of the Opportunity Detail Smart Report

See the general Smart Reports documentation for a general description of DashBoard parallel sections (About the Report Structure for Smart Reports).

To create a parDashBoard section in a Smart Report

  1. Subclass from ssParallelSection to create parDashBoard in the Content slot of secMain.
  2. Set up subDashBoard in the SubPage slot.
Defining the Subpage Layout Section in the Opportunity Detail Smart Report

In the subpage layout, set up a flow for each of the report sections described in the sections that follow.

rptSalesStageSlider. The frmStageSlider component simulates a horizontal bar graph by dynamically instantiating a dark-background control and sizing it based on the value of the Sales Stage Win Percent field for the current opportunity. Other elements of the graphic, such as ticks and label, are placed in the frmStageSliderHolder frame.

rptMainDashboard. The MainDashboard report section displays details for this opportunity and a general functional description of this report.

rptDealSizeThermometer. The DealSizeThermometer component is a subclass of the ssThermometer defined in ssSmart.rol. The four thermometer control variables, TriggerDataValue, DataValue, MinimumValue, and MaximumValue, are set in the OnRow method. TriggerDataValue is set from the Order By LOV field, MaximumValue is set from the Target High LOV field, and MinimumValue is set from the Target Low LOV field. DataValue is set from the Functional Revenue field of OpportunityRow, which was stored earlier. The OnRow method also adjusts the NumberOfThermometersAboveTarget variable to have the appropriate effect on the OrderOfMerit image.

rptCompetitiveActivity. The Competitive Activity chart is a standard Actuate horizontal-bar-chart summary graph. The data rows that feed the graph are pulled from the CompetitorDataList using the list row numbers saved in CompetitorIndexArray. The list and the array were saved earlier in the rptCollectCompetitiveActivity report section. The number of rows fed to the graph is limited to a maximum of four, and they are ordered so that the most threatening competitor is shown at the top.

rptBuyingInfluencersThermometer. The BuyingInfluencersThermometer graphic display is driven by scores calculated from values stored in arrays by the rptDataCollection section.

The ssContactQuery_2 data source component iterates through the ContactDataList, feeding the data rows to the ftrCalculateWeightedScore single input filter. The Fetch method for ssContactQuery_2 follows.

   Function Fetch( ) As AcDataRow

   Dim aRow As ssContactDataRow

   If Position <= ContactDataList.GetCount() Then

   Set aRow = ContactDataList.GetAt(Position)

   Set Fetch = aRow

   AddRow(Fetch)

   End If

   End Function

The Fetch method of the ftrCalculateWeightedScore single input filter calculates a score for an opportunity by averaging the scores for each contact associated with that opportunity. The score for each contact is the product of three weighting factors collected earlier and stored in static arrays.

The first weighting factor is retrieved from the TASOrgStatusArray by matching the 'Org Status' field with a TAS_ORG_STATUS type LOV value stored in the array. The second weighting factor is retrieved from the ContactRoleArray by matching the 'Role' field with a CONTACT_ROLE type LOV value stored in the array. The third weighting factor is retrieved from the TASPoliticalAnalysisArray by matching the 'Political Analysis' field with a TAS_POLITICAL_ANALYSIS type LOV value stored in the array. The script for ftrCalculateWeightedScore follows.

   Function Fetch( ) As AcDataRow

   Dim aRow As ssContactDataRow

   Dim finalRow As OpportunityDetail::rowBuyingInfluencers

   Dim i As Integer

   Dim score As Integer

   Dim totalScore As Integer

   Dim numberOfContacts As Integer

   Set aRow = Super::Fetch( )

   If aRow Is Nothing AND Position > 1 Then Exit Function

   Do While Not aRow Is Nothing

   If Not Trim$(aRow.ssOrg_Status) = "" Then

   For i = 1 to TASOrgStatusArraySize

   If aRow.ssOrg_Status = TASOrgStatusArray( 1, i ) Then

         score = Val( TASOrgStatusArray( 2, i ) )

         Exit For

   End If

Next

For i = 1 to ContactRoleArraySize

   If aRow.ssRole = ContactRoleArray( 1, i ) Then score =

         score * Val( ContactRoleArray( 2, i ) )

         Exit For

   End If

Next

For i = 1 To TASPoliticalAnalysisArraySize

   If aRow.ssPolitical_Analysis =

         TASPoliticalAnalysisArray1, i ) Thenscore = score *

         Val( TASPoliticalAnalysisArray( 2, i ) )

         Exit For

   End If

Next

totalScore = totalScore + score

numberOfContacts = numberOfContacts + 1

End If

Set aRow = Super::Fetch( )

   Loop

   Set finalRow = New OpportunityDetail::rowBuyingInfluencers

   If numberOfContacts = 0 Then

   finalRow.Score = 0

   Else

   finalRow.Score = totalScore / numberOfContacts

   End If

   Set Fetch = finalRow

   AddRow( Fetch )

   End Function

rptProbabilityThermometer. The ProbabilityThermometer component is a subclass of ssThermometer, defined in ssSmart.rol. As usual, the four thermometer control variables, TriggerDataValue, DataValue, MinimumValue, and MaximumValue, are set in the OnRow method.

TriggerDataValue is set from the Order By LOV field, MaximumValue is set from the Target High LOV field, and MinimumValue is set from the Target Low LOV field. DataValue is set from the Rep% field for the opportunity. The OnRow method also adjusts the NumberOfThermometersAboveTarget variable so it will have the appropriate effect on the OrderOfMerit image. The script for the OnRow method follows.

Sub OnRow( row As AcDataRow )

Dim aRow As ssList_Of_ValuesDataRow

Super::OnRow( row )

Set aRow = row

DataValue = Val( OpportunityRow.ssRep__ )

TriggerDataValue = Val( aRow.ssOrder_By )

MaximumValue = Val( aRow.ssTarget_High )

MinimumValue = Val( aRow.ssTarget_Low )

If DataValue > TriggerDataValue Then

NumberOfThermometersAboveTarget = NumberOfThermometersAboveTarget + 1

End If

End Sub

rptContactDetail. Instructions on creating the rptContactDetail section follow.

To create a rptContactDetail section in the Opportunity Detail Smart Report

  1. Define the rptContactDetail report section, add a Query DataStream, and rename it dsTransferContactList.
    1. In Properties, make DataRow ssContactDataRow.
    2. Add a Before section by dragging and dropping a frame from the main toolbar into the rptContactDetail section.

      Similarly, define the PageHeader and Content sections.

      The Before section includes the labels in the header for the Contacts child section.

    3. Drag and drop the ssLblSectionHead control from sscustom.rol into the frmContactsHeadings1 frame to create the headings for the Contacts child section.

      These include lblName, lblJobTitle, lblAccount, lblSite, lblWorkPhone, lblWorkFax, and lblRole, and correspond to the titles Name, Job Title, Account, Site, Work Phone, Work Fax, and Role.

  2. In the PageHeader section (frmContactsContinuedHeader frame), drag and drop the ssLabelSectionHeadContinued control from sscustom.rol to create lblContacts and lblContinued titles.

    Also, drag and drop ssLineControlP from sscustom.rol and rename it LineControlP2.

  3. In the content frame (frmMainContactData), drag and drop lblBlueBlack control from sscustom.rol to create the contents lblName, lblJobTitle, lblAccount, lblSite, lblWorkPhone, lblWorkFax, and lblRole, which correspond to the contents Name, Job Title, Account, Site, Work Phone, Work Fax, and Role, respectively.

    These appear as list columns under the child report section Contacts and get values from ssFull_Name, ssJob_Title, ssssAccount, ssAccount_Location, ssWork_Phone_, ssFax_Phone__, and ssRole, respectively, by setting the ValueExp property.

rptProducts. Instructions on creating the rptProducts section follow.

To create a rptProducts section in the Opportunity Detail Smart Report

  1. Define the rptProducts report section and drag and drop the ssOpportunity_ProductQuery2 data source from the opdet.rol library.
  2. Drag and drop a frame into the Page Header section and rename it frmHeaderAndTitleforProducts, and include the necessary control as part of the Page Header for the Products child report. This includes the headings Product, Expected Delivery Date, Quantity, and Comment.
  3. Include the Contents section to appear as list columns under the child report section Products and get values from ssVendor, ssStatus, and ssComment by setting the ValueExp property.

rptCompetitors section. Instructions on creating the rptCompetitors section follow.

To create a rptCompetitors section in the Opportunity Detail Smart Report

  1. Define the rptCompetitors report section and drag and drop the ssCompetitorQuery_3 data source from the opdet.rol library.
  2. Drag and drop a frame into the PageHeader section and rename it frmHeaderAndTitleforCompetitors1. Include the necessary control as part of the Page Header for the Competitors child report section.
  3. Include the Contents section to appear as list columns under the child report section Competitors and get values from ssProduct, ssExpectedDeliveryDate, ssQuantity, and ssComment from ValueExp. Status, and ssComment by setting the ValueExp property.

rptDecisionIssues section. Instructions on creating the rptDecisionIssues section follow.

To create a rptDecisionIssues section in the Opportunity Detail Smart Report

  1. Define the rptDecisionIssues report section and drag and drop the ssDecision_IssueQuery_4 data source from the opdet.rol library.
  2. Drag and drop a frame into the PageHeader section and rename it frmHeaderAndTitleforDecisionIssues, and include the necessary control as part of the Page Header for the DecisionIssues child report section.
  3. Include the Contents section to appear as list columns under the child report section Decision Issues and get values from ssName, ssComment, and the ssRank product by setting the ValueExp property.

rptAllActivities section. Instructions on creating the rptAllActivities follow.

To create a rptAllActivities section in the Opportunity Detail Smart Report

  1. Define the rptAllActivities report section and drag and drop the ssActionQuery_5 data source from the opdet.rol library.
  2. Drag and drop a frame into the PageHeader section and rename it frmHeaderAndTitleforAllActivities1. Include the necessary control as part of the Page Header for the All Activities child report section.
  3. Include the Contents section to appear as list columns under the child report section All Activities and get values from ssFull_Name, ssStart_Date-Formatted, ssType, ssDescription, and ssStatus. Drag and drop the Red Dot control from ssSmart.rol and include the OnRow method to indicate incomplete activities in red.

rptNotes section. Instructions on creating the rptNotes section follow.

To create a rptNotes section in the Opportunity Detail Smart Report

  1. Define the rptNotes report section and drag and drop the ssOpportunity_NoteQuery_6 data source from the opdet.rol library.
  2. Drag and drop a frame into the PageHeader section and rename it frmHeaderAndTitleforNotes1. Include the necessary control as part of the page header for the DecisionIssues child report section.
  3. Include the Contents section to appear as list columns under the child report section Notes and get values from ssNote, ssCreated_By_Name, and ssCreated_Formatted by setting the ValueExp property.
Siebel Reports Administration Guide Copyright © 2009, Oracle and/or its affiliates. All rights reserved. Legal Notices.