Bookshelf Home | Contents | Index | Search | PDF |
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.
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.
To create a data collection section
- Drag and drop a reference to the ssRpt class from the sscustom.rol into the Content slot of ssSeq1.
- Right-click the reference and subclass it following the instructions in To create a report design file in Actuate e.Report Designer Professional.
- Right-click again and choose Rename from the menu. Then type
rptDataCollection
in the box.- Drag and drop the Query button from the main toolbar into the DataStream component of the report section.
- Click the library button in the menu bar and then double-click ssSmart.rol library.
- Drag and drop a reference to the ssList_Of_ValuesQuery class from the ssSmart.rol library into the DataStream slot of rptDataCollection.
- Subclass this component and rename it ssList_Of_ValuesQuery3.
- Open the Component Editor window for ssList_Of_ValuesQuery3 by double-clicking.
- Click the Variables tab and add two new properties: DefaultWeightingFactor (type=Integer) and NeutralTAS_ORG_STATUS (type=String).
- 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.
- 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.
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.
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 SubThe Main Report section contains components in the DataSource, PageHeader, and Content slots, as shown in Figure 45.
- 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
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.
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
- 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.
- 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
- Define the NumberOfThermometersAboveTarget variable (Type=Integer, Storage=Static) in the OpportunityDetail component.
- 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.
- 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.
- 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.
- 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.- 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
- Place, subclass, and rename the components for the rptCollectCompetitiveActivity section.
- Define the CompetitorDataList variable (Type=AcList, Storage=Static) in the OpportunityDetail component.
- 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
- 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
- Place, subclass, and rename the components for the rptCollectContacts section.
- Define the ContactDataList variable (Type=AcList, Storage=Static) in the OpportunityDetail component.
- 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
- Subclass from ssParallelSection to create parDashBoard in the Content slot of secMain.
- 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
- Define the rptContactDetail report section, add a Query DataStream, and rename it dsTransferContactList.
- In Properties, make DataRow ssContactDataRow.
- 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.
- 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.
- 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.
- 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
- Define the rptProducts report section and drag and drop the ssOpportunity_ProductQuery2 data source from the opdet.rol library.
- 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.
- 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
- Define the rptCompetitors report section and drag and drop the ssCompetitorQuery_3 data source from the opdet.rol library.
- 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.
- 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
- Define the rptDecisionIssues report section and drag and drop the ssDecision_IssueQuery_4 data source from the opdet.rol library.
- 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.
- 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
- Define the rptAllActivities report section and drag and drop the ssActionQuery_5 data source from the opdet.rol library.
- 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.
- 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
- Define the rptNotes report section and drag and drop the ssOpportunity_NoteQuery_6 data source from the opdet.rol library.
- 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.
- 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.
Bookshelf Home | Contents | Index | Search | PDF |
Siebel Reports Administration Guide Published: 18 July 2003 |