Describing the Configurable Product Frameworks

Objectives

After completing this lesson, you will be able to:
  • Describe configurable product frameworks in SAP CPQ.
  • Describe the different ways to configuring product hierarchy.
  • Describe product referencing in SAP CPQ.
  • Set up quote line enumeration.
  • Sort items in the quote.

Configurable Product Frameworks

SAP CPQ supports configurable product frameworks. These complex hierarchical structures are modeled in product configuration. These structures contain multiple products and unlimited levels of nesting. A primary product configuration with references to other configurations is referred to as the parent product or parent configuration. The configurations are nested and referenced by the parent product, known as child products or child configurations.

For example, consider the configuration of a computer server rack product in CPQ. There are configuration options for both the rack and each blade server in the rack. Creating a product hierarchy allows both the parent product (the server rack) and each child product (the blade servers) to be configured.

Hierarchical products can also be used to configure product systems or solutions. For example, the user can configure multiple office computers, which include a selection of computers, printers, servers, switches, network cables, and more. Some selections, such as network cables and switches, apply to the entire office, while other products (such as computers and servers) need to be configured as child products.

A product hierarchy can be configured by using the following product types:

  • Simple product
  • Configurable product
  • Collection of configurable products (Not supported on Quote 2.0)
  • System (list) of configurable products
  • Parent/child system (list) of configurable products

The type of products determines the method of referencing and the product display type required.

Product hierarchy is configured by creating references to other products from the parent configuration. By referencing other products in a configuration, values from the child product can be used by the parent configuration, as well as the other way around.

Ways to Configure Product Hierarchy

The figure illustrates the 2 ways to configure a product hierarchy. Explanations below.

There are two ways to configure product hierarchies:

  1. Attribute value(s) referencing simple products: The simple product's name, part number, prices (price, cost, recurring price/cost), and description are used as the attribute value.
  2. Container attributes referencing configurable products: Configurable products are referenced in the General tab. Attributes from the referenced product(s) can then be referenced by columns defined in the Columns tab. Under the Actions tab, the Open New Configurator setting determines whether the product configurator should be used to set a referenced product's configuration when a new row is added. The Open New Configurator setting also determines whether it is configured by selecting values for its attributes using the container columns referencing them. This is the recommended method of hierarchy for a configurable product.
The figure illustrates the build and levels of a hierarchy as described below.

The hierarchical product structure can be setup with unlimited levels. Unlimited levels allows the creation of a deep relationship structure.

For example:

  • First level: Parent configuration.
  • Second Level: Child configuration.
  • Third Level: Grandchild configuration.
  • Fourth Level: Great grandchild configuration.

Each configuration level can have its own attributes, rules, pricing, and more. Attributes within each level can also be set to appear as a line item in the quote.

Product Hierarchy with Simple Products

A parent product references simple products to use their name, part number, description, and pricing (price, cost, and recurring price/cost). This reference allows for simple products to be quoted either as separate catalog items or as part of a configuration that could have its own rules and unique pricing.

This referencing is an efficient way of setting options in product configurations. Changes made to the simple product apply to both use scenarios: standalone and child product. Required maintenance is reduced for products quoted both directly from the catalog and within a configuration.

Visualization of the main cornerstones of simple products as listed below.

When referencing simple products, any of the following product display types can be used for the parent configuration:

  • Configurable product
  • Collection of configurable products (Not supported on Quote 2.0)
  • System (list) of configurable products
  • Parent/child system (list) of configurable products

Each display type provides different behaviors when the configuration is added to the quote. Selecting the proper display type depends on how the parent configuration is ultimately displayed when added to the quote.

Visualization of referencing configurable products as explained below.

There are many reasons to reference configurable products. A configuration quoted independently can also be configured within one or more other configurations.

For example, it makes sense to quote a backup solution as a standalone product. But when configuring a server, the same backup solution configuration can be part of the server configuration. When it's quoted as part of the server, you can define different pricing or configuration rules based on the overall server configuration.

Multiple instances of a configuration can be part of another configuration.

For example, a router configuration could include options for a chassis as well as for the cards inserted into the chassis. Each card provides its own configuration, including rules and pricing. Configuration rules affecting these cards can depend on the presence of other cards or be based on options selected for the chassis. 

Collection of Configurable Products (Not supported on Quote 2.0)

The Collection of Configurable Products display type behaves as a configurable product. It requires selecting attributes/options before being added to a quote. Inclusion, exclusion, and bundling rules are enforced between attributes/options.

Attributes added through the Attributes tab for a collection must reference other products (called child products) and must be set as a line item. Because this product display type is used in a product hierarchical structure that references other products, it can't be imported by using CPQ's Product Import.

From the catalog, a collection of configurable products can be configured by selecting the Configure button. The configuration process is the same as a configurable product.

If the required attributes in the configuration are preselected, the Add button will be available directly from the catalog. This option allows users to bypass the Product Configurator and directly add the product to a quote. The Add button also displays in the catalog when there are no required attributes in the configuration.

Adding a collection of configurable products to the quote doesn't add its own collection to the quote. Instead, adding the collection adds the products referenced by the selected attributes. These products appear in the quote as main items rather than child items, as would occur with a configurable product. The quote doesn't retain any trace of the collection product after its child products are added.

This product display type differs from the system (list) of configurable products or parent/child system (list) of configurable products display types. The products are added to the quote as independent products and are no longer related. The collection's configuration is discarded and can't be further edited.

System (List) of Configurable Products

The System (List) of Configurable Products display type adds its child products to the quote as main items. Unlike the Collection of Configurable Products display type, the child products aren't independently configurable. The link to their parent system is retained. Editing them returns the user to the Product Configurator for the system (list) of configurable products that they belong to. The System (list) of Configurable Products display type differs from the Parent/Child System (list) of Configurable Products display type. The child products are displayed in the quote; the main item is not.

Parent/Child System of Configurable Products

The Parent/Child System of Configurable Products display type adds both the parent and its child products to the quote. The child products appear below their parent, indented and, if you choose, displayed in the quote document as 1.2, 1.3, and so on. Like the System (List) of Configurable Products display type, the child products are not independently configurable. They remain part of the system and editing either the parent or any child returns the user to the Product Configurator for the Parent/Child System of Configurable Products.

The Parent/Child System of Configurable Products display type differs from the System (List) of Configurable Products display type. The main item is added to the quote as well as to the products referenced by its attributes.

Shared Attributes Between Parent and Child Configurations

Attributes can be shared between parent and child configurations. When this option is chosen, the selected (or calculated) values from the parent configuration can be passed to the child configuration, whether the child configuration has been opened or not.

For example, consider an Internet service configuration that has child configurations for components of the service. Both parent and child items have an Internet speed attribute. You can configure the parent configuration so that setting the Internet speed for the parent also sets the speed for all the child configurations.

To determine which attribute values are passed to child products, go to the parent product's administration section.

Quote Line Enumeration

The figure shows that the Roll-Up Cart Items option is set to True.

When more than two levels of product hierarchy are in play, the line item enumeration in the quote differentiates the different levels of hierarchy. The way the configuration's line items are displayed largely depends on the display type selected for the parent configuration.

Navigate to SetupGeneralApplication Parameters. Under the Shopping Cart and Quotes tab, the parameter Roll-up Cart Items must be set to be TRUE for the line item enumeration to behave properly.

The configurable product display type provides the least amount of distinction between nested products. It also represents them without any separation between nested products.

The System (List) of Configurable Products and Collection of Configurable Products display types represent product line items in the proper hierarchy. These display types don't display the parent configuration or any attributes marked as List as line items that don't reference a product. They only display referenced products in the quote.

The Parent/Child System of Configurable Products display type also displays product line items in the proper hierarchy. However, it doesn't ignore the parent configuration or attributes marked as List as a line item. It displays the parent configuration, its line items, and referenced products.

Item Sorting in the Queue

When the user wants to sort items in the quote, the following rules are followed:

  • Within one main item, line items are displayed before child items. The child item cannot be listed or moved before main items.
  • Only main items at the same level can be reordered.
  • If the main item is the first child, it cannot be moved up. An up arrow is displayed, but nothing happens when it is selected.
  • If the main item is the last child item, it cannot be moved downward in the list. A down arrow is displayed, but nothing happens when it is selected.
  • When a main item moves upwards or downwards, all its child items are moved with it.

Reference Simple Products

Business Scenario

Supertech wants to create a collection of peripherals commonly purchased with computer systems. This collection is meant to help sales representatives locate essential computer peripherals in the catalog quickly, so they can easily offer these products to customers purchasing a computer system.

Supertech wants the following simple products included in the peripherals collection:

  • Monitors
  • Printers
  • Keyboards
  • Mice
  • Docking stations
  • Headsets

Also, Supertech wants to allow for multiple peripherals of each type to be selected.

Task Flow

In this exercise, you’ll learn how to create references to simple products as attribute values of a configurable product.

Exercise Options

To carry out the three tasks of this exercise, you can choose the following option: Platform Simulation: Watch the step-by-step instructions within the simulation.

To start the simulations, choose Start Exercise in the figures below.

Task 1: Define New Attributes

Task 2: Create a New Configurable Product

Create a Product Bundle Using Parent/Child System List

Business Scenario

Now that Supertech can build and configure complex products, it's ready to move to even more complex configurations. Supertech is introducing a Supertech Workstation bundle that includes:

  • One Laptop, either an ST or an STX Laptop
  • One or two Supertech monitors

Task Flow

In this exercise, you’ll learn how to create a product bundle in SAP CPQ.

Exercise Options

To carry out the six tasks of this exercise, you can choose the following option: Platform Simulation: Watch the step-by-step instructions within the simulation.

To start the simulations, choose Start Exercise in the figures below.

Task 1: Create a New Parent/Child System (List) of Configurable Products

Task 2: Create a Product Container Attribute for Monitors in the Bundle

Task 3: Create a Product Container Attribute for Laptops in the Bundle

We want the user to be able to specify one of two laptops in the bundle. We already have a Laptops attribute, which we'll extend for our purposes here.

Task 4: Add Both Product Container Attributes to the Bundle

Task 5: Limit the Number of Laptops in the Bundle

Task 6: Test the Bundle

Use Item Quantity in Product Bundles

Business Scenario

Supertech is giving an option to customers to buy multiple configurations within the Workstation Bulk Purchase bundle and also to specify the number for each of the configurations.

You'll achieve this option by adding an ItemQuantity system attribute. A special attribute is added to a products configuration that can be used to control the quantity of the main item in the cart.

Before proceeding, you must first modify the existing Supertech Workstation.

Task Flow

In this exercise, you’ll learn how to use item quantity in product bundles.

Exercise Options

To carry out the four tasks of this exercise, you can choose the following option: Platform Simulation: Watch the step-by-step instructions within the simulation.

To start the simulations, choose Start Exercise in the figures below.

Task 1: Update Supertech Workstation Parent/Child Product

Task 2: Create a Product Container Attribute for the Bundle

Task 3: Create the Workstation Bulk Purchase Parent Product

Task 4: Test the Configuration

Define a Relevant Bundle Part Number

Business Scenario

When you added a Workstation Bulk Purchase to the quote, only the ST and STX Laptops have provided more than a superficial description of the item being purchased. Supertech wants each line item to provide meaningful information.

Earlier, you added a dynamic part number to both the ST and STX Laptops. You'll now provide part numbers for the monitors, the workstation, and the bulk purchase.

Task Flow

In this exercise, you’ll learn how to define a relevant bundle part number.

Exercise Options

To carry out the task of this exercise, you can choose the following option: Platform Simulation: Watch the step-by-step instructions within the simulation.

To start the simulations, choose Start Exercise in the figures below.

Task 1: Provide a Dynamic Part Number for Supertech Monitors

Steps

  1. Edit a Supertech monitor.

    1. Navigate to SetupProduct CatalogProducts.

    2. Edit Supertech monitor.

    3. In the Definition tab, use the Formula Builder to set the Part Number to:

      <*VALUE(Screen size)*> Supertech Monitor
    4. Choose Save & Go Back.

  2. Edit Workstation Bulk Purchase.

    Use the following data:

    FieldValue
    CTX tag objectContainer
    Container argumentBulk Workstation Order
    Container objectRow
    Row argument1
    Row objectColumn
    Column argumentDesignation
    Column ObjectGet

    1. In the Definition tab, choose the Formula Builder link under Part Number.

    2. In the Variables tab, select CTX, then choose on Construct CTX Tag.

    3. Select the values from the table above.

    4. Choose Insert to copy the CTX tag to the Expression box, which should now show:

      <*CTX( Container(Bulk Workstation Order).Row(1).Column(Designation).Get)*>
    5. Choose Update, then Save & Go Back to save the Workstation Bulk Purchase product.

  3. Edit Supertech workstation.

    Use the following:

    ObjectContent
    TextWorkstation ()
    Text in parenthesesWorkstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*>)
    IF tag[IF](condition){if_true}{if_false}[ENDIF])
    GT tag([GT](TestedValue,TestValue)
    CTX tag(<*CTX( Container(Workstation Monitors).Rows.GetCount )*>

    1. In the Definition tab, choose the Formula Builder link under the Part Number property, and enter the text from above.

    2. Use the Construct CTX Tag window to insert the tag from above inside the parentheses.

    3. Place your cursor just before the final close parameter and insert the IF tag:

      Code Snippet
      12
      Workstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*> [IF](condition){if_true}{if_false}[ENDIF])
    4. Select condition and insert a GT tag:

      Code Snippet
      12
      Workstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*> [IF]([GT](TestedValue,TestValue)){if_true}{if_false}[ENDIF])
    5. Select TestedValue and construct a CTX tag:

      Code Snippet
      1
      Workstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*> [IF]([GT](<*CTX(Container(Workstation Monitors).Rows.GetCount )*>,TestValue)){if_true}{if_false}[ENDIF])
  4. Perform additional operations:

    • Test whether the container is empty.
    • Delete the text if_false.
    • Replace if_true with the text with, then insert an IF tag.
    • Replace the condition with an EQ tag.
    • Test whether the number of rows in the Workstation Monitors container is 1.
    • If true, display monitor, if false, display two monitors
    1. Test whether the container is empty by replacing TestValue with zero:

      Code Snippet
      1234
      Workstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*> [IF]([GT](<*CTX(Container(Workstation Monitors).Rows.GetCount )*>,0)) {if_true}{if_false}[ENDIF])
    2. Delete the text if_false to display nothing if the container is empty.

      Code Snippet
      123
      Workstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*> [IF]([GT](<*CTX(Container(Workstation Monitors).Rows.GetCount )*>,0)) {if_true}{}[ENDIF])
    3. Replace if_true with the text with, then insert an IF tag:

      Code Snippet
      123
      Workstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*> [IF]([GT](<*CTX(Container(Workstation Monitors).Rows.GetCount )*>,0)) {with [IF](condition){if_true}{if_false}[ENDIF]}{}[ENDIF])
    4. Replace the condition with an EQ tag:

      Code Snippet
      123
      Workstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*> [IF]([GT](<*CTX( Container(Workstation Monitors).Rows.GetCount )*>,0)) {with [IF]([EQ](TestedValue,TestValue)){if_true}{if_false}[ENDIF]}{}[ENDIF])
    5. This time, test whether the number of rows in the Workstation Monitors container is 1:

      Code Snippet
      1234
      Workstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*> [IF]([GT](<*CTX( Container(Workstation Monitors).Rows.GetCount )*>,0)) {with [IF]([EQ](<*CTX( Container(Workstation Monitors).Rows.GetCount)*>, 1)) {if_true}{if_false}[ENDIF]}{}[ENDIF])
    6. If true, display monitor, if false, display two monitors.

      Code Snippet
      1234
      Workstation (<*CTX( Container(Workstation Laptops).Row(1).ProductName )*> [IF]([GT](<*CTX(Container(Workstation Monitors).Rows.GetCount )*>,0)) {with [IF]([EQ](<*CTX( Container(Workstation Monitors).Rows.GetCount) *>,1)) {monitor}{two monitors}[ENDIF]}{}[ENDIF])
    7. Choose Update, and then choose Save.

    8. Go back to the last section of the previous exercise (Testing the Configuration) and configure a Workstation Bulk Purchase product.

    9. Verify that more informative part numbers are displayed in the quote. For example:

      The figure displays the Products list.