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

Opportunity Detail 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.

Functional Detail

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

Graphical Components

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.

Other Components

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 is displayed. The thermometers described earlier are all 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 all 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.

Technical Detail

The Opportunity Strategy 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 43.

Figure 43.  Opportunity Strategy 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.

Data Collection Section

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 44 and explained in the procedure.

Figure 44.  Data Collection Section

Click for full size image

To create a data collection section

  1. Drag and drop a reference to the ssRpt class from the sscustom.rol into the Content slot of ssSeq1.
  2. Right-click the reference and subclass it following the instructions in To create a report design file in Actuate e.Report Designer Professional.
  3. Right-click again and choose Rename from the menu. Then type rptDataCollection in the box.
  4. Drag and drop the Query button from the main toolbar into the DataStream component of the report section.
  5. Click the library button in the menu bar and then double-click ssSmart.rol library.
  6. Drag and drop a reference to the ssList_Of_ValuesQuery class from the ssSmart.rol library into the DataStream slot of rptDataCollection.
  7. Subclass this component and rename it ssList_Of_ValuesQuery3.
  8. Open the Component Editor window for ssList_Of_ValuesQuery3 by double-clicking.
  9. Click the Variables tab and add two new properties: DefaultWeightingFactor (type=Integer) and NeutralTAS_ORG_STATUS (type=String).
  10. Under the Properties tab set the DefaultWeightingFactor property to 1, set the NeutralTAS_ORG_STATUS property to Neutral, and set the SearchSpec to [Type] ='CONTACT_ROLE' or [Type] = 'TAS_POLITICAL_ANALYSIS' or [Type] = 'TAS_ORG_STATUS'. The resulting Component Editor Properties tab window is illustrated in the following figure.
  11. Click for full size image

  12. Click the Methods tab (shown in the figure following Step 10), choose the Fetch method and click Override. Include the following Actuate VB script in the Fetch method. This correctly changes the Fetch method from a Sub to a Function.
  13. 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

    This method requires variables to be defined in the OpportunityDetail report component (the topmost component) as shown in Table 17.

    Table 17.  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

Main Report Section

The Main Report section provides the structure for gathering and displaying all 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 45.

Figure 45.  Main Report Section

Click for full size image

Creating the Sequential Report Section

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 46.

Figure 46.  rptMain Section

Click for full size image

Defining the DataStream Section

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

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 is displayed. If only two of the thermometer data values exceed their trigger values, the right arrow is displayed. If one or none of the thermometer data values exceeds its trigger value, the down arrow is displayed.

To create a Page Header section

  1. Click the library button and double-click ssSmart.rol to open the library. Drag and drop the ssOrderOfMeritHeader frame into the Page Header section under rptMain. Subclass this frame and rename it ssOrderOfMeritHeader1.
  2. Override the Finish method as follows:

      Sub Finish( )

      If NumberOfThermometersAboveTarget = 3 Then

      ArrowDirection = "UP"

      ElseIf NumberOfThermometersAboveTarget < 2 Then

      ArrowDirection = "DOWN"

      Else

      ArrowDirection = "PUSH"

      End If

      Super::Finish( )

      End Sub

  1. Define the NumberOfThermometersAboveTarget variable (Type=Integer, Storage=Static) in the OpportunityDetail component.
  2. Create the contents of the Page Header section by dragging and dropping the appropriate text control and label controls. First click the library button and double-click sscustom.rol to open the library.
  3. Drag and drop the ssTxt text control from this Library Browser into the ssOrderOfMeritHeader1 frame. Rename the ssTxt control ssTxtSectionHead1. Then highlight ssTxtSectionHead1, right-click, and choose Properties from the menu. Select the value in ValueExp to be the [ssName] variable as reflected in the following figure.
  4. Click for full size image

  5. Repeat Step 5 two more times and rename the ssTxt control ssTxtSectionHead2 and ssTxtSectionHead3, respectively. Select the ValueExp in these text controls to be [ssRevenue_Formatted] and [ssRep__] & "%", respectively.
  6. Drag and drop the ssLblBlueBlack label control from the sscustom.rol Library Browser into the ssOrderOfMeritHeader1 frame. Rename the label control ssLblSectionHead1. Then select this label, right-click and choose Properties from the menu. In the Properties tab, enter Revenue: in the field against Text as shown in the following figure.
  7. Click for full size image

  8. Repeat Step 7 and rename the label ssLblSectionHead2. Enter Probability: in the field against Text Property.
Defining Content Main Section

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

rptCollectCompetitiveActivity

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

  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

rptCollectContacts

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

  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

parDashBoard

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

To create a parDashBoard section

  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.

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

  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.
    3. Similarly, define the PageHeader and Content sections.

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

    4. Drag and drop the ssLblSectionHead control from sscustom.rol into the frmContactsHeadings1 frame to create the headings for the Contacts child section.
    5. 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.
  3. Also, drag and drop ssLineControlP from sscustom.rol and rename it LineControlP2.

  4. 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.
  5. 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

  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

  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

  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

  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

  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 
 Published: 18 July 2003