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 modelled 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 includes a selection of computers, printers, servers, switches, network cables, and more. Some selections, such as network cables and switches, are applicable to the entire office, while other products (such as computers and servers) need to be configured as child products.

Product hierarchy can be configured using the following product types:

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

The type of products will determine 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, and vice-versa.

There are three ways to configure product hierarchy:

  • 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.
  • Container attributes referencing configurable products.

Ways to Configure Product Hierarchy

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 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 provides a way for the simple product to be quoted either as a separate catalog item or as part of a configuration, which may 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.

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 (Not supported on Quote 2.0)
  • Parent/child system (list) of configurable products

Each display type provides different behaviors when the configuration is added to the quote. Selecting the most appropriate display type will depend on how the parent configuration should ultimately be displayed when added to the quote.

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. And when it is quoted as part of the server, you may define different pricing or configuration rules based on the overall server configuration.

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

For example, a router configuration might include not only options for a chassis, but also 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 cannot be imported 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 allows users to bypass the Product Configurator and directly add the product to a quote. The Add button will also display in the catalog when there are no required attributes in the configuration.

Adding a collection of configurable products to the quote does not add its own collection to the quote. Instead, adding the collection adds the products referenced by the selected attributes. These products will appear in the quote as main items rather than child items, as would occur with a configurable product. The quote does not 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 cannot be further edited.

System (list) of Configurable Products (Not supported on Quote 2.0)

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 are not 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 they belong to. The System (list) of Configurable Products 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 (List) of Configurable Products

The Parent/Child System of Configurable Products 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, etc. 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 (List) of Configurable Products display type differs from the System (List) of Configurable Products display type in that the main item is added to the quote, in addition to the products referenced by its attributes.

Attributes can be shared between parent and child configurations. When this is done, 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.

The determination of which attribute values are passed to child products can be made in the parent product's administration section.

Quote Line Enumeration

When more than two levels of product hierarchy are in play, the different levels of hierarchy can be identified by the line item enumeration in the quote. 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 following line item enumeration to behave properly.

The configurable product display type provides the least amount of distinction between nested products and 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 do not display the parent configuration or any attributes marked as List as line item that do not reference a product. They only display referenced products in the quote.

The Parent/Child System (List) of Configurable Products display type also displays product line items in the proper hierarchy but does not ignore the parent configuration or attributes marked as List as 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 would like to create a collection of peripherals commonly purchased with computer systems. This collection is mainly intended to help sales representatives quickly locate essential computer peripherals in the Catalog so they can easily offer such 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

In addition, 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 is 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 is ready to move to even more complex configurations. Supertech is introducing an Supertech Workstation bundle that consists of:

  • One Laptop, either an ST Laptop 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 is 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 will 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 will achieve this 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 create use item quantity in product bundles.

Exercise options

To carry out the four tasks of this is 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 item being purchased. Supertech would like each line item to provide meaningful information.

Earlier, you added a dynamic part number to both the ST and STX Laptops. You will 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 is 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 further operations:

    • Test whether container is empty.
    • Delete the text if_false.
    • Replace if_true with the text with, then insert an IF tag.
    • Replace 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 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 not display anything 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 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, then 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:

Log in to track your progress & complete quizzes