Configuring Siebel eBusiness Applications > Configuring Picklists and Pick Applets >
About Dynamic Picklists
Like static picklists, dynamic picklists allow the user to populate fields by selecting values from a list. However, rather than drawing the values from the list of values table, a dynamic picklist draws its values from another user-maintained business component. Fields that use dynamic picklists are typically joined fields displaying data from a table other than the business component's base table. The dynamic picklist allows users to update the joined field.
Dynamic Pick Lists are exposed in the user interface using Pick applets. Pick applets allow users to select a value from a list, and have the selection entered into controls or list column cells (Figure 76).
NOTE: In end-user documentation, pick applets are referred to dialog boxes.
The data in the pick applet typically comes from a different business component than the data in the originating applet. There can be exceptions, for example, picking a parent Account for an Account or a parent Position for a Position record. When the user selects a record in the pick applet, the values in certain list columns in the selected record are copied to corresponding list columns in the originating applet. This is illustrated in Figure 77.
Figure 77. Data Flow in a Pick Applet
The following steps take place, from the user's perspective:
- In the Opportunity Form applet, the user enters information for the Organic Cereals opportunity.
- In the Opportunity Form applet, the user clicks Select.
The Account pick applet appears and displays rows from the Account business component.
- The user selects Account 1, Smith's Dry Goods, in the pick applet, and then clicks OK.
- Account data for Smith's Dry Goods populates controls in the Opportunity Form applet.
Dynamic Pick Lists maintain the foreign keys that facilitate join relationships. In the opportunity and account example, there is a foreign key in the Opportunity business component identifying the account for each opportunity. When the user selects an account in the pick applet, it populates this foreign key field. This selection associates the account with this opportunity for future use by the join that uses the foreign key.
Dynamic Pick Lists are implemented using object types illustrated in Figure 78.
Figure 78. Pick Applet Architecture
Figure 78 shows the object definitions used in the implementation of a pick applet in greater detail, and identifies the interrelationships.
The roles of the object definitions in Figure 79 are summarized in the following list and discussed in greater detail in the subsequent subsections. The pick applet example referenced is the Account pick applet illustrated in Figure 76.
- Originating applet. Contains the control or list column that invokes the pick applet. After the pick applet is invoked and a value is selected, specific controls in the originating applet display revised values. In the example the originating applet is the Opportunity Form Applet.
- Pick applet. Dialog box that is invoked for the selection of a value. The dialog box is a list applet containing scrolling list table rows. Each row corresponds to a business component record. In the example, the pick applet is called Account pick applet.
- Originating business component. Business component of the originating applet. This business component (in the example, the Opportunity business component) supplies the data presented in the originating applet (Opportunity form applet). The selection process in the pick applet results in the update of the current record in this business component.
- Pick business component. Business component of the pick applet. Data from fields in this business component is displayed in the list columns of the pick applet. In the example the pick business component is Account.
- Originating control or originating list column. Appears in the originating applet. When you click the originating control or list column, it invokes the pick applet. In the example, the originating control is the Account control.
- Originating field. Field in the originating business component that the originating control represents. It has pick map child object definitions that define the mapping of fields from the pick business component into the originating business component. In the example the originating field is the Account field.
- Pick List. Referenced by the field of the originating control, and identifies the pick applet's business component. In the example, the picklist object is called PickList Opportunity Account.
- Pick maps. Children of the originating field. Each pick map object definition defines a correspondence between a field in the pick business component and one in the originating business component. These correspondences provide the information required to update the current originating business component record with information from the pick business component record as soon as a record is picked.
When a user selects a value from an unbounded picklist, it is copied to the field with which the picklist is associated using the corresponding pick map that references the same field. Fields associated with other child pick maps are only populated when the picklist is bounded.
NOTE: Typing a new value into an unbounded picklist does not automatically add it to the list of values that can be picked.
Fields in pick map objects are not updated when a user picks a value from an unbounded picklist. Any applet based on CSSBuscomp or CSSBCBase with an unbound picklist will not map all the values in the pick map. For all the values in a pick map to be mapped, the picklist must be bounded.
- Join and join specification. Child object definition of the originating business component. The join specification is a child of the join and is referenced by the join field. One of the pick maps updates the join field. A change in the value of the join field results in the update of all fields whose values are derived from the join. This update is not as immediate as the update performed by the pick maps. In the absence of the other pick maps, the data would not be updated until the user left the view and returned to it. In the example the join is called S_ORG_EXT and the join specification is Account Id.