0% found this document useful (0 votes)
2K views

SAP CPQ Setup and Administration Guide

Uploaded by

Doğancan Koşal
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2K views

SAP CPQ Setup and Administration Guide

Uploaded by

Doğancan Koşal
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 766

ADMINISTRATION GUIDE | PUBLIC

Document Version: 1.0.0 – 2020-05-13

SAP CPQ Setup and Administration Guide


© 2020 SAP SE or an SAP affiliate company. All rights reserved.

THE BEST RUN


Content

1 Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1 Formula Builder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
CTX Syntax Builder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Table Tag Builder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 Global Information (GI) Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Creating GI Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Retrieving GI Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3 Object Identifier (System ID). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4 SAP CPQ Administrator Analytics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
1.5 Supported Browsers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.6 Tags and Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.7 Setup Home. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23

2 Product Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1 Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Controlling Attribute Access Rights via Iron Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Attribute Container. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Attribute Quantity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Attributes Spanning Multiple Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
Import/Export Attribute Translations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Attribute Values as Line Items. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
Autocomplete Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Creating Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
ItemQuantity Attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.2 Products. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Product Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Code Matching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Rules Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
BOM Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Bulk Product Import/Export. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Custom Configurator XSLT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Discontinue or Replace Simple Products. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Drilldown. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Create Product Alias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Product Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Product Copy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Product Display Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

SAP CPQ Setup and Administration Guide


2 PUBLIC Content
Product Validation Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Create Product Version. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Set Configuration Based on XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
Simple Product Mass Updates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Triggers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Unit of Measurement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.3 Categories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
2.4 Product Attribute Visibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
2.5 Simple Product Import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
2.6 Product Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103
2.7 Sequence Substitution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.8 Attaching IronPython Script on Button Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105
2.9 Attribute Import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Create Template by Exporting Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Importing Attributes with Unit of Measurement Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
2.10 Bulk Upload for Simple Product Translation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
2.11 Creating Favorites Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
2.12 Custom Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Custom Table Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Hidden Custom Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
2.13 Guided Selling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
2.14 Item Quantity and Attribute Line Item Quantity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
2.15 Messages in Product Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
2.16 Product Import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
2.17 Products 2.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Products 2.0 Definition Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Products 2.0 Attributes Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128
Products 2.0 Rules and Messages Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Products 2.0 Scripts Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Products 2.0 Layout Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Products 2.0 Advanced Settings Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
2.18 Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

3 User Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134


3.1 Guest User. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Setting Up an Anonymous User. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.2 User Registration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
Customizing User Registration Emails. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3.3 Users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
3.4 Bulk User Import/Export. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Import Through Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Update Existing Users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

SAP CPQ Setup and Administration Guide


Content PUBLIC 3
Filter and Export. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148
3.5 Companies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Add a New Company. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Companies Export/Import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
3.6 Log In as a Proxy User. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
3.7 Permission Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Create a Permission Group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.8 Quick Search and Advanced Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
3.9 User Custom Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
3.10 User Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Add a New User Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Legacy UI Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Setting Up a Landing Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
New Project/Quotation Landing Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164

4 Quotes Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165


4.1 Document Generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Document Generation Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Create Document Generation Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Document Generation Engines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Setup Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Manage Content Documents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Template Creation Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202
Document Generation User Journey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Document Generation Tips and Tricks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
4.2 Quote 2.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208
Migrate from Quote 1.0 to Quote 2.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Filtering Items in Quote 2.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Managing Calculations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Solution Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Scripting for Quote 2.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Involved Parties (Quote Teams). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
4.3 Quote Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Create Quote Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Quote Table Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Manage Quote Table Column Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Quote Table Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Import via Excel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Quote Table Translation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271
4.4 Quote Tab Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271
4.5 Custom Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272
4.6 Key Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275

SAP CPQ Setup and Administration Guide


4 PUBLIC Content
4.7 Search Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
4.8 Quote Visibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
4.9 Reports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
4.10 Cart Level Aggregates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
4.11 AI Product and Pricing Recommendations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Enable AI Recommendations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Recommendations on Quotes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
4.12 Bulk Deletion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
4.13 Column Headings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
4.14 Email Customers / Quote Acceptance Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
4.15 Favorites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
4.16 Images for Quote Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .301
4.17 MRC Column in Existing Quotes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
4.18 Quick Config (also referred to as Reverse Search ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
4.19 Quick Product Search in the Quote. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
4.20 Quote Item Custom Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
4.21 Quote Layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
4.22 Quote Revisions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
4.23 Create Quote Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
4.24 Renewal Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
4.25 Report Module. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
4.26 Standard Quote Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323

5 Workflow-Approvals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
5.1 Workflow Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Conditional Reconfigure Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Auto Quote Expiration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Action Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Approval Reminder Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Global Condition for Quote Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
5.2 Outbound SAP CPQ Emails. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
5.3 Notifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Notification Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Approval via PDA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
One-click Approval HTML Email Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .347
5.4 Email Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
5.5 Approval Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Parallel Approval. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Approval Process Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .366
Approval Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Submit Upstream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .379
5.6 Statuses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

SAP CPQ Setup and Administration Guide


Content PUBLIC 5
5.7 Workflow Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
5.8 Likelihood of Approval. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
5.9 Required Fields By Workflow Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
5.10 Approval Auto-Reminder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
5.11 Approving Quotes in One Click. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
5.12 Item Actions Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
5.13 Out of Office for Approvers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

6 Pricing/Calculations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
6.1 Cart Fields Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Status - User Group Grid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Adding/Removing Editable Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Editable Quote Comment Field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Recurring Rolled-Up Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Rolled-Up Cost and Margin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
6.2 Pricebooks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .406
Effective Dates for Price Book Entries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Pricing Dynamic Part Numbers and Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Promotions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
6.3 Currencies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
6.4 Markets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
6.5 Market Visibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
6.6 Discounts/Multipliers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
6.7 Discount Priorities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
6.8 Total Amount Limit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
6.9 Margin Health. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Create Margin Health Indicators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Margin Health Design and Visibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Margin Health Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
6.10 Margin Health Indicators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
6.11 Margin Health Design and Visibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
6.12 Country Sales Tax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
6.13 Edit Item Cost on Cart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
6.14 Preserve Original Currency Rates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
6.15 Recurring and Non-Recurring Prices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .448
6.16 Rounding Setup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
6.17 Shipping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
6.18 State Sales Tax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
6.19 Price Code in Pricing Calculations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455

7 Customers Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458


7.1 Customer Field Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

SAP CPQ Setup and Administration Guide


6 PUBLIC Content
7.2 Customer Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .460
7.3 Local Customer Visibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
7.4 Global Customer Visibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
7.5 Global Customers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
7.6 Customer Custom Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
7.7 Customer Role Defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465
7.8 Export/Import Customers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
7.9 Postal Code Lookup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

8 UI Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
8.1 Branding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
8.2 Custom Category UI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
8.3 Catalog Layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
8.4 Freeze Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
8.5 Product Configuration Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
8.6 Product Details Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
8.7 Products to Product Details Templates Mappings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
8.8 Responsive Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
8.9 Styles and Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
8.10 Top Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
8.11 Responsive Design Customizations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Prerequisites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .480
Knockout Extension Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Customization Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Advanced Customization Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Server Side Rendering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Manage Custom CSS/JS Files with File Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .540
Upgrade Templates to Newer Versions with Newer Releases. . . . . . . . . . . . . . . . . . . . . . . . . . 542
8.12 Customized HTML Templates and Fixes for Breaking Changes. . . . . . . . . . . . . . . . . . . . . . . . . . . 543

9 General Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545


9.1 Application Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
9.2 Deploy / Send Changes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
Deployment Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Deployment Setup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
Deployment Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .592
9.3 Countries, States and Territories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
9.4 Tabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
9.5 Dictionaries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Comparing Dictionaries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Exporting/Importing Dictionaries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
Creating Custom Dictionary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596

SAP CPQ Setup and Administration Guide


Content PUBLIC 7
Defining Key Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
Which Dictionaries will SAP CPQ Retrieve for my Users?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
9.6 Manage Generated Documents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
9.7 File Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Upload Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
9.8 Communication Links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
9.9 Time Zones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602

10 Scripting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
10.1 Create a Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
10.2 Custom Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
10.3 Custom Calculations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
10.4 Script Workbench. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615

11 SAP CPQ Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620


11.1 Conditional Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
11.2 CTX Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Complete Tag List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
CTX Date Format Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
CTX Objects and Lifetime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
Enhanced Language Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
Salesforce Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
SOD Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .694
11.3 Product Model Object Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Arithmetic Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Attribute Data Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
External Source Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
Logged in User Data Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
Product Data Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
Sequence Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
11.4 Quote Generation Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Functional Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Tags for Displaying Data from Custom Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
11.5 Shopping Cart Object Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
Other Shopping Cart Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .703
User and Customer Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
11.6 Tags for Rules and Triggers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
SETLISTSEPARATOR Tag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
Action Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
Condition Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
11.7 GI Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714

SAP CPQ Setup and Administration Guide


8 PUBLIC Content
11.8 Main Item Price Tag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
11.9 XWS Tag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715

12 Audit Trail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717


12.1 Audit Trail Logs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
Admin Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
User Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
Products. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
Pricebooks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .721
Custom Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
Logged Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
12.2 Change Set. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .723
Create Change Set. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
Deploying a Change Set. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725

13 Delegation of Authority. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728


13.1 Ability to Manage Documents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .729
13.2 Bulk Quote Reassignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
13.3 Delegating Authority for Custom Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
13.4 Delegating Authority for Price Books. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .730
13.5 Delegating Authority for Simple Products. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .731
13.6 User Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731

14 Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
14.1 Automatic Data Deletion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
Blocked Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
General Deletion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
Audit Trail Deletion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
14.2 Personally Identifiable Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
Personal Data Log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
Sensitive Personally Identifiable Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
View/Export Personally Identifiable Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
14.3 WSDL Management and SSL Certificates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
Certificate Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
WSDL Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
14.4 Access Rights. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
Assign Access Rights for Setup Sections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
Assign Access Rights for Setup Sections and Entities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Assign Access Rights Administrators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
Access Rights and Custom Table Deployment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .756
14.5 DKIM Support for Outbound Emails. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756

SAP CPQ Setup and Administration Guide


Content PUBLIC 9
Test DKIM Signature. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .758

15 Log and Developer Console. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .759


15.1 Log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
15.2 Developer Console. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
Trace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Debugging Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763

SAP CPQ Setup and Administration Guide


10 PUBLIC Content
1 Administration

The following topics describe elements of SAP CPQ administration.

Formula Builder [page 11]


Tags and expressions are a powerful part of SAP CPQ. To help reduce errors and simplify the process,
the Formula Builder is available to create expressions.

Global Information (GI) Variables [page 19]


Global Information (GI) variables contain values that can be read by any product or quote.

Object Identifier (System ID) [page 21]


Different objects in SAP CPQ have their own unique identifiers or system IDs.

SAP CPQ Administrator Analytics [page 22]


The System Performance and the Business Performance pages provide high-level information about
system errors and quotes.

Supported Browsers [page 22]


This topic contains the list of browsers currently supported by SAP CPQ.

Tags and Expressions [page 22]


Tags are used to obtain values from different SAP CPQ entities. The expressions are used for
generating text or calculating values based on the configuration data.

Setup Home [page 23]


Once logged in, you can access the administrative side by clicking Setup, which is located in the main
navigation toolbar on the left side of the page. Clicking this button displays the Setup Home page.

1.1 Formula Builder

Tags and expressions are a powerful part of SAP CPQ. To help reduce errors and simplify the process, the
Formula Builder is available to create expressions.

To access the Formula Builder, click the button next to the field where the expression is applied.

This button is available anytime an expression can be used. Clicking a Formula Builder button brings up the
Formula Builder window. Formula Builder changes according to the settings the expression is created for.

For example, if an expression is being added for a Rule (see the chapter on RulesRules Administration [page
65]) or Trigger (see the chapter on TriggersTriggers [page 94]), then an additional Triggers/Rules box will be
displayed with the Formula Builder. In addition, if you are building an expression that is related to a quote, such
as quote visibility rules, then the window will look like the figure on the left. The basic principles for using the
Formula Builder are the same despite what setting the expression is being created for.

The Formula Builder window is divided into two sections. The main box at the bottom is where the expression is
formed. Expressions can be typed in manually, if necessary, and in certain instances, phrases can be entered
into the box to be displayed to the user. The Check Syntax button checks the expression to ensure that the tags

SAP CPQ Setup and Administration Guide


Administration PUBLIC 11
have been joined correctly and that all punctuation is correct. Any errors are displayed at the bottom of the
window. It's a good idea to check an expression before inserting it to ensure it functions correctly and that it
doesn’t produce an error for the user. When finished, the Update button inserts the created expression into the
field.

The top section of the Formula Builder windows contains boxes to build the expression. In most cases, to build
an expression, you select the attribute, value, sequence, and so on, that an action is performed on, then select
the action. The top section is also categorized. To the right, you have operators, and to the left you have
context-sensitive options divided into 3 tabs (Variables, Actions / Conditions (depends on the context),
Sequences). Note that you sometimes see Actions, while other times you see Conditions as the second tab,
depending on the context. Sometimes both are unavailable. When the Syntax Checker opens, it activates the
tab that contains the most appropriate options for the given context.

An Select Operator box is available in every Formula Builder window to create conditional statements and
Boolean logic. Click the operator in the box and then click Insert Operator into the expression. In most cases,
the operator is added in its full syntax, with all parenthesis, and you only need to fill in the parameters. This
formula is an example of an expression using an operator: [AND](<*ANYSEL(Hard

SAP CPQ Setup and Administration Guide


12 PUBLIC Administration
Drive:HD200)*>,<*ANYSEL(Memory:2GB)*>). It states that the Hard Drive attribute with the value
HD200 AND the Memory attribute with the value 2GB need to be selected in order for this expression to be true.

To create an expression in the Formula Builder, select an action/condition/variable, then (if needed) select
attributes. Attribute values can also be selected for the expression if necessary. Click the Insert button to add
the new tag to the expression. Sequences can also be used in expressions by selecting the sequence from the
Select Operator box in the Sequence tab, then selecting the sequence for it (see the chapter on
SequencesSequences [page 131]).

The attributes displayed in the box are only the ones selected for that product or category, depending on what
you are creating the expression for (applies to all Formula Builder windows. If a certain object, attribute or an
attribute value isn’t available, make sure it’s checked, selected, or even created for the settings the expression
is being created for.

The actions are also different for each Formula Builder window. For information on what an action does, check
Attribute Data TagsAttribute Data Tags [page 695]. This topic also contains information on the proper way to
join tags and create expressions. While the Formula Builder aids in the process of creating expressions, tags
need to be joined and built correctly in order for the expression to function accurately.

Note that building some variables is complicated if you use syntax checker alone. Such is the case with <*
CTX(…) *> and <* TABLE(…) *> objects. When you need to insert these variables, select them from the list.
A new button appears (for example Construct TABLE tag), and clicking it brings up a new popup window where
you can build your complex tag.

Once you have finished building your complex tag, you can insert it into syntax builder window and continue
building the rest of your formula. For more information on complex tags and their builders, refer to Table Tag
Builder [page 15] and CTX Syntax BuilderCTX Syntax Builder [page 14].

CTX Tag Visualization

Each Formula Builder also has a Visualize button that can ease formula creation.

Since SAP CPQ formulas are essentially expressions and not the algorithm (the program), a tree control can be
used to display them. Tag names are colored blue and operators are colored green.

Tags are displayed as nodes that can have children nodes if the tag has arguments. If another tag is in the
argument of a tag, same definition is recurrently applied.

<*AUX(price, Price, Part_Number,<*ValueCode(Cell Kits)*>)*>

As exception, tags that take comma/colon and comma/colon/bar arguments are shown differently.

<*ANYSEL(Bulkhead Connector:IE6MTImp,Housing Material:Delrin)*>

Operators are shown as a node with parameters as child nodes.

[OR](a,b,c)

Special operator IF is shown as a main node with tree child nodes representing condition, true and false
branches.

[IF](some condition){do if true}{do if false}[ENDIF]

SAP CPQ Setup and Administration Guide


Administration PUBLIC 13
A real, complex formula can look like this:

[IF]([OR]([EQ](<*VALUECODE(Product Code Identifier)*>,A0200B),[EQ]


(<*VALUECODE(Product Code Identifier)*>,A0200B),[EQ](<*VALUECODE(Product Code
Identifier)*>,A0200B))){0}{<*AUX(Prices, ListPrice, ProductPartCode, CON-
H0004-1)*>}[ENDIF]

CTX Syntax Builder [page 14]


CTX syntax builder is a page on which you can generate your CTX expressions. It’s accessed from the
Formula Builder when CTX is selected from the list of available variables.

Table Tag Builder [page 15]


The <* TABLE (…) *> tag is used to fetch data from data tables uploaded by customers. It allows
users to use SQL aggregate functions: MIN, MAX, AVG, SUM, COUNT, as well as match upper and match
lower. You can also retrieve records greater than some entered value.

1.1.1 CTX Syntax Builder


CTX syntax builder is a page on which you can generate your CTX expressions. It’s accessed from the Formula
Builder when CTX is selected from the list of available variables.

It only allows you to select tags and objects that make a valid formula. CTX objects are selected from dropdown
lists, until you select all required elements. As you select objects, the CTX formula is dynamically rebuilt to
display your CTX formula.

As you select CTX objects from the dropdown lists, there’s a possibility that you encounter objects, which
require an argument to be entered. You can easily spot these types of objects as another dropdown list (or free
input text field) displays to the right of the one you've selected.

SAP CPQ Setup and Administration Guide


14 PUBLIC Administration
Some objects don't have predefined argument values available. For these objects, a free input textbox is shown
instead of a dropdown list. You need to enter the argument in that textbox. You can switch the argument type
between textbox and dropdown list at any given time, by clicking the button next to the dropdown list/textbox.
If there are no predefined arguments, when you switch to a dropdown list from a textbox, it can contain no
values to select from. When you’re typing an argument into the textbox, you need to click the Refresh button in
order to see the resulting formula with the new argument. This scenario doesn't occur with the dropdown
arguments – the formula refreshes as soon as you select it.

When you've finished building your formula, click Insert to have it transferred to the syntax checker (that
invoked CTX syntax builder). Make sure that you've made selections in every offered dropdown list. If you leave
any dropdown in –select– state, your formula is incomplete. If you try to insert such a formula, an error
message displays, and CTX syntax builder window can't be closed, leaving you the opportunity to fix your
selection. This way, there’s small possibility that you manage to build a CTX formula that isn’t valid.

1.1.2 Table Tag Builder

The <* TABLE (…) *> tag is used to fetch data from data tables uploaded by customers. It allows users to
use SQL aggregate functions: MIN, MAX, AVG, SUM, COUNT, as well as match upper and match lower. You can
also retrieve records greater than some entered value.

The TABLE tag supports the following functions:

● EXACT
A default function. It returns anything that is selected, without any data filtering. It's similar to the AUX tag
behavior - the difference is that AUX must use the = operator for conditions. The typical TABLE tag based
on the EXACT function looks like this:
<* TABLE (SELECT price FROM priceBook WHERE productId = 5 ) *>
The EXACT function reveals a classic SQL Select statement. If the statement returns more than one record
from the database, only the first one returned is the result of the <* TABLE(…) *> tag. If you need the last
one, you can change sorting direction. Since there’s no guarantee on order SQL server return records, if
you don't use sorting, it's best to prepare data and use queries in such way that they return unique records.
● MIN
A function that returns minimal value from all the results that are meeting the given criteria. The typical
TABLE tag based on MIN function looks like this:
<* TABLE (SELECT MIN (price) FROM priceBook WHERE productId = 5 ) *>
The MIN function returns one record, the minimal one among all the records that satisfy given conditions.
● MAX
A function that returns maximal value from all the results that are meeting the given criteria. The typical
TABLE tag based on MAX function looks like this:
<* TABLE (SELECT MAX (price) FROM priceBook WHERE productId = 5 ) *>
The MAX function returns one record, the greatest one among all the records that satisfy the given
conditions.
● COUNT
A function that counts all records that meet the given conditions. The typical TABLE tag based on the
COUNT function looks like this:
<* TABLE (SELECT COUNT (price) FROM priceBook WHERE productId = 5 ) *>
The COUNT function returns one record.

SAP CPQ Setup and Administration Guide


Administration PUBLIC 15
● AVERAGE
A function that selects all records that meet the given conditions, and then calculates average value from
the results. The typical TABLE tag based on AVERAGE function looks like this:
<* TABLE (SELECT AVG (price) FROM priceBook WHERE productId = 5 ) *>
The AVERAGE function returns one record.

The returned results can be sorted Ascending, Descending, or not sorted at all. Only the column that contains
results can be sorted. When match upper or match lower condition operator is used, sorting is first
performed by the column that is used in condition, and then by resulting column.

Table Tag Builder User Interface [page 16]


Table tag builder is invoked from the Formula Builder. On the list of tags, there’s a TABLE tag listed.
When it’s selected, a Construct TABLE tag button appears. This button is visible only when the TABLE
tag is selected in the list of tags.

Table Tag Builder Conditions [page 17]


The <* TABLE(…) *> tag supports adding multiple conditions to your data query. The typical
condition is defined by the name of the column being tested, and by the matching criteria.

Table Tag Builder Operators [page 18]


Operators are words or characters typically used in SQL statements as conjunctions for several
conditions.

1.1.2.1 Table Tag Builder User Interface

Table tag builder is invoked from the Formula Builder. On the list of tags, there’s a TABLE tag listed. When it’s
selected, a Construct TABLE tag button appears. This button is visible only when the TABLE tag is selected in
the list of tags.

Clicking Construct TABLE tag opens the Table Tag Builder window.

In Table Tag Builder, you first need to select a table from which you’re fetching the data. It's the dropdown
labeled From Table. Next to the dropdown is the Preview Table Data button, which enables you to preview the
first 25 rows of your uploaded table. It's meant to allow administrators to construct TABLE tags by showing
them data sample of the selected table.

The table shows only first 25 records. It's meant to preview table structure rather than check table data. Since
custom tables can be huge, it's not recommended to fetch large amounts of data since it tends to result in
timeouts and stress to server.

After selecting the table, you need to select a function that returns data. The dropdown list you need is labeled
Return. The default is EXACT function. Afterwards, you need to choose a column from which you wish to fetch
the data from the From Column dropdown list.

The data can be sorted by that column, but it's optional. If you like, you can choose the sorting type to be
ascending, descending, or to leave it as None, which is a default option. If you want sorting to be precise, you
need to define the data type in that column (numbers, text, or dates). The data type needs to be set correctly,
or else you can get incorrect sorting. For example, f you sort numbers as if they were text, the output is: 1,
10, 2, 3, 4, 5,…

When you define the column you wish to use, you need to set the conditions on that column, in order to fetch
only the rows that you need. You can add as many conditions as you wish. New conditions are added by clicking

SAP CPQ Setup and Administration Guide


16 PUBLIC Administration
on Add New Condition link under the previous condition. Another set of fields that you need to populate is
added and, in this way, another condition is defined. A typical condition is built by selecting a column name
from the source table, choosing an operator used for data comparison, and, finally, defining a reference value.
For example, if you wish to get all records where part number is abcd, the reference value can be a constant –
abcd, or it can be a dynamic formula, like <* CATCODE(attribute) *>.

You have a Syntax Builder button there, so you can easily construct formulas for your conditions. Every
condition has a Column Type. It’s necessary because the SQL that fetches your data is different depending on
whether the comparison is done with numeric values, text values, or date values. If an error message displays
when you test the formula, recheck your column types. There’s a possibility that you’re fetching a column
whose values can’t be converted to the data type you wish. For example, you can't convert abc to the numeric
type, but you can enter numbers that correspond to that string.

After defining the data and the conditions, you can click Build Formula link, and you can preview the resulting
TABLE tag constructed. The area that displays your generated TABLE tag is editable, so you can alter the SQL
yourself. However, if you alter SQL manually, and then click Build Formula again, your complete formula is lost
and replaced by newly generated TABLE tag formula, based on what you selected from dropdown lists. Thus,
make sure that you alter SQL manually only once you've defined it enough with the Table Tag Builder. You can
use the Test Formula link when you finish editing the TABLE tag. When you click on it, your SQL is executed and
you’re presented with the data it returned. If you had an error in your SQL, it doesn't return any data. Instead,
an error message displays, giving you a clue what you did wrong.

While testingTABLE tags, if you used any formulas in your conditions, you must replace them temporarily with
values you expect formulas to evaluate to. For example, if you had a condition that contains “product_color
= ';#;<* CATCODE(selected_color_attribute) *>;#;'”, you must alter your condition to state: -
“product_color = 'blue'“. This alteration is necessary, since the CATCODE formula (and all other
formulas) is context-dependent, and can't be parsed in the Table Tag Builder. In the sample above, it simply
doesn’t know about the “selected_color_attribute” attribute, so it can't return its catalog code. Once
you're satisfied with the results, you can click on Use This Formula button, and your TABLE tag is checked for
errors. If it's OK, it's transferred to the Syntax Checker that invoked the Table Tag Builder.

1.1.2.2 Table Tag Builder Conditions

The <* TABLE(…) *> tag supports adding multiple conditions to your data query. The typical condition is
defined by the name of the column being tested, and by the matching criteria.

The typical example is: “give me price of the product that has a catalog code ABC”. Price is defined in one
column, and every price has its catalog code in the catalog_code column. So, our criteria instructs that
catalog_code is ABC. Use the following query in SQL:

SELECT price FROM table WHERE catalog_code='abc'

Now, we can use multiple conditions. For example, if quantity affects the price, we need to treat the quantity
column in the same table. The SQL now looks like this:

SELECT price FROM table WHERE catalog_code='abc' AND quantity>5

In this way, we can add as many conditions as we like. They’re all concatenated with AND operator, meaning
that all the conditions must be met in order to fetch the data.

SAP CPQ Setup and Administration Guide


Administration PUBLIC 17
1.1.2.3 Table Tag Builder Operators

Operators are words or characters typically used in SQL statements as conjunctions for several conditions.

Depending on data types you expect in a condition column, not all condition operators are available. The
supported operators are:

Operators Data Types

= Text; number; Date

> Number; Date

< Number; Date

>= Number; Date

⇐ Number; Date

begins with Text

ends with Text

matches LIKE clause in SQL (for strings); Text

match lower (inclusive) Number; Date

match lower (noninclusive) Number; Date

match upper (inclusive) Number; Date

match lower (noninclusive) Number; Date

● begins with
This operator is typically used to search string columns. It’s used to search if there’s data in a column that
begins with string provided as a parameter. This only works on text column types. It’s translated to the SQL
LIKE clause, with % at the end - searching for strings that begin with preset parameter and can end with
anything.

 Example

SELECT price FROM products WHERE product_name like 'ab%'

● ends with
This operator is typically used to search string columns. It’s used to search if there’s data in a column that
ends with string provided as a parameter. This only works on text column types. It’s translated to the SQL
LIKE clause, with % at the beginning – searching for strings that end with preset parameter and can begin
with anything.

 Example

SELECT price FROM products WHERE product_name like '%ab'

● matches
This operator is typically used to search string columns. It’s used to search if there’s data in a column that
contains string provided as a parameter. This only work on text column types. It’s translated to the SQL
LIKE clause, with % at the beginning and with % on the end – searching for strings that begin with anything
and end with anything, but must contain provided string.

SAP CPQ Setup and Administration Guide


18 PUBLIC Administration
 Example

SELECT price FROM products WHERE product_name like '%ab%'

● match lower
This only works on numeric and date column types. This operator is typically used for doing some sort of
rounding of the input parameter in condition.

 Example

There's a table that contains prices for products. It typically has 3 columns: product_catalog_code,
order_quantity, and price. For a given product, price varies depending on quantity. However, in the
prices table, there are prices defined for quantities 1, 5, 10, 50. So, since there isn't “7” as a value for
quantity in prices table, you need to set up a condition that uses the nearest lower value for the
quantity column. In this case, select column order_quantity and the match lower operator.
Enter a formula that reads quantity attribute. (that is the source of “7” in the previous example). If
you click the Rebuild button, you get SQL that looks like: SELECT TOP 1 price FROM table WHERE
quantity<7 ORDER BY quantity DESC. This way you have set up the condition to form a price
based on quantity. You still need additional condition that identifies the product by part number (that
condition uses the typical = operator). When this condition is added, you have a complete query:

SELECT TOP 1 price FROM table WHERE quantity<7 AND product_catalog_code='abc'


ORDER BY quantity DESC

The query finally fetches the price for a given catalog code and quantity “5”. (first one less than the
input value - 7).

● match upper
This only works on numeric and date column types. This operator is similar to match lower. The only
difference is that it gets the first record that has greater value than the given reference. If you use the
example for match lower as reference, match upper selects the row with quantity value of 10 (the first
one greater than 7).

 Example

SELECT TOP 1 price FROM table WHERE quantity>7 ORDER BY quantity ASC

● Inclusive and noninclusive options define if you use < operator or < = operator. The choice between these
options depends on whether you wish the formula to include a boundary from a condition, or not.

1.2 Global Information (GI) Variables

Global Information (GI) variables contain values that can be read by any product or quote.

This comprehensive way of holding information allows values to be passed among quotes and products
through the simple use of a tag. GI variables can be defined as a quote property, within a product model, or as a
separate cart level aggregate. No matter where the GI was defined, it is available across all categories and
products.

Creating GI Variables [page 20]


GI Variables can be created in two ways: explicitly and implicitly.

SAP CPQ Setup and Administration Guide


Administration PUBLIC 19
Retrieving GI Variables [page 20]
Once a GI has been created, it is accessible from any category, product, or generated document.

1.2.1 Creating GI Variables


GI Variables can be created in two ways: explicitly and implicitly.

● Explicitly, GI variables are created by using the tag setGI in product rules, triggers, and so on.
To create a GI variable within an expression, use the tag <*setGI(key,value)*>. This tag can be used
anywhere that an expression can be built: rules, triggers, calculated fields, and so on. To create the GI,
enter a key by which the value is retrieved, then enter the value that the GI holds. The value can be text or
numeric, from a static value to a dynamic value using another expression. For example, to create a GI in an
expression, enter this formula: <*setGI(k100,100)*> (key = k100, value = 100).
● Implicitly, GI variables are created via cart aggregates and quote custom fields.
To create GI variables this way, go to Setup Quotes Cart Level Aggregates . By clicking Add New, the
window for creating a new GI variable displays. Specify the following:
○ GI Name – The key name by which the value of GI is retrieved.
○ Expression – Enter value for GI. It can be any text, numerical value, or expression.

 Remember

Fields marked with an asterisk are required.

A GI variable is also created implicitly when a quote custom field is created in Setup Quotes Custom
Fields (see the chapter on Custom Fields [page 272]).

1.2.2 Retrieving GI Variables


Once a GI has been created, it is accessible from any category, product, or generated document.

Retrieving a value can be done by simply using the tag <*GI(key)*>. This tag can be used anywhere where
the value of the GI is needed. In addition, GI variables are accessible by Microsoft Word generated documents
(see Create Document Generation Template [page 189]). This is done by using the tag «ST_GI(key)». Using
this tag in a word quote document will display the value of the specified GI variable.

Retrieving Customer Information

The only way to get customer info for the configuration is using the <*AUX*> tag, customer info table and
<*GI(customerID)*> as a condition. When a user does not select a customer, but when the customer gets
populated from CRM, we can get customer ID using GI tag <*GI(CUSTOMERID)*>.

 Note

See Appendix A for a complete list of tags, including GI Tags [page 714].

SAP CPQ Setup and Administration Guide


20 PUBLIC Administration
1.3 Object Identifier (System ID)

Different objects in SAP CPQ have their own unique identifiers or system IDs.

System ID is the identifier for:

● products
● attributes
● attribute values
● categories
● product types
● tabs
● configuration templates
● details templates
● user types
● shipping method

System ID is one of the fields that are displayed when you add or edit an existing object. It’s displayed under the
name field or next to it (such as the Attribute Value object form). System ID is created automatically based on
the name that you, as an administrator, type in the name field. As soon as you finish typing and leave the name
field, either by clicking elsewhere or by pressing Tab on the keyboard, the System ID field is populated with the
value that is unique for this object. System ID is constructed by replacing the spaces in the object name with
underscores and adding the suffix _cpq at the end. For example, if you create product with name Product
One, SAP CPQ creates the system ID with value Product_One_cpq. If this value is already assigned to some
another product, SAP CPQ attempts to create Product_One_1_cpq, then Product_One_2_cpq, and so on.

System ID can be modified. However, if you edit an object, the system ID is displayed as read-only. In order to
make it editable, click Edit. This action makes the field editable, but displays the warning message as well. If
you try to change the system ID and it happens that the same system ID already exists, an error message is
displayed. When you’re defining the attribute value, the system ID is created based on the attribute value code
(not display value) + attribute name. Additionally, when you export products, the column Product System ID is
added to the Microsoft Excel file.

When you import products, the system decides, based on the Product System ID column, whether the product
is going to be updated or created. If the column has a value for the particular product (represented by a row in
the Microsoft Excel file) this product is going to be created if the system ID doesn’t exist in the SAP CPQ, or
updated if it already exists. If column is missing or it’s empty, SAP CPQ assigns a system ID to the product the
same way as if the administrator created product manually.

SAP CPQ Setup and Administration Guide


Administration PUBLIC 21
1.4 SAP CPQ Administrator Analytics

The System Performance and the Business Performance pages provide high-level information about system
errors and quotes.

System Performance

The System Performance page displays the number of logged errors in the current session, the current day, and
the previous week. Additionally, you can access the Log and Developer Console [page 759] from this page.

Business Performance

The Business Performance page contains a tabular overview of all quotes created in the tenant and the details
on quotes and users who created them. Outside the table, there’s also the total number of created quotes, the
total, and the average quote amount. To filter data, use the date fields above the table. Additionally, you can
filter each column by entering the search term in the dedicated box and clicking Search. The filtering lets you
get an insight on the business performance, which is useful for planning future steps.

1.5 Supported Browsers

This topic contains the list of browsers currently supported by SAP CPQ.

● Microsoft Internet Explorer IE11


● The latest version of Mozilla Firefox
● The latest version of Google Chrome
● The latest version of Microsoft Edge
● The latest version of Safari

For SAP CPQ to function properly, enable cookies and Javascript for all browsers.

1.6 Tags and Expressions

Tags are used to obtain values from different SAP CPQ entities. The expressions are used for generating text or
calculating values based on the configuration data.

Tags can be used in many areas of SAP CPQ. Three major areas are a product model, quote, and document
generation templates. They’re used for obtaining values from the following SAP CPQ entities - Products,

SAP CPQ Setup and Administration Guide


22 PUBLIC Administration
Attributes, Customers, and so on. Tags can also provide other useful information that could be used in
expressions.

Expressions are used for dynamically generating text or calculating values based on the configuration data.
Expressions can use string data, numeric data, math functions, if/then statements, and SAP CPQ tags.

1.7 Setup Home

Once logged in, you can access the administrative side by clicking Setup, which is located in the main
navigation toolbar on the left side of the page. Clicking this button displays the Setup Home page.

On the left side of the page, menu links for accessing the different administrative sections are available.

Clicking on any menu link with this icon expands the menu, displaying a number of submenu links. Main
navigation toolbar is always available on the left side of the screen. Most administrative sections in SAP CPQ
have the same look and feel.

Setup Home page contains tenant analytics:

● Storage Status in Current Month - two graphs visually representing the usage of the file system and the
database. There’s also a numerical representation of the total and used storage space in gigabytes.
● Total Storage Usage Per Month - graphical and numerical overview of the total storage usage per months
for images, documents, proposals and the database.
● Active Users - the tenant name and the respective number of total users, active and inactive users. By
default, users with @sap.com, @calliduscloud.com and @webcominc.com email domains are excluded
from the total number of users in a tenant, and therefore, they’re excluded from the total number of active
and unused users. In this context, active users are all users with a license, regardless of whether they’re
blocked, expired, and so on.
● User Activity in Current Month - the total number of user and administrator logins and the number of
created users. Clicking View opens a grid with a detailed overview for each user.

In the top-right corner of the shell bar, the following icons are located:

● Help
- clicking this icon opens the SAP CPQ online help page with more information about the page you’re
currently on in a new tab.

● Exit Setup - - clicking this icon redirects you to the SAP CPQ landing page.

● Log-out - clicking this icon logs you out of the current SAP CPQ environment.

SAP CPQ Setup and Administration Guide


Administration PUBLIC 23
SAP CPQ Setup and Administration Guide
24 PUBLIC Administration
2 Product Administration

The following topics explain the administration of products and attributes in the SAP CPQ Setup.

Attributes [page 26]


Attributes are the building blocks of a product’s configuration. They can be used as a list of values
selected by the user, a calculation, a free input by the user, a display of text to the user, and many other
ways.

Products [page 53]


The Products administrative section allows setting up new and editing the existing products.

Categories [page 98]


Categories are used to logically segment products. Once created, products or subcategories can be
added to them.

Product Attribute Visibility [page 100]


This section allows setting visibility of attributes in SAP CPQ.

Simple Product Import [page 100]


The Simple Product Import administrative section allows you to create as many simple products in an
Excel spreadsheet as needed, and then upload them into SAP CPQ.

Product Types [page 103]


Product Types can be used in tracking quotation and order information. You can also separate subtotals
in the quote for each product type, which gives users the ability to use different discounts for different
product types.

Sequence Substitution [page 104]


Part numbers can become lengthy and sometimes need to be limited in length by the underlining
business systems (ERP). Because of this, there’s a need to serialize an entire part number. or a part of
it. Intelligent Serialization implies that a part number can be serialized while preserving the part
number logic; hence the same configuration always yields the same serial number.

Attaching IronPython Script on Button Attributes [page 105]


The purpose of this feature is to enable administrators to attach an IronPython script on button
attributes. This gives you the option to define a script that is executed when users click the attribute
button. This can include adding rows in the container, selecting attributes, as well as any other
operation associated with attributes.

Attribute Import [page 106]


In the Attribute Import page, you can export/import attributes in several ways.

Bulk Upload for Simple Product Translation [page 108]


SAP CPQ administrators can upload translations for many products using XLSX or XLS files. You can
export translations of all products or products that match entered criteria. Product fields and
languages that are selected on Product Translations Import page are displayed in the exported file.

Creating Favorites Permissions [page 109]


Create Favorites Permissions enables you to limit users who are permitted to share Favorites.

Custom Tables [page 110]

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 25
SAP CPQ allows the use of data from nonstandard tables during the configuration process. Adding,
editing, and deleting tables along with their entries is done through Custom Tables.

Guided Selling [page 114]


Guided Selling Product Search enables users to conduct an attribute-based search of products in
Catalog. This is done by narrowing a Catalog product list based on previously selected attributes and
characteristics.

Item Quantity and Attribute Line Item Quantity [page 116]


Quantity in SAP CPQ can be defined on item level, attribute level, and attribute value level.

Messages in Product Configuration [page 119]


Messages can be displayed to users either in the Configurator (for example, in attribute labels) or in the
Responder. They’re also used for enforcing product business rules because, if displayed, they can
render product incomplete.

Product Import [page 120]


The Product Import administrative section gives you the option to create products in an Excel
spreadsheet, then upload them into SAP CPQ.

Products 2.0 [page 126]


Creating and managing products on the Products 2.0 page is done in a similar way as in the original
Products page, which remains accessible in Setup. The differences are outlined in this topic.

Sequences [page 131]


Sequences are typically used in constructing part numbers where an entire part number or a portion of
a part number is serialized.

2.1 Attributes

Attributes are the building blocks of a product’s configuration. They can be used as a list of values selected by
the user, a calculation, a free input by the user, a display of text to the user, and many other ways.

An attribute is defined by a name, values, and type. User can create new attributes in a few ways. They can be
created individually through the Product Setup Wizard or through the Attribute administrative section. Both
allow creating one attribute at a time. If there’s need to create many attributes at a time, user can use the
Import Attribute administrative section (discussed in the Attribute Import [page 106] topic). All attributes
created in the system are available to all products. They’re then added to the product where further definition is
done, such as pricing, part numbers, and so on. An attribute can only be added to a product if it has been first
added to the category that the product is in. Only then it’s possible to use it in the product. If the attribute is
created through the Product Setup Wizard, though, then it’s added to the category and the product in the
single step of creating the attribute.

The Attributes section in the Setup allows managing all attributes that exist in the system. To access this
subsection select Attributes under the Products section. From this screen, attributes can be added, deleted,
edited, or copied. Clicking the Add New button brings up a blank attribute definition page:

● Attribute Name - Enter the name that describes the attribute


● Attribute Type - Specifies attribute data type and how the attribute is used. Choices are:
○ User Selection w/ Quantity Inputs for each Attribute Value – Used for an attribute with a list of values
that each have a quantity input field. This attribute type can only be used on attributes that are set as a
check box.

SAP CPQ Setup and Administration Guide


26 PUBLIC Product Administration
○ Autocomplete - sourced from a custom table - Used for attributes that retrieve values from a custom
table.
○ Autocomplete - sourced from a quote table - Used for attributes that retrieve values from a custom
table.
○ Container - Used for attributes that retrieve values from a container.
○ User Input or Computed - Date – Used for attributes that are set as a free input or calculation. The
result of the calculation or the value inputted by the user must be a date.
○ External Value – Used in attributes that retrieve a value from an external source or another product,
such as a child product.
○ User Selection – Most commonly used attribute type, this type is used for attributes that contain a list
of values that can be selected by the user. This type can also be used for calculations and other uses
for attributes if you prefer that it not be restricted to any specific data type.
○ User Input or Computed - Number – Used for attributes that are set as a free input or calculation. The
result of the calculation or the value inputted by the user must be a number.
○ User Selection with Attribute Quantity Input – Used for an attribute with a list values. There’s a quantity
input field for the entire attribute. This attribute type isn’t restricted to any specific display type.
○ User Input or Computed - String – Used for attributes that are set as a free input or calculation. The
result of the calculation or the value inputted by the user must be a string.
● Contains Personally Identifiable Information - All information that could potentially be used to identify an
individual should be flagged as PII [page 744].
● Sensitive Data - PII data can be flagged as sensitivesensitive [page 745] for an additional layer of
protection.
● Non Standard Value(s) – If Yes, then the attribute is considered nonstandard, i.e values for the Quantity
Attribute are entered by the administrator when defining the product. If you enter values here, then they’re
pre-entered for the attribute.
● Attribute Value – Value shown on screen to user.
● Attribute Value Code – Typically this code is an abbreviation that can be related to the attribute (display)
value. Most often used in configuration rules. This value is unseen by the user and is strictly used in the
definition of the product.
● Rank - This value is used to prepopulate value rank when an attribute is added to some product. The order
of available attribute values within the configurator depends on this value.

 Note

If you’re using the Value Code or Attribute Value in the rules of a product, any changes made to these values
in the attribute administration are made in the rules also. A change isn’t pushed to every area of the
product definition, though. So, it’s recommended that you always use the value code of an attribute value in
rules and calculations. Then any changes should be done only on the Attribute (Display) Value.

This initial screen has room for 5 values. More than 5 can be created by selecting Add More Values.

Controlling Attribute Access Rights via Iron Python [page 28]


Using Iron Python, you can define whether an attribute is read-only, editable, or hidden.

Attribute Container [page 29]


An attribute container is an attribute consisting of other attributes.

Attribute Quantity [page 41]


Attribute quantity and its values can be managed in multiple ways.

Attributes Spanning Multiple Columns [page 42]


This feature allows attributes to span across an entire row in product configuration.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 27
Import/Export Attribute Translations [page 43]
To translate multiple attributes via one Microsoft Excel file, you can export individual attributes or an
entire attribute type, update attribute translations in the resulting Microsoft Excel file, and import the
file back to SAP CPQ.

Attribute Values as Line Items [page 44]


The purpose of this feature is to enable easy way for admin to support use case where some attribute
values are marked as line items while some aren’t.

Autocomplete Attributes [page 44]


Autocomplete attributes allow you to search for attribute values by typing letters contained in the
attribute value, no matter if they’re located at the beginning or in the middle of the attribute value.

Creating Attributes [page 50]


Attributes are the building blocks of a product’s configuration. They can be used as a list of values
selected by the user, a calculation, a free input by the user, a display of text to the user, and many other
ways.

ItemQuantity Attribute [page 53]


A special attribute added to a products configuration named ItemQuantity can be used to control the
quantity of the main item in the cart.

2.1.1 Controlling Attribute Access Rights via Iron Python

Using Iron Python, you can define whether an attribute is read-only, editable, or hidden.

There are three levels of attribute accessibility:

● Read-only – attribute is disabled but it’s possible to set or change attribute value through Iron Python and
regular rules. In other words, the attribute behaves as if it was editable (in its default state), except that the
end user can’t interact with the attribute on the UI.
● Editable – attribute is enabled. This is default state of each attribute
● Hidden – attribute isn’t displayed in the Configurator.

This feature allows administrators to have attributes appear differently to various user types, or become read-
only once the quote reaches a certain status, or have a set of attributes that are read-only for certain user-
types, and so on. The Hidden option in Iron Python is an extension and override of Attribute Visibility
Restrictions that you can define in the Setup. Whatever you configure there’s reflected on the Hidden property
of the attribute, with the ability to be overridden by an Iron Python script.

Example 1

The snippet demonstrates how an Iron Python script can be used to check whether the particular attributes
should be made read-only based on the user-type. The script triggers when the configurator is entered to
configure the product. This

if User.UserType.Name == 'Customer':
Product.Attr("Interior Color").Access = AttributeAccess.ReadOnly
Product.Attr("Exterior Color").Access = AttributeAccess.ReadOnly

SAP CPQ Setup and Administration Guide


28 PUBLIC Product Administration
script checks if SAP CPQ is being accessed by a user that belongs to the user type "Customer". If this is true,
attributes “Interior Color” and “Exterior Color” become read-only. However, if the user doesn’t belong to the
“Customer” user-type, then all the attributes are enabled.

Example 2

In this example, the Iron Python script disables two attributes – “Interior Color” and “Exterior Color” only if the
quote status is Negotiation. The script triggers when the configurator is used to configure the product. When

if Quote is not None:


if Quote.OrderStatus.Name == "Negotiation":
Product.Attr("Interior Color").Access = AttributeAccess.ReadOnly
Product.Attr("Exterior Color").Access = AttributeAccess.ReadOnly

the quote gets its status changed to Negotiation, two attributes get disabled.

Example 3

This example demonstrates how administrators are able to update the attribute value even if the attribute is
marked as read-only. The underlying Iron Python script of the Update value button is as follows:

Product.Attr("Interior Color").Access = AttributeAccess.ReadOnly


Product.Attr("Exterior Color").Access = AttributeAccess.ReadOnly
myAttribute = Product.Attr("Exterior Color")
myAttribute.SelectValue("gray")

Clicking the button updates the attribute-value through scripting even though the attribute is read-only.

Related Information

Attributes [page 26]

2.1.2 Attribute Container

An attribute container is an attribute consisting of other attributes.

Rather than writing complex product rules where attributes need to be dynamically added to a configuration,
the administrator can use attribute containers which can be dynamically expanded, either by a set of attributes
or another product. A container has a table-like structure. Its columns are defined in attribute administration.
Its rows can be added and deleted in rules or manually during configuration. Each cell can have some value
according to its column definition.

Container Columns [page 30]


You define container columns through attribute administration.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 29
Container Rows [page 33]
Container rows are added or deleted during configuration, manually by user or by a product rule. In
administration, it’s possible to define minimum and maximum constraints and whether or not rows can
be added, deleted, or moved.

Container Paging [page 35]


Containers with a large number of rows can be divided in multiple pages.

Copying Multiple Rows [page 35]


You’re able to specify the number of row copies and to select which fields or columns are copied.

Example - Create Attribute Container [page 36]


This procedure demonstrates how to create an example attribute container.

Container Iron Python Events [page 37]


Four Iron Python events are available in attribute container setup. These events trigger when the
particular container action is performed.

Enable Collapsing and Expanding Containers in Responsive Design [page 37]


This procedure contains instructions on making container rows collapsible in responsive design.

Access Hidden Container Columns in Knockout Context in Responsive Design [page 39]
This feature allows access to information in hidden container columns in responsive design.

2.1.2.1 Container Columns

You define container columns through attribute administration.

To define a column, you need to define the following:

● column name
● whether the column is a stand-alone or an attribute
● display type - label, text box, check box, drop down list, list box...
● column total (optional)

When an attribute is referenced in a column with the display type Label, the attribute display value is visible in
the configurator.

Column total can be defined as:

● sum of its values


● average of its values
● total calculation formula - for example to make column total as a function of other column totals or
container properties.

Types of Columns

You’re allowed to define a container without any product and attribute. If this is the case, then its rows are just a
collection of cell values. For example: user defines a container with two columns ”Name” and ”Description”
both as text box stand alone columns. During configuration, you can enter a value in each row for both
columns.

SAP CPQ Setup and Administration Guide


30 PUBLIC Product Administration
Also, you can define a container without any product but with some attributes in columns. In this case, its rows
are collection of selected attribute values. If you plan to have some check box, drop down, or list displayed in
container cell, then it’s necessary to use attributes of the appropriate type for the particular cell. For example:
You can define a container with columns: ”Name” as stand-alone text box, and ”Voltage” as Voltage attribute
with 110 and 220 values in a dropdown list.

Finally, you can define a container with products. In this case, each container row represents a product.
Columns of such container are stand alone columns and product attributes. Its rows are union of cell values
and selected product attribute values. Such container can be marked as line item in the product - then all its
rows appear in the cart as child line items of the main item. For example: First you define several products then
create a container with columns as some of attributes used in those products. During configuration of such
container each row is a product, and the user is able to edit that product attribute in line of container row.

Container Column Calculation Formula

The column value can be calculated automatically with a specific formula. The label column formula is
evaluated each time, while other column type formulas are evaluated only once when a row is added.

In the following case: a user defines text box columns "First Name", "Last Name" and the label column "Full
Name" with the following calculation formula: <*CTX(MyContainer.CurrentRow.Column(First
Name).Get)*><*CTX(MyContainer.CurrentRow.Column(Last Name).Get)*>as well as another text
box column "Date Added" with the following calculation formula: <*CTX(Date)*>. The "Full Name" column
value is updated every time when "First Name" or "Last Name" column value is changed while "Date Added" is
calculated only once when a row is added.

Displaying Product Attributes in Container Columns

Depending on selected display option on product attribute details, the container column shows the selected
attribute value code (formula equivalent <*valuecode(attribute name)*>) or selected attribute display
value (formula equivalent <*value(attribute name)*>) where in case of attribute type User Input or
Computed - Date attribute display value gets validated against valid date string. Here is the list of attribute
display options that shows selected attribute value in container column:

● Button
● Display Only Text
● File Attachment
● Free Form exact match w. Otherwise option
● Free Form, Exact Match
● Free Form, Match lower
● Free Form, Match upper
● Free Form, Set Match lower
● Free Form, Set Match upper
● Free Input, no Matching
● Hidden calculated, Match lower
● Hidden calculated, Match upper

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 31
● Hidden, Calculated, no Matching

The rest of the attribute display options shows selected attribute value code.

Container Column Permissions

For each container column is possible to define permissions per user type group. Possible values are:

● Hidden
● Read Only
● Editable
● Required

This allows, for example to hide a column from users of some user type group, make a column read only, make
it required, and so on. Default permission for all user type groups is Editable. Choosing a value from All
permissions sets that value to all user type groups. In the configurator, if there's any row that has an unfilled
column that was marked as Required in the admin, it makes the whole container invalid. You can validate
container state with the <*CTX( Container(AttributeContainerName).IsValid )*> tag.

Container Column Sorting

Container columns can be sorted and viewed in the configurator in ascending and descending order. Column
sorting doesn’t affect the actual order on the quote. To sort a container column, click the column heading. An
arrow displays in the top-right corner of the column heading, showing whether column sorting is ascending or
descending. To switch between ascending and descending sort order, click the arrow. Numbers and strings
stored in a text field are sorted in the same way they’re sorted in Microsoft Excel spreadsheets.

Related Information

Attribute Container [page 29]


Attributes [page 26]

SAP CPQ Setup and Administration Guide


32 PUBLIC Product Administration
2.1.2.2 Container Rows

Container rows are added or deleted during configuration, manually by user or by a product rule. In
administration, it’s possible to define minimum and maximum constraints and whether or not rows can be
added, deleted, or moved.

Adding Rows to Container

When you set up the attribute container, choose more than one product that can be added to it, and the user
clicks to add a row during configuration, they’re introduced with the list of defined products that can be added.
Users must select one product per row. If there are no products in container or there’s just one, then you can
use a following tag in rules to add rows: Container(X).Rows.Add(2) (2 is the number of rows that are
added). On the other hand, if there’s more than one product in a container, following tag should be used in rules
for adding rows: Container(X).Product(A).Add(2) and Container(X).Product(B).Add(4) to add
two rows of product A, and four rows of product B in the container X.

Minimum and Maximum Number of Rows


It’s possible to define the minimum and maximum number of rows. In addition, user can also define the
minimum and maximum number of rows for a certain product. If the minimum constraint is violated - the
Delete row action isn't available. Similarly, if the maximum constraint is violated - the Add rows action isn't
available during configuration.

Validation Rules
User can also define validation rules that display appropriate messages to users if container is configured to
some invalid state. If validation condition evaluates to 1, it’s assumed that validation rule is broken and its
message is displayed below the container.

Container Actions
In administration, one can define actions that user can execute on container rows - add, delete, copy, reorder,
edit, and so on.

Properties
Container can also have one or more properties. If a calculation formula for a property is defined, it’s evaluated
on each configuration modification. On the other hand, user can leave calculation formula empty and set
container property from parent product rule with CTX tag. Container is defined globally so its execution
product context is unknown at design time. Hence, the user shouldn’t reference some parent attributes values
directly from container but use properties instead. From the parent, product set a property from a rule, and use
that property inside the container. So, properties should be used as data container for interaction between
container and parent product.

Automatic Value Propagation


If a product contains one or more attribute containers, and beside that contains an attribute that is also
contained within the attribute container, then it’s possible to mark that attribute with Transfer to Container. In
this case, when user selects a value for that attribute during configuration, then the selected value are
automatically transferred to all containers in that product that contains that attribute. In other words, a value

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 33
selected in the parent product is selected in all container rows products. For example, the user can have a
product “System” that has attributes “Voltage” and attribute container “Elements” that can have product A, B,
and C, which all have “Voltage” attribute too. If the user marks “Voltage” attribute in “System” product as
“Transfer to container”, during configuration all rows in the container (products A, B, C) has the same “Voltage”
attribute value as in the “System” parent product.

Propagation of attribute values from parent product to child container products may result in different
container state (totals, properties, and so on) which may further trigger a new rule execution in the parent
product, which leads to another propagation of parent attribute values to containers. This loop execution may
decrease performance, especially if there’s more than one container in the parent product, and is limited only
to several repetitions. Therefore, avoid any dependency loops between parent product and child container
products if you’re using Transfer to container option.

Edit Row
If a container uses products, then the container's row represents that product. By editing a container cell,
which is a product attribute in the configurator, the user actually edits the row product attribute inline from the
container. If the Edit row action is available for that container, the user is able to open the configurator for the
row product and configure it same way as if it was opened from the catalog. This allows the user to edit more
attributes, not just those visible from the container columns. Once a user finishes configuration of that
container row and clicks save button, they’re returned back to the parent product and the container columns
for that row are refreshed with the newly configured attributes. During configuration of a container row in its
separate configurator, rules of the parent product are executed along with rules of the row product.

Container is used to present results of product search


Instead of being able to only use containers flagged as Container will be used to present results of product
search in System or Collection type products, these containers are now also able to work in configurable
products and add their rows as line items to product configuration without affecting anything else. Each
container row in a Container will be used to present results of product search container contains a column,
which carries a product part number. This column is known to container, and the container can obtain a
product ID for this part number.

The user can select, de-select row, add product to the quote or edit existing item. Typically, there’s a checkbox
on each row, which serves for user to select this row – meaning they would like to add it to the cart. Once the
row is selected, container knows the product ID of this row, because it’s looked up based on part number. To
enable users to search for and add simple products in configurator, based on their part number, you should go
to the Columns tab in Attribute and add two new columns. When adding the first column, set Text Box as its
Display type and set Product Part Number as its Column Type. When adding the second column, set Stand
Alone Column as its Column Type and set Selector Check Box as its Display Type.

When the user selects one or several rows in the container, and clicks Add To Quote:

● If a product is marked as System and attribute container is marked as a line item, SAP CPQ adds line items
for each selected product (found based on part number). Attribute container itself isn't added to the quote
as line item. When user clicks Edit on any of these products in the quote, SAP CPQ takes the user to the
parent product
● If a product is marked as Collection and attribute container is marked as line item, SAP CPQ adds line
items for each selected product (found based on part number). Attribute container itself isn't added to the
quote as line item. Users are able to delete separate items from the quote.
● If a product is marked as Configurable and attribute container is marked as line item, SAP CPQ adds line
items for each selected product (found based on part number). Attribute container itself isn't added to the
quote as line item. When user clicks on Edit for main item, SAP CPQ takes the user to the product
configuration page.

SAP CPQ Setup and Administration Guide


34 PUBLIC Product Administration
Related Information

Attribute Container [page 29]


Attributes [page 26]

2.1.2.3 Container Paging

Containers with a large number of rows can be divided in multiple pages.

Container paging provides the ability not to show all rows for that container at once, but subdivide them into
pages instead. Via the checkbox Enable Paging for Container on particular container (if it’s checked) and the
dropdown menu Default number of rows per container page, that are in the Attributes section in the Setup, you
define if paging is available and how many rows are available per container page by default. If the checkbox
Enable Paging for Container isn’t checked, then no paging is available. From the dropdown menu Default
number of rows per container page, you can choose how many rows are preselected by default per container
page. Available rows per page are 5, 10, 20, 50 or 100. Paging is located at the bottom of the container page. If
the container contains a selectable column (type Selector Check Boxor Selector Radio Button), then 2 radio
buttons are shown on the bottom (Show All and Show Selected), and the user is able to choose which rows are
shown between these two selections.

On the user side, in the Show itemsdropdown menu, the user can change the default preselection of the
number of container rows to be shown per page. This change will be applied on the administrator side as well,
so the next time the user comes to this product they changed, the preselected value for items per page is
selected.

Related Information

Attribute Container [page 29]


Attributes [page 26]

2.1.2.4 Copying Multiple Rows

You’re able to specify the number of row copies and to select which fields or columns are copied.

To turn on this functionality, the administrator can check the checkbox Allow multiple copy in container setup.

On the user side, when the user clicks Copy row, a pop-up with the following fields appears:

● Number of copies - input quantity field


This field is populated with the number 1 by default. The user can override this number by typing the
desired number of row copies.
● Fields that will be copied – checkboxes with all container rows

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 35
After clicking Copy, the defined number of rows is added to the container. By default, checkboxes
corresponding to container columns are selected. The user can select or deselect the column as desired.
Unchecked fields are empty when rows are copied. These fields can be populated by the user afterwards.

Related Information

Attribute Container [page 29]


Attributes [page 26]

2.1.2.5 Example - Create Attribute Container

This procedure demonstrates how to create an example attribute container.

Procedure

1. Go to Setup Product Catalog Attributes Add new .


2. From the Attribute Type dropdown list, select Container.

You can find more information on how to create an attribute in Creating Attributes [page 50].
3. Define the following columns:

○ Define a column ”Price A” that is a stand-alone column displayed as text box.


○ Define a column ”Price B” that is a stand-alone column displayed as text box.
○ Define a column ”Name” that is a stand-alone column displayed as text box.
○ Define a column ”Memory” that is an attribute “Memory” displayed as dropdown list.
○ Define a column ”Amount” that is stand alone column displayed as text box. Also set its total as sum.
This way all values in this column are summed and the sum is displayed in the column footer.
○ Define a column “X” with the following total formula:

<*eval( <*CTX(MyContainer.Total(Price A))*> +


<*CTX(MyContainer.Total(Price B))*> )*>

This formula sums Total of column named Price A and Total of column named Price B.
4. Click Save.

You’ve created an example container attribute.

Related Information

Attribute Container [page 29]


Attributes [page 26]

SAP CPQ Setup and Administration Guide


36 PUBLIC Product Administration
2.1.2.6 Container Iron Python Events

Four Iron Python events are available in attribute container setup. These events trigger when the particular
container action is performed.

The following events exist:

● onRowCopied - triggers when the existing row is copied.


● onRowDeleted - triggers when row is deleted from the container.
● onRowAdded - triggers when row is added to the container.
● onCellEdited - triggers when cell content is updated.

You can set actions for these events in attribute containers in the Setup.

These events trigger only on a user interaction. If the container is manipulated through another script (such as
adding a new row through another Iron Python script), these events don’t trigger. Having these events exposed
enables you to attach the Iron Python script to them. It's useful to have these events available in case you want
to make decisions during container manipulation. Each event has a list of available arguments and particular
context. For more information on available context and arguments, refer to the Scripting Help .

Related Information

Attribute Container [page 29]


Attributes [page 26]

2.1.2.7 Enable Collapsing and Expanding Containers in


Responsive Design

This procedure contains instructions on making container rows collapsible in responsive design.

Context

In SAP CPQ responsive design, container rows aren’t collapsible by default. On the other hand, SAP CPQ
classic design uses XSLT files to render the page, making it’s easy to modify the XSLT file and enable the
collapse and expand functionality. While there’s no system option to enable this feature in responsive design,
you can enable it via customization.

Procedure

1. Go to Setup UI Design Responsive Templates and click Add New.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 37
This way you create a new custom template that you can use instead of the default one.
2. In the dropdown list,Page select Configurator.
3. In the dropdown list,Template select Editor/Container/ContainerTemplate.

The default template loads in the Default Template box.


4. Click Copy default template to load the copy of the template into another box, where you can make
customizations (javascript, css, html, knockout.js).
5. Enter a name for the custom template.
6. Select Default.

SAP CPQ is now instructed to render containers using the custom template instead of the standard one.
7. Customize the custom template the following way:
a. Enter this code at the beginning of the template:

<style>
.label-inline label{
display: inline-block !important;
}
</style>
<script type="text/javascript">
var expandingContainersModel = {};
cpq.ready(function() {
expandingContainersModel = {
expandedContainers: ko.observableArray([]),
isExpanded: function(id) {
return this.expandedContainers.indexOf(id) > -1;
},
expandCollapse: function(id) {
if (this.isExpanded(id)) {
for (var i = this.expandedContainers().length - 1; i >= 0;
i--) {
if (this.expandedContainers()[i] === id) {
this.expandedContainers.splice(i, 1);
}
}
} else {
this.expandedContainers.push(id);
}
}
};
});
</script>

This script tag creates a global model expandingContainersModel, which has one observable array
where expanded containers IDs are stored. Since all containers are initially collapsed, this array is
empty when page is loaded.
b. Enter this code at the beginning of the template:

@*Label*@
<!-- ko template: { name: 'LabelTemplate' } -->
<!-- /ko -->

c. Replace it with this code:

<div class="label-inline" data-bind="click:


expandingContainersModel.expandCollapse($data.id()), visible:
expandingContainersModel.isExpanded($data.id())">
<i class="fa fa-arrow-circle-down"></i>
@*Label*@
<!-- ko template: { name: 'LabelTemplate' } -->

SAP CPQ Setup and Administration Guide


38 PUBLIC Product Administration
<!-- /ko -->
</div>
<div class="label-inline" data-bind="click:
expandingContainersModel.expandCollapse($data.id()), visible: !
expandingContainersModel.isExpanded($data.id())">
<i class="fa fa-arrow-circle-right"></i>
@*Label*@
<!-- ko template: { name: 'LabelTemplate' } -->
<!-- /ko -->
</div>

This code adds expand/collapse icons next to the container label and binds container label to the
collapse/expand action. You can modify code if you want to position arrows differently or exclude label
click bindings.
d. Locate the script template with the ID ContainerTemplate and surround it with this div:

<div data-bind="visible:
expandingContainersModel.isExpanded($data.id())"></div>

This part of code hides or shows the container body based on your previous action (whether you
clicked to expand or to collapse the container).
e. Click Save.

To see the expand and collapse feature in the output, open the configurator and configure the product
that has containers. Notice that container's expand and collapse state is preserved even if you move
from one tab to another.

Related Information

Attribute Container [page 29]


Attributes [page 26]

2.1.2.8 Access Hidden Container Columns in Knockout


Context in Responsive Design

This feature allows access to information in hidden container columns in responsive design.

Prerequisites

A container attribute is defined. Other than standard columns, this container attribute also contains a hidden
column. By default, this column isn’t served through server response (JSON file), therefore it isn’t available in
the knockout context.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 39
Context

Any container column can be hidden. It’s done when an administrator wants to store some information to be
used in calculations but at the same time doesn’t want to display it to the end user. Before responsive design,
administrators were able to access this information through Iron Python scripting, but in responsive design,
due to the optimization of HTTP requests, this information isn’t served in the server’s response. The result is
that administrators aren’t able to access these pieces of information to include it in any kind of data
manipulation or in calculations. However, this feature allows administrator to access hidden container columns
regardless.

Procedure

1. Go to Setup Product Catalog Attributes .


2. Find the container attribute and click Edit.
3. Open the Columns tab and click Edit next to the hidden column.
4. Enable the option Always include in KO context under the calculation formula box. Always check this option
when you want to make the data from the hidden column available in knockout context.

From now on, data is sent through JASON file via the HTTP response and is therefore available to the SAP
CPQ administrator.

SAP CPQ Setup and Administration Guide


40 PUBLIC Product Administration
The hiddenColumns array contains a list of all hidden columns that were marked to be available in the
knockout context. All values are contained within the hiddenValues array, and for each column, three
properties are available to the administrator:
○ columnId – ID of the hidden column.
○ headerLabel – label of the hidden column.
○ value – value of the hidden column.

Related Information

Attribute Container [page 29]


Attributes [page 26]

2.1.3 Attribute Quantity


Attribute quantity and its values can be managed in multiple ways.

Quantity can be entered by a user for an attribute at the attribute level, or at the attribute value level. This is
determined by what the attribute is set as at in the Attribute administration section. Attribute quantity can be

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 41
changed by the user in the configuration if the attribute type is either User Selection w/ Quantity Inputs for each
Attribute Value or User Selection w/ Attribute Quantity Input. If User Selection w/ Quantity Inputs for each
Attribute Value is selected as the attribute type, then in the configuration, the user is able to select the quantity
of each attribute value that is selected. So, if multiple attribute values are selected, the user is able to select the
quantity for each one individually. Attributes set as User Selection w/ Quantity Inputs for each Attribute Value
can only be check boxes.

If User Selection w/ Attribute Quantity Input is selected, then in the configuration the user is only able to select
the quantity of the attribute not the quantity of each individual attribute value. If multiple attribute values are
selected, then the quantity of each attribute value changes to equal the quantity of the attribute. With User
Selection w/ Attribute Quantity Input, the Can Enter Quantity function can’t be set.

If the attribute type is User Selection, then the user isn’t able to change attribute quantity in the configuration.
The attribute’s quantity is based on how it either inherits the main item’s quantity or the value entered in the
Attribute Quantity field depending on how you have the attribute set up on the attribute definition page.

Attribute type can be changed for existing attributes in the Attributes administration section. It’s also set when
creating a new attribute in the Product Setup Wizard (Step 2 [page 59]).

 Note

Attribute quantity can only be entered after a product that is already selected. The default attribute
quantity can’t be edited globally.

Related Information

Attributes [page 26]

2.1.4 Attributes Spanning Multiple Columns

This feature allows attributes to span across an entire row in product configuration.

Two primary use cases exist:

● header instructions above a group of attributes that need to span across the entire configurator.
● containers that have many columns and need to span across the entire configurator.

When editing a product, in Attributes there’s a checkbox Spans across entire row in configuration (which isn’t
selected by default). When the configuration layout is displayed when editing a product, if the checkbox is
selected, next to the attribute a tip (spans entire row) is displayed.

Related Information

Attribute Container [page 29]


Attributes [page 26]

SAP CPQ Setup and Administration Guide


42 PUBLIC Product Administration
2.1.5 Import/Export Attribute Translations

To translate multiple attributes via one Microsoft Excel file, you can export individual attributes or an entire
attribute type, update attribute translations in the resulting Microsoft Excel file, and import the file back to SAP
CPQ.

Procedure

1. Go to Import/Export Attribute Translations Export/Import .


2. In Step 1, select the attributes to export.
○ Select by Attribute Name - enter a search term or specific attribute names. All attributes that match
the search term are exported.
○ Select by Attribute Type - select an attribute type and pertaining attributes are exported.
Combining two search queries is also possible (for example, attributes with Color in their name that
pertain to the attribute type Container).
3. In Step 2, select the languages to export.
4. Click one of these export buttons:

○ Export Attributes Translation - exports translations for all attribute types except Container.
○ Export Containers Translation - exports translations only for Container attributes.

A Microsoft Excel file is downloaded to your computer. Attribute IDs, default names, and translations in the
selected languages, if defined, are displayed in the file. Also, a separate sheet contains attribute values with
corresponding translations. If Container attributes are exported, the file contains separate sheets for
translating container columns, properties, and validation messages.
5. Update attribute translations in the dedicated columns.
6. In Step 3, upload the Microsoft Excel file. The button on the right is for uploading files with container
attribute translations, and the button on the left for files with all other attribute types.

a. Click .
b. Browse for your file.

The name of the selected file shows in the bar.


c. Click Apply Template.

A success message displays.

Otherwise, if the import file contains invalid records, an error message pops up.
d. Click Import report.

Invalid records are marked in red and errors are described in the Error column.

When you or your underlying users select a language in SAP CPQ, if translations were imported for the
attributes, the system displays them in the Catalog.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 43
Related Information

Attributes [page 26]

2.1.6 Attribute Values as Line Items

The purpose of this feature is to enable easy way for admin to support use case where some attribute values
are marked as line items while some aren’t.

If an attribute is marked as line item, for each value there’s a flag defining whether this value is displayed as line
item when it’s selected and when its extended price (Price * Quantity) is zero.

Price is calculated for particular attribute value.

Quantity can be either computed (inherited from attribute) or entered by user (if user can enter quantity for
this attribute).

Setup Adjustments

In Setup General Application Parameters Configurator , set the application parameter Allow attribute
value to be listed as line item even if its extended price is zero to TRUE.

In the Product Setup Wizard [page 56], tab 3, there’s a column List as line item when price is zero (third in the
row – next to Value Code). When the attribute isn’t marked as line item, this column isn’t displayed.

If the value of application parameter Allow attribute value to be listed as line item even if its extended price is
zero (default behavior) is TRUE, checkboxes are selected for each attribute value when setting attribute as line
item. If the parameter value is FALSE, checkboxes aren't selected. The administrator is able to override the
parameter value for each checkbox.

Related Information

Attributes [page 26]

2.1.7 Autocomplete Attributes

Autocomplete attributes allow you to search for attribute values by typing letters contained in the attribute
value, no matter if they’re located at the beginning or in the middle of the attribute value.

As you start typing, SAP CPQ searches through a custom table that contains the particular attribute values.
That narrows a list of results against what you typed. In the following sections, there are examples of how to set
up an attribute of this type and how to use it in the configurator.

SAP CPQ Setup and Administration Guide


44 PUBLIC Product Administration
This attribute type requires a custom table [page 110] as the source of attribute values. As soon as you define
a custom table, you can proceed with the creation of a new autocomplete attribute.

You’re free to select one or more columns from a custom table as searchable columns. Additionally, you can
define the display label of the column. Select a column and enter the label in the Display Label field. The label is
automatically be appended to the original column name in the Selected Searchable Columns list. This feature
enables administrators to create user-friendly display labels for users while keeping the original column name
in the Setup. The labels display in the configurator in autocomplete attributes, and on quotes in quote custom
fields and quote item custom fields that use attributes sourced from custom tables.

If you select the Show Only Distinct Values checkbox, the system doesn’t retrieve duplicate values from a
column and only different values are displayed to users. This method is applicable only when the same column
is selected as the display and the value code column. Also, you can select one or more columns whose values
are displayed in search box.

For more details on how to craft your autocomplete attribute, consider the examples 1 and 2. Example 1
assumes that you define only one searchable column and display column. In example 2, you define a new
autocomplete attribute with two searchable and display columns.

 Note

If custom fields or item custom fields on the quote are using autocomplete attributes, you can set their
value via scripting by using the ValueCode property. The value of the custom field is obtained from the
Value Code column in the custom table or quote table in the definition of the autocomplete attribute. If the
value you want to set is found only once in the Value Code column, that row is selected as the source of
the value of the custom field. If that value is found multiple times or is not found in the column, the custom
field is not changed, and an error message displays. If an empty string is passed through Iron Python, the
value of the custom field is empty.

Prefiltering Autocomplete Attribute Values

Prefiltering allows you to reduce the number of provided attribute values based on the condition you’ve defined
previously. Since autocomplete attribute is sourced from the custom table, there are situations when you have
a large number of attribute values stored in the custom table that you want to prefilter before they’re displayed
to the user.

You can use simple conditions that are evaluated before your search input. This way you narrow down the
number of attribute values before your search input is treated, which improves configurator performance. The
syntax for condition is the same as SQL syntax (for example, yourColumn = ‘34’ and yourAnotherColumn
< 3000).

You can make this precondition as complex as you can imagine and model using the standard SAP CPQ
formula builder. Look at example 3 and example 4 for more information.

Example 1 – Define Autocomplete Attribute with Single Searchable and Display Column [page 46]
This example demonstrates how to create an autocomplete attribute with only one searchable column
and display column.

Example 2 – Define Autocomplete Attribute with Two Searchable and Display Columns [page 47]
In this example, you create a new custom table and new autocomplete attribute to show that you can
select more columns to search and display values during autocomplete search on the attribute.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 45
Example 3 - Define Simple Condition [page 48]
This procedure shows how to define a simple condition for prefiltering autocomplete attribute values.

Example 4 - Define Complex Condition [page 48]


This procedure shows how to define a complex condition for prefiltering autocomplete attribute values.

Related Information

Attributes [page 26]

2.1.7.1 Example 1 – Define Autocomplete Attribute with


Single Searchable and Display Column

This example demonstrates how to create an autocomplete attribute with only one searchable column and
display column.

Procedure

1. Go to Setup Product Catalog Custom Tables .


2. Define a new custom table with at least one column where you can enter attribute values.

3. Go to Setup Product Catalog Attributes .


4. Click Add new to create a new attribute.
5. Select Auto complete - sourced from a custom table.

You get a screen where you select a custom table, then a custom table column where attribute values are
stored, display columns and column that is displayed as value code of selected attribute value in
configurator. That is all you need to do in order to create autocomplete attribute. Now when you configure
a product that has an autocomplete attribute, you’re allowed to type attribute value and select among
values that match your input.

Related Information

Autocomplete Attributes [page 44]


Attributes [page 26]

SAP CPQ Setup and Administration Guide


46 PUBLIC Product Administration
2.1.7.2 Example 2 – Define Autocomplete Attribute with
Two Searchable and Display Columns

In this example, you create a new custom table and new autocomplete attribute to show that you can select
more columns to search and display values during autocomplete search on the attribute.

Context

You can check the previous example for steps for creating a custom table and new attribute. Assuming that
you’re familiar with the creation process, here is what you define.

Procedure

1. Define custom table named customer_custom_table that has next columns: FirstName, LastName,
Email, Address, City, Country, Phone. Insert 3 rows of sample data into your custom table.
2. Define a new autocomplete attribute.
3. Edit the attribute.
4. Similar to example 1, select columns in the left box and copy them to the right box titled Selected
Searchable Columns.

You’re able to select multiple columns.


5. Repeat steps for the remaining two boxes named Selected Display Columns and Selected Column Value
Code.
6. Click Save.

Now, once you in the configurator you’re able to enter one value (first name, last name or city), or any
combination of three, separated with space and comma. SAP CPQ searches through your custom table
and displays the results that match in the drop box. In some cases, SAP CPQ can display only First Name
and Last Name as a search result. This behavior takes place if you selected those two fields while defining
the autocomplete attribute.

Once you select some value, SAP CPQ displays the selected value in the configurator. If you selected the
field city whose selected value code we wanted to be displayed, SAP CPQ displays the name of the city.

Related Information

Autocomplete Attributes [page 44]


Attributes [page 26]

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 47
2.1.7.3 Example 3 - Define Simple Condition

This procedure shows how to define a simple condition for prefiltering autocomplete attribute values.

Context

Assuming that we have the autocomplete attribute interior color defined and attached to the product, we
can define a simple condition that narrows down the list of available values for the attribute. Our attribute
interior color is sourced from the custom table that holds a list of next 5 available colors: beige, white,
black, gray, brown. For some reason, you want to display only colors that start with the “b” letter.

Procedure

1. Define an autocomplete attribute as shown in Example 1.


2. Edit the attribute.
3. In the field Preselection Filter, enter color like 'b%'.

Here, you used the SQL syntax that matches the string that begins with the “b” letter.
4. Click Save.

Related Information

Autocomplete Attributes [page 44]


Attributes [page 26]

2.1.7.4 Example 4 - Define Complex Condition

This procedure shows how to define a complex condition for prefiltering autocomplete attribute values.

Context

Assume that you have a product Loan with two attributes: Loan and Loan Term.

Attribute Loan is the autocomplete attribute that is sourced from the custom table Loan custom table that
holds a list of 10 different loan offers (based on loan amount):

SAP CPQ Setup and Administration Guide


48 PUBLIC Product Administration
Loan name Loan range Category

Loan starter 1 Up to 10000.00 eur 1

Loan starter 2 From 10001.00 eur to 20000.00 eur 1

Loan starter 3 From 20001.00 eur to 30000.00 eur 1

Loan medium 1 From 30001.00 eur to 40000.00 eur 2

Loan medium 2 From 40001.00 eur to 50000.00 eur 2

Loan medium 3 From 50001.00 eur to 60000.00 eur 2

Loan senior 1 From 60001.00 eur to 70000.00 eur 3

Loan senior 2 From 70001.00 eur to 80000.00 eur 3

Loan expert 1 From 80001.00 eur to 90000.00 eur 4

Loan expert 2 From 90001.00 eur to 100000.00 eur 4

Attribute Loan term holds a list of different loan terms that user can choose from. Based on the loan term,
you can preselect the loan offers that you want to offer. Attribute values (Loan Term offers) are: 5 years, 10
years, 15 years, and 20 years.

Procedure

1. Edit the autocomplete attribute Loan in the Setup.


2. Enter the following formula in the Preselection Filter field:

3. Click Save.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 49
The following logic is now applied: if a user chooses a loan term of 5 years, only loans that belong to the
category 1 are available to the user. If the user chose a loan term of 15 years, then loans from category 1
through category 3 are available, and so on.
4. Open the item Loanin the Catalog.

When you are in the configurator, based on what option you’ve selected for the loan term, the list of
available options on Loan attribute gets filtered.

Related Information

Autocomplete Attributes [page 44]


Attributes [page 26]

2.1.8 Creating Attributes

Attributes are the building blocks of a product’s configuration. They can be used as a list of values selected by
the user, a calculation, a free input by the user, a display of text to the user, and many other ways.

An attribute is defined by a name, values, and type. User can create new attributes in a few ways. They can be
created individually through the Product Setup Wizard or through the Attribute administrative section. Both
allow creating one attribute at a time. If there’s need to create many attributes at a time, user can use the
Import Attribute administrative section (discussed in the Attribute Import [page 106] topic). All attributes
created in the system are available to all products. They’re then added to the product where further definition is
done, such as pricing, part numbers, and so on. An attribute can only be added to a product if it has been first
added to the category that the product is in. Only then it’s possible to use it in the product.

 Note

Although this is default behavior, within PSW [page 56], administrator can choose between the following
options:

● Show attributes used by this product


● Show attributes from category...
● Show all attributes

If the attribute is created through the Product Setup Wizard, though, then it is added to the category and the
product in the single step of creating the attribute.

The Attribute administration section allows managing all attributes that exist in the system. To access this
section select the Attributes link under the Products admin menu. This displays the attribute administration
page. From this screen attributes can be added, copied, deleted, edited or translated. Clicking the Add New
button brings up a blank attribute definition page:

● Attribute Name - Enter the name that describes the attribute


● Attribute Type - Specifies attribute data type and how the attribute will be used. Choices are:
○ User Selection w/ Quantity Inputs for each Attribute Value – Used for an attribute with a list of values
that each have a quantity input field. This attribute type can only be used on attributes that are set as a
check box.

SAP CPQ Setup and Administration Guide


50 PUBLIC Product Administration
○ User Input or Computed - Date – Used for attributes that will be set as a free input or calculation. The
result of the calculation or the value inputted by the user must be a date.
○ External Value – Used in attributes that retrieve a value from an external source or another product,
such as a child product.
○ User Selection – Most commonly used attribute type, this type is used for attributes that contain a list
of values that will be selected by the user. This type can also be used for calculations and other uses for
attributes if you prefer that it not be restricted to any specific data type.
○ User Input or Computed - Number – Used for attributes that will be set as a free input or calculation.
The result of the calculation or the value inputted by the user must be a number.
○ User Selection w/ Attribute Quantity Input – Used for an attribute with a list values. There will be a
quantity input field for the entire attribute. This attribute type is not restricted to any specific display
type.
○ User Input or Computed - String – Used for attributes that will be set as a free input or calculation. The
result of the calculation or the value inputted by the user must be a string.
○ Attribute Container [page 29]
● Contains Personally Identifiable Information - All information that could potentially be used to identify an
individual should be flagged as PII.
● Sensitive Data - PII data can be flagged as sensitive [page 745] for an additional layer of protection.
● Attribute Value – Value shown on screen to user.
● Attribute Value Code – Typically this is an abbreviation that can be related to the attribute (display) value.
Most often used in configuration rules. This value is usually unseen by the user and is strictly used in the
definition of the product.

 Note

If Value Code or Attribute Value is used in the rules of a product, any changes made to these values in
the attribute administration will be made in the rules also. A change is not pushed to every area of the
product definition, though. So it is recommended that user always use the Value Code of an attribute
value in rules and calculations. Then any changes should be done only on the Attribute (Display) Value.

● Rank - This value is used to prepopulate value rank when an attribute is added to some product. The order
of available attribute values within the configurator depends on this value.
● Delete - If the value can be deleted a check-box will be displayed.
● Referenced Product - Referenced product name, as read-only text, will be displayed. There will be a Remove
icon near the referenced product name. When it is pressed, link between attribute value and referenced
product will be deleted from database. Connection will not be broken for attribute values that have been so
far connected to products.
● Add Values Manually - When this button is pressed, new pop-up is opened with 5 new empty attribute
values (Attribute Value, Attribute Value Code and Rank). There will be a button Add Rows at the bottom of
the table. When user clicks on Add Rows, 5 new rows will be added.
● Add Products as Values - When pressed, a new pop-up table with the following columns will be opened:
Product Name, Part Number, Category, Description and Active (values for this column are True/False).
User will be able to select several products – next to each product there will be a check box. For each
selected product, new attribute value will be added using product name as 'display value' and product part
number as 'value code'.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 51
External ID

External ID in Attributes Administration allows administrators to create one more attribute identifier
independent of SAP CPQ-specific identifiers. The identifier can be contingent on the identification system used
in the client’s internal software. In other words, the External ID field will be populated with the logic from the
client’s external system. Once a new attribute has been created in SAP CPQ a system administrator is able to
populate the Attribute External ID.

Things to know about external ID:

● It is not a required field.


● The value in this field doesn’t have to be unique. This means that there can be more than two attributes in
the system with the same Attribute External ID value.
● The value of this field can be changed only in attribute administration.
● This field is not present when an attribute is administered in a certain product.
● It is not possible to access the value of this field with CTX tags such as <*AttributeExetrnalID*>.
● Having two or many attributes with the same Attribute External ID value in one configuration is matter of
product model. When this happens, the product administrator remodels a product attribute in order to
have unique external IDs per product.
● SAP CPQ allows having two or many attributes with the same external ID value in one product. SSAP CPQ
does not check for duplicates since this field is populated with logic from an external system.
● Each attribute can have external ID regardless of attribute’s type.
● Attribute External ID value is shown on the product attributes page.

This information will help out the administrators easily find if Attribute External ID duplicates exist in a single
product configuration.

Creating Attribute in Product Administration

Once the new attribute has been created in Product Administration the administrator can to populate the
Attribute External ID field.

Attribute Import

When attributes are created through SAP CPQ import functionaly the system administrator has the possibility
to fill the Attribute External ID. Attribute import template is expanded through a new column, Attribute External
ID. This column must be placed after the Attribute name column.

Other important points about the external ID:

● When attributes are imported through Product import functionality, Attribute External ID field is not
present in the product import template.
● When products are deployed from one SAP CPQ environment to the other, Attribute External ID field will be
sent as well.
● When an attribute is created via Simple product administration API, attribute field Attribute
External ID will be available on API call.
● To execute the activity described above, a new child node: <ExternalID> will be added to the
<Attribute> input XML node. The full XPATH is as follows: Products/Product/Attributes/
Attribute/ExternalID.

SAP CPQ Setup and Administration Guide


52 PUBLIC Product Administration
Related Information

Attributes [page 26]

2.1.9 ItemQuantity Attribute

A special attribute added to a products configuration named ItemQuantity can be used to control the quantity
of the main item in the cart.

The system looks specifically for the attribute named “ItemQuantity”. This controls not only the main item, but
if any pricing schemes are attached to it, then prices in the cart are affected also. There are a few different ways
that you can use the ItemQuantity attribute:

● You can expose the attribute to the user so that they can pick their quantity, which is then reflected in the
cart. In this situation, you would likely not allow the users to edit the quantity of the main item in the cart.
Quantity for the product would be handled within the configuration.
● Calculate ItemQuantity as a hidden attribute, which then is reflected in the cart. ItemQuantity in this
situation would be based on selections made from the user.
● Calculate pricing base on ItemQuantity, then allow users to edit the quantity in the cart. This situation is
ideal for products that offer discounts when higher quantities are purchased. For example, a product can
cost $5 when buying 1, $9 when buying two, or $13 when buying three. If a user adds the product to the
cart with a quantity of 1, the price is $5. If when in the cart they change the quantity to 2, then the system
passes that new quantity back into the configuration through the ItemQuantity attribute. Because pricing is
based off this attribute, the price of the product changes accordingly.

Related Information

Attributes [page 26]

2.2 Products

The Products administrative section allows setting up new and editing the existing products.

Accessing this administrative section from the Products administrator menu displays a list of all existing
products in the system. Products can be seen in two views: by using Categories and by using Product Table. You
can toggle between the two views by clicking these buttons.

 Note

In Setup Product Catalog Products or Products 2.0, products obtained via synchronization with
SAP ERP and SAP Variant Configuration and Pricing have the value Yes in the column Synced from Back
Office. The column Synced from Back Office is visible only when SAP CPQ is integrated with a back-office
application, such as SAP ERP.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 53
Product definition in SAP CPQ can be done in two ways: Product Setup WizardProduct Editor [page 56] and
the Product ImportProduct Import [page 120] section. The Product Setup Wizard can be accessed by clicking
Add New from the Products administrative section. In addition, you can edit the existing products in the wizard
by clicking the Edit button from the Products list.

If you select a product, or click Add New, the Add New Product page displays. This page allows you to access
administrative areas such as Product Definition, Product Attributes, Configuration Layout, Rules, and Scripts.

Products can be defined in the Product Setup Wizard with four different configurations: Simple, Configurable,
Collection of Configurable Products, System (List) of Configurable Products, and Parent/Child System (List) of
Configurable Products. Simple and Configurable apply to single products, while Collection of Configurable
Products, Parent/Child System (List) of Configurable Products and System (List) of Configurable Products allow
you to configure one or more configurable and simple products simultaneously. Upon configuration, one or
more peer products are simultaneously added to a quote. For more information on Collection of Configurable
Products and System (List) of Configurable Products, see Product Display Types [page 84].

Product types:

● Simple - A simple product is one that can have attributes assigned to it, but they can't be configured.
Because of nonexisting configuration of attributes, users can add the product to a quote directly from
Catalog. In addition to defining simple products using the Product Setup Wizard, simple products can be
imported from Microsoft Excel.
● Configurable - Configurable products have attributes associated with them and they need to be configured
before being added to a quote. This is generally the standard configuration type used in the system. Note
that the quote contains a System (List) of Configurable Products, and that its default behavior is as follows:
if you delete one item from the system the entire system is deleted as well.
● Collection of Configurable Products - Each included product can have its own attributes and each can be
independently changed or reconfigured.
● System (List) of Configurable Products - Each product can have its own attributes, but added products
can't be independently changed or reconfigured. The entire system needs to be changed or reconfigured.
● Parent/Child System (List) of Configurable Products - A child product’s existence in SAP CPQ is determined
by its function in relation to the parent product. Each parent can have a range of child products and each
child can assume the role of a parent and have a range of its own child products.

 Note

While loading the product, all related products are loaded and rules for each of them are executed. After
that, catalog code, price, cost, image, and product name of the related product will be used as catalog
code, price, cost, image, and display value of the attribute value. All related products have to be loaded
because it takes too long to load the product in the Configurator.

If the formulas for catalog code, price and cost of the related product are simple (there’s no need to load
related product and execute rules in order to evaluate them) this option can be used to increase the speed
of product loading. In that case, formulas for catalog code, price, and cost of the related product are used
as formulas of the attribute value.

Product Changes

In the product table, columns Date Modified and Modified By include fields that show at what time and on what
day the currently active product revision was modified last time, as well as who executed the change. If none of

SAP CPQ Setup and Administration Guide


54 PUBLIC Product Administration
the product versions are currently active, data is displayed for the product version with the highest version
number.

When you click Edit, you can see Created and Modified data. The data is displayed for the version that you’re
editing (you can edit different product versions, not just the currently active one).

SAP CPQ logs a rule change only when the rule was changed (not every time you click the Save button). This is
checked for all rule fields: Rule Name, Description, Condition, Action, and so on.

Product Editor [page 56]


Product editor makes product creation quick and straightforward.

Code Matching [page 64]


With a part number generated that represents a particular configuration of a product, a user can type in
a part number, and that configuration will be displayed.

Rules Administration [page 65]


Rules allow creating limitations for the configuration of the product.

BOM Administration [page 68]


This topic explains the process of BOM administration.

Bulk Product Import/Export [page 70]


Bulk Import/Export feature gives administrators more flexibility in defining product export filters, while
improving error handling, process stability and saving administrators’ time.

Custom Configurator XSLT [page 71]


Users who use custom configurator XSLT transformation should replace a part of custom
transformation in order to enable attribute span functionality.

Discontinue or Replace Simple Products [page 73]


This procedure allows you to add various status updates to the products, such as obsolete, replaced,
and not supplied.

Drilldown [page 74]


This topic explains the drilldown feature.

Create Product Alias [page 77]


Product Aliases are used to create different variations of the same product.

Product Attributes [page 78]


Attributes for a product can be defined either through the Product Setup Wizard or through the Manual
Product Definition.

Product Copy [page 83]


A Copy button gives you an option to copy existing products in the system. It’s displayed for all
products, including aliases.

Product Display Types [page 84]


The product display type depends on the the configuration level of a product. It is selected in the
Product Definition tab of the Product Editor.

Product Validation Messages [page 87]


Product validation messages are similar to product rules, but instead of executing an action during the
configuration change, they display as a message if the condition is satisfied. They’re executed after the
configuration change (that is, when a user selects attribute value in the Configurator).

Create Product Version [page 88]

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 55
The purpose of this feature is to enable you to create product versions, modify them and then activate
them. Meanwhile, the original product remains intact and is used in SAP CPQ. You can decide when to
activate a new product version or to roll back to the previous one.

Set Configuration Based on XML [page 89]


This feature enables you to preconfigure the product based on the XML configuration that you’ve
already defined. For this purpose, tag <*SetConfigurationBasedOnXML(xml)*> has been
introduced.

Simple Product Mass Updates [page 93]


The purpose of this feature is to make it easier for you to export or import a large number of simple
products.

Triggers [page 94]


Triggers allow you to perform an action, or actions, when an event occurs on an attribute. They’re
useful for situations when you want to reset an attribute when another attribute is selected or has
changed selections.

Unit of Measurement [page 95]


The Unit of Measurement attribute refers to the attribute in the product configuration that displays
values of certain measurement types, such as Pressure, Temperature, Length, and so on.

2.2.1 Product Editor

Product editor makes product creation quick and straightforward.

Product Definition Tab [page 57]


This tab is used for defining the basics of a product. It contains several logical segments for entering
product data.

Product Attributes/Options Tab [page 59]


This tab is used for setting up attributes for the configurable products.

Configuration Layout Tab [page 61]


This tab contains options for tab organization in the Configurator.

Rules Tab [page 62]


This tab is used for creating rules that are applied to the appropriate product. You can add as many
rules as necessary.

Preview and Test Tab [page 62]


This tab provides a way to preview the configuration. There are two types of previews: Configuration
Preview and Product Details Preview.

Scripts Tab [page 63]


This tab enables you to define scripts in a product and specify events that trigger the execution of
those scripts. You can verify the execution of the script in the Log on the user side.

SAP CPQ Setup and Administration Guide


56 PUBLIC Product Administration
2.2.1.1 Product Definition Tab

This tab is used for defining the basics of a product. It contains several logical segments for entering product
data.

Product Data

At the top of the screen, there’s a radio button that determines the product display type. See Product Display
Types [page 84] for more information on each of the display types.

You also need to enter Product Name. The Product System Id is populated automatically according to the
entered product name.

Dynamic part numbers can be created by entering an expression in the Part Number field. You can also use the
Formula builder to create an expression.

The product needs to be included in at least one Category. A product is added to the category by clicking the
Add/Remove button.

Image can be selected from the dropdown list. Uploading an image can be done simply by clicking the Upload
button. When the button is clicked, a thumbnail view of all the product images uploaded to the system displays.
Product Type can be selected from the dropdown list. If the correct product type isn’t available, clicking the Add
New button next the dropdown list creates a new Product Type.

Pricing

In the Pricing section, you can choose Pricing Mechanism for the created product. From the dropdown list, you
can select either Pricebook Lookup or Custom Pricing.

When checkbox Use recurring price and cost has been activated under in Setup General Application
Parameters General Parameters , a new field for Base Recurring Price is added. For more details, see the
Recurring and Non-Recurring Prices [page 448] section.

A Base Price can be entered for the product. If the price consists of more than just the base price plus the sum
of the attribute prices, then an expression can be entered through the Pricing Formula.

● Product price formula: Product price or main item price is calculated by computing the pricing formula if it
exists. Otherwise, if the formula is left blank, the product price is equal to the Product Price field plus a sum
of individual attribute prices, except for attributes that are marked as line items. Attributes that are marked
as line items display their own price and aren't included in the main item price. You can enter an expression
in the Cost field to determine the cost of the product.
● Product Cost Formula: Product cost or main item cost is calculated by computing this formula and adding
all attribute costs for all attributes that aren’t marked as line items to the formula. Attributes that are
marked as line items display their own cost and aren't included in the main item cost.

For more information on expressions and tags, see the chapter on Tags and Expressions [page 22].

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 57
When Pricing Mechanism is Pricebook Lookup, pricing fields are hidden. A link View Prices are shown. Clicking
on View Prices brings back a popup window showing all price books and all records for this part number in
those price books.

Permissions and Effectivity Dates

Here, you can give users permission to view the product by selecting any user types, companies, markets,
brands, and permission groups. You can assign permissions by selecting anything from the left box and moving
to the right one. Flag Visible to everyone is selected by default when you’re creating a new product. Flag Active
is also selected by default when a new product is created. When Visible to everyone is selected, permission
group lists are grayed out.

When defining a product alias, the part for defining permissions is displayed in the same as it was for the
product – permissions for aliases are also set based on permission groups.

The Start Date and End Date determine when the product is available. You can click the calendar icon next to
these fields to choose a date for product availability.

Additional Product Data

This section consists of the following fields: External ID, UPS(Universal Product Code), MPN(Manufacturer Part
Number), Inventory, Lead Time, Family Code, Product Weight in GRAMS, Large Product Image, Long Product
Description, Product rules are executed only once, and Allow product configuration import.

Inventory is a descriptive field, which can be used for storing additional information about the product. The
data in this field doesn't influence the product in any way, but it can be used in formulas. Also, the system
doesn't treat this field when an order is placed from SAP CPQ.

Large image is displayed on user side when you visit the Details page, only when Large Image tag is used in the
Product Details templates (found under Setup UI Design Product Details Templates .

By clicking on the Allow product configuration import checkbox, you can enable mass-upload of configuration
by uploading file into product configuration. Also, the Script fields with button and becomeCheck Syntax
Upload configuration field visible.

You can upload, download, or delete configuration template. The uploaded template is displayed in the
Configurator and users are able to download it when configuring the product.

For controlling whether to display a configuration template you can use the application parameter Show
product configuration template. This parameter can be found in Setup General Application Parameters
Configuration Tab .

The script depends on the desired Excel format. Interfaces related to Excel are detailed explained in the
scripting online help, which can be found on http://help.webcomcpq.com/scripting/index.aspx.

User side can be found in the Product Configuration page.

SAP CPQ Setup and Administration Guide


58 PUBLIC Product Administration
Advanced Formulas

This section includes: Dynamic Description, Can Enter Quantity, and checkbox Do not load referenced products
in product collection.

Expressions can be built in each field to determine what the value of that option is. Use the Formula Builder to
help build these expressions.

The Dynamic Description of the product is shown to the user in a quote. You can create it by combining text and
tags.

User can enter quantity determines whether users are allowed to enter a quantity for this product. Enter 1 to
unconditionally allow users to enter quantity, or enter an expression to only allow it under certain conditions.

 Note

Product’s quantity can be changed through the use of a special attribute called ItemQuantity. If this
attribute exists, then the system uses its value to determine the quantity of the main item in the quote. For
more information, see the ItemQuantity Attribute [page 53] section.

2.2.1.2 Product Attributes/Options Tab

This tab is used for setting up attributes for the configurable products.

You can add attributes from the category that the product is added to, or you can add any attribute available in
the system. Moreover, in this step you can easily create a new attribute. If you click Add New Attribute, the
Select attributes to be used by this product window displays. Here, you can select which attributes are displayed
with two available radio buttons. When Show Attributes used by Other product in this Category is selected, only
those attributes that have been added to the current category (see chapter on Categories [page 98]) are
displayed. Show All Available Attributes displays all attributes that are available in the system. Attributes can be
quickly searched by typing in search criteria at the top of the list. Clicking the Search button activates the
search.

Creating a new attribute is done by clicking Define New Attribute.

You can access Product Attribute Details by clicking the Edit button next to one of the attributes added to the
product. Administrators who have chosen the Button display type as part of a User selection attribute can learn
how to attach an IronPython script on Button attributes, in the Attaching IronPython Script on Button
Attributes [page 105] chapter.

When the checkbox Use recurring price and cost has been activated under Setup General Application
Parameters General Parameters , new fields Recurring Price and Recurring Cost are added to the Attribute
Values table. Also, there’s a new check box that is labeled Show Recurring Price. For more details, see Recurring
and Non-Recurring Prices [page 448].

Clicking the symbol brings up the Attribute Where Used screen, which shows all places where the attributes or
attribute values are used.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 59
When you edit an attribute, options and values are displayed in several sections. Each attribute is divided with
settings for the attribute itself and settings for the attributes values:

Attribute Definition

List as Line Item Attributes marked as line items are listed as separate items
in the quote.

If the User Can Enter Quantity Checked then the user can unconditionally enter a quantity.
An expression can be entered which allows them to enter a
quantity only under certain conditions.

Required Users have to provide input in order to complete product


selection/configuration.

Inherit Quantity from Parent Determines if the quantity of this attribute changes when
the quantity of the main product changes.

Description When an attribute is set a line item, this description is


displayed. It’s shown in the quote where the attribute value
would normally be.

Rank within the Cart Determines whether this attribute is a required selection or
not.

Display as Determines how the attribute is used and displayed to the


user.

Span across entire row in configuration Enables attribute to be spanned across entire row in
product configuration. If a custom XSLT configurator
transformation is in use, and not the default one - see the
Custom Configurator XSLT [page 71] settings.)

Additional Attribute Definition

Custom Label The standard label is Choose <attribute name> or Enter


<attribute name> (for free input attributes).

Hint Any text entered here is displayed as a tooltip. You can also
enter a calculation expression.

Inherit Product Type from Line items inherit product type from the main item by
default. Select another product to override where this line
item inherits product type from. In sections Manage
Triggers and Manage Attribute Absolute Position, you can
adjust triggers and position attributes.

SAP CPQ Setup and Administration Guide


60 PUBLIC Product Administration
Attribute Values

Select all values Selects all attribute values.

Hide unselected values Hides values that aren’t selected.

Show more columns Shows all other columns that weren’t shown here.

Reference Product Allows you to reference another product with this attribute.
You can set up a multiple-product configuration such as
Configuration System and Collection of Configured Products.
When Reference Product is selected, the Display Value for
that Attribute Value changes to Product Name (because that
is what is shown to the user). If a reference product is
selected, and if it uses price book, price fields are replaced
with the View Prices link. If you click on it, all prices for this
part number from pricing tables are brought back. When a
reference product is selected, and that reference product
doesn't use price books, price fields are read-only and
populated with the data from the reference product.

Sort Sorts attribute values alphabetically.

Preselected(default) Determines if this value is selected by default.

For more information on attributes, see the chapter on Creating Attributes [page 50].

2.2.1.3 Configuration Layout Tab

This tab contains options for tab organization in the Configurator.

If your product isn’t using multiple tabs and if all attributes are included in one page, then click on Save button
and go to next tab in the Product Editor (no tabs will be included in the configuration).

However, if you click Split attributes into separate tabs a pop-up window in which you can choose more tabs
displays.

Any tab that has been created within the system can be added to the product. To add a new tab to the product
click Create New Tab and pop-up with the Tab Name and Default Tab Rank (required) fields displays, prompting
you to also select whether the tab header is visible in the Configurator. Once you populate these fields and
select whether the tab header is visible, a screen pops up, and you can select position of tabs and attributes
(move them left, right, add new, remove, and so on).

If you want to add a new attribute, click Add and choose more attributes from pop-up.

You can control visibility of each product tab. There are two options that define visibility rules:

● Display tabs only if they are not empty - tabs are visible on user side only if they contain at least one
attribute.
● Set tab visibility for each tab separately - you can define tab visibility rule for each tab separately.

If the second option is selected, under each tab you can see these options for tab visibility, which you can
modify.

● Always displayed

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 61
● Display tab only if it is not empty
● Define condition for visibility - If selected, a text area along with Formula Builder displays, and you can enter
a visibility condition.

2.2.1.4 Rules Tab

This tab is used for creating rules that are applied to the appropriate product. You can add as many rules as
necessary.

You can create a new rule by clicking Add New. The following fields and options display:

Rule name Name of a new product rule.

Description Description of what the rule is about.

Condition Place where you can enter a formula for the condition under
which the rule is triggered.

Action Place where you can enter a formula that is executed when
condition is satisfied.

Rule importance (Order of execution) If there’s more than one rule for the appropriate product,
this field determines in which order the rules are triggered.

Active Checkbox indicates whether the rule is active or not.

Start date Date from which rule will be applied.

End date Date until which the rule will be applied.

2.2.1.5 Preview and Test Tab

This tab provides a way to preview the configuration. There are two types of previews: Configuration Preview
and Product Details Preview.

● Configuration Preview opens a new window, or a tab with the current product model loaded. This option
isn’t available for simple products.
● Product Details Preview opens a new window, or a tab showing the Product Details page with the current
product model. See Product Details Templates [page 473] for more information.

SAP CPQ Setup and Administration Guide


62 PUBLIC Product Administration
2.2.1.6 Scripts Tab

This tab enables you to define scripts in a product and specify events that trigger the execution of those
scripts. You can verify the execution of the script in the Log on the user side.

Context

To define your script, go to the Scripts tab in Setup Product Catalog Products .

Procedure

1. Click Add New.

The page for defining scripts displays.


2. In the Rule Name field, describe the action executed by the script.

For example, in our case we want the script to be executed on the event of adding an item to the quote, so
we named it Item added script.
3. The Description field enables you to describe the script in greater detail.
4. To activate the script in the system, tick the Active checkbox.
5. If you tick the Global checkbox, the script is added to the list of global scripts that can be attached to any
product.
6. Define your script in the Script field. SAP CPQ enables you to enter only the IronPython script engine type.

For this example, we defined this script: Log.Write("Add item", "Item added")
7. Click Check Syntax at the bottom of the page to ensure that the script is valid. If valid, the system returns
OK; if invalid, an error message pops up and shows where you've made the error in the scripting code.
8. Click Attach to Event to specify the event that triggers the execution of the script.

You’re redirected to the page where you can select the event that triggers the execution of the script.
9. Select the events that trigger the script execution.

In this example, we only selected When product is added to quote.


10. To select a global script that will be attached to any product, and specify the event that will trigger the
execution of that script, click Attach Global Script in the Scripts tab.

You’re redirected to a page where you can select the global script and specify your event.

Results

In our example, the event was adding an item to a quote with the script writing in the Log that the item has
been added. Once you’ve clicked Add to Quote in the Configurator, go to the Log to see if the script was

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 63
executed. Once you’ve added the product to the quote, the Log Description field is populated with an Item
Added update.

2.2.2 Code Matching

With a part number generated that represents a particular configuration of a product, a user can type in a part
number, and that configuration will be displayed.

Code Matching is used along with Intelligent Serialization (see the chapter on Sequence Substitution [page
104]) and the reverse part number lookup used in the Quick Search. This saves time for a user when
configuring a product because they don’t need to go through the full configuration process. If a user had a part
number and wanted an almost identical unit with a few changes, this would save time.

Code Matching is where this connection is defined between the part number and the product. This is done by
setting up Code Matching within a specific product. This allows the system to do a reverse part number search
when the user enters a part number in the Quick Search. Reverse part numbering is done with the Catalog
Code Generator field of the product.

This field can build the part number of the product through the use of attribute values/catalogue codes and
static text. For instance, the SMB2 Desktop Computer has this in its Catalog Code Generator field:
SMB2<*CATCODE(Processor) *><*CATCODE(Memory) *><*CATCODE(Hard Drive) *><*CATCODE(CD
or DVD Drive) *><*CATCODE(Monitor) *> This expression has the static text of “SMB2” to start out the
part number. This is then followed by the catalog code (CATCODE) of Processor, Memory, Hard Drive, CD or
DVD Drive, and Monitor. The CATCODE tag pulls the catalog code for the selected value of the attribute.

When the software does a reverse search of a part number, it checks if any of the values in the part number are
included in the attributes that make up the part number of the product. It does this in the order that the
attributes are entered for the part number. For instance, the part number SMB2-A3-102422H16-Com5T17 is a
result of the dynamic catalog code generation. To reverse search this part number, the software finds the
product to check (discussed later how) then checks if there’s a catalog code value for the attribute Processor
(<*CATCODE(Processor) *>) equal to -A3. It then moves to the next value and checks if the attribute
Memory contains a catalog code value (<*CATCODE(Memory) *>) equal to -1024. Once all the values of the
part number are found, the software opens that product and selects each value of the part number.

 Note

The user needs to enter a part number that includes all the attributes included in the catalog code
generator. If they don’t, then the system returns that it can’t find a product.

In order for the system to check the attributes of a product, it needs to know which product to look at. This is
where Code Matching comes in. Code Matching tells the system which product to look at for a given part
number. This is generally the static text used in the product’s part number.

To access Code Matching, choose Products under the Products admin menu and find the product that the serial
number corresponds to. Choose the manual definition method and open Code Matching under the Current
Product menu.

Enter the unique codes used to reference this product. Click Change/Add More Values to add more fields. To
delete a reference, select the check box next to it and click the Change/Add More Values button. When finished,
click the Finish button. This saves the values and creates the references to the product.

SAP CPQ Setup and Administration Guide


64 PUBLIC Product Administration
Related Information

Products [page 53]


Sequence Substitution [page 104]

2.2.3 Rules Administration

Rules allow creating limitations for the configuration of the product.

This ensures that the user is only able to create an accurate and valid configuration of the product. The Rules
section allows creating complex rules through the use of SAP CPQ tags. It is not prerequisite to be an expert in
SAP CPQ tags. The Code Builder, which can be accessed during the creation of every rule, can help in creating
these rules in a user-friendly way.

Each rule is created with a Condition, which determines whether or not the action will run, and an Action, which
tells the system what to do when the condition is true. Each rule is, in essence, an IF statement. IF the condition
is true, THEN the anything in the action field will run. There are SAP CPQ tags used especially for rules (and
triggers, which are discussed in the Triggers [page 94] section) to create the condition and the action
statements. To access the Rules section use the manual method of product definition and select the Rules link
under the Current Product dropdown. This brings up the Rules Administration screen.

Existing rules can be deleted or editing by selecting the corresponding symbol next to the rule name. To add a
new rule, click Add New at the top of the page. A blank rule definition page is displayed.

Click Check next to the condition or action fields to bring up a Code Builder window (see the section on Formula
Builder [page 11]). Click the Save button at the bottom of the screen to save the rule and add it to the list of
existing rules. The Rule Name field is used as a reference and small description of the rule. It is recommended
to use associative names, such as Processor blocks Memory or Color selects Widget. This makes it easier to
find the rule later if it needs to be searched for and edited.

The Description field can be used for additional explanations or notes. This can make it easier for any other
administrators to understand what you are doing in the rule or how the rule fits in with other rules and the
configuration of the product.

The Condition field is used to restrict the rule's execution for certain situations. Enter any conditioning tag
expression into this field. If the evaluation of the string results in true (1), the rule is applied. If the result is false
(0), the rule is disabled. Click the Check button to bring up the Code Builder window for help in creating the
condition expression.

The Action field is the action that takes place when the rule is executed. Click the Check button to bring up the
Code Builder window for help in creating the condition expression. Rank determines the priority of rule’s
execution – lowest rank executes first, highest last. Since non-integer rank values are not accepted it is
recommended to skip numbers (such as 5, 10, 15… or 10, 20, 30…) to allow for future insertion of new rules.
Rule ranking will only make a difference when the rule is affecting. The Active check box manually turns the rule
on or off. This is useful for diagnostic or testing purposes.

Start Date and End Date limit the rule activity time works with effectivity dates. An example would be to allow
special merchandise during Christmas or any other time of the year the appropriate dates are filled in. Click the
calendar icon next to the fields to bring up a calendar pop-up window to assist in choosing a date. Leaving both
fields empty means the Rule is “on” regardless of the date.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 65
The best way to create expressions for rules is by using the Code Builder. This simplifies the process and helps
ensure that the created expression is free of any syntax errors. When using the Code Builder window for
creating Rule expressions, the window will display the two add-on boxes.

To create an expression, select the attribute value from the left box and then select the action or function from
the right box. Click the Insert button to add the created tag to the expression in the main box. Depending on
which function or action is chosen, the Attribute or the Attribute Value will be included in the tag. Functions or
actions with the suffix ATT apply to an attribute, while those with the suffix ATV apply to an attribute value.

 Note

Appendix A [page 695] contains a list and descriptions of all tags available for rule expressions. For
example, the following expression would be created for a rule which needed to state that when the value
Blue in the attribute Color is selected, then the value Red from the attribute Color and the value High from
the attribute Level need to be selected. The condition field would contain: <*ANYSEL(Color:Blue)*>.
This will return TRUE when Blue is selected from the attribute Color. Once the Condition field returns a
value of TRUE, the system looks at the Action field and runs that expression. The action field should
contain: <*SELATV(Level:high)*>; <*SELATV(Color:Red)*> or
<*SELATV(Level:high,Color:Red)*>. This orders the system to select the attribute value
(SELectATtributeValue) High and Red in the attribute Level and Color. Both statements in the example are
correct. One statement may work better in a certain situation depending on the rest of the expression.
Make sure the Active check box is checked in order for the system to run the Rule.

If <*DisallowAttribute(NameOfAttribute)*> is used, all preselected attribute values will be


unchecked.

Order

While modeling a product you may use different administrative methods of performing actions on attributes to
achieve desired results. These may include triggers or rules. When using both, you may run into trouble if the
actions begin to affect the same attributes. Knowing the order that these actions are run in the system may
help you when modeling your product. The system runs these methodsin the following order:

1. Triggers
2. Rules

Any time the user makes a selection or a product is loaded, these processes are run in this order. This is
important because if you create a trigger that selects the Color Red then have a rule created that selected the
Color Blue, then Blue will be the final selection despite the rule ranking of either the Trigger or the Rule.

Simple Product Rules [page 67]


In Products, when products are edited under the tab Rules, a new table Simple Rules is displayed, which
is a different representation of the current Attribute Dependencies (the entry Attribute Dependencies is
not removed from the legacy editor).

SAP CPQ Setup and Administration Guide


66 PUBLIC Product Administration
2.2.3.1 Simple Product Rules

In Products, when products are edited under the tab Rules, a new table Simple Rules is displayed, which is a
different representation of the current Attribute Dependencies (the entry Attribute Dependencies is not
removed from the legacy editor).

 Note

Regular rules will be displayed in the widget called Scripted Rules.

The table Simple rules is displayed if the application parameter Display table for simple product rules is set to
TRUE. This table contains rules from the current Attribute Dependencies table. There is only one rule per rule
set (currently in Attribute dependencies, the administrator can define unlimited rules per rule set). Attributes
and attribute values are displayed in different color from keywords (AND, Disallow, and so on).

 Note

Simple rules cannot be exported.

When administrator clicks Add new for a simple rule, new screen is displayed where administrator is able to
define rule:

● Rule name - This field is required. It corresponds to Dependence rule description for Attribute
Dependencies.
● Created By - This field is populated with information about who and when created the rule. It doesn’t exist
for Attribute dependencies.
● Modified By - This field is populated with information about who and when last modified the rule. It
currently doesn’t exist for Attribute dependencies.
● Description - This field is not required. It corresponds to Dependence rule long description for Attribute
Dependencies.
● Rule Importance (Order of Execution) - This field is required. Its default value is 10. It corresponds to
Dependence rule rank for Attribute Dependencies.
● Start Date - This field is not required. It corresponds to first date in Effective Dates for Attribute
Dependencies.
● End Date - This field is not required. It corresponds to second date in Effective Dates for Attribute
Dependencies.
● IF - Administrator is able to look up attributes that are defined for this product through this field. When
administrator is adding new rule, there will be a text type attribute name or value written in grey letters in
this field. As soon as admin starts typing attribute name or value, SAP CPQ will start looking for attribute
names and value codes that have text that is entered within attributes defined for this product. Text that
admin has entered will be displayed in bold. Maximum of 20 results will be displayed. Administrator can
delete selected attribute name/value code by clicking on X. This field is required. It corresponds to
conditioning attributes and their values in Attribute Dependencies.
● THEN - Dropdown contains 3 entries:
○ Disallow - corresponds to Disallow in Attribute Dependencies. This is selected by default.
○ Select- corresponds to Select One in Attribute Dependencies.
○ Reset & Select - corresponds to Select Only One in Attribute Dependencies.
If application parameter Show Allow Option for Simple product rules is set to TRUE, option Allow is also
displayed in the drop down (as the last option).

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 67
Administrator is able to look up attributes that are defined for this product through the lookup field. When
administrator is adding new rule, there will be a text type attribute name or value written in grey letters in this
field. As soon as administrator starts typing attribute name or value, SAP CPQ starts looking for attribute
names and value codes that have text that is entered within attributes defined for this product. Text that admin
has entered will be displayed in bold. Maximum of 20 results will be displayed. If admin has already added one
attribute, when she wants to add another field, she will be able to add it only from the list of remaining attribute
values of the same attribute. Those values will be displayed as soon as admin clicks in the next field. Admin
won’t be able to add values from different attributes in THEN section. When admin starts typing something in
the box, SAP CPQ will look only for attribute values of the same attribute. Admin will be able to delete selected
attribute name/value code by clicking on x sign. This field is required. It corresponds to dependent attributes
and their values in Attribute Dependencies.

Page for adding/editing scripted rules will be changed so that condition and action are displayed in the similar
way as for simple rules. Instead of ‘Condition’ there will be an IF field, and instead of ‘Action’ field there will be a
THEN field. Everything else will rename as it is.

There will be 2 new application parameters added to Setup General Application Parameters General :
Display table for simple product rules (Default value: FALSE) and Show Allow Option for Simple product
rules(Default value: FALSE)

Related Information

Rules Administration [page 65]


Products [page 53]

2.2.4 BOM Administration

This topic explains the process of BOM administration.

Selection Charts

Selection Charts are used to logically separate groups of BOM conditions (such as Hardware Components,
Software Components, Maintenance Components). To create a new Selection Chart, select Add New button. To
edit an existing Selection Chart, select Edit next to chart’s name. Both actions will open a Selection Chart
administrator page.

If new selection chart is being added, it has to be saved by clicking on the Save button after the Name has been
defined. Without saving other tabs will not be accessible. On the Definition Tab only Name is required. Name
and description are limited to 50 characters in length. Begin date is defaulted to current data and end date is
defaulted to 10 years from current date. To make the selection chart active only during a certain date range (or
to deactivate a chart without deleting it) specific date ranges can be entered.

SAP CPQ Setup and Administration Guide


68 PUBLIC Product Administration
Attributes

Products consist of many attributes. Not all attributes are relevant for a particular selection chart. On the
Attributes tab only attributes relevant to that selection chart can be selected. To select attributes, select ton or
more attributes in Available list and click » to move them to Selected list. To remove attributes, do the reverse
and click on «. Once all the changes have been made, click the Save button to save the changes.

Part Types

Each BOM condition, as a result, selects a part or a component. To select which categories resulting parts
come from, on the Part Types tab we can select one or more categories and make them available to the
selection chart. There has to be at least one part type category selected for the chart. First, a New Part Type
hast to be added to the available Part Types list. Available Part Types are shared with all selection charts for the
products. To add a new party type, click on the Add New Part Type button. This will pop up a window to select
any category.

Select a category and click on Add Selected. After adding one or more part types, select any part type in the
Available list and move it to the Selected list by clicking on ». To remove a part type from the selected list, select
it and click on « to move it back to the Available list. To completely remove a part type from the list of available
part types, select it and click on Remove Part Type button. After all the changes have been made, click on the
Save button to make sure all the changes are saved.

Conditions

BOM conditions are rules that define what Part Type/Component will be selected if the condition is evaluated
to be true. To add a new condition, click on the Add New button. This will open a pop up to create an empty
condition. Select Part Type, Part, Quantity and Description. Parsed Part can also be entered and if it has any
value it will take precedence over a selected part. For example, if instead of Network cable we wanted to select
a value of some attribute, we could enter <*Value(SomeAttribute)*> in Parsed Part section. Quantity is
also a parsed value. In above example we have 1, but could have also said
<*Value(SomeNumericAttribute)*>. Click on Add/Edit Condition to save the selection.

To actually select attribute values that define the condition, expand the list of attributes. Click on the button
with attribute name to select values. This will open a popup to create a formula for that attribute. Expression
field is automatically populated as Values in the dropdown are selected. Each time a new value is selected it is
automatically appended to the end of the expression and prefixed with value selected in Type (or, and, not, to).
After creating an expression, click on Save to compile the expression and add it to the condition.

Export

A selection chart can be exported in a comma separated value (csv) text format. The exported file can be
manually modified and later imported into the same selection chart (or another selection chart that has the
same attributes and part types defined). To export a chart, click on the Export button on the Export tab. After
the export is completed, a link is provided to download the file.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 69
Sample output of the exported file looks like this:

Hard Drive,Processor,Memory,Part Type,Part Id,Quantity


60 or 100,,512,Hardware,Network cable,1
,C3,,Hardware,Printer Toner,2

The first row has attribute names, part type, id and quantity. All other rows have condition expressions
separated by commas and part type name, part name (if it is a parse value, it should be prefixed with
[parsed] – e.g. instead of Network cable it would be [parsed]<*Value(SomeAttribute)*>) and quantity.

Import
To import conditions to a selection chart, on the Import tab select a file form a dropdown or upload a new file.
A file has to be in the format as for export. To start the import, click on the Start Import button.

Related Information

Products [page 53]

2.2.5 Bulk Product Import/Export

Bulk Import/Export feature gives administrators more flexibility in defining product export filters, while
improving error handling, process stability and saving administrators’ time.

Large product data files won’t be interrupted by an error and large files no longer need to be split into several
smaller files. This feature is not a replacement for the existing Import/Export functionality, both methods will
be available in SAP CPQ setup.

The Bulk Import/Export process starts by exporting products. Since the number of products can be very large,
this process had been designed as an asynchronous background process. This means that the administrator is
free to leave the page once the export process is initiated and continue with their administrative activities on
other pages, or leave SAP CPQ completely. Upon completion of the process, the administrator will be notified
via email, and provided with a link to the exported template.

This feature is accessed from Setup Import/Export Bulk Import/Export . The status screen displays a
list of previously started import and export processes showing progress and additional information about each
one.

The Export Products section provides administrators with the options to export a blank template, export all
products, or to define multiple filters before exporting products. The first two options are straightforward. The
third option Filter and Export opens the filtering screen.

The first tab Filter Export by is used to define filter criteria for the common product properties, such as Product
Name, Part Number, Category and more. If an export involves multiple part numbers, you should enter them
one per line. If you want to constraint a number of columns, or define a list of attributes that you want to export,
you can do this under Columns and Attributes to export tab.

Clicking Apply Filter and Export starts the background export process. You can leave the page (or applicatio)
and come back later to check the download status and download the exported document.

SAP CPQ Setup and Administration Guide


70 PUBLIC Product Administration
After making the desired changes, you can upload the template document to SAP CPQ. When importing, you
must provide the Product Identifier column so that SAP CPQ can know whether to insert or update the existing
products. Available product identifiers are the same as for regular product export/import.

Import of product data also works as a background process. If any error occurs, they will be logged into the
same file uploaded for import. The column that holds the information about the row is named Status. You can
download the file at the end of the process, make corrections according to any reported errors and upload the
file again.

Related Information

Products [page 53]

2.2.6 Custom Configurator XSLT

Users who use custom configurator XSLT transformation should replace a part of custom transformation in
order to enable attribute span functionality.

The code to be replaced:

<xsl:for-each select="/Configuration/Tabs/Tab[@selected='1']/Attributes/
Attribute[@DisplayAs != 93 and @DisplayAs != 94 and @DisplayAs != 96 and (@Rank
= $CurrentStep or @Rank = '1') and @IsPositionAbsolute = '0' and @AliasDisplay !
= '2' and not(@SimpleRefProduct='1') ]">
<xsl:sort select="@SubRank" data-type="number" order="ascending" />
<xsl:if test="(position()-1) mod $Columns = 0">
<xsl:variable name="parentPosition" select="position()"></xsl:variable>

<tr>
<td valign="top">
<xsl:if test="Allowed='True'">
<xsl:attribute name="class">inputborder</xsl:attribute>
</xsl:if>
<xsl:attribute name="width"><xsl:value-of select ="$ColumnWidth"/></
xsl:attribute>
<xsl:call-template name="ShowAttribute">
<xsl:with-param name="StdAttrCode" select="@StdAttrCode"></
xsl:with-param>
<xsl:with-param name="PA_ID" select="@PA_ID"></xsl:with-param>
<xsl:with-param name="SelectedTabId" select="$SelectedTabId"></
xsl:with-param>
<xsl:with-param name="CurrentStep" select="$CurrentStep"></
xsl:with-param>
</xsl:call-template>
</td>

<xsl:for-each select ="/Configuration/Tabs/Tab[@selected='1']/


Attributes/Attribute[@DisplayAs != 93 and @DisplayAs != 94 and @DisplayAs != 96
and (@Rank = $CurrentStep or @Rank = '1') and @IsPositionAbsolute = '0' and
@AliasDisplay != '2' and not(@SimpleRefProduct='1') ]">
<xsl:sort select="@SubRank" data-type="number" order="ascending" />

<xsl:if test="(position() &gt; $parentPosition) and (position() &lt;


($parentPosition + $Columns))">

<td valign="top">

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 71
<xsl:if test="Allowed='True'"><xsl:attribute
name="class">inputborder</xsl:attribute></xsl:if>
<xsl:attribute name="width"><xsl:value-of select
="$ColumnWidth"/></xsl:attribute>
<xsl:call-template name="ShowAttribute">
<xsl:with-param name="StdAttrCode" select="@StdAttrCode"></
xsl:with-param>
<xsl:with-param name="PA_ID" select="@PA_ID"></xsl:with-param>
<xsl:with-param name="SelectedTabId" select="$SelectedTabId"></
xsl:with-param>
<xsl:with-param name="CurrentStep" select="$CurrentStep"></
xsl:with-param>
</xsl:call-template>
</td>
</xsl:if>
</xsl:for-each>

<xsl:if test="position() &gt; $Count - $Columns ">


<xsl:variable name="TdLeft" select="($Columns - ($Count mod
$Columns)) mod $Columns"></xsl:variable>
<xsl:if test="$TdLeft &gt; 0">
<xsl:call-template name="RecurseEmptyTd">
<xsl:with-param name="CurrentCount" select="1"></xsl:with-param>
<xsl:with-param name="MaxCount" select="$TdLeft"></xsl:with-
param>
<xsl:with-param name="Width" select="$ColumnWidth"></xsl:with-
param>
<xsl:with-param name="Class" select="''"></xsl:with-param>
<xsl:with-param name="VAlign" select="''"></xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:if>
</tr>
</xsl:if>
</xsl:for-each>

Replace the previous code with the following:

<xsl:for-each select="/Configuration/Tabs/Tab[@selected='1']/Attributes/
Attribute[@DisplayAs != 93 and @DisplayAs != 94 and @DisplayAs != 96 and (@Rank
= $CurrentStep or @Rank = '1') and @IsPositionAbsolute = '0' and @AliasDisplay !
= '2' and not(@SimpleRefProduct='1') ]">
<xsl:sort select="@SubRank" data-type="number" order="ascending" />
<xsl:if test="@IsFirstInRow ='1'">
<xsl:text disable-output-escaping="yes"><![CDATA[<tr>]]> </xsl:text>
</xsl:if>
<td valign="top">
<xsl:attribute name="colspan"><xsl:value-of disable-output-
escaping="yes" select="@Colspan"/></xsl:attribute>
<xsl:if test="Allowed='True'">
<xsl:attribute name="class">inputborder</xsl:attribute>
</xsl:if>
<xsl:attribute name="width"><xsl:value-of select ="$ColumnWidth"/></
xsl:attribute>
<xsl:call-template name="ShowAttribute">
<xsl:with-param name="StdAttrCode" select="@StdAttrCode"></
xsl:with-param>
<xsl:with-param name="PA_ID" select="@PA_ID"></xsl:with-param>
<xsl:with-param name="SelectedTabId" select="$SelectedTabId"></
xsl:with-param>
<xsl:with-param name="CurrentStep" select="$CurrentStep"></
xsl:with-param>
</xsl:call-template>
</td>

<xsl:if test="@NumberOfFollowingEmptyTD &gt; 0">


<xsl:call-template name="RecurseEmptyTd">

SAP CPQ Setup and Administration Guide


72 PUBLIC Product Administration
<xsl:with-param name="CurrentCount" select="1"></xsl:with-param>
<xsl:with-param name="MaxCount"
select="@NumberOfFollowingEmptyTD"></xsl:with-param>
<xsl:with-param name="Width" select="$ColumnWidth"></xsl:with-
param>
<xsl:with-param name="Class" select="''"></xsl:with-param>
<xsl:with-param name="VAlign" select="''"></xsl:with-param>
</xsl:call-template>
</xsl:if>

<xsl:if test="@IsLastInRow ='1'">


<xsl:text disable-output-escaping="yes"><![CDATA[</tr>]]> </xsl:text>
</xsl:if>
</xsl:for-each>

Related Information

Products [page 53]

2.2.7 Discontinue or Replace Simple Products

This procedure allows you to add various status updates to the products, such as obsolete, replaced, and not
supplied.

Context

Discontinued products appear in the catalog but users aren’t able to flag them and put them in the cart. We
introduced the ability to add various statuses to prevent confusion among users who would flag discontinued
products and attempt to put them in the cart. With this feature, companies no longer have to notify users that
the product is unavailable anymore. It also enables companies to offer replacements for obsolete products.

 Note

This feature doesn’t apply for simple products that are part of configurable or parent-child products.

Procedure

1. Click Products in the Product Catalog submenu of the Setup page and find the product you plan to make
obsolete.
2. Click the Edit icon and scroll down to Permissions and Effectivity dates folder.
3. Select if your product is Discontinued or Replaced from the Product End of Life Status dropdown menu.
4. Select Replacement.

A text-entry box pops up on the right-hand side.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 73
5. Click the magnifying glass icon to view a list of possible replacement products.
6. Find your replacement product and click the green arrow pointing leftward.
7. Select the effective Start Date, after which the product won't be available.
8. Select the effective End Date, by which the product won’t be available.
9. Click Save or click Reset to invalidate entered data.

You have now made the product obsolete. Exit Setup and follow the remaining steps to see what your
obsolete product looks like on the user side.
10. Click New Quote and enter the name of your obsolete product in the Search field.

If your product has been discontinued, the following message appears: This product is no longer available
and has been discontinued.

If your product has been replaced, a link to Product Replacement appears. Click the link and click Add to
Quote to finish quoting.

Related Information

Products [page 53]

2.2.8 Drilldown

This topic explains the drilldown feature.

Let’s say you are a transport vehicle manufacturer that produces 20,000 different vehicles and also services
the vehicles it sold to customers. While many of these models and types of services offered are completely
different from one another a high number of them are very similar, with a few distinguishable details. Making a
unique selection of the entity you want can be complex and very time consuming. This is where Drilldown
comes in: it allows you literally to drill through the many options and arrive at your final selection quickly and
efficiently.

When you arrive to your desired result, whether it’s data you need for your product configuration or the product
itself, you can use it to configure your product and continue creating your quote.

It helps to think of the Drilldown feature as a product attribute with two important entities – Source and Result
columns.

That said, the first step in the Drilldown process is creating a Custom Table that will contain your selection data.
You can create your Custom Table manually or import an Excel file containing table data. You must fill out the
table with source columns representing possible choices – with each choice followed by its sort column – and
the Result columns representing the final outcome.

The second step is adding the custom control (Hierarhical Drilldown) attribute, and other attributes that will
support Drilldown, into the product. We will explain this later in the document after we show you how to create
a custom table. The final step is drilling through your options in order to configure your product and complete
your quote (this is explained in the Doing the Drilldown section of this Help document).

SAP CPQ Setup and Administration Guide


74 PUBLIC Product Administration
First Step - Crating a Custom Table

1. Manually creating a Custom Table


Your custom table will include Source and Result columns. Source columns will be columns representing
choices while Result columns will represent the result of making choices. Remember that each Source
column will have its own sort column.
○ Open the Product Catalog option from the submenu on the left-hand side.
○ Open Custom Tables.
Click Define New to create a new Custom Table and then click Add New Column to add columns to the
table. Fill out the names of your Source and Result columns and define a name for each column and
type of it's data (numerical, textual etc.).
○ Click Save to save your newly created custom table
○ Find your newly created Custom Table in the list of tables and click the Eye icon to fill out the data in
your Source and Result columns.
○ Click Save when done.
2. Importing a Custom Table
Open the Product Catalog option from the submenu on the left-hand side and click Custom Tables, then
click on Import New button. Make sure to include all columns that would otherwise be included in the
manually created custom table. Consult the Excel file below, we've created to see what we mean.

 Note

You can download a sample Excel file populated with the required data. Click on next link to download
the sample: Vehicle Drilldown Template .

Click Browse to locate the Excel file and click Save. Now go back to the Custom Table Administration page,
find your table and click the Eye icon to make sure all fields are in.

Second Step - Adding Custom Control and other Attributes

Now that you have created a Custom Table you should create a product that will have attributes with a display
type custom control and attributes which will present results. In our mock-up scenario we will use three
attributes but you can create as many attributes as it is needed for your drilldown model.

We will be using three because we need one attribute for custom control (we called it Drilldown_Vehicle) and
two attributes where results will be displayed. In our mock-up example the Results No. 1 and No. 2 are Part
Number and Model Year, respectively.

In the DrillDown_Vehicle attribute, select Custom Control as your display Type.

Click Setup on your right-hand side. A new pop-up windows is shown.

Enter the name of your custom table in the Table field, (in our example it is Vehicle_drilldown). You will notice
that there are two tabs, Source column and Result tabs. Click Add New Column.

Now you are going to fill out relevant Source column fields. Consult the definition of the fields below:

● Label: Enter text that will be displayed in the Configurator for that selection.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 75
● Type: Select a display type of your selection. The display type can be radio button, image button or drop-
down. If you select Image Button as a column type, two more input fields will be displayed on the form -
Image On Column and Image Of Column
● Image On Column: Enter name of the column in custom table that holds a name of the image that will be
displayed as attribute value when the value is selected.
● Image Off Column: Enter name of the column in custom table that holds a name of the image that will be
displayed as attribute value when the value is not selected. To upload attribute “on/off” images, use File
Management in SAP CPQ located at Setup General File Management .
● Rank: Select the position in the hierarchy of your Source Columns.
● Sort column: Enter the name of the appropriate Sort Column as it appears in your custom table.
● Db Key Column: Enter a unique database Key indicator of your item. In this case it would be the name of the
column listed in your custom table but you can also generate the key through a SAP CPQ expression or a
regular string. Note that you should not change the Db Key column indicator - it ensures consistency of the
Drilldown process by preventing system error when its value changes.
● Db Value Column: Enter the value attached to the Key column.
● Condition for making field editable (leave empty if always editable): Enter a condition that will limit the
editability of this field (for example, you can limit it to a certain user, or user type, or place time frames
during which the field is editable).
● Preselection Expression enables you to preselect your attribute values that are determined by the attribute
value selections made earlier in the Drilldown process.
Note that you must create as many source columns as the number of choice items you have previously
defined in your custom table. In our case those would be: Transport type, Vehicle family, Vehicle and Fuel
type.
At this point you must create your result columns. Select Result columns and then click Add new column.
And fill out your Result Column fields.

Final Step - Doing the Drilldown

Now that you have created your product with custom control, you can exit setup, configure the product and
complete your quote. During product configuration, make your selections from the Choose Drilldown dropdown
menu as you wish, and you will drill down to the result.

Related Information

Products [page 53]

SAP CPQ Setup and Administration Guide


76 PUBLIC Product Administration
2.2.9 Create Product Alias

Product Aliases are used to create different variations of the same product.

Context

Aliases can be useful when setting up several default configurations. This approach saves the user clicks or
allows marketing campaigns to configure products that are targeted to the end user. The original product
becomes the master and can be either active or inactive. There are no limits to the number of aliases created.
Different attribute values can be chosen as defaults when the product is configured. This is only possible if
rules haven’t already been created to prevent the default value selections.

Procedure

1. Edit the original product in PSW [page 56].

A new item appears in the Product menu on the left – Add Product Alias, where you can find a partially filled
out form with information from the base product.
2. Change the Alias name, Price, and other details if needed.
3. Select the permissions for the alias product if needed.
4. Select attributes in the Select attribute values dropdown list. Select one attribute value for each attribute
you would like the alias to default to.

It isn’t necessary to select an attribute value for every attribute.

The currently valid attribute values are listed in the Selected attribute values box.
5. Click Save to save alias.

A product alias inherits all the properties of the parent product except the properties that can be
configured in the alias itself, even if the property on the original product is changed after the alias is
created.

When a user logs on, they see the alias in the category defined. The master product is the base with no
attributes selected.

 Note

Aliases don’t inherit the original product’s preselected attribute values. Use the default selections to
set preselected values.

Related Information

Products [page 53]

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 77
2.2.10 Product Attributes

Attributes for a product can be defined either through the Product Setup Wizard or through the Manual
Product Definition.

You can define attribute in Product Setup Wizard through steps 2 through 4. Alternatively, you can define
attributes through the manual definition method in the Product Attributes section under the Current Product
admin menu.

Using this method, you must ensure that any attributes you intend to use for the product have already been
added to the category. See the chapter on the Categories [page 98] section for more information on adding
attributes to a category. In addition, any new attributes you would like to add to the product need to be created
in the Attributes administrative section. See the Attributes [page 26] section for more information. The
firsttime entering this page the left column shows an NU button and the right column shows an attribute
(unchecked). If these Product Attributes have been configured already, then numbered buttons are displayed
to the left of the NU button. These numbers represent steps, which is discussed later.

To access all the Attributes available, click the NU (Not Used) button. This lists all the Attributes that have been
added to that Category. Selecting an Attribute in the left column brings up its properties on the right column. If
these Product Attributes have already been configured then clicking the numbered step buttons brings up
more Product Attributes.

 Note

If an Attribute Name isn’t completely visible, hold the cursor over the name until the complete name is
displayed in a tool tip.

At the top of the page, the name of the Product which is being configured is given. Clicking Reset at the bottom
of the page will restore all information and settings for the current Attribute selected back to when it was
previously saved.

In order to use an Attribute with a product, it must be selected. This is done by clicking the check box next to
the Attribute Name in the right column.

 Note

At least one attribute value needs to be added to the product. If no values are added then the system will
produce an error.

● Select All – Convenient way to select the Attribute and all the values of the currently selected Attribute.
This is helpful if there are a large number of values. Attribute Values are discussed later.
● List As Line Item – If checked, the Attribute will show up in the Quote/Cart separate from the Product being
configured, or base product. If the attribute is set for multiple selections, such as a check box or multi-
select listbox, then each selected attribute will be displayed as a separate line item in the cart/quote.

 Note

Multi-select attributes such as Checkbox cannot use the attribute’s line item description in the cart. This is
because the system cannot distinguish which item it should display the description for in the cart when
multiple items are selected. Because of this, you must use the Description Builder for each attribute value.
This will ensure that the correct description is displayed in the cart for that attribute.

SAP CPQ Setup and Administration Guide


78 PUBLIC Product Administration
Ref Product – Used in conjunction with the Product’s Hierarchy and is explained in Product Display Types [page
84]. Clicking the Clear button removes any products selected in the drop down.

OPTIONAL/REQUIRED Drop Down Box – Determines whether this Attribute is required to complete the order.
The default is OPTIONAL. If set to REQUIRED then when a user configures a product, a notice will be displayed
stating the order is Not Complete. Once all attributes set to REQUIRED have been selected, the notice will
change to Complete.

Display As: This drop down box gives all the choices available for how the attribute will be used in the
configuration. The choices are as follows:

 Note

For all selection choices, if the Attribute is set to OPTIONAL then an extra choice will appear stating that no
selection value or selection has been made.

● User Selection:
○ Radio Button – Allows user to pick only one of the Attribute Values.
○ Check Box – Allows user to pick multiple Attribute Values.
○ Drop Drown – User can see all values by clicking in the drop-down box. Helpful if there are many values
but not much space to display each value.
○ List Box – User can select one value from a list of values.
○ List Box Multi Select – User can select multiple values from a list of values by holding down the Ctrl key.
○ Image Button – User can select a value by clicking on an image displayed for each value. If text needs
to be displayed it must be embedded into the image. Active and Inactive images need to be set for
each Attribute Value. Attribute Values are discussed later in this chapter.
○ Display Only Text – Displays only the Display Value text. Attribute can only have one attribute value.
○ Button – A button is displayed for the Attribute.
● User Input:
○ Free Form, Match Lower – User can enter a number and it can automatically can be matched with an
Attribute Value. For instance, Attribute Values for extension cord lengths could be 12, 20, 25, and 50. If
a user enters a 30 for the length of the extension cord then it will automatically be matched to the
Attribute Value of 25. This option though retains the users input for calculations if necessary.
○ Free Form, Match Upper – This works the same way as Match Lower except that it will match an
Attribute Value higher instead of lower. For the example given above, 50 would be the matched value
instead of 30.
○ Free Input, No Matching – Allows user to enter in values for an Attribute Value. This value will not be
matched to any Attribute Values. This is used most often for a user’s input.
○ Free Form, Set Match Lower – When a user enters a number it will be matched to the lower Attribute
Value. The value the user entered will not be retained but will be replaced with the matched Attribute
Value
○ Free Form, Set Match Upper – Works the same as Set Match Lower except that the entered value will be
matched with the higher Attribute Value.
○ Free Form, Exact Match – Allows user to enter number. User must enter a number that exactly matches
an Attribute Value or an error is given.
● Hidden Calculations:
Hidden Calculations use the expressions entered into the Hint/Calculation field of the attribute to
determine its value. Attributes set as hidden calculated can only have one attribute value. Use hidden
calculated attributes only when absolutely necessary. They don't offer control of calculation execution

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 79
order and execute twice, which degrades performance. Only use them for attribute UI hints or when no
alternative exists.
○ Hidden Calculation, Match Upper – This is not visible by the user. It can be a formula or logical
expression. The results of the expression are dependent on values of other attributes that the hidden
expression calculates. One example could be converting a unit of measure. The results are matched to
the higher Attribute Value.
○ Hidden Calculation, Match Lower – This works the same as Match Upper except that it will match to the
lower Attribute Value.
○ Hidden Calculation, No Matching – This works the same as Match Upper and Match Lower except that
it will not match to any Attribute Values. Do not use this formula to calculate attribute's value. Consider
writing a rule that will do this calculation, and assign the result into the attribute value. This will
improve performance and you get to choose the order (priority) of calculations, which you can't do
with hidden calculated attribute hints.
Hidden Calculation, Match Upper/Lower can be used as a method of rounding to intervals of 2, 5, 10,
etc by placing these values in an attribute and matching a calculation to these values. For example, an
attribute could contain the values 5, 10, 15, 20 and the calculation could return 10.348. If Match Upper
were used then the value 15 would be selected. <*ValueCode(attribute)*> should be used to retrieve
the matched value.
● Multiple Product Configuration:
○ Subproduct - Allows a product to be configured within another product. The attribute must be
referenced with another product that is a configurable product.

Customer Range Error Text – allows the administrator to display a customer error message if an incorrect value
is entered by the user.

Step – Used in association with Steps. Set each Attribute to the Step it is associated with. If no steps are
defined and all Attributes will appear on the same page, then set all Attributes to the same step. Attributes with
the same step number will be displayed under that Step Number button displayed in the left column. If using
the Product Setup Wizard to organize your attributes, you will not need to modify this field.

Sub Rank – This number represents the sequence that the Attribute will be displayed to the user. Lower
numbers will be shown first, higher numbers last. If using the Product Setup Wizard to organize your attributes,
you will not need to modify this field.

Properties, Triggers, and Attribute Values allow for further tailoring of the Attribute. Clicking each button will
display related settings and options. Clicking the button again will remove those settings from the screen. If a
section of settings are open and another button is clicked, those settings will then be appended under the
already open settings.

Clicking will bring up the Attribute Where Used screen which will show all places where the attributes or
attribute values are used.

Clicking the Properties button will drop down the options.

Hint or Calculation Expression – This is not displayed. If one of the Hidden Calculated choices was selected
from the Display As drop down then this is where the expression can be entered. Click the Check button for the
Formula Builder [page 11]. Do not enter product calculations into hint fields. Write rules that perform
calculations and assign result into an attribute.

Label – The default label displayed to the user when configuring the product is “Select attribute name”. If
another label is necessary, enter it here. Though this field is a text field, HTML code can be entered if
enhancements to the text such as bold or color is needed. Description – If List as line item (see above) is
selected, text entered here will be displayed next to the item when listed in the cart/quote. To add an

SAP CPQ Setup and Administration Guide


80 PUBLIC Product Administration
expression here, click the Check button for the Formula Builder [page 11]. If the attribute is set for multiple
selections, such as a check box or multi select listbox, then each selected attribute value will be used as the
description in the cart/quote.

Attribute Quantity – This field allows you to set a default quantity of an attribute for a specific product. For
example, an attribute may be marked as line item, but it may be required (for some reason) to always add 100
of them. So if you put 100 in attribute quantity, it will add 100 in the shopping cart. If a user is allowed to enter
quantity during configuration, the box where he enters quantity can be pre-populated based on this value as
well.

User Can Enter Quantity – Determines whether the user is allowed to enter a quantity for this product. Enter a 1
to unconditionally allow the user the ability to enter quantity, or enter an expression to only allow it under
certain conditions. See Attribute Quantity [page 41] for more information.

 Note

Product’s quantity can be changed through the use of a special attribute called ItemQuantity. If this
attribute exists then the system will use its value to determine the quantity of the main item in the cart. For
more information see ItemQuantity Attribute [page 53].

Propagate Quantity From Main Item – Determines if the quantity of this attribute changes when the quantity of
the main product changes. An expression can be entered which will determine when the quantity should or
shouldn’t change with the main product. Enter a 1 to unconditionally set this attribute to inherit the quantity
from the main product.

Effective Dates – If applicable, enter the dates that this Attribute will be available to a user. Click the Calendar
button to bring up a Calendar where the specific date can be chosen (see Effective Date).

X, Y – Allows custom placement of Attribute on the page by entering in the pixel location on the screen. Pixel
location starts within the tab.

W, H – Determines the height and width of the attribute.

bgCol – Determines the background color of the attribute.

Rows/Columns – This defines the rows and columns that a free input text field will contain. Rows will affect the
height while Columns will affect the width. Both values are based on the number of characters that can fit in the
area.

Click the Triggers button to open up the Triggers options for this Attribute. Triggers are discussed further in this
chapter in Triggers sections . Clicking the Attribute Values button will open the settings for the Values
associated with the Attribute. In order for the Attribute Value to be available to a user, the Value must be
selected. Select an Attribute Value by clicking the checkbox next to the Attribute Value name.

Preselected – This indicates that this Value will already be selected for the user when configuring the product.

Ref. Product – If it is selected then while loading the product, it will be loaded and rules will be executed. After
that catalog code, price, cost, image and product name of the ref. product will be used as catalog code, price,
cost, image and display value of the attribute value. Clicking the symbol at the attribute level will show all
places where that attribute is used.

Add On Price – Each Attribute Value selected can add more to the Base Price that was defined in the Product
Definition. Enter the amount to be added here. If necessary, prices can be negative to subtract from the Base
Price.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 81
 Note

Price will only be added on if the Price Calculation field is not being used for the product on the Product
Definition page. If this field is going to be used, then you need to create an expression to add up all the
attributes’ prices within this field.

Value Catalog Code – Used in specifying the part number. Click the Check button for the Formula Builder [page
11]. Use attribute catalog code when configuring the Product Catalog Code Generator to use this entered
information (see Product Definition Tab [page 57] for more information). If attribute is a line item then this
value will be displayed in the Part Number column in the cart.

Sort Rank – Allows you to sort the values. Lower values are displayed first in the list. If not used, then the order
seen on this screen is what will be displayed to the user.

Active/Inactive Image – When Image Button is selected from the Display As box, these images must be
indicated. Active designates a value that is selected and Inactive designates a value that is not selected. Default
Quantity – Indicates the quantity of this Attribute Value that will be added to the Cart/Quote. Because the
default is 1, it is only necessary to enter a number if the quantity will be greater than 1.

Price Calculation – If the price of the Attribute Value is not always the same amount and may be dependent on
other Attribute Values then an expression can be built to determine the Price of the Attribute Value.Click the
Check button for the Formula Builder [page 11]. If a value is used in both the Add On Price and the Price
Calculation fields, then the Price Calculation will take priority.

Cost Builder – If the cost for the Attribute Value is not always the same and may be dependent on other
Attribute Values then an expression can be built to determine the Cost of the Attribute Value.Click the Check
button for the Formula Builder [page 11].

Desc Builder – This field is main useful only for multi-select attributes, such as a check box. Because the
system cannot determine which value to apply the attribute’s line item description to, by default the attribute
value’s display value is used in the line item description. You can alternatively determine what description is
going to be used in the cart for the current value with this field.

When finished configuring an Attribute, click Next to save the settings. This brings up a confirmation page to
verify the save. A link on that page is directed to the Product Definition page.

 Note

To bypass the confirmation page and stay in Product Attributes definition, simply click another Attribute in
the left column. This will save the current Attribute while staying in the same section.

Controlling Rule Execution on Attributes

This functionality enables admin to control what are the attributes that will trigger the execution of rules.
Product rules are processed only when values of certain attributes are changed, not for each click and that
improves system responsiveness.

In SAP CPQ Setup when product is edited on tab Product Attributes/Options, there is column added called
Triggers Execution of Rules. When user enters any attribute, there is field called Triggers Execution of Rules. If
this flag is checked, when user changes value of this attribute in product configuration, product rules will be
executed. If flag is not checked, changing value will not trigger execution of product rules which may improve

SAP CPQ Setup and Administration Guide


82 PUBLIC Product Administration
performance of the product configuration engine. Default value for this flag is TRUE for all new attributes added
to the product.
In SAP CPQ Setup in product edit on first tab, there is a flag called Product rules are executed only once. Its
default value is FALSE. If flag Process product rules only once is checked for the product, product rules will be
processed only once – not until stable attribute state has been established (which is default mode).

Product Attribute Line Item Ranking

A Parent/Child system looks the following way when added to the quote (a Parent/Child System with a
configurable child item and two line items where one of them is inheriting a product type form a Simple
product):

Parent/Child System:

● 1.1 Attribute line item that inherits product type from Simple product (rank 20)
● 1.2 Attribute line item (rank 30)
● 1.3 Configurable child (container line) item (rank 10)

Line/Child ordering does not fall in line with the ranks. This is because SAP CPQ will first sort the Line Items,
then the Child Items (child items always follow line items).
Now let’s see what happens when application parameter Inherit Only Product Type is set to TRUE. In this case,
attribute line items will be treated as products. In other words, the Parent/Child System treats such attributes
as child items:

Parent/Child System:

● 1.1 Attribute line item (rank 30)


● 1.2 Configurable child (container line) item (rank 10)
● 1.3 Attribute line item that inherits product type from Simple product (rank 20)

When Inherit Only Product Type is set to TRUE attribute line items will only pick up the product type from the
selected product. Such attributes will be treated as line items of the Parent/Child System.

Related Information

Products [page 53]

2.2.11 Product Copy

A Copy button gives you an option to copy existing products in the system. It’s displayed for all products,
including aliases.

If you click on the button, a popup window displays and you can enter the name of the copied product. By
default, the name of the copied product is Copy of <original product name>.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 83
SAP CPQ copies the product’s active revision. If no revision is active, the revision with the highest revision
number is copied. All product fields are copied – all fields from the Product Setup Wizard, database, ASPX
pages and so on.

2.2.12 Product Display Types

The product display type depends on the the configuration level of a product. It is selected in the Product
Definition tab of the Product Editor.

The following product types exist in SAP CPQ:

● Simple Product
● Configurable Product
● Collection of Configurable Products
● System (List) of Configurable Products
● Parent/Child System (List) of Configurable Products

Each display type provides a different behavior for the product. For example the Simple Product display type
requires no configuration in order to be added to a quote. The Configurable Product display type, on the other
hand, requires configuration before it can be added to a quote, and it can enforce any inclusion, exclusion, or
bundling rules.

The display types Collection of Configurable Products, System (List) of Configurable Products, and Parent/Child
System (List) of Configurable Products behave just like a Configurable Product, but are used when a product
nesting or hierarchical product structure is set up.

2.2.12.1 Simple Product

A Simple Product doesn't require any attributes/options to be selected in order to be added to a quote.

Since simple products don't require, the, Configuration Layout and Rules tabs are inactive when the Simple
Product display type is selected

A simple product can have attributes added to it for additional properties, such as color, material, size, and so
on. These attributes can then be used for product comparison or product detail pages (see Product Details
Templates [page 473] for more information).

Simple products and their attributes are most often imported through the Product Import. See Product Import
[page 120] for more information.

From the Catalog, simple products can be checked and added to a quote. By default, they aren’t displayed with
a Configure button, but an inactive Configure button can be shown by changing the Show customize button for
simple products setting in Setup General Application Parameters Product Catalog tab.

When added to a quote, a simple product is displayed as a single main item. Only the Copy and Delete actions
(Item Actions Workflow) are available in the quote.

SAP CPQ Setup and Administration Guide


84 PUBLIC Product Administration
2.2.12.2 Configurable Product

A Configurable Product requires attributes to be selected in order to be added to a quote. These attributes can
have inclusion, exclusion, or bundling rules enforced between them.

The Configuration Layout and Rules tabs are both active when the Configurable Product display type is
selected.

Attributes can be added and updated through the Product Attributes/Options Tab [page 59] in the Product
Editor [page 56].

Configurable products and their attributes are most often imported through the Product Import [page 120].
The import doesn’t provide a way to set up attribute pricing, display types, or product references.

From the Catalog, configurable products can be configured through the Configure button.

 Note

If all the required attributes in the configuration are preselected, then the Add button is active in the
Catalog, which allows the user to add the product to a quote without entering the configuration. This
behavior is also available if there are no required attributes in the configuration.

When added to a quote, a configurable product is displayed as a single main item. If the option List as Line Item
is selected for any attribute, they’re displayed as child items to the configuration in the quote. The Copy, Delete,
Edit, and Refresh actions (Item Actions Workflow [page 388]) are available for configurable products in the
quote.

2.2.12.3 Collection of Configurable Products

Collection of Configurable Products behaves as a Configurable Product in that it requires attributes to be


selected before it's added to a quote. Inclusion, exclusion, or bundling rules can be enforced between
attributes. This product display type is used when setting up product nesting or hierarchical product structure.

Attributes added through the Product Attributes/Options Tab [page 59] in the Product Editor [page 56] must
reference other products (child products). Attributes that reference products must also be set as List as Line
Item.

Since this product display type is used in product nesting or hierarchical product structure, which involves
referencing other products, it can't be imported through the Product Import.

From the Catalog, a collection of configurable products can be configured through the Configure button. The
configuration behaves in the same way as it does for a Configurable Product.

 Note

If all required attributes in the configuration are preselected, then the Add button becomes active in the
Catalog, which allows the user to add the product to a quote without configuring it. This behavior is also
available if there are no required attributes in the configuration.

When added to a quote, the collection of configurable products adds the products referencing the selected
attributes to the quote. These products are displayed as main items in the quote, not as child items (which is

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 85
true for configurable products). Only the products referenced by attributes (child products) are taken into
account. The parent product, which includes the fields under the Product Definition Tab [page 57], is ignored
when added to the quote.

This product display type differs from the System (List) of Configurable Products or Parent/Child System (List)
of Configurable Products display types in that the products added to the quote aren't a part of any system. They
become independent products in the quote. The parent product's configuration is also lost and can't be edited.

2.2.12.4 System (List) of Configurable Products

System (List) of Configurable Products behaves as a Configurable Product in that it requires attributes to be
selected before being added to a quote. Inclusion, exclusion, or bundling rules can be enforced between those
attributes. This display type is used when setting up product nesting or hierarchical product structure.

Attributes added through the Product Attributes/Options Tab [page 59] in the Product Editor [page 56] must
reference other products (child products). Attributes that reference products must also be set as List as Line
Item.

Since this product display type is used in a product nesting or hierarchical product structure, which involves
referencing other products, it can't be imported through Product Import.

From the Catalog, the system (list) of configurable products can be configured through the Configure button.
The configuration behaves in the same way as it does for a Configurable Product.

 Note

If all required attributes in the configuration are preselected, then the Add button becomes active in the
Catalog, which allows the user to add the product to a quote without entering the configuration. This
behavior is also available if there are no required attributes in the configuration.

When added to a quote, the system (list) of configurable products adds the products referencing the selected
attributes to the quote. These products are displayed in the quote as main items, not child items (which is true
for configurable products. Only the products referenced by attributes (child products) are taken into account.
The parent product, which includes the fields under the Product Definition Tab [page 57], is ignored when
added to the quote.

This product display type differs from the Collection of Configurable Products display type in that the products
added to the quote are still part of the system. The parent product's configuration isn't lost and can be edited
by clicking the Edit action next to any products that are a part of that system.

The System (List) of Configurable Products display type differs from the Parent/Child System (List) of
Configurable Products display type in that the main item is ignored, and only the products referencing
attributes are taken into account.

2.2.12.5 Parent/Child System (List) of Configurable Products

Parent/Child System(List) of Configurable Products behaves like a Configurable Product in that it requires
attributes to be selected in order to be added to a quote. Inclusion, exclusion, or bundling rules can be enforced

SAP CPQ Setup and Administration Guide


86 PUBLIC Product Administration
between the attributes. This product display type is used when setting up product nesting or hierarchical
product structure.

Attributes added through the Product Attributes/Options Tab [page 59] in the Product Editor [page 56] must
reference other products (child products). Attributes that reference products must also be set as List as Line
Item.

Since this product display type is used in a product nesting or hierarchical product structure, which involves
referencing other products, it can't be imported through Product Import.

From the Catalog, parent/child system (list) of configurable products can be configured through the Configure
button. The configuration behaves in the same way as it does for configurable products.

 Note

If all the required attributes in the configuration are preselected, then the Add button is active in the
Catalog, which allows the user to add the product to a quote without entering the configuration. This
behavior is also available if there are no required attributes in the configuration.

When added to a quote, parent/child system (list) of configurable products add the products referencing the
selected attributes to the quote. These products are displayed in the quote as main items, not child items
(which is true for configurable products). Not only are the products referenced by attributes (child products)
taken into account, but the parent product is also added to a quote, which includes the fields under the Product
Definition Tab [page 57]. Basically, this display type is a combination of a Configurable Product and a System
(List) of Configurable Products. Not only are the referenced products displayed in the quote, but also the main
item and any attribute line items that aren't referencing products.

This product display type differs from the Collection of Configurable Products display type in that the products
added to the quote are still a part of the system. The parent product's configuration isn't lost and can be edited
by clicking the Edit action next to any of the products that are part of that system.

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 and the products referencing attributes are added to
the quote.

2.2.13 Product Validation Messages

Product validation messages are similar to product rules, but instead of executing an action during the
configuration change, they display as a message if the condition is satisfied. They’re executed after the
configuration change (that is, when a user selects attribute value in the Configurator).

Validation messages have the following structure: validation name + condition stating when the message
displays + the message that is displayed in the Configurator.

 Note

Inactive, or expired (current date is outside of the specified start and end dates) validation messages are
ignored.

If Make product incomplete is checked, and the condition evaluates to 1 (true), and message is displayed, the
product is still incomplete even though all required product attributes are selected.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 87
If Make product incomplete isn't checked, and Show in responder isn't checked, and the condition evaluates to 1
(true), the message isn't displayed but can be checked with a CTX tag Product.Validation(validation
name).

The CTX tag Product.Validation(validation name) is meant to only be used in attribute labels, to show
a message in addition to the responder. If used in product rules it returns unexpected results depending on the
rule order and configuration, since all rules haven't been executed and configuration hasn't been stabilized.

2.2.14 Create Product Version

The purpose of this feature is to enable you to create product versions, modify them and then activate them.
Meanwhile, the original product remains intact and is used in SAP CPQ. You can decide when to activate a new
product version or to roll back to the previous one.

Procedure

1. Go to Setup Product Catalog Products

The product list displays.

2. Click on the Product Version action ( ).

A table with all product versions for the selected product is displayed.
○ If you click on the Edit action, the standard SAP CPQ product setup page opens. Here you can modify
this version as you want and save changes.
○ If you click on the Delete action, the system checks if there’s any quote that contains this product
version and if so, it doesn't delete the version. Otherwise, that product version is deleted.
○ You can Add, Activate, Edit, Preview, Configure, or Check Product Details for the product version by
clicking on the appropriate link or button on the product versioning page.
3. Click Create New Version.

A popup window for creating a new version is displayed.


4. You can edit version number or accept the one that SAP CPQ offers, and enter description.
5. Click Save.

The popup window is closed, and the new product version appears in the list of versions for the product.
6. Activate the new version to make it default.

SAP CPQ Setup and Administration Guide


88 PUBLIC Product Administration
Next Steps

In the Workflow edit page ( Setup Workflow/Approval Workflow ) there are two options for quote
actions:

● Prompt Users For Update to New Product Versions - If the selected quote action (for example, Edit) is
executed, a message states that there’s a new product version available for some items and requires
confirmation from you whether to update those items or not.
If you confirm, all appropriate items are upgraded and the quote action is executed. Otherwise, the action
is executed without upgrading items to the new version.
● Automatically Update Items to New Product Version - If the selected quote action is executed, all items are
automatically upgraded to their new product versions if a new version is available.

2.2.15 Set Configuration Based on XML

This feature enables you to preconfigure the product based on the XML configuration that you’ve already
defined. For this purpose, tag <*SetConfigurationBasedOnXML(xml)*> has been introduced.

The tag accepts XML as an input string parameter, which is parsed and used to preconfigure the product. While
parsing the input XML, SAP CPQ tries to match attributes from XML to attributes in the product. If some
attribute from XML couldn’t be matched to any product attribute, it’s skipped. SAP CPQ continues with
matching other attributes and setting their values without interruption and doesn't display any error.

The only thing that can break the process is an invalid XML input (XML wasn't well formed). SAP CPQ doesn't
display an error but it can't process any attributes.

Besides standard usage, this tag can be used through Iron Python scripting as well.

Since the <*SetConfigurationBasedOnXML(xml)*> tag doesn't support setting multiple attribute values,
you can use this script to select multiple values in a checkbox attribute:
Product.Attributes.GetByName('AttributeName').SelectDisplayValues('NameOfCheckBox1'
, 'NameOfCheckBox2', 'NameOfCheckBox3').

Look at the following examples to get familiar with the feature:

Example

This simple example shows how the input XML is supposed to look like if you want to set configuration for the
product that doesn’t contain any containers.

For this example, we use our sample product named e-car CallidusCloud, which has a few attributes. We added
an attribute Set configuration, which is of type Button. Also we’ve developed an IronPython script that provides
an input XML and parses the <*SetConfigurationBasedOnXML()*> tag. This script is attached to the Set
configuration button and once the button is clicked, the product becomes preconfigured based on the provided
XML.

At first, our product is loaded into the Configurator. No attribute is selected yet.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 89
Then, when Set button is clicked, some attributes get populated.

Here is the underlying XML file that has been provided as input to the SetConfigurationBasedOnXML tag:

<?xml version="1.0" encoding="utf-8"?>

<Attributes>
<Attribute><Name>Exterior Color</Name><Value>gray</Value></Attribute>
<Attribute><Name>Number of airbags</Name><Value>8</Value></Attribute>
<Attribute><Name>Equipment</Name><Value>Classic</Value></Attribute>
<Attribute><Name>Fuel</Name><Value>Petrol</Value></Attribute>
<Attribute Quantity="5"><Name>warranty</Name><Value>YES</Value></Attribute>
</Attributes>

The entire process is driven by the IronPython script that was attached to the Set configuration button. Here is
the script:

xml = '<?xml version="1.0" encoding="utf-8"?>'


xml+= '<Attributes><Attribute><Name>Exterior Color</Name><Value>gray</Value></
Attribute>'

SAP CPQ Setup and Administration Guide


90 PUBLIC Product Administration
xml+= '<Attribute><Name>Number of airbags</Name><Value>8</Value></Attribute>'
xml+= '<Attribute><Name>Equipment</Name><Value>Classic</Value></Attribute>'
xml+= '<Attribute><Name>Fuel</Name><Value>Petrol</Value></Attribute>'
xml+= '<Attribute Quantity="5"><Name>warranty</Name><Value>YES</Value></
Attribute></Attributes>'

TagParserProduct.ParseString("<* (" + xml + ")*>")

Example

This example shows how the input XML looks like if the product contains container attributes.

<?xml version="1.0" encoding="utf-8"?>

<Attributes>
<Attribute Quantity="2">
<Name>AttrWithQuantity</Name>
<Value>1</Value>
</Attribute>
<Attribute>
<Name>Memory</Name>
<Value>256</Value>
</Attribute>
<Attribute>
<Name>Monitor</Name>
<Value>F19</Value>
</Attribute>
<Attribute>
<Name>Processor_name_of_att</Name>
<Value>P2</Value>
</Attribute>
<Attribute>
<Name>Warranty</Name>
<Value>4 yrs</Value>
</Attribute>
<Attribute>
<Name>Hard disk</Name>
<Value>60</Value>
</Attribute>
<Attribute>
<Name>Nested-FirstAttribute</Name>
<Rows>
<Row>
<Product>
<Name>Nested-First</Name>
<CatalogCode>PN-SMB10</CatalogCode>
<Attributes>
<Attribute>
<Name>Memory</Name>
<Value>3GB DDR2</Value>
</Attribute>
<Attribute>
<Name>Processor_name_of_att</Name>
<Value></Value>
</Attribute>
<Attribute>
<Name>Monitor</Name>
<Value>T17</Value>
</Attribute>
<Attribute>
<Name>Hard disk</Name>
<Value>60</Value>
</Attribute>

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 91
<Attribute>
<Name>Warranty</Name>
<Value>123<a href="#">test</a></Value>
</Attribute>
<Attribute>
<Name>NonProductContainer</Name>
<Rows>
<Row>
<Columns>
<Column>
<Name>Test1</Name>
<Value>12312321</Value>
</Column>
<Column>
<Name>Test2</Name>
<Value>Intel Pentium 3.0GHz</Value>
</Column>
</Columns>
</Row>
</Rows>
</Attribute>
<Attribute>
<Name>ProductContainer</Name>
<Rows>
<Row>
<Product ExecuteRules="True">
<Name>Smb2 Simple Computer container+</Name>
<CatalogCode>PN-SMB10</CatalogCode>
<Attributes>
<Attribute>
<Name>Memory</Name>
<Value>256</Value>
</Attribute>
<Attribute>
<Name>Processor_name_of_att</Name>
<Value>A3</Value>
</Attribute>
<Attribute>
<Name>Monitor</Name>
<Value>T17</Value>
</Attribute>
<Attribute>
<Name>Hard disk</Name>
<Value>60</Value>
</Attribute>
<Attribute>
<Name>Warranty</Name>
<Value>1232131232323</Value>
</Attribute>
</Attributes>
</Product>
<Columns>
<Column>
<Name>Memory</Name>
<Value>60GB</Value>
</Column>
<Column>
<Name>Monitor</Name>
<Value>T17</Value>
</Column>
<Column>
<Name>Processor</Name>
<Value>A3</Value>
</Column>
<Column>
<Name>AttributeTest</Name>
<Value>aaa</Value>
</Column>

SAP CPQ Setup and Administration Guide


92 PUBLIC Product Administration
</Columns>
</Row>
</Rows>
</Attribute>
</Attributes>

2.2.16 Simple Product Mass Updates

The purpose of this feature is to make it easier for you to export or import a large number of simple products.

Mass Export

In Setup Products , there’s a new radio button group where you can select whether products are
exported to Excel or as a CSV file.

Default selection is Excel. When you change the selection, your choice is remembered so that the next time you
export products (not necessarily in same session), the same format is used. If Excel is selected, the current
limit is used (according to the application parameter) for maximum number of rows per exported file, which is
set to 2000 by default.

If CSV is selected, limit is 100 000 per exported file. When products are exported to several files, the same
header is used for all files. All attributes are displayed in the header.

If the checkbox Export products without attributes is selected, the Excel file doesn't contain any attributes. This
checkbox isn't selected by default.

If option Export to CSV is selected, a new set of radio buttons is displayed and it decides the delimiter character
for cells in CSV file (tab or comma).

Import

When importing files, the limit is 20 000 products if the import file contains only these columns:

● ExternalId
● UPC
● MPN
● Inventory
● LeadTime
● FamilyCode
● PRODUCT_ACTIVE
● PRODUCT_NAME
● CPQ ID
● CPQ ID

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 93
2.2.17 Triggers

Triggers allow you to perform an action, or actions, when an event occurs on an attribute. They’re useful for
situations when you want to reset an attribute when another attribute is selected or has changed selections.

For example, there’s an attribute Unit of Measure that determines what length is going to be entered in another
attribute, Length. Unit of Measure includes the values Inches and Centimeters. If a user selects Inches, types in
12 in the Length attribute, but then decides to change Unit of Measure to Centimeters, then we need to reset
Length so that the user knows to enter a centimeter measurement instead of an inches measurement.

Triggers are defined for each individual attribute. You can define them in the Product Attributes page of the
desired product. Once you click the Trigger button in the attribute’s setting box of the desired attribute, the
Trigger panel opens up. Here, you can define actions that occur under each event:

● Change Trigger – activates when the user changes the previously selected value within the attribute.

Example

<*ResetAtt(Length)*> - Placed in the Unit of Measure attribute, this resets the attribute Length when the
selection has been changed for the attribute Unit of Measure.

● Select Trigger – activates when the user selects any value from the attribute without the previous selection.

Example

<*ResetAtt(Length)*> - Placed in the Unit of Measure attribute, this resets the attribute Length when the
selection has been changed for the attribute Unit of Measure.

● Reset Trigger – activates when the user deselects a previously selected value within the attribute.

Example

From our previously mentioned example, the Reset Trigger of Length is run after Change Trigger or Select
Trigger of Unit of Measure.

 Note

The Change Trigger isn’t activated by attribute's first selection (Select Trigger is activated), and isn't
activated by the attribute's deselection (Reset Trigger is activated). The Change Trigger activates when
there’s only a full change, which occurs when a new Value selection resets the previously selected value.

It's also possible to have multiple triggers in the same attribute, and multiple actions in each trigger (separated
by a semicolon). Conditional expressions can also be used within each trigger to determine whether or not an
action tag can be run. Triggers can be entered manually, or by using the Formula Builder [page 11]. To invoke
the Formula Builder for a trigger, click on the V button positioned near the lower left corner of the appropriate

SAP CPQ Setup and Administration Guide


94 PUBLIC Product Administration
trigger. In the Formula Builder window, the Actions box under Triggers/Rules only contains actions appropriate
for triggers. Conditional Tags that return TRUE or FALSE, such as the ANYSEL tag, aren't available for Trigger
expression building in the Formula Builder, but they can be used.

 Note

Clicking Next or clicking another Attribute Name in the left column on the Product Attributes/Options page
saves a trigger and any other information changed for that attribute.

Triggers run before Attribute Dependencies and Rules in the system’s processing order. See the Rules
Administration [page 65] page for more information.

2.2.18 Unit of Measurement

The Unit of Measurement attribute refers to the attribute in the product configuration that displays values of
certain measurement types, such as Pressure, Temperature, Length, and so on.

When these attributes are created, their values are expressed in default units. You can select measurement
units for any measurement type. Based on your selection of the measurement unit, SAP CPQ converts
attribute values to the selected unit. The purpose of this functionality is to display values of Unit of
Measurement attributes in the units that you select.

The default unit of measurement is set up per user. The Unit of Measurement is available in Setup Product
Catalog .

● You can add as many measurement types and measurement units as needed.
● Once a measurement type and its units are added, the default unit can’t be changed anymore.
● If the default unit has to be changed, you need to delete the existing measurement type and to create it
again.
● If a measurement type that needs to be deleted is used in attributes, you need to delete those attributes
first, or change the attribute type, in order to remove the measurement type.

2.2.18.1 Unit Mapping Table

Unit Mapping Table contains the units of measurement that have been added to the system. They can be
downloaded.

Once you've added at least one default unit, you can download a Unit Mapping Table from Setup Product
Catalog Unit of Measurement by clicking Export Conversions. You can add the table once you export the
converted values.

If there are no attributes belonging to a certain measurement type, the exported Unit Mapping Table is empty.
For example, if you download a table containing no attributes whose measurement type is Pressure, the
downloaded table is empty.

The Unit Mapping Table format is as follows:

● The first column is a Default unit.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 95
● The table has as many columns as there are added measurement units.
● The number of rows in the Unit Mapping Table is defined by a number of unique values of measurement
attributes.
● If there are attributes of a certain measurement type in the system, the exported Unit Mapping Table
contains the attributes' display value, and no duplicates.
● The column order is the same as the order in which measurement units are added.

If you already completed the conversion of a certain value, the Unit Mapping Table contains converted values as
well.

When two attributes use the same measurement, for example Pressure, the display value can be shown with a
space (25bar) or without a space (25 Bar). The format of the display value is defined by the system (or by
administrators) which creates Unit of Measurement attributes. When a Unit of Measurement attribute is loaded
in product configuration, the attribute display values are read from the Unit Mapping Table. The attribute values
format is as follows: 0.25 Bar and 0.25 bar are the same values, but one of the values exists in the unit
mapping table. The format of the first value entered in the system is applied to all other attributes with the
same values.

Example

New attribute: Attribute A with values 0.25 Bar, 0.35 Bar, 0.45 Bar.

New attribute: Attribute B with the following values, 0.25 bar, 0.35 bar, 0.45 bar, is displayed the
same way in configuration. However, in table mappings, the values 0.25 Bar, 0.35 Bar, and 0.45 Bar are
displayed.

 Note

0.25Bar and 0.25bar are the same values, but one value is present in the Unit Mapping Table. The format
of the first value entered in the system is applied to all other attributes with this value.

If a new value is compared to a value entered when you've completed a conversion for the last time, the new
values are added to the column Pressure, but values aren't converted into other units.

You need to download a Unit Mapping Table, conduct a conversion, and put the table back into the system.

2.2.18.2 File Import

This topic contains the procedure for importing units of measurement into SAP CPQ.

Procedure

1. Click the Edit icon of your Unit of Measurement.


2. Click Browse to choose your file.

SAP CPQ Setup and Administration Guide


96 PUBLIC Product Administration
3. Click Save.

The import is completed automatically once you upload the file. Creating measurement types and units
has to be completed prior to creating the attribute of the Unit of Measurement type.

2.2.18.3 Attribute Type - Unit of Measurement

Measurement attributes need to be created in the system to support Unit of Measurement in product
configuration.

You can create a new attribute type ( Setup Product Catalog Attributes ). As soon as Measurement is
chosen as an attribute type, a Unit of Measurement field is displayed. Here, you can select one of the
measurement types you've previously added to the system. This field is required.

At this point, you can add attribute values and attribute value codes, in the same way you do for other attribute
types; and add the attribute to the product.

2.2.18.4 Unit of Measurement on User Page

Units of measurement can also be accessed from User Menu User Page .

As soon as a new measurement type is added to the system, that measurement type becomes a standard field
on the User Page and User Setup.

The Unit of Measurement field labels can be translated to the user’s language by adding its key to the
dictionary. The content of these fields, however, can’t be translated. You can add a default value to the Unit of
Measurement fields in User Setup. A default value can't be added through import, Users functionality, or user
API.

2.2.18.5 Unit of Measurement Scopes and Limits

This topic contains scopes and limits of the Unit of Measurement functionality.

Here are the scopes of the Unit of Measurement functionality:

● When a user edits a saved configuration, Favorites, or a configuration from an existing quote, and if
measurement attributes have selected values, the system shows the selected value of measurement
attributes in unit selected when the Edit action was executed.
● When a new product is created via API, the Unit of Measurement attribute type is supported. API is
expanded to support the Measurement type along with the attribute type.
● Creating an attribute type Unit of Measurement through Export/Import functionality is supported.
Importing attributes with Unit of Measurement type is required when you want to make an attribute
determined by a unit of measurement. When you conduct your Attribute Import, the Excel file needs to
include a column called Measurement where you can enter your Display Values and your Unit of
Measurement.These values must be entered in the exported file in order to be converted from your default
value (meters, for example) to another value (kilometers, for example).

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 97
● Making rules with this type of attribute and IronPython scripts is supported.
● Attribute Unit of Measurement tags - all SAP CPQ attribute tags have to work with this new attribute.
● Attribute Unit of Measurement in Deploy/Send Changes functionality – entire settings regarding
Measurement and the Unit of Measurement are deployed to a new environment.

Here are the limits of the Unit of Measurement functionality:

● Attribute Unit of Measurement translation - values of measurement attribute can’t be translated into other
languages. For example, translating 25,000 Pаscale in English to 25,000 Паскаль in Russian isn’t
supported.
● Attribute Unit of Measurement in quote - tags in the quote return the value of the default unit. The
converted values in the quote aren’t supported by the design; only tags in the Configurator return
converted values.

2.3 Categories
Categories are used to logically segment products. Once created, products or subcategories can be added to
them.

Categories, when displayed to the user, can include an image, a description, and can be visible only to users
with the correct rights. Selecting the Categories link in Setup Products brings up the Categories
Administration screen. New installations show only an Add button. After categories have been created, they can
be modified, deleted, or made inactive.

The widget for displaying visibility permissions contains:

● Permission groups which are able to see this category - When the flag Visible to all is selected, permission
groups lists are grayed out. When the flag isn't selected, you can select permissions for any user types,
companies, markets, brands, and permission groups.
● Visibility of products in this category - When you select this checkbox, the permissions defined for this
category are copied to the products, which belong to this category (not to its subcategories.
● Visibility of sub-categories - When you select this checkbox, the defined permissions for this category are
copied to the subcategories and products, which belong to this category.

If you enter a category where the default catalog view has already been selected for one of its parents (direct
parent, grand-parent, and so on) you can't change anything for this category. You can enter the parent category
by clicking on the provided link in the Default Catalog View box.

After you finish setting up Categories, when users enter particular category, SAP CPQ checks whether the
default catalog view is selected for particular category. If this category has default view defined (for itself or for
its parent, grandparent, and so on), this default catalog view is applied. If no default view is applied for a
category, SAP CPQ uses the current catalog view. When users log into SAP CPQ, the current catalog view is set
to default catalog view defined on user type level.

Choosing an existing Category brings up the Category Properties page. Selecting Add brings up a blank
Category Properties page.

The properties that need to be defined are highlighted in yellow:

● Category Name - the text is limited to 50 characters.


● Category Description - free style text can be added to provide a brief summary of the category or products
within the category; can contain HTML to enhance the description.

SAP CPQ Setup and Administration Guide


98 PUBLIC Product Administration
● Rank - the order of appearance in the Category page.
● Active - makes the category active; can activate or deactivate for testing, or if categories are seasonal.
● Effective dates - determines the dates during which this category is active.
● Redirect to URL - when a user chooses this category they’re redirected to the URL from this field; only
available when Product Redirection is allowed in Application Parameters.

Category Image

You can allocate up to three images per category. These images appear only on the Categories page in Catalog
on the user side.

The Category Image acts as the category’s main image and is always displayed in the Catalog. You can use
Additional Image 1 and Additional Image 2 options if you want to define additional images.

 Note

Additional Images feature isn’t available in the Responsive Design.

Additional images aren’t displayed by default. You can modify XSLT transformation, so that those images are
displayed in Catalog. To enable the display of those images in Catalog, go to Setup UI Design Custom
Category UI .

When you click Add New, you can select the Category for which you want to define the images. Then you can
select the XSLT file for transforming these images. You can define your own transformation file, select the
default file, or change the default file if needed.

For this feature to work properly, the appropriate transformation has to be applied for all categories in the
Catalog. You can do this in Setup UI Design Catalog Layout . There, you can select the appropriate
XSLT file.

The Mobile Only Image option is optimized for iOS mobile operating systems. When you upload a photo here,
the photo is displayed in Catalog, but only on mobile computing platforms, and only as part of the SAP CPQ
application.

User Side

In order for the additional images to be visible in Catalog, select the Custom View option by clicking the Custom
button with a wrench icon.

● Attributes: Sets the attributes that are available to products in this category. In order for a product to use
an attribute, it must be added to the category. You can avoid adding attributes to a category by using the
Product Setup Wizard, which doesn't require you to add attributes to the category before using them in a
product.
● Tabs: Defines which tabs are available for products in this category. Ranks for each tab determine the order
of appearance on the Product page within this category.
● Security: Determines which user groups can see this category on the Categories page.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 99
● Sub-Categories: Lists any subcategories that have been added to this category. You can add a new
subcategory by clicking the Add a Sub-Category button.
● Delete Category and all Sub-Categories: Deletes the current category with all its subcategories.

Managing Categories

Managing Categories allows you to create subcategories within the directory. You can create subcategories in
Setup Product Catalog Categories . You can click Select to choose the category's parent category in the
category editing screen.

2.4 Product Attribute Visibility


This section allows setting visibility of attributes in SAP CPQ.

To access this section, go to Setup Product Catalog Product Attribute Visibility Restrictions . Here, you
can see the list of all available attributes.

Visibility restrictions are user type-based, so you first need to select a desired User Type in the dropdown
menu. You can make any attribute invisible in the Catalog and the Configurator by ticking a checkbox next to it
for users who belong to the selected User Type.

Furthermore, if you wish to use the same attribute visibility restrictions for more than one user group, you can
copy the settings with the Copy Settings From option.

2.5 Simple Product Import


The Simple Product Import administrative section allows you to create as many simple products in an Excel
spreadsheet as needed, and then upload them into SAP CPQ.

Once imported, simple products can easily be converted to configurable products. This makes creating
multiple simple products easier, and it also makes the creation of configurable products easier, too. Simple
Product Import allows not only importing new simple products, but user can also export any existing simple
products into an Excel spreadsheet. This allows quickly updating pricing, descriptions, or any other field that
the spreadsheet contains. Once reuploaded, the modifications are made to the simple products in the system.

The Simple Product Import administrative section can be accessed under the Products menu in Setup. From
this page user can download the template for importing new simple products, export existing simple product to
this template, or upload and import new simple products.

The template provided as a download is used for uploading new simple products. It comes with some pre-
entered values to direct you in creating the products. It’s important to delete these entries, otherwise when the
user uploads the spreadsheet, these products are created .

When creating entries in the spreadsheet, value in the System ID column shouldn't be added. This value is
strictly for the system’s use. When products are exported, this column is filled with that product’s system ID.

SAP CPQ Setup and Administration Guide


100 PUBLIC Product Administration
The Index column is used by the system when importing the products. This allows the system to uniquely
identify each product row in the spreadsheet. User can easily fill in this column by using Excel’s fill feature.
When creating entries for an attribute and its values, start the index by 1 and increase it by 1 for each attribute
value on the spreadsheet.

To create a new simple product entry in the spreadsheet, a user needs to enter a new row for each product.
There’s no need to enter values for every column. The required columns are Index, Product Name, Price,
Product Type, and Categories. If a Product Type or Category included hasn’t been created in the system yet,
then they’re created during the import.

The Price, Cost Builder, and Cat Code fields can contain SAP CPQ tags that generate the value automatically.
For instance, users can use the AUX tag to pull these values from a custom table. Configuring products in this
way allows updating pricing and part numbers (Cat Code) easily by simply updating the custom table.

Enter the category the product belongs to in the Categories column. By default, any new categories are created
at the top-level category. Users can create and include the product in subcategories if needed. To do this, the
subcategory name needs to be preceded with the parent category followed by the > symbol. For instance, if
users want to add a product to a new subcategory Printers that is in a subcategory of Hardware and
Accessories, they need to represent that in the following order: Hardware Accessories Printers .

Attributes for the product need to be entered in the same row as the product, then their values need to be
included underneath the name. Additional attributes can be added in subsequent columns in the same way.
Attributes can have as many values as needed. Once users have entries for all the products they wish to create,
they can save the file then go into the Simple Product Import administrative section. Afterwards, they can click
the Browse button in the Import Products section of the page. Afterwards, they can select the modified
template and click Import.

 Note

It's important not to modify the template file. The System ID, Index, Product Name, Price, Cost Builder, Cat
Code, Product Type, Description, Categories, and Attributes columns need to exist for the upload to be
successful. Users can view restrictions and required columns on the Important Info sheet tab of the Simple
Product Import Template.

During an import, the system checks the file to ensure that it doesn't have any invalid entries. If the import
process takes more than a few seconds, system also displays import progress real time (it shows the number
of loaded simple products). Each record is defined as each product entry in the spreadsheet. Errors are shown
if the required fields aren’t entered for a product. The system processes the entire spreadsheet and returns the
status.

If there is at least one valid product to import, users can either import it with a preview or without. If Import
With Preview is chosen, then user has the option to select or reject products before they’re saved into the
system. This view also shows any invalid products that were found during processing of the spreadsheet.
Choosing Import Without Preview imports all the attributes without a review screen first. In addition, if there are
some invalid records in the spreadsheet, users can choose to only see those records by selecting Import With
Preview of Invalid Records Only.

 Note

The Status column does show only a partial error message. To get a full error report, users need to click on
the error message itself.

Whichever selection was made, new products are saved to the system by clicking Save.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 101
With exception to the Import Without Preview selection, which saves all valid products immediately. Any new
Product Types, Categories, and Attributes are created in the system automatically as well. In addition to
uploading new products into the system, the Simple Product Import administrative section allows exporting all
existing users in the system to a spreadsheet similar to template that you can download. Exporting all products
can be useful because it allows users to see all the simple products in a list where they can modify Pricing,
Description, Cat Code, or any other field in one single file.

Clicking Create Template by Exporting Products from Selected Categories or Create Template by Exporting All
Products button in the Export Products section on page exports all simple products. Exporting Products from
Selected Categories allows exporting those simple products in selected categories, while Exporting All Products
exports all the simple products in the system. The system gathers all the simple products and enters them into
a spreadsheet in the same format of the template. A link is then provided where users can download the file.
With this file, users can modify the existing products or add new ones to the end of the list.

 Note

Even though the preview screen displays all the products in the spreadsheet, not all are saved into the
system. Only the products without a value in the column are SystemID saved as new products.

What Defines a Simple Product?

A simple product is one that has attributes assigned to it, but they can’t be configured. Users can add the
product to their quote directly from the Categories page, or as a part of the multiple-product configuration like
Collection of Configured Products and Configurable System.

Though a simple product can have attributes, these attributes ideally only have one attribute value added to
them. The attributes can’t be configured, which means that only one attribute value can be selected. If you
wish these attributes to be displayed to the user in the quote, you need to set them as Line Items. Setting
attributes as Line Items displays the attributes under the simple product where, if set up for it, the quantity can
be changed and discounts added. In addition, attributes added to simple products can be displayed in a
generated quote or searched for on the Load Quote page without being Line Items.

When using simple products to be added to the quote from the Catalog, or the Categories screen, you need to
ensure that any attribute values you wish to be selected for that product are preselected. This ensures that you
can search by the values (using Key Attributes) and see them as line items in the quote (as long as they’re set
as line items).

Attributes in Simple Products can have multiple values, if needed. These multiple values can be used in multiple
product configurations. Users can select a desired value for an attribute, which is then selected for that simple
product.

Simple products can play many roles in product modeling in SAP CPQ. For instance they can be used in
multiple product configurations, such as a Collection of Configurable Products or a Configurable System, in
BOM management, or simply as products that are added to a quote without being configured.

 Note

For Free Trial Installation, there’s no menu item with name Simple Product Import under Product item in
Setup menu.

SAP CPQ Setup and Administration Guide


102 PUBLIC Product Administration
2.6 Product Types

Product Types can be used in tracking quotation and order information. You can also separate subtotals in the
quote for each product type, which gives users the ability to use different discounts for different product types.

Each product created in the system can be assigned one Product Type. Multiple product types within a product
can be achieved by setting attributes within a product to a different product. This is discussed more in depth
later.

Selecting the Product Types link under the Products menu gives you access to the Product Types administrative
section. Here, Product Types can be Deleted or Edited. You can add a new Product Type by clicking the Add New
button.

Adding Multiple Product Types to a Product

Products can have only one product type. However, it's possible for a product to have multiple product types.
To achieve this, you need to configure attributes within the product to a different product type. This is done
through the Ref Product field in the product attributes definition screen.

The Ref Product field is used for connecting an attribute to another product. In this way, it’s possible to create a
parent child relationship between products. There are many benefits in doing this, including the ability to
configure the child product within the parent product. This is discussed more in depth in the Product Display
Types [page 84] topic.

One benefit of creating this parent child relationship between products is the sharing of product types. When
you reference another product in an attribute through the Ref Product field, the attribute takes on the same
product type as the product it’s referencing. This is useful when the referenced product has a product type
other than the parent product.

To take full advantage of a referenced product’s different product type, it's best to mark the attribute that
references the product as a line item. This way the attribute shows up separately from the main item in the
quote and includes a different product type. The quote then has separate product type subtotals, which can be
discounted (assuming you have the permission to do so).

Here is a simple example of how an attribute can be set up to have a separate product type from the main
product. We’ll use the SMB2 Desktop Computer product, which has a product type of Hardware in this example.
This product contains an attribute called Software that we set up with a product type of Software.

First we need to make sure that we have a separate product with the product type of Software. This product
can be a simple product without any attributes. Next we’ll go to the SMB2 Desktop Computer and go to the
attribute’s administration. In the Reference Product field we need to click the Select button. This displays a pop-
up window where you can search for the product that you’re going to reference. Here we will choose the
Software product. It’s named the same name as the product type to help us quickly identify it. Once it’s
selected the product is entered in the Referenced Product field.

 Note

In this example, we’re using the Product Setup Wizard to define the referenced product. This can also be
done through the manual product definition, but instead of a Select button you see a dropdown box.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 103
Finally, we set the attribute as a line item so that we’re able to see the attribute listed separately from the main
item in the shopping cart. We’ll also see the subtotals for Software and Hardware in the Product Types section of
the cart.

2.7 Sequence Substitution

Part numbers can become lengthy and sometimes need to be limited in length by the underlining business
systems (ERP). Because of this, there’s a need to serialize an entire part number. or a part of it. Intelligent
Serialization implies that a part number can be serialized while preserving the part number logic; hence the
same configuration always yields the same serial number.

A simple example of this would be four attributes with three values each: Color (Blue, Red, Green), Material
(Wood, Aluminum, Steel), Voltage (120, 480, 600), and Size (Small, Medium, Large). If it's necessary to
uniquely capture these selections in the part number, then characters to represent these values. In this
scenario, a part number can be: Prefix-BW1M for a Medium-sized Blue widget, made out of Wood that works
with 120 Volts. However, if restricted to only two characters in the part number to represent these 4 attributes,
an intelligent Sequence Substitution would be defined, where any combination of these four attributes would be
replaced with a sequence. The sequence would be defined to range from 1 to 81 (34) and an attribute
mentioned above.

To define a Sequence Substitution, you first need to define a numeric sequence; for this example we’re using 1–
81. You can find the Sequence Substitution page in Setup Product Catalog SEQ Substitution .

Here Sequence Substitution can be edited, deleted, or copied by selecting the appropriate button next to the
substitution's name. New sequence substitutions can be created by clicking Add New. When you're creating a
new sequence substitution, you need to fill in several fields:

● Name - The name that is called by the CXSUB function.


● Description - More details about the sequence substitution.
● Sequence - Selection of sequences that are used in the reference.
● Attributes - Selection of attributes that are referenced by the same number when selected.

Once a sequence substitution is defined, it can be used in a formula for building a part number using a special
tag called <*CXSUB(sequence substitution name) *>. Using sequence substitution in a product can be
performed by entering <*CXSUB(SEQsub)*> in Product Catalogue Code Generator. In this example, SEQsub is
the created sequence substitution. To the user, the product number looks like any other product number or a
serial code.

SAP CPQ Setup and Administration Guide


104 PUBLIC Product Administration
2.8 Attaching IronPython Script on Button Attributes

The purpose of this feature is to enable administrators to attach an IronPython script on button attributes. This
gives you the option to define a script that is executed when users click the attribute button. This can include
adding rows in the container, selecting attributes, as well as any other operation associated with attributes.

Use Case No.1

● In the Configurator, the user clicks the button.


● IronPython script is attached to the button attribute.
● Once the button has been clicked, IP script is executed and other attributes within the Configurator are
populated.

Use Case No. 2

● An attribute is configured as a button in the Product Attributes/Options section of a configurable product.


● An IP script is linked to the attribute.
● The script queries the web and downloads custom information.
● The user clicks the button on the Configurator tab.
● The downloaded information is linked through the same script to other attribute linked to the configurable
product.

Administrators can attach existing global IronPython script on product attributes tab under the product
administration page, when the chosen attribute type is a Button.

If the autocomplete search doesn't find the script you’re looking for, the following message pops up:
Autocomplete search didn’t find any script with this name.

When the autocomplete search locates the script, it’s displayed at the top of the list. Arrow icons become
available for you to navigate and set the execution of the scripts. A Delete icon is also available if you want to
remove the added script.

A magnifying icon is located next to the autocomplete search box. When you click on it, a list of all global scripts
pops up.

The following columns are displayed in the grid of the list:

● Name
● Execution Time
● Code
● Description
● Active
● Modified by

You can search the script by typing the text in each of these columns. You need to select the script by clicking
the Select button. Once you click the Select button, the script is added to the top of the multiple-select list.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 105
2.9 Attribute Import

In the Attribute Import page, you can export/import attributes in several ways.

You can perform attribute import by following one of these workflows:

● Download a sample template, fill out attribute details, and then import the file.
● Export all attributes in SAP CPQ.
● Export all attributes, change details, and add new attributes, then import the file.

Sample Template

The sample template lets you easily upload multiple new attributes in SAP CPQ. To download the import
template, click Sample Template in the Attribute Import page. The Excel file contains three sheets:

● Attributes - enter attribute details in this sheet. Each line in the Attributes sheet corresponds to one
attribute value. If an attribute has multiple values, the attribute name, attribute external Id, and data type
are the same for each value of one attribute. The layout of the sheet matches the layout of the file that you
get when downloading all attributes in the system:
○ System Id - Needs to remain empty for new attributes.
○ Index - The first cell needs to always have the value 1 and the number should increment by one in the
subsequent cells.
○ Attribute Name - The name of the attribute.
○ Attribute External ID - The external attribute ID. Not a required field.
○ Display Value - Attribute value with the measurement unit, if applicable (for example 150 kg).
○ Value - Attribute value code.
○ Data Type - Data validation is set up on this column, so you can only select one of the attribute types
stated in the Data Type Defn sheet.

 Note

All attribute types except Autocomplete - sourced from a custom table, Autocomplete - sourced from a
quote table, and Container can be imported in the system through the Attribute Import feature.

● Measurement - Name of the measurement unit of the attribute value as defined in Product Catalog > Unit of
Measurement.
● IMPORTANT INFO - Instructions on filling out the columns. The maximum size of the Excel template is 768
KB.

2.9.1 Create Template by Exporting Attributes

To update attributes that are already in the system, download all of them in an Excel file, update data and then
upload the file.

1. Click Create Template by Exporting Attributes in the Attribute Import page.

SAP CPQ Setup and Administration Guide


106 PUBLIC Product Administration
The spinning wheel next to the tab title indicates that the system is building the list of attributes.
When the process is completed, the button name changes to Exported Attributes.
2. Click the button to download the file.
The file has the same columns as the sample template.
3. Change the value of the attributes you wish to update. Don’t change the System Id.
You can also import new attributes through this template. Just continue filling out the list as described in
the Sample Template section.

 Note

Other than updating the existing and adding new attribute values, don't make any other changes in the
template. The template must contain all the columns described in Sample Template for the upload to be
successful. No special characters are supported.

1. Save the changes you have made in the file.


2. Click Choose File.
Browse your computer to find the file.
3. Click Import.
After the system processes data, a new window displays the number of valid and invalid records in the file
and the following buttons:
○ Import Without Preview - starts the import and displays a message once the import is successfully
completed.
○ Import With Preview - a grid with all the attributes in the file displays. You can see the status of each
entry and select/unselect it for import. Click Save to import the valid attributes.
○ Import With Preview of Invalid Records Only - if there are invalid records, they’re displayed in this grid.
Messages informing you about the cause of the error are in the Status column. Selecting invalid
records for import is disabled. Click Save to import the valid attributes.

2.9.2 Importing Attributes with Unit of Measurement Type


This type of Attribute Import is useful when you want to make an attribute that is determined by a unit of
measurement. It helps to remember that a unit of measurement, for example, Pressure, can’t be used on its
own without being attached to an attribute in a product.

Once you’ve defined your unit of measurement, you must create an attribute determined by that unit. In our
case, we have created unit Length and an attribute TestUnit; you must enter Measurement as your Attribute
Type. We've flagged Length M (meter) value as our Default unit of measurement.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 107
Now, Attribute Import needs to be conducted. When you export your file, the Excel file includes a Measurement
column. The Sample Template also includes a new Measurement Column.

You must enter your Display Values (100 m and 500 m, respectively, in our case) and your unit of measurement
in the Measurement column. These values must be entered in the file being exported in order to be able to
convert these values from your default value (meters, in our example), to another value (kilometers and miles,
in our example).

Now, the file containing these conversions needs to be imported. You need to add the attribute to the product
you wish to configure.

Once you’ve done that, you’re ready to configure your product in Catalog. Length measurement values in the
Configurator have been converted to kilometers from meters.

 Note

SAP CPQ supports the deployment [page 563] of products containing Attribute Measurement Types. If the
chosen Unit of Measurement hasn’t been defined by the destination environment, the system creates that
unit. If the unit exists, the values of the deployed Attribute Measurement Type are added to the Conversion
Excel file.

2.10 Bulk Upload for Simple Product Translation

SAP CPQ administrators can upload translations for many products using XLSX or XLS files. You can export
translations of all products or products that match entered criteria. Product fields and languages that are
selected on Product Translations Import page are displayed in the exported file.

In Setup Product Catalog Products Product Translation Import , you can choose a language that
needs to be translated from product fields (reference language) and a target language.

You can choose between SAP CPQ ID and Part number as a product identifier when you want to import product
translations. SAP CPQ ID is selected by default. When SAP CPQ ID is selected, you can import or export fields
associated to the product object as well as the attribute and the attribute value object. When the part number
is selected, only the fields associated with the product object can be translated. The attribute object and the
attribute value object are disabled.

You can select fields that need to be translated. Product name and Description are selected by default. Values
don't reset to default values when you navigate to other pages. If you deselect all options and try to export
product translations, the message Please specify product fields that need to be translated is displayed. If Part
Number provided in the Excel file doesn't exist in the system, SAP CPQ informs you that the product doesn’t
exist.

Export Product Translation:

● Exporting product translations is identical to the process of exporting products – with ability to export
products from categories and to export all products.
● SAP CPQ exports all selected product translation fields – fields from the product object, the attribute
object, and the attribute value object.
● You can export translations for any product type (simple, configurable, collection, system, or parent/child
system).

SAP CPQ Setup and Administration Guide


108 PUBLIC Product Administration
Header of exported Excel file:

File import format:

● File format for import is XLSX or XLS.


● See attached Import Definition File XLSX. This file is uploaded as a Sample template file.
● Columns don’t have to be sorted in prearranged order (system needs to be able to link column header and
content found in the column).
● System_ID column needs to be populated with object system_id. Objects are separated with ||.

1. If the object is a product, the System Id is system_id of the product.


2. If object is attribute, System Id needs to be populated with product system_id||attribute
system_id.
3. If object is attribute value, system_id needs to be product system_id||attribute system_id||
attribute_value_system_id.

SAP CPQ checks if the object (product, attribute, and attribute value) exists in the system. If product
system_Id doesn’t exist in the system, that row is skipped, and translations aren't inserted. The same
behavior is applied on attributes and attribute values. If they don’t exist in the product, they aren't inserted.

Object column can have following values:

● Product
● Attribute
● Attribute value

Property column can have following values:

● Product properties: Product Name, Description, Long description, Description builder


● Product attribute properties: Label, Hint, Description, Error Message
● Attribute Value properties: Attribute value description

Attribute Value properties: Attribute value description:

● Reference language column – this column will be populated with chosen Translate from language. US
English is default.
● Language 1, Language 2 … - Each selected language for translation will be a separate column in xlsx file.
● If you rename column name, appropriate error message should be shown during the import.
● Columns and properties values should not be case sensitive.

Updating Product Translation: When you import a file, SAP CPQ should be able to understand whether product
translations already exist in the system for provided system_id. If yes, they will be updated.

2.11 Creating Favorites Permissions

Create Favorites Permissions enables you to limit users who are permitted to share Favorites.

Let’s say you’re a large industrial manufacturer, comprising a tools unit and an equipment unit, with one unit
having no involvement in the operations of another. In this case, you want only the tools unit, and not the

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 109
equipment unit, to be able to see the tools Favorites, and vice versa. Create Favorites Permissions allows you
and other SAP CPQ users to define parties (individual users, company branches, or specific departments)
affected by, and involved in your product configurations who are able to share the Favorites.

Using the Feature

Create Favorites Permissions is divided into two panels:

● Define user types who will be able to define favorites on company level
○ Select user types from the list view in the first panel. Those users can grant permission to other users
within their company to view the shared favorites.
○ Tick the Everyone checkbox to give everyone the permission within their company to share Favorites.
● Define user types who will be able to define favorites on system level
○ Select user types from the list view in the second panel. Those users can grant permission to all users
within SAP CPQ to view the shared favorites.
○ Tick the Everyone checkbox to give everyone the permission within SAP CPQ to share Favorites.

 Tip

● Hold down the Ctrl key to select more than one user type while making your selections.
● Click Save when you're done making your selections.

2.12 Custom Tables

SAP CPQ allows the use of data from nonstandard tables during the configuration process. Adding, editing, and
deleting tables along with their entries is done through Custom Tables.

Custom Tables allows you to:

● Define New – Create a new table by defining table and columns names
● Import New – Create a new table by importing an Excel file
● Edit Table – Add new columns to an existing table

 Note

When you’re editing existing custom tables, all column and types are read-only and they can't be
changed.

● Delete Table - Delete an existing table.


● Export Table Template - Export an empty Excel file with column names, so data records could be added and
imported (intended for initial import or appending).
● Export Table - Export an entire table.
● View Entries – Read through table entries, delete them, insert new entries or modify the existing ones.
● Audit Trails - See when table was modified and who modified it.

SAP CPQ Setup and Administration Guide


110 PUBLIC Product Administration
Defining a New Table

When defining a Table Name, bear in mind that it can't begin with sys_. Table Name is a required field.

As soon as the custom table name is defined, the next step is to define columns. Column Name is a required
field. You can also define the type of each column. The following types are supported:

● bit
● int
● date
● datetime
● nvarchar(size) [default(250)]
● decimal(decimal places) [default(2)]

 Note

Length/Decimal places column type is valid only for NVARCHAR, in which case it represents the length of
the string sequence, and the Decimal, in which case it represents decimal places.

By selecting the Personally Identifiable Information checkbox an administrator flags information as PII.

PII data can be flagged as sensitive via the Sensitive data checkbox. Sensitive data has an additional layer of
protection.

When you create a table via API, you can provide a type for each column within the attribute <DbType></
DbType>.

When a new table is created, primary auto increment key CpqTableEntryId is added to the table, which is later
used for manipulating entries. When Add New Column is clicked, the system adds a new blank column. Clicking
Undo Column removes the last created column.

Importing a New Table

A new table can be defined by importing it. When a new table is created, the primary auto increment key
CpqTableEntryId is added to the table. If a table name isn’t provided, the table name is populated with the Excel
file name. Table Name must be unique, needs to contain only alphanumerics, and can’t start with a numeric.
Columns in the db table will be named after columns from the excel file, therefore the column names must be
unique, and can contain only alphanumerics and can’t start with a numeric.

View Table Entries

Here you can manipulate table entries:

● Add New Entry


● Edit Entry
● Copy Entry – if you want to add a new entry similar to an existing one, this functionality opens same page
as edit white populated data, but after saving, it creates new entry in the database table.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 111
● Delete Entry
● Search Entries
● Custom Table Export

You can choose entries:

● Entries listed above – Entries displayed on the screen are exported


● All entries that match entered criteria – Entries that match entered criteria are exported
● All entries – All entries are exported

All Entries is the default selection. You can choose export format. Supported file formats are:

● Excel
● ZIP

Excel file is the default selection. If you choose the ZIP file, then XLS file is compressed to a ZIP file.

● Import
● Used for appending/updating data in existing table.
● If you just want to insert new rows, the Excel file mustn't contain a CpqTableEntryId column. However, if you
want to update and insert new rows, CpqTableEntryId is necessary for existing entries, while for new rows
this cell needs to be left blank.

Adding/Editing Table Entries

This page is for adding or editing entries. When Save And New is clicked, the current data is saved, and this
page is displayed again, so a new entry can be added to the same table. When editing the existing entry,
CpqTableEntryId is displayed.

Audit Trail

Audit Trail provides you with the ability to see when custom table was created/modified and who performed the
action. Audit Trail is written every time you:

● Create a new table trough import.


● Create a new table through API.
● Create a new table through user interface.
● Modify the table by adding columns.
● Modify the table by adding, editing, or deleting table entries.
● Import an Excel to the existing table.
● Modify the table through API in any way.

SAP CPQ Setup and Administration Guide


112 PUBLIC Product Administration
2.12.1 Custom Table Logging

The timestamp and the performer of actions performed on custom tables are logged for each individual row in
the columns CpqTableEntryDateModified and CpqTableEntryModifiedBy.

From the administrator side, the columns are visible in Setup Product Catalog Custom Tables View
Entries , and from the user side, they’re visible in User Menu Manage Tables View Entries . The
columns are automatically populated with the date and time the table was modified, and the username and the
full name of the person that modified it. The action itself isn't logged. The columns are populated after the
following actions are performed:

● Add table
● Add row
● Edit row
● Copy row
● Import entries
● Import custom table
● Add column to the table
● Any actions affecting custom tables in Deploy/Send Changes

Moreover, the new columns are also populated when the following actions are performed via SOAP API:

● CREATETABLE
● DELETETABLE
● EXPORTROWS
● EXPORTTABLE
● INSERTROWS
● UPDATEROWS
● UPSERTROWS
● DELETEROWS

However, the following actions in custom tables are logged in Audit Trail Admin Actions :

● Add new table (via SOAP API, Excel, IP script or manually; also logged in the new columns)
● Add column to the table (also logged in the new columns)
● Changing the PII and Sensitive Data flags
● Delete row
● Delete table

2.12.2 Hidden Custom Tables

Hidden custom tables are custom tables that are conditionally visible in SAP CPQ Setup, depending on
whether you’ve marked the tables as Hidden.

When you create a new custom table (by clicking Define New), you need to decide whether to mark the tables
as Hidden or not. The tables can be Hidden with values True and False. The default value is always False.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 113
Many projects require storing data on custom tables that shouldn't be shown in SAP CPQ Setup. These kinds of
tables are a part of clients’ SAP CPQ model, but SAP CPQ system administrators aren’t responsible for them
and, as a result, they aren't visible in SAP CPQ Setup.

 Note

Input parameters for creating a new custom field via API call have been expanded to support this property.
The IPython CreateTable method has also been expanded to support this property.

Parameter Show hidden tables

This parameter is located on the Custom Table page in Setup. When the value of this parameter is set to True,
SAP CPQ shows hidden tables. The parameter's default value is False. The value of this parameter is saved only
during your session. In other words, your selection is valid only you log out or unselect this parameter.

Parameter Edit hidden custom tables

If this parameter is set to True, custom tables are displayed in the Configurator. They look the same as other
custom tables. You can edit them, delete them or change their content.

2.13 Guided Selling

Guided Selling Product Search enables users to conduct an attribute-based search of products in Catalog. This
is done by narrowing a Catalog product list based on previously selected attributes and characteristics.

Before you go on to create any Guided Selling Product, you need to create a new Product Configuration
Template that uses the GudedSellingSearch.xsl XSL transformation for the Responder. This is a special XSLT
that you can use only on the Guided Selling Product configuration templates. Also, you must tick the Guided
Selling Template checkbox. Such templates appear only when editing Guided Selling Products and on the
Configuration Layout tab. Templates other than Guided Selling Templates are available only for regular Catalog
products, but not for Guided Selling Models.

To define a Guided Product Search model, go to Setup Product Catalog Guided Selling and click Add
New. This opens up a Product Definition similar to the Product Setup but with fewer details and more options
for Guided Selling.

Every time a guided selling product (Product Definition tab) is opened via Setup Product Catalog Guided
Selling (in both Quote 1.0 and Quote 2.0 engines), the LoadCpqPermissionsFromDb action is logged in the
Developer Console. The action is logged when the system loads the users’ visibility permissions for the guided
selling.

When you select attributes and values, users can search by other Catalog products. Add attributes to the
model.

SAP CPQ Setup and Administration Guide


114 PUBLIC Product Administration
For each Guided Selling attribute you have four choices:

● Use this attribute as search criteria - When selected, Guided Selling returns products that contain an
attribute value that is selected by the user for this attribute and removes any product that doesn’t have the
attribute value from the search criteria. For example: if attribute Memory is selected to be used as search
criteria, and user selects 1 GB of memory when using the guided selling, SAP CPQ returns all the products
that have the 1 GB value available in the Memory attribute.
● Don’t use this attribute as search criteria - This attribute doesn't drive the product selection logic at all.
Typically, you can use it to modify available options on other attributes that do contribute to search by
using rules.
● Use this attribute as optional in search criteria - Guided selling returns products that have the attribute
value selected by users for this attribute, while also returning products that don’t have this value selected,
if they satisfy other search criteria (based on other attributes). However, the optional attribute can’t be the
only criteria for filtering products. SAP CPQ doesn't return any results if only the optional attribute is
selected by the user. For example: We have two attributes in our guided selling product: Memory and Hard
Drive. Memory is optional, Hard Drive is required. End user picks 1 GB for the Memory but SAP CPQ returns
0 results (optional attribute can’t be the only criteria for search). User then selects 500 GB as the value for
the Hard Drive attribute. The system returns all the products that have 500 GB value available for Hard
Drive, and also any products that have 1 GB value available for Memory. However, it also returns products
that don’t have 1 GB Memory available – as the Memory is optional attribute in the search and doesn’t
enforce filtering.
● Use only to determine which categories to consider in search criteria - When an attribute is designated to be
a search criteria for Categories, you get a chance to enter which Category from the Catalog corresponds to
which value on this attribute. On user side, based on selected values in this attribute, SAP CPQ searches
the Catalog for products only on the categories that correspond to selected values for this attribute. If no
values are selected, or if you don’t have an attribute like this, SAP CPQ searches the entire Catalog. You
don’t have to have this type of attribute in guided selling. An example: You've added three attribute values
to the attribute Category Filter and flagged it as use only to determine which categories to consider in
search criteria. The attribute values that you've added are: Hardware, Software, and Services. You then
associate these attribute values with the following categories, respectively: Hardware, Software packages,
and Our Service offerings. On the user side, when user chooses the value Software for this attribute, SAP
CPQ only performs guided selling search in the Software packages category. User can select more than one
(if the UI type of the attribute is set in such way). If user didn't select any value, SAP CPQ searches the
entire Catalog.

Choose the order by which you’re making the selection of attribute values in Configurator and make sure
appropriate Layout Templates are available for selection.

Go to Catalog on the user side, and open the category your product belongs to. A Guided Selling dropdown
menu pops up on the right-hand side where you can select your model. When users click View Products, a
Catalog containing the products opens up.

 Note

There’s an application parameter that controls how product details are calculated during Guided Selling
Search. It defines several levels of calculations – faster methods have more limitations and can’t parse
complex price formulas, while full parsing computes the price in a much slower way. This can be changed in
a Catalog Loading Attribute Based Search application parameter ( General Application Parameters
Product Catalog ).

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 115
2.14 Item Quantity and Attribute Line Item Quantity

Quantity in SAP CPQ can be defined on item level, attribute level, and attribute value level.

ItemQuantity Attribute

To allow defining quantity of product items in the Configurator, you need to add the ItemQuantity attribute to a
product and list it as line item. The attribute is predefined in the tenant when you register. The Quantity field
displays in the Catalog when configuring that product.

In quotes that contain simple products, editable Quantity field displays automatically. You don't need to add the
ItemQuantity attribute to simple products if you don't want to reference it somewhere in the application (for
example, container or for attribute values).

The following scenarios describe how the ItemQuantity attribute is typically handled:

● In the tier pricing model, pricing is based on ItemQuantity, and users are enabled to edit the quantity in
quotes by selecting User Can Enter Quantity. Example: a product costs $15 when buying one, $12 when
buying two, or $8 when buying three. If a user adds the product to a quote with a quantity of 1, the price is
$15. After changing the quantity to 2, the system passes it to the Configurator through the ItemQuantity
attribute. As pricing is based on this attribute, the price of the product changes accordingly to $12.
● You can expose the attribute to users so that they pick the quantity when configuring an item. Each change
of quantity is reflected locally in the quote, not in the Configurator.
● Calculate ItemQuantity via formulas as a hidden attribute. The formula is based on other selections a user
makes in SAP CPQ. The quantity is reflected on the quote.

In case of parent/child configurations, the system treats the ItemQuantity attribute and properly propagates
the quantity set up in the Configurator to quotes. However, the quantity doesn't propagate from quotes to the
Configurator (the quantity remains as it was initially defined).

Attribute and Attribute Value Quantity

For two attribute types (User Selection w/ Quantity Inputs for each Attribute Value and User Selection w/
Attribute Quantity Input) added as line items to products, the quantity box displays automatically in the
Configurator.

There are four quantity-related options that administrators can manage for all attributes listed as line items
(applies to all attribute types):

● User Can Enter Quantity - a checkbox in Products Product Attributes/Options Attribute Definition .
Selecting this option enables users to enter quantity to line items independently from the main item.
Whatever quantity is entered in the quote, it’s propagated back in the Configurator. The quantity users
enter in quotes overrides the default quantity, if defined.
● Inherit Quantity from Parent - a checkbox in Products Product Attributes/Options Attribute
Definition . When this option is enabled, the quantity of the line item is multiplied with the quantity of the
main item every time the quantity of the main item changes. The quantity is multiplied locally in the quote

SAP CPQ Setup and Administration Guide


116 PUBLIC Product Administration
and not propagated in the Catalog. If you go back to the Catalog, the product quantity remains as initially
defined.
● Default quantity (if not 1) - you can define default quantities of values in an attribute line item, so that
whenever the attribute is listed as a line item, the selected quantity is shown for each value. To define
default quantity, edit an attribute assigned to a product and in the Attribute Values section, select Show
More Columns. The Default quantity (if not 1) column is shown for editing quantity. The default quantity is
always overridden by the quantity users define in quotes or the quantity inherited from the parent item.
The NRC price of the item is multiplied by the default quantity and the multiplied price is shown in the
quote. However, the default quantity doesn't affect the recurring price, meaning that the recurring price
isn't multiplied by the default quantity like it’s the case with the NRC price.
● Formula for Calculating Attribute Quantity - to define a formula for calculating quantity on attribute level,
edit the attribute and find the field in the Additional Attribute Definition section.

Application Parameters for Quantity

The following application parameters affect quantity:

● Execute rules on attribute value’s quantity change – the system triggers rules after changing the quantity of
attribute values in the Configurator.
● Calculate Auto-Reconfigure only items with modified ItemQuantity attribute – defines whether SAP CPQ
automatically reconfigures only those items whose item quantity attribute value is changed.
● Propagate Quantity to Nested Products – propagates quantity from the main item to all its underlying
items.
● Quantity Sign – enables administrators to select if the quantity is ONLY NON-NEGATIVE, ONLY POSITIVE,
or POSITIVE AND NEGATIVE.

Attribute and Attribute Value Quantity - Specific Behavior

Managing attribute and attribute value quantity can differ depending on the type of the attribute listed as line
item. What follows are specific scenarios explained through an example:

Item Quantity

1.Laptop computer 1

1.1. Keyboard 1

1.2. Wireless mouse 1

1.3. Pen 1

User Selection w/ Attribute Quantity Input

When you enable users to enter quantity for attribute line items, the attribute quantity in the Configurator
displays the quantity of the last edited attribute in the quote.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 117
Example

If you change the quantity of the line items in this order (Wireless mouse (Qty 2) > Pen (Qty 4) > Keyboard (Qty
2)), the quantity of the item in the quote is 2.

If the attribute inherits quantity from the parent item and has default values set for attribute values, the default
quantity of the value that was edited first displays in the Configurator.

Example

If you change the quantity of the line items in this order (Wireless mouse (Qty 4) > Pen (Qty 3) > Keyboard (Qty
2)), the quantity of the item in the quote is 4. The default value of the first selected item applies as quantity to
all other attribute values in the quote and can be overridden by changing the value of the parent item. If the
quantity of the parent item changes, the quantity of the line items changes accordingly. The same behavior
applies if users define the quantity of the attribute value and if there are default values defined in Setup. The
quantity of the value that was edited first applies to all quantities in the Configurator. If users change the
quantity of items in the quote, the quantity of the last edited item propagates back to the Configurator and it
applies to all quantities. After updating the quote, the new value applies to all items.

Container

For container attribute line items, there are two additional fields you need to manage when adding columns to a
container attribute:

● Column Type - select Product Attribute.


● Attribute - displays only if the column type is Product Attribute. Here you select the attribute that the
column references.

 Note

To handle quantity, a column in a container attribute needs to reference the ItemQuantity attribute.

Quantity Inheritance in Multi-Level Line Item Structure

If quantity inheritance from parent items is enabled, and you add a configurable product with multilevel line
items to a quote, the quantity of the underlying line items is multiplied by the quantity of the most immediate
main item.

Level Item Quantity

1 Computer 1

1.1 Monitor 1

SAP CPQ Setup and Administration Guide


118 PUBLIC Product Administration
Level Item Quantity

1.2 Case 1

1.2.1 Hard drive 2

1.2.2 Motherboard 2

1.2.2.1 RAM 2

1.2.2.2 GPU 1

If users change the quantity of Computer to 3, the quantity of the underlying line items changes accordingly:

Level Item Quantity

1 Computer 3

1.1 Monitor 3

1.2 Case 3

1.2.1 Hard drive 6

1.2.2 Motherboard 6

1.2.2.1 RAM 12

1.2.2.2 GPU 6

2.15 Messages in Product Configuration

Messages can be displayed to users either in the Configurator (for example, in attribute labels) or in the
Responder. They’re also used for enforcing product business rules because, if displayed, they can render
product incomplete.

Messages are similar to product rules - they both have a condition that is evaluated against the current product
configuration. If message condition evaluates to 1 (true), this message is displayed in the Responder, and the
product configuration is rendered incomplete.

Message conditions are evaluated after product rules have been executed (after user selects an attribute,
product rules are executed followed by message condition evaluation).

 Note

To retrieve message text (and use it in attribute labels, for example), the tag
<*CTX(Product.Validation(message name))*> needs to be used. This tag shouldn't be used in
product rules because it returns incorrect values due to execution dependency between rules and message
evaluation.

Message can be displayed in the Responder and in the attribute label (via the tag) at the same time.

In order to translate content of product message, syntax {{Dictionary_Key}} can be used. It retrieves the
value from selected dictionary with the key Dictionary_Key.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 119
2.16 Product Import

The Product Import administrative section gives you the option to create products in an Excel spreadsheet,
then upload them into SAP CPQ.

In addition to creating new products, you can also export any existing products into an Excel spreadsheet. Both
simple and configurable products (or aliases) can be imported and exported. You have the option to quickly
update pricing, descriptions, or any other fields that the spreadsheet contains. Once reuploaded, the
modifications are made to the products in the system.

The Product Import administrative section can be accessed under the Products administrative menu ( Setup
Products Product Import ). From this page, you can download the template for importing new products,
export the existing products to this template, or upload and import new products.

You can also access this functionality from the Products page ( Setup Products Products ) where all
products are listed. Here, you can export listed products, export all products that match entered criteria, or just
go to the Product Import page.

The provided downloadable template is used for uploading new products. It comes with some pre-entered
values to give direction while creating products. It’s important to delete these entries, otherwise, when
uploading the spreadsheet, these products are created.

To create a new product entry in the spreadsheet, you need to enter a new row for each product. There’s no
need to enter values for every column. The required columns are Product Name, Price, Product Type, and
Categories. If a Product Type or Category included hasn’t been created in the system yet, then they’re created
during the import.

If updating existing products, you need to include only the columns that you wish to update and a column that
is used as a product identifier. Product identifier can be: Part Number, Product Name, External Id, UPC, MPN,
CPQ ID, or Product Family Code.

It’s also possible to select None as a product identifier, in which case products are always created.

 Note

Excel template containing Sample Products has two sheets - Example sheet with example products and \
that shows all available columns with descriptions.

Here is the table that shows all available columns with description and restrictions for each one of them:

Can contain SAP


Column Name Definition Required CPQ formulas Format Example

Product Name Name of your Yes No String. Maximum


product length: 100 char­
acters

SAP CPQ Setup and Administration Guide


120 PUBLIC Product Administration
Can contain SAP
Column Name Definition Required CPQ formulas Format Example

Part Number Part Number / No Yes String. Maximum


Catalog Code / length: 1000 char­
SKU of your prod­ acters
uct. This field can
be used as product
identifier when up­
dating products.

UPC Universal Product No No String. Maximum


Code. Can be used length: 100 char­
for EAN (European acters
Article Number) or
International
Standard Book
Number (ISBN)

MPN Manufacturer part No No String. Maximum


number. This field length: 100 char­
needs to be used if acters
manufacturer part
number is different
from part number
used to mark the
product (when
selling through
channels).

Product Family Many products No No String. Maximum


Code can share same length: 100 char­
product family acters
code. This field
can be used as
identifier when
maintaining com­
mon product prop­
erties for products
that share same
product family
code

Description Description of the No Yes String. Maximum


product displayed length: 1000 char­
in product Catalog acters

Product Type Product type for Yes No String. Maximum


this product - can length: 100 char­
be used to set up acters
promotions for
customers, sales
people can enter
discounts for cer­
tain product types
on quote, and so
on.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 121
Can contain SAP
Column Name Definition Required CPQ formulas Format Example

Price Price of the prod­ Yes Yes String. Maximum


uct. It can contain length: 1000 char­
a formula. acters

Image Name of the image No No String. Maximum


that is displayed length: 100 char­
for this product. acters
Consult SAP CPQ
manual to see how
you can upload
product images in
bulk.

Cost Cost of the prod­ No Yes String. Maximum


uct. It can contain length: 1000 char­
formula to calcu­ acters
late the cost.

Category Category and rank Yes No String. Maximum Hardware>Plan||


within this cate­ length: 1000 char­ Software
gory of the prod­ acters
uct. Product can
be found in several
categories in
which case they
need to be sepa­
rated with || char­
acters. Subcatego­
ries are marked
with character >.

Rank If no rank is speci­ No No String 3||5


fied, default value
is 10. Different
ranks are for differ-
ent categories.

Weight Product weight in No No Number


grams.

Start Date Start date for No No Date (in Excel). 3/24/2010


product effectivity
- from this date,
users are able to
select this prod­
uct.

End Date End date for prod­ No No Date (in Excel). 13/24/2010
uct effectivity - un­
til this date, users
are able to select
this product.

Active Flag to mark No (default is 1 if No 1 or 0


whether product is flag isn’t defined)
active or not.

SAP CPQ Setup and Administration Guide


122 PUBLIC Product Administration
Can contain SAP
Column Name Definition Required CPQ formulas Format Example

Quote Description Description that No Yes String. Maximum


shows up for prod­ length: 1000 char­
uct in the quote. If acters
this field is empty,
product descrip­
tion is displayed in
the quote.

Permissions User groups sepa­ No No String. Maximum Sales||Sales Man­


rated with charac­ length: 1000 char­ agement||Cus­
ters || that are able acters tomers
to see this prod­
uct. Enter
Everyone if you
wish all users to be
able to see the
product (you don't
need to name all
user groups). If
column Permission
exists and is
empty when im­
porting/updating
product, it is like
no user group is
selected.

Configurable Flag to mark No No Number 0


whether product is
imported as sim­
ple or configura-
ble. Put 0 for sim­
ple products and 1
for configurable. If
this column is
missing when im­
porting new prod­
ucts, product is
marked as simple.

Recurring Price Recurring Price No Yes String. Maximum


formula length: 1000 char­
acters

Recurring Cost Recurring Cost for­ No Yes String. Maximum


mula length: 1000 char­
acters

Delete Flag that gives sys­ No No Number


tem order to de­
lete the product.
Product deletion
can only happen if
product isn’t used
in any quotes.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 123
Can contain SAP
Column Name Definition Required CPQ formulas Format Example

Copy SystemID of the No No String


existing product
that is copied.

Inventory Number of remain­ No No Number 150


ing products in the
stock.

Lead Time Used to describe No No String. Maximum 3 weeks


how long it takes length: 100 char­
to get the product acters

Product Version Version of the No No String. Maximum


product that is length: 50 charac­
currently in use ters

External Id External Id that is No No String. Maximum


used for referenc­ length: 100 char­
ing product with Id acters
from external sys­
tem

a::AttributeName If attribute has No No String. Maximum column name -


several values, length: 50 charac­
a::Color value -
they need to be ters
Red
separated with
characters || (see For attribute that
example).
has several values
- column name -
a::Voltage values -
110V||220V

shipp::ShippingMe No Yes String. Maximum


thodName length: 1000 char­
acters

The Part Number, Description, Price, Cost, Quote Description, Recurring Price, and Recurring Cost fields can
contain SAP CPQ tags that generate the value automatically.

Enter the category where the product is located in the Categories column. By default, any new categories are
created at the top-level category. You can create and include the product in subcategories, if needed. To do this,
precede the subcategory name with the parent category followed by a >. For instance, if you want to add a
product to a new subcategory Printers that is in the Hardware and Accessories subcategory, you can represent
that in the following order: Hardware Accesories Printers .

Enter attributes for products by creating columns using the a:: prefix (for example, a::Printer - this
represents the Printer attribute). Then, attribute values can be entered in the same column for each product
row. If a product doesn't contain an attribute value, then the corresponding attribute isn't added to this
product.

Once having entries for all the products that need to be created, you can save the file and then go into the
Product Import administrative section. Click the Browse button in the Step 4 section of the page. Choose the
modified template and click Import.

SAP CPQ Setup and Administration Guide


124 PUBLIC Product Administration
During the import, the system checks the file to ensure that it doesn't have invalid entries. If the import process
takes more than a few seconds, system also displays import progress real time (it shows the number of loaded
products). Each record is defined as each product entry in the spreadsheet. Errors are displayed if required
fields aren't entered for a product. The system processes the entire spreadsheet and returns the status.

If there is at least one valid product to import, you can either import it with a preview or without it. If Import
With Preview is selected, all loaded products are shown. Choosing Import Without Preview imports all the
products without a preview screen first. In addition, if there were invalid records in the spreadsheet, then you
can choose to see only those records by selecting Import With Preview of Invalid Records Only.

 Note

The Status column shows only a partial error message. To get a full error report, you need to click on the
error message itself.

Whichever selection was made, new products are saved to the system by clicking Save. The exception is the
Import Without Preview selection, which saves all valid products immediately. Any new Product Types,
Categories, and Attributes are created in the system automatically as well. In addition to uploading new
products into the system, the Product Import administrative section allows exporting all existing products in
the system to a spreadsheet similar to template that can be downloaded. Exporting all products can be useful
because it allows you to see all the products in a list where he can modify pricing, descriptions, catalog codes,
or any other field in a single file.

Exporting products is possible by clicking the Create Template by Exporting Products from Selected Categories
or Create Template by Exporting All Products buttons in the Export Products section on the page. Exporting
Products from Selected Categories allows you to export those products in selected categories, while Exporting
All Products exports all products in the system. The system gathers all the products and enters them into a
spreadsheet in the same format of the template. A link is then provided where it is possible to download the file.
With this file, you can modify the existing products or add new ones to the end of the list. When finished, upload
the file the same way as described above. The same screens appear where you can preview or import without a
preview.

Restrictions

● Attributes aren’t processed for existing configurable products (if you are updating configurable products).
● Maximum number of products that can be imported is 2500 at a time.

Bulk Product Copy

You can create multiple copies of the existing product using an XLS file. Previously, you could copy products
only one by one. Now, you can create multiple copies of the existing product through XLS product import
(simple and configurable products can be copied using XLS files).

You need to specify which product is copied by specifying product system_id in column Copy.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 125
The new column Copy is added to the XLS file. You must add this column to the XLS file if you want to copy the
product. Bearing that in mind:

1. You must add the column Copy to XLS file.


2. In column Copy you must specify which product is to be copied by specifying product system Id.
3. All product fields in copied product are updated by entries from that XLS row.

Now, product is copied with all fields, attributes, rules, and settings.

Attribute value details in copied product aren't affected (Value part numbers, referent products, attribute
type…). If attribute is specified in XLS file, list of values only affects visibility of values, meaning only specified
attributes change visibility of attribute values according to entered list, keep all attribute/Value details as in
copied product.

If you delete all columns in xls file (except copy, name, description, and required fields for example), values for
certain product will be replaced with values of product whose id is in copy field.

If you delete all columns in the XLS file (except Copy, Name, Description and required fields, for example),
values for certain product will be replaced with values of product whose id is in copy field.

2.17 Products 2.0


Creating and managing products on the Products 2.0 page is done in a similar way as in the original Products
page, which remains accessible in Setup. The differences are outlined in this topic.

The Products 2.0 administrative section is accessed in Setup Product Catalog Products 2.0 .

Products can be filtered by specific and advanced criteria. To quickly filter products, enter one of the following
search queries in the search box:

● Name
● Part number

Additionally, when using the Advanced Search, products can be filtered by:

● Name
● Part number
● Product type
● Category
● Display type
● Permissions
● Modified date
● Active status

● System Id (by default, the System Id column isn't visible in the grid, so you need to add it by clicking )

Values in all columns can be sorted in ascending or descending order by clicking the column headings.

Clicking opens a popup window, in which you can select columns to be displayed on the Products 2.0
page. Alternatively, clicking the check mark in the upper-right corner of the Display Settings popup window
selects all columns.

SAP CPQ Setup and Administration Guide


126 PUBLIC Product Administration
 Note

The additional columns are displayed in the grid only the first time they’re added.

Editing a product is done by clicking the Edit button next to the corresponding product name. In addition,
copying or deleting a product as well as adding a product alias, or creating a product version is done by clicking
the icon with three dots and selecting the appropriate action.

There can be only one active product version. The active product version can't be deleted. In order to delete the
active version, you first need to deactivate it by disabling the Active toggle switch.

When adding or editing a product, all information is organized into the following five tabs: Definition, Attributes,
Rules and Messages, Scripts, and Layout.

 Note

In Setup Product Catalog Products 2.0 , products obtained via synchronization with SAP ERP and
Variant Configuration and Pricing have the value Yes in the column Synced from Back Office. The column
Synced from Back Office is visible only when SAP CPQ is integrated with a back-office application, such as
ERP.

2.17.1 Products 2.0 Definition Tab

This tab is used for defining basic product characteristics.

The Unit of Measure field enables you to quantify and track products. You can only enter a three-character ISO
code in the field, for example, EA(each), PCE(piece), PK(pack).

Setting product visibility permissions is done by moving permission groups from Available Permission Groups
to Selected Permission Groups. To do so, you can:

● Type a search query into the Available Permissions Groups search box.
Permission groups matching the entered search query display as you type.
● Expand the permission group (for example, User Types) and select a specific group from the list that
displays (for example, Sales). Alternatively, to expand all available permission groups, click Expand All.
● Add all available permission groups by clicking Add all.
● Add all groups belonging to the main permission group.
To do so, hover over the name of the main permission group and click either Add all or the rightward-
pointing arrow.
The selected permission groups are listed in Selected Permission Groups.

 Tip

Clicking Save & Go Back saves your changes and takes you back to the Products 2.0 administration page.

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 127
2.17.2 Products 2.0 Attributes Tab

Attributes can be added to products via this tab.

Attributes can be filtered by specific and advanced criteria. To quickly filter attributes, enter an attribute name
in the search box.

Additionally, when using the Advanced Search, attributes can be filtered by:

● Name
● Whether or not they’re a line item
● Display type
● Number of values
● Tab in the Configurator where the attribute is placed

You can select the columns that are displayed under the Attributes tab as well as the columns in the Attribute
Values section when editing an attribute by clicking the Display Settings button.

In addition, to mark an attribute as required, select the checkbox in the Is Required column in the grid.

2.17.3 Products 2.0 Rules and Messages Tab

Formula rules, attribute triggers, simple rules, and product messages are displayed under the Rules and
Messages tab.

Formula rules can be filtered by specific and advanced criteria. To quickly filter formula rules, enter one of the
following search queries in the search box:

● Name
● Condition
● Action
● Description

Additionally, when using the Advanced Search, formula rules can be filtered by:

● Name
● Condition
● Action
● Rank
● Description
● Active status
● Modified date
● The name of the user that modified them

To quickly filter attribute triggers, enter one of the following search queries in the search box:

● Attribute name
● Description

Additionally, when using the Advanced Search, attribute triggers can be filtered by:

● Attribute name

SAP CPQ Setup and Administration Guide


128 PUBLIC Product Administration
● Condition
● Description
● Modified date
● The name of the user that modified them

Simple rules can be quickly filtered by name.

Additionally, when using the Advanced Search, simple rules can be filtered by:

● Name
● Condition
● Action
● Rank
● Description
● Modified date
● The name of the user that modified them

To quickly filter product messages, enter one of the following search queries in the search box:

● Name
● Condition
● Message
● Description

Additionally, when using the Advanced Search, product messages can be filtered by:

● Name
● Condition
● Condition
● Rank
● Description
● Active status
● Active status
● Whether the Show in Responder toggle switch is enabled or disabled
● Whether the Make Product Incomplete toggle switch is enabled or disabled

To define the order of execution for formula rules, simple rules and product messages click Ranking, drag and
drop the rule to set its rank, and click Save.

2.17.4 Products 2.0 Scripts Tab

The Scripts tab enables you to define scripts in product and specify events that trigger the execution of those
scripts.

Scripts can be filtered by specific and advanced criteria. To quickly filter scripts, enter one of the following
search queries in the search box:

● Name
● Code
● Description

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 129
Additionally, when using the Advanced Search, scripts can be filtered by:

● Name
● Code
● Description
● Type (global or local)
● Modified date
● Active status

2.17.5 Products 2.0 Layout Tab

You can change the position of attributes in the Configurator and the Responder in this tab.

To change the position of attributes, drag and drop them as you see fit.

In Configuration layout, attributes can also be dragged and dropped to another tab.

Additionally, you can create global tabs inline with a single click and define tab visibility directly in the
Configuration layout.

To add a new tab:

1. Click Add/Edit Tab.


A pop-up displays.
2. Click Add New Tab.
3. In Tab Name, enter the name of the tab in the search field.
If the tab exists, it’s displayed in the dropdown list as you start typing.
In case the tab doesn’t exist, the option to create it displays in the search results next to the name you
entered in the following format: Name (Create New). Click on the suggestion and the name you entered
appears in the search field.
4. In Tag visibility, define when the tab is going to be visible.
5. Click the check mark.
The name of the tab displays in the pop-up.
6. Click Save.

To rank tabs, drag and drop them.

2.17.6 Products 2.0 Advanced Settings Tab

In the Advanced Settings tab, you can set up code matching.

More information is available in Code Matching [page 64].

SAP CPQ Setup and Administration Guide


130 PUBLIC Product Administration
2.18 Sequences
Sequences are typically used in constructing part numbers where an entire part number or a portion of a part
number is serialized.

Sequences can be defined as numeric or alpha sequences. They’re referenced using tags, which are discussed
later in the topic. Sequences can be administrated by clicking on Sequences link under the Products admin
menu. Here you can easily copy, delete, or edit existing sequences.

User can add a new Sequence by clicking the Add New button. It brings up a blank Sequence Definition page.
Editing a Sequence brings up the same screen.

● Seqname - Name given to the Sequence. This name is used when referring to the sequence in an
expression for part numbers or other definition area.
● Description – Describe a sequence using additional details such as intended use, and so on.
● Globalseq – Specifies whether or not the sequence is shared globally among all products (Y) or
independently for different products (N).
● Startno – The first element in the Sequence. The value is set to 0 for if a string list is used.
● Endno – The last element in a sequence. This value can also be set to 0 if a string list is used.
● Stepval – Specifies what the Sequence is incremented by. Any value can be used.
● Order – Specifies whether the Sequence is set up as an Ascending Sequence or a Descending Sequence.
● Alpha – Specifies if the Sequence elements are interpreted as Alpha (Y) or Numeric (N).
● Stringlist – If the sequence consists of an arbitrary sequence such as an array of strings, enter the values
here. Each value needs to be separated by commas (for example: Alpha, Bravo, Charlie, Delta,
Echo, and so on).
● Presentation – Controls how the Sequence is displayed.
● ○ STR* - Displays the value by itself with no leading 0s
○ STR2 – STR8 – Specifies that the value is preceded by 0s and the number of 0s that precede. The
choices count the number of digits in the number, not the number of 0s preceding (for example, for
STR* the number would be 8, for STR3 it would be 008 Seqtype – Specifies the type of Sequence.
NUMERIC only allows a Sequence of numbers while STRINGLIST allows any characters.
○ CHAR – Used when creating a Sequence of the Alphabet.

A to Z Sequence

One method of creating an A to Z Sequence would be to type A, B, C, …, Z into the Stringlist field. An easier
way is to use the CHAR function in the Presentation dropdown box to generate an A to Z Sequence. To create an
A to Z Sequence, enter 1 for Startno, 26 for Endno and 1 for Stepval. Make sure the Order is Ascending, Alpha is
set to Y, and Presentation is set to CHAR. CHAR converts the Sequence value into an Alphabetic character. If
Lowercase is desired, use 33 for the StartNo and 58 for the Endno.

Sequences and Part Numbers

Sequences are used with part numbers to uniquely identify a configuration. There are two options for a
Sequence being attached to a product number: the Sequence can be assigned in the Configurator when the

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 131
product is being configured, or it can be assigned when the product has been added to the quote. If assigned in
the quote, sequence values are more likely to be assigned to configurations that turn into orders. Otherwise,
sequence values can be wasted.

There are two ways (in the standard functionality) to make this happen. There are a few settings under
Application Parameters (under General administrative menu) that relate to sequences and how they behave.
One setting is called Delay Sequence Generation. If it’s set to TRUE, a sequence can be assigned when the
product is being configured. Once a product has been flagged as complete, a button labeled Get Cat Code
shows up in the Responder. Clicking this button generates the sequence value in the Configurator. If Delay
Sequence Generation is set to FALSE, the Sequence Value is generated when the product gets added to the
quote. Another setting on the Application Parameters page is Do Not Recycle Sequences. It specifies whether
the system goes through the sequence again once the Endno has been reached. Setting it to TRUE notifies the
system not to go through the sequence again.

Another setting that is related to sequences on the Application Parameters page is Unique Product Codes.
Setting it to TRUE tells the system to make every product code unique and helps to ensure that duplicate
Product Codes aren't used in the system.

Working with Sequences

In order to include a sequence in the part number or other definition area, you can use one of these tags:

● PSEQ – product sequence


● GSEQ – global sequence
● SSEQ – nested sequences

PSEQ (syntax: <*PSEQ(sequence name)*>) is a product sequence, which allows several products to use the
same sequence independently of each other. In other words, under this scenario, two products can use the
same sequence in their part numbers.

For example, product ABC part numbers can be: ABC0001, ABC0002, ABC0003… Product XYZ part numbers
can be: XYZ0001, XYZ0002, XYZ0003, and so on. Both products have the same sequences (0001, 0002,
0003…).

GSEQ (syntax: <*GSEQ(sequence name)*>) is a global sequence, which allows several products to share the
same sequence. In other words, under this scenario, two products increment the same sequence and therefore
a sequence number is only used once.

For example, product ABC part numbers can be: ABC0001, ABC0002, ABC0004… Product XYZ part numbers
can be: XYZ0003, XYZ0005, XYZ0006…

Here Product ABC uses the sequence numbers 0001 and 0002. Product XYZ uses the sequence number
0003. Since 0003 had already been used, the next sequence number available for Product ABC was 0004.

 Note

In order for GSEQ to work correctly, all products that are incrementing the Sequence need to have GSEQ
used in their expressions.

SSEQ (syntax: <*SSEQ(sequence name1, sequence name 2, …, sequence name n)*>) allows
sequences to be nested. For example, two sequences go from 1 to 3, and they are named sequence One and
Two. The expression <*SSEQ (one, two)*> would result in 11, 12, 13, 21, 22, 23, 31, 32, 33.

SAP CPQ Setup and Administration Guide


132 PUBLIC Product Administration
Another example would be to have one sequence name of ABC with string elements A, B, C, and another
sequence named Ten going from 1 to 10, then expression <*SSEQ(ABC, Ten)*> would result in A1, A2, A3,
A4, A5, A6…, A9, A10, B1, B2, …, B10, C1…, C10.

Similarly, if a portion of a part number is defined as <*SSEQ(Ten, ABC)*> then the results would be 1A, 1B,
1C, 2A, 2B, …10C.

CXSUB (syntax: <*CXSUB(sequence substitution name)*>) is used for Sequence Substitutions.


Sequence Substitution is used with serial numbers and substituting a number to replace long string of attribute
values for a product number. Sequence Substitution tells the system to use the same serial number when
certain selected attributes are chosen again.

There are no limits as to how many sequences can be used in defining a part number. For example, a part
number can be defined as <*Value(Number of Poles)*><PSEQ(some seqname)*><*Value(another
attribute)*><PSEQ(another seqname)*><*GSEQ(third sequence)*><*SSEQ(seq four, seq
five)*>. Sequences can also be included in the part number only if certain conditions are met. This is
accomplished by using an IF statement: [If](condition) {expression if true}{expression if
false – note this is optional} [ENDIF]. The condition uses the following syntax ([operator]
(variable1, variable 2)).

For example, if there’s an attribute called Number of Poles and it needs to use numbers from 2000 to 2999
from a sequence named 2000-2999 when the number of poles is 2, but use numbers from 3000 to 4999, from
a sequence named 3000-4999, when the number of poles is greater than 3, the expression entered into the
Product Catalog Code generator would be as follows:

<*Value(some attribute)*><*CatCode(another attribute)*>


[IF]([EQ](<*Value(Number of Poles*>, 2)){PSeq( 2000-2999)}[ENDIF]
[IF]([GT](<*Value(Number of Poles*>, 3)){PSeq( 3000-4999)}[ENDIF]

SAP CPQ Setup and Administration Guide


Product Administration PUBLIC 133
3 User Administration

The following topics guide the administrator through the Users section of the Setup.

Guest User [page 135]


A guest user in SAP CPQ is a user with limited access rights. For example, guest users may need to log
in only to browse products in the catalog with or without making the final purchase.

User Registration [page 137]


User Registration allows users to create an account in case an administrator hasn’t previously created
one for them.

Users [page 140]


The Users administration page enables you to manage the existing users in the system and add new
ones.

Bulk User Import/Export [page 144]


This functionality allows importing and exporting multiple users into or from SAP CPQ.

Companies [page 149]


Companies are organizations SAP CPQ users belong to.

Log In as a Proxy User [page 153]


If you have been granted access to another user’s account, you can log into SAP CPQ on their behalf to
troubleshoot and resolve the issues they encountered.

Permission Groups [page 154]


The Permission Groups section in Setup Users allows administrators to add new and modify
existing permission groups.

Quick Search and Advanced Search [page 157]


The SAP CPQ catalog can be searched via the quick search or the advanced search.

User Custom Fields [page 158]


User custom fields allow you to add additional fields for users.

User Types [page 160]


User types control how users interact with the system.

SAP CPQ Setup and Administration Guide


134 PUBLIC User Administration
3.1 Guest User

A guest user in SAP CPQ is a user with limited access rights. For example, guest users may need to log in only
to browse products in the catalog with or without making the final purchase.

Administrator Side

To enable the guest user feature and allow browsing through products, administrators must first make
adjustments in the Setup.

User and Workflow Adjustments


The details on creating a guest user are explained in Setting Up an Anonymous User [page 136]. Here are listed
the main steps.

● Create a user account that will be used for guest users and set the privileges for the categories and
products that should be visible to guest users. Make sure that the user is active, otherwise logging is
disabled.
● Create a company and a permission group for the guest user.
● Set up the workflow actions and permissions. Since a guest user has limited access to SAP CPQ features,
only some actions should be enabled (CheckOut, Add Item, Reprice, Save Quote and Copy).

Guest User Settings

All settings for guest users can be managed in Users Guest User and Default User Settings Guest User
Settings . The Guest User Settings tab contains the basic settings for guest users.

1. In Guest user, select a user.


Any user in SAP CPQ can be selected as guest user. Make sure that the selected user is active because
inactive users won’t be able to log in.
2. (Optional) Enable the following toggle switches:
○ Guest user cannot add to quote - users can only browse items but they can’t add them to quotes.
○ Guest user can proceed to check-out without self-registration - defines whether the guest user needs to
self-register in order to proceed with the checkout. If the parameter is enabled, the Customer Info tab
opens up after the checkout. If disabled, the login page opens after the checkout and users have to
register.
○ When guest user creates a quote, system can pre-populate customer roles based on user's or user's
company info - defines whether the system prepopulates customer roles with user’s Bill-to and Ship-to
information as well as the user’s company information.
3. Click Save.
The guest user settings are adjusted.

Legacy SSO Settings


In this page, you define the settings for the User Registration page.

1. In Single Sign-On key and Single Sign-On vector, enter values to encrypt and decrypt a username.
You need to provide unique values.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 135
2. Enable the Send Single Sign On Link to the Quote as result of NewQuote API method field.
3. Click Save.

A more detailed description is available in Single Sign-On.

Guest User Side

Guest users can log into SAP CPQ in the following ways:

● login page - administrators should provide the username/password/domain. After logging, users land to
the catalog.
● direct link - the format of the link should be app_name/mt/domain_name (for example,
v60.webcomcpq.com/mt/Your_Domain). The login screen is skipped and users land to the catalog.

Users logged as guest users can browse the catalog and create quotes (if Guest user cannot add to quote is
disabled).

Setting Up an Anonymous User [page 136]


This topic explains the details about creating a guest user.

3.1.1 Setting Up an Anonymous User


This topic explains the details about creating a guest user.

Before creating a new user account that will be used for guest users, there are some preparations to be done.
First, in administration under Users it’s necessary to click the Companies option to create a new company
(such as “GuestUserCompany”). After that, user has to click the User Groups option – leave the Start Page
option empty and don’t change Visual Styles (except for Shopping Cart/Quote if necessary, since all other
changes won’t be visible). After the user group has been created, it’s necessary to set up the privileges for
categories (and products) that are wanted to be visible for guest users (for more information see Product
Administration [page 25]).

Guest users should have at least Checkout and Add Item actions available, which is why Workflow Actions must
also be set. Next step is to open the Work-flow/Approval menu and click on the Workflow Permissions option.
User will choose the by User Types Premission type of listing and select the guest user’s group he’s created by
clicking . This brings up the Workflow Permissions Edit screen.

In addition to the Checkout and Add Items actions, user can also add Calculate and Save Quote actions. All
other actions aren’t available for guest users and selecting them here won’t make any difference.

Now, Guest User account can be created. Click on the Users option under the Users menu and choose Add
New. Make sure that the newly created company and user group had been selected for Companies and User
Group, respectively.

After a guest user account has been successfully created, user can go to the Guest User and Default User
Settings option and select a Guest user.

 Note

Inactive users won’t be able to log in, so try not to get into situations where your SAP CPQ is set up to use
inactive user as a guest account.

SAP CPQ Setup and Administration Guide


136 PUBLIC User Administration
Related Information

Guest User [page 135]


User Administration [page 134]

3.2 User Registration

User Registration allows users to create an account in case an administrator hasn’t previously created one for
them.

Administrator Side

To allow users to register from the login page, administrators must first set the parameter Allow User
Registration to TRUE. The parameter is in Users Guest User and Default User Settings Default User
Settings for Self-Registered Users . If the parameter is set to FALSE, users cannot register in the User
Registration page and they are prompted to contact their administrator.

Default User Settings for Self-Registered Users


This tab is for defining the settings that apply to every user that registers on their own, without an approval
from the administrator. To access the tab, go to Setup Users Guest User and Default User Settings
Guest User Settings .

1. In Custom Message, enter a message that appears on the User Registration page.
You can use HTML tags.
2. In Default User Type, select a user type that is assigned to all self-registered users (see User Types [page
160]).
3. In Default Password Expiration Period in Days for Self-Registered Users, define the number of days before a
password expires.
To prevent users from self-registering to SAP CPQ, enter -1 in this field.
4. In Default Ordering Parent and Default Managing Parent, select the users that will be assigned as the
ordering and managing parents [page 354], respectively, to self-registered users.
The field offers autocomplete suggestions as you type in characters.
5. In the Optional Fields list, select the fields that the user can optionally fill out during registration on the User
Registration page. The unselected fields are mandatory. Additionally, all fields that users must fill out are
listed in the dedicated list. All user custom fields [page 158] display in the registration page and they are
listed in this page as well.
6. Click Save.
The settings for the User Registration page are now set up.

Customizing User Registration Emails [page 138]


When you create users, they receive an email notification, which you can customize, containing their
account information, such as username, password, first name, and so on.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 137
3.2.1 Customizing User Registration Emails

When you create users, they receive an email notification, which you can customize, containing their account
information, such as username, password, first name, and so on.

The information displayed represents user field values that are accessed in Dictionaries [page 595]. For each
value, there’s a corresponding tag that pulls the value from the dictionary when a new user is created. By using
value-tag pairs, you can customize the email notification that the newly created users and self-registered users
receive.

Customizing the Email Sent to New Users

To customize the email notification that the newly registered users receive:

1. Go to Setup General Dictionaries .


2. Find your default custom dictionary.

3. Click next to the dictionary to view its values.


A page with key/value pair displays.
4. In the Key column, find the WS.Notification.SendUserRegistrationNotification.Body key.
Enter the key in the search field and either click Search or press Enter.
Values of the key and their corresponding tags are displayed in the Value column.

5. Click next to the key to customize the value-tag pairs.


A pop-up displays.
When adding value-tag pairs to the Value field, use values and tags displayed in the table in the following
format: Value:{{Tag}}.
6. Click Save.

The following table displays supported user field tags and the corresponding values the tags pull when new
users are created.

Values Tags

Username {{Username}}

Password {{Password}}

First name {{FirstName}}

Last name {{LastName}}

Email {{Email}}

User type {{UserGroup}}

Address1 {{Address1}}

Address2 {{Address2}}

URL {{URL}}

Domain {{Domain}}

City {{City}}

SAP CPQ Setup and Administration Guide


138 PUBLIC User Administration
Values Tags

Province {{Province}}

Zip code {{ZipCode}}

Country {{Country}}

State {{State}}

Phone {{Phone}}

Fax {{Fax}}

Title {{Title}}

Territory {{Territory}}

ID code {{IDCode}}

Company name {{CompanyName}}

Brand {{Brand}}

Customizing the Email Sent to Self-Registered Users

Customizing the email notification for self-registered users is done in the same way as for the newly created
users, the only difference being the key used - UserRegistration.NotificationUser.Body. The following table
displays supported user field tags and the corresponding values the tags pull when users self-register an
account.

Values Tags

Username {{Username}}

Password {{Password}}

First name {{FirstName}}

Requested company {{RequestedCompany}}

Last name {{LastName}}

Email {{Email}}

Address {{Address}}

Address1 {{Address1}}

Address2 {{Address2}}

URL {{URL}}

Domain {{Domain}}

City {{City}}

Province {{Province}}

Zip code {{ZipCode}}

Country {{Country}}

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 139
Values Tags

State {{State}}

Phone {{Phone}}

ID code {{IDCode}}

In addition, values and tags that are supported for self-registered users, Password being the exception, can also
be applied to the email notification administrators receive when users self-register. In this case, the
UserRegistration.NotificationAdmin.Body key is used.

Related Information

User Registration [page 137]

3.3 Users

The Users administration page enables you to manage the existing users in the system and add new ones.

To view a list of all users in the system or add new users, go to Setup Users Users . A list of all existing
users displays, and their total number is visible in the top-right corner of the page.

Users can be filtered by specific and advanced criteria. To quickly filter users, enter one of the following search
queries in the search box:

● username
● first name
● last name
● user type
● email address

Additionally, when using the Advanced Search, users can be filtered by:

● username
● first name
● last name
● user type
● email
● company
● address
● ZIP code
● managing parent
● ordering parent
● approval parent
● territory

SAP CPQ Setup and Administration Guide


140 PUBLIC User Administration
● active status
● the name of the administrator who created them
● created date
● the name of the administrator who modified them
● modified date
● federation ID

Values in all columns can be sorted in ascending/descending order by clicking the column headings. Clicking

opens a pop-up where you can select the columns displayed on the Users page. Alternatively, clicking
the check mark in the upper-right corner of the Display Settings pop-up selects all columns.

 Note

The additional columns display in the grid only the first time they’re added.

Editing user’s information is done by clicking the Edit button next to the corresponding username. In addition,

copying or deleting a user is done by clicking and selecting the appropriate action.

Creating a New User

To create new user, go to Setup Users Add New User . All the information needed to create a user is
organized into the following four tabs: General, Address, Date and Number Settings, Additional Settings, and
Custom Fields. The Custom Fields tab contains all user custom fields [page 158].

General Tab

On the General tab, you define general information for the new user.

 Note

All fields must be filled out.

1. Enter user’s personal information.


2. Enable or disable the Active toggle switch to indicate whether the user is active.
The toggle switch is enabled by default. When the toggle switch is disabled, the user isn’t able to log into
SAP CPQ and doesn’t receive email notifications.
3. Check Is SSO if the user will log in with Federated Single Sign-On (FSSO) . Federation ID must also be
entered below for this method to work.
4. In Username, define a username for the new user.
5. Enter the date until which the password will be valid in the Password Expiration Date field.
This field is required if the Password Validity Period application parameter is set to a certain number of
days. In that case, the date until which the password is valid is automatically calculated, but the field is still
editable.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 141
 Note

You can't create, import or change passwords of other regular users and SSO users during user
creation either via user import/export, user management in the Setup, or API.

6. In User Type, select a user type the user belongs to.


The field offers autocomplete suggestions as you start typing a search query. User types matching the
input are displayed as suggestions.
1. (Optional) Click Add New User Type to define a new user type.
In the pop-up, you can only define basic user type information. For additional settings, go to Setup
Users User Types .
7. Enable/disable the Administrator toggle switch to indicate whether the user is the administrator.
The toggle switch is disabled by default when creating a new user.
8. Select a company the user belongs to.
The field offers autocomplete suggestions as you start typing a search query.
1. (Optional) Click Add New Company to define a new company.
In the pop-up, you can only define basic company information. For additional settings, go to Setup
Users Companies .
9. Select a brand from the Branding dropdown list.
The selected brand determines the colors, logos, and visual styles the user sees in SAP CPQ, as defined in
Setup UI Design Branding .
10. Enter a title for the user (for example Mr.).
11. In Federation Id, enter a unique username that is used when federation is set up for the tenant. Federation
Id should be entered only if an SSO user is created.
12. Click Save.
Alternatively, to save your changes and go back to the Users administration page, click Save & Go Back.

Address

On the Address tab, you define the contact information for the new user. The following table explains each field
displayed under the Address tab.

Field Description

Address(1) The primary address of the user.

Address(2) The secondary address of the user.

City The city where the user resides

Province The province where the user resides

ZIP Code The ZIP or postal code of the user’s address.

Country The country/region where the user resides.

State The state where the user resides.

Phone The user's phone number.

Fax The user’s fax number.

Territory The territory the user belongs to if a business is organized


into different areas (for example EMEA), as defined in
Setup General Territories .

SAP CPQ Setup and Administration Guide


142 PUBLIC User Administration
Field Description

ID Code A unique identifier of the user’s address.

 Tip

Clicking Save & Go Back saves your changes and takes you back to the Users administration page.

Date and Number Settings

On the Date and Number Settings tab, you define how the user views dates and numbers in SAP CPQ. The
following table explains each field displayed under the Date and Number Settings tab.

Field Description

Date Format The format the user views dates in.

Date Separator The separator used between day/month/year in the date.

Number Format The format of numbers in SAP CPQ.

User Time Zone The user’s time zone.

Allow User to Change Time Zone When the toggle switch is enabled, the user is allowed to
change the time zone.

 Tip

Clicking Save & Go Back saves your changes and takes you back to the Users administration page.

Additional Settings

On the Additional Settings tab, you define additional information for the new user. Depending on the type, the
settings are grouped into Market and Hierarchy sections.

 Note

All fields must be filled out.

The following table explains each field displayed under the Additional Settings tab.

Field Description

Show Quotes Within (up to the current date) Specifies which quotes are visible to the user.

Default Market The default market retrieved for all new quotes.

Default Pricebook The default pricebook retrieved for all new quotes.

Default Dictionary A dictionary with default SAP CPQ UI text (button labels,
tooltips, warning messages, and so on).

Approval Parent Receives quotes submitted for approval. Whether or not the
user’s approval parent receives a quote depends on how the
rules are set up on the Approval Rules page.

Managing parent Can edit or delete child users. The managing parent can
also reassign quotes between child users.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 143
Field Description

Ordering Parent Receives all orders placed by child users for confirmation.

Federation Id A unique username used when federation is set up for the


tenant.

 Tip

Clicking Save & Go Back saves your changes and takes you back to the Users administration page.

By default, regular users (who aren’t using the Federated Single Sign-On to log into SAP CPQ) receive two
emails. One of these emails contains a username and a domain, while the other one contains an URL, which the
email recipient needs to use in order to create a password. You can prevent SAP CPQ from sending emails after
registration is complete if the Do not email login details to users created by admin parameter is set to TRUE.
SSO users don’t receive any emails after they are created, regardless of the selected value of Do not email login
details to users created by admin as they are managed by another system, the client’s internal IdP. They can
only use Federated Single Sign-On method to log in. .

 Note

Companies who have SSO users to whom they wish to send email notifications [page 342] attached to
actions (for example, notifications for quote approval or quote rejection) need to update the SAP CPQ URL
which will be sent as a part of the emails. For example, if the URL was http://
tenantID.webcomcpq.com/Login.aspx, it should now consist of the user's IdP like this: https://
tenantID.webcomcpq.com/fed/domainName/Login.aspx?quote=CFCECFCACFCFC7CA.

Related Information

User Administration [page 134]

3.4 Bulk User Import/Export

This functionality allows importing and exporting multiple users into or from SAP CPQ.

The following properties of the Bulk User Import/Export make it a more efficient solution than the standard
User Import:

● Optimized importing (you initiate export/import and leave the action running in the back while managing
other SAP CPQ features).
● Email notifications when the process is finished.
● User-oriented interface.

You can manage User Bulk Import/Export in the User section in Setup Import/Export Bulk Import/
Export . The page is divided into three sections:

SAP CPQ Setup and Administration Guide


144 PUBLIC User Administration
● Export Users - contains buttons for initiating different exports in SAP CPQ:
○ Export Template - exports a Microsoft Excel template with three sheets: Users (template for defining
user details), IMPORTANT INFO (points out the mandatory fields and states the restrictions for each
field) and Timezones (displays the timezone IDs and the respective descriptions).
○ Export All Users - exports a Microsoft Excel sheet with all users in the system.
○ Filter and Export - allows filtering users per columns and exporting the results in an Excel.
● Import Users - supports importing templates with user details. You can either drag and drop the templates
or manually browse for them.
● List of import/export jobs - shows the type, progress status, requester's name and the date for each
export/import job. You can also manage email notifications here by selecting/unselecting Email me when
done checkbox.

Importing Users in Bulk

There are different workflows you can follow in SAP CPQ to manage Bulk User Import. When you access
Setup Import/Export Bulk Import/Export Users , you can:

● Import new users through a predefined template [page 145].


● Export all users, add new or update the existing ones [page 147] and reimport the list.
● Filter the users and export the list [page 148] to later import it with new or updated data.

Import Through Template [page 145]


This workflow allows you to export a predefined template, fill it out with user details and reimport it into
SAP CPQ.

Update Existing Users [page 147]


SAP CPQ allows you to export a Microsoft Excel file with all users in the system, update their data and
reimport it into SAP CPQ.

Filter and Export [page 148]


The filtering option in the Bulk Import/Export allows you to export only the users that match your
search criteria.

3.4.1 Import Through Template

This workflow allows you to export a predefined template, fill it out with user details and reimport it into SAP
CPQ.

Context

Importing users through templates is recommended when you only wish to import new users without altering
the existing ones.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 145
 Note

Exported files don’t contain columns Password, Must Change Password and Password Locked, and you can’t
import a file which contains those columns.

Procedure

1. In the Export Users section, click Export Template.


2. Open the Microsoft Excel template on your computer.
3. Fill out the columns in Users and save the file.

Find the instructions for filling out the templates in Template Guidelines [page 146].
4. Drag and drop the Microsoft Excel template in the Import Users section or browse for it.

The import is automatically recorded in the list of jobs. The status of the import shows Queued until
Finished (Download). A progress bar visually shows the progress.
5. (Optional) Select the Email me when done checkbox.

A notification is emailed to you when the import is finished. Once the Status column indicates Finished
(Download), the import is completed. To check the success of the import, click Finished (Download) and
open the file on your computer.
6. Check the Status column in the Users sheet.

If a row is highlighted in red, update it according to the status message and reimport the template.
Otherwise, if no rows are highlighted, the users are imported successfully. If you cancel an import before
the processing is completed, the file is still available for download.

The imported users can be reached in Setup Users or Manage Users.

Template Guidelines [page 146]


This topic contains the instructions for filling out the templates for user bulk import.

3.4.1.1 Template Guidelines

This topic contains the instructions for filling out the templates for user bulk import.

The Excel template for Bulk Import contains three sheets:

● Users - the import sheet with columns that match fields in SAP CPQ.
● IMPORTANT INFO - restrictions and requirements for each field.
● Timezones - timezone IDs and descriptions.

The Users sheet is a container for information related to users that are to be imported. Each user is placed in a
separate row. The system uses IDs to match the records in the template to existing users in SAP CPQ. When
importing new users, the column ID should not be populated. However, when updating the existing users, you
should not change the ID in the exported file. If you delete or modify the ID of an existing user during editing,
the user may be duplicated in SAP CPQ.

SAP CPQ Setup and Administration Guide


146 PUBLIC User Administration
 Note

The order of columns and column names must stay unchanged, otherwise the import will not be
successful.

The Password, Must Change Password and Password Locked columns don’t exist in exported templates and the
import of those columns isn’t allowed. The exported templates contain the IsSSOUser column, the value of
which should be set to TRUE if a user is going to log in using the Federated Single Sign-On. The default value of
IsSSOUser cells is FALSE, and SAP CPQ sets them to FALSE if they are imported without any values.

A populated template that has already been imported into SAP CPQ contains the Status column indicating if a
user is successfully imported. In case of an error, a message explains what caused it. Additionally, users that
have not been imported are highlighted in red in the template. Unlike in the standard import where you supply
the ID for the managing, ordering and approval parents, in Bulk Import you supply their usernames. Also, in
Bulk User Import you can define the default market, default dictionary, date format, number format and the
expiration date for the underlying users.

Related Information

Bulk User Import/Export [page 144]


User Administration [page 134]

3.4.2 Update Existing Users

SAP CPQ allows you to export a Microsoft Excel file with all users in the system, update their data and reimport
it into SAP CPQ.

Context

Although you may add new users to the list, this workflow is recommended when updating the details of users
that are already in the system.

Procedure

1. In the Export Users section, click Export All Users.

The job is recorded in the list and its status changes accordingly (Queued > In Progress > Finished
(Download)).
2. Click Finished (Download) in the Status column.
3. Open the Microsoft Excel template on your computer.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 147
All user fields from the system are exported.
4. Update the data.

Column order and column names must stay unchanged, or else the import won’t be successful. Also, make
sure not to change the user IDs as it may lead to duplication in the system.
5. Drag and drop the Microsoft Excel template in the Import Users section or browse for it on your computer.
6. (Optional) Select the Email me when done checkbox to receive an email when the import is finished.

Once the status changes to Finished (Download), the import is completed.


7. To check the success of the import, click Finished (Download) and check the Status column.

Passwords aren’t exported from the system.

Related Information

Bulk User Import/Export [page 144]


User Administration [page 134]

3.4.3 Filter and Export

The filtering option in the Bulk Import/Export allows you to export only the users that match your search
criteria.

Context

Procedure

1. In Users, click Filter and Export and a pop-up displays.


2. Select the field per which the users are filtered.
3. Select an operator and enter a value.
4. Repeat the steps to add filters.
5. Click Export.

A pop-up message informs you that the export has started and a job entry displays in the list.
6. Click Finished (Download) in the Status column to download the export file.

The system has filtered the users per your search criteria.

The file contains all their details except the passwords.

SAP CPQ Setup and Administration Guide


148 PUBLIC User Administration
Related Information

Bulk User Import/Export [page 144]


User Administration [page 134]

3.5 Companies

Companies are organizations SAP CPQ users belong to.

Once companies are set up, you can assign individual users to a particular company. To view a list of all
companies in the system or add new companies, go to Setup Users Companies . A list of all existing
companies displays, and their total number is visible in the top-right corner of the page.

Companies can be filtered by specific and advanced criteria. To quickly filter companies, enter one of the
following search queries in the search box:

● name
● company code
● address(1)
● city
● state
● country

Additionally, when using the Advanced Search, companies can be filtered by:

● name
● company code
● address
● city
● state
● country

Values in all columns can be sorted in ascending/descending order by clicking the column headings. Values in
all columns can be sorted in ascending/descending order by clicking the column headings.

Clicking opens a pop-up where you can select the columns that are displayed on the Companies page.
Alternatively, clicking the check mark in the upper-right corner of the Display Settings pop-up selects all
columns.

 Note

The additional columns display in the grid only the first time they’re added.

Editing company information is done by clicking the Edit button next to the corresponding company name. In

addition, copying or deleting a company is done by clicking and selecting the appropriate action.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 149
Add a New Company [page 150]
To create a new company, go to Setup Users Companies Add new company

Companies Export/Import [page 151]


In organizations that support multiple companies within a single SAP CPQ environment, administrators
can easily export/import multiple companies at once

3.5.1 Add a New Company

To create a new company, go to Setup Users Companies Add new company

All the information needed to create a company is organized into the following two tabs: General and
Permissions.

General

On the General tab, you define general information for the new company.

 Note

Name and Company Code are the only required fields.

1. In Name, enter a name for the company.


System ID is automatically created based on the name entered in Name.
2. In Company Code, enter a unique identifier for the company (up to 25 characters).
If there are several companies with the same name in the system, unique company codes help you assign
the right company to a user.
3. Select a location for the company from Country and State dropdown lists.
4. In Address(1), Address(2), City and ZIP Code, enter address information for the company.
5. In Company Logo, select a logo for the company from the drop-down list or upload a new one.
These formats are supported: .jpg, .jpeg, .png, .gif, .bmp, .tif, .jfif and .tiff.
6. In Phone, Fax and E-mail, enter company’s contact information.
7. If applicable, in CRM Account ID, enter a unique identifier the company has in a CRM system.
8. Enable or disable the Create Customer Record toggle switch.
When the toggle switch is enabled, the system creates a global customer [page 462] using the information
entered for the company.
9. Click Save.
Alternatively, to save your changes and go back to the Companies page, click Save & Go Back.

Permissions

On the Permissions tab, you define permission groups that can administer the company. To move permission
groups from Available Permission Groups to Selected Permission Groups, you can:

SAP CPQ Setup and Administration Guide


150 PUBLIC User Administration
● Type a search query into the Available Permissions Groups search box.
Permission groups matching the entered search query display as you type.
● Expand the group (for example Companies) and select a specific group from the list that displays (for
example SAP).
Alternatively, to expand all available permission groups, click Expand All. Selecting a specific permission
group from the list is done by either clicking on the name of the group in question or by clicking the arrow
which appears when hovering over the name of the group.
● Add all groups belonging to the main permission group.
To do so, hover over the name of the main permission group and click either Add all or the rightward-
pointing arrow.
The selected permission groups are listed in Selected Permission Groups.

Additionally, each of the selected permission groups can be removed from the list. Alternatively, to remove all
selected permission groups, click Clear All. Once permission groups are selected, click Save.

Alternatively, if you want to save your changes and go back to the Companies page, click Save and Go back.
Alternatively, if you want to save your changes and go back to the Companies page, click Save and Go back.

Related Information

Companies [page 149]


Companies Export/Import [page 151]
User Administration [page 134]

3.5.2 Companies Export/Import

In organizations that support multiple companies within a single SAP CPQ environment, administrators can
easily export/import multiple companies at once

In the Companies Export/Import page you can export/import companies following one of these workflows:

● export all companies in SAP CPQ


● download a template > fill out company details > import the file
● export all companies > change details and add new companies > import the file.

Import Template

The sample template lets you easily upload multiple new companies in SAP CPQ. To download the import
template, click Download Template in the Companies Export/Import page. The Excel file contains two sheets:

● Companies - enter details of the companies that you wish to import in this sheet.
● Important info - displays which fields are required and what are the restrictions for some fields. Required
fields are Company Name, Country, Company code and System Id. Do not edit this sheet.

Update Existing and Add New Companies [page 152]

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 151
This procedure describes how to export all companies in the system, change their details, add new
companies, and import the updates in SAP CPQ.

3.5.2.1 Update Existing and Add New Companies

This procedure describes how to export all companies in the system, change their details, add new companies,
and import the updates in SAP CPQ.

Context

The best practice for importing new companies in the system is to do it through the import template. To update
existing company details, you need to export them from the system, change the data and then import them
again.

Procedure

1. Click Export.

A file is downloaded to your computer.


2. Populate the file with new data.

 Note

Company Name, Country, State, Company code, and System Id are required fields. Don’t populate the
MEMBER_ID column as these values are automatically generated by the system. Additionally, you
shouldn’t change the member id of the existing companies.

3. In Import, click .
4. Select the file for import.
5. Click Apply Template.

A message informs you that the companies are imported successfully.

In case of an unsuccessful import, an error message pops up.


6. Click Download report and open the file.

Invalid records are marked in red and errors are described in the Error Message column.

Related Information

Companies Export/Import [page 151]


Companies [page 149]

SAP CPQ Setup and Administration Guide


152 PUBLIC User Administration
User Administration [page 134]

3.6 Log In as a Proxy User

If you have been granted access to another user’s account, you can log into SAP CPQ on their behalf to
troubleshoot and resolve the issues they encountered.

 Note

The visibility of the Login as Proxy User page in default SAP CPQ tenants is now assigned via the Access
Rights feature. It can’t be accessed in other tenants regardless of the assigned access rights.

You can log in as a proxy user forboth regular and SSO users [page 140].

Administrator Logging In as a Proxy User

If you’re an administrator and a user granted you access to their account, take the following steps to log in on
their behalf.

1. Go to Setup Users Users .


2. Find the user who granted you access to their account.

3. Click next to the username and select Login as Proxy User.


The page reloads, and you’re automatically logged in as the user who granted you access. You remain
logged in as a proxy user until you log out. Furthermore, your login is logged in the User Actions tab of the
Audit Trail.

Support Representative Logging In as a Proxy User

If you’re a support representative and a user granted you access to their account, take the following steps to
log in on their behalf.

1. Log into the default tenant.


2. Go to Setup General Login as Proxy User .
A new page displays.

 Note

The page is available only if a user has granted you access.

3. From the Tenant dropdown list, select the tenant the user is logged into.
You can either type the tenant name in the search field or browse the list of tenants.
A table displays, containing the username, name, and user type of the user who granted you access to their
account.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 153
4. Click next to the user.
The page reloads, and you’re automatically logged in as the user who granted you access. You remain
logged in as a proxy user until you log out. Furthermore, your login is logged in the event log of the default
domain.

 Note

If the user granted you access and you’ve followed the previously mentioned steps but still have
problems logging in, contact the SAP CPQ Engineering team.

Related Information

User Administration [page 134]


Users [page 140]
User Registration [page 137]

3.7 Permission Groups

The Permission Groups section in Setup Users allows administrators to add new and modify existing
permission groups.

Users should be included in a permission group to share access rights over SAP CPQ objects (Pricebooks,
Tables on Quotes, etc.). As a result, administrators can assign access rights to multiple users in one click.

Permission groups can be filtered by specific and advanced criteria. To quickly filter permission groups, enter
one of the following search queries in the search box:

● permission group name


● member name

Group members can be quickly filtered by their username.

Additionally, when using the Advanced Search, permission groups can be filtered by:

● permission group name


● description
● members

User Search Logic

To add users to a group, administrators can perform simple and/or advanced search or browse for specific
users. To do a simple search, you select User Types, Companies, Markets, and Brands. The logic AND is applied
between each of the groups. However, if multiple values are selected within a group, the logic OR is applied.

SAP CPQ Setup and Administration Guide


154 PUBLIC User Administration
When combining simple and advanced search, the logic AND is applied. The advanced search is performed
through formulas you can create when Advanced mode is selected.

Example

To enable the same permission rights to all Sales Administrators who work in SAP Sales Cloud, you should
combine simple and advanced search. Selecting Sales and Sales Management user types and SAP Sales Cloud
company filters a group of Users that match both criteria. After an advanced formula such as
CTX(Visitor.IsAdmin ) is applied, the group is additionally filtered to Administrators. Due to AND logic between
the simple and advanced search, the Permission Group contains Sales Administrators from SAP Sales Cloud.

Advanced Mode

The Advanced Mode allows you to filter Users per custom fields and also per fields that aren’t included in the
simple search. To perform a search, you create a formula using SAP CPQ tags. Note that formulas should
primarily be used to inspect the field values for the logged User. Retrieving values from the Quote and
Configurator-related fields won’t return valid results.

Re-Evaluating Permission Group Formulas

Once a Permission Group formula is created, the system re-evaluates it on the following occasions to include/
exclude Users:

● When Users log in.


● After saving personal details on the User Page.
● When the Quote is loaded.
● After the Quote market is changed.

If you create a formula inspecting a Quote field, the system doesn't re-evaluate it every time a change is made
on the respective Quote but only when the Quote is loaded. The re-evaluation of formulas isn’t triggered by the
changes on Quotes and consequently, the formula filters the same Users as before the change was made.
Reloading the Quote re-evaluates the formula and corresponding Users are included in the Permission Group.

Create a Permission Group [page 156]


To create a Permission Group, you can either apply simple and advanced filter criteria or browse for
exact Users you wish to include in the group.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 155
3.7.1 Create a Permission Group

To create a Permission Group, you can either apply simple and advanced filter criteria or browse for exact
Users you wish to include in the group.

Procedure

1. In Setup, access Users Permission Groups .


2. Define the name of the permission group. The System Id is automatically generated as you enter the name
of the group.
3. (Optional) In Description, describe the group and add any additional notes you might have.
4. Move permission groups from Available Permission Groups to Selected Permission Groups.
a. Type a search query into the Available Permissions Groups search box.
b. Expand the group (for example, Companies) and select a specific group from the list that displays (for
example, SAP Sales Cloud). Alternatively, to expand all available permission groups, click Expand All.
Selecting a specific permission group from the list is done by either clicking on the name of the group
in question or by clicking the arrow that appears when hovering over the name of the group.
c. Add all groups belonging to the main permission group. To do so, hover over the name of the main
permission group and click either Add all or the rightward-pointing arrow. The selected permission
groups are listed in Selected Permission Groups.
d. Enable the Advanced mode toggle switch for a more complex filtering. In advanced mode, you can
create formulas to inspect values of User custom fields.
e. Click Formula Builder and a formula builder pops up.
f. Create an advanced formula using tags. The system accepts only the tags that pull values from the
fields of the logged User. You can’t pull values from the Quote or the Configurator context.
g. Click Save. The filtered Users are included in the group.

 Note

If you know the names of Users you wish to include, you should skip the simple and advanced search
and enter their name in the Users search field. Multiple selections is allowed and the list of Users is
displayed below the search field.

For more details on defining permission groups, click See how to combine fields into permission group,
placed above Available Permission Groups.

Related Information

Permission Groups [page 154]


User Administration [page 134]

SAP CPQ Setup and Administration Guide


156 PUBLIC User Administration
3.8 Quick Search and Advanced Search

The SAP CPQ catalog can be searched via the quick search or the advanced search.

Quick Search

Catalog Quick Search works with an autocomplete option. Users conduct the search by entering a key word(s)
for the name/description of the product they are looking for. Quick Search will look for the product’s name/
description in the user selected language. If it doesn’t find the translation, Quick Search will then look for the
product name/description in the user default dictionary. The Quick Search result will always contain an entire
text body of the product name/description that users enter. In other words, if you search for a product with the
word “window” in it, and you enter the word “indow,” your Quick Search result will comprise all products
containing the word “indow” in them.

We have defined several parameters to improve search performance in Catalog Quick Search with an
autocomplete option. For now, if a number of products in the system exceeds 100,000 for search by Part
Number and Product Name, and 10,000 for search by Description, Word or Phrase, the words entered in the
Search box must equal the starting sequence of the text searched. Hidden parameters may be modified by
SAP CPQ administrators in the capacity that will not affect search performance.

These parameters are not used when using options Show more results and Advanced Search.

Advanced Search

Advanced search works a bit differently. When the user enters the search box field, Advanced Search will divide
the text into word segments (the search will follow the same search logic of the user selected language; if it
doesn’t find the translation, Advanced Search will then look for the product name/description in the user
default dictionary). The role of the functionality’s application parameter, “When users enter several words in
search box, SAP CPQ will find products based on each entered word (instead of searching based on entire
phrase)” is to define if the result of the product name or description must contain all individual words in the text
entered, (though not necessarily in the same order) within their textual values; or if it can contain at least one
word from the text entered.

Parameter=FALSE - must contain all words

Parameter=TRUE - must contain at least one word

 Note

The explanation provided in this document refers only to using the search by entering the product name/
description field.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 157
3.9 User Custom Fields

User custom fields allow you to add additional fields for users.

To view a list of all user custom fields in the system and/or add new custom fields, go to Setup Users
User Custom Fields . A list of all existing user custom fields displays, and their total number is visible in the
top-right corner of the page.

User custom fields can be filtered by specific and advanced criteria. To quickly filter user custom fields, enter
one of the following search queries in the search box:

● name
● label

Additionally, when using the Advanced Search, user custom fields can be filtered by:

● name
● label
● rank
● type

Values in all columns can be sorted in ascending/descending order by clicking the column headings.

Clicking opens a pop-up where you can select the columns displayed on the User Custom Fields page.
Alternatively, clicking the check mark in the upper-right corner of the Display Settings pop-up selects all
columns.

 Note

The additional columns display in the grid only the first time they’re added.

Editing a user custom field is done by clicking the Edit button next to the corresponding field name. In addition,

copying or deleting a user custom field is done by clicking and selecting the appropriate action.

Adding a New User Custom Field

To create a new user custom field, go to Setup Users User Custom Fields Add New User Custom
Field . All the information needed to create a user custom field is organized into the following two tabs:
General and Permissions.

 Note

Once created, the user custom field is displayed:

● below standard fields in Users Edit Additional Settings


● on the User Registration page

SAP CPQ Setup and Administration Guide


158 PUBLIC User Administration
● in Setup Users Guest User and Default User SettingsGuest User and Default User Settings
Default User Settings for Self-Registered Users . .

General

On the General tab, you define general information for the new user custom field.

1. In Name, enter a name for the new user custom field.


2. (Optional) In Label, enter a label for the new user custom field.
Even though label is automatically created based on the name entered in Name, you can enter a different
label or leave the field blank.
3. In Rank, click Set Rank.
A pop-up displays.
1. Drag and drop the user custom field to set its rank.
2. Click Save.
4. Select the type of the user custom field from the Type dropdown list.
○ Free Form - the user custom field appears as a text box in which the user inputs a value. There are no
restrictions on what the user can enter.
○ Date - the user custom field appears as a text box in which the user enters a date. The date the user
enters must match the date format set on User Page.
○ Attribute - the user custom field is attached to an attribute. Selecting this option triggers another
dropdown list to display where the user can select the attribute that the field will be connected to.
○ Long Text - the user custom field appears as a large text box in which the user can enter multiple lines
of text. There are no restrictions on what the user can enter.
5. (Optional) Select the Sensitive Data checkbox.
Previous and new sensitive data [page 745] values aren’t logged.
6. Click Save.
Alternatively, to save your changes and go back to the User Custom Fields page, click Save & Go Back.

Permissions

On the Permissions tab, you define user custom field permissions. The tab displays:

● Same permission for all Permission Groups - the switch is enabled by default, allowing all users in the
system the same type of access to the user custom field.
● Field permission dropdown list - here you select the type of access for the users.
○ Editable - the user custom field can be edited.
○ Read-Only - the user custom field can’t be edited.
○ Required - the user custom field must be defined.
○ Hidden - the user custom field isn’t displayed to everyone.

To grant the same access to users, leave the toggle switch enabled and select the type of access from the
dropdown list.

To limit the access, disable the toggle switch.

When the toggle switch is disabled, you define permission groups for each of the four field permissions by
moving permission groups from Available Permission Groups to Selected Permission Groups. If a user custom
field is hidden for all permission groups, it can’t be seen or changed on User Page > Modify Personal Details, but
the local administrator can still manage that field for the users.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 159
Related Information

User Administration [page 134]


Users [page 140]

3.10 User Types

User types control how users interact with the system.

For example, products, reports and workflow actions can have permissions set according to user types. To view
a list of all user types in the system and/or add new user types, go to Setup Users User Types . A list of
all existing user types displays, and their total number is visible in the top right corner of the page. User types
can be filtered by specific and advanced criteria. User types can be quickly filtered by group name. Additionally,
when using the Advanced Search, user types can be filtered by:

● group name
● group description
● XSLT file
● start category
● whether or not a user is able to create a quote from an incomplete configuration.

Values in all columns can be sorted in ascending/descending order by clicking the column headings. Clicking

opens a pop-up where you can select the columns that will be displayed on the User Types page.
Alternatively, clicking the check mark in the upper-right corner of the Display Settings pop-up selects all
columns.

 Note

The additional columns will display in the grid only the first time they are added.

Editing a user type is done by clicking the Edit button next to the corresponding group name. In addition,

copying or deleting a user type is done by clicking and selecting the appropriate action.

Add a New User Type [page 161]


You can add a new user type in Setup Users User Types Add New User Type .

Legacy UI Design [page 162]


XSL and XSLT files, which are also referred to as transformations, are used to customize the layout and
the information displayed on the following pages: Shopping cart/Quotes, My Quotes, Checkout, Waiting
for Approval, Place Order, Other Quotes, and Preview.

Setting Up a Landing Page [page 163]


To define where users land after they exit Setup, log into SAP CPQ and land from CRM, these settings
need to be managed.

New Project/Quotation Landing Page [page 164]

SAP CPQ Setup and Administration Guide


160 PUBLIC User Administration
After users click New Project/Quotation, the system evaluates three parameters for redirecting users to
a specific page.

3.10.1 Add a New User Type

You can add a new user type in Setup Users User Types Add New User Type .

Context

Group name is the only required field. However, it’s recommended to fill out other fields too.

Procedure

1. In Group name, enter a name for the new user type.

System ID is automatically created based on the name entered in Group name.


2. In Description, enter a more detailed description of the group.
3. Define the start page by clicking one of the following:

○ Select Product – a list of configurable and parent/child product items. The system saves the system ID
of the selected product so it can be used in scripting (User.UserType.LandingProductSystemId).
○ Select Page – a predefined list of pages:
○ Home Page (default) – default page on which users land, for example Catalog
○ Quote List – a list of existing quotes.
○ New Quote – an empty quote.
○ New Quote – Customer Tab – the Customer Info tab of an empty quote.
○ Catalog – With empty quote – the Catalog page (the system creates an empty quote in the
background).
○ Catalog – catalog with product items.
○ Approvals – list of quotes in the Waiting for Approval tab.
4. Click Start category to define the category users belonging to the user type land to in SAP CPQ.
5. In the Categories pop-up, select a product category on which users land.

Categories with a downward-facing arrow next to it contain subcategories. Clicking the arrow expands the
category.

 Note

For more details on setting up landing page for a user type refer to Setting Up a Landing Page [page
163].

6. Enable or disable the displayed toggle switches:

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 161
○ Display tree navigation – determines whether category tree is displayed in the catalog in classic design.
○ Show Fields in a Quote Search/Filter – determines whether the advanced search is available on the
Existing Quotes page. For more information on how to define search fields that are available to users,
refer to Search Fields [page 277].
○ When creating a new quote, require customer to be selected first – determines whether users are
redirected to fill out customer information first when creating a new quote.
○ Show prices – determines whether users belonging to the user group are able to see prices in the
catalog (all available views), detailed view, configurator, and shopping cart. The visibility of prices in the
shopping cart can be controlled through XSL transformation.
○ Allow adding incomplete items – determines whether users belonging to the user group are able to
create a quote from an incomplete configuration. When the toggle switch is disabled, a message
displays, notifying users from the group that the configuration is incomplete and needs to be complete
before a quote can be created.
7. From the Default category view dropdown list, select the view that is used as the default view for categories
in the Catalog.

The options are as follows: Tabular, List, and Custom.


8. In Not visible views, select the views that won't be available to users in the Catalog when they use the SAP
CPQ classic design.
9. In Legacy UI Design, select an existing XSLT file or upload a new one for each visual style displayed.

More information is available in Legacy UI Design [page 162].


10. In UI Design, add a custom template.
11. Click Save.

Alternatively, to save your changes and go back to the User Types page, click Save & Go Back.

 Note

Selections made in Start page and Start category apply to users logging directly into SAP CPQ and
users landing from external CRM systems (Salesforce, MS Dynamics and NetSuite CRM systems).

Related Information

User Types [page 160]


User Administration [page 134]

3.10.2 Legacy UI Design

XSL and XSLT files, which are also referred to as transformations, are used to customize the layout and the
information displayed on the following pages: Shopping cart/Quotes, My Quotes, Checkout, Waiting for
Approval, Place Order, Other Quotes, and Preview.

A different XSL/XSLT file can be assigned to each visual style available in the Legacy UI Design section by
selecting a file from the dropdown list. Alternatively, files specially tailored for company’s needs can be
uploaded by clicking Upload new file. You can download or delete the XSL or XSLT files you selected or

SAP CPQ Setup and Administration Guide


162 PUBLIC User Administration
uploaded. If no files are selected for the above-mentioned pages, the system uses the default transformations
defined in Setup General Application Parameters .

The following table explains Visual Style application parameters.

NameName Description

Visual styles (Shopping cart/Quotes) Defines the XSL file that is used to render a quote page.

Visual Style (My Quotes) Refers to the tab displayed on the Existing Quotes page.

Visual Style (Checkout) Defines the XSL file for the screen that displays when a user
is going through the final checkout procedures.

Visual Style (Waiting For Approval) Refers to the tab displayed on the Existing Quotes page.

Visual Style (Place Order) Defines the XSL file for the screen that displays just before
checkout and shows a summary of the order.

Visual Style (Other Quotes) Refers to the tab displayed on the Existing Quotes page.

Visual Style (Preview) Defines the XSL file for the page used to display a quote
preview (Preview action).

Related Information

User Types [page 160]


User Administration [page 134]

3.10.3 Setting Up a Landing Page

To define where users land after they exit Setup, log into SAP CPQ and land from CRM, these settings need to
be managed.

● Start page and Start category in Users User Types


● When creating a new quote, require customer to be selected first - toggle switch in Users User Types .
In previous versions, this option was named Customer Required and it has kept the same behavior.
● Default (Pre-populate) with User Info and Default(Pre-populate) with User's Company Info checkboxes in
Customers/Customer Roles Customer Role Defaults for the Bill To customer role. When these
options are enabled, the system prepopulates new quotes with the customer bill to information and the
company information.

To determine the landing page for a user, the system first evaluates the start page. If the start page isn’t
defined, users land into Catalog, regardless of the value of other parameters. If the start page is Catalog - With
empty quote and New Quote, the system also evaluates the value of When creating a new quote, require
customer to be selected first, Default (Pre-populate) with User Info, and Default(Pre-populate) with User's
Company Info. If the selected start page isn’t in the quote context, the parameters aren’t treated and users land
to the selected start page.

SAP CPQ Setup and Administration Guide


User Administration PUBLIC 163
 Note

If When creating a new quote, require customer to be selected first is enabled and the parameters for
prepopulating user and company info are on, users land into the Catalog and an empty quote is created in
the background.

Related Information

User Types [page 160]


User Administration [page 134]

3.10.4 New Project/Quotation Landing Page

After users click New Project/Quotation, the system evaluates three parameters for redirecting users to a
specific page.

The parameters in question are the following:

● When creating a new quote, require customer to be selected first


● Create Empty Quote First - application parameter in General Application Parameters Shopping Cart
and Quotes .
● Default (Pre-populate) with User Info and Default (Pre-populate) with User's Company Info for the Bill To
customer role.

If When creating a new quote, require customer to be selected first is on and the two options for prepopulating
data on the Customer Role Defaults page are selected, users land into Catalog with an empty quote in the
background since the Customer Info tab has been prepopulated. If When creating a new quote, require
customer to be selected first is disabled and Create Empty Quote First is TRUE, users land on the Quotation tab
of an empty quote.

 Note

Whenever When creating a new quote, require customer to be selected first is enabled, regardless of other
settings, a new quote is created in the system. The only scenario in which a new quote isn't created is if
both When creating a new quote, require customer to be selected first and Create Empty Quote First are
disabled.

Related Information

User Types [page 160]


User Administration [page 134]

SAP CPQ Setup and Administration Guide


164 PUBLIC User Administration
4 Quotes Administration

This section contains description of all features that are related to creating and managing quotes in SAP CPQ.

Document Generation [page 166]


Document Generation allows users to transfer quote details to documents that can be printed,
downloaded, and emailed.

Quote 2.0 [page 208]


Quote 2.0 is the improved quote engine available since June 2018. The new quote engine was
developed as a part of the initiative to make SAP CPQ the state-of-the-art software that allows users to
create large quotes more quickly than in Quote 1.0.

Quote Tables [page 258]


SAP CPQ supports tabular structure for displaying dynamic data on Quotes. Quote Tables can be a
useful resource for displaying Customer purchase history, capturing payment details, etc.

Quote Tab Permissions [page 271]


The Quote Tab Permissions allows managing visibility of the quote tabs based on the workflow statuses
and permission groups.

Custom Fields [page 272]


The Custom Fields administration allows creating custom fields in the shopping cart for users to
include additional information, such as terms of payment or other specific information to your
company.

Key Attributes [page 275]


Key Attributes allow setting up an attribute as search criteria on the user side.

Search Fields [page 277]


The Search Fields administration allows controlling which fields will be available for users to filter their
load quote page by.

Quote Visibility [page 278]

Reports [page 283]


The Reporting Module allows authorized users to create reports, such as how many configurations
have been completed in a certain time frame, who completed them, how many quotes were generated
or how many projects were created, their status, activities by departments, individual users,
customers, etc. SAP CPQ administrators can set these reports up by using the administrative interface
for the reporting module.

Cart Level Aggregates [page 290]

AI Product and Pricing Recommendations [page 291]


SAP CPQ can use artificial intelligence to display product and pricing recommendations on quotes.

Bulk Deletion [page 294]


The Bulk Deletion administrative section allows users to safely and easily delete other user’s, their
quotes, or their customers.

Column Headings [page 296]


The Column Headings administrative section allows SAP CPQ administrators to control the columns
displayed to users on the Existing quotes page.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 165
Email Customers / Quote Acceptance Settings [page 297]
This option can be used when there is need to customize default settings when sending an email after
generating documents.

Favorites [page 299]


Favorites will be presented to users in a widget that will be placed in different pages in SAP CPQ (quote,
catalog, configuration and special page for Favorites).

Images for Quote Actions [page 301]


The purpose of this feature is to enable images for quote actions so that users can easily spot them.

MRC Column in Existing Quotes [page 303]


The purpose of this feature is to allow MRC total amount as column in the list of existing quotes.

Quick Config (also referred to as Reverse Search ) [page 304]


The purpose of the Quick Config functionality is to provide a shortcut for searching and configuring the
configurable product at the same time.

Quick Product Search in the Quote [page 305]


Quick product search on ‘Add Products’ section is used for finding all types of product (simple or
configurable) or favorites by typing any part of its part number, product name or description.

Quote Item Custom Fields [page 307]


Custom fields on quote items are enabled so those are able to hold values of different types.

Quote Layout [page 310]


This functionality enables system administrators, and selected users, to personalize their shopping
cart/quote. This functionality is available in Responsive Design only.

Quote Revisions [page 312]


A quote revision is a copy of the quote from which the revision was created.

Create Quote Tab [page 313]


Quote tabs are used for organizing information on quotes.

Renewal Management [page 314]


Renewal of product and services is one of the key business operations in many industries, especially in
Service oriented industry.

Report Module [page 318]


This feature gives users a Reports and Dashboards Overview Page that includes a list of existing reports
in the system. As an SAP CPQ administrator, you can search reports and executed different actions on
them.

Standard Quote Fields [page 323]


Listed here are the standard quote fields that are present in the quote by default.

4.1 Document Generation

Document Generation allows users to transfer quote details to documents that can be printed, downloaded,
and emailed.

This feature allows administrators to create document templates with tags that retrieve specific quote details.
Users, on their side, can generate documents based on those templates. The format and style of the resulting

SAP CPQ Setup and Administration Guide


166 PUBLIC Quotes Administration
printable document, including fonts, colors, and images, is entirely based on the layout of the document
template. Once users create a quote, they often need to email the details to customers for further review. The
Document Generation feature provides a practical solution for that, while providing administrators with
sufficient autonomy to define the format and the style of the document. Users can generate simple documents
with only one section, as well as section documents to be later included in multisection documents.

For data to be displayed in generated documents, you need to enter dedicated tags in the template. Each tag
can retrieve any specific quote details, configuration, customer, or user-related information that is meant to be
displayed in the output document. The list of all tags and a detailed explanation with examples is in the
Document Generation Tags [page 168] section. Alternatively, you can use the standard CTX tags instead of
quote template tags to retrieve data.

 Tip

If you need to create templates with basic quote details and you don't have experience with document
generation tags, use the Template Creation Tool.

In addition to tags, you can also insert any object that Microsoft Word supports into a Microsoft Word template,
such as an image or another document file (which can be another document template). Administrators can
configure document templates in Setup Quotes Document Generation Templates . This feature owes its
flexibility to the fact that administrators can define the visibility and format permissions, as well as select
additional fields and documents to be included in the generated document. Additionally, administrators can
enable users to administer templates on the user side.

Document Generation Tags [page 168]


Generated documents in SAP CPQ are populated via tags (you insert a dedicated tag into a template
and when users generate documents, specific data is retrieved from the system and displayed in the
document).

Create Document Generation Template [page 189]


The Document Generation Templates page displays a list of all document templates in the system,
letting you manage, create, and delete templates and translate their names.

Document Generation Engines [page 198]


SAP CPQ has two engines for generating documents: the old and the new document generation engine.

Setup Administration [page 199]


This page covers the workflow adjustments that need to be made to enable document generation and
the parameters that need to be set.

Manage Content Documents [page 201]


Documents that you wish to attach as additional content or additional documents to a generated
document must first be uploaded in the Manage Content Documents section in Setup Quotes .

Template Creation Tool [page 202]


The Template Creation Tool lets you create templates with basic document tags so you don’t need to
add them manually.

Document Generation User Journey [page 205]


The purpose of this feature is to visually guide new or less experience or less frequent users through
the process of selecting products, creating a shopping cart, generating a quote document.

Document Generation Tips and Tricks [page 206]


This page lists the workarounds and methods of avoiding issues with document generation in SAP
CPQ.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 167
4.1.1 Document Generation Tags

Generated documents in SAP CPQ are populated via tags (you insert a dedicated tag into a template and when
users generate documents, specific data is retrieved from the system and displayed in the document).

All available tags are grouped and described in these sections:

C Tags [page 169]


C tags retrieve data for each item in a quote. The system processes C tags only if they are within C2
tags.

Q Tags [page 170]


Q tags retrieve quote data (currency, user and owner data, etc.).

Miscellaneous Tags [page 175]


This page lists various tags that don't belong to any of the categories.

Special Tags [page 176]


Special tags begin with ST.

Custom Table Tags [page 176]


These tags retrieve data from custom tables.

Nested Products Tags [page 177]


To display parent/child product structure in generated documents, you should add MAIN tags for
children products inside parent MAIN tags.

Container Tags [page 179]


Use container tags to display data from a container in SAP CPQ in a generated document.

C2 Loop [page 180]


You can use the C2 tags when you wish the system to iterate through all items in a quote.

Conditions [page 183]


Standalone conditions and tag-dependent conditions let you restrict what data tags retrieve.

SAP Subscription Billing Integration Tags [page 184]


When SAP CPQ is integrated with SAP Subscription Billing, you can use these tags in the document
generation template to retrieve elements specific to the integration.

SECTIONS Loop [page 186]


The SECTIONS loop makes SAP CPQ iterate through all Solution Design sections and retrieve
information such as their names, hierarchy Ids, ranks (the ordinal numbers of the sections’ rows),
values from all their custom fields, and section totals.

Example Templates [page 188]


Here you can download Microsoft Word and Microsoft Excel templates that contain several frequently
used tags for document generation and CTX tags for retrieving specific data.

SAP CPQ Setup and Administration Guide


168 PUBLIC Quotes Administration
4.1.1.1 C Tags

C tags retrieve data for each item in a quote. The system processes C tags only if they are within C2 tags.

Tag Description

<<C_TAG()>> The basic C tag. Add any modeling tag (CTX tag, table tag,
etc.) in the parenthesis.

<<C_TAG_FILE()>> Retrieves a document from Manage Content Documents


and inserts it into the generated document for each item.
The name of the file must contain the extension. Only CTX,
TABLE and other tags from the SyntaxChecker can be used
for this tag.

<<C_ID>> Retrieves the ordinal number of the item in the quote. For
child items with cart IDs 5.1 and 5.2, for example, the tag
retrieves 6 and 7 as items' ID.

<<C_VALUE(RolledUpCartItem)>> Retrieves rolled up quote item IDs (the ID of the items as


they display in the quote, not their ordinal numbers). For
example, 5.1, 5.2, etc.

<<C_PNUM>> Part number of all quote items.

<<C_QTY>> Quantity of quote items.

<<C_DISCOUNT>> The discount percent of quote items.

<<C_USER_DESC>> The description that users entered for quote items.

<<C_DESC>> The description of quote items.

<<C_DESIRED>> The base price of quote items.

<<C_EMPTY>> Returns an empty space.

<<C_BASE>> Returns the base price of quote items.

<<C_LIST>> The list price of quote items.

<<C_INSERT_FILE_FROM_ATTRIBUTE()>> Inserts a file from a file attachment attribute.

<<C_PRICE>> Quote item total extended amount.

<<C_ROLLED_UP_DESIRED>> Sum of net prices for all line items. Applicable only when
added to main items.

<<C_ROLLED_UP_BASE>> Sum of base list prices for all line items. Applicable only
when added to main items.

<<C_ROLLED_UP_LIST>> Sum of extended list prices for all line items. Applicable only
when added to main items.

<<C_PIMAGE_LARGE>> Large product image set up for the product.

<<C_PIMAGE>> Product image.

<<C_PTYPE>> Product type.

<<C_PNAME>> Product name.

<<C_PATTR()>> Takes any product level tag (for example,


<*Value(AttributeName)*>) and retrieves its value. It's used
only for attributes that are line items.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 169
Tag Description

<<C_PATTR2()>> Same as <<C_PATTR(...)>>. It's left in for backward


compatibility.

<<C_PATTR_FILE()>> Retrieves a document (Word, PDF, and images) from


Manage Content Documents and inserts it into the
generated document. You can use this tag when there the
document you wish to insert contains dynamically retrieved
data. The name of the file must contain the extension.

<<C_PATTR_FILE_STATIC>> Retrieves a document (Word, PDF, and images) from


Manage Content Documents and inserts it into the
generated document. This tag should be used only when
the document that you want to insert doesn't have any data
that is dynamically retrieved via tags. In that case, when
there's dynamic data in the file, use the
<<C_PATTR_FILE()>> tag. The name of the file must
contain the extension.

<<C_PATTR_EXCEL()>> Retrieves an Excel document from Manage Content


Documents and inserts it into the generated document. This
tag should be used only when the document that you want
to insert doesn't have any data that is dynamically retrieved
via tags. In that case, when there's dynamic data in the file,
use the <<C_PATTR_FILE()>> tag. The name of the file
must contain the extension.

<<C_KEY_ATTR()>> Inserts the value of the key attribute.

4.1.1.2 Q Tags

Q tags retrieve quote data (currency, user and owner data, etc.).

The following tables display Q tags that you can add anywhere in the document template to retrieve data from
quotes. Q tags mainly retrieve general quote information (currency, user and owner data, etc.).

General Tags

Tag Description

<<Q_QUOTE(NUMBER)>> Quote number.

<<Q_QUOTE(TOTAL)>> Retrieves NRC quote total amount. Use the CTX tags to
retrieve the MRC total amount
<<Q_TAG(<*CTX(Quote.Total.MrcAmount.Display)*>)>>.

<<Q_QUOTE(TOTALNET)>> Retrieves NRC quote total net price. Use the CTX tag to
retrieve the MRC total net price:
<<Q_TAG(<*CTX(Quote.Total.NetPrice.Display)*>)>>.

<<Q_QUOTE(BASE_TOTALNET)>> NRC total net price without the shipping amount.

<<Q_QUOTE(BASE_TOTAL)>> NRC total net price including the shipping amount.

<<Q_QUOTE(FREIGHT_METHOD)>> The name of the shipping method.

SAP CPQ Setup and Administration Guide


170 PUBLIC Quotes Administration
Tag Description

<<Q_QUOTE(FREIGHT)>> The shipping amount.

<<Q_QUOTE(DATE_CREATED)>> Retrieves the date when the quote was created, displayed in
the user's date format. For other formatting, use the CTX
tags:
<<Q_TAG(<*CTX(Quote.DateCreated.Format(dd.MM.yy) )*
>)>> and
<<Q_TAG(<*CTX(Quote.DateCreated.Format(dd,MMMM
yyyy))*>)>>.

<<Q_QUOTE(DATE_MODIFIED)>> Retrieves the date when the quote was last modified,
displayed in the user's date format. For other formatting,
use the CTX tags:
<<Q_TAG(<*CTX(Quote.DateModified.Format(dd.MM.yy)
)*>)>> and
<<Q_TAG(<*CTX(Quote.DateModified.Format(dd,MMMM
yyyy))*>)>>.

<<Q_QUOTE(COMMENT)>> Quote comment.

<<Q_QUOTE(CURRENCY)>> The name of the currency.

<<Q_QUOTE(CURRENCY_SIGN)>> Currency sign.

<<Q_QUOTE(REVISION)>> Quote revision number.

<<Q_QUOTE(VALID_UNTIL)>> Retrieves the date 30 days from the current date. To


retrieve a different date, specify it in the tag (for example,
<<Q_QUOTE(VALID_UNTIL+45)>> retrieves a date 45 days
from the current day). For different date formats, use a CTX
tag (for example, <*CTX(Date.AddDays(20).Format(yyyy-
MM-dd) )*>).

<<Q_QUOTE(USER_ID)>> ID of the current user.

<<Q_QUOTE(OWNER_ID)>> ID of the quote owner.

<<Q_QUOTE(CART_ID)>> ID of the current quote.

<<Q_QUOTE(STATUS)>> The current status of the quote.

Bill-to Ship-to and End-User Tags

Tags

Bill To Tag Ship To Tag End-User Tag Description

<<Q_BILLTO(COMPANY)>> <<Q_SHIPTO(COMPANY)>> <<Q_ENDUSER(COM­ User's company.


PANY)>>

<<Q_BILLTO(FIRST­ <<Q_SHIPTO(FIRST­ <<Q_ENDUSER(FIRST­ User's first name.


NAME)>> NAME)>> NAME)>>

<<Q_BILLTO(LASTNAME)>> <<Q_SHIPTO(LAST­ <<Q_ENDUSER(LAST­ User's last name.


NAME)>> NAME)>>

<<Q_BILLTO(EMAIL)>> <<Q_SHIPTO(EMAIL)>> <<Q_ENDUSER(EMAIL)>> User's email address.

<<Q_BILLTO(ADDRESS1)>> <<Q_SHIPTO(ADDRESS1)>> <<Q_ENDUSER(AD­ User's first address.


DRESS1)>>

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 171
Tags

Bill To Tag Ship To Tag End-User Tag Description

<<Q_BILLTO(ADDRESS2)>> <<Q_SHIPTO(ADDRESS2)>> <<Q_ENDUSER(AD­ User's second address.


DRESS2)>>

<<Q_BILLTO(CITY)>> <<Q_SHIPTO(CITY)>> <<Q_ENDUSER(CITY)>> User's city.

<<Q_BILLTO(STATE)>> <<Q_SHIPTO(STATE)>> <<Q_ENDUSER(STATE)>> User's state.

<<Q_BILLTO(PROVINCE)>> <<Q_SHIPTO(PROVINCE)>> <<Q_ENDUSER(PROV­ User's province.


INCE)>>

<<Q_BILLTO(ZIPCODE)>> <<Q_SHIPTO(ZIPCODE)>> <<Q_ENDUSER(ZIP­ User's zipcode.


CODE)>>

<<Q_BILLTO(COUNTRY)>> <<Q_SHIPTO(COUNTRY)>> <<Q_ENDUSER(COUN­ User's country.


TRY)>>

<<Q_BILLTO(PHONE)>> <<Q_SHIPTO(PHONE)>> <<Q_ENDUSER(PHONE)>> User's phone number.

<<Q_BILLTO(FAX)>> <<Q_SHIPTO(FAX)>> <<Q_ENDUSER(FAX)>> User's fax number.

<<Q_BILLTO(CUSTOMER­ not available <<Q_ENDUSER(CUSTOMER­ User's customer number.


NUMBER)>> NUMBER)>>
You can use this tag to re­
trieve

other bill-to customer cus­


tom fields:

<*CTX(Quote.Cus­
tomer(BillTo).Custom­
Field(FieldName))*>

Quote User Tags

Tags Description

<<Q_USER(COMPANY)>> The name of the user's company.

<<Q_USER(USERNAME)>> The username of the user.

<<Q_USER(NAME)>> User's name.

<<Q_USER(TYPE)>> User's type.

<<Q_USER(EMAIL)>> User's email address.

<<Q_USER(ADDRESS1)>> User's first address.

<<Q_USER(ADDRESS2)>> User's second address.

<<Q_USER(CITY)>> User's city.

<<Q_USER(STATE)>> User's state.

<<Q_USER(ZIPCODE)>> User's zipcode.

<<Q_USER(COUNTRY)>> User's country.

<<Q_USER(PHONE)>> User's phone number.

<<Q_USER(FAX)>> User's fax number.

SAP CPQ Setup and Administration Guide


172 PUBLIC Quotes Administration
Quote Owner Tags

Tags Description

<<Q_OWNER(COMPANY)>> The name of the owner's company.

<<Q_OWNER(USERNAME)>> The username of the owner.

<<Q_OWNER(NAME)>> Owner's name.

<<Q_OWNER(TYPE)>> Owner type.

<<Q_OWNER(EMAIL)>> Owner's email address.

<<Q_OWNER(ADDRESS1)>> Owner's first address.

<<Q_OWNER(ADDRESS2)>> Owner's second address.

<<Q_OWNER(CITY)>> Owner's city.

<<Q_OWNER(STATE)>> Owner's state.

<<Q_OWNER(ZIPCODE)>> Owner's zipcode.

<<Q_OWNER(COUNTRY)>> Owner's country.

<<Q_OWNER(PHONE)>> Owner's phone number.

Company Tags

Tag Description

<<Q_COMP(NAME)>> Company name.

<<Q_COMP(EMAIL)>> Company's email address.

<<Q_COMP(ADDRESS1)>> Company's first address.

<<Q_COMP(ADDRESS2)>> Company's second address.

<<Q_COMP(CITY)>> Company's city.

<<Q_COMP(STATE)>> Company's state.

<<Q_COMP(ZIPCODE)>> Company's zipcode.

<<Q_COMP(COUNTRY)>> Company's country.

<<Q_COMP(PHONE)>> Company's phone number.

<<Q_COMP(FAX)>> Company's fax number.

Other Tags
In these tags, we'll use an example custom field Company Policy.

Tag Example Description

<<Q_CUSTOM_FIELD()>> <<Q_CUSTOM_FIELD(Company Retrieves the value of the custom field.


Policy)>> This tag can be replaced with
<<Q_QP()>> which has the same
behavior.

<<Q_CUSTOM_FIELD_FILE()>> <<Q_CUSTOM_FIELD_FILE(Company Retrieves the document from the


Policy)>> custom field and inserts it into the
generated document. First, you need to

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 173
Tag Example Description

upload the document in Manage


Content Documents and enter the file's
name with the extension in the
Company Policy field. The format of the
template and the file that you wish to
insert must be the same (if you're
creating a .doc template, the file in the
custom field must have the .doc
extension). This tag can be replaced
with <<Q_QP_FILE()>> which has the
same behavior.

<<Q_CUSTOM_FIELD_IMAGE()>> <<Q_CUSTOM_FIELD_IMAGE(Custom Retrieves the image from the custom


FieldName)>> field and inserts it into the generated
document. First, you need to upload
the document in Manage Content
Documents and enter the file's name
with the extension in the Company
Policy field. All image formats stated in
the Manage Content Documents page
when adding a new image are
supported. This tag can be replaced
with <<Q_QP_IMAGE()>> which has
the same behavior.

<<Q_FILE()>> <<Q_FILE(Policies and Retrieves a document from Manage


Conditions.docx)>> Content Documents and inserts it into
the generated document. The template
and the document must be in the same
format.

<<Q_FILE_STATIC()>> <<Q_FILE_STATIC(New Policies and Retrieves a document from Manage


Conditions.docx)>> Content Documents and inserts it into
the generated document. This tag
should be used only when the
document that you want to insert
doesn't have any data that is
dynamically retrieved vi tags. In that
case, when there's dynamic data in the
file, use the <<Q_FILE()>> tag.

<<Q_TAG()>> <<Q_TAG(<*CTX(Quote.Total.Amount. This tag should contain a CTX tag that


Display)*>)>> retrieves a value from SAP CPQ into
the generated document. You can use
the Q_TAG to replace any other specific
tag. Also, CTX tags should be used
when there are no document
generation tags and when the
condition for retrieving data is too
complex and no existing tags can
retrieve it.

<<Q_TAG_FILE()>> <<Q_TAG_FILE(<*CTX(Quote.Custom Retrieves images of type:


Field(Company Policy))*>.jpg>> GIF,JPG,WMF,BMP, word document of
type: DOC and excel document of type:
XLS that are already stored in Manage

SAP CPQ Setup and Administration Guide


174 PUBLIC Quotes Administration
Tag Example Description

Content Documents. In the example,


the tag retrieves a .jpg image stored in
the custom field Company Policy.

 Note

Every tag that inserts files supports these formats: DOCX, PDF, and images (BMP, EMF, GIF, ICO, JPG,
JPEG, PCX, PNG, TIF, TIFF, WMF).

4.1.1.3 Miscellaneous Tags

This page lists various tags that don't belong to any of the categories.

● <<INCLUDE_DOCUMENTS(DocumentName.pdf)>> and <<INCLUDE_DOCUMENTS_END>> - includes a


PDF file in the generated document. First, you need to upload the document in Manage Content
Documents. Afterwards, in the Additional Files tab of your template, enter the name of the PDF file with its
extension.
● <<UPDATE_TOC>> - updates the table of contents in the document after the document is processed.
● EVAL [EVAL(…)] EVAL function treats an expression as a VBScript call, evaluates it and returns the result.
When writing EVAL in Word, the program uses two sets of different quotation marks, open-ended (“) and
closed-ended (”). VBScript expects the same set (” ”) and doesn't evaluate the expression when two
different sets are entered. To prevent this from happening, type the expression in Notepad and copy paste
it to Word.

 Note

To remove ”,” from a price 12,345.99 returned by <<C_PRICE>> : [EVAL(Replace(+~:

<$$C_PRICE»”,”,”,””))]. In the above example <<C_PRICE>> is processed first resulting in


[EVAL(Replace(“12,345,99”,”,”,””))]. Once EVAL is processed, it will return 12345.99.

● HTML [HTML(…)] HTML tag takes the content and interprets is as HTML and inserts it in the document.
For example, [HTML(<<C_DESC>>)] . If <<C_DESC>> returns <a href=“http://
www.webcominc.com”>Webcom, Inc.</a>, the link is inserted in the document. If there's any text before or
after the HTML tag, the HTML content will be inserted in a new paragraph right before it. For example: text
before - [HTML(<<C_DESC>>)] - text after. Will result in: html returned content text before - - text after. To
include static text and have it on same line, just simply put it inside HTML tag. [HTML(text before -
<<C_DESC>> - text after)]

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 175
4.1.1.4 Special Tags

Special tags begin with ST.

Tag Description

<<ST_LOGO>> Company logo.

<<ST_USERFILE()>> Retrieves a document from Manage Content Documents


and inserts it into the generated document for each item.
The name of the file with the extension must be stated in
the parenthesis.

<<ST_USERFILE_IMG()>> Retrieves both documents and images. The name of the file
with the extension must be stated in the parenthesis.

<<ST_GROUP_SUBTOTAL()>> Returns subtotal for the group stated in the parenthesis.

<<ST_GROUP_DESCRIPTION()>> Returns a description for the group stated in the


parenthesis.

<<ST_GI()>> Returns value of Global Info ”…”.

<<ST_GI_FILE()>> Returns value of Global Info and inserts it as a file.

<<ST_GI_IMAGE()>> Returns value of Global Info and inserts it as image.

<<ST_PTYPE_PRICE()>> Returns a subtotal for product type ”…”.

<<ST_PTYPE_LISTPRICE()>> Returns a list subtotal for product type ”…”.

<<ST_PTYPE_DISCOUNT()>> Returns a discount percent for product type ”…”.

<<ST_GROUP_LABEL()>> Returns the label of the cart items group with the id you
provided. (for example, << ST_GROUP_LABEL (A)>>).

<<ST_PTYPE_NETPRICE()>> Calculates the Netprice for the product type provided by tag
(for example, <<ST_PTYPE_NETPRICE(Accessories)>>)

4.1.1.5 Custom Table Tags

These tags retrieve data from custom tables.

Tags Description

<<CUSTOM_TABLE(...)>> Always comes in pair with its closing tag


<<CUSTOM_TABLE_END>>. As a parameter, this tag
accepts the name of the custom table. (for example,
<<CUSTOM_TABLE(additional_options_custom_table)>>).

<<CUSTOM_TABLE_HEADER>> Always comes in pair with its closing tag


<<CUSTOM_TABLE_HEADER_END>>. This tag doesn't
accept any parameters and it's used to define the header of
the table that displays data.

<<CUSTOM_TABLE_ROW>> Always comes in pair with its closing tag


<<CUSTOM_TABLE_ROW_END>>. This tag defines the

SAP CPQ Setup and Administration Guide


176 PUBLIC Quotes Administration
Tags Description

table row where data is displayed. It can contain one or


more <<CUSTOM_TABLE_COLUMN>> tags.

<<CUSTOM_TABLE_COLUMN(...)>> This tag retrieves data from a specific cell (intersection of a


table column and a table row). This tag doesn't have a
closing tag. This tag accepts a parameter (the name of the
custom table column that you want to be displayed). This
tag is always placed within <<CUSTOM_TABLE_ROW>> tag.

Example
Assuming that SAP CPQ administrator has already defined a custom table named
additional_options_custom_table with two columns: additional_description and options, you can create a
template section to display data from the custom table as follows:

<<C2>>
<<MAIN>>
<<CUSTOM_TABLE(additional_options_custom_table)>>
<<CUSTOM_TABLE_HEADER>>
Additional description —- Options
<<CUSTOM_TABLE_HEADER_END>>
<<CUSTOM_TABLE_ROW>>
<<CUSTOM_TABLE_COLUMN(additional_description)>> ----
<<CUSTOM_TABLE_COLUMN(options)>>
<<CUSTOM_TABLE_ROW_END>>
<<CUSTOM_TABLE_END>>
<<MAIN_END>>
<<C_END>>

4.1.1.6 Nested Products Tags

To display parent/child product structure in generated documents, you should add MAIN tags for children
products inside parent MAIN tags.

The first main item in the tag structure can be any root item from the quote, which satisfies the condition. All
main tags inside that tag act as children items. Furthermore, there can be a child main tag inside a child main
tag, and so on. Main tags should be marked with a number according to their level (the root main item (parent
product) is marked with 1 and children main items are marked with 2, 3, etc, respectively).

<<QUOTE_PRODUCTS>>
<<NESTED_PRODUCTS>>
<<MAIN_1>>
<<CONTENT>>
<<CONTENT_END>>
<<MAIN_2>>
<<CONTENT>>
<<CONTENT_END>>
<<MAIN_END_2>>
<<MAIN_3>>
<<CONTENT>>
<<CONTENT_END>>
<<MAIN_END_3>>
<<MAIN_END_1>>
<<NESTED_PRODUCTS_END>>
<<QUOTE_PRODUCTS_END>>

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 177
 Tip

If you add conditions for retrieving nested products, the <<CONDITION_END>> tag isn't required.

Examples

Example 1

<<QUOTE_PRODUCTS>>
<<NESTED_PRODUCTS>>
<<MAIN_1:CONDITION(Hardware)>>
<<CONTENT>>
…Some Parent Item Information…
<<CONTENT_END>>
<<MAIN_2:CONDITION(Software)>>
<< CONTENT>>
…Child Item 1 Information…
<<CONTENT_END>>
<<MAIN_END_2>>
<<LI:CONDITION(Memory)>>
<<CONTENT>>
…Parent Line Item Information…
<< CONTENT_END>>
<< LI _END>>
<<MAIN_END_1>>
<<NESTED_PRODUCTS_END>>
<<QUOTE_PRODUCTS_END>>

In this example, children main tags are nested inside parent main tags. The parent main tag range is marked
with MAIN_1 and MAIN_END_1, and a child main tag is marked with MAIN_2 and MAIN_END_2 inside a parent
tag. The system prints information for the parent item, which is of type Hardware. After that, child item
information will be printed (for all children items of type Software), and then again parent item information will
be printed, followed by a parent line item information of type Memory. This way, information from the child item
is printed multiple times in the parent item. Also, child tag can have another child MAIN tag inside, to describe
real SAP CPQ product nesting.

Example 2
There can be multiple CONTENT tags defined, so HEADER, and FOOTER tags are redundant. The example
below shows a MAIN root tag structure:

<<MAIN_1>>
<<CONTENT>>
…Some Parent Item Information…
<<CONTENT_END>>
<<MAIN_2>>
<< CONTENT>>
…Child Item 1 Information…
<<CONTENT_END>>
<<MAIN_END_2>>
<<CONTENT>>
…More Parent Item Information…
<<CONTENT_END>>
<<LI>>
<<CONTENT>>
…Parent Line Item Information…
<< CONTENT_END>>
<< LI _END>>

SAP CPQ Setup and Administration Guide


178 PUBLIC Quotes Administration
<<MAIN_END_1>>

In the example illustrated above, there are two different CONTENT tags, which pull information from the root
item, and between them there's information from the child main item. Following that, information from a root
line item are printed. Also, HEADER and FOOTER tags are redundant in this case, since CONTENT could
replace both of them.

Example 3
If we have an EP String root item information that we want to print, and we want to print some EP Compressor
and EP Steam Turbine child information inside the parent, printed on different places (multiple times inside a
parent) this is how it should be possible to do that (LINE item tags are left out in an example because it's easier
to focus on main item nesting):

<<QUOTE_PRODUCTS>>
<<NESTED_PRODUCTS>>
<<MAIN_1:CONDITION([EQ](<*CTX( Quote.CurrentItem.ProductTypeName )*>,EP
String))>>
<<CONTENT>>
…Some String Information…
<<CONTENT_END>>
<<MAIN_2:CONDITION([EQ](<*CTX( Quote.CurrentItem.ProductTypeName )*>,EP
Compressor))>>
<<CONTENT>>
…Some Compressor Information (repeat for as many compressors)…
<<CONTENT_END>>
<<MAIN_END_2>>
<<MAIN_2:CONDITION([EQ](<*CTX( Quote.CurrentItem.ProductTypeName )*>,EP Steam
Turbine))>>
<<CONTENT>>
…Some Steam Turbine Information (repeat for as many steam turbines)…
<<CONTENT_END>>
<<MAIN_END_2>>
<<CONTENT>>
…More String Information…
<<CONTENT_END>>
<<MAIN_2:CONDITION([EQ](<*CTX( Quote.CurrentItem.ProductTypeName )*>,EP
Compressor))>>
<<CONTENT>>
…More Compressor Information (repeat for as many compressors)…
<<CONTENT_END>>
<<MAIN_END_2>>
<<MAIN_2:CONDITION([EQ](<*CTX( Quote.CurrentItem.ProductTypeName )*>,EP Steam
Turbine))>>
<<CONTENT>>
…More Steam Turbine Information (repeat for as many steam turbines)…
<<CONTENT_END>>
<<MAIN_END_2>>
<<CONTENT>>
…More String Information…
<<CONTENT_END>>
<<MAIN_END_1>>
<<NESTED_PRODUCTS_END>>
<<QUOTE_PRODUCTS_END>>

4.1.1.7 Container Tags

Use container tags to display data from a container in SAP CPQ in a generated document.

Container tags must be in the main section of C2 tags.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 179
Below is the basic structure of container tags:

<<MAIN>>
<<CONTAINER(ContainerName)>>
<<CONTAINER_HEADER>>
<<CONTAINER_HEADER_END>>
<<CONTAINER_ITEM>>
<<CONTAINER_ITEM_END>>
<<CONTAINER_FOOTER>>
<<CONTAINER_FOOTER_END>>
<<CONTAINER_END>
<<MAIN_END>>

Inside CONTAINER sections, use CONTAINER_TAG with a CTX tag to retrieve data (for example,
<<CONTAINER_TAG(<*CTX(Container(Project Tasks).Row(2).Column(Total).GetFormatted))*>)>> returns
the value of the Total column for the second row in the container, keeping the original format).

4.1.1.8 C2 Loop

You can use the C2 tags when you wish the system to iterate through all items in a quote.

You can add C2 tags only to main and line items. You can't add a C2 loop inside a C2 loop, but you can add a
condition inside a C2 loop.

Below is the outline of the structure of a C2 tag. You can copy/paste the structure in your template and enter
any additional tags.

<<C2>>
<<HEADER>>
<<HEADER_END>>
<<MAIN>>
<<C_STOP>>
<<MAIN_END>>
<<LI>>
<<C_STOP>>
<<LI_END>>
<<FOOTER>>
<<FOOTER_END>>
<<C_END>>

 Note

Opening and closing tags (for example, <<LI>> and <<LI_END>>) must each be displayed in a separate
row.

A C2 tag can optionally have four sections (header, main items, line items, and footer) and each of them is
described in more details below.

Header

A header is displayed only once at the beginning of a C2 tag. You can add only Q tags inside the header because
other tags aren't parsed. If there's a table in your template, the table header should be displayed in the header
tags.

SAP CPQ Setup and Administration Guide


180 PUBLIC Quotes Administration
 Note

If you have a table that displays on more than one page, check the Repeat as header row at the top of each
page in Word to display the header on each page.

Main Items

The main tag retrieves all main items in a quote (there should be one set of MAIN tags for each main item). For
the system to properly process the items, you need to add the <<C_STOP>> tag before the closing main tag. If
there’s parent/child item structure, the system treats child items as main items. If tabular representation is
needed, you should add table rows that contain item data.

Line Items

The line item tag retrieves all line items in a quote (there should be one set of LINE ITEM tags for each line
item). For the system to properly process the items, you need to add the <<C_STOP>> tag before the closing
line item tag. If you need to represent line items in a table, you should add table rows within the line item tags.

Footer

A footer is displayed only once at the end of a C2 tag. You should add only Q tags inside the footer because
other tags aren't parsed. If there's a table in the template, the table footer should be displayed in the footer
tags.

 Note

There has to be at least one blank space (or a new line) after <<C_END>> for the system to process it
properly.

Other C2 Tags

Tag Description

<<C2_PTYPE(...)>> Same functionality as <<C2>> except it only lists main


items that have product type as defined in parentheses and
their line items (regardless of the product type of line item).

<<C2_PTYPE_ALL(...)>> Same functionality as <<C2>> except it only lists main


items and line items that have product type as defined in
parentheses.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 181
Tag Description

<<C2_PTYPE_ALL_SortByRank()>> This tag enables you to sort products by product type rank
order. If you have two product types (Drive ranked 10 and
Hardware ranked 5), the
<<C2_PTYPE_ALL_SortByRank(...)>> tag sorts all your
product types by Hardware and then by Drive as a result of
the ranking set on each of the product type.

<<C2_PTYPE_ALL_SortByRankButStartWith(First,Second, This tag enables you to sort product type rank order, but
Third...)>> you can state which rank order to start with product types.
If you have four product types, such as Drive ranked 5,
Hardware ranked 2, Services ranked 3, and Computers
ranked 1, tag
<<C2_PTYPE_ALL_SortByRankButStartWith(Drive,Hardwa
re, Services)>> sorts all your products by Drive, Hardware,
and Services first. In this case the sorting starts with
Computers, followed by the remaining product types in
order by rank. The new sort type enables you lots of
flexibilities when ordering your product types.

<<C2_PTYPE_ALL_SortByName()>> This tag enables you to sort product types by the product
name. If you have two product types, Drive and Hardware,
ranked 10 and 5 respectively,
<<C2_PTYPE_ALL_SortByName()>> tag sorts all your
products by Drive and then by Hardware due to their
alphabetical order.

<<C2_PTYPE_ALL_SortByNameButStartWith(Drive, This tag enables you to sort the product type in the
Services, Hardware, Computer)>> alphabetical order, but you can state which rank order to
start with. If you have four product types, such as Drive
ranked 5, Hardware ranked 2, Services ranked 3, and
Computers ranked 1, this tag sorts all your products by
Drive, Services, and Hardware first; then, it starts sorting
the types in the alphabetical order, and would start with
Computers followed by the remaining product types in the
alphabetical order by name. This tag gives you lots of
flexibilities when ordering your product types.

<<C2_OPTIONAL(...)>> It lists items based on the value in the parenthesis that can
be Y,N and ALL. Y lists only optional items. N lists only
nonoptional items. ALL lists both nonoptional and optional
items (<<C2_OPTIONAL(ALL)>> is equivalent to <<C2>>).

<<C2_CONSOLIDATE(...)>>

This tag consolidates items based on a common denominator. For example, if we have 2 items with the same
part number, using consolidate (<<C2_CONSOLIDATE(C_PNUM)>>) lists it only once.

<<HEADER>>
<<HEADER_END>>
<<ITEM>>
Item number: <<UNIQUE(C_PNUM)>>
Item QTY: <<SUM(C_QTY)>>
Item IDs: <<APPEND(C_ID)>>
<<C_STOP>>

SAP CPQ Setup and Administration Guide


182 PUBLIC Quotes Administration
<<ITEM_END>>
<<FOOTER>>
<<FOOTER_END>>
<<C_END>>

In the above example, items are consolidated based on the part number. <<UNIQUE(C_PNUM)>> lists the
unique part number. Important thing to note is that the inner tag (C_PNUM) in this example shouldn’t be
surrounded with << >>. <<SUM(C_QTY)>> takes the quantity of each item that has this part number, add it up
and display it. <<APPEND(C_ID)>> lists all IDs that have this part number. List is separated by a comma (Item
IDs: 1,3,4). By default consolidate runs through all items. To only process main items we could say
<<C2_CONSOLIDATE(C_PNUM,MAIN)>> or to only process line items <<C2_CONSOLIDATE(C_PNUM,LI)>>.

Tag <<C2...>> in Excel Templates

<<C2>> tag can be used in Excel template as well. In Excel, you define a cell range where you want to render
information. You don’t need to define the range for tags that retrieve simple data, for example C and Q tags.

<<C2(10X10|CONDITION:[AND](<*CTX( Quote.CurrentItem.IsOptional )*>,[EQ]


(<*CTX( Quote.CurrentItem.IsMainItem )*>,False))=1)>>
<<MAIN(1X10)>>
<<C_PNUM>>
<<LI(1X10)>>
<<C_PNUM>>

This example shows scenarios in which you want to display line items that are optional. Notice that 10 rows and
10 columns are allocated for this information to be rendered and for each main and line item that are being
allocated one more row. Also notice that main item aren't displayed, based on the condition we have set, but
<<MAIN>> tag must exist in the template to follow a valid template tags sequence.

4.1.1.9 Conditions
Standalone conditions and tag-dependent conditions let you restrict what data tags retrieve.

Standalone conditions can be added anywhere in the template and they aren’t dependent on any tags.
Standalone conditions are used to control if section of a document are displayed or not. Conditions are
processed after all the other tags have been processed. Using conditions may slow down a performance if large
number of conditions are used to determine in the end if one section is displayed or not. On the left side is a tag
whose value is compared and on the right side is list of values to compare with. Values are separated by “|”
Conditions always use “OR” logic. To check if value is equal use ”=” and if not equal use ”!”. Typical example of
condition is:

[CONDITION,<<Q_QP(myproperty)>>=golf|soccer|basketball]
Any static text or tables or tags
[CONDITION_END]

As seen in the example, condition tags can't be used in a single line - they must be separated into multiple lines.

Tag-dependent conditions - create a condition by adding :CONDITION() to a tag (for example,


<<QUOTE_ITEMS:CONDITION([EQ](<*CTX(Quote.CurrentItem.ProductTypeName)*>,Hardware))>>). Add
these conditions in C2 tags and when retrieving quote products, containers, and quote items (main and line
items, header, and footer).

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 183
 Caution

[CONDITION,…] tags don’t support table tags (<*Table(SQL query)*>). Also, [CONDITION,…] tags must
not be nested.

Conditions aren’t required in templates. They allow you to retrieve data only when the condition is fulfilled.

Tag Conditions

Tag conditions can be applied to every tag to perform an action based on the value the tag returned. Condition
tags can be used in both Microsoft Excel and Microsoft Word templates. If there are multiple tags, separate
them with |.

For example, if you add this tag to your template, <<Q_BILLTO(COMPANY),ABC=d|XYZ=d|D>>, the system
searches for the company of the Bill To user. If the company is ABC or XYZ, the system deletes the name of the
company and leaves an empty line in the document. However, if the tag retrieves any other company name, the
entire line where the tag is on is deleted.

The available tag conditions are listed below:

● D - deletes a line.
● d - deletes the value that the tag returns.
● P - inserts a page break after the value that the tag retrieves.
● p - inserts a page break before the value that the tag retrieves.
● B - makes the entire line bold.
● b - makes the value that the tag returns bold.
● U - converts the value to uppercase.
● DC - deletes the content of the cell, if the value displays in a table cell.
● DR - deletes the content of the row, if the value is displayed in a table.
● DCOL - deletes the content of the column in which the value is displayed. Deletion may fail if there are
merged cells in the column.
● DELETE_TABLE - deletes the content of the entire table, if the value is displayed in a table.

4.1.1.10 SAP Subscription Billing Integration Tags

When SAP CPQ is integrated with SAP Subscription Billing, you can use these tags in the document generation
template to retrieve elements specific to the integration.

See Quote Item Fields on Subscription Products for a list of CTX tags which you can use to retrieve the values
of standard subscription item fields in the quote.

<<C2>>
<<MAIN>>
<<C_PNAME>>
<<CHARGES>>

SAP CPQ Setup and Administration Guide


184 PUBLIC Quotes Administration
One Time

<<One_Time>>
<<Rate_Plan_Element>>
<<Price>>
<<Discount>>
<<Total>>
<<One_Time_End>>

Recurring

<<Recurring>>
<<Rate_Plan_Element>>
<<Price>>
<<Discount>>
<<Total>>
<<Recurring_End>>

Block Pricing Charge

<<Block_Pricing>>
<<Rate_Plan_Element>>
<<Included_Quantity>>
<<Block_Size>>
<<Price>>
<<Discount>>
<<Total>>
<<Block_Pricing_End>>

Tiered Pricing Charge

<<Tiered_Pricing>>
<<Rate_Plan_Element>>
<<Minimum_Blocks>>
<<Block_Size>>

Pricing Tiers

<<Pricing_Tiers>>
<<Up_To>>
<<Price_Per_Block>>
<<Discount_Per_Block>>
<<Total_Per_Block>>

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 185
<<Pricing_Tiers_End>>
<<Tiered_Pricing_End>>

Volume

<<Volume_Pricing>>
<<Rate_Plan_Element>>
<<Minimum_Blocks>>
<<Block_Size>>

Tiers

<<Tiers>>
<<Up_To>>
<<Price_Per_Block>>
<<Discount_Per_Block>>
<<Total_Per_Block>>
<<Fixed_Price>>
<<Fixed_Discount>>
<<Fixed_Total>>
<<Tiers_End>>
<<Volume_Pricing_End>>
<<Percentage>>
<<Rate_Plan_Element>>
<<Price_Per_Unit>>
<<Discount>>
<<Total>>
<<Ratio>>
<<Percentage_End>>
<<CHARGES_END>>
<<MAIN_END>>
<<C_END>>

4.1.1.11 SECTIONS Loop

The SECTIONS loop makes SAP CPQ iterate through all Solution Design sections and retrieve information such
as their names, hierarchy Ids, ranks (the ordinal numbers of the sections’ rows), values from all their custom
fields, and section totals.

Below is the structure of a SECTIONS loop. You can copy/paste the structure in your template and enter any
additional tags.

<<SECTIONS>>
<<SECTIONS_HEADER>>
<<SECTIONS_HEADER_END>>
<<SECTIONS_LOOP>>
<<SECTIONS_LOOP_END>>
<<SECTIONS_FOOTER>>
<<SECTIONS_FOOTER_END>>
<<SECTIONS_END>>

SAP CPQ Setup and Administration Guide


186 PUBLIC Quotes Administration
To filter only a specific type of sections, add the section type in the opening loop tag:

● Regular «SECTIONS(Regular)»
● Distribution «SECTIONS(Distribution)»
● Distributed «SECTIONS(Distributed)»
● All «SECTIONS(ALL)» or «SECTIONS(Regular, Distribution, Distributed)»

Header

The header is displayed only once below the opening SECTIONS tag. It can contain a table with the section
name, rank, hierarchy, and any custom fields, the values of which you wish to add. It’s also possible to add Q
Tags [page 170] in the header, if needed.

Loop

Section items you’ve filtered in the opening SECTIONS tag are processed in this part. C Tags [page 169] can be
used inside the loop, along with CTX Tags [page 622] for retrieving hierarchy Id, rank, and the section name, as
well as custom fields.

Footer

The footer can contain section totals and Q tags.

Microsoft Excel Templates

In Microsoft Excel templates, the SECTIONS loop has the following structure:

<<SECTIONS>>
<<SECTIONS_HEADER>>
<<SECTIONS_LOOP>>
<<SECTIONS_FOOTER>>

For filtering section items in the opening SECTIONS tag, you can use the condition SECTION_TYPE (not case
sensitive), with the allowed values ALL, REGULAR, DISTRIBUTION, DISTRIBUTED (not case sensitive).

Example of the syntax for the use of the SECTIONS loop in a Microsoft Excel template: <<SECTIONS(13X5 |
SECTION_TYPE: Distributed, Regular)>>. In this example, the tag retrieves 13 rows and 5 columns of
sections of the type Distributed and Regular.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 187
4.1.1.12 Example Templates

Here you can download Microsoft Word and Microsoft Excel templates that contain several frequently used
tags for document generation and CTX tags for retrieving specific data.

The templates contain some simple examples and can be used as a reference for the proper usage of
document generation tags. [page 168]

Microsoft Excel Example Templates

Download the Excel Templates Examples zip file that contains these templates:

● Container Tags Example - a simple template for retrieving data from a container column using CTX tags.
● C2 Loop with PTYPE and Condition - this template contains three examples for using the C2 loop with
product type tags and condition tags.
● Quote Tables Excel - a simple template for retrieving data from a quote table.
● C2 Loop Listing Items - an example Microsoft Excel template with two sheets. The first sheet contains Q
tags for retrieving basic quote information and a C2 loop for listing items. The second sheet contains Q
tags and CTX tags for retrieving customer details.

Microsoft Word Example Templates

Download the Word Templates Examples zip file that contains these templates:

● C2 Loop Simple - a simple template that lists items, their descriptions and product types. This template
also contains CTX tags that retrieve the list price of items and the total list price.
● C2 Loop with PTYPE Tag - a template with the C2 loop and the PTYPE tag. The PTYPE tag retrieves items
that have the Software product type in the first block and the Hardware product type in the second block.
● C2 Loop with Container Tags - the tags in this template retrieve data from columns in a container.
● Quote Tables Word - a simple Microsoft Excel template for retrieving data from a quote table.
● C2 Loop with Conditions - the C2 loop lists all items that have a product type different from Service.
Additionally, a condition is added so that items that have a list price equal to 0 are not displayed in the
generated document.

SAP CPQ Setup and Administration Guide


188 PUBLIC Quotes Administration
4.1.2 Create Document Generation Template

The Document Generation Templates page displays a list of all document templates in the system, letting you
manage, create, and delete templates and translate their names.

Context

Here, you can manage the format and language settings that apply to all existing and new templates:

● Select Language - select the language in which template names and descriptions are displayed. If a
template name or description has no specified value in the selected system dictionary, the values are

retrieved from the default dictionary instead. To translate a template name or description, click,
select the target language, and enter the new value.
To see the translated template names and descriptions from the user side, after a translation is entered
here, the user can choose the language for which the translations were added in the Default Dictionary on
the User Page. Following that, template names and descriptions display in the selected language for that
user (given that translations are available).
● Default Output Format - select the format in which all documents are generated by default. If format
permissions [page 194] are enabled for a user type, the pertaining user has the possibility to choose in
which format a document is generated. You can only choose between DOC, DOCX, and PDF files here
because Microsoft Excel templates are always generated as XLSX files.
● Users can choose customer’s language when creating documents - if selected, users can select the
language in which the document is generated in the Customer’s language dropdown menu when selecting
a template for a specific quote. The selected language is applied to the generated document, the email
sent to the customer, and the proposal page which customers access by clicking the proposal link in the
email. After selecting a language, it’s also necessary to include the appropriate tags [page 168] in the
document for the translations to display.

On this page, you can create simple, multisection, and section templates. All templates that exist on the tenant
are organized in the Output Templates and Section Templates lists. In addition to the template name and type,
the lists display other relevant details (visibility permissions, dates when the templates were last modified and
the names of administrators who last modified them, and so on).

In the Output Templates list, administrators can organize in which order templates appear when they’re
presented to the user. When users are selecting the template for their documents, only output templates (both
simple and multisection) are available on the user side.

Depending on the type of template that you’re creating, you have access to different tabs when editing a
template. For simple templates, Sections is disabled, and for multisection templates, Additional Content is
disabled. Additionally, when creating section templates, you can’t manage the Sections and Format
Permissions tabs. Additional Documents is available when editing multi-section or simple templates.

The Filename column is always blank for multisection templates. The Master Section column indicates which
section controls the header and the footer of the document. Moreover, the Contained Sections column lists all
the sections in a multisection template.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 189
The initial steps are the same for creating any type of template:

Procedure

1. In Document Generation Templates, click Add New Template.

In Output Templates, you create simple and multisection templates, and in Section Templates, you create
sections that are included in multisection templates.
2. Enter the template name.
3. Click Save.

A new page displays with multiple tabs. The Template Definition tab opens by default.

 Note

If you upload a Microsoft Word template, you can generate a DOC, DOCX, or PDF document. However,
if you upload a Microsoft Excel file (either an XLSX or XLS file) in the new document generation engine,
you can only generate an XLSX file.

Template Definition [page 191]


This page displays the template name, the name of the users who created and modified the template
and the respective dates.

Sections [page 192]


This tab is enabled only when administering multisection templates.

Visibility Permission [page 193]


The Visibility Permissions tab lets you define who can see the template.

Format Permissions [page 194]


In this tab, you select the permission groups that can select the output format of the generated
template.

Related Fields [page 194]


The Related Fields tab specifies the quote custom fields that are related to the entire template or to the
section, in case of a section template.

Additional Content [page 196]

Additional Documents [page 197]


In this tab, you can define and select mandatory additional files that are enclosed in the same email as
the generated document.

Delegation of Authority for Document Templates [page 197]


Users in the permission groups that you select in this tab are able to manage templates on the user
side of SAP CPQ.

SAP CPQ Setup and Administration Guide


190 PUBLIC Quotes Administration
4.1.2.1 Template Definition
This page displays the template name, the name of the users who created and modified the template and the
respective dates.

The Template Creation Tool [page 202] button gives you access to a tool that creates a document template so
you don’t have to manually add tags.

Depending on the template type that you’re creating, one of the following types is selected by default:

● Output template - templates offered to the user on the user side.


○ Simple template (no sections) - simple documents without any sections. Selecting this option disables
the Sections and Format Permissions tabs.
○ Multisections template - complex documents with multiple sections. Selecting this option disables the
Template Creation Tool [page 202], the file revisions table and the Additional Files tab.
● Section template - a section to be included in a multisection document. Selecting this option disables the
Sections and Format Permissions tabs.

 Note

If you add sections to a template and then make it a Simple Template, the sections become unavailable.
However, they aren’t deleted (even if you click Save) - you can make them available again by choosing Multi-
sections template in Template Definition. Similarly, the file revisions table is disabled when Multi-sections
template is selected, but file revisions aren’t deleted when you click Save.

In Override Document Processing Engine [page 198] for this template, select one of these options:

● Use Global setting from application parameters page - default value, follows the selection on the Application
Parameter page.
● Use Old Engine - overrides the global setting to the old engine.
● Use New Engine- overrides the global setting to the new engine.

After you’ve defined the general template details for a simple or a section template, you need to select the
DOCX template based on which the document will be generated. Click Add New Document and browse for the
document.

 Note

Uploading documents for multisection templates isn’t available in the Template Definition tab. Instead, you
need to separately upload a document for each pertaining section that is listed in the Sections [page 192]
tab of that multisection template.

When simple or section templates are selected, files and file revisions are listed in the table below. The
template name and the revision number are displayed in a row. Furthermore, clicking the icons in the table lets
you preview, download, and delete the document.

 Note

When in the preview mode, enter the quote composite number to preview the generated document for the
selected quote.

Although a template can have multiple revisions, only one revision can be active at a time. When multiple
documents are uploaded, click [activate] next to the document you wish to activate. If there’s only one
document, that file is active by default.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 191
Styling Microsoft Word Templates

Before you add tags to a Microsoft Word template, first adjust the header and footer in Microsoft Word. All the
styling of the template should be done in Microsoft Word so you can later only add tags without any styles. The
styles that are applied to the tags in the template are also applied to the retrieved values in the generated
document (for example, if you make a tag bold, the value that it retrieves is also bold in the generated
document). This is applicable for all standard Microsoft Word formatting (bold, italic, underline, font sizes, text
effects, text color, text background, text highlighting, text alignment, paragraph settings with spacing before
and after, table formatting with all previous mentioned variations in cells, and so on). Text effects aren’t applied
correctly to the tag output if the document is generated in the DOC file format.

 Note

Texts effects are available only for the DOCX file format, which is available in Microsoft Word 2007 and later
versions.

Avoid copying and pasting tags and the text in templates in order to achieve the best performance of the
Document Generation tool. Otherwise, if you must copy something in your template, make sure to first remove
all styling and formatting. Visit the Document Generation Tips and Tricks [page 206] page to read about the
most frequent styling issues and possible workarounds.

4.1.2.2 Sections

This tab is enabled only when administering multisection templates.

Here you can select the section templates that are included in the document. Other than selecting section
templates, on this tab you can set up the following settings:

● User can sort sections - enables users to sort sections before generating the document. Once users sort
the sections, the order remains unchanged the next time users generate documents from the same quote,
regardless of the default order of sections set up in the Setup.
● User can upload their own sections - lets users upload their own DOCX section templates when
customizing the template on user side. When the checkbox is selected, a formula box appears. The formula
entered here is used to narrow down the conditions under which Add Section appears during the document
generation process. The default value of the field is 1, meaning that all users can upload sections manually.
Consider this example: for enterprise-grade deals, users shouldn't be able to manually add sections. Deal
type is defined in a custom field. By entering the condition [NEQ](<* QuoteProperty(Deal Type)
*>, Enterprise), users are only allowed to add sections if the deal type isn’t enterprise.
● Sections will inherit formatting (header,footer etc.) from first section in the template - enables format
inheritance from the first (master) section to all subsequent sections. If the checkbox isn’t selected, each
section maintains its own formatting. This checkbox is selected by default for new documents.

 Note

If the application parameter Heading style used in generated documents is set to Keep source formatting
and the checkbox Sections will inherit formatting (header,footer etc.) from first section in the template is
selected, the sections of the output document inherit the header and footer from the first section of the
template, but the heading style is kept for each individual section.

SAP CPQ Setup and Administration Guide


192 PUBLIC Quotes Administration
Adding a Section in a Multisection Template

Prerequisites:

● Create the section template


● Add the corresponding DOCX document to that section template
● Define the permissions

1. In Sections, click Add Section.


A pop-up with a list of existing section templates displays.
2. Select the template you wish to add and click Add.
The Add Section window pops up.
3. (Optional) Rename the template.
4. (Optional) In Template File, click Change File.
You’re redirected to the settings page of the section template where you can change the DOCX source
template.
5. Select these checkboxes, as needed:
○ Required in document - users can’t exclude required sections from the document when customizing
the document.
○ User can download it - users can download the section while customizing the document.
○ User can replace it - users can replace the section with another section while customizing the
document.
○ Selected by default - the section is selected by default when users customize the document.
6. The same checkboxes are available in the list of section templates in Sections.
7. Click Save.
The section is added to the list of included sections.

The list displays the name of the section template and the name of the respective DOCX file. To delete and edit

the template, click and , respectively.

The Sort column shows the order of section templates as they’ll be generated in a document. The order
defined here is default and users can override it if the User can sort sections checkbox is selected. To change
the order of sections, enter the numbers in the Sort column in ascending order, starting from the section that
should be generated first, and click Re-Sort.

4.1.2.3 Visibility Permission

The Visibility Permissions tab lets you define who can see the template.

You can allow users to access specific templates when quotes are in a certain status. When setting the visibility
of a section template, you allow/disallow access to that section only, not to the entire multisection template in
which the section is included. Visibility is controlled via permission groups. To limit the visibility, unselect the
Visible to all permission groups checkbox that is selected by default, and move the permission groups that
should have access to the template to the Selected Permission Groups column. The logic between multiple

permission groups is OR. In Step 2, click , and create a condition under which the template is visible to the

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 193
selected permission groups. By default, 1 displays in the condition box, meaning that the template is visible
under all conditions.

4.1.2.4 Format Permissions

In this tab, you select the permission groups that can select the output format of the generated template.

By default, all permission groups are able to generate templates only in the format selected in Default Output
Format in the Document Generation Templates page. Users that belong to the permission groups selected in
Format Permissions also have other template formats available for selection. The logic between multiple

permission groups is OR. In Step 2, click , and create a condition under which format selection is available
to the selected permission groups. By default, 1 displays in the condition box, meaning that format selection is
available under all conditions.

4.1.2.5 Related Fields

The Related Fields tab specifies the quote custom fields that are related to the entire template or to the section,
in case of a section template.

Users are prompted to fill out related fields when customizing a document that is being generated. Depending
on the template type you’re editing, the fields are related to a section (in case of a section template) or to the
entire output document (in which case, they’re displayed in the Template Details panel in the Customize tab on
the user side). In the screenshot below, you can see an example of each case: Quote Expiration Date and Terms
are related to the Introduction section and Additional Comments and Customer Comments are related to the
document in general.

SAP CPQ Setup and Administration Guide


194 PUBLIC Quotes Administration
A list of available custom quote fields opens upon clicking Add New Quote Field. Select a field and click Add.
The selected fields are listed in the Related Fields tab and you can rearrange and delete them by clicking the
respective icons.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 195
If Required is selected next to a field, users first need to populate the field before they can proceed with
generating the document. Otherwise, if the checkbox isn’t selected, the fields are under the Customize tab for
users to populate.

4.1.2.6 Additional Content

This tab is for selecting the files that are attached to the generated document (for example, descriptions of
quote items, data sheets, terms and conditions, and so on). Before you can add files to the template, you need
to upload them in the Manage Content Documents [page 201] section.

 Note

The additional content is included in the generated document only if the following tags are in the template:

<<INCLUDE_DOCUMENTS>>

<<INCLUDE_DOCUMENTS_END>>

Files are included in the same order in which they’re displayed to the user. If the checkbox Don’t include
same file more than once is selected on the user side, SAP CPQ doesn’t include duplicate files. Otherwise,
duplicate files are included if found.

To add files to the template, specify the following settings:

● Image settings - specify the way image files are inserted into generated documents. You can choose
between Default settings (format: PNG, resolution: 300, quality: 100) and Custom settings. Selecting
Custom settings allows you to choose between two formats:
● ○ PNG (choosing PNG allows you to further specify Image resolution)
○ JPG (choosing JPG allows you to further specify Image resolution and Image quality)
Configuring image settings allows you to control the size of the output document. Namely, PNG is a
high-quality image format and choosing it results in large output documents. On the other hand,
choosing JPG results in documents of a smaller size and lower quality.
● Also Include Quote Items in Formula Evaluation - select the checkbox to attach files to each quote item in
the generated document, not to the quote globally.
● File Name - add the name of the file that you wish to attach to the generated document. File names must
contain the file extension (for example, ABCCaseStudy.docx). The system supports DOC, DOCX, PDF, PNG

and JPG files. Alternatively, click to create a formula that dynamically retrieves file names from a
custom table.
● File Description - enter a description of the file manually, or define a formula that retrieves the description
dynamically.
● Add More Files - click it to add another File Name and File Description fields so that you can add more than
one file to the template.
● File Selection - select Check Boxes to let users select multiple files to attach to the generated document.
Alternatively, select Radio Buttons and users are allowed to select only one file.
● Separate files with page break - select this checkbox for the system to separate additional files with a page
break.

SAP CPQ Setup and Administration Guide


196 PUBLIC Quotes Administration
 Note

Files found for the first quote item are displayed first (in the same order as defined in Setup), followed by
the files found for the second item, and so on.

4.1.2.7 Additional Documents

In this tab, you can define and select mandatory additional files that are enclosed in the same email as the
generated document.

This feature is available only for the new document generation engine. Similar to Additional Content, before you
can add files to the template, you need to upload them in the Manage Content Documents [page 201] section.

The differences between additional documents and additional content are the following:

● Additional documents are mandatory additions to the generated document, while additional content files
are optional.
● If PDF files are included as additional content in multi-section documents, they are converted into images
and added into Microsoft Word documents in the output. However, if they are added in the Additional
Documents tab, they remain in the PDF format as separate files.

You can specify the following settings for additional documents:

● Convert Microsoft Word Files into PDF – additional documents in DOC or DOCX format are converted into
PDF files in the output.
● Also Include Quote Items in Formula Evaluation – expand the context of formula evaluation so that files can
be included for each quote item, and not just the quote globally. If the checkbox is not selected, the defined
formula is evaluated only once.
● File Name - add the name of the file that you wish to include in the same mail as the generated document.
File names must contain the file extension (for example, ABCCaseStudy.docx). The system supports DOC,

DOCX, PDF, PNG and JPG files. Alternatively, click to create a formula that dynamically retrieves file
names from a custom table.
● Add More Files - add another File Name field so that you can add more than one file to the template.

The resulting email created at the end of the document generation process contains the generated document
and any additional documents included via Additional Documents. On the user side, users can see the
additional documents in the Documents tab of the quote. There, they can also download previously generated
documents together with any additional documents as a ZIP file.

4.1.2.8 Delegation of Authority for Document Templates

Users in the permission groups that you select in this tab are able to manage templates on the user side of SAP
CPQ.

For example, if a regional SAP CPQ administrator responsible for several markets wishes to authorize certain
users in a specific market to create document templates, this feature can make that possible. Alternatively, if
you select Visible to all permission groups, all users can manage the template locally.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 197
In Step 2, click , and create a condition under which the template is available locally to the selected
permission groups. By default, 1 displays in the condition box, meaning that the template is available locally to
the selected permission groups under all conditions.

When users are given the authority for managing a document generation template, the template becomes
available in the Manage Global Document Templates section of the User Menu. Just like the administrators,
users can select the language in which the template names and descriptions are displayed. The selection of
languages on the administrator and user side is codependent (the language selected in one page is
automatically selected in the other).

Templates which users can manage are organized into Output Templates and Section Templates sections. When
users open a simple template, they can manage the details in Template Definition, Related Fields, and
Additional Files tabs.

4.1.3 Document Generation Engines

SAP CPQ has two engines for generating documents: the old and the new document generation engine.

The old document generation engine is active by default for Quote 1.0. Therefore, to enable the new engine,
follow these steps:

1. Access General Application Parameters Shopping Cart and Quotes


2. Set the Use new engine for Document Templates Processing parameter to TRUE.
3. Click Save.
SAP CPQ now generates documents in the new engine.

However, if needed, you can override the engine selection for a specific template (for example, if you wish to
use the new engine in general, but you have a single template whose format isn’t supported in the new engine)
by following these steps:

1. Access Quotes Document Generation Templates

2. Click next to a template.


The Template Definition tab opens.
3. In the Override Document Processing Engine for this template, select one of the following values:
○ Use Global setting from application parameters page - default value. If selected, the system uses the
engine that is set by the application parameter.
○ Use Old Engine - the system uses the old generation engine for the template, regardless of the value of
the parameter.
○ Use New Engine - the system uses the new generation engine for the template, regardless of the value
of the parameter.
4. Click Save.
The system generates the template via the selected engine.

SAP CPQ Setup and Administration Guide


198 PUBLIC Quotes Administration
Old vs. New: Quote Engines and Document Generation Engines

A distinction should be made between the following engines:

● Quote 1.0 vs. Quote 2.0


● the old document generation engine vs. the new document generation engine

The Quote 1.0 engine uses both the old and new document generation engines. On the other hand, Quote 2.0
only uses the new document generation engine.

The old document generation engine generates PDF, DOC, DOCX, XLS, and XLSX files. On the other hand, the
new engine generates PDF, DOCX, and XLSX files (in both Quote 1.0 and Quote 2.0). Furthermore, when
uploading Microsoft Excel templates to the new engine, you can import both XLS and XLSX templates, and the
new engine generates them as XLSX files.

 Note

If a Microsoft Word template is used, the output format can be a Microsoft Word document, PDF file, or
both. On the other hand, the output of a Microsoft Excel template is always a Microsoft Excel document.

While the new document generation engine is faster than the old engine, it may not support all the templates.
Therefore, when switching from the old to the new engine, it’s advisable to test the templates in a sandbox
environment to verify that there are no issues. Otherwise, it may be necessary to fix the layouts or to reupload
the templates.

 Note

Unless specified otherwise, the procedures explained in the related topics describe the new document
generation engine and Quote 1.0.

4.1.4 Setup Administration

This page covers the workflow adjustments that need to be made to enable document generation and the
parameters that need to be set.

Workflow Adjustments

To enable your users to generate documents in SAP CPQ, on top of creating a template with the appropriate
tags, you need to make the following workflow adjustments:

● make sure that the Generate Documents action does not have any conditions [page 381] that prevent it
from displaying to users.
● add the Generate Documents action in the workflow matrix [page 330].

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 199
Application Parameters

Listed below are all the application parameters that influence how documents are generated in SAP CPQ.

Application Parameters > General Parameters


● Display generated documents in Recent Items - if TRUE is selected, the generated documents are displayed
in the Recently Viewed list.

Application Parameters > Shopping Cart & Quotes


● Define prefix for generated document name - the name of generated documents starts with this prefix.
● Define suffix for generated document name - the name of generated documents ends with this suffix.
● Share document customizations - allows you to share all customizations during document generation
among all users for each quote. If FALSE is selected, all customizations are stored only for the user making
the customizations. If multiple users work on one quote, customizations are saved only for each individual
user. Users working on one quote can’t view each other’s customizations. If TRUE is selected,
customizations are shared between users.
● Reconfigure products during document generation - if TRUE is selected, the system retrieves the latest
changes made on products from the Setup before generating a document.
● Users can see previously generated documents - if set to TRUE, the View Previously Generated Documents
button displays in the Download Document and Send Email tab on the user side allowing users to access
documents that were previously generated on that quote.
● Allow users to download documents that have been generated for templates that have been deleted - if set
to TRUE, users can download documents generated using templates that administrators have deleted.
Users can download documents only if they have access to previously generated documents (if Users can
see previously generated documents is set to TRUE).
● Allow users to download documents that have been generated prior to CPQ 2012 January release - if TRUE is
selected, users can download documents generated before January 2012, regardless of whether they have
permission to view the template.
● Hide Items With No Files on document generation - if Also Include Quote Items in Formula Evaluation is
enabled on the Additional Content tab, the system won’t display in the generated document any items that
don’t have an additional file due to a condition.
● Use new engine for Document Templates Processing - if set to TRUE, the system uses the new document
generation engine.
● Heading style used in generated documents- allows administrators to control the heading styles used in the
document. Selecting Use destination styles applies the heading style of the first section to all sections.
Selecting Keep source formatting allows each section to maintain its individual heading style.
If Sections will inherit formatting (header,footer etc.) from first section in the template is active in Setup
Document Generation Templates Edit (a multi-section template) Sections , and Keep source
formatting is the selected value for this parameter, sections of the document inherit header and footer
formatting from the first section of the template, but keep their own individual heading styles. This
parameter is available only for the new document generation engine.
● Type of break used in generated documents - allows administrators to override the default breaks between
the sections of the document and to apply the selected type of break instead. Administrators can choose
between the following breaks: Paragraph break, Page break, Column break, Section break continuous,
Section break new column, Section break new page, Section break even page, Section break odd page, Line
break. This parameter is available only for the new document generation engine.
● Disable deletion of generated documents on quote – if TRUE is selected, the Delete action isn’t available in
the Documents tab and users aren’t able to delete generated documents.

SAP CPQ Setup and Administration Guide


200 PUBLIC Quotes Administration
Workflow/Approval > Actions
● When quote needs approval, users can only preview documents - if selected, users can only preview
Microsoft Word or PDF documents, not generate them. Preview can’t be enabled for Microsoft Excel
documents.

Delegation of Authority > Ability to Manage Documents


● Users from selected permission groups will be able to upload content files used in templates uploaded by
application administrator - enable users from the permission groups selected in this section to upload
content files that are used in templates uploaded by application administrators.

4.1.5 Manage Content Documents


Documents that you wish to attach as additional content or additional documents to a generated document
must first be uploaded in the Manage Content Documents section in Setup Quotes .

The list of uploaded documents displays the file name, format, and destination directory. Also, you can see in
the list who created the file, who last modified it and when it was last modified. The Permissions column
displays the companies to whose local administrators the file is visible.

In the list, you can click , and to delete, edit, and preview the file, respectively. After clicking the
edit icon, a pop-up displays where you can select and unselect the companies that will see the file. After
clicking the preview icon, enter the number of the quote that the system will use as a source of data and click

. The preview of the document is available for downloading and printing.

 Note

This feature doesn’t support nested folders.

Adding a Content Document

1. Click Add New.


The Adding New Documents pop-up displays.
2. Click Choose Files and select the document to upload.
You can upload multiple documents at once.
3. Click Upload and Save All.
A message displays informing you of the success of the upload.
Alternatively, click Cancel Upload if you don’t want to proceed with the upload.
4. Exit the window.
The document displays in the list.

 Note

When a ZIP file is uploaded as a content document, an email notification is sent, stating whether the upload
is finished, the names of the compressed files unpacked during the upload, and whether the upload is

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 201
successful or not. Moreover, the email also informs the administrator if the upload is unsuccessful because
of an incorrect extension or folder name.

Content Document Bulk Deletion

In this section, you can delete multiple documents from the section with a single action.

● Delete documents listed above - selecting this option before clicking Delete deletes all the documents
currently visible on the page.
● Delete all documents that match entered criteria - selecting this option before clicking Delete deletes all the
documents that are filtered after you enter a search term in the search boxes above.
● Delete all documents - selecting this option before clicking Delete deletes all content documents.

4.1.6 Template Creation Tool

The Template Creation Tool lets you create templates with basic document tags so you don’t need to add them
manually.

Prerequisites

To have a simple or a section template created.

Context

The tool is convenient for administrators who need simple templates and who don’t have experience working
with document generation tags. The Template Creation Tool isn’t available for multisection templates.

Procedure

1. Go to Setup Document Generation Templates.


2. Edit or create a simple or section template.
3. Click Template Creation Tool.

A pop-up displays with two sections: Sample Templates and Template Tag Builder. In Sample Template, you
can download and preview systematic templates. If needed, these templates can additionally be formatted,
you can add and remove tags.

SAP CPQ Setup and Administration Guide


202 PUBLIC Quotes Administration
4. Click in the Template Tag Builder section.

The Document Template Builder window pops up.


5. In Step 1, select what data you want to display in the document.
a. Expand the Select Data to be included in the document template section.

You can select the following quote header data:


○ Quote Number
○ Date Modified
○ Date Create
○ Tax
○ Subtotal
○ Total
○ Bill To data (Contact Name, Address, Phone, Fax, Company)
○ Ship To data (Contact Name, Address, Phone, Fax, Company)
○ End User data (Contact Name, Address, Phone, Fax, Company)
If you select Address for Bill to, Ship to and End users, the system includes in the template tags for
address 1, address 2, city, state, zip code, and country.
○ Custom Fields
○ Product Type
b. Expand the Select Additional Content Documents you wish to insert into your template section.

A table displays all documents uploaded in Manage Content Documents that you can include in the
generated document.
c. Select a file.
d. Expand the Create Tags for Conditional Data/File inclusion/insertion section.

Here, you can optionally create conditions under what the data you selected in the first section is
displayed in the generated document.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 203
1. Select a tag in Left Value.
Only tags related to the selected data are displayed in the drop-down list.
2. Select an operator.
The conditions can only check if the data is equal (=) or not equal (not =).
3. In Right Value(s), enter the value that the system needs to check.
4. Click Add Condition.
The condition displays in the Conditions column.
5. (Optional) Repeat the previous steps to add multiple conditions.

You can remove a condition by clicking .


e. Expand the Select Product Data for quoted items you wish to insert into your template section.
f. Click Add Product Data Section.

The New Product Data Section window pops up.

The tags selected here display in a C2 tag that loops through all items in the quote.
1. Select Show data as a table
These fields display:

SAP CPQ Setup and Administration Guide


204 PUBLIC Quotes Administration
○ Number of columns - select in how many columns the data is displayed.
○ Header - displays for each column. Enter the name of the column.
○ Product data tags - click Select Product Data. Select the product-related tags and attributes
(to select multiple attributes, hold the Ctrl key on your keyboard while selecting.). Containers
can’t be displayed in the tabular view.
○ Footer - click Add Row and enter the text that displays in the footer.
2. Select Don’t show data as a table.
Only the Product data tags field is available in the nontabular view. Click Select Product Data.
Select the product-related tags and attributes (to select multiple attributes, hold the Ctrl key on
your keyboard while selecting.). You can also select containers (select a container and then select
pertaining columns).
3. Select the additional data:
○ Show only items of product type - select product types that you want to be displayed. By
default, all product types are displayed.
○ Only show items not marked as optional - only item types other than optional are displayed
(base, alternative, and variant).
○ Only show items marked as optional - only optional items are displayed.
4. Click Add Section.
g. Repeat the previous step to add multiple sections in the template.

To remove sections, click .


6. In Step 2, click Generate Tags Document.
7. Click Download Tags Document.

A document with all the tags you selected in the previous steps is downloaded.

You can now either delete the descriptions in the generated template and proceed with the upload [page
189], or copy and paste only the tags into another document.

Check the Document Generation Tips and Tricks [page 206] page to avoid any possible issue with
generating your document.

4.1.7 Document Generation User Journey

The purpose of this feature is to visually guide new or less experience or less frequent users through the
process of selecting products, creating a shopping cart, generating a quote document.

Depending on application parameter Show lead/prompting arrows in catalog (catalog, configurator, shopping
cart, document generation), SAP CPQ displays arrows that make it easy for user to understand that they need
to click on category or Customize product button. Button Add to Quote should be hidden, greyed our (or
disabled) until user selects at least one product to be added to quote. For categories, arrow is added to the end
of category name. For product Customize button, arrow is added in it. For the configurator, the same arrow is
added to Add to quote/Prepare proposal button. Approvals action will also have an arrow in order to prompt
uses to click on it (when it shows up) if approvals are needed. This is because Generate Quote action won’t be
there any longer and approvals is the next thing they need to do. Application parameter Show lead/prompting
arrows (catalog, configurator, shopping cart, document generation) is added to first tab of application
parameters. Default value is FALSE.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 205
Sending Documents as Email Attachments from SAP CPQ

After users select a template for generating a document and customize it, they can download the document
and send it as email attachments from the application. The recipients’ details and the email subject and body
are predefined, but users can change the details and select who receives the email. The email body contains a
predefined text that neither users nor administrators can change (for this, please contact the SAP CPQ
Support team).

The generated document is sent as an email attachment if Email Attachment is selected. Selecting Include
Proposal Link includes a link in the email.

 Note

If the option Send Mail using your default mail client… is selected, it’s necessary to manually attach the
generated document (the generated document won't be automatically attached to your email). Also, the
Plain text body type must be selected.

4.1.8 Document Generation Tips and Tricks

This page lists the workarounds and methods of avoiding issues with document generation in SAP CPQ.

● Don’t change the color of the tags to white to make a document cleaner. The system pulls values of tags
and it doesn’t display the tags in the generated document, so you shouldn’t change the color of tags to
white to hide them in the template.
● Don’t switch fonts in one tag.
● Always use the same font for tags within one document.

● Make sure to show paragraph marks and other hidden symbols in Microsoft Word by clicking in the
toolbar. This shows all characters that may have been entered accidentally or while copying content and
that will potentially cause errors in generating documents in SAP CPQ. Make sure to delete such
characters.
● Everything inside a C loop must be in the same font.
● If all sections after the second section in a multisection template inherit the formatting from the second
section, and the Sections will inherit formatting (header,footer etc.) from the first section in the template
option is off, select the Different Odd and Even checkbox in the word-processing program.
● Make sure to add a new line after each C2 tag (press ENTER on your keyboard).
● If there are tables inside a C loop in the header, footer and the main part of the document, they all must
have the same format (for example, they must have the same columns).
● Use template versions when adding new tags in an existing template. When you create a template and
properly generate a document, the next time you want to add new tags, create a new version of the
document and make it active. This way, you make sure to always have a template version with tags that
properly retrieve data. Also, if something isn’t properly retrieved in the new document, you limit the
debugging only to the recently added tags.
● Don’t add table tags in conditions.
● Don’t add conditions into conditions.
● Protected DOC and DOCX files can’t be uploaded into SAP CPQ.

SAP CPQ Setup and Administration Guide


206 PUBLIC Quotes Administration
● If your template isn’t being properly generated, try adding an enter or a space character at the end of the
section.
● If Q_QP_FILE tag is found inside the text (paragraph), the file is embedded above that paragraph, not inside
the paragraph where the tag was placed. This is applicable for all tags that insert additional files in the
document (docs, images, and so on).
● The following tag returns numbers in the user’s selected number format:
<*CTX( Number(<*EVAL(15000)*>).ToFormat(<*CTX( Number(1234.56).Format )*>) )*>
● You cannot create nested conditions in a document generation template. However, you can combine
conditions by using the AND logical operator instead. Consider the conditions in this example:

[CONDITION, << CUSTOM_TABLE_COLUMN(Machine)>>=<<C_PNAME>> AND


<<CUSTOM_TABLE_COLUMN(Attribute)>>=<<C_DESC>> AND
<<CUSTOM_TABLE_COLUMN(Language)>>=English]<<C_TAG_FILE((<<CUSTOM_TABLE_COLUMN(
Document)>>)>>[CONDITION_END]

● The application of conditional logic depends on the type of tags used for document generation: C2 or
QUOTE_ITEMS. If the C2 approach is used, the system will first parse content and later, based on the
parsed conditional logic, display, and parse the document content. On the other hand, QUOTE_ITEMS
parses the condition and process only the content data that satisfies the condition. Row spacing should be
reduced to minimum to ensure correct tag parsing. Below are the syntax examples for both approaches,
which enable the user to print the content of the main and line items under specific conditions.

C2 Example

<<C2>>
<<HEADER>>
This is a header.
<<HEADER_END>>
<<MAIN>>
Repeat once for each main item.
<<C_STOP>>
<<MAIN_END>>
<<LI>>
[CONDITION,<<C_TAG(CTX,EQ,IN,GT,LT... TAGS GO HERE)>>=1]
*CONTENT GOES HERE*
[CONDITION_END]
<<LI_END>>
<<FOOTER>>
This is a footer.
<<FOOTER_END>>
<<C_END>>

QUOTE_ITEMS Example

<<QUOTE_ITEMS>>
<<HEADER>>
<<HEADER_END>>
<<MAIN: CONDITION(CTX,EQ,IN,GT,LT... TAGS GO HERE)>>
<<MAIN_HEADER>>
<<MAIN_HEADER_END>>
<<MAIN_CONTENT>>
<<MAIN_CONTENT_END>>

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 207
<<MAIN_FOOTER>>
<<MAIN_FOOTER_END>>
<<MAIN_END>>
<<LI>>
<<LI_HEADER>>
<<LI_HEADER_END>>
<<LI_CONTENT>>
<<LI_CONTENT_END>>
<<LI_FOOTER>>
<<LI_FOOTER_END>>
<<LI_END>>
<<FOOTER>>
<<FOOTER_END>>
<<QUOTE_ITEMS _END>>

4.2 Quote 2.0

Quote 2.0 is the improved quote engine available since June 2018. The new quote engine was developed as a
part of the initiative to make SAP CPQ the state-of-the-art software that allows users to create large quotes
more quickly than in Quote 1.0.

After the responsive design was made public in 2015 and the new Document Generation engine made available
in 2017, clients needed a new Quote engine that would additionally boost their performance.

 Note

Benefits of Quote 2.0:

● Performance - Quote 2.0 is faster than Quote 1.0.


● Scalability - improved support for large quotes (from 4 thousand to 100 thousand lines).
● Clean system with relevant features only - obsoleted features are removed from the system and the
features that are most frequently in use are redesigned or replaced with powerful alternatives.
Additionally, events and pipelines are cleaned up which adds to the improved system performance.
● Streamlined Implementation - because of all these benefits, Quote 2.0 is easier to implement than
Quote 1.0.
● Easier reporting - the Quote 2.0 database is simplified and more intuitive, which enables easier
reporting.
● Solid foundation for future quote improvements.

Quote 1.0 is still the default quote engine in SAP CPQ. New clients may use Quote 2.0 from the beginning (this
requires initial setup before the modeling starts) and existing clients need to migrate from Quote 1.0 to Quote
2.0.

Compatibility

Before initiating the migration from Quote 1.0 to Quote 2.0, check the following list to understand the
compatibility of the new quote engine with the rest of the system:

● Quote 1.0 and Quote 2.0 can’t be used in parallel in the same tenant.

SAP CPQ Setup and Administration Guide


208 PUBLIC Quotes Administration
● Only responsive design is supported in Quote 2.0.
● The user interface is the same, although some tweaks have been made (for example, Load Existing Project/
Quotation is redesigned).
● Only new document generation engine [page 198] is supported in Quote 2.0.
● Quote 2.0 needs to be turned on in new tenants (Quote 1.0 is still the default engine).
● Quote 2.0 shouldn’t be turned on in existing tenants if the system hasn’t been previously adjusted to Quote
2.0. This requires a migration project during which the existing quotes will be moved to the new engine. The
migration procedure is explained in the section below.
● Some features aren’t available in Quote 2.0. They’re either obsoleted or they’re replaced with an improved
alternative. The comparative overview of Quote 1.o to Quote 2.0 features is described in the SAP CPQ
Quote 2.0 Migration Guide.

 Tip

Download the SAP CPQ 2005 Migration Guide to find out how to migrate from Quote 1.0 to Quote 2.0. The
guide contains a comparative overview of Quote 1.0 vs Quote 2.0 features and a migration procedure.

Migrate from Quote 1.0 to Quote 2.0 [page 210]


Clients who are using Quote 1.0 can decide to migrate existing quotes to Quote 2.0. The Professional
Services team provides assistance during the migration, which will be handled as a separate project.
Depending on the number of quotes and items and the complexity of client models, the migration is
different for each client.

Filtering Items in Quote 2.0 [page 211]


Quote Filtering allows users to filter out quote items by specific values in quote item custom fields and
in some standard SAP CPQ fields (Part Number, Product Type and Product Name). Filtering is available
only in Quote 2.0.

Managing Calculations [page 212]


To manage calculations for Quote 2.0, access the Quote Fields and Calculations page in Setup > Quotes.
The page shows in Setup only when Quote 2.0 is on. Otherwise, if using Quote 1.0, calculations should
be administered under Pricing/Calculations > Cart Fields Administration.

Solution Design [page 242]


The Solution Design feature enables users to organize items into sections and subsections in a
separate tab on quotes.

Scripting for Quote 2.0 [page 254]


Scripting for Quote 2.0 is different from the scripting for Quote 1.0.

Involved Parties (Quote Teams) [page 257]


Grouping users into teams enables parallel work on one quote and allows quote owners to assign quote
sections to different teams.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 209
4.2.1 Migrate from Quote 1.0 to Quote 2.0
Clients who are using Quote 1.0 can decide to migrate existing quotes to Quote 2.0. The Professional Services
team provides assistance during the migration, which will be handled as a separate project. Depending on the
number of quotes and items and the complexity of client models, the migration is different for each client.

 Tip

Download the SAP CPQ 2005 Migration Guide to find out how to migrate from Quote 1.0 to Quote 2.0. The
guide contains a comparative overview of Quote 1.0 vs Quote 2.0 features and a migration procedure.

SAP CPQ doesn’t switch automatically to Quote 2.0, nor should administrators initiate the transition on their
own. Quote 2.0 isn’t backward compatible with old quotes and there are functionalities in Quote 1.0 that are yet
to be developed for the new engine.

 Note

New SAP CPQ tenants are automatically set to Quote 1.0. To move to Quote 2.0 before you begin modeling,
contact the SAP CPQ Support team.

Migration Procedure

Make sure you have read the Quote 1.0 vs Quote 2.0 - Feature Comparative Overview section in the SAP CPQ
2005 Migration Guide. At this point, you should be familiar with the differences between the two engines and
understand how that may reflect on your model in SAP CPQ.

1. Contact the Support team to get the copy of your production tenant.
This is a temporary tenant that you use only to adjust the quotes and the model in Quote 2.0. Once
everything is adjusted, you move everything from the temporary tenant back to production.
2. Ask the Support team to turn on Quote 2.0 in the temporary tenant.
3. Contact the SAP CPQ Professional Services to discuss the options for using old quotes in Quote 2.0.
The team analyzes your request and suggest the best approach, depending on how you plan to use old
quotes in Quote 2.0.
The team takes into consideration your model in SAP CPQ and then propose a solution.
4. Model the new tenant according to what you agreed with the Professional Services.
Make sure to keep a detailed record of the changes you made in the temporary tenant so you can replicate
them later in the original (production) tenant.
If administrators can’t handle the setup on their own, they should contact the SAP CPQ Professional
Services team.
5. Test if everything is working as expected in the temporary tenant before performing the production
upgrade.
6. Contact the SAP CPQ Support team to turn on the Quote 2.0 in the original (production) tenant.
7. Replicate all the adjustments that you have made in the temporary tenant in the production tenant.
Use the record of the changes you made in the temporary tenant.
The production environment is offline while the migration is in progress so make sure to plan the time for
these steps accordingly (preferably during the weekend).
8. Proceed with the steps for migrating old quotes that you’ve previously agreed on with the Professional
Services team.

SAP CPQ Setup and Administration Guide


210 PUBLIC Quotes Administration
4.2.2 Filtering Items in Quote 2.0

Quote Filtering allows users to filter out quote items by specific values in quote item custom fields and in some
standard SAP CPQ fields (Part Number, Product Type and Product Name). Filtering is available only in Quote
2.0.

After you allow filtering for a quote item custom field and users select or enter a value in that field on the quote,
the system can filter out only the items that have a specific value in the quote item custom field. To enable this,
users need to enter the field value as a filter criterion in Filter Items.

Setup

To enable filtering per quote item custom fields, you need to make the following adjustments in the Setup:

● Create a quote item custom field [page 307] and select Use column value to filter quote items. Filtering is
supported for all field types.
● Select the quote item custom field in Quote Layout [page 310].
● Make the quote item custom field visible to users in Quote Layout Permissions [page 310].

User Side

The Filter Items button opens the Filters pop-up with the filtering criteria. All quote item custom fields that are
enabled for filtering are displayed in the pop-up. Depending on the type of the quote item custom field, users
can enter, pick a value, or set a range of minimum and maximum values. The logic between multiple filters is
AND.

Users should follow the search logic described below when entering search criteria in standard SAP CPQ fields:

● Part Number - enter the exact value or use % to expand the search (for example, AB23% filters all quote
items whose part number starts with AB23).
● Product Type - start typing and the system will offer matching types.
● Product Name - enter the exact product name or expand the search with % (for example, Manuf% filters all
quotes whose product type starts with Manuf).

A filter remains applied on a quote as long as it’s opened in the same browser. The first time the user opens it in
a different browser, the filter is refreshed. The filter is visible on the quote only to the user who applied it.

If a filter is applied, the filtering criteria is visible above the list of items and the total number of filtered items is
displayed on the right.

If users manage sections in the Solution Design tab, they’ll have the following two checkboxes available:

● Show Only Unallocated Products - filters only the items that aren’t allocated to any sections.
● Show only products assigned to my sections - filters the items that are allocated to the section to which the
user has rights.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 211
Additional Restrictions

● Even if you enable filtering for a quote item custom field, if the field isn’t visible for a user, they can’t apply
the field’s values as filters on the quote.
● When a quote with applied filter is copied and a new revision is created, the filter isn’t applied.
● Filters are available on quotes in the view mode, when the user has no rights to perform any actions on the
quote.

4.2.3 Managing Calculations

To manage calculations for Quote 2.0, access the Quote Fields and Calculations page in Setup > Quotes. The
page shows in Setup only when Quote 2.0 is on. Otherwise, if using Quote 1.0, calculations should be
administered under Pricing/Calculations > Cart Fields Administration.

 Note

Note that in the context of calculations, terms quote fields and columns may be used interchangeably when
referring to fields on quotes that are calculated via formulas (for example, NRC List Price, Extended Cost,
NRC Cost, etc.). Additionally, terms formula and calculations may be used interchangeably as well.

Fields and Calculations [page 213]


The Fields and Calculations tab allows you to manage existing quote default and custom fields in the
system and to add new fields.

Quote Field Calculations [page 215]


Most quote fields are calculated via one predefined formula. However, the value of some of them is
calculated via multiple formulas.

Editing Calculations [page 220]


On the Editing tab, you can select the quote fields that that are editable, the permission groups that are
able to edit them and the status of the quotes in which the fields are editable. By default, all fields on
quotes are read-only until their editability is defined.

Order of Calculations When Adding/Updating Fields [page 221]

Order of Calculations when Changing Quote Field Values [page 224]


Click on a field to see the default order of calculations that trigger once the value of the respective field
is changed. For each field, you will see the name of the calculation as defined in Quote Fields and
Calculations, the description of the calculation and the mathematical formula used for calculating the
value.

Rolled up and Reverse Calculations [page 237]


When handling calculations in Quote 2.0, users can use standard, rolled up and reverse calculations.
Unlike Quote 1.0, Quote 2.0 allows you to handle reverse rolled up calculations.

Calculations for SAP Subscription Billing Integration [page 239]

SAP CPQ Setup and Administration Guide


212 PUBLIC Quotes Administration
4.2.3.1 Fields and Calculations

The Fields and Calculations tab allows you to manage existing quote default and custom fields in the system
and to add new fields.

After clicking Add New Field, a window pops up for defining basic settings (field name, label, type (Number,
Date, Currency, and Text) and dependency from the knockout context). The field displays automatically in the
list of fields and you can additionally manage it on the Quote Item Custom Fields page. To handle the field's
activity, use the Active toggle.

After you select a field from the list, a list of calculations attached to it will display on the right. Calculations

execute from top to bottom. To change the order or calculations, click on next to a calculation and move it up
or down. To remove a calculation, click .

 Note

Due to dependency between certain default calculations, the system must execute them in a specific order
described in Item Update Calculations Order [page 221]. Ordering calculations differently may cause an
error.

To attach another calculation, click Add calculation below the list of existing calculations. A pop-up shows all
the remaining calculations that can be attached to a field by clicking . Additionally, the system lets you define
calculations that are triggered when a new item is added. The list of calculations shows on the right if you click

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 213
Calculation on Add/Copy/Delete Item. These calculations should also be organized in a predefined order as
shown in Item Add Calculations Order.

 Note

When Quote 2.0 engine is enabled, a parameter Calculate discounts only for changed items is visible on the
Discounts page. Selecting the parameter optimizes calculations by checking discount rules only on
affected (changed) items.

In Quote 2.0, administrators have a full control over the order of calculations and they can easily insert an item
custom field between two standard fields and insert a calculation so that the custom field affects the standard
fields, without having to completely rewrite the entire quote calculation for quote lines.

The concept of editable groups is removed from the system with Quote 2.0. In the new engine, calculations are
managed on field level for all users on the tenant. Calculations are to be set up for each field separately, one
field at a time. The system allows you to make all quote fields editable (main items, line items, product types,
and totals).

 Note

When on a quote, users just need to double-click the underlined amount in a column and all amounts in the
column become editable. After changing a value, users can trigger the calculations by clicking Reprice,
clicking anywhere outside the active field or by pressing Enter.

On the Quote Fields and Calculations page, the list on the left shows all fields calculated via formulas that
display on quotes. Once you click a field, the list on the right will display all calculations that are triggered in the
system after the value in the field has changed. Changing a value causes a chain reaction in which calculations
are performed one after another. When changing the default order of calculations, make sure to organize them
so that the system has the value of all constituent elements before triggering the calculation.

 Tip

To organize calculations properly, administrators should understand which values does a calculation use
and according to their specific customization, organize calculations in a logical manner.

Additionally, you can create custom calculations via scripting. To access the window for creating scripts, click
Add calculation Add New Calculation . In the pop-up, define the following:

● Name - script name.


● Row Type - quote level on which the calculation is executed.
● Description - detailed explanation of the script.
● Force Proxy Generation - if enabled, the system loads and refreshes the WSDL web service.

For additional help with creating scripts, access:

● Check Syntax - checks if the script is written properly.


● Workbench - enables developing and debugging scripts.
● Scripting Methods List - list of relevant methods.

More details on scripting are available in Scripting for Quote 2.0 [page 254].

To see the editing rights for a field, click Show editing permissions for this field. The pop-up displays the
permission groups that have the rights to edit the field and quote statuses in which editing is enabled.

SAP CPQ Setup and Administration Guide


214 PUBLIC Quotes Administration
4.2.3.2 Quote Field Calculations

Most quote fields are calculated via one predefined formula. However, the value of some of them is calculated
via multiple formulas.

Example

Three formulas are available for calculating Item.DiscountPercent:

● Item.DiscountPercent = 100 * Item.DiscountAmount / Item.ListPrice


● Item.DiscountPercent = 100 - 100 * Item.NetPrice / Item.ListPrice
● Item.DiscountPercent = 100 - 100 * Item.ExtendedAmount / Item.ListPrice * Item.Quantity

The first calculation is attached to the NRC Discount Amount and it's triggered once users change the value in
this field. The second calculation will be triggered after NRC Net Price is changed and the third after NRC
Extended Amount is changed.

You can find below formulas that are used for calculating all quote fields (main items, line items, product type,
and total items). The first column contains the name of the field as it is displayed on quotes. Calculation
contains calculation names as defined in the Quote Fields and Calculations section. In addition, a description of
each field is provided as well as the formula for calculating the field.

Main Item and Line Item Fields


Quote Field Calculation Description Formula

NRC List Price Item NRC List Price Calculates item NRC list Item.ListPrice = Item.Exten­
price from item NRC ex­ dedListPrice / Item.Quantity
tended list price.

MRC List Price Item MRC List Price Calculates MRC List Price Item.MrcListPrice =
from MRC Extended List Item.MrcExtendedListPrice /
Price. Item.Quantity

NRC Discount Percent Item NRC Discount Percent Calculates item NRC dis­ Item.DiscountPercent = 100
(from Discount Amount) count percent from item dis­ * Item.DiscountAmount /
count amount. Item.ListPrice

NRC Discount Percent Item NRC Discount Percent Calculates item NRC dis­ Item.DiscountPercent = 100 -
(from item net price) count percent from net price. 100 * Item.NetPrice /
Item.ListPrice

NRC Discount Percent Item NRC Discount Percent Calculates item NRC dis­ Item.DiscountPercent = 100 -
(from Extended Amount) count percent from item ex­ 100 * Item.ExtendedA­
tended amount. mount / Item.ListPrice *
Item.Quantity

MRC Discount Percent Item MRC Discount Percent Calculates item MRC dis­ Item.MrcDiscountPercent =
(from MRC Discount count percent from item 100 * Item.MrcDiscountA­
Amount) MRC discount amount. mount / Item.MrcListPrice

MRC Discount Percent Item MRC Discount Percent Calculates item MRC dis­ Item.MrcDiscountPercent =
(from MRC Net Price) count percent from item 100 - 100 * Item.MrcNet­
MRC net price. Price / Item.MrcListPrice

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 215
Quote Field Calculation Description Formula

MRC Discount Percent Item MRC Discount Percent Calculates item MRC dis­ Item.MrcDiscountPercent =
(from MRC Extended count percent from item 100 - 100 * Item.MrcExten­
Amount) MRC extended amount. dedAmount / Item.MrcList­
Price * Item.Quantity

NRC Extended Amount Item NRC Extended Amount Calculates item NRC ex­ Item.ExtendedAmount =
tended amount from item net Item.NetPrice * Item.Quan­
price and quantity. tity

MRC Extended Amount Item MRC Extended Amount Calculates item MRC ex­ Item.MrcExtendedAmount =
tended amount from item Item.MrcNetPrice *
MRC net price and quantity. Item.Quantity

NRC Cost Item Cost Calculates item NRC cost Item.Cost = Item.Extended­
from item extended cost and Cost / Item.Quantity
quantity.

MRC Cost Item MRC Cost Calculates item MRC cost Item.MrcCost = Item.MrcEx­
from item MRC extended tendedCost / Item.Quantity
cost and quantity.

NRC Extended Cost Item NRC Extended Cost Calculates item NRC ex­ item.ExtendedCost =
tended cost from item NRC item.Cost * item.Quantity
cost and quantity.

MRC Extended Cost Item MRC Extended Cost Calculates item MRC ex­ Item.MrcExtendedCost =
tended cost from item MRC Item.MrcCost * Item.Quan­
cost and quantity. tity

NRC Extended List Price Item NRC Extended List Price Calculates item NRC ex­ Item.ExtendedListPrice =
tended list price from item Item.ListPrice * Item.Quan­
NRC list price and quantity. tity

MRC Extended List Price Item MRC Extended List Calculates item MRC ex­ Item.MrcExtendedListPrice =
Price tended list price from item Item.MrcListPrice *
MRC list price and quantity. Item.Quantity

NRC Discount Amount Item NRC Discount Amount Calculates item NRC dis­ Item.DiscountAmount =
(from NRC discount percent) count amount from NRC dis­ Item.ListPrice * Item.Quan­
count percent. NRC discount tity * Item.DiscountPercent /
amount also includes item 100
quantity.

NRC Discount Amount Item NRC Discount Amount Calculates item NRC dis­ Item.DiscountAmount =
(from NRC net price) count amount from item net Item.ListPrice - Item.Net­
price. Price

NRC Discount Amount Item NRC Discount Amount Calculates item NRC dis­ Item.DiscountAmount =
(from NRC extended count amount from NRC ex­ Item.ListPrice - Item.Exten­
amount) tended amount and quantity. dedAmount / Item.Quantity

MRC Discount Amount Item MRC Discount Amount Calculates item MRC dis­ Item.MrcDiscountAmount =
(from MRC discount percent) count amount from item Item.MrcListPrice *
MRC discount percent. Item.MrcDiscountPercent /
100

MRC Discount Amount Item MRC Discount Amount Calculates item MRC dis­ Item.MrcDiscountAmount =
(from MRC net price) count percent from item Item.MrcListPrice -
MRC net price. Item.MrcNetPrice

SAP CPQ Setup and Administration Guide


216 PUBLIC Quotes Administration
Quote Field Calculation Description Formula

MRC Discount Amount Item MRC Discount Amount Calculates item MRC dis­ Item.MrcDiscountAmount =
(from MRC extended count amount from MRC ex­ Item.MrcListPrice -
amount) tended amount. Item.MrcExtendedAmount /
Item.Quantity

NRC Net Price Item NRC Net Price Calculates item NRC net item.NetPrice = item.List­
price from item discount per­ Price * (1 - item.DiscountPer­
cent. cent / 100)

MRC Net Price Item MRC Net Price Calculates item MRC net Item.MrcNetPrice =
price from MRC discount Item.MrcListPrice -
amount. Item.MrcDiscountAmount

NRC Manufactures Gross Item NRC Gross Margin Per­ Calculates item NRC gross Item.GrossMarginPercent =
Margin cent margin percent from item 100 * (Item.ExtendedA­
NRC extended amount and mount - Item.Extended­
item NRC extended cost. Cost) / Item.ExtendedA­
mount

MRC Manufactures Gross Total MRC Gross Margin Per­ Calculates total MRC gross Totals.MrcGrossMarginPer­
Margin cent margin percent from totals cent = 100 * (Totals.MrcNet­
MRC net price and totals Price - Totals.MrcCost) / To­
MRC cost. tals.MrcNetPrice

Product Type Fields


Quote Fields Calculation Description Formula

Product Type NRC Discount Product Type NRC Discount Calculates product type NRC ProductType.DiscountPer­
Percent Percent discount percent from prod­ cent = 100 * Product­
uct type NRC discount Type.DiscountAmount / Pro­
amount. ductType.ListPrice

Product Type MRC Discount Product Type MRC Discount Calculates product type MRC ProductType.MrcDiscount­
Percent Percent discount percent from prod­ Percent = Product­
uct type MRC discount Type.MrcDiscountAmount /
amount. ProductType.MrcListPrice

NRC Extended Amount Product Type NRC Net Price Calculates NRC net price as a NetPrice = Sum(Item.Exten­
sum of all item extended dedAmount)
amounts.

MRC Extended Amount Product Type MRC Net Price Calculates MRC extended ProductType.MrcNetPrice =
amount as a sum of all item Sum(Item.MRCExtendedA­
MRC extended amounts. mount)

NRC Extended Cost Product Type NRC Cost Calculates NRC extended Cost = Sum(Item.Extended­
cost as a sum of all item NRC Cost)
extended costs.

MRC Extended Cost Product Type MRC Cost Calculates MRC extended ProductType.MrcCost =
cost as a sum of all item MRC Sum(Item.MRCExtended­
extended costs. Cost)

NRC Extended List Price Product Type List Price Calculates NRX extended list ListPrice = Sum(Item.Exten­
price as a sum of all item ex­ dedListPrice)
tended list prices.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 217
Quote Fields Calculation Description Formula

MRC Extended List Price Product Type MRC List Price Calculates product type MRC ProductType.MrcListPrice =
list price as a sum of all item Sum(Item.MRCExtended­
MRC extended list prices. ListPrice)

NRC Discount Amount Product Type Discount Calculates NRC discount ProductType.DiscountA­
Amount amount from product type mount = ProductType.List­
NRC net price. Price - ProductType.NetPrice

MRC Discount Amount Product Type MRC Discount Calculates MRC discount ProductType.MrcDiscountA­
Amount amount from MRC net price. mount = Product­
Type.MrcListPrice - Product­
Type.MrcNetPrice

NRC Manufactures Gross Product Type Gross Margin Calculates NRC manufac­ ProductType.GrossMargin­
Margin Percent tures gross margin from Percent = 100 * (Product­
product type net price. Type.NetPrice - Product­
Type.Cost) / Product­
Type.NetPrice

MRC Manufactures Gross Product Type MRC Gross Calculates MRC manufac­ ProductType.MrcGrossMar­
Margin Margin Percent tures gross margin from ginPercent = 100 * (Product­
product MRC net price. Type.MrcNetPrice - Product­
Type.MrcCost) / Product­
Type.MrcNetPrice

Total Fields
Quote Field Calculation Description Formula

Item Total NRC Extended List Total NRC List Price Calculates total NRC ex­ Totals.ListPrice =
Price tended list price as a sum of Sum(Item.ExtendedList­
all item extended list prices. Price)

Item Total NRC Extended Total NRC Net Price Calculates total NRC ex­ Totals.NetPrice =
Amount tended amount as a sum of Sum(Item.ExtendedAmount)
all item extended amounts.

Total Total Amount Calculates total amount as a Totals.Amount = Totals.Net­


sum of all item MRC ex­ Price
tended amounts.

Item Total MRC Extended List Total MRC List Price Calculates item total MRC ex­ Totals.MrcListPrice =
Price tended list price as a sum of Sum(Item.MRCExtended­
all item MRC extended list ListPrice)
prices.

Item Total MRC Extended Total MRC Net Price Calculates item total MRC ex­ Totals.MrcNetPrice =
Amount tended amount as a sum of Sum(Item.MRCExtendedA­
all item MRC extended mount)
amounts.

Item Total MRC Amount Total MRC Amount Calculates total MRC amount Totals.MrcAmount = To­
as a sum of all item MRC ex­ tals.MrcNetPrice
tended amounts.

Item Total NRC Extended Total Cost Calculates item total NRC ex­ Totals.Cost = Sum(Item.Ex­
Cost tended cost as a sum of all tendedCost)
item extended costs.

SAP CPQ Setup and Administration Guide


218 PUBLIC Quotes Administration
Quote Field Calculation Description Formula

Item Total NRC Extended Total Product Discount Calculates item total NRC ex­ Totals.ProductDiscountA­
Amount Amount tended amount from total mount = Totals.ListPrice - To­
net price. tals.NetPrice

Item Total NRC Discount Total Average Product Dis­ Calculates item total NRC Totals.AverageProductDis­
Percent count Percent discount percent from total countPercent = 100 * To­
product discount amount. tals.ProductDiscountA­
mount / Totals.ListPrice

Item Total MRC Extended Total MRC Cost Calculates total MRC ex­ Totals.MrcCost =
Cost tended cost as a sum of all Sum(Item.MRCExtended­
item MRC extended costs. Cost)

Item Total MRC Extended Total MRC Product Discount Calculates item total MRC ex­ Totals.MrcProductDiscoun­
Amount Amount tended amount from total tAmount = Totals.MrcList­
MRC net price. Price - Totals.MrcNetPrice

Item Total MRC Discount Total Average MRC Product Calculates item total MRC Totals.AverageMrcProduct­
Percent Discount Percent discount percent from MRC DiscountPercent = 100 * To­
product discount amount. tals.MrcProductDiscountA­
mount / Totals.MrcListPrice

MRC Manufactures Gross Total MRC Gross Margin Per­ Calculates total MRC manu­ Totals.MrcGrossMarginPer­
Margin cent factures gross margin from cent = 100 * (Totals.MrcNet­
MRC net price. Price - Totals.MrcCost) / To­
tals.MrcNetPrice

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 219
4.2.3.3 Editing Calculations

On the Editing tab, you can select the quote fields that that are editable, the permission groups that are able to
edit them and the status of the quotes in which the fields are editable. By default, all fields on quotes are read-
only until their editability is defined.

When you access the Editing tab, only permission groups are displayed in the Select Permission Group column.
After selecting a permission group, quote statuses display in the Select Quote Status column. Similarly, once a
status is selected, fields show up in the Select Fields column. The selected fields are automatically moved to
the Selected Items section. To deselect an item, either click on it or click in the column title.

Multiple selection of permission groups and quote statuses isn’t enabled so you have to define field editability
for each permission group/status separately. Clicking Default Settings in a respective column applies the
selection to all permission groups or statuses.

If you want the same fields that are editable for a permission group/quote status pair to be editable for another
permission group/status pair, click Apply field selections from. A pop-up displays enabling you to search the
permission group and the quote status.

 Note

The logic between multiple permission groups is OR (if a user belongs to multiple permission groups, and if
editing a field is enabled for only one of the groups, the user has the right to edit that field).

SAP CPQ Setup and Administration Guide


220 PUBLIC Quotes Administration
Default Settings

Default editing settings allow administrators to select fields that are editable for all permission group/status
pairs by default until administrators select other fields. The purpose of the default settings is to cover the
scenarios in which the administrator hasn’t defined what fields are editable for a permission group or a status,
or both.

Define Default Settings

The procedure provides step-by-step instructions on how to define default settings for all permission groups
and all quote statuses.

1. Access the Editing tab.


2. In the Select Permission Group column, click Default Settings.
New is added to the column title.
3. In the Select Quote Status column, select Default Settings.
New is added to the column title.
4. Select the fields that are editable.
The fields are automatically moved to the Selected Items section.
5. Click Save.
The selected fields are now editable to all users for all quotes.

After defining default settings that all permission group/status pairs inherit, selecting a pair and clicking Save
breaks the link between the default settings and the respective pair. All future changes made to the default
settings won’t apply to the respective pair.

 Tip

Default settings apply to permission group/status pairs only before any other change is made. For example,
if default fields are selected for a pair and you deselect one of the fields and select two others fields, you
can’t apply the default settings again. You can only select fields manually.

To decide what quote fields are editable for a user, the system first looks for the fields that are selected in Quote
Fields and Calculation > Editing for that permission group and the status of the current quote. If no fields are
selected, the system looks for fields that are selected for that permission group and all quote statuses.
Similarly, if no fields are selected for the permission group, the system looks which fields are selected for that
quote status. Consequently, if no fields are selected neither for the permission group nor the status, the default
fields are editable to the user.

The system follows this workflow after default settings have been applied and before any other change on the
selected fields has been made for a permission group/status.

4.2.3.4 Order of Calculations When Adding/Updating


Fields

When a new item is added to a quote or an existing item is updated with new configuration, these calculations
are triggered in the following order:

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 221
Calculation Description Formula

Item NRC Extended List Price Calculates item NRC extended list price Item.ExtendedListPrice = Item.ListPrice
from item NRC list price and quantity. * Item.Quantity

Item NRC Discount Amount (from NRC Calculates item NRC discount amount Item.DiscountAmount = Item.ListPrice
discount percent) from NRC discount percent. NRC dis­ * Item.Quantity * Item.DiscountPer­
count amount also includes item quan­ cent / 100
tity.

Item NRC Net Price Calculates item NRC net price from item.NetPrice = item.ListPrice * (1 -
item discount percent. item.DiscountPercent / 100)

Item NRC Extended Amount Calculates item NRC extended amount Item.ExtendedAmount = Item.NetPrice
from item net price and quantity. * Item.Quantity

Item NRC Extended Cost Calculates item NRC extended cost item.ExtendedCost = item.Cost *
from item NRC cost and quantity. item.Quantity

Item NRC Gross Margin Percent Calculates item NRC gross margin per­ Item.GrossMarginPercent = 100 *
cent from item NRC extended amount (Item.ExtendedAmount - Item.Exten­
and item NRC extended cost. dedCost) / Item.ExtendedAmount

Product Type List Price Calculates NRX extended list price as a ListPrice = Sum(Item.ExtendedList­
sum of all item extended list prices. Price)

Product Type NRC Net Price Calculates NRC net price as a sum of all NetPrice = Sum(Item.ExtendedA­
item extended amounts. mount)

Product Type Discount Amount Calculates NRC discount amount from ProductType.DiscountAmount = Pro­
product type NRC net price. ductType.ListPrice - ProductType.Net­
Price

Product Type NRC Discount Percent Calculates product type NRC discount ProductType.DiscountPercent = 100 *
percent from product type NRC dis­ ProductType.DiscountAmount / Pro­
count amount. ductType.ListPrice

Product Type NRC Cost Calculates NRC extended cost as a sum Cost = Sum(Item.ExtendedCost)
of all item NRC extended costs.

Product Type Gross Margin Percent Calculates NRC manufactures gross ProductType.GrossMarginPercent =
margin from product type net price. 100 * (ProductType.NetPrice - Product­
Type.Cost) / ProductType.NetPrice

Total NRC List Price Calculates total NRC extended list price Totals.ListPrice = Sum(Item.Extended­
as a sum of all item extended list prices. ListPrice)

Total NRC Net Price Calculates total NRC extended amount Totals.NetPrice = Sum(Item.Extende­
as a sum of all item extended amounts. dAmount)

Total Amount Calculates total amount as a sum of all Totals.Amount = Totals.NetPrice


item MRC extended amounts.

Total Cost Calculates item total NRC extended Totals.Cost = Sum(Item.ExtendedCost)


cost as a sum of all item extended
costs.

Total Product Discount Amount Calculates item total NRC extended Totals.ProductDiscountAmount = To­
amount from total net price. tals.ListPrice - Totals.NetPrice

Total Average Product Discount Percent Calculates item total NRC discount per­ Totals.AverageProductDiscountPercent
cent from total product discount = 100 * Totals.ProductDiscountA­
amount. mount / Totals.ListPrice

SAP CPQ Setup and Administration Guide


222 PUBLIC Quotes Administration
Calculation Description Formula

Total MRC Gross Margin Percent Calculates total MRC manufactures Totals.MrcGrossMarginPercent = 100 *
gross margin from MRC net price. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

Item MRC Extended List Price Calculates item MRC extended list price Item.MrcExtendedListPrice =
from item MRC list price and quantity. Item.MrcListPrice * Item.Quantity

Item MRC Discount Amount (from MRC Calculates item MRC discount amount Item.MrcDiscountAmount =
discount percent) from item MRC discount percent. Item.MrcListPrice * Item.MrcDiscount­
Percent / 100

Item MRC Discount Amount (from MRC Calculates item MRC discount amount Item.MrcDiscountAmount =
discount percent) from item MRC discount percent. Item.MrcListPrice * Item.MrcDiscount­
Percent / 100

Item MRC Extended Amount Calculates item MRC extended amount Item.MrcExtendedAmount =
from item MRC net price and quantity. Item.MrcNetPrice * Item.Quantity

Item MRC Extended Cost Calculates item MRC extended cost Item.MrcExtendedCost = Item.MrcCost
from item MRC cost and quantity. * Item.Quantity

Item MRC Gross Margin Percent Calculates item MRC gross margin per­ Item.MrcGrossMarginPercent = 100 *
cent from item MRC extended amount (Item.MrcExtendedAmount -
and item MRC extended cost. Item.MrcExtendedCost) / MrcExtende­
dAmount

Product Type MRC List Price Calculates product type MRC list price ProductType.MrcListPrice =
as a sum of all item MRC extended list Sum(Item.MRCExtendedListPrice)
prices.

Product Type MRC Net Price Calculates MRC extended amount as a ProductType.MrcNetPrice =
sum of all item MRC extended amounts. Sum(Item.MRCExtendedAmount)

Product Type MRC Discount Amount Calculates MRC discount amount from ProductType.MrcDiscountAmount =
MRC net price. ProductType.MrcListPrice - Product­
Type.MrcNetPrice

Product Type MRC Discount Percent Calculates product type MRC discount ProductType.MrcDiscountPercent =
percent from product type MRC dis­ ProductType.MrcDiscountAmount /
count amount. ProductType.MrcListPrice

Product Type MRC Cost Calculates MRC extended cost as a ProductType.MrcCost =


sum of all item MRC extended costs. Sum(Item.MRCExtendedCost)

Product Type MRC Gross Margin Percent Calculates MRC manufactures gross ProductType.MrcGrossMarginPercent =
margin from product MRC net price. 100 * (ProductType.MrcNetPrice - Pro­
ductType.MrcCost) / Product­
Type.MrcNetPrice

Total MRC List Price Calculates item total MRC extended list Totals.MrcListPrice =
price as a sum of all item MRC ex­ Sum(Item.MRCExtendedListPrice)
tended list prices.

Total MRC Net Price Calculates item total MRC extended Totals.MrcNetPrice =
amount as a sum of all item MRC ex­ Sum(Item.MRCExtendedAmount)
tended amounts.

Total MRC Amount Calculates total MRC amount as a sum Totals.MrcAmount = Totals.MrcNet­
of all item MRC extended amounts. Price

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 223
Calculation Description Formula

Total MRC Cost Calculates total MRC extended cost as Totals.MrcCost = Sum(Item.MRCExten­
a sum of all item MRC extended costs. dedCost)

Total MRC Product Discount Amount Calculates item total MRC extended Totals.MrcProductDiscountAmount =
amount from total MRC net price. Totals.MrcListPrice - Totals.MrcNet­
Price

Total Average MRC Product Discount Calculates item total MRC discount per­ Totals.AverageMrcProductDiscountPer­
Percent cent from MRC product discount cent = 100 * Totals.MrcProductDis­
amount. countAmount / Totals.MrcListPrice

Total MRC Gross Margin Percent Calculates total MRC manufactures Totals.MrcGrossMarginPercent = 100 *
gross margin from MRC net price. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

4.2.3.5 Order of Calculations when Changing Quote Field


Values

Click on a field to see the default order of calculations that trigger once the value of the respective field is
changed. For each field, you will see the name of the calculation as defined in Quote Fields and Calculations, the
description of the calculation and the mathematical formula used for calculating the value.

Discount Amount Calculations [page 224]

Discount Percent Calculations [page 225]

Extended Amount Calculations [page 226]

Gross Margin Percent Calculations [page 227]

MRC Discount Amount [page 228]

MRC Discount Percent Calculations [page 229]

MRC Extended Amount Calculations [page 230]

MRC Gross Margin Percent Calculations [page 231]

MRC Net Price [page 232]

NRC Net Price [page 233]

Quantity Calculations [page 234]

4.2.3.5.1 Discount Amount Calculations

Calculation Description Formula

Item NRC Discount Percent (from NRC Calculates item NRC discount percent Item.NrcDiscountPercent = 100 - 100 *
Extended Amount) from item NRC extended amount, NRC Item.NrcExtendedAmount /
list price and quantity. Item.NrcListPrice * Item.Quantity

SAP CPQ Setup and Administration Guide


224 PUBLIC Quotes Administration
Calculation Description Formula

Item NRC Net Price Calculates item NRC net price from item.NetPrice = item.ListPrice * (1 -
item list price and item discount per­ item.DiscountPercent / 100)
cent.

Item NRC Extended Amount Calculates item NRC extended amount Item.ExtendedAmount = Item.NetPrice
from item net price and quantity. * Item.Quantity

Product type Net Price Calculates product type net price as a ProductType.NetPrice = Sum(Item.Ex­
sum of all item extended amounts. tendedAmount)

Product Type Discount Amount Calculates NRC discount amount from ProductType.DiscountAmount = Pro­
product type NRC net price. ductType.ListPrice - ProductType.Net­
Price

Product Type NRC Discount Percent Calculates product type NRC discount ProductType.DiscountPercent = 100 *
percent from product type NRC dis­ ProductType.DiscountAmount / Pro­
count amount. ductType.ListPrice

Total NRC Net Price Calculates total NRC extended amount Totals.NetPrice = Sum(Item.Extende­
as a sum of all item extended amounts. dAmount)

Total Amount Calculates total amount as a sum of all Totals.Amount = Totals.NetPrice


item MRC extended amounts.

Total Product Discount Amount Calculates item total NRC extended Totals.ProductDiscountAmount = To­
amount from total net price. tals.ListPrice - Totals.NetPrice

Total Average Product Discount Percent Calculates item total NRC discount per­ Totals.AverageProductDiscountPercent
cent from total product discount = 100 * Totals.ProductDiscountA­
amount. mount / Totals.ListPrice

Item Gross Margin Percent Calculates item gross margin percent Item.GrossMarginPercent = 100 *
from item extended amount and item (Item.ExtendedAmount - Item.Exten­
extended cost. dedCost) / Item.ExtendedAmount

Product Type Gross Margin Percent Calculates NRC manufactures gross ProductType.GrossMarginPercent =
margin from product type net price. 100 * (ProductType.NetPrice - Product­
Type.Cost) / ProductType.NetPrice

Total Average Gross Margin Percent Calculates item total MRC manufac­ Totals.MrcGrossMarginPercent = 100 *
tures gross margin from total MRC net (Totals.MrcNetPrice - Totals.MrcCost) /
price and total mrc cost. Totals.MrcNetPrice

4.2.3.5.2 Discount Percent Calculations

Calculation Description Formula

Item NRC Discount Amount (from NRC Calculates item NRC discount amount Item.DiscountAmount = Item.ListPrice
discount percent) from NRC discount percent. NRC dis­ * Item.Quantity * Item.DiscountPer­
count amount also includes item quan­ cent / 100
tity.

Item NRC Net Price Calculates item NRC net price from item.NetPrice = item.ListPrice * (1 -
item discount percent. item.DiscountPercent / 100)

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 225
Calculation Description Formula

Item NRC Extended Amount Calculates item NRC extended amount Item.ExtendedAmount = Item.NetPrice
from item net price and quantity. * Item.Quantity

Product Type NRC Net Price Calculates NRC net price as a sum of all NetPrice = Sum(Item.ExtendedA­
item extended amounts. mount)

Product Type Discount Amount Calculates NRC discount amount from ProductType.DiscountAmount = Pro­
product type NRC net price. ductType.ListPrice - ProductType.Net­
Price

Product Type NRC Discount Percent Calculates product type NRC discount ProductType.DiscountPercent = 100 *
percent from product type NRC dis­ ProductType.DiscountAmount / Pro­
count amount. ductType.ListPrice

Total NRC Net Price Calculates total NRC extended amount Totals.NetPrice = Sum(Item.Extende­
as a sum of all item extended amounts. dAmount)

Total Amount Calculates total amount as a sum of all Totals.Amount = Totals.NetPrice


item MRC extended amounts.

Total Product Discount Amount Calculates item total NRC extended Totals.ProductDiscountAmount = To­
amount from total net price. tals.ListPrice - Totals.NetPrice

Total Average Product Discount Percent Calculates item total NRC discount per­ Totals.AverageProductDiscountPercent
cent from total product discount = 100 * Totals.ProductDiscountA­
amount. mount / Totals.ListPrice

Item NRC Gross Margin Percent Calculates item NRC gross margin per­ Item.GrossMarginPercent = 100 *
cent from item NRC extended amount (Item.ExtendedAmount - Item.Exten­
and item NRC extended cost. dedCost) / Item.ExtendedAmount

Product Type Gross Margin Percent Calculates NRC manufactures gross ProductType.GrossMarginPercent =
margin from product type net price. 100 * (ProductType.NetPrice - Product­
Type.Cost) / ProductType.NetPrice

Total MRC Gross Margin Percent Calculates item total MRC manufac­ Totals.MrcGrossMarginPercent = 100 *
tures gross margin from MRC net price. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

4.2.3.5.3 Extended Amount Calculations

Calculation Description Formula

Item NRC Discount Amount (from NRC Calculates item NRC discount amount Item.DiscountAmount = Item.ListPrice
discount percent) from NRC discount percent. NRC dis­ * Item.Quantity * Item.DiscountPer­
count amount also includes item quan­ cent / 100
tity.

Item NRC Discount Percent (from Calculates item NRC discount percent Item.DiscountPercent = 100 * Item.Dis­
Discount Amount) from item discount amount. countAmount / Item.ListPrice

Item NRC Net Price Calculates item NRC net price from item.NetPrice = item.ListPrice * (1 -
item list price and item discount per­ item.DiscountPercent / 100)
cent.

SAP CPQ Setup and Administration Guide


226 PUBLIC Quotes Administration
Calculation Description Formula

Item NRC Extended Amount Calculates item NRC extended amount Item.ExtendedAmount = Item.NetPrice
from item net price and quantity. * Item.Quantity

Product Type NRC Net Price Calculates NRC net price as a sum of all NetPrice = Sum(Item.ExtendedA­
item extended amounts. mount)

Product type discount amount Calculates NRC discount amount from ProductType.DiscountAmount = Pro­
product type NRC net price. ductType.ListPrice - ProductType.Net­
Price

Product Type NRC Discount Percent Calculates product type NRC discount ProductType.DiscountPercent = 100 *
percent from product type NRC dis­ ProductType.DiscountAmount / Pro­
count amount. ductType.ListPrice

Total NRC Net Price Calculates total NRC extended amount Totals.NetPrice = Sum(Item.Extende­
as a sum of all item extended amounts. dAmount)

Total Amount Calculates total amount as a sum of all Totals.Amount = Totals.NetPrice


item MRC extended amounts.

Total Product Discount Amount Calculates item total NRC extended Totals.ProductDiscountAmount = To­
amount from total net price. tals.ListPrice - Totals.NetPrice

Total Average Product Discount Percent Calculates item total NRC discount per­ Totals.AverageProductDiscountPercent
cent from total product discount = 100 * Totals.ProductDiscountA­
amount. mount / Totals.ListPrice

Item NRC Gross Margin Percent Calculates item NRC gross margin per­ Item.GrossMarginPercent = 100 *
cent from item NRC extended amount (Item.ExtendedAmount - Item.Exten­
and item NRC extended cost. dedCost) / Item.ExtendedAmount

Product Type Gross Margin Percent Calculates NRC manufactures gross ProductType.GrossMarginPercent =
margin from product type net price. 100 * (ProductType.NetPrice - Product­
Type.Cost) / ProductType.NetPrice

Total Gross Margin Percent Calculates item total manufactures Totals.GrossMarginPercent = 100 * (To­
gross margin from net price. tals.NetPrice - Totals.Cost) / Totals.Net­
Price

4.2.3.5.4 Gross Margin Percent Calculations

Calculation Description Formula

Item NRC Gross Margin Percent (from Calculates item NRC gross margin per­ Item.GrossMarginPercent = 100 *
Discount Percent) cent from item NRC extended amount (Item.ExtendedAmount - Item.Exten­
and item NRC extended cost. dedCost) / Item.ExtendedAmount

Item NRC Discount Amount (from Calculates item NRC discount amount item.DiscountAmount = item.ListPrice
Discount Percent) from item discount percent. * item.Quantity * item.DiscountPer­
cent / 100

Item NRC Net Price Calculates item NRC net price from item.NetPrice = item.ListPrice * (1 -
item discount percent. item.DiscountPercent / 100)

Item NRC Extended Amount Calculates item NRC extended amount Item.ExtendedAmount = Item.NetPrice
from item net price and quantity. * Item.Quantity

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 227
Calculation Description Formula

Product Type NRC Net Price Calculates NRC net price as a sum of all NetPrice = Sum(Item.ExtendedA­
item extended amounts. mount)

Product Type Discount Amount Calculates NRC discount amount from ProductType.DiscountAmount = Pro­
product type NRC net price. ductType.ListPrice - ProductType.Net­
Price

Product Type NRC Discount Percent Calculates product type NRC discount ProductType.DiscountPercent = 100 *
percent from product type NRC dis­ ProductType.DiscountAmount / Pro­
count amount. ductType.ListPrice

Total NRC Net Price Calculates total NRC extended amount Totals.NetPrice = Sum(Item.Extende­
as a sum of all item extended amounts. dAmount)

Total Amount Calculates total amount as a sum of all Totals.Amount = Totals.NetPrice


item NRC extended amounts.

Total Product Discount Amount Calculates item total NRC extended Totals.ProductDiscountAmount = To­
amount from total net price. tals.ListPrice - Totals.NetPrice

Total Average Product Discount Percent Calculates item total NRC discount per­ Totals.AverageProductDiscountPercent
cent from total product discount = 100 * Totals.ProductDiscountA­
amount. mount / Totals.ListPrice

Product Type Gross Margin Percent Calculates NRC manufactures gross ProductType.GrossMarginPercent =
margin from product type net price. 100 * (ProductType.NetPrice - Product­
Type.Cost) / ProductType.NetPrice

Total NRC Gross Margin Percent Calculates total NRC manufactures Totals.NrcGrossMarginPercent = 100 *
gross margin from NRC net price. (Totals.NrcNetPrice - Totals.NrcCost) /
Totals.NrcNetPrice

4.2.3.5.5 MRC Discount Amount

Calculation Description Formula

Item MRC Discount Percent (from MRC Calculates item MRC discount percent Item.MrcDiscountPercent = 100 *
Discount Amount) from item MRC discount amount. Item.MrcDiscountAmount /
Item.MrcListPrice

Item MRC Net Price Calculates item MRC net price from Item.MrcNetPrice = Item.MrcListPrice -
MRC discount amount. Item.MrcDiscountAmount

Item MRC Extended Amount Calculates item MRC extended amount Item.MrcExtendedAmount =
from item MRC net price and quantity. Item.MrcNetPrice * Item.Quantity

Product Type MRC Net Price Calculates MRC extended amount as a ProductType.MrcNetPrice =
sum of all item MRC extended amounts. Sum(Item.MRCExtendedAmount)

Product Type MRC Discount Amount Calculates MRC discount amount from ProductType.MrcDiscountAmount =
MRC net price. ProductType.MrcListPrice - Product­
Type.MrcNetPrice

Product Type MRC Discount Percent Calculates product type MRC discount ProductType.MrcDiscountPercent =
percent from product type MRC dis­ ProductType.MrcDiscountAmount /
count amount. ProductType.MrcListPrice

SAP CPQ Setup and Administration Guide


228 PUBLIC Quotes Administration
Calculation Description Formula

Total MRC Net Price Calculates item total MRC extended Totals.MrcNetPrice =
amount as a sum of all item MRC ex­ Sum(Item.MRCExtendedAmount)
tended amounts.

Total MRC Amount Calculates total MRC amount as a sum Totals.MrcAmount = Totals.MrcNet­
of all item MRC extended amounts. Price

Total MRC Product Discount Amount Calculates item total MRC extended Totals.MrcProductDiscountAmount =
amount from total MRC net price. Totals.MrcListPrice - Totals.MrcNet­
Price

Total Average MRC Product Discount Calculates item total MRC discount per­ Totals.AverageMrcProductDiscountPer­
Percent cent from MRC product discount cent = 100 * Totals.MrcProductDis­
amount. countAmount / Totals.MrcListPrice

Item MRC Gross Margin Percent Calculates item MRC gross margin per­ Item.MrcGrossMarginPercent = 100 *
cent from item MRC extended amount (Item.MrcExtendedAmount -
and item MRC extended cost. Item.MrcExtendedCost) / MrcExtende­
dAmount

Product Type MRC Gross Margin Percent Calculates MRC manufactures gross ProductType.MrcGrossMarginPercent =
margin from product MRC net price. 100 * (ProductType.MrcNetPrice - Pro­
ductType.MrcCost) / Product­
Type.MrcNetPrice

Total MRC Gross Margin Percent Calculates total MRC manufactures Totals.MrcGrossMarginPercent = 100 *
gross margin from MRC net price. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

4.2.3.5.6 MRC Discount Percent Calculations

Calculation Decsription Formula

Item MRC Discount Amount (from MRC Calculates item MRC discount amount Item.DiscountAmount = Item.ListPrice
discount percent) from MRC discount percent. MRC dis­ * Item.Quantity * Item.DiscountPer­
count amount also includes item quan­ cent / 100
tity.

Item MRC Net Price Calculates item MRC net price from Item.MrcNetPrice = Item.MrcListPrice -
MRC discount amount. Item.MrcDiscountAmount

Item MRC Extended Amount Calculates item MRC extended amount Item.MrcExtendedAmount =
from item MRC net price and quantity. Item.MrcNetPrice * Item.Quantity

Product Type MRC Net Price Calculates MRC extended amount as a ProductType.MrcNetPrice =
sum of all item MRC extended amounts. Sum(Item.MRCExtendedAmount)

Product Type MRC Discount Amount Calculates MRC discount amount from ProductType.MrcDiscountAmount =
MRC net price. ProductType.MrcListPrice - Product­
Type.MrcNetPrice

Product Type MRC Discount Percent Calculates product type MRC discount ProductType.MrcDiscountPercent =
percent from product type MRC dis­ ProductType.MrcDiscountAmount /
count amount. ProductType.MrcListPrice

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 229
Calculation Decsription Formula

Total MRC Net Price Calculates item total MRC extended Totals.MrcNetPrice =
amount as a sum of all item MRC ex­ Sum(Item.MRCExtendedAmount)
tended amounts.

Total MRC Amount Calculates total MRC amount as a sum Totals.MrcAmount = Totals.MrcNet­
of all item MRC extended amounts. Price

Total MRC Product Discount Amount Calculates item total MRC extended Totals.MrcProductDiscountAmount =
amount from total MRC net price. Totals.MrcListPrice - Totals.MrcNet­
Price

Total Average MRC Product Discount Calculates item total MRC discount per­ Totals.AverageMrcProductDiscountPer­
Percent cent from MRC product discount cent = 100 * Totals.MrcProductDis­
amount. countAmount / Totals.MrcListPrice

Item MRC Gross Margin Percent Calculates item MRC gross margin per­ Item.MrcGrossMarginPercent = 100 *
cent from item MRC extended amount (Item.MrcExtendedAmount -
and item MRC extended cost. Item.MrcExtendedCost) / MrcExtende­
dAmount

Product Type MRC Gross Margin Percent Calculates MRC manufactures gross ProductType.MrcGrossMarginPercent =
margin from product MRC net price. 100 * (ProductType.MrcNetPrice - Pro­
ductType.MrcCost) / Product­
Type.MrcNetPrice

Total MRC Gross Margin Percent Calculates total MRC manufactures Totals.MrcGrossMarginPercent = 100 *
gross margin from MRC net price. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

4.2.3.5.7 MRC Extended Amount Calculations

Calculation Description Formula

Item MRC Discount Amount (from MRC Calculates item MRC discount amount Item.MrcDiscountAmount =
extended amount) from MRC extended amount. Item.MrcListPrice - Item.MrcExtende­
dAmount / Item.Quantity

Item MRC Discount Percent (from MRC Calculates item MRC discount percent Item.MrcDiscountPercent = 100 *
Discount Amount) from item MRC discount amount. Item.MrcDiscountAmount /
Item.MrcListPrice

Item MRC Net Price Calculates item MRC net price from Item.MrcNetPrice = Item.MrcListPrice -
MRC discount amount. Item.MrcDiscountAmount

Item MRC Extended Amount Calculates item MRC extended amount Item.MrcExtendedAmount =
from item MRC net price and quantity. Item.MrcNetPrice * Item.Quantity

Product Type MRC Net Price Calculates MRC extended amount as a ProductType.MrcNetPrice =
sum of all item MRC extended amounts. Sum(Item.MRCExtendedAmount)

Product Type MRC Discount Amount Calculates MRC discount amount from ProductType.MrcDiscountAmount =
MRC net price. ProductType.MrcListPrice - Product­
Type.MrcNetPrice

SAP CPQ Setup and Administration Guide


230 PUBLIC Quotes Administration
Calculation Description Formula

Product Type MRC Discount Percent Calculates product type MRC discount ProductType.MrcDiscountPercent =
percent from product type MRC dis­ ProductType.MrcDiscountAmount /
count amount. ProductType.MrcListPrice

Total MRC Net Price Calculates item total MRC extended Totals.MrcNetPrice =
amount as a sum of all item MRC ex­ Sum(Item.MRCExtendedAmount)
tended amounts.

Total MRC Amount Calculates total MRC amount as a sum Totals.MrcAmount = Totals.MrcNet­
of all item MRC extended amounts. Price

Total MRC Product Discount Amount Calculates item total MRC extended Totals.MrcProductDiscountAmount =
amount from total MRC net price. Totals.MrcListPrice - Totals.MrcNet­
Price

Total Average MRC Product Discount Calculates item total MRC discount per­ Totals.AverageMrcProductDiscountPer­
Percent cent from MRC product discount cent = 100 * Totals.MrcProductDis­
amount. countAmount / Totals.MrcListPrice

Item MRC Gross Margin Percent Calculates item MRC gross margin per­ Item.MrcGrossMarginPercent = 100 *
cent from item MRC extended amount (Item.MrcExtendedAmount -
and item MRC extended cost. Item.MrcExtendedCost) / MrcExtende­
dAmount

Product Type MRC Gross Margin Percent Calculates MRC manufactures gross ProductType.MrcGrossMarginPercent =
margin from product MRC net price. 100 * (ProductType.MrcNetPrice - Pro­
ductType.MrcCost) / Product­
Type.MrcNetPrice

Total MRC Gross Margin Percent Calculates total MRC manufactures Totals.MrcGrossMarginPercent = 100 *
gross margin from MRC net price. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

4.2.3.5.8 MRC Gross Margin Percent Calculations

Calculation Description Formula

Item MRC Gross Margin Percent (from Calculates item MRC gross margin per­ Item.GrossMarginPercent = 100 *
MRC Discount Percent) cent from item MRC extended amount (Item.ExtendedAmount - Item.Exten­
and item MRC extended cost. dedCost) / Item.ExtendedAmount

Item MRC Discount Amount (from MRC Calculates item MRC discount amount item.DiscountAmount = item.ListPrice
Discount Percent) from item MRC discount percent. * item.Quantity * item.DiscountPer­
cent / 100

Item MRC Net Price Calculates item MRC net price from Item.MrcNetPrice = Item.MrcListPrice -
MRC discount amount. Item.MrcDiscountAmount

Item MRC Extended Amount Calculates item MRC extended amount Item.MrcExtendedAmount =
from item MRC net price and quantity. Item.MrcNetPrice * Item.Quantity

Product Type MRC Net Price Calculates MRC extended amount as a ProductType.MrcNetPrice =
sum of all item MRC extended amounts. Sum(Item.MRCExtendedAmount)

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 231
Calculation Description Formula

Product Type MRC Discount Amount Calculates MRC discount amount from ProductType.MrcDiscountAmount =
MRC net price. ProductType.MrcListPrice - Product­
Type.MrcNetPrice

Product Type MRC Discount Percent Calculates product type MRC discount ProductType.MrcDiscountPercent =
percent from product type MRC dis­ ProductType.MrcDiscountAmount /
count amount. ProductType.MrcListPrice

Total MRC Net Price Calculates total MRC manufactures Totals.MrcNetPrice =


gross margin from MRC net price. Sum(Item.MRCExtendedAmount)

Total MRC Amount Calculates total MRC amount as a sum Totals.MrcAmount = Totals.MrcNet­
of all item MRC extended amounts. Price

Total MRC Product Discount Amount Calculates item total MRC extended Totals.MrcProductDiscountAmount =
amount from total MRC net price. Totals.MrcListPrice - Totals.MrcNet­
Price

Total Average MRC Product Discount Calculates item total MRC discount per­ Totals.AverageMrcProductDiscountPer­
Percent cent from MRC product discount cent = 100 * Totals.MrcProductDis­
amount. countAmount / Totals.MrcListPrice

Product Type MRC Gross Margin Percent Calculates MRC manufactures gross ProductType.MrcGrossMarginPercent =
margin from product MRC net price. 100 * (ProductType.MrcNetPrice - Pro­
ductType.MrcCost) / Product­
Type.MrcNetPrice

Total MRC Gross Margin Percent Calculates total MRC manufactures Totals.MrcGrossMarginPercent = 100 *
gross margin from MRC net price. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

4.2.3.5.9 MRC Net Price

Calculation Description Formula

Item MRC Discount Amount (from MRC Calculates item MRC discount percent Item.MrcDiscountAmount =
net price) from item MRC net price. Item.MrcListPrice - Item.MrcNetPrice

Item MRC Discount Percent (from MRC Calculates item MRC discount percent Item.MrcDiscountPercent = 100 *
Discount Amount) from item MRC discount amount. Item.MrcDiscountAmount /
Item.MrcListPrice

Item MRC Extended Amount Calculates item MRC extended amount Item.MrcExtendedAmount =
from item MRC net price and quantity. Item.MrcNetPrice * Item.Quantity

Product Type MRC Net Price Calculates MRC extended amount as a ProductType.MrcNetPrice =
sum of all item MRC extended amounts. Sum(Item.MRCExtendedAmount)

Product Type MRC Discount Amount Calculates MRC discount amount from ProductType.MrcDiscountAmount =
MRC net price. ProductType.MrcListPrice - Product­
Type.MrcNetPrice

Product Type MRC Discount Percent Calculates product type MRC discount ProductType.MrcDiscountPercent =
percent from product type MRC dis­ ProductType.MrcDiscountAmount /
count amount. ProductType.MrcListPrice

SAP CPQ Setup and Administration Guide


232 PUBLIC Quotes Administration
Calculation Description Formula

Total MRC Net Price Calculates item total MRC extended Totals.MrcNetPrice =
amount as a sum of all item MRC ex­ Sum(Item.MRCExtendedAmount)
tended amounts.

Total MRC Amount Calculates total MRC amount as a sum Totals.MrcAmount = Totals.MrcNet­
of all item MRC extended amounts. Price

Total MRC Product Discount Amount Calculates item total MRC extended Totals.MrcProductDiscountAmount =
amount from total MRC net price. Totals.MrcListPrice - Totals.MrcNet­
Price

Total Average MRC Product Discount Calculates item total MRC discount per­ Totals.AverageMrcProductDiscountPer­
Percent cent from MRC product discount cent = 100 * Totals.MrcProductDis­
amount. countAmount / Totals.MrcListPrice

Item MRC Gross Margin Percent Calculates item MRC gross margin per­ Item.MrcGrossMarginPercent = 100 *
cent from item MRC extended amount (Item.MrcExtendedAmount -
and item MRC extended cost. Item.MrcExtendedCost) / MrcExtende­
dAmount

Product Type MRC Gross Margin Percent Calculates MRC manufactures gross ProductType.MrcGrossMarginPercent =
margin from product MRC net price. 100 * (ProductType.MrcNetPrice - Pro­
ductType.MrcCost) / Product­
Type.MrcNetPrice

Total MRC Gross Margin Percent Calculates total MRC manufactures Totals.MrcGrossMarginPercent = 100 *
gross margin from MRC net price. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

4.2.3.5.10 NRC Net Price

Calculation Description Formula

Item NRC Discount Amount (from NRC Calculates item NRC discount amount Item.DiscountAmount = Item.ListPrice
net price) from item net price. - Item.NetPrice

Item NRC Discount Percent (from Calculates item NRC discount percent Item.DiscountPercent = 100 * Item.Dis­
Discount Amount) from item discount amount. countAmount / Item.ListPrice

Item NRC Extended Amount Calculates item NRC extended amount Item.ExtendedAmount = Item.NetPrice
from item net price and quantity. * Item.Quantity

Product Type NRC Net Price Calculates NRC net price as a sum of all NetPrice = Sum(Item.ExtendedA­
item extended amounts. mount)

Product Type Discount Amount Calculates NRC discount amount from ProductType.DiscountAmount = Pro­
product type NRC net price. ductType.ListPrice - ProductType.Net­
Price

Product Type NRC Discount Percent Calculates product type NRC discount ProductType.DiscountPercent = 100 *
percent from product type NRC dis­ ProductType.DiscountAmount / Pro­
count amount. ductType.ListPrice

Total NRC Net Price Calculates total NRC extended amount Totals.NetPrice = Sum(Item.Extende­
as a sum of all item extended amounts. dAmount)

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 233
Calculation Description Formula

Total Amount Calculates total amount as a sum of all Totals.Amount = Totals.NetPrice


item MRC extended amounts.

Total Product Discount Amount Calculates item total NRC extended Totals.ProductDiscountAmount = To­
amount from total net price. tals.ListPrice - Totals.NetPrice

Total Average Product Discount Percent Calculates item total NRC discount per­ Totals.AverageProductDiscountPercent
cent from total product discount = 100 * Totals.ProductDiscountA­
amount. mount / Totals.ListPrice

Item Gross Margin Percent Calculates item gross margin percent Item.GrossMarginPercent = 100 *
from item extended amount and item (Item.ExtendedAmount - Item.Exten­
extended cost. dedCost) / Item.ExtendedAmount

Product Type Gross Margin Percent Calculates NRC manufactures gross ProductType.GrossMarginPercent =
margin from product type net price. 100 * (ProductType.NetPrice - Product­
Type.Cost) / ProductType.NetPrice

Total Average Gross Margin Percent Calculates total average gross margin Totals.GrossMarginPercent = 100 * (To­
percent from total net price and total tals.NetPrice - Totals.Cost) / Totals.Net­
cost. Price

4.2.3.5.11 Quantity Calculations

Calculation Description Formula

Item NRC Extended List Price Calculates item NRC extended list price Item.ExtendedListPrice = Item.ListPrice
from item NRC list price and quantity. * Item.Quantity

Item NRC Extended Amount Calculates item NRC extended amount Item.ExtendedAmount = Item.NetPrice
from item net price and quantity. * Item.Quantity

Item NRC Extended Cost Calculates item NRC extended cost Item.ExtendedCost = item.Cost *
from item NRC cost and quantity. item.Quantity

Item NRC Discount Amount (from NRC Calculates item NRC discount amount Item.DiscountAmount = Item.ListPrice
discount percent) from NRC discount percent. NRC dis­ * Item.Quantity * Item.DiscountPer­
count amount also includes item quan­ cent / 100
tity.

Product Type NRC Net Price Calculates NRC net price as a sum of all NetPrice = Sum(Item.ExtendedA­
item extended amounts. mount)

Product Type List Price Calculates NRC extended list price as a ListPrice = Sum(Item.ExtendedList­
sum of all item extended list prices. Price)

Product Type Discount Amount Calculates NRC discount amount from ProductType.DiscountAmount = Pro­
product type NRC net price. ductType.ListPrice - ProductType.Net­
Price

Product Type NRC Discount Percent Calculates product type NRC discount ProductType.DiscountPercent = 100 *
percent from product type NRC dis­ ProductType.DiscountAmount / Pro­
count amount. ductType.ListPrice

Product Type NRC Cost Calculates NRC extended cost as a sum Cost = Sum(Item.ExtendedCost)
of all item NRC extended costs.

SAP CPQ Setup and Administration Guide


234 PUBLIC Quotes Administration
Calculation Description Formula

Product Type Product Model Price Calculates product model price by mul­ ProductType.ProductModelPrice =
tiplying quantity by product model Sum(Item.Quantity * Item.ProductMo­
price. delPrice)

Total NRC List Price Calculates total NRC extended list price Totals.ListPrice = Sum(Item.Extended­
as a sum of all item extended list prices. ListPrice)

Total NRC Net Price Calculates total NRC extended amount Totals.NetPrice = Sum(Item.Extende­
as a sum of all item extended amounts. dAmount)

Total Amount Calculates total amount as a sum of all Totals.Amount = Totals.NetPrice


item MRC extended amounts.

Item MRC Extended List Price Calculates item MRC extended list price Item.MrcExtendedListPrice =
from item MRC list price and quantity. Item.MrcListPrice * Item.Quantity

Item MRC Discount Percent (from MRC Calculates item MRC discount percent Item.MrcDiscountPercent = 100 - 100 *
Extended Amount) from item MRC extended amount. Item.MrcExtendedAmount /
Item.MrcListPrice * Item.Quantity

Item MRC Extended Cost Calculates item MRC extended cost Item.MrcExtendedCost = Item.MrcCost
from item MRC cost and quantity. * Item.Quantity

Product Type MRC Net Price Calculates MRC extended amount as a ProductType.MrcNetPrice =
sum of all item MRC extended amounts. Sum(Item.MRCExtendedAmount)

Product Type MRC List Price Calculates product type MRC list price ProductType.MrcListPrice =
as a sum of all item MRC extended list Sum(Item.MRCExtendedListPrice)
prices.

Product Type MRC Discount Amount Calculates MRC discount amount from ProductType.MrcDiscountAmount =
MRC net price. ProductType.MrcListPrice - Product­
Type.MrcNetPrice

Product Type MRC Discount Percent Calculates product type MRC discount ProductType.MrcDiscountPercent =
percent from product type MRC dis­ ProductType.MrcDiscountAmount /
count amount. ProductType.MrcListPrice

Product Type MRC Cost Calculates MRC extended cost as a ProductType.MrcCost =


sum of all item MRC extended costs. Sum(Item.MRCExtendedCost)

Total MRC List Price Calculates item total MRC extended list Totals.MrcListPrice =
price as a sum of all item MRC ex­ Sum(Item.MRCExtendedListPrice)
tended list prices.

Total MRC Net Price Calculates item total MRC extended Totals.MrcNetPrice =
amount as a sum of all item MRC ex­ Sum(Item.MRCExtendedAmount)
tended amounts.

Total MRC Amount Calculates total MRC amount as a sum Totals.MrcAmount = Totals.MrcNet­
of all item MRC extended amounts. Price

Total Product Discount Amount Calculates item total NRC extended Totals.ProductDiscountAmount = To­
amount from total net price. tals.ListPrice - Totals.NetPrice

Total Average Product Discount Percent Calculates item total NRC discount per­ Totals.AverageProductDiscountPercent
cent from total product discount = 100 * Totals.ProductDiscountA­
amount. mount / Totals.ListPrice

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 235
Calculation Description Formula

Total MRC Product Discount Amount Calculates item total MRC extended Totals.MrcProductDiscountAmount =
amount from total MRC net price. Totals.MrcListPrice - Totals.MrcNet­
Price

Total Average MRC Product Discount Calculates item total MRC discount per­ Totals.AverageMrcProductDiscountPer­
Percent cent from MRC product discount cent = 100 * Totals.MrcProductDis­
amount. countAmount / Totals.MrcListPrice

Total Cost Calculates item total NRC extended Totals.Cost = Sum(Item.ExtendedCost)


cost as a sum of all item extended
costs.

Total MRC Cost Calculates total MRC extended cost as Totals.MrcCost = Sum(Item.MRCExten­
a sum of all item MRC extended costs. dedCost)

Item MRC Gross Margin Percent Calculates item MRC gross margin per­ Item.MrcGrossMarginPercent = 100 *
cent from item MRC extended amount (Item.MrcExtendedAmount -
and item MRC extended cost. Item.MrcExtendedCost) / MrcExtende­
dAmount

Item NRC Gross Margin Percent Calculates item NRC gross margin per­ Item.GrossMarginPercent = 100 *
cent from item NRC extended amount (Item.ExtendedAmount - Item.Exten­
and item NRC extended cost. dedCost) / Item.ExtendedAmount

Total Product Model Price Calculates total NRC product model Totals.ProductModelPrice =
price from item product model price Sum(Item.Quantity * Item.ProductMo­
and quantity. delPrice)

Product Type Gross Margin Percent Calculates NRC manufactures gross ProductType.GrossMarginPercent =
margin from product type net price. 100 * (ProductType.NetPrice - Product­
Type.Cost) / ProductType.NetPrice

Total Average Gross Margin Percent Calculates total average gross margin Totals.GrossMarginPercent = 100 * (To­
percent from total net price and total tals.NetPrice - Totals.Cost) / Totals.Net­
cost. Price

Product Type MRC Gross Margin Percent Calculates MRC manufactures gross ProductType.MrcGrossMarginPercent =
margin from product MRC net price. 100 * (ProductType.MrcNetPrice - Pro­
ductType.MrcCost) / Product­
Type.MrcNetPrice

Total Average MRC Gross Margin Calculates total MRC manufactures Totals.MrcGrossMarginPercent = 100 *
Percent gross margin from MRC net price. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

SAP CPQ Setup and Administration Guide


236 PUBLIC Quotes Administration
4.2.3.6 Rolled up and Reverse Calculations

When handling calculations in Quote 2.0, users can use standard, rolled up and reverse calculations. Unlike
Quote 1.0, Quote 2.0 allows you to handle reverse rolled up calculations.

Rolled up Calculations

The following settings must be performed in the Setup so that the rolled up columns display on quotes for a
user type:

● to have the permission to manage rolled up columns enabled in Quotes Quote Layout Permissions .
Rolled up columns should be moved from available to selected in the Visible Columns section.
● to move the rolled up columns from available to selected in UI Design Quote Layout.
● to have all the columns in one list, either in the list of available or the list of selected columns.

To calculate a rolled up amount of a quote field, add the respective rolled up calculation to the end of the list of
calculations that are executed when the value of that field is changed. The rolled up calculations should also be
added in the list of calculations in Item Add/Update Calculations that are triggered when an item is added to a
quote.

The default rolled up calculations are in the system and they are named accordingly (e.g. Rolled Up Extended
Amount, etc.).

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 237
Reverse Rolled up Calculations

Reverse rolled up calculations are available only in Quote 2.0. This calculation type lets you change the rolled up
amount so that the system would calculate the respective amount for each item.

For example, if you change the rolled up extended amount of a main item, the system will calculate the rolled up
amount of each item and consequently the extended amount of each item.

When a rolled up amount is changed, the discount percent will first change accordingly. From there on, other
calculations will be executed to calculate the amount of each item. In the calculation setup, only the discount
percent calculations are set up by default. Administrators should add subsequent calculations based on their
model of SAP CPQ.

 Note

You can set up the calculation order for rolled up fields only for main items. Therefore, line item rolled up
fields should not be editable on quotes.

Reverse Calculations

Reverse calculations in Quote 2.0 let you change the amount in Product Types and Total fields so that the value
in the respective item fields changes accordingly (the discount percent is first changed and then other fields
set up for the calculation).

SAP CPQ Setup and Administration Guide


238 PUBLIC Quotes Administration
4.2.3.7 Calculations for SAP Subscription Billing
Integration

When integration with SAP Subscription Billing is enabled, the SubscriptionItem section displays in Fields and
Calculations. This section contains only standard quote fields available on quotes when the two applications
are integrated. Subscription products don’t support quote item custom fields.

Quotes with subscription products contain standard quote fields and the standard fields available only for
subscription products. Calculations for the SAP Subscription Billing integration should be managed and set up
in the same way as other calculations in Quote Fields and Calculations [page 213].

These are the standard quote fields and calculations introduced specifically for subscription products:

Quote Field Calculation Description Formula

Contract End Date Subscription Billing - Calcu­ Calculates end dates from Contract End Date = Start
late End Dates from Start the start date and the con­ Date + Contract Length
Date and Months tract duration. This calcula­ (months)
tion is by default present on
the fields Start Date, Item
Effective Date, Contract
Length, and Minimum Term.

One-Time Charge Discount Subscription Billing - Calcu­ Calculates item NRC net ItemNRCNetPrice =
late Item NRC Net Price from price from one-time charge. SUM(OneTimeChargeList­
One-Time Charge Price - OneTimeChargeList­
Price* OneTimeChargeDis­
countPercent/100)

Recurring Charge Discount Subscription Billing - Calcu­ Calculates item MRC net ItemMRCNetPrice =
late Item MRC Net Price from price from recurring charge. SUM(RecurringChargeList­
Recurring Charge Price - RecurringChargeList­
Price*RecurringChargeDis­
countPercent/100)

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 239
Quote Field Calculation Description Formula

NRC Discount Percent and Subscription Billing - Calcu­ Calculates one-time charge affectedChargesTotalList-
any fields affecting the dis­ late One-Time Charge from from item NRC discount per­
Price = SUM(OneTimeChar­
count percent via calcula­ Item NRC Discount Percent cent.
geWithDiscountListPrice) -
tions
sum of one-time charge list
prices that could be dis­
counted. If affectedCharges-
TotalListPrice is equal to
zero, an error message dis­
plays, stating that all one-
time charges have fixed pri­
ces and couldn’t be dis­
counted.

averageChargeDiscount =
item.ListPrice * item.Dis­
countPercent / affected-
ChargesTotalListPrice - Apply
averageChargeDiscount to all
one-time charges that can be
discounted.

MRC Discount Percent Subscription Billing - Calcu­ Calculates recurring charge affectedChargesTotalMr-
late Recurring Charge from from item MRC discount per­
cListPrice = SUM(Recurring­
Item MRC Discount Percent cent.
ChargeWithDiscountList­
Price) - sum of recurring
charge list prices that could
be discounted. If affected-
ChargesTotalMrcListPrice is
equal to zero, an error mes­
sage displays, stating that all
recurring charges have fixed
prices and couldn’t be dis­
counted.

averageChargeDiscount =
item.MrcListPrice *
item.MrcDiscountPercent /
affectedChargesTotalMr-
cListPrice - Apply average­
ChargeDiscount to all recur­
ring charges that can be dis­
counted.

In Quote Fields and Calculations, calculations for those SubscriptionItem fields that contain them should be set
in the following order:

SAP CPQ Setup and Administration Guide


240 PUBLIC Quotes Administration
Field Order of Calculations

Start Date Subscription Billing - Calculate end date from start date and
months

Item Effective Date Subscription Billing - Calculate end date from start date and
months

Contract Length Subscription Billing - Calculate end date from start date and
months

Minimum Term Subscription Billing - Calculate end date from start date and
months

One-Time Charge Discount Subscription Billing - Calculate item NRC net price from one-
time charge

Item NRC Discount Amount (from NRC Net Price)

Item NRC Discount Percent (from NRC Net Price)

Item NRC Extended Amount

Total NRC Net Price

Total Amount

Product Type NRC Discount Percent

Product Type NRC Discount Amount

Recurring Charge Discount Subscription Billing - Calculate item MRC net price from re­
curring charge

Item MRC Discount Amount (from MRC Net Price)

Item MRC Discount Percent (from MRC Net Price)

Item MRC Extended Amount

Total MRC Net Price

Total MRC Amount

Related Information

Managing Calculations [page 212]


Order of Calculations when Changing Quote Field Values [page 224]
Quote 2.0 [page 208]
SAP Subscription Billing Integration

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 241
4.2.4 Solution Design

The Solution Design feature enables users to organize items into sections and subsections in a separate tab on
quotes.

The Solution Design tab is just another view of the items that are already in the quote (if there are same items
in the new tab and the Quotation tab, they aren’t treated as duplicates but as the same and all changes made
on an item in either one of the tabs are applied to the same item in the another tab).

Also, the calculations are upgraded to cover sections as well - currently, section calculations are available only
for quote item custom fields.

This feature is available only in the Quote 2.0 engine.

Example

John is a sales lead in a furniture manufacturing company. The company applied to a call for tender for
furnishing a new business complex in Stockholm. The tender proposal contains more than 1000 items (chairs,
desks, coat hangers, and so on) that are distributed into 3 buildings, each with 11 floors and dozens of offices.
The tender documentation contains a tender proposal form in Excel with sections for each building and
subsections for floors and offices, respectively.

John uploads the Excel form in the Solution Design tab in SAP CPQ and the system creates sections in the
hierarchy indicated in the file. Afterwards, John indicates which sections and subsections can contain products
and inserts items either directly within the sections or from the quote.

Once the solution has been completed, John downloads it in an Excel file and submit it for the tender call
respecting the required form.

Managing Section [page 242]

Section Calculations [page 246]

Add and Allocate Products to Sections [page 248]


You can either add products to sections from the Solution Design tab or allocate items from the
Quotation tab.

Section Distribution [page 249]


A quote section can be distributed into other sections in the Solution Design tab.

Section Totals [page 253]


The sections grid in Solution Design contains a row for displaying the total value of each quote item
custom field whose type is currency and number. The row is added automatically to the grid, after you
create at least one section.

4.2.4.1 Managing Section

To enable users to create sections, you must first create a dedicated tab on quotes. Go to Setup General
Application Parameters Shopping Cart and Quotes and set the parameter Enable Solution Design to TRUE.

SAP CPQ Setup and Administration Guide


242 PUBLIC Quotes Administration
A new tab, Solution Design, is automatically displayed on quotes. Alternatively, you can create the tab manually,
using the implementation file (this file isn’t available by default. Contact the SAP CPQ Support team to enable
this for your tenant.)

You can create sections either in Excel or using the in-built tool Section Builder. For both workflows, you need to
have the Quote 2.0 engine enabled on your tenant and have the Solution Design tab created.

Create Sections Using Excel [page 243]


The ability to import sections through Excel allows users to handle multiple sections easily, with
minimal manual effort. This feature can be useful for handling tender documentation, when there’s a
predefined set of sections in an Excel file that you aren’t allowed to change. In that case, you can upload
the Excel with sections, populate them with products, handle the calculation and consequently
download the Excel with values for each section.

Create Sections using Section Builder [page 245]


The Section Builder is an SAP CPQ tool for manually creating sections.

Edit and Filter Sections [page 245]

4.2.4.1.1 Create Sections Using Excel

The ability to import sections through Excel allows users to handle multiple sections easily, with minimal
manual effort. This feature can be useful for handling tender documentation, when there’s a predefined set of
sections in an Excel file that you aren’t allowed to change. In that case, you can upload the Excel with sections,
populate them with products, handle the calculation and consequently download the Excel with values for each
section.

Procedure

1. In the Solution Design tab on the quote, click Excel Template.

An Excel file is downloaded.

The file name contains the quote number. All cells are formatted as Text and the local formatting of Excel
files isn’t automatically applied.
2. Populate the file with this data:
○ Hierarchy - the ordered number of sections and subsections
○ Section Name - names of sections and subsections
○ Can contain products (Yes/No) - populate with either 1, Yes or True each section to which you wish to
add products.
If there are quote item custom fields for which users have the editing rights, they also have a dedicated
column in the Excel and you can populate them with values.
○ Can be distributed (Yes/No) - populate with either 1, Yes or True each section that you wish to
distribute.
○ Solution Team - populate with the name of the Involved Parties team to which the section should be
assigned. If the team doesn't already exist in the system, it’s created automatically [page 258]. You can
add multiple teams if they’re separated by a comma. Also, each team must have a unique name.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 243
3. Click Excel Upload and select the populated template.

A grid displays in the tab.

Sections and subsections are created following the hierarchy in the template.

SAP CPQ Setup and Administration Guide


244 PUBLIC Quotes Administration
4.2.4.1.2 Create Sections using Section Builder

The Section Builder is an SAP CPQ tool for manually creating sections.

Procedure

1. In the Solution Design tab on the quote, click Section Builder.

An empty grid displays.


2. Click Add.
3. Enter the label of the new section in the empty field.
4. Click Save.
5. (Optional) Add as many sections as needed.

There are additional settings for each section:

○ - move a section to another section


○ - add a subsection under the respective section
○ - edit the section name
○ - delete the section and all children subsections. The products in the deleted sections aren’t deleted
from the quote.
○ Can contain products - select next to each section to which you want to enable adding products.
○ Can be distributed - select next to a section that you want to distribute to other sections.
○ Assigned to - click on the assign button and select the solution teams that have the rights to manage
the section. This option is available only when there is at least one solution team in the Involved Parties
tab.
6. Click Save.

Sections are created.

4.2.4.1.3 Edit and Filter Sections

To edit the existing sections and add new ones, click above the sections grid. To download sections in an
Excel file, click . The downloaded file contains the sections’ hierarchy, sections’ names and the quote item
custom columns.

The button allows users to update a single quote item custom field throughout multiple sections at once. The
update can be applied to all field types, but only one field can be updated at a time. After a field value is
updated, all calculations defined for that field are triggered as when changing the value manually.

 Note

The button for bulk update is enabled when there is at least one editable column in sections and after a
user has selected the sections in which the field is updated.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 245
Filter Sections

Sections can be filtered by name (only the exact match returns results) and by the value of quote item custom
fields that administrators have marked for filtering (Use column value to filter quote items is selected on the
field in Setup). Also, users have the following options for filtering sections:

● Show only my sections - displays only the sections assigned to the team the user belongs to.
● Show Sections
○ Regular - displays the sections that aren’t distributed to other sections, and which weren’t created
through distribution.
○ Distributed - displays the subsections that were created when a section was distributed to other
sections.
○ Distribution - displays the sections that can be distributed.
When all three options are either selected or deselected, all results are displayed.
● Hide product items - doesn’t display products in the filtered sections.
● Only sections with items - displays only sections that contain product items.

The logic between filter options is AND. After a filter is applied, only the sections that match the entered criteria
and their pertaining products are displayed. The applied filter is saved locally in the browser for a user and
quote. If that user opens the quote in another browser or reassigns the quote, the filter won’t be applied. Also,
different users on the same quote can apply different filters. The applied filters display in pills above sections in
the Solution Design tab and users can easily remove them, which refreshes the display of sections. Excel
download is available while filters are applied and, in that case, only the filtered sections are downloaded.

4.2.4.2 Section Calculations

Standard quote fields aren’t displayed in the Solution Design tab, but administrators can add quote item
custom fields and manage calculations for them. The prerequisite is to make the field visible on quotes in
Quote Layout Permissions and Quote Layout [page 310] pages.

Create Section Calculation

1. Access Quote Fields and Calculations Fields and Calculations


2. Click Add New Field.
3. Fill out the fields [page 213]
4. Click Save.
The field is added to each group of fields (MainItemLineItem, ProductType, u, CartTotal and Sections).
5. In Sections, select the field you created.
Additional settings display on the right.
6. In Aggregate Type,, select the calculation that is performed on all items in sections.
The aggregate types are fixed in the system:
○ Sun - the sum of all items
○ Count - the total number of items

SAP CPQ Setup and Administration Guide


246 PUBLIC Quotes Administration
○ Avg - the average value of all items
○ Min - the minimum value of all fields
○ Max - the maximum value of all fields
The system applies the aggregate function to all items in the section and subsections, calculates the
amount and displays the results in the section field.
7. Save the changes.
A section calculation is automatically created and it’s available in the list of all calculations.

 Note

Reverse calculations aren’t enabled for sections. Consequently, a quote item custom field in a section can
either be made editable or you can select an aggregate type for it.

Trigger Section Calculations

The following procedure describes how to add a section calculation to the list of calculations that are triggered
every time an item is added and updated in the quote.

1. In Fields and Calculations, click Item Add/Update Calculations.


A list of calculations that are triggered whenever an item in the quote is added or updated displays on the
right.
2. Click Add calculation.

3. Click next to the new calculation.


All section calculations have Section after their label.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 247
4. Close the window and save the changes.
The calculation is added.
5. In the Editing tab, make the quote item custom field editable in MainItem, LineItem, ProductType, and
CartTotal.
The calculation is set up.
After you change the value in the quote item custom field for an item on the quote, the system reapplies
the aggregate type to the new values, triggers the calculations, and displays a new value in the section row
in Solution Design.

On the user side, calculations are triggered every time users click outside the field they’ve edited. It isn’t
necessary to press the Enter button to run the calculations.

Custom Section Calculations

The following example shows you how to create a custom calculation that calculates a discounted value of a
quote item custom field in a section.

1. Create three quote item custom fields [page 213]:


○ Sum - aggregate type Sum
○ Discount_Percent - type Number
○ Discount_Value - type Number
2. Add a custom calculation to the Discount_Percent field.

x = context.AffectedSection
x[“Discount_Value”] = x[“Sum”] * x[“Discount_Percent”] / 100;

3. Save the changes and open the Solution Design tab in a quote.
The Sum column is populated with values for each item and a summed up value displays in the section
field. If you change the percent in the Discount_Percent field, and refresh the section, the Discount_Value
field is populated with the new discounted values.

Related Information

Fields and Calculations [page 213]


Managing Section [page 242]
Section Distribution [page 249]
Section Totals [page 253]

4.2.4.3 Add and Allocate Products to Sections

You can either add products to sections from the Solution Design tab or allocate items from the Quotation tab.

The following procedure describes adding products within a section:

SAP CPQ Setup and Administration Guide


248 PUBLIC Quotes Administration
1. Click next to a section.
A search field displays.
2. Enter the name of the product.
3. Click Configure or Add next to the product in the list.
The options vary depending on whether the product is simple or configurable.
The product is either automatically added to the section or you’re redirected to the configurator to first
configure it.

4. Alternatively, click to browse the product catalog for a product.


The product is added to both the section and the quote.

Next to each item on quotes, there’s the icon for allocating items. After clicking on the icon, you can find the
section to which you want to allocate the item. Once an item is allocated, the icon is grayed out, but you can
always click on it again and change the section.

Products in sections have the icon displayed next to them. Clicking the icon opens a dropdown list with
actions that users can perform on a product:

● make a copy of the product in the same section and also on the quote
● delete the product from the section and from the quote
● edit the product so that the changes are applied in both the section and on the quote - if you’re editing line
items, they are automatically removed from the section. You need to go back to the quote and allocate
them to the section again.
● refresh the product so that all settings from the quote are applied on that product in the section -
recommended when handling calculations in the Quotation tab.
● move the product to a different section
● remove the product from the section

4.2.4.4 Section Distribution


A quote section can be distributed into other sections in the Solution Design tab.

When the distribution is initiated, a new distributed section is created in each section to which the source is
being distributed. The value of the distributed section is split between the target sections as indicated in the
distribution method [page 249].

To be able to distribute a section to other sections, you first need to enable the distribution for it either in the

Section Builder or the excel file when creating/editing a section [page 242]. Consequently, the button
displays in the Solution Design tab, next to the section that can be distributed.

Distribution Methods [page 249]

Distribute a Section [page 252]

4.2.4.4.1 Distribution Methods


A distribution method defines how the values from the source section are distributed to target sections. You
can either create a custom calculation in Setup Quotes Quote Fields and Calculations Distribution

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 249
Calculations or manually enter the percentages. There’s also the Split Evenly action that distributes the
section evenly to the target sections. When applying a custom distribution method, every time you make a

change (for example, change the price of an item), you should click and the values are redistributed
according to the distribution method. The Redistribute action is above the section grid, next to other section
actions.

Example

The following calculation method is selected for distributing a section when users want to keep the same ratio
in the sections that are distributed as between target sections.

itemsToBeDistributed = context.Quote.GetSectionItems(context.Source)
sumOfItems = 0
for item in itemsToBeDistributed:
sumOfItems += item["Wholesale_Price"]
targetSum = 0
for target in context.Targets:
targetSum += context.Quote.GetParentSection(target)["Wholesale_Price"]
for target in context.Targets:
target.DistributionPercent = context.Quote.GetParentSection(target)
["Wholesale_Price"] / targetSum *100
for target in context.Targets:
for section in context.Quote.GetSectionAndHisAncestors(target.SectionPath):
section["Wholesale_Price"] += sumOfItems * target.DistributionPercent /
100
context.Source["Wholesale_Price"]-=target["Wholesale_Price"]

SAP CPQ Setup and Administration Guide


250 PUBLIC Quotes Administration
Before Distribution

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 251
After Distribution

4.2.4.4.2 Distribute a Section

Prerequisites

To have a distribution method created in Setup Quotes Quote Fields and Calculations .

Context

Only a section that has a calculation of the aggregate type Sum can be distributed. Sections with other
aggregates types can’t be distributed. The Retract action removes the distributed sections from the target
sections.

SAP CPQ Setup and Administration Guide


252 PUBLIC Quotes Administration
Procedure

1. Click next to a section.

The Distribution Section modal pops up, displaying these fields:


○ Select section to distribute - the field is grayed out and it displays the name of the field that is being
distributed. If multiple sections are selected, you should select in this field one section at a time and
manage other fields in the pop-up.
○ Distribution Method - list of custom distribution calculations. Additionally, the Manual method is the
default value. If this method is selected, you’ll be able to set up the percentages according to which the
value of the source section is distributed to target sections.
2. Click next to Distribute to.
3. Click the empty field and the available target sections are displayed (all the sections that aren’t enabled for
distribution).
4. Select one section.
5. Repeat the previous steps to add other target sections.
6. Click Split Evenly.

New subsections are added to target sections, one level below the target sections.

The value of the source section is evenly split between the target sections.

You can change the percentage manually and remove the target section by clicking .

4.2.4.5 Section Totals

The sections grid in Solution Design contains a row for displaying the total value of each quote item custom
field whose type is currency and number. The row is added automatically to the grid, after you create at least
one section.

Enable Section Totals

You can select one of the predefined calculations or create a custom calculation for calculating the section
totals.

Prerequisite: to have the sections set up in Solution Design [page 242].

1. Go to Quotes Quote Fields and Calculations .


2. Under the tab,Field and Calculations expand Sections.
3. Select a quote item custom field.
4. In Total Calculation Type, select one of the predefined types:
○ None – selected by default. No calculations are applied if this option is selected and - - displays in the
empty cell in the quote.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 253
○ Sum - the values of all parent sections are summarized.
○ Average – the average value of all parent sections is calculated and displayed in quote.
○ Custom – enables creating a custom calculation for calculating all quote item custom fields. The script
can be created in the Custom Total Calculation pop-up under Section Fields.
5. Click Save.

Custom Total Calculations

If you need a calculation more complex than the standard calculations Sum and Average, you can write a script
for calculating the section totals in Custom Total Calculation under Section Fields.

 Note

There can only be one script that calculates custom total calculations for all fields (you can’t create a
separate script for each field).

Custom calculations are triggered after standard section total calculations, so if you write a new calculation
formula for a field for which you’ve already selected a standard calculation (SUM or AVERAGE), the custom
calculation will override it.

In the History tab in Custom Total Calculation, you can view all the versions of scripts created up to that
moment. If needed, you can also compare the scripts.

 Tip

The methods available for managing section totals via scripting are described in the Scripting Help .

4.2.5 Scripting for Quote 2.0

Scripting for Quote 2.0 is different from the scripting for Quote 1.0.

This page lists some of the key features in Quote 2.0 scripting.

 Note

Methods and properties for Quote 2.0 are listed in the Scripting documentation

The global scripting scope is created for Quote 2.0 with these variables:

● User
● WebServiceHelper
● Session
● FederationUtility
● ScriptExecutor
● LogTrace
● SqlHelper

SAP CPQ Setup and Administration Guide


254 PUBLIC Quotes Administration
● XmlHelper
● RestClient
● UserPersonalizationHelper
● FileHelper
● Translation
● Assert

This scope is independent from Quote 1.0. Global scope is accessible without a prefix. For example,
User.FirstName / Trace.Write('test').

Event scopes should have a context prefix and contain variables that are specific for appropriate scopes. For
example, context.Quote.DateModified

Quote variable is removed from configurator events (you can’t call quote context from the configurator). To
read quote data from the configurator, you should use CTX tags. Additionally, you can’t write data in the quote
from the configurator. You can retrieve the quote comment via context.Quote.Comment, but you can’t insert
the comment using context.Quote.Comment = ‘Test Comment’.

 Note

Quote.AffectedItems fetches all items that the user changed on quote. For example, if the user changes
the discount for three out of 10 items on the quote, Quote.AffectedItems fetches those three items.

Unsupported Variables

The following variables aren’t currently supported for the Quote 2.0 scripting:

Scope Variables

Badgeville Badgeville

BadgevilleApi

BadgevillePlayerApi

CRM MSCrmServiceContext

MSCrmService

MSCRMOpportunityId

MSCRMUserId

SalesforceProxy

SFEnvironment

NsEnvironment

Some variables that were in the global scope in Quote 1.0 are moved to event-specific scopes in Quote 2.0:

● Quote
● TagParserProduct
● Product

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 255
● TagParserQuote
● CustomerHelp
● SAP
● TechnicalDocumentation

TABLE Tag and SqlHelper

You should avoid fetching any Quote 2.0 data directly from the database since the quote object may have
different states while processing the user action. For example, fetching the number of items in the quote while
adding a single item to the quote:

clr.AddReference('System.Core')
import System
clr.ImportExtensions(System.Linq)
result = SqlHelper.GetFirst ('select count(*) as Count from sys_QuoteItem where
QuoteId = {}'.format(context.Quote.Id))
Trace.Write(result.Count) # 0 since quote has not been saved yet
Trace.Write(context.Quote.GetAllItems().Count()) # 1 since there is one item in
memory that will be saved at the end of the processing pipeline.

Scripting Examples

In Quote Fields and Calculations you can create basic scripts that are triggered either after a value in a quote
field is changed, after an item is added to a quote or when an item is updated.

● The following custom calculation sets the default discount to 10% when items are added/updated:

for item in context.AffectedItems:


item.Discount = 10

● This script updates the quantity of the maintenance item so it matches the total number of items in the
quote. This calculation should be triggered before extended list price is calculated.

maintenance = context.Quote.GetItemByItemNumber(1)
for item in context.AffectedItems:
maintenance.Quantity += 1
#add maintenance item to affected items so that the rest of the
calculations run for this item as well
context.AffectedItems.AddItem(maintenance)

If you want to default the item discount based on the DiscountLevel attribute value in Quote 1.0, you should
write:

sender.DiscountPercent = GetDiscountForLevel(Product.AttrVal('DiscountLevel'))

In Quote 2.0, you can write:

for item in context.Items:


item.DiscountPercent =
GetDiscountForLevel(context.Product.AttrVal('DiscountLevel'))

SAP CPQ Setup and Administration Guide


256 PUBLIC Quotes Administration
4.2.6 Involved Parties (Quote Teams)

Grouping users into teams enables parallel work on one quote and allows quote owners to assign quote
sections to different teams.

Quote owners create administrator teams that manage sections and assign users to solution teams. Each
solution team has access only to the sections assigned to it. Consequently, multiple teams can work on the
same quote and on different sections at the same time, without altering each other's work.

The hierarchy of involved parties on quotes, based on their rights, is as follows:

● Quote Owner - the default involved party with maximum rights. Only quote owners can create
administrator teams and they can also create solution teams.
● Administrator Team - unlike the solution team users, administrator team users can create, edit, and delete
sections. Administrator teams create solution teams, add users to teams, and assign teams to sections.
There can only be one administrator team per quote.
● Solution Team - a group of users that can be assigned to a section. Only members of a team assigned to a
section have access rights to it. Users in the team assigned to a parent section don’t have access to its
subsections. The users in this team can’t add any new teams, nor can they edit the existing ones. They can
only view the grid with the existing teams.

Quote teams can be managed in the Involved Parties tab. You can create and manage tabs as any other tab in
SAP CPQ [page 313], however, you should use the /quotation/InvolvedParties implementation file. By default,
this tab is visible to all permission groups in all quote statuses.

Assign Section to Team [page 257]


You can assign sections to teams in the Solution Design tab.

Create Teams [page 258]


Users can create teams either through the Excel template for creating sections (Solution Design tab),
or in the Involved Parties tab.

4.2.6.1 Assign Section to Team

You can assign sections to teams in the Solution Design tab.

Here are some facts and limitations that you should keep in mind when assigning sections:

● by default, sections aren’t assigned to any teams.


● a section can be assigned to one or multiple teams.
● a section can have multiple teams assigned to it.
● if a section isn’t assigned to any team, all users can manage it.
● a quote owner must be a member of a solution team to be able to edit and distribute a section.
● the mass assign button is visible only when multiple sections are selected.
● team members have access only to the section assigned to them, not to the section's pertaining
subsections.
● if a user upgrades products to a new version, all products that have a new version is upgraded, regardless
of their sections and whether the user has access to those sections.
● when copying quotes, all teams in the Involved Parties tab and their assignments are copied.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 257
4.2.6.2 Create Teams

Users can create teams either through the Excel template for creating sections (Solution Design tab), or in the
Involved Parties tab.

Teams that are created through the Excel template for creating sections [page 243] are without members, and
the assigned user shoud add other members to the team following the procedure below.

By default, the tab contains a grid with the quote owner's name and the role. The following procedure describes
the steps for creating an administrator team, but they apply to creating a solution team as well.

1. Click Add.
The Add Involved Party modal displays.
Party Role is automatically populated with Administrator Team.
2. Define the name of the team.
3. Find users for the team in the Team Users search field.
Enter the name or the email of the user and the system offers matching results.
Inactive and blocked users aren’t available to be added to a team. Also, users can add only the users
pertaining to the same company to a team.
4. Click Add.
The team details display in the Involved Parties grid.
You can edit them by clicking on the team name. Also, you can delete a team and view the team members
by clicking and , respectively.
After teams are created, you can assign quote sections to them [page 257].

 Note

If a user is a member of a team on a quote, that quote displays in the My Quotes tab.

4.3 Quote Tables

SAP CPQ supports tabular structure for displaying dynamic data on Quotes. Quote Tables can be a useful
resource for displaying Customer purchase history, capturing payment details, etc.

Example

You can create a Quote Table for your users to keep a record of the payment schedule in a milestone-based
quote payment. The screenshot below shows a possible table design in such a scenario.

SAP CPQ Setup and Administration Guide


258 PUBLIC Quotes Administration
The Total Milestones is a quote-level custom field for inputting the number of milestones for the payment of the
quote total amount. Clicking Populate Milestones triggers a script that adds a row for each milestone and
divides the total amount into equal installments. The date of each milestone is calculated with a month of
difference, starting from the date in Payment Start Date. Any comments and notes users might have, can be
added in the Milestone column.

If users change an allocated amount, the unallocated amount is automatically recalculated. The unallocated
amount equals to $200 in the example as the amount of the first milestone is decreased by $200. The action is
triggered by the On Cell Changed script defined in Setup:

total= 0.0
cf_TotalUnassigned=Quote.GetCustomField(“Quote Total Unassigned”)
tbl=Quote.QuoteTables[“Payment_Schedule”]
for row in tbl.Rows:
total+=row[“Amount”]
cf_TotalUnassigned.Content = “$ ” + str(Quote.Total.TotalAmountInMarket - total)

The script subtracts the total amount in all rows from the total quote amount to display the unallocated
amount.

Create Quote Table [page 260]


Tables on quotes are quote-related and can’t be created for each product item. The data in the table
can either be retrieved automatically from other systems and SAP CPQ or users can input/select
entries for each cell. Note that quote tables are available only in the responsive version of SAP CPQ UI.

Quote Table Columns [page 262]


Table data is organized in columns. Multiple columns with the same denominators can be visually
represented to users as a group.

Manage Quote Table Column Groups [page 265]


Columns in quote tables can be organized in groups visually represented by common group headers.
Groups allow you to organize columns in logical units, so your users have a neat overview of the data.

Quote Table Actions [page 267]


Standard and custom quote table actions allow users to manage rows and cells in Quote Tables.

Import via Excel [page 269]


Users can import data into quote tables by importing Excel files on both quote engines.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 259
Quote Table Translation [page 271]
The Translations tab allows you to translate the Quote label, column and action labels and validation
messages.

4.3.1 Create Quote Table

Tables on quotes are quote-related and can’t be created for each product item. The data in the table can either
be retrieved automatically from other systems and SAP CPQ or users can input/select entries for each cell.
Note that quote tables are available only in the responsive version of SAP CPQ UI.

 Note

The maximum number of rows in a quote table is 3000.

Once created in the Setup, a quote table is visible on all quotes in the tab selected during creation. All quote
tabs, except Documents, can host one or more tables, but a quote table can be located only within one tab.
Table content isn’t shared between tables.

1. In Setup, access Quotes Quote Tables .


2. Click Add New and a page with four tabs displays.
3. Fill out the fields in Define Table:
○ Table Label(required) - the label in the default system language that displays above the table on quotes.
○ Table Name - populates automatically with the table label, but all special characters and spaces are
replaced with an underscore. The field is editable until the table is saved. You use the table name when
referencing the table in scripts and document templates and translate it to nondefault languages in the
Translations section.
○ Quote Tab to show this table on - the list of quote tabs for placing the table.
○ Table Rank - controls the position of the table on the quote. Quote tables share ranks with quote
custom fields (for example, a quote custom field with a rank of 10 is placed before a quote table with a
rank of 20 on a quote).
4. Select Allow Search on Columns to allow users to search quote columns.
5. Define permissions:
○ In the Permissions section, click Add Permission.
○ In the pop-up, select statuses and permission groups to limit visibility.
To make the table visible to all statuses and groups, opt for Select All Statuses and Select All
Permission Groups, respectively. Note that quote tables are visible in all quote statuses by default and
to all permission groups when no selection is made in the Permissions pop-up.
○ Click Add.
The permission details display in the Permissions section and can be edited/deleted at any time. When
multiple permissions are defined, the logic applied between them is OR. You can override the
permissions via Iron Python scripts.
6. Click Save.
Note that you need to save data in Define Table to be able to move to other tabs. The table is now created
and it’s shown on all quotes in the system.

SAP CPQ Setup and Administration Guide


260 PUBLIC Quotes Administration
Search on Quote Tables: Hint for Your Users

Different column types require different input in the search fields so correct results are displayed:

● Attribute and Boolean columns - the search terms render in a dropdown list or with checkboxes so users
can select one.
● Date columns - users can either find a date in the on-demand calendar or input it manually.
● Other column types - the search term needs to be keyed in. The character limit for cells in string type
columns is 2000 characters per cell.

 Note

The numeric, decimal, and money columns accept < and > characters to be used for “lower than” and
“greater than” operations. In textual search fields, if a user enters one or two letters, the rows containing
the item that starts with these letters are filtered. If more than 2 letters are entered, the system shows the
items that contain the two letters, not necessarily begin with them.

After entering or selecting from a dropdown menu a search term for one column, only the rows consistent
with the search remain in the table. Those rows are filtered further on when a new search term is applied in
another column.

Using Quote Table Content in Output Documents

The content of quote tables can be included in documents generated in SAP CPQ. To retrieve the content, use
the following tags:

● «QUOTE_TABLE(TableNameHere)»
● «QUOTE_TABLE_HEADER» (Enter column definitions or what you want to display on header for the table).
● «QUOTE_TABLE_HEADER_END»
● «QUOTE_TABLE_ROW»
● «QUOTE_TABLE_COLUMN(NameOfColumnHere)» …
● «QUOTE_TABLE_COLUMN(AnotherColumnHere)»
● «QUOTE_TABLE_ROW_END»
● «QUOTE_TABLE_FOOTER» (Enter column totals or what you want to display on footer for the table).
● «QUOTE_TABLE_FOOTER_END»
● «QUOTE_TABLE_END»

The tags function outside the cart item loop tags.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 261
4.3.2 Quote Table Columns

Table data is organized in columns. Multiple columns with the same denominators can be visually represented
to users as a group.

Add Columns to Quote Table

Quote table columns can either pull data via Iron Python scripts (the system supports a maximum of 3000
rows) or users import data manually.

1. In Define Columns, click Add Column.


2. Define the column label and the column name will automatically populate.
Make sure not to use the reserved SQL words for the label.
3. Choose the column type.
The column type conditions the input users can make in the field.
4. Click Set Permissions.
The Permissions pop-up displays.
5. Select the permission groups for which the column will be editable/hidden.
Note that columns in quote tables are in read-only status by default.
6. (Optional) Set the validation rules.
Read more about the quote table validation rules in the Validation Rules section.
7. (Optional) Select the Contains Personally Identifiable Information checkbox.
All information that could potentially be used to identify an individual should be flagged as PII [page 744].
8. (Optional) Select the Sensitive Data checkbox.
PII data can be flagged as sensitive [page 745] for an additional layer of protection.
9. Save your changes.
10. Repeat the previous steps to add more columns.
11. Click Save.

Validation Rules

Validation rules show users that data input is required and that a limit on the data users enter is required.

The table shows which validation rules are available for which column types:

Column Types Validation Rules

Number Minimum
Decimal
Maximum
Money

String Required

Contains

SAP CPQ Setup and Administration Guide


262 PUBLIC Quotes Administration
Column Types Validation Rules

Date Required

Attribute

Boolean Not available

To manage validation rules for a column, access Validations when editing the column. After selecting a
validation rule and entering the value, you should define the validation message that will display to users if they
break the rule. The validation message is required, otherwise you can’t save the columns.

If one or multiple validation rules are broken, the validation of the entire table fails and an informational
message displays above the table. However, users will still be able to save the quote table and the quote and
manage other sections independently.

A rule's activity is handled through the Active checkbox. If a rule becomes temporarily unneeded, but may
become required in the future, unselect the checkbox.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 263
 Note

A flag on quote tables, with values True or False, denotes the validation status. As the flag is exposed for
scripting, scripts can be created for users to perform actions based on the validation status.

SAP CPQ Setup and Administration Guide


264 PUBLIC Quotes Administration
Scripting

Quote table columns are exposed for scripting so that you can create scripts for complex calculation of the
tabular data. Additionally, you can manage validation rules and column labels via scripts:

● Validation Rules - the new method ExecuteValidations triggers the validation rules. To check if a
validation rule is broken, use the HasValidationsFailed method. Also, you can activate/deactivate a
rule via scripting (for example, add a pre/post action to actions and cell events in the Actions tab).
Changing the activity via scripting doesn’t influence the behavior of the Active checkbox in Setup (the
activity must be changed manually).
● Column Labels - column labels are exposed for scripting so you can rename them to meet specific
business needs of your users. You can create a global script that renames the labels after users execute the
event to which the script is attached in Events.

Example

A script affecting the Payment Schedule quote table is attached to the action of changing the date of the first
payment in the designated quote custom field. After users change the date, the script is triggered and the First
Installment label is replaced with October 15.

Note that in the example quote, the parameters Quote.QuoteTables and GetColumnByName retrieve quote
and column names, respectively, not labels.

Quote.QuoteTables[“Payment_Schedule”].GetColumnByName(“First_Installment”).Label =
“October 15”

4.3.3 Manage Quote Table Column Groups


Columns in quote tables can be organized in groups visually represented by common group headers. Groups
allow you to organize columns in logical units, so your users have a neat overview of the data.

Example

When tracking the installment schedule plan for a product over a year, create a column for each month and
group the months in four quarters.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 265
To manage groups, access a table and go to Define Columns Manage Columns and Column Groups . The
Column Groups pop-up is divided into two sections: Column Groups and Columns (automatically populated
with all columns that aren’t included in groups).

1. Click Add Column Group.


2. Define the group name and the label.
Make sure not to use the SQL reserved words when naming columns and groups.
3. Click Add.
The groups display in the order they were created.
To change the order of column groups, drag and drop them.
To edit and delete a group, click .
4. Click to expand the group.
5. Drag and drop the columns from the right into the dedicated group area.
6. Click Confirm.
7. Click Save to save the table.

 Note

● All columns, including those that are standalone (outside of groups), must be moved to Column
Groups. Otherwise, you can’t save the group.
● The ordering of columns and groups is set in Column Groups.
● Once you add a column to a group, you can only move it to a different group or outside of groups, but
you can’t move it back to the list of available columns.

SAP CPQ Setup and Administration Guide


266 PUBLIC Quotes Administration
Scripting

Quote table groups are currently not exposed for scripting. To calculate the sum and average values of a group,
you can use the sum and average of columns as shown in the example snippet:

table = Quote.QuoteTables['Price_Overview']
rows = table.Rows
sum=0
for row in rows:
sum = sum + row.GetColumnValue('January')
#sum for column January
Trace.Write(sum)
#average for the column January (to calculate average on multiple columns,
multiply rows.Count by the number of columns first)
Trace.Write(sum/rows.Count)

4.3.4 Quote Table Actions

Standard and custom quote table actions allow users to manage rows and cells in Quote Tables.

Add row, Delete row, and Copy row are standard actions available on Quote Tables. On the Administration side,
you can activate/deactivate actions, choose permission groups that can see them and define actions that are
executed before and after the standard actions. In addition to managing the table and row actions, you can also
activate/deactivate the On Cell Changed event on the same page.

Only those actions that have the Active checkbox selected are visible to users when interacting with Quote
Tables. To further control the visibility, click Permissions and select the groups to which the actions are visible.

The Pre Script and Post Script buttons provide access to a Script Editor where you can define actions that are
executed before and after the standard action, respectively. The blue flags on Permissions, Pre Script, and Post
Script buttons denote that permission groups are selected and/or scripts are defined.

Below are the available contexts for the scripts that can be attached to Quote Table events:

Copying rows
Available argument: EventArgs.

EventArgs contains Table(IQuoteTable), SourceRow(IQuoteTableRow), and


NewRow(IQuoteTableRow) properties.

Table represents the quote table on which the action has been triggered.

SourceRow represents the quote table row that is copied .

NewRow represents a new quote table row copied from the source row.

Adding new rows (Pre Script)


Available Argument: EventArgs.

EventArgs contains Table(IQuoteTable), Row(IQuoteTableRow), and Cancel(Boolean) properties.

Table represents the quote table on which the action has been triggered.

Row represents a newly created quote table row that will be added to the quote table.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 267
Cancel is a boolean variable that allows the script to cancel adding a row to the quote.

In order to cancel adding a row to the quote, you need to set the Cancel property to True.

This event can be used to validate something or prepopulate a row.

Adding new rows (Post Script)


Available Argument: EventArgs.

EventArgs contains Table(IQuoteTable) and Row(IQuoteTableRow) properties.

Table represents the quote table on which the action has been triggered.

Row represents a newly created quote table row that has been added to the quote table.

Deleting rows (Pre Script)


Available Argument: EventArgs.

EventArgs contains Table(IQuoteTable), Row(IQuoteTableRow) and Cancel(Boolean) properties.

Table represents the quote table on which the action has been triggered.

Row represents a newly created quote table row that will be deleted from the quote table.

Cancel is a boolean variable that allows the script to cancel deletion.

In order to cancel deleting a row, you need to set the Cancel property to True.

Deleting rows (Post Script)


Available Argument: EventArgs.

EventArgs contains Table(IQuoteTable) and Row(IQuoteTableRow) properties.

Table represents the quote table on which the action has been triggered.

Row represents the table row that has been deleted from the quote table.

On Cell Changed
In the Cell Events section, you activate the On Cell Changed event and attach a script that will be executed after
users make a change in a quote table cell. To use this event, you need the following context information:

Available Argument: EventArgs.

EventArgs contains Table(IQuoteTable), Cells(List<IQuoteTableCell>) and


OldValues(List<object>) properties.

Note: OldValues list contains cell values, not display values.

As the system automatically saves every change made in a quote table cell, the list of changed cells and old
values will have only one element. An example code snippet below demonstrates how to access the changed
cell and log its current and previous values:

i = 0
while i < len(EventArgs.Cells):
cell = EventArgs.Cells[i]
Trace.Write('Column: {0}, value: {1}, display value: {2}, old value:
{3}'.format(cell.ColumnName,
cell.Value, cell.DisplayValue, EventArgs.OldValues[i]))

SAP CPQ Setup and Administration Guide


268 PUBLIC Quotes Administration
i += 1

The list of changed cells and the list of old values are sorted so that related entries have a matching index
(position) on both lists.

Custom Actions on Quote Tables

Administrators create custom actions so their users could manage specific tasks on quote tables. In the
example scenario detailed in Quote Tables, the custom action Populate Milestones creates as many rows as
there are milestones defined in Total Milestones.

To create an action that isn’t standard on Quote Tables, click Add Custom Action. In the Script Editor, define the
action's name and the script that will be executed upon clicking the action button. The custom action buttons
appear above Quote Tables and their labels in the default language can be translated in the Actions section in
the Translations tab.

Scripts acting as Custom actions on Quote Tables have the following variables available in their context:

Available Argument: EventArgs.

EventArgs contains Table(IQuoteTable).

 Note

Scripts attached to standard table and row actions and cell events don’t run when you interact with rows
via scripts. They only run when a user interacts with a Quote Table through the user interface.

Quote Table events can also be accessed via Iron Python Scripts. New rows can be added, data can be read
from them, permissions can be set, etc. The interfaces to do this are described in SAP CPQ Scripting
Documentation .

4.3.5 Import via Excel

Users can import data into quote tables by importing Excel files on both quote engines.

The following procedures contain step-by-step instructions on how to upload Excel files into quote tables.

General Prerequisites

● To have a quote created.


● To have a quote table created [page 260].
● To select Allow Excel upload checkbox for the quote table.

This functionality can be accessed by navigating to the quote tab in which the quote table is placed. There,
users can:

● Upload new data


● Update the existing data

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 269
Upload New Data

Instead of manually adding rows into quote tables, users can download empty Excel templates, fill them out
and upload them into the quote table.

1. Click Download Excel File.


A dropdown list appears.
2. Click Add New Entries.
An Excel file is downloaded.
3. Fill out the file according to the instructions.

4. Click .
5. Upload the file with new data.
A message informs you whether the upload was successful or not.

Update the Existing Data

When managing extensive quote tables, it’s easier to download the existing data in an Excel file, update it and
upload the template back into the quote table. The prerequisite is to have data in the quote table.

1. Click Download Excel File.


A dropdown list appears.
2. Click Update Existing Entries.
An Excel file with the data from the quote table is downloaded.
3. Update the data in Excel according to the instructions.
If needed, you can also add rows in Excel to upload new data into the quote table.

4. Click .
5. Upload the file with the updated data.
A message informs you whether the upload was successful or not.

Template Guidelines

The Excel template contains a sheet with all columns and rows that exist in the quote table for which a user has
editing rights.

 Note

Quote table rows are distinguished by ID numbers, so if existing entries need to be updated, you shouldn’t
change the ID numbers in the template.

If users populate the Excel file incorrectly by entering an inadequate value format and try to upload it into a
quote table, an error message appears. Additionally, users are prompted to download the file again and enter
the correct data to ensure a successful upload. The incorrect data in the Excel file is marked in red and the new
Error column is also displayed in the file. You don’t need to change the color of the cells and delete the Error
column before reimporting the file.

SAP CPQ Setup and Administration Guide


270 PUBLIC Quotes Administration
An Excel template is always downloaded in .xlsx format, but it can be uploaded in any of the following Excel
formats: .xlsx , .xls, .xltx, and .xlt.

 Note

There’s a new event When Excel is uploaded into a Quote Table available in the Global Scripts. A global script
can be triggered after an Excel file is successfully uploaded to a quote table.

4.3.6 Quote Table Translation

The Translations tab allows you to translate the Quote label, column and action labels and validation messages.

Each label has a dedicated row with a value in the default language and a value in the target language, if
defined. To add a translation, first choose the target language in the Language drop-down list. You are now able
to add the translated value in the Translation column.

4.4 Quote Tab Permissions

The Quote Tab Permissions allows managing visibility of the quote tabs based on the workflow statuses and
permission groups.

Unless you select a status and/or a permission group, all defined quote tabs are visible in all status and to all
permission groups. Quote tab permissions are managed under Setup Quotes Quote Tab Permissions .
When you access the page, a list with the following data for all existing permissions is displayed:

● Tab - the name of the tab for which the permission is created.
● Permission - the name of the selected status and the permission group.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 271
● Custom Permission - displays the values Yes/No depending on whether additional visibility restrictions are
set up.

The Show drop-down list allows you to filter the list per specific tabs or display all tab permissions in the list.

You can always edit or delete a permission by clicking and, respectively.

Create a Quote Tab Permission

1. In the Quote Tab Permissions page, click Add Tab Permission.


2. In the new page, select a tab on which the permissions are applied.
3. Select a status in which the tab is hidden.
Make use of the Select all Statuses checkbox if you wish the tab to be hidden in all statuses.
4. (Optional) Select all or specific permission groups that won’t have access to the tab.
The logic OR is applied between the permission groups.

5. In the Additional visibility restriction section, click to create a condition formula [page 11] for a more
specific restriction.
6. Click Save to finalize the creation.

 Tip

Quote.CurrentItem CTX tag can’t be used for defining additional visibility restrictions.

Note that the condition formula additionally restricts the tab visibility related to permission groups and
statuses, it doesn’t overrule it. The system re-evaluates the condition formula every time the quote is modified.

4.5 Custom Fields

The Custom Fields administration allows creating custom fields in the shopping cart for users to include
additional information, such as terms of payment or other specific information to your company.

The fields can also be useful in helping to define what a generated document includes. Field selections can also
affect the configuration of the products. Each custom field is assigned to a tab defined as a quote tab and gets
permissions set to define how the field will be used based on the user and the status of the quote.

Custom Fields administration can be found under the Quotes admin menu. Here user can copy, delete, and edit
existing custom fields. Clicking Add New allows adding a new custom field.

Creating a new custom field comes in two steps. First step is to define the field, including the label, the type of
field it is, what tab it is displayed in and the order, and the label. Once defined, user can then assign permission
to the field. The permissions determine how the field is displayed to the user, such as hidden, required,
editable, and read- only.

SAP CPQ Setup and Administration Guide


272 PUBLIC Quotes Administration
Definition

● Name - Custom fields can be created with any name, or label. This label can then be different for other
users based on user group.
● Type - This determines how this custom field is used :
○ Free Input - Field appears as a text box in which users input a value. No restrictions on what the user
can enter.
○ Attribute - This type allows you to connect your custom field to an attribute. This way, in the quote, you
get the text box where you can select custom field value from the list of attribute values. If you set an
attribute of type „Auto-complete“ to be connected to your custom field, then in the quote, instead of
drop box, you get the autocomplete text box where you can type a value that you want to assign to your
custom field. As you start typing, autocomplete offers a list of values that either starts with the typed
combination of letters, or contains it.
You can also set the value of autocomplete custom fields via scripting by using the Value Code
property, as explained in Autocomplete Attributes [page 44].
○ Date - Field appears as a text box in which the user enters a date. The date the user enters must match
the date format the user has set on the User’s Page. Next to this field, the user is able to click an icon to
display a calendar where the date can be chosen.
You can’t change the Date field to any other type, nor can you switch other types to Date. You can
switch fields to and from Free Form, Attribute and Long Text.
○ Long Text - Field appears as a large text box in which the user can enter multiple lines of text. No
restrictions on what the user can enter.
● Tab - Select the quote tab that this field will be displayed under. The only tabs available are those tabs that
have been defined as a quote tab in the Quote Tabs administrative section. It’s important to keep in mind
that the tabs that are used for the cart, customer info, and attachments are available selections. This
means that user can place custom field not only in custom tabs, but also within the cart, customer info, or
attachments.
● Calculation Type - If “Once, when quote is created” or “Every time quote is modified” Calculation type is
selected, a new Formula field is shown. The evaluated formula value is assigned to the content of the
custom field. This way a custom field value can be defaulted to some value. Some of the tags aren’t
supported for “Once, when quote is created” calculation type option
(<*CTX(Quote.QuoteNumber)*>,<*GI(CART_OWNER_ID)*>,…).
When application parameter “Enable quote custom field calculation ranking” is true, the new field is added
in custom fields administration “Calculation rank”. This field is visible only when “Calculation type” is not
“None”. For example, admin can add three dependent custom fields: Custom field “A” ,Custom field
“B” ,Custom field “C” . Custom fileds B i C have calculation type 'Every time quote is modified'. Custom
field B has formula <*EVAL(<*CTX(Quote.CustomField(A))*> * 2)*>, custom field C:
<*EVAL(<*CTX(Quote.CustomField(B))*> * 2)*>. Calculation rank is set to 1 for B and to 2 for C. When the
user enter “5” in the custom field “A” and click on “Calculate”, the value for custom field “B” should be 10
and for custom field “C” should be 20.
● Order within Tab - Determines where this field will be displayed in relation to the other fields on that tab.
The lower ranked fields will be displayed on the top, while the higher ranked will be displayed after.
● Transfer to Items - Determines whether or not this field’s value will affect the product’s configuration. This
is done when this field is connected to an attribute. That same attribute needs to be added to the product
where the product definition is using the attribute. Once the field is selected in the cart and saved, the
value is passed to the product’s configuration and the same attribute value is selected in the product. Any
rules, calculations, etc used around this attribute will be affected.
For example, say we have a custom field connected to an attribute called Number of Users, which contains
the values 1 through 10. In addition, we’ve also added this same attribute to the product’s configuration to

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 273
control the pricing of the software we are configuring. Once a user has configured the software and added
it to the cart, they can select a value from the custom field Number of Users drop down list. Once it is
saved, that value is passed back to the configuration where the pricing is updated based on the number of
users selected. - This determines whether this field will be displayed along with the order on the
confirmation page after clicking Place Order. If selected, then the custom field will also be displayed in the
email that goes to the ordering parent or system administrator depending on how it is configured.
Note that value from custom fields that are marked as 'transfer to item' will NOT be transferred when
product is in catalog and while product is configurated. After the product is added to the quote, all custom
fields that are marked as 'transfer to item' will pass their values. This may affect a final price of the
particular product, if the price depends on the attribute that is used in custom field.

 Note

When using the Transfer-to-item functionality it will cause Quote Reconfigure – not only when the
custom field value is changed, but also when the Calculate action is triggered (on item discount
change, list price change or any other field value change).

● Show on place order confirmation page


● Default Label - User can give the field a different label from the required name of the field. If left empty then
the system will use the name of the field. This is just the default label. The label can be changed based on
the user group.

clicking this icon displays a list of all the user groups in the system where user can define what the
label will be for each group. This is most beneficial when quotes are being shared among user types. Users
that open quotes from another user group will see their label with the other user’s value.
For instance, if we have a custom field called quote name, we may want the managers to see the label
‘Project Name’ but the sales rep to see ‘Quote Name’. When a sales rep user creates a quote they’ll enter a
value for Quote Name. Then when the manager opens the same quote, they’ll see the same value the sales
rep enter but under the label Project Name.
● Contains Personally Identifiable Information - All information that could potentially be used to identify an
individual should be flagged as PII [page 744]
● Sensitive Data - PII data can be flagged as sensitive [page 745] for an additional layer of protection.

Permissions

The Permissions tab defines how the custom field will be displayed to the user based on the user group and
status of the quote. There are four options that you can define for the field:

● Hidden - This is used for the statuses or user groups that you would not like the field displayed for. The field
is not displayed at all to the user. If the field is required the user will not be prompted to enter a value for
the field.
● Read-Only - This is generally used for statuses after the quote has been completed, such as Order Placed
or Received Order. The field is not editable. Whatever value had been entered for the field will be displayed
as uneditable text. Even when a custom field is read-only for a user type, a script will change the value
when triggered.
● Editable - This is generally used for the initial statuses in which the quote is being created, such as Open.
The field is displayed in whatever format it was defined in.
● Required - This is used when user would like the user to define this field before they are allowed to Place
Order on the quote. Field marked as required are editable and are displayed with a red asterisk. If they try

SAP CPQ Setup and Administration Guide


274 PUBLIC Quotes Administration
to Place Order on the quote or save the custom fields on that tab, then they will be prompted to define the
field.

One of these options can be defined for each cell in the matrix of user groups and statuses. To set an option to
a cell click the cell to display a pop-up where the option can be selected. There are six different types of cells in
the matrix that can be defined:

● All Permissions - Sets the same option for all the cells in the matrix. Click the upper left corner of the matrix
to define.
● All Statuses for One User Group - You can set all the statuses for one user group by clicking the user group’s
name on the left side of the matrix.
● All User Groups for One Order Status - You can set all the user groups for one order status by clicking the
status on the top of the matrix.
● Individual Cell Intersection - You can set a cell intersection between a status and a user group. For instance
the Sales Rep group should have the custom field Read-Only when in the Order Placed status.
● Default (For New User Groups) - Set how the custom field will be displayed to the users added to new user
groups that haven’t been set in this matrix yet.
● Default (For New Order Status) - Set how the custom field will be displayed in a new statuses that haven’t
been set in this matrix yet.

The default cells make administration easier so that when you create a new user group or status you do not
need to go through and define all the custom field permissions again.

 Note

Selecting an option for a cell that includes all statuses or all user groups might take a little bit of time to set
depending on the number of statuses and user groups created in the system. Large number of groups or
statuses means there are a lot of cells to set, so there might be a slight delay in setting them all.

When finished defining the custom field and its permissions, click Save at the bottom of the page. You are not
redirected to another page in case you would like to continue to define the field. For instance if you’ve just
defined how the field will be used and now you’d like to define the permissions.

4.6 Key Attributes

Key Attributes allow setting up an attribute as search criteria on the user side.

Users can search for quotes based on the value of their Key Attributes. For example, if Memory is a Key
Attribute, user can make memory a search field. Now when the user searches for quotes on the user side, if you
want to find quotes with memory value of 1024MB-DDR, all the quotes with this value for memory will be listed.

To get to the Key Attributes Administration page select the Quotes admin menu, and then Key Attributes. Here
new key attributes can be added, changed the label of existing key attribute, and modified the expression used
to compute the value of the key attribute.

To create a new key attribute, click Select. This brings up a pop-up window where you can search for the
attribute you would like the key attribute to reference. Click the green arrow icon to select the attribute.

The Label field determines what the default label will be for this key attribute. User can change the label when
the key attribute is added as a search field.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 275
The Expression for computing key attribute value field must contain a standard SAP CPQ tag which determines
what value will be used when searching for this key attribute. Generally this field will contain tags such as Value
or ValueCode. User can also include a much more complex expression here if necessary.

When finished, click Save at the bottom of the screen. This saves the current key attributes, including any
changes made the label or expression of any key attribute.

Show quote key attributes in attribute container

In order to do this we will use arguments of the tag LoadCartItems consisting of prefix KeyAttribute- and key
attribute name. Example is :

● KeyAttribute-Memory
● KeyAttribute-Processor
● KeyAttribute-Printer

In syntax checker, only non-empty key attributes will be displayed. This tag will be used to populate appropriate
column with value of item’s key attribute. Example how final tag will look like -
<*CTX( Container(Test_Container).LoadCartItems(KeyAttribute-Memory).ToColumns(Memory) )*>

Typical uses cases will look like this:

● Create attribute container that will be populated with contents of the quote. This container will be
displayed in configurable product.Container should contain quote item fields.
● Add key attributes to be displayed in container( String, Numeric, Date)
● Create a quote and add several items. Some items should have these key attributes empty.

SAP CPQ Setup and Administration Guide


276 PUBLIC Quotes Administration
● You will see that quote contents are displayed in attribute container and that key attribute values are will be
displayed for all items.

4.7 Search Fields

The Search Fields administration allows controlling which fields will be available for users to filter their load
quote page by.

They can be defined on a per user group basis and can ordered. The search fields available include quote
information, customer information, key attributes, or user information.

When users want to save default number of quotes that will be displayed, SAP CPQ will save maximum 50
quotes per page.

The Search Fields administrative section can be accessed under the Quotes admin menu. Here user can add,
remove, and modify the search fields.

To add a new search field, click the Add New button. This displays the search field definition page.

Available Fields displays the fields that can be searched by. These include any Key Attributes, Custom Fields,
and default fields, which include cart information, customer information and user information. The Label field
determines what the search field label will say on the user side. Because the search field name can be
sometimes not very descriptive or not custom for user's company, the Label field allows displaying any label
that is needed.

The Operator field determines how the system will search the value entered by the user. There are 6 options
available as an operator:

● =number - requires the value entered by the user and the selected field is a number
● =date - requires the value entered by the user and the selected field is a date
● =string - requires the value entered by the user and the selected field is a string, or text
● like - allows user to enter any value, this value is then searched by for in the selected field. An exact match
is not needed with this query. For example, if a user enters the value “com”, the system will match that with
“computer”, “communication”, “combination”, etc.
● number interval - user is given two fields to enter a number. The system then returns the values that fall
between the entered numbers.
● date interval - user is given two fields to enter dates. The system then returns the values that fall between
the entered dates.

 Tip

Searches done with the =number, =date, and =string operators must be exact matches in order for the
system to return the result.

The All User Types field refers to user types for which no search fields have been defined. What this means is
that, if a search field has been defined for a certain user type, that user type will not have access to search
fields defined for All User Types. For example, if a Project Name search field has been defined for a Sales user
type, the Sales user type will only have access to the Project Name search field, and to no other. This also
means that All User Types will not have access to the search field defined for a Sales user type.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 277
Selected Fields lists all the search fields currently being displayed to users. The fields are listed in the order that
they will be displayed to the users from top to bottom.

To add a new search field, user must select the field from the Available Fields and click to send the field to
the Selected Fields. Then it is possible to order the selected fields by selecting the field and clicking the up and
down arrows.

 Note

User can only add one search field at a time. To add another search field, save the current addition, then go
back into the search field administrative section and click Add New.

When editing a search field, if desired, user can only remove and edit the label of the field that you edited. User
can, though, modify the ordering of all the fields while editing.

 Note

To make the Advanced Search feature available on the Existing Quotes page, you must tick the Show Fields
in a Quote Search/Filter check box on the User Types [page 160] Help page.

4.8 Quote Visibility

By default, users can only see quotes that they have created. These are accessed by clicking My Quotes in the
dropdown located in the upper-left part of the Load Quote page. In order to allow a user to see any other
quotes, a quote visibility rule must be created. Quotes a user has been given permission to will be displayed
when the Other Quotes option is selected in the same dropdown where My Quotes can be accessed. Quote
visibility rules are managed in the Quote Visibility administrative section. This section can be accessed by
choosing the link under the Quotes admin menu.

The Cart Visibility administration screen shows the parameters from which a rule can be built: Group, User, and
Company. The order in which each is displayed reflects its priority from left to right, with Groups having priority
over Users, and Users having priority over Companies. User can join parameters to filter permissions even
more, this is explained later. Click Add New to create a new quote visibility rule. This displays the quote visibility
definition page as shown in the screenshot.

SAP CPQ Setup and Administration Guide


278 PUBLIC Quotes Administration
Cart visibility rules have three areas of definition: the first area (Step 1) specifies which users the rule applies to,
the second (Step 2) limits which quotes will be seen by the users, and the third (Step 3) specifies the condition
under which the quote will be visible. It is only possible to create one rule per combination of User Group, User
and Company. For instance user can only create one rule for the user John Smith. User can, though, create a
rule for the user group Sales, even if John Smith has been added to that group. In this case, though, the
visibility rule created for the Sales group would have priority over the rule create for John Smith.

When a user goes to the other quotes tab, the system runs the visibility rule for every quote in the system. If the
condition is met (true) for a quote then the specified user(s) will be able to see that quote. The actions the user
is able to perform on these quotes is determined by the workflow set in the Other Quotes area of the Workflow
Actions administrative section.

Only shopping cart tags can be used in the condition field for visibility rules. Clicking displays the code
builder window where user can access tags and create complex conditional statements. Any quote information
can be pulled to use in the calculation, including user information, customer information, custom fields,
discounts, cart amounts, and many others. Entering 1 in the condition field allows the selected user(s) to see all
quotes generated in the system.

Using Visibility Rules Together

User can create inherited visibility rules to further filter quotes. For example, we create a rule in which the Sales
group can see all quotes where the quote creator’s user group is Sales. We then want John Smith, who is part of
the Sales group, to only see quotes within his zip code. To do this we first need to create the visibility rule for
the Sales group as shown in the screenshot.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 279
This rule states that any user in the Sales group will be able to see quotes from the users that are within their
group. The <*SAMEGROUP*> tag checks the quote creator’s user group and the user group of the user
currently logged in and returns true if the same.

Now, we want John Smith to only be able to see quotes from user’s within his own zip code. To do that we
create another visibility group for John Smith as shown in the screenshot.

SAP CPQ Setup and Administration Guide


280 PUBLIC Quotes Administration
For this rule we select not only John Smith from the User column, but also Sales from the User Group column.
In this way we are able to use the Sales visibility rule for John Smith also. This rule uses the
<*SAMEZIPCODE*> tag which matches the zip code of the currently logged in user with that of the quote
creator’s. So the rule states that John Smith will only see quotes where his zip code matches that of the quote
creator’s. Because we’ve selected the Sales group, though, the rule inherits that rule also. So John Smith is
allowed to see only those quotes where he has the same user group AND the same zip code as the quote
creator’s.

Visibility Rule Examples

All companies have unique needs but there are some commonalities which will be used for quote visibility rule
examples. Companies can have many different ways of distributing products and services and hierarchal
structures to manage them. For example, a Sales Management group needs to see all quotes that its groups or
salespeople generate, which may include individual users, Value-Added Resellers, Wholesale Distributors,
Outside Sales Reps, etc. Several quote sharing rules must be created in order to specify who can and cannot
see the quotes that have been generated.

There are four groups that need cart visibility rules applied to them:

● Sales Management: The internal management staff which needs access to all quotes.
● Sales: The internal sales rep staff which work in territories or specific companies.
● Channel Rep: Wholesalers, VARs, Distributors.
● Direct Sales: Center sales personnel, customer service, etc.

The Sales group will be divided into 2 territories, East and West. The Channel Rep group has 4 major stocking
wholesalers, 2 in each territory. In addition, they have 5 Value-added resellers assigned to each.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 281
Based on these conditions, four visibility rules can be created.

Rule 1

Sale Management needs access to ALL quotes. Administrator should select Sales Management as user type
and in Condition, enter 1.

Rule 2

The Sales group should see only quotes within their territory. Jerry Spinger is assigned to East and Opah
Windfree is assigned to West. In order to make sure each rep can only see quotes that belong in their respective
territory a rule is created using the <*SAMETERRITORY*> tag. Administrator should select Sales Management
as user type and in Condition, enter <*SameTerritory*>.

Now every Sales user will be able to see all quotes located within their respective territory. Based on this rule
Jerry Spinger will not be able to see Opah Windfree’s quotes, because in there user profile they are in different
territories. For more information on assigning users to a territory, see the chapter on Users in the Users
section.

The way this rule works is very simple as well. When a user from the group Sales accesses the Other Quotes
tab, every quote is evaluated against the tag <*SAMETERRITORY*>. This tag evaluates to 1 (true) if a user who
created a quote (quote owner) has the same territory as the logged in user. All quotes will then be visible to the
logged in user through the Other Quotes tab.

Rule 3

Channel Reps should see only those quotes they have generated (My Quotes) and all quotes created by their
own distributor companies. The Channel Rep group supplies Westcoast Distribution Inc. and Eastcoast
Distribution Inc. They need to view all quotes generated by those two distributor companies. In this case the
condition is a bit more complex and requires the following expression: [OR]([EQ]
(<*CO_INFO(COMPANY_NAME)*>,Eastcoast Distribution Inc),[EQ]
(<*CO_INFO(COMPANY_NAME)*>,Westcoast Distribution Inc)). Administrator should select Channel Rep as
user type and in Condition, enter [OR]([EQ](<*CO_INFO(COMPANY_NAME)*>,Eastcoast Distribution Inc),[EQ]
(<*CO_INFO(COMPANY_NAME)*>,Westcoast Distribution Inc)). The way the above rule works is also very
simple. When a user from the Channel Rep group accesses the Other Quotes tab, every quote is evaluated to
see whether or not the user who created that quote belongs to a company Eastcoast Distributors or Westcoast
Distributors. Those quotes that belong to those companies are then visible.

Rule 4

By default the employee from each company (Westcoast and Eastcoast) can only see their own quotes (My
Quotes). In order to allow each user to see quotes from their own company we need the following rule: User

SAP CPQ Setup and Administration Guide


282 PUBLIC Quotes Administration
Type should be set to Channel Rep, My company's quotes checkbox selected and Condition set to 1. The way
this rule works is also very simple. After a user from Channel Rep accesses the Other Quotes tab the user will
see all quotes where the quote owner has been added to the same company as the logged in user.

4.9 Reports

The Reporting Module allows authorized users to create reports, such as how many configurations have been
completed in a certain time frame, who completed them, how many quotes were generated or how many
projects were created, their status, activities by departments, individual users, customers, etc. SAP CPQ
administrators can set these reports up by using the administrative interface for the reporting module.

Reports link under the Quotes admin menu. The picture below shows a list of existing reports and some action
buttons which are used to Reporting Module administration is invoked by clicking on the Add, Change (edit),
Copy or Delete reports.

Clicking the Add New button brings up a new screen where user can choose to create a Standard Report (which
can have filters) or a Common TreeView Report.

Creating either a standard or a tree report requires the administrator to select from a list of standard views or
stored procedures.

 Note

Currently SAP CPQ does not provide any stored procedure as report source.

Reporting Module administration is invoked by clicking on theThe following picture, (Standard Report → View),
shows a typical list of standard views. Views are similar to tables that combine data from 2 or more SAP CPQ
database tables. After selecting the desired view, user will see a report definition screen as shown in the image
below:

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 283
The first column lists all the fields from the database that are available for the report using the selected “view”
from the previous screen.

Column order specifies which data (columns) should be included in the report and the order in which the
columns will appear from left to right.

Sort Type controls data sorting within the column, either ascending or descending.

Example 1

The first report has the following columns: Quote Creator, Customer Name, Total Quote Amount. Sort Order,
Sort Type, Group By and Total are also defined. The report will display quotes grouped by Quote Creator and
Customer Name, and a sum of the Total Quote Amount.

SAP CPQ Setup and Administration Guide


284 PUBLIC Quotes Administration
Clicking the Preview button will bring up a screen with a preview of the report as shown in the following image:

Please note that all records that have the same Quote Creator and Customer Name are combined into one row.
The number displayed in the Total Quote Amount column is a sum of amounts of all quotes created by the user
whose name is displayed in the Quote Owner column and sold to the customer displayed in the Customer
Name column. In order to successfully define such a report, the administrator needs to specify what operator
to apply to all the fields (columns) that are not being grouped. These operators are located in the Total column
and the choices are Count, Sum, Max, Min, Ave, etc.

Example 2

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 285
The previous report also displays how many quotes were created by the user whose name is displayed in the
Quote Creator column and sold to the customer whose name is displayed in the Customer Name column. After
clicking Preview, the output is as follows:

Since database field names are not always user-friendly the Alias column is used to allow the administrator to
specify a more user-friendly name for each column. In some of the examples above, the column Name uses the
alias Quote Creator which is the name presented to the user.

It is also possible for the administrator to specify if a user should be able to use any search criteria. This is
accomplished by specifying the Condition operator as shown in the following image:

SAP CPQ Setup and Administration Guide


286 PUBLIC Quotes Administration
Next, the administrator needs to specify the mechanism for providing the search criteria value under the Value
column:

User Entry implies that the user will enter the desired search value.

User ID implies that only the data pertaining to a particular user will be provided in the report.

Search criteria can also be set to return only the record created on that particular day (Current Date).

The user can also select from the list of values (select one or more of those values). If the administrator selects
User Select (Single) or User Select (Multiple), the user will be presented by a drop down or a multi select list box
of search criteria.

In the case of User Select the administrator must select a source for the search data, which will be presented to
the user.

Here are two examples of user-selected searches. The first one has a condition operator of ”>” and User entry.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 287
SAP CPQ Setup and Administration Guide
288 PUBLIC Quotes Administration
Here is another example with Like operator:

The LIKE operator is used on a value typed in by the user. Here is the output:

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 289
The final steps in creating a report are illustrated in the following picture:

First select the User Group(s) that will have access to the report. The number of records per page has default of
10, which can be changed. A Report Description can be added. The report can then be previewed by selecting
the Preview button. All parameters can be reset by selecting the Reset button or the report can be saved by
selecting the Save button.

4.10 Cart Level Aggregates

Other than attribute values, in the product rules administration page you may set and read global variables
(globals, GI). Global variables are stored at cart level and are common for each main item/product
configuration in the cart. Global variables may be used to model the interactions between items and to define
action availability within the configuration. For details see the chapter on Global Variables [page 19].

Cart Level Aggregates are special Global Variables. When you define an aggregate you provide its name and
formula. This formula is evaluated for each main item in the cart. The evaluated formula is then converted to a
numeric value. If it can not be converted to a numeric value, the aggregate value for that particular item is set
to be zero. SAP CPQ will implicitly multiply each formula with the quantity of the item. The final value of an
aggregate is assigned to a Global Variable with the same name as the aggregate. This means that when you
define an aggregate you actually define a Global Variable.

 Tip

Since Quote Properties are also global, you must be careful to define unique aggregate names.

Cart Level Aggregates are a favorable method for calculating the sum of the numeric values in the cart. They
are calculated when an item is added to the cart, and during the Reconfigure action. Cart tags and some CTX
Tags [page 622] should be used in its formulas.

Example 1
● Aggregate Name: “Item Count”

SAP CPQ Setup and Administration Guide


290 PUBLIC Quotes Administration
● Formula: 1

 Note

As stated earlier, SAP CPQ will implicitly multiply each formula with the quantity of the item. This is why the
formula reads “1” – because if your item count is 3, the end result will be 3. In other words, this will create a
global variable “Item Count” and its value will be equal to a count of the main line items – number of added
configurations – in the cart.

Example 2

● Aggregate Name: “Total Hard Drives”


● Formula: <*CTX(Quote.CurrentItem.Attribute(attributename).Value)*>

This will create a global variable “Total Hard Drives” and its value will be equal to a product of quantities of
“Hard Drive” attributes in each item in the cart. If an item or a configuration does not have a “Hard Drive”
attribute, the aggregate value for that particular item will be set to zero, thus such items will not affect the final
aggregate sum value.

This aggregate/global variable can also be used in an action condition, for example:

[GT](<*GI(Total Hard Drives)*>,10)

This condition will allow an action if global “Total Hard Drives” is greater than 10. For more details on conditional
workflow actions see the chapter on Workflow Actions [page 330].

4.11 AI Product and Pricing Recommendations

SAP CPQ can use artificial intelligence to display product and pricing recommendations on quotes.

To enable recommendations, your SAP CPQ tenant must be integrated with Thunderbridge AI for SAP CPQ
that pulls data from the application and third-party CRM systems, analyzes it and returns AI recommendations.
The feature is not part of the standard SAP CPQ package and can be activated with fees involved.

Example

SAP CPQ predicts the products customers might need based on their purchase history or the purchase history
of similar customers. Also, if customers usually purchase a pair of products (e.g. a tablet and a pen), when
adding one of them to the quote, the system will recommend the other product, its quantity and a discount.
When SAP CPQ is integrated with a CRM application, the system can also suggest the discount for the product
item that is most likely to get the deal closed.

Enable AI Recommendations [page 292]

Recommendations on Quotes [page 293]


Product and pricing recommendations are based on customer's previous sales data stored in SAP CPQ
and on the data of CRM opportunities associated with SAP CPQ quotes.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 291
4.11.1 Enable AI Recommendations

Context

To enable AI recommendations on quotes, the SAP CPQ professional services team should set up the
integration settings and column mappings for your tenant as follows:

Procedure

1. In Setup, access Providers Providers .

A list of available integration providers displays.


2. Click the Thunderbridge card.
3. In Use Thunderbridge Integration, select TRUE.

Toggling the parameter enables/disables the integration with Thunderbridge.


4. Fill out the remaining fields in Provider Settings with data provided by Thunderbridge:

○ Thunderbridge Integration URL - address of the Thunderbridge AI service.


○ Thunderbridge Integration TenantName - Thunderbridge AI tenant name.
○ Thunderbridge Integration ApiKey - API key of Thunderbridge AI.
5. Map the fields in Column Mappings so that Thunderbridge AI can pull proper data from SAP CPQ:
○ AccountName - map it with the field displaying the account name (usually, it is the ship-to Company
field). Use the formula builder to pull data from a custom field, if needed.
○ AccountId - map it with the field displaying the account id (usually, it is the ship-to CRMAccountid
field). Leave the field empty when SAP CPQ is not integrated with a CRM. Use the formula builder to
pull data from a custom field, if needed.
○ Quantity - select the field that shows product quantity in your SAP CPQ. The system offers all numeric
quote item custom fields for selection. The Quantity field is selected by default.
○ Discount Percent - select the field that displays the NRC discount in your SAP CPQ. All discount fields
from the system are offered and DiscountPercent is preselected.
6. Click Save.

The integration with Thunderbridge AI is set up and recommendations are enabled.

SAP CPQ Setup and Administration Guide


292 PUBLIC Quotes Administration
Example

4.11.2 Recommendations on Quotes

Product and pricing recommendations are based on customer's previous sales data stored in SAP CPQ and on
the data of CRM opportunities associated with SAP CPQ quotes.

The system recommends only products that are currently not included in the quote.

When recommendations are available for a quote, the Recommendations button is active and colored and
shows the number of recommendations for the current quote. Clicking it opens a list of recommendations with
these options:

● Configure- configure a product and add it to the quote. In addition, the system recommends a quantity and
a discount for the product. If there is no integration with a CRM system, the discount and the quantity are
not included.
● Add Product - add a simple product with a recommended quantity and discount. If there is no CRM
integration, the discount and the quantity are not included in the recommendation.

 Note

The quantity and the discount are tied to the recommended product and cannot be added selectively
to the quote. When adding a product, the system automatically adds it in the recommended quantity
and with the recommended discount.

● Change Discount - apply a discount to a product that is already in the quote. The option shows only when
SAP CPQ is integrated with a CRM system.

 Note

Thunderbridge provides recommendations only for the NRC discount.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 293
After adding a product to the quote, as recommended, the respective product item is added at the end of the
list of product items and is no longer offered by the system. When there are no recommendations to display,
the Recommendations button is grayed out. Besides accepting recommendations, users can also reject or just
disregard them. The system learns from the user's activity and adjusts future recommendations accordingly.

 Note

Recommendations are refreshed whenever a product item is added or removed and when item’s quantity
and discount on the quote are changed.

The system does not reset the applied discount after changing the customer. The system revises
recommendations on each change in the quote.

4.12 Bulk Deletion

The Bulk Deletion administrative section allows users to safely and easily delete other user’s, their quotes, or
their customers.

This is a good way to clean up the system database by deleting old users, along with their quotes and
customers. To access Bulk Deletion, choose the link from under the Quotes admin menu.

From the Bulk Deletion start page, user can choose whether you would like to delete a user and their quotes or
delete local and global customers in the system.

Delete customer(s)

A customer cannot be deleted if there are quotes associated with them. Make sure that all quotes associated
with the customer are deleted. The Delete customer(s) section allows deleting a user’s customers or global
customers. To delete a user’s local customers, select their name from the drop down list. To delete global

SAP CPQ Setup and Administration Guide


294 PUBLIC Quotes Administration
customers, choose Global Customers from the drop down. Next, check the customers you would like to delete
then click the Delete button.

Delete user(s) and or their cart(s)

Before user deletes other user’s account, it is important that user delete that user’s customers first. Users
cannot be deleted if they are the administrator of a company, an approval parent, managing parent, ordering
parent, or have customers associated with their account. The Delete user(s) and/or their cart(s) section allows
deleting a user’s account or a user’s quotes, or both. Check the users in which you would like to delete. The left
checkbox will delete the user’s account from the system, while the right checkbox will the delete only that user’s
quotes.

Deleting the user’s account will automatically delete that user’s quotes as well. If you wish to keep the user’s
quotes and still delete the user, then reassign the quotes to another user then delete the user’s account.
Deleting a user’s quotes, though, will keep the user’s account intact.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 295
4.13 Column Headings
The Column Headings administrative section allows SAP CPQ administrators to control the columns displayed
to users on the Existing quotes page.

You can restrict the visibility of column headings to specific user types or you can make them visible for all user
types. You can also select the order in which the columns will be displayed on a quote. Available column
headings may include quote information, customer information, key attributes, custom fields and/or user
information. Any field available to users on the Existing quotes page can be sorted.

The Column Headings administrative section can be accessed via Setup Quotes . Here administrators
can add, remove, and modify the column headings.

To add a new Existing Quotes Column, click Add New. A blank definition page will be displayed. Selecting Edit
would bring up the same page. Fields starting with the blue asterisk symbol, (*), are required in order to save
the new column. When you add/edit a column heading, two additional check-boxes are enabled if the column
represents a quote custom field:

● Label : Editable - If this is checked users are able to change the value of this field from the Existing quotes
page.
● Label : Changing field value triggers quote recalculation - When users edit a field from the Existing quotes
page, the quote will be recalculated. This feature can be used when the field is used in other calculations in
the quote or when its value is transferred to quote items.

This feature will enable users to edit custom fields from the Existing quotes page. Users can change quote level
custom fields directly on the existing quotes page. For example, this can be very useful when changing the
expected close date for several quotes without opening them one by one. Additionally, you can define which
fields are editable and whether or not changing that field causes the entire quote to be recalculated.

Custom field types that are supported for edit are: Text Field, Attribute and Date.

When a user enters values in one of the editable quote fields and clicks Save, SAP CPQ will identify quotes
where the user has entered a value and save the quotes one by one. Unless you have marked the column to
trigger quote re-calculation, the values will be saved directly to the database without loading the SAP CPQ cart
(in the background). If the cart is loaded, the value will be saved and all calculations will be triggered, transfer to
item feature executed and so on (similar to how calculations are triggered when the user updates the field from
the cart).

● Available Fields contains the fields that can be displayed. These include any key attributes, custom fields,
and default fields, which include cart information, customer information, and user information.
● Label field determines which text will be displayed in the column heading on the user side.
● User Type determines which user types will be able to see this specific column heading:
○ All User Type option allows all users to see the column heading.
○ Selecting any specific user type will enable only that user type to see the column heading.
Consequently, as soon as you click Save, the user type in question will only be able to view column
headings assigned to them, while the column headings assigned to All User Type will become
inaccessible to them. (For example, if all user types have access to column headings A, B, C and D,
while users from the Sales user type have access only to B, they will not be able to view A, C and D,
even though they are assigned to All User Type).
● Search Fields Order lists all the column headings currently being displayed to users. The fields are listed in
the order that they will be displayed to the users. The fields listed at the top will be displayed on the left
side of the quote list.

SAP CPQ Setup and Administration Guide


296 PUBLIC Quotes Administration
To add a new column heading, select the heading field from the Available Fields and click Add to Column
Headings to add to column to the Existing quotes page. User can then order the selected fields by selecting the
column heading and clicking the up and down arrows in the Search Fields Order list box.

 Note

User can only add one column heading at a time. To add another column heading, save the current
addition, then go back into the column heading administrative section by clicking Add New.

When editing a column heading, if desired, users can only remove and edit the label of the heading that is being
edited. Users can modify the ordering of all the headings while editing a particular column heading though.

4.14 Email Customers / Quote Acceptance Settings

This option can be used when there is need to customize default settings when sending an email after
generating documents.

Send Email To Customer Form

● Don't preselect TO on Send Mail - Set to TRUE in order not to preselect To on Send Mail.
● Don't preselect CC or BCC on Send Mail - Set to TRUE in order not to preselect CC or BCC on Send Mail.
● Emails are sent by - Mail can be sent via SAP CPQ Mailer or Default Mail Client. SAP CPQ Administrator is
able to determine if users should have one or both options.
● Users can attach generated document to the Email. This option is - SAP CPQ Admin is able to define
whether option to attach document is hidden, visible, or pre-selected for the user.
● Predefine Email Subject - Admin can predefine email subject. Also tags and expressions can be used.
● Predefine Email Body - Admin can predefine email body. Also tags and expressions can be used.
● Update Opportunity activity in Salesforce after sending Email to Customer - Set to TRUE in order to update
opportunity activity every time email is sent.
● Attach document to CRM opportunity when sending Email to customer - Set to TRUE to automatically
attach generated document to opportunity.
● Hide option to send document to opportunity from user - Set to TRUE to hide button 'Send to CRM'

Electronic Quote Acceptance Parameters

● Show Generated Document On View Proposal - Admin is able to set if generated document can be
downloaded from View Proposal.
● Show Quote On View Proposal - Admin is able to set if generated document is shown on View Proposal.
● Users can send quotation link in the Email to customer for electronic acceptance process. This option is -
SAP CPQ Admin is able to define whether option to send quotation link is hidden, visible, or pre-selected
for the user.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 297
 Tip

To make action Send Document to CRM visible on the Download Document and Send Email page, set
application parameter Hide option to send document to opportunity from user (located in the Email
Customers/Quote Acceptance Settings, in the Quotes submenu) to False.

Translating Predefined Email Body and Subject

You can translate a Predefined Email Subject or a Predefined Email Body using Dictionaries and CTX tags (our
example illustrates how to translate the Predefined Email Body). To translate a Predefined Email Subject, you
must first choose the Dictionary Key [page 595] of the value you want to appear in the email body. Once you
have done that, you should complete the following:

1. Go to Quotes Email Customers/Quote Acceptance Settings where you will click the syntax checker
button, select CTX from Available Tags and click Construct CTX tag.
2. Select Dictionary from the Select CTX tag object dropdown menu; select Current from the Select Dictionary
object
3. To insert the value of your previously chosen Dictionary Key, select Value from the Select Current object
dropdown menu.
4. Click the AB button (Show Editable Argument) from the Select Value argument to be able to insert your key
between brackets in the Your CTX tag: field
5. Click Insert.
6. Check to see that the Condition entry field has been populated with the appropriate CTX tag; note that you
will have to manually enter the Dictionary Key in the field.
7. Click Check Syntax and if the system OK's it, click Update.

SAP CPQ Setup and Administration Guide


298 PUBLIC Quotes Administration
8. Made sure that the Predefine Email Body entry field has been populated with your CTX tag and click Save.
9. Once you have downloaded documents in Quote and you are ready to send your email, your Predefined
Email Body will be translated and populated in the Email Form (Figure 6). Note that the system will
translate your Predefined Email Body to the language set by the Default Dictionary option on User Page.

4.15 Favorites

Favorites will be presented to users in a widget that will be placed in different pages in SAP CPQ (quote, catalog,
configuration and special page for Favorites).

For each favorite, users will be able to see favorite’s name, favorite’s description, part number, product that is
used as favorite’s base and category where this product belongs to. Users will be able to search favorites based
on all these fields. User will be able to sort all columns in this table. Search There are three check boxes on
which user will specify whether they want to search My Favorites, Company Favorites and All Favorites. By
default, all three check boxes will be selected.

Users will be able to add favorites to current quote or to create new quote (if one is not loaded yet in session)
by choosing one or more favorites from table and clicking on ‘Add to quote’. If result is success for favorite, it is
added to the quote. If at least one favorite is incomplete, user will not be immediately taken to quote. Instead,
same screen will be displayed to user from where he can continue to quote or complete favorite (clicking on
‘complete’ link will take user to product configuration with favorite loaded).

User will be able to delete only favorites they have created. System will prompt user whether he/she is sure
favorite should be deleted.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 299
User Side - catalog

Two new icons will be added to the catalog:

● Add to Favorites - Users will be able to add both simple and configurable products to favorites from the
catalog (for simple product there will be only ‘Add to Favorites’ icon).
● View Favorite Configurations for this product - In catalog, users will be able to see icon for configurable
products (as well as systems and collections).Mouse over for icon will be ‘View Favorite Configurations for
this product’. When user clicks on ‘Favorite Configurations’ link, favorites for that product will be displayed.

SAP CPQ Setup and Administration Guide


300 PUBLIC Quotes Administration
In product configuration, 2 new icons will be added – ‘Add to Favorites’ and ‘View Favorite Configurations for
this product’. Users who belong to appropriate user types will be able to define favorites for their company and
for all users (these check boxes will be displayed only to appropriate user types).

User Side - Quote

Users will be able to add favorites to current quote from the widget. New quote item action ‘Create Favorite’ will
be added. When users click on it, pop-up will be displayed where users will be able to enter favorite’s name and
description. Item action will be available for all main items (both configurable and simple products).

4.16 Images for Quote Actions

The purpose of this feature is to enable images for quote actions so that users can easily spot them.

User Side

In quote, depending on value of application parameter,actions will be displayed with images. Actions will be
sorted by sort order (actions with empty sort order field will be displayed at the end). If actions have empty sort
order (applicable for all existing clients), quote actions will be displayed in the same order as before. Some
actions will always be displayed and some will be collapsed.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 301
Setup

There will also be a flag (application parameter) – ‘Display images for quote actions’. When this flag is selected,
users will see quote actions in the quote. Default value for flag will be FALSE.

SAP CPQ Setup and Administration Guide


302 PUBLIC Quotes Administration
Admin will be able to edit action. When he clicks on ‘Edit’, he will be able to change :

● Action name - required field


● Sort Order (within quote)
● Primary action - Include info icon : Flag decides whether action is displayed always to users (cannot be
hidden by clicking on ‘Collapse’ button)
● Image - Admin will be able to upload image for quote action

4.17 MRC Column in Existing Quotes

The purpose of this feature is to allow MRC total amount as column in the list of existing quotes.

In Setup Quotes Column Headings and in Setup Quotes Search Fields administrator should
add new field ‘Total MRC Amount’ to the list of Available Fields.

This field will return total MRC amount on user’s side in the same way as field ‘Total Amount’ returns total NRC
price.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 303
4.18 Quick Config (also referred to as Reverse Search )

The purpose of the Quick Config functionality is to provide a shortcut for searching and configuring the
configurable product at the same time.

This is achieved by entering a part number and attribute values that you would like to configure for the
particular product. If your search query matches the search pattern for that product (previously defined
through SAP CPQ setup by administrator), then SAP CPQ finds your product, preselects attributes that you
stated in your search query and finally adds product to the quote.

In classic design, the Quick Config field is located at the right side of the main menu. In responsive design it is
located in the quote.

If you are using classic design quick config, you should choose “Part Number Search” from the dropdown, type
your search term and click on search button.

If you are using responsive design you should enter the quote, type your search term and click on the “gear”
button at the right side.

 Note

To make the next example applicable, make sure that parameter Setup General Application
Parameters tab General Parameters Optimize Part Number Search For Simple Products has its value
set to false. This parameter must be set to true only if you want to search simple products. If this parameter
is turned on, then Cat Matching table search is ommited, and search is only performed against products
table

Example

This example explains how to set up a Quick Config for the product. It also demonstrates this functionality in
action.

Steps for administrator to create a product that will be searchable by Quick Config.

1. 1. Go to SAP CPQ Setup Products and add a new configurable product named: Mercedes Benz w204
C class
2. 2. Define three attributes for this product as follows:
1. attribute Color with four possible values: gray, black, white, red
2. attribute Fuel with two possible values: petrol, diesel
3. attribute Equipment with four possible values: classic, elegance, avantgarde, amg
3. Create a part number as follows: mercedes-c-w204-<*VALUE(Color)*>-<*VALUE(Fuel)*>-
<*VALUE(Equipment)*>.
Note that, this way, you defined a dynamic part number that depends on selected values for three
attributes.
4. Under Current product click on Code Matching item.
Here define a code matching searching string that will be checked during quick config searching
5. Enter matching string as follows: mercedes-c-w204-

SAP CPQ Setup and Administration Guide


304 PUBLIC Quotes Administration
Note that code matching string should match a static part of part number so quick config could match it to the
right product.

Now, when you are done with quick config set up you can see how it works.

In classic design type search term as follows: mercedes-c-w204-gray-diesel-classic. SAP CPQ will check if
there is a product in your list of products that has this particular part number. Since there is no product with
this part number, quick config search begins. In the essence, quick config will check your list of Code Matching
strings to check if any code matching string matches your search term. If it is found (in our
example ”mercedes-c-w204-” code matching string will be found), quick config will then check if the rest of the
search term contains values of product attributes. If it contains, and values are valid (in our example they are),
quick config will redirect you to the Configurator with the product configured according to your search term.

Apparently, you will get the product Mercedes Benz w204 with preselected attributes color, fuel and
equipment. Their preselected values will be gray, diesel and classic, respectively.

Note that there is an assumption that each product that you want quick config to take into consideration,
should have unique part numbers and code matching strings. Also, quick config must find only one product
and configure it if your search term contains the appropriate, valid attrbiute values in the right order as you
defined it in part number field. If the order of attributes is not good, or attribute values provided through the
search term does not fit, then quick config will not be able to find the product and the appropriate message will
be displayed.

If you want to add more than one products to the quote this way, you should use bulk validation feature. Here is
an example how to add and configure two different products by using Bulk validation and add them to the
quote.

Let's assume that there is another product named “BMW Serie 3” in our product list and that Code matching
string bmw-e90-3- is defined for that product. Two attributes, color and fuel are defined and part number of
this product is bmw-e90-3-<*VALUE(Color)*>-<*VALUE(Fuel)*>

Go to bulk validation and type search terms bmw-e90-3-white-petrol and mercedes-c-w204-white-petrol-


elegance and click on validate button.
If you entered valid search term, quick config will find your products and offer you to add them to the quote.

4.19 Quick Product Search in the Quote

Quick product search on ‘Add Products’ section is used for finding all types of product (simple or configurable)
or favorites by typing any part of its part number, product name or description.

When user enters search criteria, SAP CPQ will look for products that have entered search criteria anywhere in
the part number/name/description, or on the beginning of the word(depends on how application parameter is
set).

When search doesn’t produce any results (both within favorites or products), SAP CPQ will show the messages
for part number search: Auto-complete search didn’t find any products or favorites with this part number. The
same message will be displayed if the appropriate name/description is not found.

When users click on See more results link in the message, SAP CPQ will try to find products by using standard
product search (as if user clicked on the product part number search) in the top right corner of the screen. If
SAP CPQ finds any results, user will be taken to the catalog where results are displayed (in the same way as if

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 305
user entered part number in the top right corner of the screen). If SAP CPQ doesn’t find any results, message
will be displayed: Additional search didn’t find any part numbers that contain searchcriteria.

Quick product search from the quote will be controlled with new application parameters, Product Search On
The Quote Can Find Configurable Products and Product Search On The Quote Can Find Product Favorites. They
are set on TRUE by default. If parameter Product Search On The Quote Can Find Configurable Products is set to
TRUE, SAP CPQ will look for configurable products when user starts typing either part number of name/
description (SAP CPQ will look for matching part numbers/names/descriptions in the same way as it looks for
simple products – there will be no reverse configuration done, parsing of descriptions and so on) If parameter
Product Search On The Quote Can Find Product Favorites is set to TRUE, SAP CPQ will look for favorites when
user starts typing either part number of name/description (SAP CPQ will look for matching part numbers/
names/descriptions in the same way as it looks for simple products – there will be no reverse configuration
done, parsing of descriptions etc.) When user clicks on the product, he will be taken to the product
configuration. If user came from the quote (and not from the catalog), breadcrumbs will be different – Current
Quote link will be displayed instead of categories. It is important to note that there will be no products loading,
processing of product rules, description parsing etc. when search results are displayed. This will happen only
when user clicks on the product.

Product search in Catalog

User has entered SAP CPQ and goes to catalog start page. Instead of browsing through categories, user can
start typing product, category or favorite name and find appropriate item. This will reduce the time it takes for
user to find the item that she is looking for – typically users know what they want to quote. This behavior will be
controlled with application parameters: Enable auto-complete product search in catalog by part number and
show part number in results and Enable auto-complete product search in catalog by product description and
show description in results. If those params are set to TRUE, user can choose will search be done via product
part number or product name/description.

User has different search options for categories: Entire catalog (Search is done for entire catalog) and Category
Name specified (Search is done within this category and all its sub-categories and their sub-categories and so
on).

When user clicks on ‘See more results’, they will be taken to the catalog where SAP CPQ will search for the
products in the same way as if user entered part number or name/description in the top right search box (in
top menu) and clicked on Search.

When search doesn’t produce any results (both within product or favorites), SAP CPQ will show following
messages for part number search: Auto-complete search didn’t find any products, categories or favorites with
this part number.

Within search results, user can click on:

● Configurable product - In this case, user is taken to the product configuration page
● Simple product - View details pop-up is displayed for this simple product
● User has the option to Add to quote. If this is clicked, product is added to the quote and user is taken to the
quote screen (if quote doesn’t exist at this moment, new quote gets created)
● Favorite - By using the same logic as for products, user is either taken to product configuration screen or
product details page is displayed with favorite name and description displayed instead of product name
and description
● Category - User is taken to this category

SAP CPQ Setup and Administration Guide


306 PUBLIC Quotes Administration
If catalog top is not displayed (parameter SAP CPQ Setup UI Design Catalog Layout Display top
selection menu in Catalog set to FALSE), Search widget will be displayed above the breadcrumbs.
Breadcrumbs will not be displayed for home category. Instead of Home Top Category , there will be only
one node Home Category that will take users to the top category page.

4.20 Quote Item Custom Fields

Custom fields on quote items are enabled so those are able to hold values of different types.

Users are able to edit values of item custom fields in the quote. When administrators add new (or edits
existing) custom field, they are able to administer item custom field:

● Name- This field is required. You cannot save two or more custom fields with the same name
● Label- When you are defining new fields, after you finish typing a name, the label is populated with what
was typed in the Name field.This field is required.
● Type- Once you define the type of the field, it cannot be changed. Five types are available:
○ Number - (selected by default). Custom fields of this type can have decimals. They can also have
negative values.
○ Date - Custom fields with Date type will be saved in the same way quote custom fields that are dates
are saved (in default format mm/dd/yy).
○ Currency - Custom fields of this type are calculated and saved in the same way as other prices in SAP
CPQ (list price, cost, extended amount etc.). Values will be saved in default currency (dollar) and
current market and currency factors will be applied when displaying this value.
○ Text - all characters are supported.(When admin is editing existing field, this field is displayed as read-
only)
● Attribute - This type allows you to connect your quote item custom field to an attribute. This way, in the
quote, you get the text box where you can select the quote item custom field value from the list of attribute
values. If you set an attribute of the type „Auto-complete“ to be connected to your custom field, then in the
quote, instead of drop box, you get the autocomplete text box where you can type a value that you want to
assign to your quote item custom field. As you start typing, autocomplete offers a list of values that either
starts with the typed combination of letters, or contains it. You can also set the value of autocomplete item
custom fields via scripting by using the Value Code property, as explained in Autocomplete Attributes
[page 44].
● Order of calculation - This field can accept only numbers. Default number is 10. If admin deletes everything
and clicks on the field, value 10 is saved for the field.
● Calculation Formula - This field will accept standard SAP CPQ tags.
● Display summary in the quote - Default value is FALSE.
● Always include in KO context - When the checkbox is selected, the field is included in the knockout context
and sent to the user's browser. Consequently, you can use the hidden quote item custom field for
processing in responsive templates. (Example: A quote item custom field controls whether a product’s cost
used for calculating the line item’s list price is editable. The field is hidden from quotes as users do not
need to see its value. However, if Always include in KO context is selected, administrators can use the field’s
value when defining the responsive templates to control whether the list item’s price is editable or not.)
● Contains Personally Identifiable Information - All information that could potentially be used to identify an
individual should be flagged as PII.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 307
● Sensitive Data - PII data can be flagged as sensitive [page 745] for an additional layer of protection.

 Note

If a quote item custom field is not visible on the quote layout, and the Always include in KO context is
selected, the field value will be visible in the hiddenValues observable array. To retrieve the field value, use
getHiddenValue(“QICF_Name”). If a field does not exist, the function returns FALSE. The function does not
have to contain the complete name of a quote item custom field. You can enter only a part of the name and
the system will find the first field whose name starts with the defined string and it will return its value.

Example

Log into SAP CPQ as an administrator and go to Setup. You need to create a new attribute of type Auto-
complete, and then select it as an underlying for your custom field. If you need instructions on how to create an
Auto-complete attribute, take a look at Autocomplete Attributes [page 44].

Once you have created the attribute, you want to create new Quote Item Custom Field by going to Setup
Quotes Quote Item Custom Fields and clicking on Add New button.

Form for adding a new Quote Item Custom Field is displayed.

Fill out Name field, select Attribute from the Type dropdown list and select the particular attribute (that you
have previously created). Click Save.

In order to be able to see your newly created Quote Item Custom Field, you need to do three things:

● add it to the appropriate permission group


● move it to the list of visible custom fields
● add it to the quote editable group

More information on how to add the custom field to the appropriate permission group is available on this link -
Quote layout permissions [page 310]

More information on how to move the custom field to the list of visible fields is available on this link - Visible
fields [page 310].

Also, you will have to insert a translation for your custom field into SAP CPQ dictionary. You can find more
information on how to achieve this by following next link - Cart item custom field localization [page 475]

Now, your Quote Item Custom Field is set up. To see how it works, go to catalog and create a new quote. Your
custom field is displayed in the quote as a column and you are able to select a value for it.

Once you define the type of the field, it cannot be modified. (When admin is editing existing field, this field is
displayed as read-only)

Order of calculation - This field can accept only numbers. Default number is 10. If admin deletes everything and
clicks on the field, value 10 is saved for the field.

Calculation Formula - This field will accept standard SAP CPQ tags.

Display summary in the quote- Default value is FALSE.


For each item custom field that is defined, new editable groups will be available in the Available Fields section in
Cart Fields Administration. Example – when user adds field ‘Delivery Date’, fields ‘Main Item – Delivery Date’

SAP CPQ Setup and Administration Guide


308 PUBLIC Quotes Administration
and ‘Child Item – Delivery Date’ will be added. When user deletes particular item custom field, all related
editable fields will be removed from here.

If certain field is found among quote editable fields (found in Editable Field group), it will be displayed as every
other editable field. When developing this template in xslt, we should make an effort to make it as easier as
possible for the admin to show item custom fields in the quote. When user clicks to edit currency item field, it
will be displayed as every other price field on the quote. When user edits number field, it will be displayed in the
same way other numbers (e.g. Quantity) are displayed on the quote. After user changes value for particular
field, SAP CPQ will display icon indication that currently displayed value is different from default value (default
value is calculated every time other quote item custom fields are calculated). This icon will be displayed only if
default value is not empty (if it is empty and user entered something in the field, no icon will be displayed).

 Note

Quote item custom fields are created and evaluated once quote items have been created, so they should
not be used in any item calculation, including item discount, multiplier, etc. Additionally, they should not be
used in any item information, including information regarding the product or attribute, such as description,
part number, price, cost, among others. That said, it is possible to use quote item custom fields in item
calculations or item information – but this can be carried out only with a Reconfigure action which can
negatively affect system performance. For this reason, it is not recommended.

SAP CPQ will execute calculation only if any of the data used by the quote has been changed. For example,
if the entered value of a particular custom field was 100, and has remained 100 following any changes, the
calculation will not be executed.

New CTX tags are developed:

● CurrentItem:
○ <*CTX(Quote.CurrentItem.CustomField(“CustomFieldName”) )*>
● Total:
○ <*CTX(Quote.Total.ItemCustomField(“CustomFieldName”).Summary )*>
○ <*CTX(Quote.Total.ItemCustomField(“CustomFieldName”).Maximum )*>
○ <*CTX(Quote.Total.ItemCustomField(“CustomFieldName”).Minimum )*>
○ <*CTX(Quote.Total.ItemCustomField(“CustomFieldName”).Count )*>
● Rolled-Up Items:
○ <*CTX(Quote.CurrentItem.RolledUpItemCustomField(“CustomFieldName”).Summary )*
>
○ <*CTX(Quote.CurrentItem.RolledUpItemCustomField(“CustomFieldName”).Minimum )*
>
○ <*CTX(Quote.CurrentItem.RolledUpItemCustomField(“CustomFieldName”).Maximum )*
>

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 309
4.21 Quote Layout

This functionality enables system administrators, and selected users, to personalize their shopping cart/quote.
This functionality is available in Responsive Design only.

To use Quote Layout, open Setup UI Design Quote Layout . Once you complete this entry, a page
comprising Quote Columns and Quote Sections will open up.

The Available Columns list box contains all available quote columns. From this list, admins can choose which
columns they will be displayed in the quote. Admins can use left and right arrows to move selected columns
from an Available Columns list box to the Selected Columns list box.

The Available Selections list box contains all available sections. From this list, admins can choose which
sections they will be displayed in the quote. Admins can use left and right arrows to move selected columns
from an Available Selections list box to the Selected Sections list box.

The administrator will be able to set permissions for layout based on permission groups. She/he will be able to
set which columns/sections will be allowed to chosen permission group.

Quote Layout Permissions

Quote Layout Permissions enables administrators to set permissions for the quote layout based on permission
groups. To determine which columns and sections will be allowed to which permission groups, go to Quote
Layout Permissions ( Setup Quotes . Once you click Add New you will be redirected to the Quote Layout
Permissions page where you can select which column/sections will be open to which permission group.

On this page you will be able to define one permission group that will be allowed to see Quote sections/
columns. You will be able to find this permission group from a list of User Types, Companies, Brands and
Manually Created Groups.

The permission group Visible to Everyone will be added by default. This permission group contains all
permission groups and cannot be deleted.

User Side

Users will be able to set their own Quote Layout and change behavior set for their permission group. This is
done on the User Quote Layout entry on the User Page menu. Once you click this link, a page will open up where
you will see:

● Quote columns
● Quote sections

The Available Columns and Available Sections: only columns and sections selected for the user’s permission
group will be displayed in the Available Columns and Available Selections lists. Selected columns will be
populated based on the selection in the Quote Layout Permission. Users can override this by hiding columns

SAP CPQ Setup and Administration Guide


310 PUBLIC Quotes Administration
they don’t want displayed it in the quote. Now take a look at what your selections will look like in your quote:

Quote Item Custom Fields

When Display summary in the quote is checked on the Quote Item Custom Field in Quotes in Setup: related data
should appear in Product Types and Totals in the quote if the field is selected in Quote Layout in Setup and on
the User Side.

 Note

Note that the value entered in the Type field must be Number or Currency. The system will not recognize
the Text value type.

Before viewing your Quote Item Custom Field in the quote, don’t forget to add your it to the appropriate Quote
Layout Permission Group and Quote Layout.

Related Information

Quote Troubleshooting

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 311
4.22 Quote Revisions

A quote revision is a copy of the quote from which the revision was created.

You can create as many revisions as needed and they do not have to be directly sourced from the master quote.
All revisions with a common master quote have the same quote composite number.

When you create a quote revision, all the data from the source revision will be copied to the new revision. All the
subsequent changes will not be propagated from the source quote to the revision and vice versa.

Quote revisions allow sales representatives to create multiple quote versions before the final agreement on the
offer is reached. Additionally, they can track how the offer changed over time by accessing the revisions’
history.

Example

A sales representative John is creating a quote for a family looking to refurnish their kitchen. The family wishes
to buy a table and a cupboard, so John creates a quote for the pieces that fit into their budget. Additionally,
John creates a quote revision and adds a set of chairs that match the design of the table and the cupboard. The
family likes the new offer but they think the price is a bit out of their range. John creates a new revision,
changes the discount and sets the revision as active. From there on, the revision will go through the approval
process and if the revision gets approved and the family accepts the offer, the deal will be closed. If new
changes to the offer are needed, John will create new revisions accordingly.

Setup Prerequisites

Handling quote revisions is completely on the user side of SAP CPQ, and other than the workflow settings, no
other adjustments need to be made by administrators.

First, you need to allow the user type to access the revisions-related actions. In Workflow/Approval
Workflow Permissions , allow the user type to access these actions:

● Edit
● View
● Delete
● New Active Revision
● New Revision
● History
● Set Active

Also, in Workflow/Approval Workflow , add the actions to the quote status. Secondly, in General
Application Parameters , find the parameter Available actions for Inactive Revisions and select one of these
values:

● Based on status of ACTIVE revision - users can delete and edit only the active revision. Also, when this
parameter is on, you can create an active revision only from an active revision.

SAP CPQ Setup and Administration Guide


312 PUBLIC Quotes Administration
● Based on status of EACH revision - users can delete and edit all revisions.

Application Parameters

Two application parameters influence the behavior of revisions:

● Reset Quote Expiration Date on New Revision - if set to TRUE, the system resets the expiration date of every
new revision. The parameter is supported by both Quote 1.0 and Quote 2.0.
● Copy Opportunity Id On New Revision - if set to TRUE, opportunity Id is copied to every new revision of the
quote. Supported only by Quote 1.0.

4.23 Create Quote Tab

Quote tabs are used for organizing information on quotes.

Context

There are several default quote tabs which enable you to access and edit billing and shipping information,
upload files to a quote and so on. You can also add new tabs if needed.

Quote tabs can only be created after general tabs [page 594] are created. To create a quote tab:

Procedure

1. Go to Setup Quotes Custom Quote Tabs .


2. Click Add New.

A new page is displayed.


3. Select a tab from the Tab Name dropdown list.

The Tab Name dropdown list shows all existing general tabs, including the ones you created.
4. In the Type dropdown list select one of these options:
○ Implementation File: when selected, it renders an existing SAP CPQ page in the quote tab. Some of the
pages are loaded in classic design only, even if you are using the responsive design. On selection, the
available implementation pages display in the Implementation file dropdown list. If you wish to add only
custom fields [page 272] to the custom quote tab, leave the Implementation File field empty. The blank
custom quote tab will still be visible and it can be added to quote. You can add custom fields at any
time.
○ /quotation/ShippingInfo.aspx

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 313
○ /quotation/ResponsAbilityCollaboration.aspx
○ /quotation/OrderConfirmation.aspx
○ /quotation/Opportunity.aspx
○ /quotation/CustomPage.aspx
○ /quotation/Cart.aspx
○ /quotation/Attachments.aspx
○ IFrame: when selected, you can develop custom logic on your own, or connect your tab to a custom
page you have developed. For example, you can create a new quote tab that will display key attributes.
For more information on creating custom logic for retrieving and displaying key attributes, refer to this
page .
5. Enter the rank in the Rank field.
6. Click Save.

The page where all the custom tabs are listed is displayed.

When a quote tab is created, it will be visible on the quote. You can manage the visibility of the quote tabs
on the Quote Tab Permissions [page 271] page.

4.24 Renewal Management


Renewal of product and services is one of the key business operations in many industries, especially in Service
oriented industry.

This feature is available only in Responsive Design.

Renewal process allows companies to resell the exact same product or a service after some period of time to
the client to whom it sold earlier. Various sales scenarios could be considered as renewal: Auto renewal,
Product upgrade, Contract extension, etc.

Products or services sold to some client are usually recorded in external system, (e.g. CRM) in the form of
“Assets”. Assets provide details on the existing products/services that Customer is using, like Product name,
Price, Install date, Usage end date, etc. All information contained in the “Assets” is usually sufficient to
understand when and what should be renewed for particular Customer.

SAP CPQ offers its own renewal process, so all assets can be stored locally. On this page, you will find more
information on how to set up a Renewal Process in SAP CPQ, and how to utilize it.

Create Asset Table

The first step in creating and enabling Renewal Process is to create an Asset table. This table is going to be
used to store details on each asset created in your SAP CPQ environment. Note that you can define only one
Asset table.

To create Asset table, log into SAP CPQ as an administrator and go to Setup Renewal Administration
Define Asset Table
There is a list of available fields, list of selected fields and a list of fields that you want to be visible on UI. Note
that in column Selected Fields, some fields are pre-selected and you cannot deselect them. You can add more

SAP CPQ Setup and Administration Guide


314 PUBLIC Quotes Administration
available fields, or create new custom columns and add them. Once you define a list of visible columns, you can
proceed by clicking on Save button. Your asset table is created. While you are using SAP CPQ, the asset table
can be accessed anytime, since the link to the Asset table is located in the top menu, under item Quotes. Next
figure shows how Asset table looks like.

The Renewal Process in Short

When you sell a product or service to some customer, you have the option to create an Asset. Later, when you
want to resell the asset to the client, you can go to your list of assets, pick the desired asset and add it to the
quote (renew the asset). Depending on how you setup your Renewal Process, once the quote is completed,
either existing asset is going to be updated, or new asset is going to be created.

You define the phase when the asset is to be created through Workflow. There is an action named Create Asset
that can be set in workflow as a post action for some quote status (e.g. Quote Won status), that will trigger
automatically.
An asset can be in one of the following four statuses:

● Purchased – Meaning that the asset is added to the asset table after the quote is completed
● Pending – Meaning that the asset is added to the new quote which is not yet completed
● Renewed – Meaning that the asset is renewed (Update Asset option is not checked), and new asset is
created from it

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 315
● Obsolete – Meaning that the asset is linked to inactive product version

Asset table contains information about products previously purchased by the customer. By selecting which
asset is to be renewed, and then clicking on the “Renew” button, the selected assets are added to the quote.
Assets may have different statuses, but only assets that are in the status “Purchased” can be renewed.

In the next section, you will read some details on how to setup your Renewal Process.

Setup action “Create Assets”

This is the action which creates Assets for you. To find and set up the action, go to Setup Workflow/
Approval Actions , and find action Create Asset from the list of actions. Click on edit icon.

The purpose of this action is to record products from the quote into the Asset Table. On edit page of the action
you can set conditions under which the action will be performed.

You may decide that only particular user group(s) should be able to perform Asset renewal. You can set up this
by setting action condition and/or workflow permissions. Action could be attached to the quote status, and
once the quote reaches the desired status (e.g. Closed/Won), the Main Line Items along with the product
configuration will be automatically recorded in the Asset Table.

Setup Product Renewal Options

Two options are available to control product behavior in the renewal process (Update Asset and Always Allow
Renewal). They can be found in the Additional Product Data section under Setup Products Product
Definition .

Update Assets

If this option is selected, then when Create Asset action is triggered, the existing asset is updated. It changes
status from Purchased to Pending. In the contrary, if this option is not selected, then the existing asset changes
its status to Renewed, and the new version of the asset with status Purchased is created (recorded in Asset
table).

Always Allow Renewal

If this option is selected, it will be possible to renew assets in the obsolete status. Those are assets that have
underlying product with an inactive product version.

Renewal management fully supports complex product configurations, including configurable products and
parent-child product configurations. When the user adds a configurable product from the asset table into the
quote, the entire configuration that was initially sold to the customer will be automatically added into the quote.

SAP CPQ Setup and Administration Guide


316 PUBLIC Quotes Administration
All line items from the parent-child configuration will be independently recorded as separate assets into the
asset table, so users can decide whether the entire configuration or only some parts of the configuration
should be renewed.

Example

In this example, we will show you the life cycle of the asset and how the renewal process works. We have a
configurable product named „Hosted email“. We want to sell this product and also to have an asset once it is
sold.

Earlier, we have configured our workflow in the way that our action „Create Asset“ triggers as a post action on
the quote status „Quote Won“.

We created new quote by configuring and adding our product „Email hosting“ and we put 10 as a number of
desired emails.

The quote is in status Open. We worked on the quote, entered billing and shipping information, generated
quote, and finally completed quote (meaning that quote is now moved to status „Quote Won“).

By completing the quote, action „Create Asset“ is triggered, since, previously it has been set as a post action.

Since action is triggered, our asset is recorded and we are able to find it in our Asset table (list of assets).

Our asset is now in status „Purchased“.

Assuming that we want to resell „Hosted email“ product to the same client, configured exactly the same, we
can select the asset in our Asset table and click on Renew button above asset table.

This way, we created a brand new quote with „Hosted email“ product configured exactly as it used to be. At this
moment our asset is in status „Pending“.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 317
Note that only assets that are in „Purchased“ status can be renewed. Therefor, we are not able to select our
assets yet, since the quote is not yet completed.

Now, we go to the quote, and update quantity field from 10 to 15, and complete the quote. Since the quote is
completed, action „Create Asset“ is triggered one more time.

Since the option „Update Asset“ is selected for our product, our asset is updated with new values (quantity is
now 15), and it moved to „Purchased“ status again.

If the option „Update Asset“ was not selected, then our previous asset would have gotten status „Renewed“,
and a brand new asset would had been created with status „Purchased“.

Now, if we go to product setup and make a product version 1 inactive, and option „Always Allow Renewal“ is not
selected, our asset will be in status „obsolete“.

But, if you select option „Always Allow Renewal“, then asset will be in „Purchased“ status and therefore
renewable.

4.25 Report Module

This feature gives users a Reports and Dashboards Overview Page that includes a list of existing reports in the
system. As an SAP CPQ administrator, you can search reports and executed different actions on them.

Here is a list of all actions available on each report: edit, clone, view, and delete.

A Delete button is located at the top right corner. Administrators can select several report actions and delete
reports in bulk. This enables administrators to avoid having to delete one by one. To create a new report click
New Report and to create a new dashboard, click New Dashboard. The list on the left contains all existing labels
created by admins users. Labels help admin users organize reports into categories. Administrators can add
more than one label to a report, which makes it easier to find a report when searching for it.

SAP CPQ Setup and Administration Guide


318 PUBLIC Quotes Administration
Labels

Labels help administrators organize reports or dashboards into any category. Labels do all the work that
folders do, but with an added bonus: more than one label can be applied to a report or dashboard.

By selecting a particular label, you can filter out items contained only in that label in which case the active label
will be marked red. You can reset the label selection by clicking the root node Labels view all items.

When viewing reports, you can tick the checkbox next to the reports, click Labels, and click the label you want
to associate with the report(s). You can also check the boxes next to several labels and click Apply.

To manage labels, you must locate one of the existing labels on the left-hand side and click it. When you right-
click it, it will open a context menu with the following actions: add, rename and delete.

Labels can be added as a sub folder of a root label, or as a sub folder of existing labels. You can also rename the
label as well as delete it.

The sub-label can be created below a label that already exists by selecting which label you would like to place it
under. Then click Add Label in the context menu. The hierarchy can also be changed by moving nodes using
drag and drop.

Create New

When you click New, you can choose to create the following: report, dashboard, and predefined report.

You can also create a new report using the Report Wizard. To do so, you must choose New Report to go to
Report Wizard.

The first step of the Report Wizard contains the following fields:

● Report name - required field


● Description - optional
● Report data source - required
● Report type - required

The Report data source field contains a list of views/tables or stored procedures that were configured to be a
possible source of data for this report. All tables/view and queries that are created in the Report module
administration will be listed when creating a new report. You will also be able to create a data source, which can
be done in the administration section of the Report module. Report Type supports three types of reports: Table,
Chart and Gauge. Depending on the selected report type, you will have different screens for entering the
remaining information needed to complete the report creation process.

Report Custom Filters

A report module enables report creators to add custom filter conditions, to group and organize them and to
provide report parameters (called dynamics and dynamic inputs). This will allow end users to provide
additional data for retrieving records from the data source and displaying them on the report.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 319
Adding Predefined Conditions

You can add a filter condition for any of the available fields from the selected data source by choosing a value
from the Select drop-down list.

The default option for any of the new conditions is a predefined value. A predefined value is used to filter
records from the data source and it cannot be changed when executing the report.

Adding Dynamic Conditions

If report creators want to provide an additional level of flexibility they can create a condition that will be
resolved when the report is being executed. Such conditions are composed from a set of predefined system
parameters, such as @ContextValueKey, $UserId, $UserName etc.

Adding Dynamic Input Conditions

Greater flexibility can be achieved with dynamic input conditions. These conditions represent ad-hoc
parameters which must be provided by a report consumer at the time of execution.

When defining dynamic input parameters, as an administrator, you can:

● Choose if the parameter is mandatory.


● Assign a type for that parameter (in order to display matching parameters to a selected criteria type).
● Assign an order in which the parameters will be displayed.
● Assign a label to a parameter (for a user-friendly display).
● Provide look-up parameters if the parameter value must be selected from particular data source.

Grouping Conditions

With grouping, a report creator can organize existing conditions in a hierarchical way and connect them with
either AND or OR logical operator. This new group section can contain any number of simple conditions or child
groups. You can change the position of the simple element or group using a drag and drop functionality.

While we don't recommended it, it is possible to nest an unlimited number of subgroups within any group of
conditions. A logical operator for a group can be changed from AND to OR and vice versa by clicking a toggle
button in the group header which shows the current logical operator. You can collapse and expand a group and
unigroup's conditions at any point, as well as delete a group.

The Tabular Report Type contains one step that must be completed in order to add the information needed for
the generation of this report type. You must choose what fields will be included in the report and decide if you
want to create a row or column groups. You can make the selection by dragging and dropping the fields from
the area “Available fields” to areas, such as “Row Groups”, “Column Groups” or “Values.”

You can apply some of the aggregate functions on selected fields.

SAP CPQ Setup and Administration Guide


320 PUBLIC Quotes Administration
The Chart Report Type Page provides many different types of charts. As an administrator, you can choose bars,
pies, columns and other graphic types.

Fields for a chart report are selected in the same way as fields for a tabular report type.

Report Viewer Page

The Report Viewer Page contains the report and, alternatively, report parameters defined using dynamic input
fields created in the Report Criteria page. Based on the report filter definition, some fields can be made
mandatory or can use existing lookup views as the data source for selection.

Microsoft Report Viewer Control is used for report rendering on the page. It contains standard controls for
paging, searching and exporting (pdf, excel, word).

A Report Viewer Page may contain several tabs for faster updating of the report definition or report filter
definition on the left-hand side: Report, Criteria Definition, and Report Definition.

Report Viewer Page – Additional layout parameters

Based on the report type a report view page can contain additional control with parameters related to the
current report. Chart types reports can be changed inline. This inline change is temporary and allows end-users
without administrative permissions to change parts of report layouts, as well as export such reports.

Report Module Administration Section

When you click Administration Data Source , the list of all data sources (table/query/view) is displayed.

You can create a new data source and when you click Add, the following fields are displayed: display name,
type, and name.

All fields are required. When Table or View is chosen, a list of all tables and views will be displayed, with an
administrator able to choose a desired table/view.

If Query is chosen, a field in which a SQL query should be written will be displayed.

Lookup Fields

This section focuses on the following:

● Explaining filter parameters section of the report Add/Edit.


● Giving administrators the ability of having drop-down menus as filter parameters.
● Building filters through drop-down options.

Creating a lookup field can help improve the efficiency of the data entry process. The fields that are candidates
for lookup are usually the ones which are foreign keys. Let’s say that in a table called “Activity” we have a

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 321
“UserId” column, and we want to allow users a simple way of entering a value for this field when defining the
report filter. You can enter a value, but usually this information is hard to remember and prone to errors. Report
module allows end users to define what data sources can be used as lookup sources.

The first step is to enter a new data source and choose a User table.

The “Is Lookup” field must be checked and other two fields (Value and Display Field) must be populated in
order to create a lookup source. The Value field, in this case, is a user id; for a display field you can choose any
column from the Users table, for example, username, email, first name, last name, etc.

The second step is to open another data source and locate an “uid” column from this source. When you open a
detail view of that column you will see a new field called “Lookup.” This drop down will now contain a “Users”
data source previously defined as lookup.

Instead of numeric control, the new lookup control will be displayed on a report filter page when once you
choose this column. This control is more advanced and contains one label and two buttons.

When you click the first button a window with advanced grid control will pop up. It will include search, paging
and a sorting functionality. At this point, you can make your selection by double-clicking a row in the grid, or by
selecting a row and then clicking OK.

The Grid Control will contain only those columns that we chose in the Display Name field. Once you select an
item from the grid, a label will contain the Display Name.

Report RDL Templates

The Report Module supports adding RDL report templates which can define a standard layout for various
reports, such as defining the standard header and footer section on all reports. This RDL template file is a
standard RDL report, created using a Microsoft Report Viewer, Visual Studio or some other tool. An RDL
template can be any valid report definition file containing a placeholder element. This can be rectangle element
named “Report”. This rectangle element will define the actual size and position, so you can specify how much
space is allowed for a table, chart or gauge.

The Lookup Control used for report template selection also contains a preview functionality which enables you
to see the preview of the RDL Template. We recommended that the RDL template creator puts a visible border
on a rectangle placeholder so that a report creator can see its position and the dimension before generating a
report with a selected template. The placeholder border will be removed once the report is generated, so it is
used only for preview purposes.

New templates can easily be uploaded on the same control, by clicking the Add button.

Viewing and Configuring Dashboards

Dashboards give you a bigger overview by displaying summaries of different reports as widgets on a single
page. With a dashboard, you can monitor more reports at once. A list of existing dashboards can be found on
the “Reports and Dashboards Overview Page” where you can easily find or create a new dashboard.

You can insert am existing report or frame in each widget on the dashboard page. You can choose to insert a
chart type report or a tabular report in iframe. To do so, you must specify the format type that will be used for
this report (pdf or image).

SAP CPQ Setup and Administration Guide


322 PUBLIC Quotes Administration
Multilanguage - Translation

Internationalization and localization are supported in Report Module. The Application Client of Report Module
can specify culture and language which should be used. Appropriate Date, Time and Numeric Formats are
applied based on the culture used.

Adding New Languages is also supported in the administration part of Report Module. Import and export of
existing data enables you to edit translation in Excel and then easily upload it back onto the server.

User Side

When you click the Graphic Reports page, you will be redirected to the page where all reports visible to users
will be displayed in the iFrame. Users will be able to run/view reports on the User Page. All reports that are
visible to a user's permission group, will be displayed on this page. Default reports will be visible to users as
well. If the user is an SAP CPQ administrator, he or she will be able to view/run all default reports. But if the user
is not an SAP CPQ administrator, the user will be able to run only the context reports with associated him or
her.

4.26 Standard Quote Fields

Listed here are the standard quote fields that are present in the quote by default.

Quote Header Standard Fields

Standard Quote Field Description

Status The current status of the quote in the workflow (such as


Open, Preparing, Approved, Rejected, Order Placed, and so
on).

Market The market selected for the currently open quote, with a de­
fined currency, market factor, and pricebooks.

Pricebook The pricebook selected for the currently open quote, which
contains defined product prices.

Sales Order ID The sales order ID from an external ERP system.

Date Created The date when the currently open quote was created.

Date Modified The last time the currently open quote was modified.

Effective Date The date that determines which prices are displayed for
items in the quote, depending on the period for which the se­
lected pricebook entries are valid.

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 323
Standard Quote Field Description

Revision The active revision of the currently open quote.

Cart Comment The field that allows users to leave comments on the quote.

Quote Item Standard Fields

The fields described in this table are standard quote item, product type, and total fields in the quote.

Standard Item Field Description Formula

Quantity The total number of an item included in NA


a quote.

NRC List Price The price at which the manufacturer NA


recommends that the retailer sells the
product. Also known as recommended
retailer price.

MRC List Price The price at which the manufacturer NA


recommends that the retailer charges
the product on recurring basis.

NRC Discount Percent The percentage discount that is given Item.DiscountPercent = 100 * Item.Dis­
to the list price of the product. countAmount / Item.ListPrice

MRC Discount Percent The percentage discount that is given Item.MrcDiscountPercent = 100 *
to the MRC list price of the product on Item.MrcDiscountAmount /
recurring basis. Item.MrcListPrice

NRC Extended Amount Generated by multiplying quantity with Item.ExtendedAmount = Item.NetPrice


net price. * Item.Quantity

MRC Extended Amount Generated by multiplying quantity with Item.MrcExtendedAmount =


MRC net price. Item.MrcNetPrice * Item.Quantity

NRC Cost The value used for producing the prod­ NA


uct.

MRC Cost The value used for producing the prod­ NA


uct on recurring basis.

NRC Extended Cost Generated by multiplying the quantity item.ExtendedCost = item.Cost *


of the product with the cost of the prod­ item.Quantity
uct.

MRC Extended Cost Generated by multiplying the quantity Item.MrcExtendedCost = Item.MrcCost


of the product with the MRC cost of the * Item.Quantity
product.

NRC Extended List Price The list price of a product multiplied Item.ExtendedListPrice = Item.ListPrice
with its quantity. * Item.Quantity

MRC Extended List Price The MRC list price of a product multi­ Item.MrcExtendedListPrice =
plied with its quantity. Item.MrcListPrice * Item.Quantity

SAP CPQ Setup and Administration Guide


324 PUBLIC Quotes Administration
Standard Item Field Description Formula

NRC Discount Amount The amount that is discounted from the Item.DiscountAmount = Item.ListPrice
list price of the product. * Item.Quantity * Item.DiscountPer­
cent / 100

MRC Discount Amount The amount that is discounted from the Item.MrcDiscountAmount =
list price of the product on recurring ba­ Item.MrcListPrice * Item.MrcDiscount­
sis. Percent / 100

NRC Net Price The value that customers pay to the item.NetPrice = item.ListPrice * (1 -
seller after discounts are subtracted item.DiscountPercent / 100)
from the list price.

MRC Net Price The value that customers pay to the Item.MrcNetPrice = Item.MrcListPrice -
seller after all discounts are subtracted Item.MrcDiscountAmount
from the list price on recurring basis.

Description User's description of the product. NA

ItemType Base or optional item types. Optional NA


items aren’t taken into account for the
final price.

NRC Manufactures Gross Margin The net revenue that the seller retains Item.GrossMarginPercent = 100 *
after deducing the costs of producing a (Item.ExtendedAmount - Item.Exten­
product from the product's net price. dedCost) / Item.ExtendedAmount

MRC Manufactures Gross Margin The net revenue that the seller retains Item.MrcGrossMarginPercent = 100 *
after deducing the costs of producing a (Item.MrcExtendedAmount -
product from the product's net price on Item.MrcExtendedCost) / MrcExtende­
recurring basis. dAmount

NRC Rolled Up Gross Margin Percent The sum of percentage gross margin of Item.RolledUpGrossMarginPercent =
all child items. 100 * (Item.RolledUpExtendedAmount
- Item.RolledUpExtendedCost) /
Item.RolledUpExtendedAmount

MRC Rolled Up Gross Margin Percent The sum of percentage gross margin of Item.RolledUpMrcGrossMarginPercent
all child items on recurring basis. = 100 * (Item.RolledUpMrcExtendedA­
mount - Item.RolledUpMrcExtended­
Cost) / Item.RolledUpMrcExtendedA­
mount

NRC Rolled Up Discount Percent The sum of discount percent of all child Item.RolledUpDiscountPercent = 100 *
items. Item.RolledUpDiscountAmount /
Item.RolledUpListPrice

NRC Rolled Up List Price The sum of list price of all child items. NA

NRC Rolled Up Extended List Price The sum of extended list price of all Item.RolledUpExtendedListPrice =
child items. Item.RolledUpListPrice * Item.Quantity

NRC Rolled Up Extended Amount The sum of extended amount of all Item.RolledUpExtendedAmount =
child items. Item.RolledUpNetPrice * Item.Quantity

NRC Rolled Up Cost The sum of cost of all child items. NA

NRC Rolled Up Extended Cost The sum of extended cost of all child item.RolledUpExtendedCost =
items. item.RolledUpCost * item.Quantity

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 325
Standard Item Field Description Formula

NRC Rolled Up Discount Amount The sum of discount amount of all child Item.RolledUpDiscountAmount =
items. Item.RolledUpListPrice * Item.Quantity
* Item.RolledUpDiscountPercent / 100

NRC Rolled Up Net Price The sum of net price of all child items. item.RolledUpNetPrice = item.RolledU­
pListPrice * (1 - item.RolledUpDiscount­
Percent / 100)

MRC Rolled Up Discount Percent The sum of discount percent of all child Item.RolledUpMrcDiscountPercent =
items on recurring basis. 100 * Item.RolledUpMrcDiscountA­
mount / Item.RolledUpMrcListPrice

MRC Rolled Up List Price The sum of list price of all child items on NA
recurring basis.

MRC Rolled Up Extended List Price The sum of extended list price of all Item.RolledUpMrcExtendedListPrice =
child items on recurring basis. Item.RolledUpMrcListPrice *
Item.Quantity

MRC Rolled Up Extended Amount The sum of extended amount of all Item.RolledUpMrcExtendedAmount =
child items on recurring basis. Item.RolledUpMrcNetPrice *
Item.Quantity

MRC Rolled Up Cost The sum of cost of all child items on re­ NA
curring basis.

MRC Rolled Up Extended Cost The sum of extended cost of all child Item.RolledUpMrcExtendedCost =
items on recurring basis. Item.RolledUpMrcCost * Item.Quantity

MRC Rolled Up Discount Amount The sum of discount amount of all child Item.RolledUpMrcDiscountAmount =
items on recurring basis. Item.RolledUpMrcListPrice * Item.Roll­
edUpMrcDiscountPercent / 100

MRC Rolled Up Net Price The sum of net price of all child items Item.RolledUpMrcNetPrice = Item.Roll­
on recurring basis. edUpMrcListPrice - Item.RolledUpMrc­
DiscountAmount

Product Type Standard Fields

Product Type Standard Field Description Formula

Product Type NRC Discount Percent The percentage discount that is given ProductType.DiscountPercent = 100 *
to the product type and applied to the ProductType.DiscountAmount / Pro­
list price of each product of the same ductType.ListPrice
type.

Product Type MRC Discount Percent The percentage discount that is given ProductType.MrcDiscountPercent =
to the product type on recurring basis ProductType.MrcDiscountAmount /
and applied to the list price of each ProductType.MrcListPrice
product of the same type.

Product Type NRC Discount Amount The amount that is discounted from the ProductType.DiscountAmount = Pro­
list price of the product type and each ductType.ListPrice - ProductType.Net­
product separately. Price

SAP CPQ Setup and Administration Guide


326 PUBLIC Quotes Administration
Product Type Standard Field Description Formula

Product Type MRC Discount Amount The amount that is discounted from the ProductType.MrcDiscountAmount =
list price of the product type and each ProductType.MrcListPrice - Product­
product separately on recurring basis. Type.MrcNetPrice

Product Type NRC Extended Cost Calculated by summarizing the ex­ NA


tended cost for all products of that
type.

Product Type MRC Extended Cost Calculated by summarizing the MRC NA


extended cost for all products of that
type.

Product Type NRC Extended Amount The total extended amount of all prod­ NA
ucts in that product type.

Product Type MRC Extended Amount The total MRC extended amount of all NA
products in that product type.

Product Type NRC Extended List Price The total extended list price of all prod­ NA
ucts in that product type.

Product Type MRC Extended List Price The total MRC extended list price of all NA
products in that product type.

Product Type NRC Manufactures Gross The total NRC Manufactures Gross ProductType.GrossMarginPercent =
Margin Margin of all products in that product 100 * (ProductType.NetPrice - Product­
type. Type.Cost) / ProductType.NetPrice

Product Type MRC Manufactures Gross The total MRC Manufactures Gross ProductType.MrcGrossMarginPercent =
Margin Margin of all products in that product 100 * (ProductType.MrcNetPrice - Pro­
type. ductType.MrcCost) / Product­
Type.MrcNetPrice

Total Standard Field

Total Standard Field Description Formula

Item Total NRC Extended Amount The total extended amount of all items Totals.Amount = Totals.NetPrice
in the quote.

Item Total MRC Extended Amount The total MRC extended amount of all Totals.MrcAmount = Totals.MrcNet­
items in the quote. Price

Item Total NRC Discount Percent The total discount percent of all items 100 * Total Product Discount Amount /
in the quote. Total List Price

Item Total MRC Discount Percent The total MRC discount percent of all 100 * Total MRC Product Discount
items in the quote. Amount / Total MRC List Price

Item Total NRC Discount Amount The total discount amount of all items Totals.ProductDiscountAmount = To­
in the quote. tals.ListPrice - Totals.NetPrice

Item Total MRC Discount Amount The MRC total discount amount of all Totals.MrcProductDiscountAmount =
items in the quote. Totals.MrcListPrice - Totals.MrcNet­
Price

SAP CPQ Setup and Administration Guide


Quotes Administration PUBLIC 327
Total Standard Field Description Formula

Item Total NRC Extended Cost The total extended cost of all items in NA
the quote.

Item Total MRC Extended Cost The total MRC extended cost of all NA
items in the quote.

Item Total NRC Extended List Price The total extended list price of all items NA
in the quote.

Item Total MRC Extended List Price The total MRC extended list price of all NA
items in the quote.

Item Total NRC Manufactures Gross The total manufactures gross margin of Totals.NrcGrossMarginPercent = 100 *
Margin all items in the quote. (Totals.NrcNetPrice - Totals.NrcCost) /
Totals.NrcNetPrice

Item Total MRC Manufactures Gross The total MRC manufactures gross Totals.MrcGrossMarginPercent = 100 *
Margin margin of all items in the quote. (Totals.MrcNetPrice - Totals.MrcCost) /
Totals.MrcNetPrice

MRC Total Sum of all item MRC extended NA


amounts.

Total Sum of all item extended amounts after NA


deducing VAT and taxes.

SAP CPQ Setup and Administration Guide


328 PUBLIC Quotes Administration
5 Workflow-Approvals

The following topics explain the approval workflow in SAP CPQ.

Workflow Actions [page 330]


The following section describes the workflow actions.

Outbound SAP CPQ Emails [page 339]


Outbound emails are all emails sent from SAP CPQ to clients.

Notifications [page 342]


The following section describes detailed function of notifications.

Email Lists [page 352]


The following section describes detailed function of Email lists.

Approval Rules [page 354]


The following section describes detailed function of approval rules.

Statuses [page 380]


The Statuses link under Workflow/Approval drop-down provides information about an order or
quotation status to users.

Workflow Permissions [page 381]


The Workflow Permissions section is used to control which user groups can perform which actions.

Likelihood of Approval [page 383]


This functionality allows extending approval rules.

Required Fields By Workflow Action [page 384]


The Required Fields by Workflow Action section determines which fields are required before a certain
workflow action can be performed.

Approval Auto-Reminder [page 385]


The Approval Auto-Reminder feature enables you to schedule automatic reminder emails that are sent
to approvers if they do not take action on quote approval requests for a predefined number of days. As
a result, the number of quotes awaiting approval is reduced and the approval process is streamlined.

Approving Quotes in One Click [page 386]


The One-click Approval feature streamlines the approval process by enabling Approvers to accept or
reject Quotes directly from the email, without logging into SAP CPQ.

Item Actions Workflow [page 388]


The following section describes the Item Actions workflow.

Out of Office for Approvers [page 389]


The Out-of-Office feature for SAP CPQ approvals enables Approvers on leave to delegate their Approval
requests to substitute Approvers.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 329
5.1 Workflow Actions

The following section describes the workflow actions.

After defining statuses, the administrator needs to define the actions that will change the quote/order status.
For example, a desired behavior may be to change quote status from Open to Order Placed if a user clicks on
the Place Order button. There are three states in the workflow actions. Each relates to a tab on the load quote
page.

● My Quotes - (available for all users) My Quotes tab displays all quotes that the currently logged in user
created. This will likely be the most robust workflow as it is how each user interacts with their quotes.
● Waiting for approval - (This contains no quotes for most users except for users who are Approval Parents
for other users). These are the quotes of other users that the currently logged-in user is their approval
parent. This could be setup so that the Approval Parent has the option to:
○ Approve Quote
○ Reject Quote
○ or Forward Quote
Forward Quote may be used to forward the quote to another Approval Parent. This would be applicable in a
case where the value of the quote is higher than their allowed approval amount, for example.
● Other Quotes - (this also contains no quotes for most users except for the users given visibility rights) -
These are quotes of other users that the logged-in user is authorized to see through rules set in the Quote
Visibility section under the Quotes admin menu.

 Note

Although some users might be marked as "inactive" in administration, their quotes are still visible, and they
might appear to some users on the "other quotes" tab.

The relationships between statuses and actions are specified through the Workflow Actions section of the
administration. This section is invoked by clicking on the Workflow Actions link under Workflow/Approval admin
menu.

The default view of the Workflow Actions section is the Table View. This displays the workflow in a grid pattern.
The table view is very efficient for defining workflow actions because it offers fewer mouse clicks and a table
that shows all defined actions on one screen. The left side of the table contains Pre-Action (Start) Statuses and
the top of the table contains Post-Action (End) Statuses. The list of actions in each intersecting square specifies
which actions will change the status listed all the way on the left side to the status listed all the way on the top.
For example, if a user clicks on Place Order while the quote is Open, the quote status will be changed to Order
Placed.

Alternatively you can view the workflow in a List View. This lists each start and end status along with the tab,
action name, conditions, pre actions, post actions and notifications. The List View is particularly useful for
viewing which actions have conditions, notifications, pre actions, and/or post actions defined. It also allows you
to quickly copy, delete, edit, and search for a workflow event. In this chapter we will discuss workflow
administration using the Table View.

 Note

Statuses can be added or removed as described in Statuses [page 380].

SAP CPQ Setup and Administration Guide


330 PUBLIC Workflow-Approvals
The status transitions with no actions defined have the sign. The status transitions with actions already
defined have the sign. When actions are already defined, click the sign to view the actions.

You can also click Expand All to view all defined actions, or click the [+] sign in each row or column to show all
defined actions in the row or column respectively.

Status relations can be defined, not only for User's own Quotes (My Quotes), but for Quotes assigned to the
user for approval (Waiting for approval), and for Other Quotes (for the users allowed to see quotes logged by
other users). To switch between My Quotes, Waiting for Approval and Other Quotes areas, select the
corresponding tab at the top left corner of the table. Consequently, status relationships can be defined for any
one or all three from this screen. The active status area has the same background color as the top border of the
table.

Example

The following shows the Workflow Actions table for SMB computer store with the Open (start) row expanded:

On the user side, adding an item to quote creates a quote and sets the status to open (or whatever status is set
as the default). A first set of actions are visible from the quotation tab.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 331
In the My Quotes tab under Existing Quotes on the user side, another set of actions are visible to the customer.

The process of specifying an action is performed by clicking the or button in the intersection between the
Start Status and the End Status.

SAP CPQ Setup and Administration Guide


332 PUBLIC Workflow-Approvals
Editing a workflow event/intersection displays the status administration page where you can add and remove
actions for that workflow event/intersection. At the top of the page the Start Status is given and the End Status
is given.

Next, select the actions that will generate the change.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 333
 Note

For more information on actions, see Action Details [page 336].

Next to the actions are buttons that will allow further tailoring. The following are available for each action:

● Automatic Configuration - Automatic configuration determines if the items in the quote use their initial
product rules and pricing (the product rules and prices used when the quote was generated) or if the items
in the quote need to be reconfigured (updated using the current product). Selecting the Automatic
Reconfigure checkbox adds a suffix of R to that action, like Copy-R, or Edit-R which means that the item
would be revised or reconfigured using the current rules and pricing every time the action is used.
Unchecking the Automatic Reconfigure checkbox ensures that the items in the quote keep the original
rules and pricing used at the time the item was added to the quote.
● Perform On - Will either be Cart or Cart Item. Cart Item actions are generally action buttons visible in the
Quotation tab, while Cart actions are generally actions performed on the quote from the load quote page.
● Condition - Allows a check to be performed to determine whether or not the action will be available.
● Notification - Gives the ability to send out email notifications when the action is performed.
● PreAction/PostAction - Custom actions can be done before or after the action is completed. Commonly
this is used for CRM actions such as Create/Update Account or Contact.

 Note

Users will be unable to use the actions defined unless they have been given permission to see the actions.
This is defined in Workflow Permissions [page 381].

Next to option for switching views, there are two more options: to copy workflow (since there are three
workflow tabs sometimes it can be usefull to copy the workflow from one to another) and clear workflow.

Quote actions

The following two actions are available:

● Calculate action, also referred to as Reprice action


Once you add product(s) to the quote, all calculations are complete. When you change something in the
quote (discount percent, price, etc.), then you should click on action calculate to get the updated
information, prices, etc. in the quote
● Reconfigure action
This action reconfigures all items present in the quote. Also this action triggers calculate action at the end
of its execution. This action is more time consuming than calculate action.

Cart Item Actions

Upgrade to New Product Version – when a product has a newer version than the one that is already in a quote,
and something is changed in the quote while this check box is selected, users will be prompted to update
products to newer versions, or products will be upgraded automatically.

SAP CPQ Setup and Administration Guide


334 PUBLIC Workflow-Approvals
When the action is triggered, a popup window with a progress indicator displays and shows how many of the
total number of items have been upgraded.

 Note

To ensure these improvements work properly, the Upgrade to New Product Version action needs to be
enabled for the same quote status in both Workflow and Item Actions Workflow in Setup.

If you’re using Quote 1.0, you can check if a quote has incomplete items by using these CTX tags:

● For checking whether a quote has incomplete items (<*CTX(Quote.HasIncompleteItems)*>)


● For checking whether a specific item has incomplete configuration
(<*CTX(Quote.CurrentItem.HasIncompleteConfiguration)*>)

5.1.1 Conditional Reconfigure Action

The following section describes the Conditional Reconfigure action.

Action Conditional Reconfigure is similar to the action Reconfigure. It will apply newest product model to the
items in the quote. It differs from the Reconfigure action by the fact it does not reconfigure quote items always,
but only if the product version has been changed in the meanwhile, thus saving the time needed for the
operation. This means that Conditional Reconfigure action is faster if product version has not been changed.

Product version can be set in the Product Setup Wizard for each product. If Product Version is empty quote
items will always be reconfigured. If it's not empty it is compared to the one saved in the quote item to
determine if Conditional Reconfigure should reconfigure that item or not.

New flag is added to the workflow (next to Automatic Reconfigure) called Conditional Reconfigure. This is
available in the workflow for all actions where Automatic Reconfigure is available. When this flag is set and
action is executed in the workflow, same logic will be applied as in action Conditional Reconfigure: iterating
through all quote items , compare product versions and reconfigure item and save current product version if
product versions are different.

5.1.2 Auto Quote Expiration

This is scheduled action that is executed once a day at midnight (server time) and it will automatically push all
quotes that are due to expire to Quote Expired status (or any other desired status), fire post actions or trigger
notifications for each quote. Since this feature is not enabled by default, there are certain steps that need to be
performed in order to enable it.

By default, quotes will expire 30 days after they have been created. This time period is controlled with the
custom field Quote Expiration Date ( Setup Quote Custom Fields ).

Quote Expiration Date is a standard custom field" which means that its Name and Type cannot be changed nor
it can be deleted. Everything else is configurable.

In the Quote Expiration Date window, you can see the Formula column is set to
<*CTX(Date.AddDays(30))*>, and Calculation Type to Once, when quote is created and there is no
selection for Tab (so it won't be visible to users).

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 335
After adjusting these settings, user will need to set up the Workflow ( Setup Workflow/Approval
Workflow ). Select Other Quotes tab and add Quote Expiration action for desired Start and End status
combination (For example: Start Status: Open; End Status: Quote Expired).

 Note

Ensure to select the Other Quotes.

5.1.3 Action Details

The following section describes the detailed function of different actions.

Send Quote XML

The purpose of this functionality is to enable users to send SAP CPQ Quote XML explicitly (by invoking the
appropriate action on the quote), or implicitly (by setting this action to be a pre or post action for some other
quote action).

The action can send Quote XML to:

● URL address (by using Http Post Method)


● FTP address

Workflow Setup - The action Send Quote XML should be set up in the workflow. This means that appropriate
user groups need to have privileges to execute this action, and that this action should be put in workflow. Send
Quote XML can also be defined as a pre or post action to some other action (for example to Place Order).

Send XML to Http Address - If administrator wants the action to send XML to a Http Address , under Setup
General Application Parameters , on the Shopping Cart and Quote tab there is a parameter: When action
'Send Quote Xml' is executed, send xml to Http Address:. For more information on this
parameter and the following parameters, see Application Parameters [page 545]. This parameter is required
for Http sending, and it should be filled with appropriate Http Address.

Send XML to FTP Address - If the administrator wants the action to send XML to an FTP Address, the following
parameters should be adjusted under Setup General Application Parameters :

● When action 'Send Quote Xml' is executed, send xml to FTP Address: This parameter is
required for FTP sending and it should be filled with the appropriate FTP Address.
● Action 'Send Quote Xml' sends quote xml under the name:This parameter should be filled
with the template for XML document name that will be sent to FTP server. Example: Quote
<*CTX(Quote.CartCompositeNumber)*> will create XML document that will contain the quotation
number in its name (for example – Quote00010024.xml).
● Ftp Path: This parameter should be filled with the local folder path of the FTP server, where the file will be
saved.
● Ftp Username: This parameter should be filled with the FTP server username.
● Ftp Password: This parameter should be filled with the FTP server password.

SAP CPQ Setup and Administration Guide


336 PUBLIC Workflow-Approvals
Action execution - Users can execute the action explicitly by invoking it from the quote, or implicitly by invoking
some other action, that will activate "Send Quote XML" as its pre or post action.

Send BOM XML

The purpose of this functionality is to enable users to send SAP CPQ BOM XML explicitly (by invoking the
appropriate action on the quote), or implicitly (by setting this action to be a pre or post action for some other
quote action).

The action can send BOM XML to:

● URL address (by using Http Post Method)


● FTP address

Workflow Setup - The action Send BOM XML should be set up in the workflow. This means that appropriate
user groups need to have privileges to execute this action, and that this action should be put in workflow. Send
BOM XML can also be defined as a pre or post action to some other action (for example to Place Order).

Send XML to Http Address - If administrator wants the action to send XML to a Http Address , under Setup
General Application Parameters , on the Shopping Cart and Quote tab there is a parameter: When action
'Send BOM Xml' is executed, send xml to Http Address:. This parameter is required for Http
sending, and it should be filled with appropriate Http Address.

Send XML to FTP Address - If the administrator wants the action to send XML to an FTP Address, the following
parameters should be adjusted under Setup General Application Parameters :

● When action 'Send Quote Xml' is executed, send xml to FTP Address: This parameter is
required for FTP sending and it should be filled with the appropriate FTP Address.
● Action 'Send Quote Xml' sends quote xml under the name:This parameter should be filled
with the template for XML document name that will be sent to FTP server. Example: Quote
<*CTX(Quote.CartCompositeNumber)*> will create XML document that will contain the quotation
number in its name (for example – Quote00010024.xml).
● BOM Ftp Path: This parameter should be filled with the local folder path of the FTP server, where the file
will be saved.
● BOM Ftp Username: This parameter should be filled with the FTP server username.
● BOM Ftp Password: This parameter should be filled with the FTP server password.

Action execution - Users can execute the action explicitly by invoking it from the quote, or implicitly by invoking
some other action, that will activate "Send BOM XML" as its pre or post action.

Detach Quote From Opportunity

Action Detach Quote From Opportunity will enable users to break the link in SAP CPQ between CRM
opportunity and SAP CPQ quote. After a user has detached the quote from one opportunity, he will be able to
attach it to another opportunity, or to create a new opportunity from the quote.

If the CRM system is Salesforce, the SAP CPQ quote will be removed from the list of opportunity related quotes
in Salesforce.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 337
Reapply Taxes

Action Reapply Taxes allows users to refresh country and state tax. This action does not have a big impact on
the performance unless the formulas for Country Sales Tax (Country Sales Tax [page 445]) or State Sales Tax
(State Sales Tax [page 454]) are complex.

Send Email

Action Send Email is tied in with Generate Quote action. When Generate Quote action is completed, user is
presented with a button to create Email and download the document. When a user creates an email and clicks
Send Email, Send Email action will be executed.

Currently Send Email allows for an Activity to be added to Salesforce.com opportunity. To set it up:

● In Setup:
1. In Setup Quotes Email Customers / Quote Acceptance Settings section, set Update
Opportunity activity in Salesforce after sending Email to Customer to TRUE.
2. Make sure that Send Email action in added to the workflow
3. Make sure user groups have permissions set for Send Email action under Workflow Workflow
Permissions .
● On user side:
1. User has to come from Salesforce.com.
2. Generate a quote.
3. Click on Create Email.
4. Send the email.
5. Activity will be added to the opportunity Activity History.

5.1.4 Approval Reminder Action

Action Approval Reminder can be used to remind approvers that has not approved or rejected the quote.

Once quote is submitted for the approval, and approver does not take any actions, quote owner has no way to
request or remind approver to take action.

When action is executed, the system will verify who are all the approvers for that quote, and will send email
notification (same one as used for approval notification) to ALL approvers who have not take any actions
(approve or reject) for that quote.

Action Approval Reminder will not do anything by itself, it's just a transition in the action workflow where a user
can attach arbitrary notifications. These notifications should be addressed to the email lists with
"WaitingApprovers".

Email list with special tag "WaitingApprovers" will address all approvers of a quote that have not been approved
or rejected.

User can put any notification body to these approval reminders. They could be the same as initial submit for
approval notification, or you can make a new one specific for reminder purposes.

SAP CPQ Setup and Administration Guide


338 PUBLIC Workflow-Approvals
5.1.5 Global Condition for Quote Action

Administrators have the ability to define conditions for executing pre or post actions.

When admin edits an action from the Workflow/Approval Actions list, he or she is able to see the
following fields:

● Name
● Global Condition
This is visible for all actions; defines global condition for executing action.
● Pre Action Condition
This is displayed only if action can be set up as pre action in the workflow.
● Post Action Condition
This is displayed only if action can be set up as post action in the workflow.

When action is executed as pre or post action, SAP CPQ evaluates appropriate condition defined for this action.

If condition is empty or it is set to 1, action is being executed.

 Note

If you’re not sure which action can be set as pre or post action, the best way to check this is to see what
actions can be found in the list for pre or post action in the workflow.

5.2 Outbound SAP CPQ Emails

Outbound emails are all emails sent from SAP CPQ to clients.

 Note

If you've been registered in SAP CPQ before the deployment of the 2005 release occurred, you need to
contact the SAP CPQ Support team who will assist you in implementing the listed email-related behaviors.

You can define Sender and From email address that display in outbound SAP CPQ emails by editing application
parameters Sender Email Name, Sender Email Address, and From Email Address.

These are the scenarios in which outbound emails are sent:

User management emails

Example: Emails sent after user creation

● In the From Email Address application parameter enter the email that will be displayed in the From field of
the received email.
● The Sender address is taken from the Sender Email Address application parameter.
● Sender name is defined in the Sender Email Name application parameter.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 339
 Note

Note: If there's no Sender Email Address, it remains empty and there's no Sender Email Name either.

Emails sent after an action is triggered

Example: Approvals sent to approvers

● In the From Email Address application parameter enter the email which will be displayed in the From field of
the received email.
● The name displayed in the From field of the received email is the full name of the user who triggered the
action.
● The reply-to address should be the email of the user who triggered the action.
● The Sender address is taken from the Sender Email Address application parameter.
● Sender name is defined in the Sender Email Name application parameter.

 Note

Note: If there's no Sender Email Address, it remains empty and there's no Sender Email Name either.

Emails sent when bulk import/export is finished

● In the From Email Address application parameter enter the email which will be displayed in the From field of
the received email.

 Note

If you haven’t added an email to the From Email Address parameter, the email won’t be sent.

● The Sender address is taken from the Sender Email Address application parameter.
● Sender name is defined in the Sender Email Name application parameter.

 Note

Note: If there's no Sender Email Address, it remains empty and there's no Sender Email Name either.

Emails sent if the knowledgebase synchronization is unsuccessful (for


Variant Configuration integration)

● In the From Email Address application parameter enter the email which will be displayed in the From field of
the received email.

SAP CPQ Setup and Administration Guide


340 PUBLIC Workflow-Approvals
 Note

If you haven’t added an email to the From Email Address parameter, the email won’t be sent.

● The Sender address is taken from the Sender Email Address application parameter.
● Sender name is defined in the Sender Email Name application parameter.

 Note

Note: If there's no Sender Email Address, it remains empty and there's no Sender Email Name either.

Automatic reminders sent to approvers if they do not take action on quote


approval requests

● In the From Email Address application parameter enter the email which will be displayed in the From field of
the received email.

 Note

If you haven’t added an email to the From Email Address parameter, the email won’t be sent.

● The Sender address is taken from the Sender Email Address application parameter.
● Sender name is defined in the Sender Email Name application parameter.

 Note

Note: If there's no Sender Email Address, it remains empty and there's no Sender Email Name either.

Place order checkout

● In the Place Order “From” Email Address application parameter, enter the email which will be displayed in
the From field of the received email.

 Note

If no email is added to the parameter, the From field will be populated with the email address of the
currently logged-in user.

● The Sender address is taken from the Sender Email Address application parameter.

 Note

If the Sender Email Address isn’t defined in the parameter, the email address of the currently logged-in
user will be used.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 341
Emails which are sent through the document generation email form (in the
last step of document generation process)

● In the From Email Address application parameter enter the email which will be displayed in the From field of
the received email.

 Note

If an email isn’t added to the application parameter, the From field will be populated with the email
address of the currently logged-in user.

● The name displayed in the From field of the received email is the name used in the Name field in the
document generation email form.
● The Sender address is taken from the Sender Email Address application parameter.
● Sender name is defined in the Sender Email Name application parameter.

 Note

If there's no Sender Email Address, it remains empty and there's no Sender Email Name either.

The selected value on the Hide "From" Email Address and "Name" from the Generated Document Email
Form [page 545] application parameter determines whether the From and Name fields are visible in the
document generation form.

5.3 Notifications

The following section describes detailed function of notifications.

If email lists can be compared to the Recipient of an email, Notification would be the rest of the email.
Notifications define the subject of the email and the body. Notifications can contain any number of messages,
and each message can have different content and email lists. Notifications can then be attached to any
workflow action. This makes it quick and easy to notify the necessary people of users’ actions. Once email lists
have been created, notifications can then be made to include them. To manage notifications, follow the steps
below:

1. click the Notifications link under the Workflow/Approval drop down menu. All existing notifications are
listed.
2. To create a new notification, click Add New.
3. Enter an appropriate Notification Name and click Save. The option to add messages is then displayed.
4. All that is required when creating a notification is the name. This name is then used when assigning the
notification to a workflow action. Click Save to save the name. Once the name has been saved, the
message administration for that notification becomes available. Click Add New Message to add a new
message to the current notification.

 Note

Clicking Go Back will only cancel the notification add or edit. This will not undo any message adds or
alterations.

SAP CPQ Setup and Administration Guide


342 PUBLIC Workflow-Approvals
Companies who have SSO users [page 140] to whom they wish to send email notifications attached to actions
(for example, notifications for quote approval or quote rejection) need to update the SAP CPQ URL which will
be sent as a part of the emails. For example, if the URL was http://tenantID.webcomcpq.com/
Login.aspx, it should now consist of the user's IdP like this: https://tenantID.webcomcpq.com/fed/
domainName/Login.aspx?quote=CFCECFCACFCFC7CA.

Creating a message is much like creating an email. The Subject, To addressee, and Text must all be entered to
create the message. The To addressee in this case, though, is an email list, or email lists. Users included in the
selected email list(s) will receive the message.

The email can be sent as HTML or plain text. Sending emails in HTML allows you to create a better looking and
more interesting emails. It should be noted that any images you would like to use in the email should be
included in the attachments (non-parseable). Two pictures below show an example of HTML notification
formatting in SAP CPQ and rendering in mail client.

Dynamic text can be entered in the subject, message text, and condition sections through tags using the syntax

builder. The syntax builder for the sections can be accessed through the symbol next to each section.

A condition can also be entered in the Condition section that has to be met to in order to send the notification.
Enter 1 in the Condition section to always send the notification.

Common tags that can be used to create dynamic texts include:

● <* SYSTEMQUOTATIONNUMBER *> - The quote number of the quote


● <* QUOTELINK *> - A URL that links directly to the quote
● <* TOTALLISTPRICE *> - The total price of the quote before discounts
● <* TOTALNETPRICE *> - The final price of the quote

The full list of the available tags can be accessed by clicking the Syntax builder for the "Message Text".

Some tags are used with parameters like:

● <* CO_INFO(NAME) *> - The name of the Cart Owner


● <* BT_INFO (CUSTOMER_FIRST_NAME) *> - The first name of the Bill To Customer
● <* CO_STINFO(SHIP_ZIP_CODE) *> - Zip Code of the Ship To Customer
● <* CU_INFO(USERNAME)*> - The username of the current user

These tags with parameters have a list of available parameters, and a parameter must be chosen to use the
tag.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 343
For example, assuming a notification is set up as follows:

When a quote requires approval, an email notification is sent to the approver that looks like this:

Attachments can also be included with the email message. Any file can be used as an attachment. Existing
attachments can be managed by selecting the file from the list and clicking Delete or Download. New files can
be uploaded into the system by clicking the Upload button.

To add an attachment to the message, transfer the file from the Available Attachments box to either the Non-
Parsable Attachments box or the Parsable Attachments box. Which box an attachment is transferred to
determines how that file is handled when the email message is sent.

Files added to the Parsable box will be compiled by SAP CPQ when the email is sent. This means that any Word
Quote tag used in the file to include Quote, Customer, or User information will be replaced by the information of
the quote that initiated the notification. Any files added to the Non-Parsable box will not be compiled by SAP
CPQ.

SAP CPQ Setup and Administration Guide


344 PUBLIC Workflow-Approvals
 Note

For more information on word quote tags and creating documents that contain them, see Create Document
Generation Template [page 189].

When finished entering the information for the message, click the Save button to add the message to the
notification

 Note

You can track the status of email notifications in the log. Every sent email notification is logged in a record
with the title Email Notification. The log contains the following data: Notification name, Notification Content
ID, Timestamp, Cart ID, Owner ID, Notification subject, Notifier name, Notifier email and a record indicating
that the notification is successfully sent.

Email notifications that are not sent are also logged in a record with the title Email Notification. In this case,
the log states that the notification condition is not fulfilled and contains the following data: Notification
name, Notification Content ID, Timestamp, Cart ID, Owner ID and Notification subject.

You can enable email notification logging via General Application Parameters Shopping Cart and
Quotes Use Additional Logging For Email Notification .

5.3.1 Notification Implementation

Once a notification and message have been created, it can be associated with a workflow action.

This is done in the Workflow Actions administration section. For any workflow event/intersection, click the
button to open the Status Administration page.

On this page, click the Edit button under the Notifications column of the appropriate action (make sure it’s
selected).

 Note

For more information on the Workflow, see the chapter Action page in Workflow Actions [page 330].

In the resulting pop-up window, all notifications are listed. Click the checkbox of each notification that will be
associated with that action. Click Update to save the selection(s) and Close to cancel the selection. Click Save
on the status administration page. When a user initiates this action, the notification is triggered and any
messages added will be sent. The information from the quote that the user performed this action on will be
used for any attachments using word quote tags. Email messages will include all information included on the
message definition page (as discussed earlier).

You can choose the email address to be displayed in the From field of emails received from SAP CPQ. This can
be done by entering the desired email as the value of the following application parameters.

From Email Address for the following types of notifications:

● user management notifications (user creation, password reset, password update, and so on)
● notifications attached to actions, sent in emails when actions are triggered

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 345
● notifications sent after bulk import is performed
● notifications sent if the knowledgebase synchronization is unsuccessful
● automatic reminders sent to approvers if they do not take action on quote approval requests
● email form in the last step of document generation process

Place Order “From” Email Address for this notification:

● place order checkout

 Note

The From Email Address and Shop SMTP Mail Server fields in Application Parameters must be filled in order
for notification emails to work. For more information, see Application Parameters [page 545].

Place Order Notification

SAP CPQ default "Place Order" Email is sent when user clicks on Place Order. In order to control the From
Address of this Email, we can use application parameter Place order “From” email address found in
SAP CPQ Setup General Application Parameters Shopping Cart and Quotes . If this app parameter is
not defined, user's Email is used as the From address.

Selecting Place Order on a complete quote that does not require approval. The Order Confirmation screen
displays.

Additional email addresses can be entered in the additional e-mails textbox. Clicking Confirm/Send Order
confirms that the Order has been placed and notifications are sent to the Bill To or Ship To email address if
checked and any other additional e-mail addresses entered. Although this is a hardcoded notification, it can be
changed by changing the visual style for Place Order page. For more information on Visual Styles, see Users
[page 140].

Approval Notifications

Your SAP CPQ installation comes with 3 predefined notifications for Approval Process:

● Approval Request Notification


● Quote Approved Notification
● Quote Rejection Notification

Adjustments for these 3 notifications can be made easily with edit action.

5.3.2 Approval via PDA

The following section describes the approval via PDA.

The tag (<* PDAAPPROVAL *>) is used for notifications. Approval Email will contain both links, standard
QUOTELINK, and new PDAAPPROVAL. This PDA link will automatically log in user and redirect him to separate

SAP CPQ Setup and Administration Guide


346 PUBLIC Workflow-Approvals
page for approval via PDA. Here, he’ll be able to approve or reject quote and see cart summary info. For security
reasons, only ApprovalPDA.aspx will be accessible via PDA link. After the quote has been approved or
rejected, no other action will be available.

5.3.3 One-click Approval HTML Email Template

The one-click approval HTML email template helps you set up the approval request email Approvers receive
when Quotes are submitted for approval.

The email contains the Quote number, the description of the violated rules and customer information. By using
the HTML email template and following the steps outlined in One-click Approval HTML Email Template [page
347], Approvers are able to accept or reject Quotes directly from the email, without logging into SAP CPQ.

You can modify CSS properties as needed.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
padding: 0px;
overflow-x: hidden !important;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 1.42857143;
color: #636466;
background-color: #fff;
margin: 0;
text-align: center;
}
a {
text-decoration: none;
}
a,a:hover {
color: #00ABE3;
}
h2 {
color: #636466;
font-weight: 500;
}
.cald_header_bar {
background-color: #fff;
color: #636466;
height: 64px;
margin: 0;
text-align: center;
vertical-align: middle;
width: 100%;
}
.cald_logo {
margin: 10px;
height: 40px;
background: url('https://c3.webcomcpq.com/mt/DEFAULT/images/logo_left.gif') no-
repeat center center;
background-size: contain;
}
.rainbow {
height: 5px;
width: 100%;

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 347
background-image: linear-gradient( 90deg, #fab423 0%, #94c84a 25%, #00a7e0 50%,
#00ABE3 60%, #364CA0 80%, #904D9E 90%, #a96dae 100%);
background-repeat: no-repeat;
background-size: contain;
min-height: 5px;
max-height: 5px;
height: 5px;
width: 100%;
display: table;
content: " ";
}
.content-wrapper {
display: block;
margin: 0 auto;
padding: 0 15px;
}
.section-content {
text-align:left;
border-top: 1px solid #d7d7d7;
border-bottom: 1px solid #d7d7d7;
padding: 15px 0px;
overflow: auto;
}.section {
display: inline-block;
width:30%;
margin-right: 20px;
float: left;
}
.button-container {
padding-top: 20px;
text-align: center;
}
.dynamic {
text-align:left;
font-weight: 600;
word-break: break-word;
}
.blue {
-webkit-border-radius: 8;
-moz-border-radius: 8;
border-radius: 8px;
color: #ffffff;
font-size: 18px;
background: #337ab7;
padding: 10px 30px 10px 30px;
text-decoration: none;
border: none;
margin-left: 30px;
float: left;
}
.blue:hover {
background: #2980b9;
text-decoration: none;
cursor: pointer;
color: #ffffff;
}
.red {
-webkit-border-radius: 8;
-moz-border-radius: 8;
border-radius: 8px;
color: #ffffff;
font-size: 18px;
background: #ad3a3a;
padding: 10px 30px 10px 30px;
text-decoration: none;
border: none;
float: right;
margin-right: 30px;

SAP CPQ Setup and Administration Guide


348 PUBLIC Workflow-Approvals
}
.red:hover {
background: #903D3D;
text-decoration: none;
cursor: pointer;
color: #ffffff;
}
@media only screen and (max-width: 767px) {
.section {
display: block;
width: 100%;
margin-right: 0px;
}
.static,.dynamic {
display: block;
float: left;
}
.info {
max-width: 100vw;
}
.content-wrapper {
display: block;
}
.quote-details{
margin:0;
}
.blue, .red {
display: block;
width: 80%;
margin: 0 auto;
float: none;
}
}
@media only screen and (min-width: 1560px) {
.button-container{
width:30%;
margin: 0 auto;
}
}
@media only screen and (min-width: 1200px) {
.button-container{
width:50%;
margin: 0 auto;
}
}
</style>
</head>

<body>
<div class="cald_header_bar">
<table class="cald_logo" width="181px" border="0" cellspacing="0"
cellpadding="20" background="https://c3.webcomcpq.com/mt/DEFAULT/images/
logo_left.gif" background-repeat = "no-repeat" style="height: 58px;background-
repeat: no-repeat;background-position: center; margin:0 auto; margin-bottom:
5px;">
<tr><td></td></tr>
</table>
<table class="rainbow" width="100%" border="0" cellspacing="0" cellpadding="20"
background="linear-gradient( 90deg, #fab423 0%, #94c84a 25%, #00a7e0 50%,
#00ABE3 60%, #364CA0 80%, #904D9E 90%, #a96dae 100%)" style="height: 5px;
width: 100%;
background-image: linear-gradient( 90deg, #fab423 0%, #94c84a 25%, #00a7e0 50%,
#00ABE3 60%, #364CA0 80%, #904D9E 90%, #a96dae 100%);
background-repeat: no-repeat;
background-size: contain;
min-height: 5px;
max-height: 5px;
height: 5px;

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 349
width: 100%;
display: table;
content: ' ';">
</table>
</div>
<div class="content-wrapper">
<h2 style="text-align:left;">Approval Request for Quote
<* SYSTEMQUOTATIONNUMBER *>
</h2>
<div class="info">
</div>
<pstyle="text-align:left;>
<strong>
<* CO_INFO(NAME) *>
</strong>
<span> has submitted </span>
<a href='<*CTX( Quote.Link.Crypted )*>' target="_blank"> Quote </a>
<span>for your approval</span>
</p>
<div class="section-content">
<div class="section">
<div class="static">
Violated Rule(s):
</div>
<div class="dynamic">
<div style="text-align:justify;">
[IF]([EQ](<*CTX( Quote.Approvals.ApprovalRule(Exceeded
Discount).IsViolated )*>,True)){
<p class="rule-validation"><*CTX( Quote.Approvals.ApprovalRule(Exceeded
Discount).Description )*></p>
}{}[ENDIF]
</div>
</div>
</div>
<div class="section">
<table><tr>
<td class="static" style="text-align:left;">
Customer:
</td>
<td class="dynamic">
<p class="quote-details">
<*CTX( Quote.Customer(BillTo).Company )*>
</p>
</td>
</tr>
<tr>
<td class="static" style="text-align:left;">
Country:
</td>
<td class="dynamic">
<p class="quote-details">
<*CTX( Quote.Customer(BillTo).Country )*>
</p>
</td>
</tr>
<tr>
<td class="static" style="text-align:left;">
Email:
</td>
<td class="dynamic">
<p class="quote-details">
<*CTX( Quote.Customer(BillTo).Email )*>
</p>
</td>
</tr></table>
</div>
<!--[if gte mso 9]>
<p></p>

SAP CPQ Setup and Administration Guide


350 PUBLIC Workflow-Approvals
<![endif]-->
<div class="section">
<table>
<tr>
<td class="static" style="text-align:left;">
Total Amount:
</td>
<td class="dynamic">
<p class="quote-details">
<*CTX( Quote.Total.TotalAmount.MarketDisplay )*>
</p>
</td>
</tr>
<tr>
<td class="static" style="text-align:left;">
Average Discount Percent
</td>
<td class="dynamic">
<p class="quote-details">
<* Eval(FormatNumber(<* AverageDiscountPercent *>,2)) *>
</p>
</td>
</tr>
<tr>
<td class="static" style="text-align:left;">
Gross Margin:
</td>
<td class="dynamic">
<p class="quote-details">
<*CTX( Quote.Total.GrossMarginPercent.MarketDisplay )*>
</p>
</td>
</tr></table>
</div>
</div>
<div class="button-container" style="max-width:850px; margin:0 auto;">
<!--[if gte mso 9]>
<br></br><div style="width:50%">
<table width="30%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#337ab7" style="padding: 12px 18px 12px 18px; -webkit-
border-radius:3px; border-radius:3px" align="center"><a
href="<*CTX( Quote.Approvals.ApproveQuoteLink )*>" target="_blank" style="font-
size: 16px; font-family: Helvetica, Arial, sans-serif; font-weight: normal;
color: #ffffff; text-decoration: none; display: inline-block; borer-radius:8px;
background-clip: padding-box">Accept</a></td>
<td style="width:200px;"></td>
<td bgcolor="#ad3a3a" style="padding: 12px 18px 12px 18px; -webkit-
border-radius:3px; border-radius:3px" align="center"><a
href="<*CTX( Quote.Approvals.RejectQuoteLink )*>" target="_blank" style="font-
size: 16px; font-family: Helvetica, Arial, sans-serif; font-weight: normal;
color: #ffffff; text-decoration: none; display: inline-block; borer-radius:8px;
background-clip: padding-box">Reject</a></td>
</tr>
</table>
</td>
</tr>
</table>
<![endif]-->
<a href="<*CTX( Quote.Approvals.ApproveQuoteLink )*>" target="_blank"
class="blue" style="mso-hide:all;">Accept</a>
<a href="<*CTX( Quote.Approvals.RejectQuoteLink )*>" target="_blank" class="red"
style="mso-hide:all;">Reject</a>
</div>
</div>

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 351
</div>
</body>
</html>

5.4 Email Lists

The following section describes detailed function of Email lists.

Creating an email list is the first step in creating notifications (Notifications [page 342]). Notifications allow
custom emails to be sent to any user with the option of an attachment included. Email lists determine which
users receive the email notifications. Email list administration can be accessed by clicking the link under the
Workflow/Approval drop down menu.

Here all existing email lists are listed. User can create a new email list by clicking Add New. Specific users are
added to email lists. All users an email list receive the notification sent with that email list. Email lists are well
integrated with SAP CPQ and provide a high level of customization. All users and user groups added to the SAP
CPQ database can be included in an email list. Custom emails not in the SAP CPQ database can also be
entered. Dynamic tags can also be used to determine who gets a notification. Tags provide a way to send
emails to users performing certain roles rather than specific predetermined users. Tags can be very useful for
sending notifications for approval rule violations, supervision, and general updates. The tags are self
explanatory and the user(s) fitting the selected tag gets the notification.

SAP CPQ Setup and Administration Guide


352 PUBLIC Workflow-Approvals
Four parameters are available to add email address to the email list: Users, User Groups, Emails, and Tags. All
available parameters are displayed on the list boxes on the right, and the selected user/user groups/tags that
would receive the email are displayed in the list boxes on the left. To move the appropriate item from the
unselected section to the appropriate selected section, select the item and use the left-pointing navigation
button to move it to the selected section on the left. It is possible to use the right-pointing navigation button to
remove an item from the selected sections.

The Emails section allows entering a custom name and email. The name is optional, but a valid email address is
required.

Note that moving an email address from the selected section to the unselected section in the Emails lists
section deletes the email address.

The Tags area provides users with a dynamic method of sending emails. Selecting the appropriate tag
determines which user will receive the email:

● Cart Owner - The user that created the quote


● User viewing the cart – The user that invokes the action requiring the email notification. This could be
through the Other Quotes or Waiting for Approval tabs.
● Responsible approvers – The user(s) assigned as the approver for the particular violation under Approval
Rules [page 354].

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 353
● Waiting approvers – The user(s) assigned as the approver for the particular violation under Approval Rules
[page 354], who did not take any action yet - neither approve nor reject.
● Approve Parent – The user assigned as the current user’s Approval Parent under Users.
● Managing Parent – The user assigned as the current user’s Managing Parent under Users.
● Ordering Parent – The user assigned as the current user’s Ordering Parent under Users.

Once all the users that should receive an email notification are entered or selected, clicking Save will save the
email list. Now notification of that email list can be created.

When you use Responsible Approvers tag in email lists, there is an application parameter that will control if the
approver is going to receive a notification per each violated rule or only one notification for all violated rules.
The parameter name is Remove duplicate approvers and can be found under Setup General Application
Parameters , tab Shopping Cart and Quotes. If this parameter is set to yes, only one email will be sent to the
approver per notification.

 Note

If dynamic tags are used to define recipients (for example, “Approve parent”) it is important to know that
this user (for example, Approve parent) will get a notification only if they are marked as "active" in the
administration.

5.5 Approval Rules

The following section describes detailed function of approval rules.

Approval process is a SAP CPQ functionality that enables administrator to force users to obey a set of rules
when operating with theirs quotes. For instance, administrator can model the approval process so that he
doesn't allow users to put the discount on the quote amount in excess of 10%. This menu section uses to set
up approval process, as well as quote workflow. Approvals and workflow are two things that are quite
connected and that depend on each other.

To fully understand the approval process described in this manual, one should first get familiar with following
terms:

● Approver
● Submitter
● Approval Rule (condition)

To set up an approval process, it is necessary to do the following:

1. Set up individual users' Managing/ Ordering/ Approving parents on user administration page (not
required).
2. Set up any additional things that you might need in approval process (For example, set discounting rules if
you wish to treat discounts in approval rules) (not required).
3. Set up one or more Approval Rules.
4. Set up Workflow to treat Approval Rules.

You can find more details on the approval process terms below:

● Approver

SAP CPQ Setup and Administration Guide


354 PUBLIC Workflow-Approvals
Approver is a SAP CPQ user that is selected to be responsible for managing the approval status for a
particular quote in approval process. Therefore, the approver usually gets to view or edit submitters'
quotes. Think of the approver as of a manager whose job is to decide if a quote is valid or invalid in some
way. The approver is the person that needs to review a quote submitted to him and to decide what to do
with it. By workflow, it usually means that he can either Approve or Reject a quote, or in some cases, submit
it for further approval – if he himself also violates some rules and therefore has not enough authority to
resolve the approval. In that case, this approver also becomes a submitter to his approver. This multilevel
approval process will be described later in this chapter in more details.
One approval rule must have at least one approver, but it's not limited to that one only. It can have as many
as needed. Since approvers are ordinary SAP CPQ users (with some more rights), it is important to select
only active users as approvers. If an inactive user is set to be an approver to someone, quotes submitted
for approval will be assigned to him(who can't log in) and sent quote will get stuck. This behavior is by
design. It is possible to have an approval rule that defines user (For example "John Smith") to be the
approver. Now, when that user is deactivated , the approval rule must still apply, because users could
violate rules and avoid approval process. If quotes are stuck in 'waiting for approval' status, please consult
approval history and double check that you don't have an inactive user set as approver to some rule
● Submitter
Submitter is a SAP CPQ user that some particular approval rule applies to at that moment. If the approval
rule is evaluated to "true" than this user can submit a quote for approval process, if that action is available
in the workflow. The submitter is usually the quote owner, or a user that is currently operating on a
particular quote, although, it is not always the case. In multilevel approval process, one user's approver can
also be submitter if he violates some approve conditions himself. More details will be explained later in this
chapter.
● Approval Rule (condition)
Approval Rule can be considered as condition that needs to be evaluated as "true" in order to get the
approval process going. Rules administration is found under Workflow/Approval Approval Rules
menu item in administration. The page contains a table that is displaying a list of approval rules in system.
Here user can edit or delete or add a new approval rule. It is important to know that every time a quote is
loaded or reconfigured, or when quote prices are refreshed, all these rules get re-evaluated and checked if
there are some of them that will have to be evaluated to TRUE. When this happens, the quote can go
through approval process, if it is defined by workflow, which will be explained later in this chapter. The
following is the detailed procedure for editing an existing approval rule.
Clicking on the edit button to the left of the approval rule in the rules table will lead you to the Approval
Conditions Administration editing page. Users have to define first a name for this approval rule (condition),
and intuitive description for it. Next step is defining which users are affected by this rule. It is possible to
choose particular user (employee), user group or user company. Of course, it is allow making a
combination of these. Users selected here will be the actual submitters in the approval process.
1. User (if an approval rule exists for one user then only he can see these rules, all other rules are invalid
for him)
2. User Group (if an approval rule exists for a user group then all users within the user group are
subjected to the rule provided; those users do not have a direct rule associated with them)
3. Company (if an approval rule exists for a Company then all users within the Company are subjected to
the rule provided; those users do not have a direct rule associated with them through user group or
user)
If more than one approval rule applies for the same user, they are triggered in the following hierarchy:
○ a rule chosen for a specific user
○ user type
○ company

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 355
If there is a match for any of those three, lower-priority selections are ignored. Approval rules with the
lowest priority are those that apply to all (have no user, user type or company specified). Those rules are
only triggered when no higher-priority rules apply for that user.
After defining users who will be affected by this rule, second step is setting up the Condition that will be
evaluated by the system. This is the core thing in the approval process – condition can be very simple like
(1 or 0) or a complex SAP CPQ formula that will be evaluated to either 1 (true) or 0 (false). Condition field
accepts all standard SAP CPQ parseable formulas, so this gives administrators great flexibility when
creating approval rules. If the entered condition is "<*GI(EXCEEDEDISCOUNT)*>", it means that this rule
checks the content of the "EXCEEDEDISCOUNT" global information variable and returns 1 or 0 accordingly.
After setting up to whom this rule will apply, and condition that has to be met, consequently next thing to
define is approve logic and approvers for this rule:
When the system starts evaluating the conditions in approval rules, it first evaluates and triggers those that
are the most specific for a user type or a company. If there aren’t any specific rules, it continues evaluating
the more general approval rules.
Example
If there is an approval rule set up specifically for Sales/ABCompany and a more general approval rule set up
for Sales/All Companies, once the system starts checking the rules, it will first evaluate the condition in the
rule Sales/ABCompany. Regardless of the result of the condition (true or false), the system won’t check the
result of the condition for ABCompany in the general rule Sales/All Companies.
Consequently, if you have a specific approval rule with a condition resulting to false and a general approval
rule resulting to true, the approval rule won’t be triggered because the condition defined specifically for
that user type/company results to false.
If there are no specific rules defined for a user type, the general rule (Sales/All Companies) will be applied
based on the result of the condition.

 Note

To ensure that the approval rules are triggered for the right user type or company, you may avoid
defining specific approval rules and set up all rules for All User Types/All Companies. However, have in
mind that this may slow down the system and lead to performance issues.

Approvers are being selected from the list of users labeled "Approvers:" on the page, as seen on the picture
below: All users from the system can be selected as approvers. One or more users can be flagged as
approvers for the rule currently being edited.
Regardless of users in the system, the approvers list always offers three items that are not actual SAP
CPQusers – the Managing parent, the Ordering parent and the Approving parent. These can be thought as
some kind of context sensitive shortcuts: every SAP CPQ user can be assigned these three parents
through standard user administration. Therefore, when selecting "Managing parent" as an approver when
editing an approval rule, approver will be different according to the user this rule applies to at the particular
moment. For example, if "Mike" and "Joe" are selected users to whom this rule applies to, and as approvers
are selected "Managing/Ordering/Approving parent", the quote won't necessarily go to the same approver
regardless of who submitted it for approval. In other words, if "Mike" and "Joe "have different Managing
parent, than the quote will end up with different approving user, in regard of who submitted it. As with the
Managing parent this also applies for Ordering parent and Approving parent.
So, every user selected from the list will be the approver for the particular rule, and will receive the quote to
review it and decide how they will respond.
Approve logic is set up by choosing desired value from the approval requirements drop-down list.
Approve logic can be best explained through example: If there is a rule that defines more than one approver
quote will end up being reviewed by more than one approver. Although every approver can Reject a quote,
all the approvers must agree to Approve it in order for that quote to be returned to the owner as Approved.

SAP CPQ Setup and Administration Guide


356 PUBLIC Workflow-Approvals
This is the default behavior, and it is an example of AND logic. To put it differently, one approver is enough
to reject the quote, but all are required to approve it.
However the OR logic is somewhat different. The rejecting policy is the same: it is enough that one
approver rejects the quote to have it returned to submitter as "Rejected", but also, a single approver is
enough to "Approve" the quote to have it returned as "Approved" to submitter, no matter how many
approvers didn't respond to approval process on that quote. The OR logic is a good solution for handling
employee vacations - having multiple approvers, among which anyone can approve a quote; so it is not
stuck waiting for one of the approvers to approve it when all the others already did. Clearly, than the AND
logic is more restrictive than OR logic is.
After setting up all the above mentioned terms, approval rule has been successfully set up.

Custom Approver Selection Logic (Dynamic Approver)

You have an option to define a Custom Approver Selection Logic. This Logic is also referred as a Dynamic
Approver in SAP CPQ. Custom Approver Selection Logic will determine an approver at the time a particular
approval rule is violated. Approver is determined depending on the expression that you defined through SAP
CPQ Workflow/Approval setup.

This expression can take into account a various elements regarding users, customers, quote calculations and
so on. For example, you can write a formula that will determine an approver based on the country the customer
is located in, or based on the total amount of the quote.

Follow these steps to define a Custom Approver Selection Logic:

1. Log into SAP CPQ and go to Setup.


2. Click on Approval Rules under Workflow/Approval menu item.
3. Click on Add New button to define a new Approval Rule.
A page where you can define Aproval Rules, Conditions and Dynamic Approver is displayed. At the bottom
of the page you will find a part where you can define all elements to properly set a Custom Approver
Selection Logic.
4. Click on Add New button to define a new custom approver selection logic. Enter a name and expression in
the respective fields and select an appropriate value of the radio button. All fields are required and
explained below.
Fields that should be entered are:
○ Name - You decide which name fits the best. Use descriptive name that explains what criteria is used in
the expression to define an approver.
○ Expression - A result of evaluating the Expression that you input in this field should be Name, Email or
Username of SAP CPQ user that could be slected as dynamic approver. You can find a Name in the list
of users under Setup Users item menu.
○ Result returned by expression -This radio button is used to define what information, the previously
entered expression should return after being evaluated. If you want your expression to return Name of
the user, you must pick a name option under this radio button. Similar applies for the other two options
(Email and Username).

When you save a newly created Custom Approver Selection Logic, it is automatically added to the list of
selected Approvers.

Example
In this example we will create an dynamic approver named Regional Approver.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 357
Expression [IF]([EQ](<* CustomerTerritory *>,USA)){[email protected]}
{[email protected]}[ENDIF] is used to determine the email of the approver based on the Customer
Territory. Once the expression returns an email of the approver, SAP CPQ will locate a user with that email and
define it as a approver for the particular rule you violated in your quote.

In this example, if you work on your quote, and you choose a customer that has territory set to "USA", your
approver will be a user with the email [email protected]. You will find the name of this user in the list
of Approval Rules below your quote.

You are able to edit a Custom Approver Selection Logic. Whatever changes you make will be valid for all
approval rules that use this dynamic approver. You can also use any Custom Approver Selection Logic defined
by other users.

You are able to delete a Custom Approver Selection Logic, but only if it isn’t part of some other rules. If you try
to delete Custom Approver Selection Logic that is in use, you will be informed with the error message and the
list of rules where this Custom Approver Selection Logic is used.

When you are working on the quote and a rule is triggered, you will be informed that the quote must be
approved by the approver that was selected based on the expression you entered while defining a Custom
Approver Selection Logic.

If for some reason SAP CPQ was not able to locate the user that you were referencing in your expression, then
the error Approver couldn't be identified. Please contact your SAP CPQ Administrator will be displayed in the
quote. SAP CPQ will not be able to locate the user if you typed a wrong identification field value (invalid email,
invalid name or invalid username).

Delegation of approvals

Delegation of approval is designed for cases when a quote is sent to the SAP CPQ user for approval, but that
user is absent or is not able to approve of reject the quote. If delegation of approval is enabled then any
member of the team can review, approve or reject that quote as a delegated approver.

Delegation of approval can be enabled or disabled by selecting approval permissions for any or all of the
following three relations:

● Managing Parent
The Managing Parent, with the appropriate rights, can edit or delete their child users. They can also
reassign quotes between their child users.
● Ordering Parent
The Ordering Parent receives all orders placed by their child users for confirmation.
● Approve Parent
The Approve Parent receives quotes from the user that have been submitted for approval. Whether or not a
user’s Approve Parent receives a quote, though, depends on how the rules are set up in Approval Rule
administration. Each approval rule determines which user(s) will receive the quote for approval. The user’s
ApprovalParent is one of these options.

Assigning approval permissions to any of these three relations means that you define a delegated approver.
Delegated approver is allowed to approve quotes that are assigned to its' approval team.

SAP CPQ Setup and Administration Guide


358 PUBLIC Workflow-Approvals
The Approval team is comprised of SAP CPQ users that are the first level descendants of the delegated
approver in approval hierarchy. Approval team members are also approvers for other SAP CPQ users. Follow
these steps in order to enable delegation of approval:

1. Log into SAP CPQ and go to Setup.


2. Click on Approval Rules under Workflow/Approval menu item.

The Delegation of approvals table is used to define a delegated approver and control permissions for it. This
table contains three different SAP CPQ user approval relations.

You can delegate approve/reject permissions for any of the relation that it is approving or rejecting quotes. In
this example, approve parent has a permission to approve and reject quotes for its' approval team.

To summarize - when a user A request approval from its' approval parent B, then the user C which is set as
approval parent for user B and it is defined as a delegated approver can approve quotes that are in "Waiting For
Approval" queue of the user B.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 359
Example
Let’s assume that we have 5 users with their approval relations as depicted in the following figure:

User Kyle creates a quote which violates a previously defined approval rule. User Kate is defined as approval
parent for Kyle. Kyle requests approval from Kate and now Kate has a Kyle’s quote in approval queue.

If Kate is on vacation or for some reason is not able to log into SAP CPQ and approve the quote, then Mike can
complete the approval. Mike is selected as approval parent for Kate and approval parent relation is selected to
allow delegation of approval.

Once Kyle has sent the quote for approval, he is able to see the list of alternative approvers by selecting
approval history from the dropdown in the list of quotes.

SAP CPQ Setup and Administration Guide


360 PUBLIC Workflow-Approvals
Clicking on the button View alternative approvers, a list will be displayed as pop up.

Now, under the tab Waiting for approval, Mike sees a list of quotes that are directly sent to him for approval and
list of quotes that his team can approve. Note that Mike is approval parent for Kate and Jsmith as well, so he will
see quotes that are assigned for approval to Kate and Jsmith (column Responsible Approver).

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 361
Mike clicks on Approvals action for the particular quote. Approvals page is displayed and Mike is able to
approve or reject the quote.

5.5.1 Parallel Approval

Parallel Approval, or Branching, allows you to split the approval process into several components independent
of one another. If you don’t use the Branching feature one approver can reject all components of your quote
which will induce SAP CPQ to send the entire quote for approval all over again. This may take more time than
you can afford to lose, and cause unnecessary delays.

How Parallel Approval Differs from Standard Approval

The standard approval process has three or four rules and the moment you decide to reject one rule only the
whole quote is rejected regardless of the fact that two unrelated rules have been approved. This means you
must repeat the process all over again and send the quote to your manager who then has to send it over again
to someone else. This can end up taking too much time. With the Parallel Approval process you can
simultaneously approve several rules which are independent of one another. Once you are done with one
branch you don’t care about the status of other branches. You have ensured independence of various different
rules, which are part of the same quote.

To show you what we mean, let’s say you are a regional dairy manufacturer that wants to expand by closing a
deal with a major food retailer outside your core market. This deal would not only give you access to a large
market, but might also lead to a possible expansion to neighboring markets. Before you are able to decide if
you can go ahead, you need to get the green light from your production department that first has to ensure you
have enough capacity for this kind of strategy. Then, you need to get the approval from the finance department
that must decide if the risk is justified. And, you need to get the thumbs up from the logistics department that
has to make sure your distribution network is able to partner up with the distributors in the new market. This is
where Parallel Approval comes in – it allows your company to segment your approval process so that

SAP CPQ Setup and Administration Guide


362 PUBLIC Workflow-Approvals
departments unrelated to one another can approve rules relating only to their own authority. Now, let’s say the
production department says boosting existing capacity won’t be a problem, but the finance department says
the pricing for the cheese assortment of products will have to be readjusted. With Parallel Approval, the
approval process will not have to go through the production channel again because pricing is the only property
that needs to be changed. Instead, it will be resubmitted along the finance branch only.

When you use Parallel Approval, you benefit in a number of ways:

● Fewer emails sent back and forth for approval request


● Better overall user experience
● Deals are closed faster

Using This Feature


It helps to think of each rule as part of a branch. For the initial user, all three rules have been violated. This
means that, for all three rules, the condition has been set as true. And as the approval process is being carried
out, users approve the green rule in its entirety first, meaning they approve the first branch.

To start, type in the name of the Branching component in the Branch Name text-entry box in Step 2 of Approval
Rules. Check the following figure to see what this field looks like in SAP CPQ.

The first thing that you should know about Branching is that it is a multi-layered feature. For the purpose of
Help, we would like you to think of the Approval process as divided into three segments, blue, orange and green.
The following figure deconstructs the process so you have a better idea of how it works. In the figure, you can
see that a number of rules have been defined, with a defined rule per each user. All rules share the same branch
name meaning that these rules are connected in one chain-like sequence. You must define a rule for each user
– not everyone is required to approve the same item but they must all be part of the same chain sequence. And
they are all unified by the same branch name. We have created a mock-up scenario meant to act as a road map
that takes you along the Branching process from start to finish. Read the text below the diagram to understand
the step-by-step Branching process.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 363
 Note

Keep in mind that different approvers can approve rules within their branches without interfering in the
process of approval taking place within other branches. This is why we refer to Branching as the Parallel
Approval Process. In the mock-up example below, we are demonstrating only one approval scenario.

Mock-up Example

1. For the purpose of this demo process, imagine you have defined the rule as a general user. That said,
before you send the approval request to the first approver in the hierarchy, you must first violate the Green
Approval rule, followed by the Blue and Orange Approval Rules. Once you have completed this, you can
submit the three approval rules to Approver No. 1.
2. The approval rule process starts to branch at this point. The three approval rules will go to three different
designated approval parties: Approver No. 1, Approver No. 2, Approver No. 3 and Approver No. 5.
3. The Green Approval rule is the first in line that will get approved, that is Approver No. 1 must approve the
Green rule. Then Approver No. 5 must approve the rule and submit it for approval to Approver No. 6, the
last one in the trajectory of approvers.
4. Once Approver No. 6 approves the rule, the Green Rule approval process is considered complete.
5. Now that the Green Rule has been completed, the Blue Rule is next in line to be approved. To illustrate the
benefit of Branching we will create a scenario in which Approver No. 2 changes the container configuration.
Let’s say Approver No. 2 changes the value of discounted price and updates the quote. SAP CPQ will
update the script with a new configuration. In other words, the value entered, means that the rule has been
approved. Then someone opens up the cart and changes the value of that container, meaning that
although this value has been approved now this is a new value and it would have to be approved again.
Because the Green rule follows the configuration of the container, its existing value, but because the value
has changed the rule is being evaluated again, the condition has been violated again, the approval
calculation has been violated again, so the system again asks the user to again enable the rule. Without the
ability to use Branching, the Green Rule would have to be sent back to Approver No. 1 all over again. But
Parallel Approval allows the Green Rule to move along the hierarchy as initially planned, that is to be
submitted to Approver No. 4.

SAP CPQ Setup and Administration Guide


364 PUBLIC Workflow-Approvals
6. To demonstrate the benefit of Branching further, let’s say Approver No. 3, who must approve the Orange
rule, rejects the rule. Even so, the only rule that has to be resubmitted is Orange, while others continue
along the approval process without having to be resubmitted.
7. At this point, the original user must resubmit the Orange rule again because it was the only one that was
rejected (without branching, the approval process would have to be taken back to Blue).
8. Approver 1 has to resubmit the rule to Approver 3. Let’s say this has not yet been completed – parallel to
this approval, Approver 4 can approve the other two rules (Blue and Green) waiting to be approved.
9. Lastly, Approver 3 should log in to approve the last remaining rule, that is Orange.
10. Finally, if you log in as the original user you will see that the quote has been approved and is no longer in the
Waiting for Approval status.

Use Case: Retract of Expired Approval Rules

The action Retract Approval Prrocess should be set up in Workflow to allow users to retract expired approval
rules. This action should be set up in Workflow to be available with the Change Status action (for example, it
should lead from Rejected to Awaiting for approval).

In this Use Case, there is a quote that violates two approval rules. Owner requests for approval. Approver
rejects it because one of the violated rules must be neutralized by the owner. Owner fixes quote and request for
approval again. Now, approver must retract the expired approval rule, and then actions approve and reject
become available for the approver. The example is as follows.

Assume that there are two SAP CPQ users:

● CPQ user 1
● CPQ user 2

CPQ user 2 is approver for the CPQ user 1.

Two approval rules are already defined as follows:

● Rule 1
○ User: CPQ user 1
○ Approval condition:

[IF]([EQ]
(<*Eval(<*CTX( Quote.Total.AverageProductDiscountPercent.DefaultDecimal )
*> > 30 )*>,True)){1}{0}[ENDIF]

○ Approval calculation: 1
○ Branch name: branch1
○ Approver: CPQ user 2
● Rule 2
○ User: CPQ user 1
○ Approval condition: 1
○ Approval calculation: 1
○ Branch name: branch2
○ Approver: CPQ user 2

CPQ user 1 creates a quote. Rule 2 is violated (since condition is set to 1).

CPQ user 1 inputs discount percent of 35. Rule 1 is violated too. (See the following figure).

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 365
CPQ user 1 requests for approval and CPQ user 2 rejects it. Then, CPQ user 1 fixes discount percent and inputs
30 instead of 35. Rule 1 is not violated anymore. CPQ user 1 must click on Retract expired approval rules in order
to be able to requests for approval again.

CPQ user 2 opens quote and approves it. Now the quote is in approved status.

Note that the Blue Rule remembers the value of some custom field if the value of some custom field has been
changed in the approval calculation; the Orange Rule follows the value of another custom field, and the last
Green Rule follows the value in the container in the configuration. If something in this process has been
changed the rule is being re-evaluated again; even though this rule has been approved the system asks you to
go into the approval process and to approve that branch. This multilayered system of approval was introduced
to prevent any tempering by different users of your quote. If some custom field value has been selected, that is,
the value box is not vacant and a value has been entered in the custom field, and if the user isn’t among specific
users, the rules are limited. This means the rules are not triggered for a number of specific users and follow the
approval process only with certain users in mind. The calculation formula which is evaluated each time the user
logs in checks the value of that custom field. When, as a user, you approve the rule in a certain cart status the
value of that custom field is being saved. Each time the system checks that the saved value is equal to the
existing value of the custom field. This is all carried out according to the formula entered in the Approval
Calculation.

5.5.2 Approval Process Administration

The following section describes detailed approval process.

Approval Rule by itself doesn't do any work – Workflow must be set up in order to have working Approval
Process. Approval rule is just here to serve as a flag in workflow that will allow some actions to happen that will
move the quote throughout the approval process.

SAP CPQ Setup and Administration Guide


366 PUBLIC Workflow-Approvals
Typical approval workflow is explained below:

Owner edits his quote, and violates one of the approval rules (For example, exceeds discount). After clicking on
Approvals button, he is taken to the page where he can leave a comment, see who are approvers, and what
rules he violated. We can see that this rule defines two responsible approvers.

After submitting the quote for approval, his approver will have it on Waiting for approval tab on load quote page.
There, approver can edit the quote, view what triggered approval rule, and after clicking on Approvals button,
he can perform an action on that quote:

Approver can here either approve or reject the quote. Now, what about the second approver? Even though one
approver has accepted the quote, on the user side in My Quotes tab, quote is still pending approval.

Clearly, the quote is still pending approval, so other approver needs to approve it also. (Remember the
"AND" /"OR" types of approve logic – this rule is definitively an "AND" logic type, since the first approver did
approve and the quote still waits the other approver to either approve/reject. Now the second approver decides
what to do with the quote.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 367
As can be seen on the picture, the approval history section clearly displays that the first approver approved the
quote, and can see all the comments enterred, etc. Whatever action does this approver choose to perform, the
approval process will end because there are no additional approvers for which this quote is still pending for
approval.

The following describes how to administer this typical approval workflow:

First of all, discounting rules have to be defined, that will limit quote owner when setting discount, so that 50
will trigger an exceeded discount flag. This section is described in Discounts/Multipliers [page 434] section of
this manual, so refer there for more details about this simple step. Once the discounting rule is defined, we can
add an approval rule that will treat discounting.

We choose "Workflow/approval", then "Approval rules" menu items to the left. Next we add new approval rule,
and we call it "Discount Exceeded" (enter something user friendly here – both users and approvers should be
able to know what this rule applies to by its descriptive name). Next we select one user to be the user that this
rule applies to. (We can also select a particular user group, company, or combination of these). Then, in the
condition box, we enter: „<*GI(EXCEEDEDISCOUNT)*>” . This formula will check the "EXCEEDEDISCOUNT"
global information variable flag, which will be set if discounting rules are violated. This condition ensures that
discounting rules are being treated in this approval rule.

Next, we setup approval requirements (approve logic) – Set it to "AND" type.

From the Approvers list, we select two users that will be responsible for this rule.

Setting up the Workflow

After saving, we are done with creating approval rules. Now we need to take care of workflow, in order to
complete approvals setup. First of all, let's define what actions are used during approval process:

● Approvals
● Submit for approval

SAP CPQ Setup and Administration Guide


368 PUBLIC Workflow-Approvals
● Approve
● Reject

In the administration, we select Workflow/Approval then Workflow actions in the menu to the left, so that we
are now on the page that is used to set up workflow on "My Quotes" user tab.

There, we set up the following actions: From status open to status open, check the action "Approvals" :

and add a condition to it: <*APPROVALREQUIRED*>. This will ensure that we have "Approvals" action only
when we need to submit the quote for approval.

Submit for approval action: we need to do just the same as for "Approvals" action, except from the fact that
"Submit for Approval" should change quote status, so we will place it to flow from "Open" to "Waiting for
Approval" rather than from "Open" to "Open". Also, we need to add condition formula
<*APPROVALREQUIRED*>. This will prevent users to submit for approval quotes that are not violating any
approval rules. User can also attach notifications to this action, so that for example Approvers can get email
when someone submitted a quote for approval to them.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 369
That concludes workflow for "My quotes" tab, which is important to owner/submitter. Now on the admin menu
to the left click "Workflow/approval" then "Workflow" and on that page, click on "Waiting for approval" tab, as
shown on the following figure:

This will open the similar workflow page, only that this one defines workflow for approvers, who use "waiting for
approval" tab rather than "my quotes".

In this tab, we need to have 3 approval actions: "Approve quote", "Reject quote", "Approvals" and "Submit for
approval".

"Approvals" action doesn't change status, so we will put it to flow from "Pending Approval" status to "Pending
Approval" status:

SAP CPQ Setup and Administration Guide


370 PUBLIC Workflow-Approvals
Also, on this screen, we need to check "Submit for approval" action – in case that the approver himself also
violates some approval rules, so that he can submit it for further approval:

We need to add a condition: Approver can only submit for further approval if he is violating some rules.
Therefore, we add a condition to this action:

So we entered <*APPROVALREQUIRED*> tag, which evaluates to "TRUE" when user is violating approval rules.
The "Submit for Approval" action is useful when setting up multilevel approvals:For example, one approver can
have right to handle discounting up to 10, but for anything more, he cannot approve himself: he must also
submit for approval to the next approver, who can approve up to 20, and needs to further submit for more
discounting, and so on.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 371
We place "Approve quote" action to flow from "Pending approval" to "Approved" status:

Also condition for this action has to be set up, so that we prevent approving quotes by approvers that should
not be able to approve (because they violate some approval rules themselves), so click on condition button and
enter [NOT](<*APPROVALREQUIRED*>) into condition field:

SAP CPQ Setup and Administration Guide


372 PUBLIC Workflow-Approvals
By clicking Update and Save, workflow changes will be completed. Finally, we need to set up Reject action on
Waiting for Approval tab. We will place it from "Waiting from Approval" status to "Rejected" status:

This rule can also be added an condition, if we need it. By default, Any approver can reject a quote if he wants
to. But we can also limit approvers to be able to reject a quote only if they don't violate any rules themselves.
For example, if an Approver needs to submit a quote for further approval, we already forbid him to approve it,
and we can forbid him to reject it, too. In that case, we need a condition on "Reject quote" action, so we click on
condition button and set up the following formula in condition field: "[NOT](<*APPROVALREQUIRED*>)" (as
shown on the picture below):

After this has been set up, current workflow has to be saved and approval process has been successfully set up.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 373
5.5.3 Approval Rules

The following section describes detailed function of approval rules.

Getting Started

Approval Rules is an SAP CPQ feature in the Workflow submenu that enables you to enforce rules for users
operating with quotes. Let’s say you want to limit the number of users (or identify specific users) who are
permitted to apply a discount of 10% or more on a product. Or, you want the quote to comprise computers with
a hard drive capacity of up to 100 GB only. You can enforce these rules by assigning an approver, or a hierarchy
of approvers, designated with consenting or rejecting the discount.

Glossary of Terms

To understand the Approval Rules process, we recommend you familiarize yourself with the following terms:
Approver, Submitter and Approval Rule.

● Submitter is an SAP CPQ user who submits a quote for approval. The submitter can be the quote owner or
a user currently operating a particular quote. In a multilevel process users’ approvers can also be
submitters if approvers themselves violate approving rules.
● Approver is an SAP CPQ user managing the approval status for a particular quote. The approver does this
by first reviewing a quote submitted by the submitter, and then deciding if the quote is valid or not. The
designated approver can submit the quote for further approval if he or she lacks authority (violates rule) to
complete the approval process. In this case, an approver becomes a submitter. You must assign at least
one approver to an Approval Rule but you can also assign as many as required. In other words, you can
assign several approvers to validate the decision of other approvers. Make sure that you select only active
users as approvers. If you assign an inactive user as the approver, the quote will get stuck in the Waiting for
Approval status. If this happens, check approval history and make sure that you don’t have an inactive user
assigned as approver to the rule.
● Approval Rule is triggered when the condition for that rule is rendered "true". If it is not rendered true, the
approval process will not be triggered. Approval rules are listed in a table that allows you to edit, delete or
add a new approval rule. Each time anyone enters the quote, SAP CPQ automatically re-assesses the quote
and checks if any approval rule has been violated. If any of the rules are violated, SAP CPQ will alert you
that the rule has been violated and ask you to send the quote for approval.

Using This Feature

Approval Rules comprises two main sections: Creating a new approval rule and Delegation of Approval.

SAP CPQ Setup and Administration Guide


374 PUBLIC Workflow-Approvals
Creating a New Approval Rule
Follow these steps to create a new Approval Rule. Learning how to create a new Approval Rule is the best way to
understand the table on the Approval Rules submenu page. Note that the fields marked with an asterisk (*) are
required:

● Click Add New and enter the name of the rule in the Approval Name text-entry box.
● Describe the Approval Rule in the Description box or click the icon to enter an expression in the formula
builder. The description informs you about the restrictions defined by the rule that users can violate. Let’s
say you are authorized to apply a discount of 30% but you applied a discount of 40%. Going forward, you
must decide if you will stick with this decision or if you will send the quote up for further approval along the
approval hierarchy. In other words, you can modify the quote so that you no longer violate that rule or ask
for additional approval. First, make sure that the rule has been defined in the workflow, and perform the
steps below.

1. ○ Select a user/user type/company (or all three) for whom the approval rule will apply.
○ Select the company users belong to from the Company drop-down menu.
2. ○ Enter a condition in the Condition text-entry box that will trigger the approval process (the condition
must be rendered "true"). The condition is the core of the approval process and defines an expression
on which the Approval Rule will be based. The condition text-entry box accepts all standard SAP CPQ
formulas which give administrators greater flexibility when creating approval rules. Let’s say you want
to limit the currency amount of your quote to 5,000. If the expression is evaluated to 1 (true) the rule is
violated which triggers the approval process: [GT](<*CTX
Quote.Total.TotalNetPrice.DefaultDecimal )*>, 5000).
○ The Parallel Approval section of Approval Rules is explained in a separate document. See Parallel
Approval [page 362] for more details.
3. In Approval Requirements select:
○ AND logic (approved if all approvers from the list approve) if you want all approvers on the list to be
required to approve the quote and only one to reject it. Note that choosing this option is restrictive and
that you may be stuck waiting for that one approver to approve your rule.
○ OR logic (approved if any approver from the list approves) if you want only one approver form the list to
approve the quote. The "OR" logic is less restrictive and gives you more options. It is a great solution
when employees are away on vacation and you may lose time being stuck waiting for one approver to
approve your quote.
○ Now click Select Users to select Approver(s) from a list of all Users currently defined in Setup.
○ Click Save and Exit Setup.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 375
Check out the following figure and the text below to learn about Based on Hierarchy and Custom Approver
Selection Logic:

Based on Hierarchy list allows you to select the submitter’s managing, ordering and/or approving parent as an
additional approver or approvers. Click the arrow pointing left. To cancel your selection, click your selection in
the Selected Approvers box and click the arrow pointing right.

Custom Approver Selection Logic allows you to select a user based on the user’s characteristics related to the
quote, opportunity, customer or territory, rather than the person’s name. The purpose of this feature is to
enable you to select the approver on the fly when you are pressed for time and need to make a quick decision.

Follow the steps below to select a user based on the Custom Approver Selection Logic:

● Click Add New to make your user selection.


● Instead of entering the user’s name in the text-entry Name box, enter the user characteristics you wish to
act as the criteria in selecting the approver.
● The expression-entry box Approver will be the users whose Name is equal to expression allows you to create
an expression that will define a dynamic approver, that is an approver who depends on the user's selection.
The expression will be based on the user’s property or selection previously defined in the cart. These may
include geographical market, pricing, customers on customer info tab, among other examples. SAP CPQ
will use the expression to check if users with those properties exist in the system.

 Note

Remember that the expression must be formulated so that its result always takes the form of the user’s
name, username or email.

SAP CPQ Setup and Administration Guide


376 PUBLIC Workflow-Approvals
● In the Result returned by expression, select the format of the generated approver you want to receive and
click Save.

Take a look at the following image to see what an expression in Custom Approver Selection Logic looks like.
Then take a look at the proceeding image too see SAP CPQ use of custom tables in forming that expression.

 Note

You have now defined Approval Rules. The submitter takes over the process at this stage. Follow the steps
outlined below if you are a submitter creating a new quote subjected to the defined Approval Rules.

● Click New Project/Quotation and select the product you want by ticking the Add to Quote check box.
● Click Add to Quote at the top right corner of the page. Then trigger the rule and click Request Approval once
the Quotation page opens up.
● Click Submit for Approval.

Delegation of Approval
The Delegation of approvals table allows you to select alternate approvers if existing approvers are away or
unable to approve the rules. The purpose of this feature is to prevent situations in which the quote gets stuck in

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 377
the user’s approval queue where no one can approve or reject it. In other words, when quotes are sent for
approval to an approver, and that approver is absent, there is no way for other users to pull them out of the
approver’s queue, unless you use the Delegation of approvals. If you want to delegate approval to the Managing
parent, Approve parent or Ordering parent, you must set your choice to True. Check the following figure to see
what it looks like in the Approval Rules submenu of SAP CPQ Setup.

When you delegate approval to someone else, this change will be visible in two tables for approving quotes:
Quotes that I need to approve and Quotes that my team needs to approve in the New Project or Existing Project
Quotation.

● Quotes that I need to approve refers to a list of quotes sent to you for your approval.
● Quotes that my team needs to approve comprises you as well as all alternative approvers. This group refers
to a list of quotes displayed if the administrator selects that only one of the following roles can approve or
reject quotes: Approving Parent, Managing Parent and Ordering Parent. The list also includes the current
user if that user is set as one of selected roles for at least one active user in the system. The list contains all
quotes found in the user team’s approval queue. Let’s say user A and user B have user C set as their
approving parent. In this case, the administrator has set up that the approving parent can approve or reject
quotes instead of the approval owner. This means user C can see all quotes found in the approval queue for
user A and user B. The same rule applies to the managing and ordering parent. Now, let's say user A has
user B as approval parent (or managing or ordering) and this role can approve/reject quotes (according to
what the administrator defined in Setup). In this case, user B will always have action Approvals (this will be
the only action) available over quotes that user A needs to approve under Quotes that my team needs to
approve. Take a look at the following figure for more details.

SAP CPQ Setup and Administration Guide


378 PUBLIC Workflow-Approvals
When you click Request Approval from the Actions drop-down menu you will be able to see all the rules that are
waiting for your response. Refer to the following figure:

But when you click Approval History you will be able to see the approval history of your quote, including the
names of users who performed each action in the Performed By column. The column includes name of
approvers and alternative approvers which you can check by clicking the View alternative approvers. Refer to
the figure below. If the administrator hasn’t set up either of these roles, or if there are no rules that haven’t
been approved or rejected, this button will not be displayed.

5.5.4 Submit Upstream

Sometimes the approver is not allowed to approve a quote because the discount level is above what he/she can
approve. However, this does not happen often and when it does, the approver gets confused. This is because it
is simply not explained to the user what happened.

User Side

When approver is approving a quote and the approval rules are taking away the submit action we need to make
it very clear, both visually and textually, what happened.

Instead of just not showing the approve action, the following message displays: This approval request is above
your authorized approval level. You can either reject a quote, or submit it upstream for approval.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 379
If the approver does not have an Approve Quote button, because based on modeling it was not intended for this
button to be shown to the approver, this messages will not show up and the Approve Quote button, since it was
not supposed to be there, will not show up at all.

This feature is enabled for mobile and PDA.

5.6 Statuses
The Statuses link under Workflow/Approval drop-down provides information about an order or quotation status
to users.

Examples of common statuses are Open, Order Placed and Shipped.

Additional Status Definitions can be added. For quotation tracking, Open Quoted, Closed Quote, Converted to
Order, could be added. For orders In Engineering, On Hold or at Assembly Floor, could also be used.

The above figure shows the Status Definition Screen. From here, new order status terms can be added or

existing ones edited. Select Add New to add a new status or click the button next to the status name to edit
a status.

To delete a status, select the button corresponding to the status and click OK to confirm you want to delete
the item.

To make a status the default status, edit the status by clicking the button next to it and changing the
selection in the Default drop down to Yes.

If another status is already set as the default, user will receive a confirmation informing him that a status is
currently set as the default. Clicking OK will make the current status the default or Cancel will keep the current
default status intact.

Note that there cannot be two default statuses and that there has to be a status set as the default status at any
point in time. Therefore, editing a default status and changing the selection in the Default drop down from Yes
to No bring up a message saying that the only way to change the default status is setting another status as the
default.

SAP CPQ Setup and Administration Guide


380 PUBLIC Workflow-Approvals
A quote can be locked when in a certain status. When a quote is locked, it is in a read-only state and cannot be
edited. To set a status that will lock a quote, user will edit the status, change the selection in the Locked drop
down to Yes and click Save.

5.7 Workflow Permissions

The Workflow Permissions section is used to control which user groups can perform which actions.

This administrative section is important because users will be unable to use any of the actions defined in the
Workflow Actions [page 330] administrative section unless they have been given permission to use the
action(s) here.

Defining these permissions can be done in two ways, through Actions Permissions or User Group Permissions.
The default is the Actions Permissions. Under Actions Permissions, each individual action is displayed and the
user groups that are allowed to perform each action are displayed in the User Groups column.

Click the or symbol by each item to add/modify the user groups that are allowed to perform that action.
On the next screen, select the user groups that are allowed to perform each action, and uncheck the user
groups that are not allowed to perform the particular action and click Save.

The other way to set Workflow Permissions is through User Group Permissions. User Group Permissions can be
accessed by clicking the by User Group button by List Permissions: at the top of the Workflow Permissions
screen.

Under User Group Permissions, each individual user group is displayed and the actions that the user groups
are allowed to perform are displayed under the User Groups column.

User Groups Permissions

Click the or symbol to add/modify the actions that the particular user group (on the left) is allowed to
perform. On the next screen select all the actions that the particular user group will be allowed to perform and
click Save.

Take a look at a section of the Workflow Permissions (by Actions Permissions) for SMB computer store.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 381
With the following Workflow Actions set:

Consider John Smith in Sales and Jane Smith in Sales Management, without any restraining conditions set,
both John and Jane would have access to the Edit, History actions, John would have access to the New
Revision action and Jane would have access to the Reassign action (based on the Actions Permissions for their
respective user groups).

SAP CPQ Setup and Administration Guide


382 PUBLIC Workflow-Approvals
On the user side, as expected, John sees all the actions his user group (Sales) is allowed to see, but he does not
see the Reassign action.

Jane also sees all the actions her user group (Sales Management) is allowed to see, but she does not see the
New Revision action her group is not set up to see.

So even though Workflow Actions may be customized based on the status of the quote, workflow actions can
still be further customized using Workflow Permissions and conditions.

5.8 Likelihood of Approval

This functionality allows extending approval rules.

User can define slider definition and attach the definition to approval rules. Sliders allow users to see the
probability of the current quote to be approved. One slider definition can be attached to more than one rule, but
one rule can have only one slider definition. Slider definitions are listed in a standard table, with actions copy,
delete and edit.

Clicking Add New opens a page for adding/editing a slider definition. The first step is to choose which field is
related with this slider. For this slider field user must add an editable field and set corresponding maths (see
Cart Fields Administration [page 393]). The second step is to enter slider boundaries and finally, the third step
is to select the rules to which this slider will be applied.

On the user side, for every rule that has a slider definition, a user has the information about likelihood of
approval based on the color and/or image. The color and image is the same as for margin health and can be
defined in Margin Health Design and Visibility [page 444].

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 383
The user can change this probability by clicking the Adjust button.

When a user moves a slider, SAP CPQ will calculate the value of the slider based on the min and max value and
on the slider's current position. (ex: min=20, max=30, current position = 30, slider value = 20 + (30 - 20)***30
= 23). After calculating the slider value, SAP CPQ will find the field, which is defined in the second step and
meets the criteria from the third step, then applies the value of the slider to that field, then finds the editable
group which contains this field and executes maths for this editable group. So, for this functionality to work
properly the user needs to adjust cart editable fields (see Cart Fields Administration [page 393]) Ex: If the
administrator on the second step chooses Product Type Discount Percent , also administrator must
specified Editable group field where Product Type - Discount Percent will be editable with the corresponding
math.

5.9 Required Fields By Workflow Action

The Required Fields by Workflow Action section determines which fields are required before a certain workflow
action can be performed.

Unlike Workflow Permissions and conditions that hide any action the user isn’t allowed to perform, Required
Fields by Workflow Actions [page 330] ensures that certain fields are entered before the action is successfully
performed. The option to perform the action is visible to the user, but a message is displayed telling the user
certain fields must be entered before the action can be performed.

In administration, user can find this section by clicking on “Workflow/Approvals”, and then on Required Fields
by Workflow Action. The Workflow/Custom fields matrix shows up, which enables user to set up desired
behavior. Note that this page has 3 tabs, to set up workflow for My Quotes, quotes that are edited from Waiting
for Approval tab, and quotes from other users (Other quotes).

For example, by default, Bill To field is required to place an order.

Clicking the Place Order button without entering information into the Bill To fields brings up the following
message: Bill To role data is not defined.

Clicking OK redirects the page to the Customer Info Tab where the Bill To field is located.

In general, there are three default fields, the Bill To, Ship To, and End User that can be set as required fields
before a user can perform a specified workflow action. A customer is fully defined only when all of the fields
that are required for that customer are filled.

The other fields that can be set to as required fields are custom fields (see the section on Custom Fields [page
272] for how to add custom fields). All custom fields added are automatically populated on the left (Fields
rows) of the Required Fields by Workflow Action table.

SAP CPQ Setup and Administration Guide


384 PUBLIC Workflow-Approvals
A field can be required for a particular action by checking the checkbox in the intersection of the field and that
action and clicking Save. Also, a condition can be set that must be true before the field is required. To set a
condition, click the button next to the checkbox by the intersection of the field and the associated action,
and enter a condition using the syntax builder. Click Save after setting a condition.

On the user side, when the user selects the action via a button or a drop down box, SAP CPQ checks if the
required fields have been filled out and if not, SAP CPQ displays a message box and then redirects the user to
the tab containing the required field.

After clicking OK button, user will be redirected to the appropriate quote tab so that he can enter the required
field.

5.10 Approval Auto-Reminder

The Approval Auto-Reminder feature enables you to schedule automatic reminder emails that are sent to
approvers if they do not take action on quote approval requests for a predefined number of days. As a result,
the number of quotes awaiting approval is reduced and the approval process is streamlined.

Example

Sales representatives are often on the road and have no time to log in to SAP CPQ to check which quotes are
not yet approved. To prevent quotes from getting stuck in the Waiting for Approval status for too long, you can
set an approval auto-reminder that notifies designated approvers to act on quote approval requests.

Set an Approval Auto-Reminder

The feature can be accessed in Setup Workflow/Approval Approval Auto-Reminder .

To set an approval auto-reminder, take the following steps:

1. In Name (Required), enter a name for the approval reminder.


2. Turn on the Active toggle switch to enable the reminder.
3. Select your time zone from the Time zone drop-down list.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 385
4. Select when the reminder is sent:
○ Starts:
○ Instantly: the reminder immediately starts the countdown to the days/time period defined in
Approval reminder will be sent.
○ Specific date: the reminder starts from the selected date.
○ Stops:
○ Never: the reminder is sent until disabled or until a specific end date is determined.
○ Specific date: the last reminder is sent on the selected date.
5. Under Approval reminder will be sent if, define the conditions under which the reminder is sent:
○ when the number of quotes awaiting approval is greater than the number you enter;
○ when quotes are awaiting approval for more than the number of days you enter;
Please note that in order to choose between the And/Or options, you first need to select both conditions.
6. Define the reminder frequency under Approval reminder will be sent:
○ every day
○ on specific days
○ periodically on the defined number of days
Please note that a change in frequency options affects how a time interval is calculated. For example, if the
selected time period is initially set to five days but gets changed to seven after some time, the logic
assumes seven days from the day the change was made.
7. Choose the exact time when the reminder will be sent.
8. (Optional) Select Include backup approvers.
The reminder will be triggered for backup approvers in the same way it is triggered for the original
approver.
9. Click Save.

Once the approval auto-reminder is set, the system searches through all quotes in the Waiting for Approval
status that fulfil the previously defined conditions and triggers the execution of the reminder after the specified
time period. Designated approvers receive an email reminding them that certain quotes are awaiting approval.

The email displays the following information in a table-like format:

● quotes that are waiting for approval


● the total amount of each quote
● the total discount for each quote
● the name of the account each quote is linked to
● the number of days each quote has been waiting for approval

To go to a specific quote from the email, approvers need to click on the quote in question. When logged in to
SAP CPQ, approvers are taken straight to the quote. However, if approvers are not logged in to SAP CPQ, or if
the session expires, approvers are redirected to the login page.

5.11 Approving Quotes in One Click


The One-click Approval feature streamlines the approval process by enabling Approvers to accept or reject
Quotes directly from the email, without logging into SAP CPQ.

When Quotes are submitted for approval, they can be approved/rejected by one or multiple Approvers, as
previously defined in the chapter on Approval Rules. If a User violates certain rules, Approvers receive an

SAP CPQ Setup and Administration Guide


386 PUBLIC Workflow-Approvals
approval request email. The email contains all the information the Approvers asked for. Typically, the email
includes the Quote number, the description of the violated rule(s) and customer information. Approvers can
approve or reject Quotes directly from the email by clicking the Accept or Reject buttons.

Example

Once a product is configured and added to Quote, a User can modify the discount. If the resulting discount
exceeds the defined discount limit, the Quote is submitted for approval and an approval request email is sent to
the Approver(s).

You can use a SAP CPQ-provided One-click Approval HTML Email Template [page 347] to create your own One-
click Approval template.

 Note

Administrators can modify CSS properties to suit their needs.

Alternatively, you can set up the fields you want to display in the approval request email by following the
steps outlined below.

Create a One-click Approval Template

The following procedure illustrates how to create an example template for One-click Approvals.

Prerequisites:

● Define Approval Rules. For details, see Approval Rules [page 354].
● Create Email Lists. For details, see Email Lists [page 352].
● Set up the Workflow. For details, see
Approval Process Administration [page 366].

1. Go to Setup Workflow/Approval Notifications .


2. Click Add New to create a notification.
3. Enter the notification name (Notification to Approver).
4. Click Save. Once the name is successfully saved, an additional window designated for the notification
message appears.
5. Click Add New to create your accompanying message.

6. Click to create the subject line (Approval Request for <* SYSTEMQUOTATIONNUMBER *>).
7. Add your previously created email list to the notification.
8. Paste the SAP CPQ-provided One-click Approval HTML Email Template [page 347] into the Message Text
box. Alternatively, if you do not want to use the ready-made HTML template, you can create one. To add

CTX tags and formulas you want to apply to your email template, click next to the message box. The
most frequently used tags are outlined in the Email Template Tags section below.
9. Select HTML as email type to ensure your email is rendered properly. Alternatively, if you have decided not
to use HTML for formatting, choose Plain text.
10. If applicable, enter a condition and add attachments.
11. Click Save.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 387
When a User changes the field value affected by a predefined rule, the designated tags check whether Approval
Rules are violated. If one or more rules are violated, the approval request email is automatically sent to the
Approver(s).

When clicking Accept or Reject, the Approver is automatically redirected to SAP CPQ where the corresponding
message Quote is accepted. or Quote is rejected is displayed, respectively.

If there are multiple Approvers, the approval process depends on the AND/OR logic defined in the Approval
Requirements field in the Approval Rules section. In a scenario where the AND logic is applied, the Quote is
approved if all Approvers approve it. However, if one of them rejects it, the Quote is rejected. If the OR logic is
applied, the Quote is approved if any Approver from the list approves it. The Quote is rejected if a single
Approver rejects it.

Email Template Tags

The following is a list of tags that pull values from SAP CPQ fields.

You can add as many fields to your One-click Approval template as you need.

● <* CO_INFO(NAME) *>: pulls the name of the User who has submitted a Quote for approval.
● <* SYSTEMQUOTATIONNUMBER *>: pulls the Quote number.
● [IF]([EQ](<*CTX( Quote.Approvals.ApprovalRule(Name).IsViolated )*>,True))
{<*CTX( Quote.Approvals.ApprovalRule(Name).Description )*>}{}[ENDIF]: checks whether a rule is violated
and pulls its description.
● <*CTX( Quote.Customer(BillTo).Company )*>: pulls the Bill-to Customer’s company name.
● <*CTX( Quote.Customer(BillTo).Country )*>: pulls the Bill-to Customer’s country name.
● <*CTX( Quote.Customer(BillTo).Email )*>: pulls the Bill-to Customer’s email address.
● <*CTX( Quote.Total.TotalAmount.MarketDisplay )*>: pulls the total amount of the Quote.

 Note

he description of the violated rule is pulled only if the CTX.Quote.Approvals.ApprovalRule(Name).isViolated


tag is evaluated as true.

A tag must be created for each rule that might be violated in the Quote process.

5.12 Item Actions Workflow

The following section describes the Item Actions workflow.

In addition to controlling the visibility of Quote Actions based on the Quote Status, administrators can now hide
certain Quote Actions by using conditions (For example, text in a part number) without any need to customize
the Quote user interface. Item Actions define which actions can be performed on individual items in the Quote
depending on the status of the Quote. The functionality is managed in Setup Workflow/Approval Item
Actions Workflow .

SAP CPQ Setup and Administration Guide


388 PUBLIC Workflow-Approvals
Quotes are organized in My Quotes, Waiting for Approval and Other Quotes sections to match the Quote
organization on the user side in SAP CPQ. A table in each section has two columns:

● Workflow Status - Quote Status in the workflow.


● Item Actions - shortcuts for managing the visibility of actions. When actions are enabled for a status, their
name is displayed above the shortcut icon.

Clicking or opens a page for managing visibility. For each status, you can manage the visibility of the
following actions by selecting/unselecting the respective checkbox:

● Edit (available only for configurable products)


● Copy
● Delete
● Refresh
● Create Favorite
● Upgrade to new product version

The icon shows next to each action. Clicking it opens the formula builder for creating conditions for
additional visibility restrictions. When a condition is created, a flag icon shows next to the formula builder icon.
The conditions should be built on the following rules:

● For the action to be hidden, the condition needs to evaluate to 0.


● To make the action visible, the condition needs to evaluate to 1.
● If the formula evaluates to anything other than 1, the action is not visible.
● If there is no condition formula, the action is visible if selected for the Quote Status.

Example

To hide the Edit action for all Quote Items that have a part number SMB2, the following example formula could
be used:

[NEQ](<*CTX( Quote.CurrentItem.PartNumber )*>,SMB2)

To hide the Edit action for the User Type Contract Management, you could use the following example formula:

[NEQ](<*CTX( Visitor.UserType.Name )*>,Contract Management)

Condition formulas additionally restrict the visibility of Item Actions enabled for each Quote Status. The
condition cannot override Item Actions that are not allowed for the given status. On the user side, the item

actions are available for each product in the Quote under the icon.

5.13 Out of Office for Approvers

The Out-of-Office feature for SAP CPQ approvals enables Approvers on leave to delegate their Approval
requests to substitute Approvers.

With this function, the requests are not held up during the original Approvers’ absence. The backup Approvers
can approve, reject or submit Quotes for further approval on behalf of the original Approver.

Example

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 389
You are in charge of Quote Approvals in your company. However, you plan to go on vacation, which means you
will be unable to respond to Approval requests during your time off. To ensure all Approval requests are dealt
with while you are away, you should make use of the Out-of-Office feature and choose one or multiple backup
Approvers to approve or reject Quotes on your behalf. The backup Approvers will receive a notification and a
copy of the approval requests addressed to you. They will be able to approve or reject Quotes, ensuring a
successful approval process while you are out of office.

Enable the Out-of-Office Feature

To turn on the out-of-office mode and start assigning backup approvers, take the following steps:

1. Go to User Page User details .


2. Turn on the Out of office toggle switch.
The fields for start and end dates and for choosing backup approvers display.
3. Define the dates.
4. Enter the first name, last name, full name, or the email of your backup approver in the Choose Backup
Approver field.
A dropdown list appears, displaying all results which contain the characters you entered. These results
include the backup approvers’ full name, email and country. If a backup approver is out of office at the time
of your search, the search results display their absence dates in your time zone.
5. Select backup approvers.
6. Click Save.

 Note

When searching for backup approvers, SAP CPQ filters active users who belong to the same company as
the original approver.

Out-of-Office Approval Authority

When a Quote is submitted, both the original and backup Approvers receive the Quote in their queue. Any of
the backup Approvers can approve/reject the Quote or submit it for further approval. If there are multiple
backup Approvers, a single backup Approver is enough to approve/reject the Quote.

When searching for available Approvers, SAP CPQ only looks into the first-level backup Approvers.

When the original Approver’s backup Approver is out of office (A→B), the Quote remains in the queue until
either A or B turns off the Out of office toggle switch.

In addition, if the original Approver has multiple backup Approvers (A→B, C, D, E, etc.), and they are at the same
level, SAP CPQ searches for the first available backup Approver. If all first-level backup Approvers are
unavailable, SAP CPQ stops searching for the next-level backup Approvers.

If the original Approver has Quotes awaiting approval, a warning message containing a link to the Waiting for
Approval tab displays when the Approver turns on the Out of office toggle switch. The Approver does not have
to clear the queue in order to set the out-of-office mode. However, the queued up Quotes are not assigned to
the selected backup Approvers. The backup Approvers receive Quotes that are submitted after the out-of-
office mode is turned on.

SAP CPQ Setup and Administration Guide


390 PUBLIC Workflow-Approvals
Reevaluating Backup Approvers

The backup Approver is determined when a User submits the Quote. If the Quote is already approved and then
resubmitted for a new approval, SAP CPQ reevaluates backup Approvers. For example, if the original Approver
disables the out-of-office mode or changes the list of backup Approvers, previous backup Approvers might not
be added.

SAP CPQ Setup and Administration Guide


Workflow-Approvals PUBLIC 391
6 Pricing/Calculations

This section of online Help deals with pricing mechanisms and ways in which calculations are performed in SAP
CPQ.

Cart Fields Administration [page 393]


The Cart Fields administrative section allows you to define which fields in the cart will be editable for
each user group and order status.

Pricebooks [page 406]


A Pricebook contains prices for products in SAP SAP CPQ. In case of multiple prices for one product
(discounts, special offerings, loyalty discounts, etc.), each price should be defined in a separate
Pricebook. Multiple Pricebooks are grouped under a Market.

Currencies [page 430]


Currencies and Market Definitions allow addition of multiple currencies and their conversions into the
system.

Markets [page 432]


Once currency factors have been entered, Market Definitions need to be defined. Market Definition
factors are multiplied by the calculated currency to get the final price.

Market Visibility [page 433]


Once a Market has been defined, it is not visible until a user has been given permission to see the
Market. This is handled in Market Visibility under Pricing/Calculations. Here visibility rules can be
created to determine which user(s) see which Markets.

Discounts/Multipliers [page 434]


Multiplier and discount administration allow discounting when a quote is created.

Discount Priorities [page 437]


Setting the discount priorities allows administrators to set the order in which discounting rules are
evaluated and executed on the quote.

Total Amount Limit [page 438]


Total Amount Limit allows rules to be created which limit the total amount each User or User Type can
Quote or Place Order.

Margin Health [page 440]


The Margin Health feature allows sales representatives to get a visual indication of whether their profit
margin is within the limits of what the administrator marked as a healthy profit margin.

Margin Health Indicators [page 442]


This functionality allows the user to see margin health for every item on the cart and for the total.

Margin Health Design and Visibility [page 444]

Country Sales Tax [page 445]

Edit Item Cost on Cart [page 447]

Preserve Original Currency Rates [page 448]

SAP CPQ Setup and Administration Guide


392 PUBLIC Pricing/Calculations
Quote prices depend on market factor and currency rate, which can be updated through Setup. By
default, when users edit existing quotes and market factor and/or currency rate have been changed in
the system, new values will be applied to the quote.

Recurring and Non-Recurring Prices [page 448]


This new feature gives the ability to support MRC and NRC in the same product and on the same line
item in the cart. There will be two sets of prices, multipliers, discounts, margin indicators, margin
sliders for each item and product type. This allows businesses that have monthly billings to be able to
accurately display this pricing in their configuration and in the cart.

Rounding Setup [page 450]

Shipping [page 453]


The Shipping section provides a means to add shipping and other associated costs to quotes or orders
based on the shipping method selected.

State Sales Tax [page 454]


This feature enables admin to define state tax percentage that will be applied when calculating quote
amount. Admin has the option to define tax calculation based on the state found in the Ship To role, to
define formula that will calculate state tax percentage or to make the tax field editable in the quote.

Price Code in Pricing Calculations [page 455]


Simple products can have price code defined. If price is derived from SAP CPQ standard pricebooks, it
will be calculated based on part number and price code.

6.1 Cart Fields Administration

The Cart Fields administrative section allows you to define which fields in the cart will be editable for each user
group and order status.

It is also possible to define which calculations will be executed on action calculate for each Editable Field Group.
An Editable Field Group is a set of cart fields, which are associated with the same calculations. Actions
performed in Cart Fields Administration are logged in Audit Trail Admin Actions .

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 393
6.1.1 Status - User Group Grid

The Cart Fields administrative section can be accessed by clicking Cart Fields under Pricing/Calculations. This
brings up the Status - User Group Grid as shown in the image below:

On mouse-over, user can see which fields are editable for each User Group - Status combination. For example,
Editable Fields for the User Group Sales and order status Quote won are shown in the image below:

To define Editable Fields and Calculations for a single User Group - Status combination, click the button.

To set Editable Fields and Calculations for all order statuses of a specific user group, click the User Group name
at the top of the grid as shown below.

SAP CPQ Setup and Administration Guide


394 PUBLIC Pricing/Calculations
To set Editable Fields and Calculations of a status for all user groups, click the Status name as shown in the
image below.

SAP CPQ also allows user to set Editable Fields and Calculations for all user groups and statuses by clicking the
Set all link.

 Note

The Default column allows setting Default Editable Fields and Calculations, which will be applied to each
newly added user group or order status.

Clicking the button, User Group name, Status name, or Set all link will bring up a screen where user may
define Editable Fields and Calculations. (See Adding/Removing Editable Fields [page 396]).

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 395
6.1.2 Adding/Removing Editable Fields

Clicking the button, User Group name, Status name, or Set all link in the Status - User Group Grid (See Status -
User Group Grid [page 394])will bring up a screen where user may define Editable Fields and Calculations.

Available Fields and Calculations

● Fields – The Fields list box allows for the selection of available fields, which are not editable.
● Row Types – Editable fields from the Fields list box can be filtered by selecting the appropriate row type
from the Row Types drop down menu.
● Calculations – The Calculations list box lists all available calculations. When you click on a calculation, you
will see a detailed explanation of what that calculation exactly does.
● Copy From – The Copy From option allows you to copy existing settings from other User Group - Status
combinations.

 Note

If you select List Price to be an editable field, you will also need to adjust the Allow Edit List Price on the Cart
application parameter. See Application Parameters [page 545] for more details.

If this parameter is set to Cannot Change List Price, List Price will not be editable even if specified in Cart Fields
Administration.

For List Price to be editable, Allow Edit List Price on the Cart should be set to one of the following values:

● Can Change List Price if it's 0 – the user can change the price only if the product’s price is zero.

SAP CPQ Setup and Administration Guide


396 PUBLIC Pricing/Calculations
● Can only increase List Price – the user is only allowed to increase the product's price.
● Can change any List Price – the user can change the price without restrictions.

Item Add/Update Calculations

Calculations listed in this section will be executed when add item or update actions are invoked. The three
calculations listed in this section (See the figure above) are the base calculations used for calculating all fields
in the cart.

Editable Field Groups and Related Calculations

The Editable Field Groups and Related Calculations section of the definition screen shows the Editable Groups
and related calculations.

The Add new field set link adds a new Editable Group. An Editable Group can be marked as default by selecting
the Default checkbox. This means that these fields will be editable when you enter the cart for the first time.
Only one of the groups can be editable at a time, but more than one field can be a part of an Editable Group.

For settings shown in previous two figures, the cart will appear as shown in the following figure. The first time
you enter the cart, the Total Net Price is editable, but by clicking on Sub -Total this field becomes editable.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 397
In this case, if you enter 8,000 for the Total Net Price and press ENTER or click on Calculate, calculations in
Editable Field Group 4 will be executed. In this example, SAP CPQ calculates the discount percentage that will
generate 8,000 for the Total Net Price as shown in the following figure.

SAP CPQ Setup and Administration Guide


398 PUBLIC Pricing/Calculations
Adding fields and calculations is explained in the following example:

First, select ProductType - Multiplier and ProductType – DiscountPercent from the Fields list. Click on
(marked with a green circle in the figure above). This will add these fields to Editable Field Group 2, and remove
them from the list of available fields.

 Note

One field can belong to only one editable group.

From the Calculations list box in the Available Fields and Calculations section, select the calculations you wish
to add to these fields (use the Ctrl key to select multiple calculations). Click on (marked with a red circle

in the figure above). Sort the calculations by clicking on (marked with a blue circle in the figure above).

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 399
 Note

The order of the calculations is important. If you are having problems with the cart check to see if the order
of the calculations is correct. Usually the last three calculations for a group should be the ones listed in the
Item Add/Update Calculations section, in that order.

If you wish this Editable Field Group to be default, select the Default check box (marked with a yellow circle in
the figure above).

Finally, when you have finished defining the Editable Fields, click on Save at the bottom of the screen.

6.1.3 Editable Quote Comment Field

The Quote Comment field is a total field such as Total Amount, Total List Price, etc. Once the field has been
made Editable, users can use it to input comments related to the quote.

In order for this field to be editable in the quote, admins must:

● Go to Setup Pricing/Calculations Cart Fields Administration .


● Select an appropriate User Type that will be able to edit the field.
● Select an appropriate Quote Status.
● Select Total – CartComment from the Fields list box.

SAP CPQ Setup and Administration Guide


400 PUBLIC Pricing/Calculations
● Click the green arrow in the Editable Field Groups and Related Calculations tab. Your selection will then
appear in the list box below.

To see what a non-editable Quote Comment Field and an editable Quote Comment Field look like on the user
side, take a look at the following figures respectively.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 401
6.1.4 Recurring Rolled-Up Fields

This feature gives user ability to use rolled-up fields (rolled-up recurring list price, rolled-up recurring extended
list price, rolled-up recurring net price, rolled-up recurring extended amount, rolled-up recurring cost, rolled-up
recurring extended amount, rolled-up recurring gross margin, rolled-up recurring discount amount, rolled-up
recurring discount percent, rolled-up recurring net difference from base item, rolled-up recurring end customer
unit price and rolled-up recurring end customer extended price). Rolled up fields for main item are calculated
as summary of all items’ field amount belonging to same configuration (for example, rolled up list price is a
summary of all items' list prices).

Recurring rolled-up fields can be displayed in generated document and sent to CRM. These fields are
calculated only if application flag is set that recurring prices are used in the system.

For each of these fields, new CTX tag are developed on the CurrentItem tag. Tag name is same as for non-
recurring fields, with prefix MRC added (example -
<*CTX( Quote.CurrentItem.MRCRolledUpDiscountAmount.DefaultDecimal )*>)

Editing rolled-up recurring net price

When user edit rolled-up recurring net price recurring discount is recalculated for all (main and line) items.

Example:
Product total price is 1200 and product cost is 720. Recurring discount percent is 10%.

User edit rolled-up recurring net price and enters 900.

Recurring discount is calculated for all line items to 25%.

Rolled-up recurring GM is calculated to 20%.

SAP CPQ Setup and Administration Guide


402 PUBLIC Pricing/Calculations
Editing rolled-up recurring extended amount

When user edit rolled-up recurring net extended amount recurring discount is recalculated for all (main and
line) items.

Example:
Product total price is 1200 and product cost is 720. Recurring discount percent is 10%.

User edit rolled-up recurring extended amount and enters 1000.

Recurring discount is calculated for all line items to 16.67%.

Rolled-up recurring GM is calculated to 28%.

Editing rolled-up recurring gross margin

When user edit rolled-up recurring gross margin recurring discount is recalculated for all (main and line) items.

Example:
Product total price is 1200 and product cost is 720.

Recurring rolled-up extended amount is 1080. Recurring discount percent is 10%.

User edit rolled-up recurring gross margin and enters 25.

Rolled-up recurring extended amount is calculated to 960.

Editing rolled-up recurring discount percent

When user edit rolled-up recurring discount percent recurring discount is recalculated for all (main and line)
items.

Example:
Product total price is 1200 and product cost is 720.

Recurring rolled-up extended amount is 1080. Rolled-up recurring discount percent is 10.

User edit rolled-up recurring discount percent and enters 25.

Rolled-up recurring extended amount is calculated to 900.

Editing rolled-up recurring discount percent

When user edit rolled-up recurring discount amount recurring discount is recalculated for all (main and line)
items.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 403
Example:
Product total price is 1200 and product cost is 720.

Recurring rolled-up discount amount is 120. Recurring discount is 10. Rolled-up recurring extended amount is
1080.

User edit rolled-up recurring discount amount and enters 100.

Recurring discount is calculated to 8.33. Rolled-up recurring extended amount is calculated to 1100.

Editing rolled-up recurring net price (relative)

When user edit rolled-up recurring net price relative recurring discount is recalculated for all (main and line)
items according to their max and min discount percents.

Example:
Product total price is 1200 and product cost is 720. Recurring discount is 10%.

Max discount percent for main and line items is 40% and min discount percent for main and line items is 5%.

User edit rolled-up recurring net price and enters 1000.

Recurring discount for main and line items is calculated to 16.67%.

Editing rolled-up recurring extended amount (relative)

When user edit rolled-up recurring extended amount relative recurring discount is recalculated for all (main
and line) items according to their max and min discount percents.

Example:
Product total price is 1200 and product cost is 720.

Recurring discount percent is 10% for main and line items.

Max discount percent for main and line items is 40% and min discount percent for main and line items is 5%.

User edit rolled-up recurring net price and enters 1000.

Recurring discount for main and line items is calculated to 16.67%.

Editing rolled-up recurring gross margin (relative)

When user edit rolled-up recurring gross margin relative recurring discount is recalculated for all (main and
line) items according to their max and min discount percents.

Example:
Product total price is 1200 and product cost is 720.

SAP CPQ Setup and Administration Guide


404 PUBLIC Pricing/Calculations
Recurring discount percent is 10% for main and line items.

Max discount percent is 40% and min discount percent is 5% for main item.

Max discount percent is 20% and min discount percent is 5% for line item.

Rolled-up recurring gross margin is 33.33.

User edit rolled-up recurring gross margin and enters 25.

Recurring discount for main item is calculated to 26%. Recurring discount for line item is calculated to 14%.

Rolled-up recurring extended amount is calculated to 960.

Editing recurring rolled-up discount percent (relative)

When user edit rolled-up recurring discount percent relative recurring discount is recalculated for all (main and
line) items according to their max and min discount percents.

Example:
Product total price is 1200 and product cost is 720.

Recurring discount percent is 10%.

Max discount percent is 40% and min discount percent is 5% for main item.

Max discount percent is 20% and min discount percent is 5% for line item.

User edit rolled-up recurring discount amount and enters 17%.

Recurring discount for main item is calculated to 21.8%. Recurring discount for line item is calculated to 12.2%.

Rolled-up recurring extended amount is calculated to 996.

Editing recurring rolled-up discount amount (relative)

When user edit rolled-up recurring discount amount relative recurring discount is recalculated for all (main and
line) items according to their max and min discount percents.

Example:
Product total price is 1200 and product cost is 720.

Recurring discount percent is 10%.

Max discount percent is 40% and min discount percent is 5% for main item.

Max discount percent is 20% and min discount percent is 5% for line item.

Rolled-up recurring discount amount is 120.

User edit rolled-up recurring discount amount and enters 100.

Recurring discount for main item is calculated to 15.5%. Recurring discount for line item is calculated to 9.5%.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 405
Rolled-up recurring extended amount is calculated to 1050.

6.1.5 Rolled-Up Cost and Margin

This feature gives user ability to use rolled-up cost and margin on the item level.

Rolled-up cost is displayed on the main item level and represents sum of main item and line items costs. The
same applies for rolled-up margin.

Editing rolled-up net price

When user edit rolled-up net price discount is recalculated for all (main and line) items

Example:
Product total price is 1200 and product cost is 720. Rolled-up margin is 40%. User edit rolled-up net price and
enters 1000. Discount is calculated for all line items to 16.67%. Rolled-up GM is calculated to 28%.

Editing rolled-up gross margin

When user edit rolled-up gross margin discount is recalculated for all (main and line) items.

Example:
Product total price is 1200 and product cost is 720. Rolled-up margin is 40%. User edit rolled-up gross margin
and enters 25%. Discount is calculated for all line items to 20%. Rolled-up price is calculated to 960.

6.2 Pricebooks

A Pricebook contains prices for products in SAP SAP CPQ. In case of multiple prices for one product
(discounts, special offerings, loyalty discounts, etc.), each price should be defined in a separate Pricebook.
Multiple Pricebooks are grouped under a Market.

Pricebooks within a Market are created under the following rules:

● The currency is shared across all pertaining pricebooks.


● Each pricebook has a unique name.
● A pricebook can optionally have a parent pricebook.

Example

A company Europe Trucks sells truck tires through sales channels. The channels are organized into Bronze,
Silver and Gold. Each group has multiple underlying sales channels. Since Gold vendors have a long-lasting

SAP CPQ Setup and Administration Guide


406 PUBLIC Pricing/Calculations
commercial relationship with Europe Trucks, they get to buy the trucks per discount prices. Both Bronze and
Silver vendors also get a discount, although lower than the one Gold vendors get. Consequently, each group
requires a specific Pricebook for the tires. Additionally, Silver and Bronze channels have loyal Customers to
whom they wish to offer special pricing conditions.

So that the system could retrieve a Pricebook specific for a Customer (Customer 7 - Scandinavian Trucks)
administrators create a visibility formula [EQ](<*CTX( Quote.Customer(BillTo).Company )*>, Scandinavian
Trucks) and the specific Pricebook is retrieved when Users select Scandinavian Trucks as the Bill To Customer.

When the Vendor 3 logs into SAP CPQ, the system retrieves the prices from the Vendor 3 Pricebook. If no
prices are define in this Pricebook, the system pulls the prices from the parent Pricebook Gold.

Create a Pricebook

To create a Pricebook, you first need to group it under a Market, define who sees it and then add entries
(products and prices).

1. In Setup, access Pricing/Calculations Pricebooks .


2. In the Pricebooks tab, select the Market and the list of underlying Pricebooks displays.
3. Click Add New Pricebook and a page with the Definition and Entries tabs displays.
4. (Optional) In Definition, select the parent Pricebook. Access the section below for more details on
Pricebook hierarchy.
5. Define the Pricebook name.
6. Select Visible to everyone if you wish everyone to have access to the pricebook.
Alternatively, define advanced or simple visibility conditions to restrict access to the Pricebook. If not set to
be visible to everyone, a Pricebook must have at least one visibility condition defined so that the system
could trace it and properly include it in the Pricebook drop-down list on Quotes.
7. Select the dates in Valid from and Valid until to define when the Pricebook is valid.
8. (Optional) Describe the Pricebook in Description.
Click Save. You can now move to the Entries tab to add products and their respective prices.

Visibility Conditions
Creating simple and advanced visibility conditions enables Administrators to support Users' complex pricing
scenarios. By setting corresponding visibility conditions, Administrators can relate a specific Pricebook to a
Customer so that it automatically displays once Users select the Customer. Also, SAP CPQ supports complex
pricing for Users who manage indirect sales through channels. A combined scenario in which each sales
channel creates as many Customer-specific Pricebooks as needed is also supported by the optimized
Pricebooks feature.

Create Visibility Condition

To create a visibility formula, select the Advanced visibility checkbox and a dedicated box for the formula
displays. You can define the visibility formula in the formula builder by using the Quote-level and User-level

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 407
tags. Please note that by entering 1 in the dedicated box you enable visibility to all Users. The system activates
the advanced formula every time the respective Quote is modified.

The Visibility conditions section shows if advanced visibility is disabled. To create a simple filter, select a field
type, an operator and enter a value. Simple visibility relies on the User and Customer fields and the logic OR is
applied between the visibility conditions. If you need more complex conditions and the logic AND between
them, you should create an advanced formula. The system supports multiple filters.

Default Pricebook
When retrieving prices for products in a new Quote, the system first looks for the User's default Pricebook. The
feature is managed on the User Page.

A default Pricebook is Market-specific, so before selecting the default Pricebook on the User Page, Users
should first select the default Market. On their side, Administrators can select the default Market and
Pricebook for each underlying User in Setup.

 Note

The fields for selecting the default Pricebook on the User Page and the Pricebook in Quote do not display in
the following scenarios:

● The logged User does not have the rights to see any Pricebooks.
● The visibility conditions set up for Pricebooks prevent the fields from showing on certain Quotes.
● The tenant does not have any Pricebooks defined because custom tables are used for pricing.

Pricebook Hierarchy
SAP CPQ enables Clients to manage complex pricing scenarios in which a Product's price depends on multiple
conditions. Pricebooks in SAP CPQ are organized in parent/children hierarchy in levels within a Market. You can
create as many parent and children Pricebooks as you need to achieve specific business goals.

When managing a Quote, Users first need to select its Market and the default Pricebook will display, if defined.
Additionally, the system loops through the Pricebooks from the bottom to the top to display other Pricebooks
visible in the same Market so Users could override the default selection. If only one Pricebook is available, the
system selects it by default. The system filters Users by the visibility rules defined by the Administrator.

Retrofitting Quotes Created Prior to 2017.4


SAP CPQ 2017.4 introduces enhancements to the existing Pricebook feature. The feature has been optimized
to adapt to Quotes/Pricebooks created in previous versions:

● Pricebooks visibility hierarchy is kept when loading old Pricebooks in new SAP CPQ versions, meaning that
a Pricebook with the highest visibility level will have the highest level when loaded in the new version.
● When loading Quotes created in versions prior to 2017.4, the ID of the assigned Pricebooks is null. The
system selects the default Pricebook according to the logic used in previous versions (the Pricebook with
the highest level in the selected Market is selected as default). The default Pricebook is used for pricing any
new items added to the Quote. Previously added items retain their original prices. To save the defaulted
value, Users need to save the Quote.

 Note

If Users decide to change the Pricebook, the system recalculates the prices of all Quote items based on the
newly selected Pricebook.

SAP CPQ Setup and Administration Guide


408 PUBLIC Pricing/Calculations
● When copying and reassigning a Quote, if Users additionally reconfigure it, the entire Quote is copied/
reassigned and the Pricebook visibility is reconfigured. The system copies the selected Pricebook even if it
is no longer visible.
● When loading Quotes with inactive Pricebooks (removed from the system) and invisible Pricebooks (the
User does not have the necessary permission rights), a warning message displays next to the Pricebook
drop-down indicating that the Pricebook is no longer available and suggesting that the new Pricebook
should be selected.
● Regarding the Quotes in the Other Quotes tab, the logic applied for Markets is used for Pricebooks as well.
Previously selected Pricebooks are used on Quotes even though the visiting Users cannot access them.
Visiting Users can apply their Pricebooks which automatically recalculates Quotes. Pricebooks selected by
visiting Users also apply to the Quote owner.

6.2.1 Effective Dates for Price Book Entries

Application parameter, which can be found in Setup General Application Parameters General
Parameters , named ‘Show effective dates for price book entries’, is responsible for ability to record different
prices for same combinations of part number + price code in price books but for different validation period.
When this parameter is set to TRUE user can define validation period for particular price book entries. In Setup
when accessing particular price books, two additional columns will be visible (‘Valid From’ and ‘Valid Until’) -
Figure 1, when this parameter is set to FALSE these two columns won’t be visible - Figure 2, and system will
behave as before (validation period for price book entries won’t be defined). Same will be if admin tries to add
or edit some price book entry - Figure 3 and Figure 4.

Figure 1

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 409
Figure 2

Figure 3

Figure 4

SAP CPQ Setup and Administration Guide


410 PUBLIC Pricing/Calculations
On user side same behavior will be defined, when parameter is set to TRUE columns Valid From and Valid Until
will be visible - Figure 5, in other case when parameter is set to FALSE they won’t - Figure 6. Same will be if user
tries to add or edit some price book entry - Figure 7 and Figure 8.

Figure 5

Figure 6

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 411
Figure 7

SAP CPQ Setup and Administration Guide


412 PUBLIC Pricing/Calculations
Figure 8

Exporting price books will behave as before, when application parameter is set to FALSE columns Valid From
and Valid Until won’t be exported - Figure 9, and when parameter is set to TRUE they will be shown - Figure 10.

Figure 9

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 413
Figure 10

Template for import will be the next - Figure 11. If application parameter is set to TRUE two new columns will be
taken into consideration, otherwise they won’t. Columns Valid From and Valid Until must be in date format
(‘mm/dd/yy’) or empty, or otherwise it won’t be imported in price book. Error will be shown.

Figure 11

For price book entries that were created before this application parameter was included in system, or columns
are left empty during the import, these entries will have unlimited validation period, and columns for Valid From
and Valid Until will be empty when application parameter is set to TRUE. This means if column Valid From is
empty and column Valid Until has some value (e.g. 12/12/12), price book entry won’t have valid from
restriction, and it will be valid until 12th of December 2012. If column Valid From has some value (e.g.
02/02/12) and doesn’t have value for Valid Until, price book entry will be valid from 2nd of February 2012, and
won’t have valid until restriction. If both columns are left empty price book entry won’t have any restrictions
and it will be valid always.

 Note

Two validation periods must not overlap for the same part number (or part number and price code),
otherwise correct system behavior can’t be guaranteed.

SAP CPQ Setup and Administration Guide


414 PUBLIC Pricing/Calculations
6.2.2 Pricing Dynamic Part Numbers and Attributes

This feature brings us ability to improve pricing mechanism so that it can handle part numbers that are
dynamically created in run time. This means that prices for products or attributes that have dynamical part
numbers, and use price books can be calculated through run time.

Two new application parameters are introduced:

1. Prevent users from quoting part numbers that haven’t got a price in pricebooks
2. Prevent users from adding product selections containing attributes that don’t have a price in pricebooks

Depend on if these parameters are turned on or off, system will behave as described below:

● If the products part number is incomplete, or part number can’t be found in price book, and parameter 1 is
turned on, although configuration is complete and user won’t be able to add that configuration to cart
(Figure 1), explanation will be given in responder, and price for product will be 0.

Figure 1
● If the products part number is incomplete, or part number can’t be found in price book, and parameter 1 is
turned off, configuration is complete and user can add that configuration to cart (Figure 2), but price for
product won’t be found in price book and price for that product in cart will be 0.

Figure 2

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 415
● If the attribute part number is incomplete, or part number can’t be found in price book, and parameter 2 is
turned on, although configuration is complete user won’t be able to add that configuration to cart (Figure
3), explanation will be given in responder, price for attribute will be 0, but Total price will be calculated.

Figure 3
● If the attribute part number is incomplete, or part number can’t be found in price book, and parameter 2 is
turned off, configuration is complete and user can add that configuration to cart (Figure 4), but price for
attribute won’t be found in price book and price for that attribute will be 0 in cart, Total price will be
calculated.

Figure 4
● If both parameters 1 and 2 are turned off and product part number and attribute part number can’t be
found, although configuration is complete user won’t be able to add that configuration to cart, explanation
will be given in responder (Figure 5).

SAP CPQ Setup and Administration Guide


416 PUBLIC Pricing/Calculations
Figure 5

On Admin side there will be two application parameters in Setup General Application Parameters
Configurator :

1. Prevent users from quoting part numbers that haven’t got a price in pricebooks
2. Prevent users from adding product selections containing attributes that don’t have a price in pricebooks

If you go to Product/Attribute Options tab in product edit, and edit some attribute, you will see that for the
attribute values that are using price books there is a new field ‘Price Code’ (Figure 6). Depend on that (price
code and part number) prices from price book will be calculated, first from child price book, and if price code +
part number can’t be found there, SAP CPQ will look in parent price book for same codes.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 417
Figure 6

If you click on ‘View prices’ on some attribute value that uses dynamic price code following message will
appear (Figure 7).

Figure 7

If you are on Product Definition tab, and your product is using price book lookup and has dynamic part number,
if you click on ‘View Prices’ following message will appear (Figure 8).

SAP CPQ Setup and Administration Guide


418 PUBLIC Pricing/Calculations
Figure 8

6.2.3 Promotions

SAP CPQ feature “Promotions” allows SAP CPQ administrators and sales representatives to configure and
offer special pricing for the particular product or group of them. Administrators have the possibility to define
different promotions that could be customized based on user type, company or condition(s).

SAP CPQ promotions feature in Responsive Design offers more flexibility when it comes to defining, organizing,
configuring, etc. Based on which design you’ve selected for your SAP CPQ environment, make sure you are
reading the right part of this help page which describes “Promotions” in Classic and Responsive design
respectively.

Promotions in “Classic Design”

To set up Promotions, go to Setup Pricing/Calculations Promotions/Special Pricing . On the page you


will find a list of already defined promotions.

To add a new promotion, click on Add New button. This brings definition page for promotions which have two
tabs: Definition and Pricing Details. See the following figure.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 419
As shown above, under tab Definition all fields are self-descriptive. You can define a period of time in which the
particular promotion will be active. Also, you can choose an option “Subsequent rank override” that will cause
all promotions with rank lower than rank of the current promotion to be suspended. Promotion can be available
to the particular user, user type or company (Step 1), and you can define the condition under the promotion will
be applied (Step 2).

As soon as you fill out the form, click on save and go to Pricing Details tab.

Under this tab, you should select product that you want to offer discount on, and conditional product(s) that
will provide condition rules for the promotion to be triggered.

You can select a discounted product by typing its Part Number, or by browsing through the list of products in
your system.

Under Calculation, two options can be set: Type and Loop.

Type:

● Calculation Type “All Items Same Price” should be applied for scenarios where discounting actions are
applied equally to all items (example – ‘If you buy more than 20 items of the product, you get 5% discount
on all those items’).

SAP CPQ Setup and Administration Guide


420 PUBLIC Pricing/Calculations
● Calculation Type “Each Break Own Price” should be applied for scenarios where depending on the quantity
break, items will have a different price (example - ‘If you buy more than 20 items, you get 5 free’. First 20
items will be calculated with the full price, and additional 5 with price 0.

Loop:

This option should be selected for discounting actions where users will get a discount on certain number of
items for every number of products they purchase (example – ‘For every 10 items that you buy, you get 2 for
free’)

Quantity Breaks: In this part, you define ranges (Quantity Breaks) in quantity to which the particular pricing will
be applied. Take a look at two examples

Example 1: If you select option "All Items Same Price" under “Calculaton type” and set up Quantity Breaks as
follows:

Modification Type Modification Value QTY From QTY To

Discount Percent 10 1 5

Discount Percent 20 6 10

Discount Percent 30 11 15

Then, when you add 4 items into the quote, they will be discounted by 10% each. Also, if you buy 13 itmes, they
will be discounted by 30% each.

Example 2:

If you select option "Each Brake Own Price" then if you buy 4 items, they will be discounted by 10% each, but if
you buy 13 items then first 5 items will be discounted by 10%, next 5 items will be discounted by 20%, and the
remaining 3 items will be discounted by 30%.

If you go to Configurator and add one product (BMW 3D is selected as condition product in our example), then
you get informed in the quote that your order qualify for special promotion. (See the following figure).

If you click on the banner, a pop-up with promotion details is displayed.

Promotions in “Responsive Design”

This portion of page delivers information on "Promotions" functionality while using "Responsive Design". If you
are using "Classic Design", please refer to the previous section.

To set up Promotions, go to Setup Pricing/Calculations Promotions/Special Pricing . On the page you


will find a list of already defined promotions.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 421
To add a new promotion, click on Add New button. This brings definition page for promotions which have three
tabs: Definition, Pricing Details and Scripts. See the following figure.

Under "Definition" tab you can choose a promotion type. There are two types, actually ways, to define
promotion details:

● Pricing Details – this option means that you are going to define promotion details under the tab “Promotion
Details” and will not use ”Scripting” for that purpose
● Scripts – this option means that you are going to write an IronPython script to define promotion details

Many fields on this form are self-descriptive. You can define a period of time in which the particular promotion
will be active. Also, you can choose an option “Subsequent rank override” that will cause all promotions with
rank lower than rank of the current promotion to be suspended.

SAP CPQ Setup and Administration Guide


422 PUBLIC Pricing/Calculations
"Catalog Description" field is used to input and store description of the promotion that will be displayed in
Product Catalog at the product level. This and "Quote Header Description" field can contain plain text and
HTML. (See the following figures).

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 423
Pricing Details or Script – not both!
When you use "Responsive Design", two ways for defining promotion details are available. You can choose one
way per promotion, not both. So, if you choose to set your promotion using "Pricing Details" tab, then "Script"
tab will be disabled and vice versa. We will describe both ways here.

Pricing Details

Under this tab, you can select product that you want to offer the discount on, and conditional product(s) that
will provide condition rules for promotion that is to be triggered. For example, if you want to create promotion in
the way that, if a user buys one product (conditional) then she can buy another product or number of products
at a lower price. You are allowed to define zero or more conditional products.

You can select a discounted product by typing its Part Number, or by browsing through the list of products in
your system.

Also, beside discounted product, the promotion can be set to be valid for the entire product type or product
category. You can set this in the appropriate setup form (See the following figure). Setup of product type
promotion and product category promotion is similar to the described setup for product promotion setup.

SAP CPQ Setup and Administration Guide


424 PUBLIC Pricing/Calculations
Set up Pricing Details

Under “Calculation”, two options can be set: Type and Loop.

Type:

● Calculation Type “All Items Same Price” should be applied for scenarios where discounting actions are
applied equally to all items (example – ‘If you buy more than 20 items of the product, you get 5% discount
on all those items’).
● Calculation Type “Each Break Own Price” should be applied for scenarios where depending on the quantity
break, items will have a different price (example - ‘If you buy more than 20 items, you get 5 free’. First 20
items will be calculated with the full price, and additional 5 with price 0.

Loop: This option should be selected for discounting actions where users will get a discount on certain number
of items for every number of products they purchase (example – ‘For every 10 items that you buy, you get 2 for
free’)

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 425
Total Allowed Uses field refers to the quantity of the product offered under promotional conditions. The number
of products available for the promotion will decrease each time the product is added to the quote. If products
are offered outside of a promotion, the total allowed uses will not be calculated.

Quantity Breaks – In this part, you define ranges (Quantity Breaks) in quantity to which the particular pricing
will be applied. Take a look at two examples.

Example 1: If you select option "All Items Same Price" under “Calculaton type” and set up Quantity Breaks as
follows:

Modification Type Modification Value QTY From QTY To

Discount Percent 10 1 5

Discount Percent 20 6 10

Discount Percent 30 11 15

Then, when you add 4 items into the quote, they will be discounted by 10% each. Also, if you buy 13 items, they
will be discounted by 30% each. Note that Promo Discount Percent displayed in the Quote is same for each
item.

Example 2:

If you select option "Each Brake Own Price" then if you buy 4 items, they will be discounted by 10% each, but if
you buy 13 items then first 5 items will be discounted by 10%, next 5 items will be discounted by 20%, and the
remaining 3 items will be discounted by 30%. Note that Promo Discount Percent displayed in the Quote is
calculated as overall discount, based on the promotion rules.

SAP CPQ Setup and Administration Guide


426 PUBLIC Pricing/Calculations
And/Or Logic for conditional products

From time to time there might be a situation when you want to add one or more products as conditional when
setup promotion. SAP CPQ makes it possible and allows you to choose whether you are going to create
condition using "AND" or "OR" logic between conditional products, product types or categories. SAP CPQ
groups conditions based on the login operator you had chosen during promotion set up.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 427
Scripted promotions

For promotions that have complex discounting rules, administrators now have the option to write IronPython
script. Scripts written during promotion setup will be executed on the "Add item to cart" event.

Scripting promotions can be applied in two ways depending on If selected product for triggering promotion is:

1. The same product on which promotion is applied to.


2. A product which, if added to the quote, causes promotion to be applied on some another product.

In the first case, Item of type "IQuoteItem" can be used in script. This is a current item whose properties can be
changed.

SAP CPQ Setup and Administration Guide


428 PUBLIC Pricing/Calculations
In this example, promotion for "SMB Desktop Computer" product depends on number of existing items in the
quote. To apply promotion, list price needs to be calculated and promotion discount and amount will be applied
automatically.

In the second case, promotion discount and amount need to be calculated through script in order to be applied
on defined item.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 429
6.3 Currencies
Currencies and Market Definitions allow addition of multiple currencies and their conversions into the system.

Currencies are used to convert the default currency to a foreign currency. SAP CPQ calculates foreign
currencies by multiplying the conversion rate given in table Currencies by default currency price. This amount
is then multiplied by Market Definition to get the final converted price. Market Definitions give the ability to vary
the amount of conversion for different areas. For instance, in the US, the Dollar is worth a standard amount, but
it may be worth a different amount if used somewhere else. To compensate for this, market definitions can
multiply the US Dollar, or any other currency, by a value greater or less than 1 to give the US Dollar a higher or
lower value.

One of the currencies has to be set as the default currency. The US Dollar (USD) is the default currency used
throughout the system and is the base currency. For the purpose of the manual, we’ll keep the US Dollar as the

SAP CPQ Setup and Administration Guide


430 PUBLIC Pricing/Calculations
default currency. When a different currency is calculated, the US Dollar (default currency) is multiplied by the
conversion rate entered in Currencies.

The Currency column displays the common abbreviation of the currency, the conversion rate displays how
many units of that currency is equivalent to 1 unit of the default currency (the default currency has a
conversion rate of 1), the description displays the longer description of the currency, the sign displays the sign
entered for that currency, and the default column displays whether the status is the default status or not (only
one of the currency has a YES in the default column).

Currencies can be added using the Add New button.

The fields in yellow are required. User will enter a short name of the currency in the currency column (because
this name would be used to refer to this currency throughout SAP CPQ), than will enter the conversion rate of
the currency relative to the base currency, brief description of the currency, a sign for the currency, and choose
whether the currency would be the default or not. If some other currency is currently set as the default
currency, a confirmation screen would pop up informing that another currency is currently set as the default
currency. Click OK to make the current currency the default or click Cancel to cancel changing the default
status to the current status.

 Note

Fields highlighted in yellow are required.

The other currencies are available to modify the currency factor. Because USD is the base and default
currency, its factor cannot be changed and is always constant at 1. Figure A shows the screen displaying the

current currency factors. The , and buttons are used to copy, delete or edit a currency respectively.
Currency symbol can be changed, but it is important to know that changing it you will affect all markets and
therefore all quotes that uses that currency. It is not possible to change currency symbol to one already used.

Note that a currency cannot be deleted while the currency is being used by a Market (See Markets [page 432]
for more information) or while the currency is the default currency. Attempting to delete a currency that is the
current default currency would result in an error message. Attempting to delete a currency that is being used
by a market would also result in an error message.

The left column displays the currency description, while the middle column displays the currency abbreviation.
The abbreviation is used on the Market Definition page to modify the value of the currency. To edit a currency
factory, delete the current factor, enter the new one, then click Save.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 431
6.4 Markets

Once currency factors have been entered, Market Definitions need to be defined. Market Definition factors are
multiplied by the calculated currency to get the final price.

Market Definitions can be defined by clicking the Market link under the Pricing/Calculations menu.

Here Market Definitions can be Copied, Deleted, or Edited by clicking the respective symbol to the left of the
Market Code. To create a new Market Definition click Add New at the top. This brings up a blank definition
screen.

Every field is required and needs to be filled in order to save the definition. The Market Code is returned with the
tag <*MCODE*> which can then be used with an AUX or XWS tag to access additional information from
another source. Market Name is used to identify the Market Definition. When a user selects the Market in the
cart or on their user page, the Market Name is used for the selection. Currency Sign is the currency that, once
calculated, will be multiplied by the Market Factor to get the final price calculation.

Example:

The Currency factor for the European Monetary Union (EUR) is set to 0.95 and a Market Factor using EUR is set
to 1.2. If the total cart amount comes to $2000, then this amount will be multiplied by the EUR conversion rate
(0.95) then by the Market Factor (1.2) to get €1656. This is the final price calculation.

Once a Market has been defined, it is not visible until a user has been given permission to see the Market. This
is handled in Market Visibility [page 433].

 Note

When SAP CPQ is integrated with SAP Subscription Billing, you can select a timezone for a market. The
contract duration and the start and end dates of the subscription product are observed as midnight in the
timezone specified for the market assigned to that product.

SAP CPQ Setup and Administration Guide


432 PUBLIC Pricing/Calculations
6.5 Market Visibility

Once a Market has been defined, it is not visible until a user has been given permission to see the Market. This
is handled in Market Visibility under Pricing/Calculations. Here visibility rules can be created to determine
which user(s) see which Markets.

The Market Visibility Administration page is shown in the following figure. Here visibility rules can be Deleted or
Edited by clicking the respective symbol to the left.

To add a new rule, click Add New at the top of the administration screen. Creating a new visibility rule brings up
the screen shown below.

Three criteria fields are displayed at the top of the screen: User, User Type, and Company. Defined Users
(Employee), User Types (Type), and Companies are listed in each field. Selection of the criteria fields

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 433
determines which user(s) can view the selected market(s). Each criteria selected must be true in order for the
markets selected to be visible. For instance, if user Hooly Cook and user type Inside Sales are selected for a set
of markets, then that rule will work for Hooly only if she is part of the Inside Sales user type i.e. the selections in
the User, User Type and Company list-boxes are connected with a logical AND operator, so the market is visible
only when all three selections are true. However, users are able to access quotes even when the visibility of the
quotes' selected market is restricted to them.

The Market Name field displays the Market Definitions that have been created. To select multiple markets
(under the Market Name list-box), click and drag to select multiples, hold down the Ctrl key and make multiple
selections, or click one hold down the Shift key and click another to make multiple selections. The Condition
field can contain any valid expression that can be evaluated as “1” (True) or “0” (False). If the result is “0”
(False) the rule will not apply. If the expression evaluates to “1” (True) then the rule will be applied.

Click Save at the bottom of the screen to create the rule.

 Note

SAP CPQ evaluates market visibility rules on user login, meaning that none of the quote-dependent tags
will work in the market visibility condition.

6.6 Discounts/Multipliers
Multiplier and discount administration allow discounting when a quote is created.

In addition to developing pricing rules for configured products, discount and multiplier rules can be created
also. These rules can be very specific, down to a particular user and a product, or very generic such as for a
particular user group, product category or a product type. Any combination of selections from 5 criteria groups
can be used to specify a discount or multiplier.

Multipliers and Discounts can be used individually or simultaneously. Minimum Value, Default Value, and
Maximum Value can be assigned for each. The Default Value is used when a user first generates a Quote.

Depending on the Shopping Cart style used (see Visual Styles in User Types [page 160]), the Default Discount,
or Multiplier Value, applied to the Cart Total can be modified. Users are allowed to enter values that are within
the Maximum and Minimum Value range. If a user enters a value outside of this range, then the Approval
Process (see the chapter on Approval Process) is initiated.

 Note

Default Value is only applied to the Cart the first time that a user generates it. If the Discount or Multiplier is
modified then that value is contained as the Discount or Multiplier value. Reopened quotes will have the
modified Discount or Multiplier value.

The Discounts and Multipliers administration can be accessed through the Discounts/Multipliers link under
Pricing/Calculations.

Discounting rules can be deleted or edited by clicking or respectively. Rules can also be searched by
entering criteria in the text boxes at the top and clicking the Search button on the left. To add a new rule, click
Add New at the top of the screen. This brings up the screen shown below, which is also displayed if a rule is
edited.

SAP CPQ Setup and Administration Guide


434 PUBLIC Pricing/Calculations
When adding a new rule, default discounts and multipliers are added in order to avoid making a mistake for
those users who are not familiar with use of multipliers/discount.

When new rule is being created,

● default discounts is set to 0 for min, max and default


● default multipliers is set to 1 for min, max and default

Discounting rules can be specified from 5 criteria groups that are shown at the top of the page:

● User Group
● User
● Category
● Product
● Product Type

The priorities of these groups are determined by what is set in Discounting under the Discounting Priorities
menu (see Discount Priorities [page 437]). Fields displayed to the left have higher priority. For instance, in the
examples shown below, User Type has the highest priority. It should also be noted that the labels for each
criteria can be changed in Priority Administration. So label names may be different from what is discussed
here.

Multiple selections within each group are not allowed though. Multiple selections across different groups are
allowed. When selections are made across different groups, the discount or multiplier is applicable only when
all selections are true. Rules can to be created for each individual item in a criteria list if desired.

When check box ‘Use recurring price and cost’ has been activated under SAP CPQ Setup General
Application Parameters General , fields for ‘Discounts for Recurring Price’ and ‘Multiplier for Recurring
Price’ will be added. For more details see Recurring and Non-Recurring Prices [page 448] section.

Multipliers are values such as 0.5, 0.75, etc. that when applied to the list price will represent a percentage of the
price, such as 50 or 75.

Discounts, on the other hand, are values such as 50, 25, etc. that when applied to the list price will represent
that percentage taken off of the price.

The Condition field is used to enter expressions to determine when the rule will run. Any expression entered
must resolve to 1. Entering into the Condition field will make the rule active at all times.

The example above shows a rule that users Bane Purtic from the user group CUSTOMER, can sell Personal
Printer from the category Hardware using multipliers from 0.5 to 1 and/or discounts from 0 to 50, as long as
those products are of product type Product. Also, according to the condition statement, this rule will only run
when the user’s Zip Code is 53202.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 435
 Note

More than one rule can be written for the same product using the same user. When this is the case, the
most restrictive rule will be used. This only works, though, when a rule is defined for the product, not for
product type.

Conditions can also be entered into the Multiplier or Discount fields to determine the value. In this way, multiple
rules do not need to be created for separate values.

This example shows that the user will have a Minimal Multiplier value of 0.25 and Default value of 0.5. The
Maximum value, though, is contingent on the user’s zip code. If their zip code is 53202, then the Maximum
value is 1. Otherwise, the Maximum value will be 0.75.

Conditional statements within the Multiplier or Discount fields can be used separately or in conjunction with
the Condition field.

 Note

For more information on Tags and IF statement expressions see Appendix A.

The User can override values? check box is used to determine whether or not a user can modify the Multiplier
or Discount with a value that is out of the Minimal and Maximum value range. When a user attempts to enter a
value that is out of that range, a warning is displayed alerting the user that the value is out of range.

If this box is unchecked, the user will be unable to enter the value. If checked, though, the user will be able to
enter the value, but the quote is automatically submitted for approval to the user’s approve parent. The
Approval Process is then initiated. See the chapter on Approval Process for more information on the Approval
Process.

 Note

The Approval Process must be set up in order for the User can override values check box to work correctly.

SAP CPQ Setup and Administration Guide


436 PUBLIC Pricing/Calculations
6.7 Discount Priorities

Setting the discount priorities allows administrators to set the order in which discounting rules are evaluated
and executed on the quote.

Example

For example, you want to allow all sales representatives to discount a product to a maximum of 10%. However,
a sales representative in Paris can discount the product to a maximum of 20%, because you just opened the
store there and you want to give a better initial offer to buyers. In this scenario, you would create a discount rule
for the specific product with a minimum discount of 0 and the maximum discount 10. Then, you would create
another rule for the specific user in Paris, and the product and the rule would allow 0 as the minimum discount
and 20 as the maximum discount. The first rule would have the rank 1 and the second rule for the specific user
would have the rank 0. This way, when any user changes the discount of the before mentioned product on the
quote, the system checks user details, and if it’s not the user from Paris, the system then checks whether the
new discount is in the limits of the rule defined for that specific product. However, if the user from Paris
changes the discount, then the system only applies the rule which is defined for that user.

The discounting rules are set up in the Discount/Multipliers page for Quote 1.0 and the Discounts page for
Quote 2.0. Both pages are in the Pricing/Calculations section.

The discount rules can be set for a specific user, user type, a specific product, product type, and product
category. If needed, per company needs, you can define a custom label for each field.

Rank

The rank of rules can be set from 0 to 5, 0 being the highest rank and 5 the lowest. If you create a rule for a user
with the rank 0, and a rule for a user type with the rank 5, the system will first evaluate the rule set up for the
user, since it has the lowest rank.

The rules are applied when users change both item discounts and product type discounts, but the system
evaluates them differently. When you apply a discount to an item, all rules are evaluated and applied according
to their rank. However, if you apply the discount to a product type, the rules based on the product category and
a specific product will not be evaluated. The reason behind this is that products in one category can have
different product types. In the same way, if you change the discount on a product type, the system won’t
evaluate the discount set for a specific product because that product type probably contains other products as
well.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 437
6.8 Total Amount Limit
Total Amount Limit allows rules to be created which limit the total amount each User or User Type can Quote or
Place Order.

If Cart amount limit is exceeded then a workflow rule will reroute the Cart accordingly (see Approval Process
Administration [page 366]). This chapter will discuss creating rules which limit the Carts total amount limit
using simple and complex conditions.

Selecting the Total Amount Limit under Pricing/Calculations will bring up the Total Amount Limit screen.

Selecting Add New brings up the Total Amount Limit screen shown in the next picture. In this example, user Will
Peterson is limited to $1,000.

The Condition field can contain any valid expression that can be evaluated as “1” (True) or “0” (False). If the
result is “0” (False) the rule will not apply. If the expression evaluates to “1” (True) then the limit will be applied.

The same simple rule can be created, but applied to an entire group. At the next picture the Entire Inside Sales
group can only quote $5,000. If Will Peterson from the previous example was a part of the Inside Sales Group,
he would be able to quote up to maximum of $5,000 because of the Priority Rules used in this example.

 Note

Fields displayed on the left have a higher priority.

Complex Cart Limits

Using the 2 examples above we can also create complex rules that would evaluate to 0 or 1 in the condition
field. Instead of using a 1 for John Smith, let’s set his limit based on the location of the customer. At the next

SAP CPQ Setup and Administration Guide


438 PUBLIC Pricing/Calculations
picture, if the customer’s zip code is equal to 53202 then John Smith can quote up to $10,000. This is
accomplished with the expression: [EQ](<*CUSTOMERZIPCODE*>, 53202)

In the next example, the Channel Rep Group can only quote up to $5,000 if the Territory of the Customer
equals West. Uses the expression: [EQ](<*CUSTOMERTERRITORY*>, WEST)

When finished, click the Save button. This adds the new rule to list on the Total Amount Limit page. To Edit or
Delete a rule, click the respective symbol next to the group column. Total Amount Limit can be used in the
Approval Process Administration to delegate which user will receive any Submit for Approval requests from
selected users. For more information see Approval Process Administration [page 366].

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 439
 Note

The tag <*USERAMOUNT*> is used to retrieve the Total Amount Limit for a user

6.9 Margin Health

The Margin Health feature allows sales representatives to get a visual indication of whether their profit margin
is within the limits of what the administrator marked as a healthy profit margin.

A dedicated column in the quote shows the corresponding icon and the color depending on the margin health
indicators that the administrator set up.

 Note

The profit margin in SAP CPQ is calculated by subtracting the cost from the extended list price (discounted
list price) and calculating the percentage of that amount in comparison with the list price.

Create Margin Health Indicators [page 440]


Margin health indicators can be set up globally for all users and all items, or for a specific user, user
type, item, and product type.

Margin Health Design and Visibility [page 441]


On this page, you can define the icon that displays on quotes as the margin health indicator, as well as
the color of the icon.

Margin Health Action [page 442]


The Margin Health action allows users to set the margin health on the quote after which the system
recalculates the discount and eventually all other calculations are triggered according to the setup in
Cart Fields Administration.

6.9.1 Create Margin Health Indicators

Margin health indicators can be set up globally for all users and all items, or for a specific user, user type, item,
and product type.

Prerequisites:

● in UI Design Quote Layout , move the Margin Health column from available to selected columns to
make it visible on quotes.
● in Quotes Quote Layout Permissions , set the visibility of the Margin Health column for a permission
group by moving the column from available to selected columns. Have in mind that you also need to set the
visibility of the column on the Margin Health Design and Visibility page.

1. Go to Pricing/Calculations Margin Health Indicators .


2. Click Add New.
3. In Step 1, select the user type and the user.
The margin health indicators defined on this page apply to the selected users.

SAP CPQ Setup and Administration Guide


440 PUBLIC Pricing/Calculations
4. In Step 2, select one of the following:
1. Overall – margin health displays for all items on the quote, regardless of their type and category, and
for the product types and item totals.
2. Items and Product Type sub-totals – margin health displays for the selected product, product category,
and product type.

 Note

The Margin Health column is visible on the quote even when the product isn’t in the categories
selected here if the For items where list price is zero, display margin picture as and the For items
where cost is zero, display margin picture as are set to anything but None. Selecting None for these
two fields removes the column from the quote.

5. In Step 3, enter the margin health indicators, in percent, for the price and the recurring price.

 Note

Set Margin Health for Recurring Price is available only if the parameter Use Recurring Price And Cost is
set to TRUE in General Application Parameters General Parameters .

6. In Step 4, define a specific condition under which what was defined above is applicable.
The Margin Health column is now displayed on quotes.

Related Information

Margin Health Design and Visibility [page 441]


Margin Health Action [page 442]

6.9.2 Margin Health Design and Visibility


On this page, you can define the icon that displays on quotes as the margin health indicator, as well as the color
of the icon.

The default colors and icons are applied if you don’t select other colors and upload other icons. If you’ve
already uploaded a new icon, you can use the default one again by clicking Restore Default. Have in mind when
uploading your own images that they should fit the size of the Margin Health column on the quote. There are no
restrictions on the supported format of uploaded images, except for Internet Explorer, in which only images in
the .gif format are supported.

Furthermore, you can set up whether an icon displays in the Margin Health column, and which one, when the
list price and the cost are zero in the For items where list price is zero, display margin picture as and the For
items where cost is zero, display margin picture as dropdowns, respectively.

Additionally, select the user types for which the Margin Health column displays on quotes.

 Note

Although you have set the visibility for margin health for a user type as a prerequisite in Quotes Quote
Layout Permissions , you still need to select it in the list in the Margin Health Design and Visibility page.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 441
Related Information

Create Margin Health Indicators [page 440]


Margin Health Action [page 442]

6.9.3 Margin Health Action


The Margin Health action allows users to set the margin health on the quote after which the system
recalculates the discount and eventually all other calculations are triggered according to the setup in Cart
Fields Administration.

Users can change the margin health only within the limits of what the administrator defined as margin health
indicators.

To enable this action, add it to the right status in Workflow/Approval Workflow and set the permissions
for it in Workflow Permissions.

Related Information

Create Margin Health Indicators [page 440]


Margin Health Design and Visibility [page 441]

6.10 Margin Health Indicators


This functionality allows the user to see margin health for every item on the cart and for the total.

The administrator can define margin health rules for a User Group, User, Category, Product Type or Product. To
define margin health rules, click the Margin Health Indicators link under the Pricing/Calculation menu.

SAP CPQ Setup and Administration Guide


442 PUBLIC Pricing/Calculations
From this screen, different margin health rules can be added, deleted, edited or copied. Clicking Add New
opens a page where a new margin health rule can be defined in four easy steps.

In the first step, user can define the user group or user the indicators will be applied to. In the second step, it is
possible to define if these margin health indicators will be applied to all items and product type sub-totals or for
totals. Choosing Items and Product Type sub-total, as shown in the image below, allows defining the Category,
Product Type or Product for which this indicator will be applied.

In step 3, user can enter formulas for margin health boundaries and finally in the fourth step define the
condition under which these margin health indicators will be used.

When check box Use recurring price and cost has been activated under SAP CPQ Setup General
Application Parameters General , new fields for ‘Margin For Recurring Price’ are added. For more details see
Recurring and Non-Recurring Prices [page 448] section.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 443
To define Margin Health Design and Visibility, go to Margin Health Design and Visibility [page 444] under
Pricing/Calculation.

6.11 Margin Health Design and Visibility

Once user has defined Margin Health Indicators as described in Margin Health Indicators [page 442], he can
define margin health design and visibility by clicking the Margin Health Design and Visibility link under the
Pricing/Calculation menu.

Here user can choose which color and picture will be used for low, middle and high margin.

 Note

There are no restrictions in the system on the supported format of uploaded images, except for IE in which
only images in the .gif format are rendered properly.

In addition, it is possible to define which user group will see margin health on the cart. The image below shows
the cart with margin health.

SAP CPQ Setup and Administration Guide


444 PUBLIC Pricing/Calculations
There is a standard action Margin Health (see Workflow Actions [page 330]) that allows user to adjust margin
health with a slider. When a user clicks the Margin Health button, a modal window will appear as shown below.

On this page, the user can adjust margin health with sliders. Margin health can be adjusted per item, product
type or total.

6.12 Country Sales Tax

Overview

This feature enables admin to define VAT (per country) percentage that will be applied when calculating quote
amount. Admin has the option to define tax calculation based on the country found in the Ship To role, to define
formula that will calculate VAT percentage or to make the tax field editable in the quote.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 445
Set up Tax calculation based on Ship To country

To modify or add a tax percentage for a country, click the Country Sales Tax link under the Pricing/Calculations
menu.

Tax percentages can be Deleted or Edited by clicking the corresponding buttons next to the Country Name. To
add a new country tax click Add New at the top of the screen.

To create a new tax, on this screen, select the country and then enter the percentage that will be associated
with that country. Click Save to save the country sales tax.

Once created, country taxes are added to the quote/cart total. The country percentage used on the quote is
determined by the country entered in the Ship to Address. Once a country is chosen for the Ship to address on
the Customer Info tab of the quote, the related percentage is added to the total amount.

Set up formula for country tax calculation

 Note

The result of the formula calculation will override the percentage calculated based on Ship To country
(table in the previous screen).If formula is left empty, tax will be calculated based on table values

By clicking on button 'Country Tax Formula' you can define formula for country tax. On the user side when
calculating tax, value that is obtained based on this formula will override table values.

 Note

If user wants to obtain value from the Country Tax table and use it in formula, it is possible to use this tag-
<*CTX( Global.Tax.Country(<*CTX( Quote.Customer(ShipTo).CountryAbbrev )*>) )*>.

SAP CPQ Setup and Administration Guide


446 PUBLIC Pricing/Calculations
Set up editable tax field for users

If you want to make country tax field editable for your users, you need to set up cart fields 'Total - VAT Amount'
and/or 'Total - VAT Percent' to be editable in the quote. It can be done through Adding/Removing Editable
Fields [page 396] in Cart Fields Administration.

6.13 Edit Item Cost on Cart

When item is being edited in the quote and cost has been previously changed in the quote, based on the value
of parameter ‘When item’s cost is edited in the quote, upon changing item’s configuration, cost will be
recalculated’, SAP CPQ will recalculate cost based on configuration (if value is TRUE) or leave cost amount that
was entered by user in the quote (if value is FALSE).

Same logic will be applied during ‘Reconfigure’ action.

Please note that this will only be applicable when item cost can be edited in the quote.

When item’s cost is edited in the quote, upon changing item’s configuration, cost will be recalculated parameter
is placed in Setup General Application Parameters Shopping Cart and Quotes .

Default value for parameter is FALSE.

Some XSLT transformation for cart doesn't have COST as field instead they have EXTENDEDCOST.

Here are all the steps to edit cost in the cart in that situations:

1. Set the application parameter “Allow Edit Cost on the Cart” to TRUE in Setup General Application
Parameters Shopping Cart and Quotes .
2. Add “Child Item - Cost” and “Main Item - Cost” to an Editable Field Group in Setup Pricing/
Calculations Cart Fields Administration .
3. Change all occurrences of “ExtendedCost” to “Cost” in all user type XSLT files where the costs should be
editable. This can be done by:

a. Downloading the Shopping Cart Visual Style in Setup => Users => User
Types =>
b. Editing the applicable user type =>
c. Downloading the "Visual styles (Shopping cart / Quotes)" XSLT file =>
d. Replacing all occurrences of "ExtendedCost" with "Cost" =>
e. Saving the updated file with a ".xslt" extension =>

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 447
f. Uploading the new XSLT file to " Visual styles (Shopping cart / Quotes)"
=>
g. Selecting "Save" to save the changes to the user type.
h. Selecting "Exit Setup" to refresh the user type settings and viewing an
existing quote.

6.14 Preserve Original Currency Rates

Quote prices depend on market factor and currency rate, which can be updated through Setup. By default,
when users edit existing quotes and market factor and/or currency rate have been changed in the system, new
values will be applied to the quote.

In order for quotes to preserve original market factor and currency rate, you can set a flag found in Setup
General Application Parameters Shopping Cart and Quotes Preserve market factors and currency rates in
saved quotes .

Switching this parameter to “On” means that when users edit existing quotes, original market factor and
currency rate will be applied to the quote.

Re-applying market factor and currency quote to old quotes

If system is using original market factor and currency rates (parameter set to 'On'), users can still apply new
market factor and currency rates by executing action “Refresh Market and Currency”.

“Refresh Market and Currency” action can be added to cart either as a standalone action - for users to execute
it explicitly, or as a pre or post-action to some other quote action - for system to execute it implicitly without
informing users . This can be set up in Workflow/Approval Workflow menu in administration.

6.15 Recurring and Non-Recurring Prices

This new feature gives the ability to support MRC and NRC in the same product and on the same line item in
the cart. There will be two sets of prices, multipliers, discounts, margin indicators, margin sliders for each item
and product type. This allows businesses that have monthly billings to be able to accurately display this pricing
in their configuration and in the cart.

A single item can be defined with two prices, a one time fee (non-recurring cost or NRC) and a recurring fee
(monthly recurring cost or MRC). For example this can be very useful when selling software product with initial
installation/setup monthly fee or if some company is selling subscriptions with initial installation cost and
monthly subscription fee.

The cart fields have also been updated to reflect this update, if administrator has chosen to turn it on. In
product configuration, recurring price are added to responder for every attribute where check box ‘Show
Recurring Price’ is selected. This price is displayed under current price. At the bottom of responder (under Total
Price), there is new label ‘Total Recurring Price’ with product recurring price displayed.

SAP CPQ Setup and Administration Guide


448 PUBLIC Pricing/Calculations
All relevant fields in the quote and in quote items (Net Recurring Price, Multiplier, Multiplier Amount, Recurring
Extended Amount, Discount Amount, Recurring List Price, Channel Markup Percent, Recurring cost etc.) are
duplicated. Additionally, all appropriate fields in quote total are duplicated (also for product types). Same logic
that is applied for non-recurring price and cost will be applied for recurring prices and cost. No new quote
calculations will be added (existing ones will be changed).

Only layout for ‘QuoteDefault.xslt’ will be changed to support recurring prices and cost. Parameter ‘Use
recurring price and cost’ will be used to determine whether recurring price and cost fields will be displayed.

In order to use this feature, user has to set up few parameters first.

1. In Setup General Application Parameters General , there will be a check box ‘Use recurring price
and cost’ (not selected by default). For more details, see Application Parameters [page 545] section.
When this is activated MRC/NRC fields in Discounts/Multipliers and Margin Health will be active.
2. In Setup Pricing/Calculations Discounts/Multipliers , fields for ‘Discounts for Recurring Price’ and
‘Multiplier for Recurring Price’ will be added. For more details see Discounts/Multipliers [page 434].
3. In Setup Pricing/Calculations Margin Health Indicators , in step 3, new fields for ‘Margin For
Recurring Price’ are added. For more details see Margin Health Indicators [page 442].
4. On Tab 1 of the Product Administration, there is a field for ‘Base Recurring Price’ in ‘Pricing’ section.

5. On Tab 2 of the Product Administration, there are fields for attribute value ‘Recurring Price’ and ‘Recurring
Cost’ in table for attribute values. Also, there is a check box that is labeled ‘Show Recurring Price’. For more
details see Product Editor [page 56].

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 449
6.16 Rounding Setup

In Setup Pricing/Calculations Rounding Setup , you can create and apply rounding rules to columns on
quotes. Rounding rules determine how many digits are used in price calculations, how many decimal places are
displayed to users and, in Quote 2.0, which currencies are affected by these calculations.

 Note

There is always the Default rounding rule which is used in all calculations whenever specific values are not
provided. This rounding rule can be edited.

Since the Rounding Setup on Quote 1.0 differs from the one in Quote 2.0, they are covered separately in the
following text.

Adding Rounding Rules in Quote 1.0

1. Go to Setup Pricing/Calculations Rounding Setup .


Two parameters and the list of existing rounding rules displays.
2. Click Add New.
The list of columns on quotes for which rounding rules can be set displays.
3. Select the column for which you wish the rounding rule to be applied.
Rounding preferences are displayed.

SAP CPQ Setup and Administration Guide


450 PUBLIC Pricing/Calculations
4. Enter a number of decimals to be used in calculations.
This number determines how many decimals will be used in the calculations. The value is rounded per the
option selected in the Types of Decimal Rounding parameter.
5. Enter a number of decimals to be used when performing rounding.
This number determines how many decimals will display in the quote for this column. If the number of
decimals used for rounding is lower than the number of decimals used in calculations, the value is rounded
per the option selected in the Types of Decimal Rounding parameter.
6. Click Save.

Rounding Options for Quote 1.0

There are two available parameters in Setup Pricing/Calculations Rounding Setup that can be applied
to the rounding logic you wish to be used in your environment.

● Types of Decimal Rounding - determines the rounding method which will be applied to a certain rounding
rule. Its values are:
○ Rounding Away from Zero - when a number is halfway between two other numbers, it is rounded
towards the nearest number that is away from zero.
○ Rounding to Even - when a number is halfway between two other numbers, it is rounded towards the
nearest even number.

Original number “Away From Zero” method “To Even” method

3.5 4 4

2.8 3 3

2.5 3 2

2.1 2 2

-2.1 -2 -2

-2.5 -3 -2

-2.8 -3 -3

-3.5 -4 -4

● Fix Quote Amount After Currency Conversion - This parameter checks if there is a difference between the
total net price and the summed (and rounded) extended amount. For example, if the total net price is 100
and the price of each item is 33.33 (99.99 in total for three items), there will be a difference of 0.01 between
the total net price and the extended amount. If there is a difference, that amount is added to:
○ the item with a maximum extended amount if the Fix Items value is selected.
○ the total amount if the Fix Totals value is selected.

Adding Rounding Rules in Quote 2.0

In Quote 2.0, you currently can't define if the system should round values away from zero or to even because
the parameter Types of Decimal Rounding is not available in Quote 2.0

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 451
1. Go to Setup Pricing/Calculations Rounding Setup .
The list of existing rounding rules displays.
2. Click Add New.
The list of columns on quotes for which rounding rules can be set displays.
3. Select the column for which you wish the rounding rule to be applied.
Rounding preferences are displayed.
4. Enter a number of decimals to be used in calculations.
5. Enter a number of decimals to be used when performing rounding.
6. Select checkboxes next to the currencies to which the rounding rules are applied.
The Select All checkbox can be used to instantly select all options.
7. Click Save.

 Note

Identical currencies cannot be selected twice for the same quote column.

Rounding for Extended Amount

When you are setting up a different number of decimal places for displaying or calculating Item or Total
columns on quotes, it is not enough to simply change the rounding setup for that column. Since different quote
columns’ mathematics are executed (on adding/updating items on the quote, changing that column value and
so on) you must know to what decimal place numerical values (quote columns that other columns depend on)
in the mathematical logic are rounded off.

● All Item Fields - Direct ver. 1


● Product type all fields - Direct
● Total All Calculation
● Extended Amount is calculated as follows:
ExtendedAmount = Qty * NetPrice So, NetPrice should also be included in the rounding setup
● Net Price is calculated as follows:
NetPrice = ListPrice * (1 - DiscountPercent) * Multiplier List Price, Discount Percent and Multiplier should
also be included.

Troubleshooting

Some issues may occur when the rounding is applied to quote columns.

● The Total NRC discount amount exists in SAP CPQ, although neither of the items has a discount value set.
This may appear as a result of a calculation error, which can be caused by an invalid setting in the Rounding
section. One example of this would be items, which have an extended amount with a decimal residue (for
example, 100.5). If the value of the rounding setting is not greater than zero, the value right of the decimal
separator may be truncated, leading to the rounding issue.

SAP CPQ Setup and Administration Guide


452 PUBLIC Pricing/Calculations
6.17 Shipping

The Shipping section provides a means to add shipping and other associated costs to quotes or orders based
on the shipping method selected.

UPS shipping can be integrated into the SAP CPQ configurator. See UPS Shipping Integration for details.
Shipping Definition can be found under the Pricing/Calculations menu by selecting Shipping.

From this screen different shipping methods can be added, deleted, edited or copied. Shipping Methods can be
searched by entering the Method Name, Price Builder Data, Description, or whether the method is editable or
not into the boxes on the Shipping Methods Definition page, and then clicking Search. More Methods can be
seen by clicking the page numbers or the > symbol at the bottom of the page.

To add a new Shipping Method, click Add New. A blank Shipping Method Definition page will be displayed as
shown in the following figure. Existing Methods can be Copied, Deleted, or Edited by clicking the respective
symbol to the left of the Method Name. Selecting Edit would bring up the same page seen in the following
figure. Fields shaded in Yellow are required in order to save the Shipping Method.

Fill in the Name and any Description that would be helpful to the user. This description is what appears in the
shopping cart.

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 453
Static add-on price can be used for a number of different purposes. Examples might be a fixed handling charge
or fixed price for special shipping such as when exporting. A fixed number or a rule such as size or value of item
is entered here.

Selecting the Editable check box makes the shipping method an Editable Filed (see Cart Fields Administration
[page 393]).

When complete choose Save. This brings up the first figure again, with the new shipping method included.

On the user side, the Shipping method can be selected through the Freight dropdown.

6.18 State Sales Tax

This feature enables admin to define state tax percentage that will be applied when calculating quote amount.
Admin has the option to define tax calculation based on the state found in the Ship To role, to define formula
that will calculate state tax percentage or to make the tax field editable in the quote.

Set up Tax calculation based on Ship To state

Tax percentages can be entered for states in Canada and the US. To modify or add a tax percentage for a state,
click the State Tax link under the Pricing/Calculations menu.

Tax percentages can be Deleted or Edited by clicking the delete or edit buttons next to the State Name. To add
a new state tax click Add New at the top of the screen.

To create a new tax, on this screen, select the state and then enter the percentage that will be associated with
that state. All the states in the United States and Canada are available in the State Name dropdown box. Click
Save to save the state sales tax.

Once created, state taxes are added to the quote/cart total. The state percentage used on the quote is
determined by the state entered in the Ship to Address. Once a state is chosen for the Ship to address on the
Customer Info tab of the quote, the related percentage is added to the total amount.

State tax allows for a general tax to be associated with each state. If more specific tax is required within each
state, the use of an external web service (XWS) may be necessary. With this function, complete and updated
sales tax information within each state is available.

SAP CPQ Setup and Administration Guide


454 PUBLIC Pricing/Calculations
Set up formula for state tax calculation

 Note

The result of the formula calculation will override the percentage calculated based on Ship To state (table in
the previous screen). If formula is left empty, tax will be calculated based on table values

By clicking on button 'State Tax Formula' user can define formula for state tax. On the user side when
calculating tax, value that is obtained based on this formula will override table values.

 Note

If user wants to obtain value from the State Tax table and use it in your formula, he can use the tag-
<*CTX( Global.Tax.State(<*CTX( Quote.Customer(ShipTo).StateAbbrev )*>) )*>

Set up editable tax field for users

If you want to make state tax field editable for your users, you need to set up cart fields 'Total - Tax Amount'
and/or 'Total - Tax Percent' to be editable in the quote. It can be done through Adding/Removing Editable Fields
[page 396] in Cart Fields Administration.

6.19 Price Code in Pricing Calculations

Simple products can have price code defined. If price is derived from SAP CPQ standard pricebooks, it will be
calculated based on part number and price code.

Example

Same product is sold through different channels. For each channel there is a difference price. Administrator
creates several products with same part number and specifies price code for each channel. Prices are
maintained in pricebooks (part number + price code drive the price).

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 455
Product setup:

SAP CPQ Setup and Administration Guide


456 PUBLIC Pricing/Calculations
Pricebook setup:

SAP CPQ Setup and Administration Guide


Pricing/Calculations PUBLIC 457
7 Customers Administration

This section details ways in which Customers can be managed in SAP CPQ.

Customer Field Permissions [page 459]


The Customer Field Permissions administrative section gives you the option to define how the fields in
customer roles are displayed to the user.

Customer Actions [page 460]


The Customer Actions administrative section allows you to define which actions are available for each
customer role on the Customer Info Tab. Permissions for actions can be given based on user group and
order status.

Local Customer Visibility [page 461]


Local Customers are added by individual users and are visible only to that user. Rules can be written to
allow other users to view these customers, though.

Global Customer Visibility [page 462]


Global Customers are customers added in the Global Customers administrative section. They’re
available only to those users who have permissions to view them. Rules need to be written to allow
users to view these customers.

Global Customers [page 462]


Global customers are customers managed by administrators. By default, they aren't visible to any
users, but this behavior can be altered with visibility rules.

Customer Custom Fields [page 463]


All SAP CPQ Customer address fields (Bill To, Ship To, End User) contain standard fields, which hold
customer information. First Name, Last Name, Address, and Company are some of these standard
customer fields.

Customer Role Defaults [page 465]


The Customer Role Default administrative section allows you to define whether or not customer role
fields are filled with user’s information or a user’s company information.

Export/Import Customers [page 466]


There are several ways in which customers can be exported and imported into the system in several
ways, which are detailed in this topic.

Postal Code Lookup [page 467]


Postal code lookup gives you the option to search for the address details of locations across the UK.

SAP CPQ Setup and Administration Guide


458 PUBLIC Customers Administration
7.1 Customer Field Permissions

The Customer Field Permissions administrative section gives you the option to define how the fields in
customer roles are displayed to the user.

Permissions can be defined based on an order’s status and the user group the current user is in. The following
permissions can be defined for each customer role field:

● Hidden - Used for the statuses or user groups that you wouldn’t like the field displayed for. The field isn't
displayed to the users.
● Read-Only - Used for statuses after the quote has been completed, such as Order Placed or Received
Order. The field isn't editable. Whatever value had been entered for the field, it’s displayed as uneditable
text.
● Editable - Used for the initial statuses in which the quote is being created, such as Open. The field is
displayed in whatever format it was defined in.
● Required - Used when administrators want to define this field when they create new customers. Fields
marked as required are editable and displayed with a red asterisk. If users have a customer role set as
Required in the Required Fields by Workflow Action administrative section, then users are required to define
any required fields when that action is performed.

To access the Customer Field Permissions administrative section, click the link under the Customers/Customer
Roles administrative menu. From this screen, you can define permissions for each customer role: Bill To, Ship
To, and End User. You can switch between each through the tabs at the top of the screen.

Customer role fields are displayed for each customer role. The same fields are used for all customer roles. Click
a permission name next to a field to define permissions for that field. This defines that permission for every
user group in every order status.

To set an option to a cell, click the cell to display a pop-up where the option can be selected. You can easily copy
permissions from another customer role’s field, by choosing that field from the dropdown box in the upper
right corner of the screen. There are six different types of cells in the matrix that can be defined:

● All Permissions - Sets the same option for all the cells in the matrix. Click the upper left corner of the matrix
to define.
● All Statuses for One User Group - You can set all the statuses for one user group by clicking the user group’s
name on the left side of the matrix.
● All User Groups for One Order Status - You can set all the user groups for one order status by clicking the
status on the top of the matrix.
● Individual Cell Intersection - You can set a cell intersection between a status and a user group. For instance,
the Sales Rep group should have the customer role field Read-Only when in the Order Placed status.
● Default (For New User Groups) - Set how the customer role field is displayed to the users added to new user
groups that haven’t been set in this matrix yet.
● Default (For New Order Status) - Set how the customer role field is displayed in new statuses that haven’t
been set in this matrix yet.

The default cells make administration easier so that when user creates a new user group or a status, user
doesn't need to go through and define all the customer role field permissions again. The Default for New User
Groups and Default for New Order Status cells is automatically filled with what is set for that field on the
previous screen. Changing the permission in this cell changes the permission on the previous screen.

SAP CPQ Setup and Administration Guide


Customers Administration PUBLIC 459
 Note

Selecting an option for a cell that includes all statuses, or all user groups can take some time to set
depending on the number of statuses and user groups created in the system. Large number of groups or
statuses means that there are many cells to set, so there can be a slight delay in setting them all.

When finished defining the advanced customer role field permissions, click Save at the bottom of the page. You
aren't redirected to another page in case you would like to further to define the field.

7.2 Customer Actions

The Customer Actions administrative section allows you to define which actions are available for each
customer role on the Customer Info Tab. Permissions for actions can be given based on user group and order
status.

Customer Action in administrative section is available by clicking the link under the Customers/Customer Role
administrative menu. This displays a matrix of user groups and order statuses for each customer role. You can
switch the customer role that is being defined by clicking the tabs at the top of the screen. You can easily copy
action settings from another customer roles by choosing that customer role from the dropdown in the upper
right-hand corner of the screen.

To set actions to a cell, click the cell to display a pop-up where one or more actions can be selected. There are
six different types of cells in the matrix that can be defined:

● All User Groups and Statuses - Sets the same option for all the cells in the matrix. Click the upper left
corner of the matrix to define.
● All Statuses for One User Group - You can set all the statuses for one user group by clicking the user group’s
name on the left side of the matrix.
● All User Groups for One Order Status - You can set all the user groups for one order status by clicking the
status on the top of the matrix.
● Individual Cell Intersection - You can set a cell intersection between a status and a user group. For instance,
the Sales Rep group can only Lookup customers from CRM when in the Order Placed status.
● Default (For New User Groups) - Set which customer actions are available to the users added to new user
groups that haven’t been set in this matrix yet.
● Default (For New Order Status) - Set which customer actions are available in new statuses that haven’t
been set in this matrix yet.

The default cells make administration easier so that, when you create a new user group or status, you don't
need to go through and define all the customer actions again.

 Note

Selecting an option for a cell that includes all statuses or all user groups can take some time to set,
depending on the number of statuses and user groups created in the system. Large number of groups or
statuses indicates that there are numerous cells to set, so there can be a slight delay in setting them all.
When finished defining the customer actions for the current customer role, click Save at the bottom of the
page.

SAP CPQ Setup and Administration Guide


460 PUBLIC Customers Administration
7.3 Local Customer Visibility

Local Customers are added by individual users and are visible only to that user. Rules can be written to allow
other users to view these customers, though.

Rules that allow local customer sharing are defined in the Local Customer Visibility administrative section. This
section can be accessed by clicking the link under the Customers/Customer Roles administrator menu. It
contains a list of all existing visibility rules, which can be edited or deleted.

The Local Customer Visibility administration screen shows the parameters from which a rule can be built: User
Type and User. The order in which each is displayed reflects its priority from left to right, with User Type having
priority over Users.

To create a new rule, click Add New. This action displays the screen for defining local customer visibility.

Local customer visibility rules have two areas of definition: the first area specifies which users the rule applies
to and the second specifies the condition under which the local customer becomes visible. It’s only possible to
create one rule per combination of User Type and User. For instance, user can only create one rule for the user
John Smith. However, users can create a rule for the user type Sales, even if John Smith has been added to that
user type. In this case, though, the visibility rule created for the Sales group would have priority over the rule
create for John Smith.

My company's customers - if you tick this checkbox, the users selected previously are able to see your
company’s customers.

When users perform a customer lookup either by typing customer info in a customer role field or through the
lookup action, the system runs the local customer visibility rules applied to the user who is currently logged in.
The condition field of these rules determines which local customers are available.

Conditions can be based on user info or customer info. If based on user info, then all the local customers of the
user that matches in the condition are available. If based on customer info, then only the customers that match
in the condition are available. For example, the rule can state to allow the user type Sales to see all of the local
customers within their user type. You could also create a rule to allow the user type Sales to see all local
customers that are in a certain state. If the condition based on the user or customer info is met, then the
customers are available to the current user.

Assuming the edit action is available to a user, any modifications they do to customers that are available to
them through local customer visibility aren't permanent. Changes only affect the customer’s info in the current
quote.

Only quote can be used in the condition field for visibility rules. In Formula Builder, you can access tags and
create complex conditional statements. Any quote information can be pulled and be used in the calculation,
including user information, customer information, custom fields, discounts, quote amounts, and many others.
Entering 1 in the Condition field allows the selected users to see all user’s local customers.

SAP CPQ Setup and Administration Guide


Customers Administration PUBLIC 461
7.4 Global Customer Visibility
Global Customers are customers added in the Global Customers administrative section. They’re available only
to those users who have permissions to view them. Rules need to be written to allow users to view these
customers.

Rules that allow users to see that global customers are defined in the Global Customer Visibility administrative
section. This section can be accessed by clicking the link under the Customers/Customer Roles administrator
menu. The page contains a list of all existing visibility rules, and they can be edited or deleted.

The Global Customer Visibility administration screen shows the parameters from which a rule can be built:
Group, User, and Company. The order in which each is displayed reflects its priority from left to right, with
Groups having priority over Users, and Users priority over Companies.

To create a new rule, click Add New. Clicking this button displays the definition screen for global customer
visibility.

Global customer visibility rules have two areas of definition: the first area specifies which users the rule applies
to and the second specifies the condition under which the global customers become visible. It’s only possible
to create one rule per combination of User Group, User, and Company. For instance, users can only create one
rule for the user John Smith. They can, however, create a rule for the Sales user group, even if John Smith has
been added to that group. In this case, though, the visibility rule created for the Sales group would have priority
over the rule created for John Smith.

When users perform a lookup for a customer either by typing customer info in a Customer Role field or through
the lookup action, the system runs the global customer visibility rules applied to the user who is currently
logged in. The condition field of these rules determines which global customers are available.

Unlike Local Customer Visibility rules, Global Customer Visibility rules can be based only on customer info. This
is because the customers are global and don’t belong to any particular user, which is the case with local
customers. Only the customers that match in the condition are available to the selected users. For example,
users can specify that the Sales user group can view any global customers in the same territory that they’re
assigned to. This is possible because global customers and users can be assigned to territories. If the condition
based on the customer info is met, then customers are available to the current user.

Once the customer is loaded it and the edit action is available, the current user can temporarily edit customer
info. This doesn't change the customer info on global scale only for that quote in witch has been edited.

Only quote tags can be used in the condition field for visibility rules. In the Formula Builder, users can access
tags and create complex conditional statements. Any quote information can be pulled and be used in the
calculation, including user information, customer information, custom fields, discounts, quote amounts, and
many others. Entering 1 in the Condition field allows the selected users to see all user’s local customers.

7.5 Global Customers


Global customers are customers managed by administrators. By default, they aren't visible to any users, but
this behavior can be altered with visibility rules.

Visibility rules can be created to make global customers available to users. For more information on global
customer visibility, see the chapter on Global Customer Visibility [page 462]. Global customers are managed

SAP CPQ Setup and Administration Guide


462 PUBLIC Customers Administration
through the link under Customers/Customer Role administrator menu. The global customers administration
screen gives you the option to edit or delete existing global customers.

Adding a new global customer is possible by clicking the Add New button. Standard fields are available when
defining the customer. Fields such as Address, City, ZIP, and Country are required because these fields are
most often used in visibility rules. If the Company entered has CRM account associated with it, then the CRM
Account Id and/or CRM Contact Id can be entered.

You can also fill out the Bill to Role custom fields and End User Role custom fields that appear in the Customer
Info tab in the quote. To define them and decide which fields are displayed on the Global Customers section in
the Setup and on the Customer Info tab in the quote go to the Customer Custom Fields [page 463] help page.
Global customers cannot be edited in the Customer Info tab via the Bill To Role and End User Role, only via the
Ship To Role.

To find the CRM ID for either field, click CRM Lookup. The resulting pop-up window displays the results of the
CRM Lookup. The popup window displays the results of the CRM Lookup. When CRM item is chosen from the
window, the Id field is automatically populated with the CRM Id. Leave the search field blank to display all the
CRM items, accounts or contacts.

 Note

The administrative user must be defined in the CRM Administrator Account in order for the CRM Lookup to
work correctly.

Ensure the Active field is checked to allow the customer to be available to those users with visibility rights. This
field can be helpful if a user wishes to deactivate a customer without deleting the data altogether.

7.6 Customer Custom Fields

All SAP CPQ Customer address fields (Bill To, Ship To, End User) contain standard fields, which hold customer
information. First Name, Last Name, Address, and Company are some of these standard customer fields.

If necessary, you can add one or more custom fields to Customer Roles. You can do that in Setup
Customers/Customer Roles Customer Custom Fields . This page shows custom fields defined for all
customer roles.

On the Customer Custom Fields list page, you can edit and delete existing fields, and add new ones by clicking
Add New.

To add a new custom field, you need to enter Name, Label, and select a customer Role Type to which this field is
added. It's also possible to define the field's rank, but it's not required. Also, you can specify if a customer
custom field contains sensitive data by selecting the Sensitive Data checkbox. Note that the field Name is used
for uniquely identifying customer's custom fields - therefore, users can't add two custom fields with the same
name and role type. By selecting multiple Role Types on this form and clicking Save, you can add multiple
custom fields with exactly the same data - one custom field is added for each customer role.

Customer custom fields are always of the free input type - they can't be changed to dropdown, checkbox, or
something else.

Note that you can't change the Role Type on already created fields. Otherwise, the form is no different from the
Add New custom field form.

SAP CPQ Setup and Administration Guide


Customers Administration PUBLIC 463
Custom Field Names

As mentioned before, custom fields have a Name field, which is required, and is used along with Role Type to
uniquely identify customer's custom fields. When users copy customer data from one role to another, custom
fields are copied from one role to another along with standard fields. Custom field names are used for
identifying which field is to be copied from the source customer role to which field on destination customer
role. Fields that are contained in source customer role and are missing from destination customer role aren't
copied.

Custom Fields and Searching for Customers

As it’s already known, only Bill To customers are used as customer repository, which is being used when
searching for customers. While for standard customer fields this has little impact, it affects custom customer
fields. When searching for a customer to add them to the Ship To customer role, finding the customer and
adding it to Ship To role, the destination role only contains custom field contents that are defined in Ship To
role, and are also defined in Bill To role, with same custom field name. Users can't create or fill an End User
customer, and load it as Ship To customer and expect that it gets custom fields populated. It only works for Bill
To customer as source.

Custom Fields and Global Customers

In V8 SAP CPQ version, users can't enter custom fields on global customers.

Custom Fields and Managing Customers from User Page

Customers can be managed from User Page as usual. However, customer field permissions apply as if the user
is editing a Bill To customer role in the Default quote status. This applies for standard customer fields, their
permissions and for custom customer fields.

Custom Customer Fields and Their Permissions

Standard Customer Field and Custom Customer Field permissions are being defined on Customer Field
Permissions [page 459] page.

Naming Custom Fields

There’s a list of standard field names in the SAP CPQ that appear by default. It is important that you refer to
this list when naming custom fields because no custom field should get a name from this list. In other words,

SAP CPQ Setup and Administration Guide


464 PUBLIC Customers Administration
there must be no duplicates. The best way to name the Customer Custom Fields is to add “custom” in front of
the custom field’s name.

Look at the list of standard fields provided in the following table:

CustomerId City BusinessPhone CRMAccountId

FirstName StateName BusinessFax CRMContactId

LastName StateAbbrev UserId ShopCartId

Email Province DirtyFlag ShipId

Title CountryName Active CustomerType

Company CountryAbbrev CustomerCode OwnerName

Address1 Country TerritoryId PrimaryIndustry

Address2 ZipCode TerritoryName CustomerPassword

7.7 Customer Role Defaults

The Customer Role Default administrative section allows you to define whether or not customer role fields are
filled with user’s information or a user’s company information.

Prepopulating customer role fields with data can be helpful in many instances. For example, channel
representatives often create users themselves in the Bill To customer role and the customer’s name in the Ship
To or End User customer role. Defining customer role default rules ensures that their information is
prepopulated in a customer role each time they create a new quote. These rules are defined based on the user
type and the customer role. This allows controlling which users can and can't have customer roles
prepopulated.

To access the Customer Role Defaults administrative section, click the link under the Customers/Customer
Roles administrator menu. The page contains a list of existing customer role default rules that can be copied,
edited, or deleted.

Click Add New to create a new customer role default rule. This displays the rule definition screen, which
contains the following fields:

● User Type Name - Defines the user type this rule applies to. Each time a user in this user type creates a
quote, the selected customer role becomes prepopulated with data.
● Customer Role - Select the customer role that becomes prepopulated with data for the selected user type.
● Default (Pre-populate) with User Info - Determines that the user’s data prepopulates the selected customer
role fields.
● Default (Pre-populate) with User’s Company Info - Determines that the user’s company info prepopulates
the selected customer role fields.

 Note

User's Company Info requires that the company associated with the user has the Create Customer Record
option selected. This creates a global customer and allows the information to be used for customer roles.
See Companies [page 149] for more details.

SAP CPQ Setup and Administration Guide


Customers Administration PUBLIC 465
7.8 Export/Import Customers

There are several ways in which customers can be exported and imported into the system in several ways,
which are detailed in this topic.

Context

To export/import global customers in the Customers Export/Import page, follow one of these workflows:

● Download a sample template, fill out customer details, and import the file.
● Export all customers in SAP CPQ.
● Export all customers, change details, and add new customers, then import the file.

To download the import template, click Sample Template in the Customer Import page. The Excel file contains
customer standard fields, which you can fill out with new customers' details.

The same fields are mandatory when creating global customers in Customers/Customer Roles Global
Customers and when importing customers through Excel: Address (1), City, Country, and Zip.

The best practice for importing new customers in the system is to do it through the sample template. To
update existing customer details, you need to export them from the system, change the data and then import
them. The maximum number of customers that can be imported through one Excel template is 10000. An
empty row in the template breaks the import and only the data processed before the empty row is imported.

 Note

The limit for the number of rows in the Excel file used for importing customers is 10000 rows. The limit for
the number of rows for exporting customers is 60000 rows.

The following procedure describes how to export all customers in the system, change their details, add new
customer, and import the updates in SAP CPQ.

Procedure

1. In Step 1, click Export All Customers.

The spinning wheel next to the tab title indicates that the system is building the list of attributes.

When the process is completed, the button name changes to All Customers.
2. Click the button to download the file.
3. Populate the file with new data.

The System Id column needs to remain empty for new customers. The first cell in the Index column needs
to always have the value 1 and the number needs to increment by one in the subsequent cells.
4. Select an identifier in Step 3.

SAP CPQ Setup and Administration Guide


466 PUBLIC Customers Administration
The system treats the identifier when comparing customers in the system with customers in the Excel
template. For example, if a customer code in the template matches a code in the system, the respective
customer details are updated. Otherwise, a new customer is added:
○ Customer Code
○ CRM Account ID
○ CRM Contact ID
○ CRM Account ID and CRM Contact ID
○ SAP CPQ Customer ID
○ None
5. In Step 5, click Choose File to browse for your file.

Formats XLSX and XLS are supported.


6. Click Import.

The file name can contain only letters, digits, dashes, and underscores.
7. After the system processes data, the number of valid and invalid records in the file and the following
buttons are displayed:

○ Import Without Preview - starts the import and a message displays once the import is successfully
completed.
○ Import With Preview - a grid with all the customers in the file displays. You can see the status of each
record and select/unselect it for import. Click Save to import the valid customers.
○ Import With Preview of Invalid Records Only - invalid records, if any, display in this grid. The Status
column shows the cause of the error. Selecting invalid records for import is disabled.
8. Click Save to import the valid customers.

You can follow these steps when importing customers through the Manage Customers page since the
customer import/export journeys on the user side and the administrator side of SAP CPQ are the same.

However, on the user side of SAP CPQ, you can export/import only local customers (the Owner column
displays the names of users who created the customers).

7.9 Postal Code Lookup

Postal code lookup gives you the option to search for the address details of locations across the UK.

In order to use the Postal Code Lookup feature, you need to set up parameters in Setup. You also need the
license from Postcode Anywhere (https://www.postcodeanywhere.co.uk.).

In the Shopping Cart and Quotes tab in Setup General Application Parameters , you need to populate
these parameters in order to use the feature:

● Postcode lookup type


● International postcode anywhere WS URL
● Postcode anywhere account code
● Postcode anywhere license key

In Choose Postcode look-up provider, you should select Postcode Anywhere. Alternatively, leave None if you
don't want to use this feature. You need to have Postcode Anywhere license and to enter account code and

SAP CPQ Setup and Administration Guide


Customers Administration PUBLIC 467
license key into the appropriate application parameters. This information is obtained from Postcode Anywhere,
the application that provides postal code look-up.

Save parameters and exit Setup.

SAP CPQ Setup and Administration Guide


468 PUBLIC Customers Administration
8 UI Design

This section contains useful information for managing user interface in SAP CPQ.

Branding [page 470]


SAP CPQ supports multiple brands graphical interfaces. Each user can belong to a brand that has its
own colors, logos, and visual styles.

Custom Category UI [page 471]


The Custom Category UI administrative section allows customizing the appearance of categories by
assigning them appropriate XSLT files.

Catalog Layout [page 471]


These settings allow companies to adjust catalog design to their needs.

Freeze Templates [page 472]


In case breaking changes occur in the user interface, this temporary feature offers you the option to roll
back all uncustomized templates on a page SAP CPQ to the version released before the currently active
version.

Product Configuration Templates [page 472]


Product Configuration Templates provide you much flexibility in customizing the layout of the
configuration screen.

Product Details Templates [page 473]


Product Details Templates allows designing the Product Details page in a flexible, yet easy way by
dragging and dropping various elements to the Design panel. Users can see the templates designed in
the Catalog when they click on products View Details link. Templates can contain information about
products, product attributes, Facebook widgets and so on.

Products to Product Details Templates Mappings [page 474]


The Products to Product Details Templates Mappings feature allows you to specify where Product
Details template is used.

Responsive Templates [page 475]


Define New Template allows you to choose the template you want to change.

Styles and Images [page 477]


The Styles and Images section allows controlling the look of the application. Though not drastically
important, changing the design of SAP CPQ allows companies to personalize the application’s look
according to their preferences.

Top Menu [page 478]


In SAP CPQ Setup under section UI design there is a link Top Menu. The purpose of this functionality is
creating an alternate look of menu on the user side.

Responsive Design Customizations [page 480]


Here you can find all relevant information about customizations in Responsive Design including
different code examples.

Customized HTML Templates and Fixes for Breaking Changes [page 543]

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 469
This section provides best practices for common breaking changes that may occur in SAP CPQ.
Currently, this topic contains customized templates listed per version and the ways in which some of
the breaking changes on SAP CPQ pages may be fixed.

8.1 Branding

SAP CPQ supports multiple brands graphical interfaces. Each user can belong to a brand that has its own
colors, logos, and visual styles.

Users can see the same products and pricing, while having different graphics depending on which company
brand they belong to. Additionally, you can define which users belong to which brand.

For example distinct user interfaces can be displayed to anonymous website visitors, internal users, and
partners. For example, if Company ABC is reselling Company XYZ products, when ABC sales person logs into
XYZ SAP CPQ, it's going to have the ABC branding, but when the XYX user logs into the same SAP CPQ it's
going to have the XYZ branding.

Branding Definition can be found in Setup UI Design Branding .

From this screen, different branding definitions can be added, deleted, or edited. Branding Definitions can be
searched by entering the Name, CSS File, Logo Image, or whether the definition is default or not, into the boxes
on the Branding Definition page, and then clicking Search.

To add a new Branding Definition, you need to click Add New.

Existing Brands can be edited or deleted by clicking the appropriate symbols to the left of the Brand Name.
Selecting Edit brings up the screen for editing the Branding Definition. Fields marked with asterisks (*) are
required in order to save a new Branding Definition. You can see information on the default brand and rename it.
You can also add new brands with a different CSS style sheet and different logos.

It's important to know that if a UI element isn't specified (image or CSS file) for nondefault brand, the value
from default brand is used.

In Setup Users Users , each individual user has a new dropdown field associated with them called
Brand. The default Brand is automatically selected, but if there’s more than one, you can select it from there.

In Setup Users Permission Groups , when adding or editing a permission group, the list of Brands is
added on left side of the screen.

In Setup Quotes Document Generation Templates , when adding or editing a template, list of Brands to
System Permission Groups is added (on tabs Visibility Permissions and Format Permissions).

Additionally, in Setup Quotes Ability to Manage Documents a list of Brands is added on the left. In
Setup Products Custom Tables Delegation of Authority brands are added to the list of System
Permission Groups.

SAP CPQ Setup and Administration Guide


470 PUBLIC UI Design
8.2 Custom Category UI

The Custom Category UI administrative section allows customizing the appearance of categories by assigning
them appropriate XSLT files.

Custom Category UI administration can be accessed by selecting the Custom Category UI link under the UI
Design dropdown. From here you can add, delete, or edit category designs.

Adding new design is available by clicking the Add New button. Category and XSLT file are the only required
fields. You can also restrict the design to a specific User Type by selecting the user type from the dropdown.

8.3 Catalog Layout

These settings allow companies to adjust catalog design to their needs.

To access these parameters, go to Setup UI Design Catalog Layout . Application Parameters are
separated into following sections: Tabular View UI, Category Tree UI, List View UI, and Other.

Tabular View UI

● Show Products In – Determines how many columns the products are displayed in on the Products page.
● Show Categories In – Determines how many columns the categories are displayed in on the Categories
page.
● Display Products Above Subcategories – If set to True the products within the selected category are
displayed above the subcategories.
● Load Sub Products In Category – If set to True products from subcategories are displayed too.
● Include Part Number – If set to True part numbers are displayed in the tabular view mode.

Category Tree UI

Category tree width - Determines the width of the category tree.

List View UI

● Include Product Image – If checked, the product image is displayed in the list view mode.
● Include Product Description – If checked, product description is displayed in the list view mode.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 471
Other

Visual Style (Catalog) - determines the default Responder styles that every user sees. User can override these
selections by choosing a new style in the User Groups administrative section.

8.4 Freeze Templates

In case breaking changes occur in the user interface, this temporary feature offers you the option to roll back all
uncustomized templates on a page SAP CPQ to the version released before the currently active version.

The roll-back makes the customization on those pages appear the same way as it used to before the breaking
changes occurred.

Once activated, the roll-back can last until the next version is deployed to the production environment.
However, when the next version is released the frozen pages, along with all their uncustomized templates, are
automatically be reset and they appear as they normally would in the newest release.

 Note

This feature should ONLY be used in the following cases:

● if the breaking changes prevent you from working.


● if you can’t fix the issues caused by breaking changes on your own in the period between the sandbox
and the production release.

To access the feature, go to Setup UI Design Resposnive Templates . Here, you can find all page names
listed next to checkboxes used for rolling the pages back to the previous version. To freeze the uncustomized
templates on a broken page, select the checkbox next to it.

The checkbox Use Fiori styles for turning the new CSS for harmonization with SAP on/off (active by default) is
also located on this page.

8.5 Product Configuration Templates

Product Configuration Templates provide you much flexibility in customizing the layout of the configuration
screen.

There are templates available to modifying the look of the Configurator, Responder, tabs, steps, and the page.
Product Configuration Templates administration can be accessed by selecting the Product Configuration
Templates link under the UI Design dropdown. From here user can add, delete, edit, or copy Templates.

To add a new template, click Add New. Template Name is the only required field. This is because any XSLT files
that aren’t defined here are defaulted to what is set in the Application Parameters administrative section. Any
files set here override the default.

SAP CPQ Setup and Administration Guide


472 PUBLIC UI Design
The template needs to be named something that is relative to the product or category. The template
description can be provided if further clarification is needed. If the template checkbox is checked,Guided
Selling Template then that template only appears when editing Guided Selling.

Also, Guided Selling product responder is different than the normal products responder, and default
GuidedSellingSearch.xsl responder needs to be selected for Guided Selling templates.

There are five sections of the configuration page that user can set templates for (default files are in
parentheses):

● Tabs - defines the look of the tab area on the page (DefaultTabs.xsl)
● Configurator - defines the look of the configuration section of the page (DefaultConfigurator.xsl)
● Steps - defines the area to the left of the configuration section (DefaultSteps.xsl)
● Responder - defines the responder area where the configuration summary is given (DefaultResponder.xsl)
● Page - defines the layout of the screen. Here you’re able to control where each section is positioned on the
page. (DefaultPage.xsl)

User can upload a new file with the Upload button or download existing files by selecting the file from the
dropdown and clicking the Download button. Additionally, you can delete files by selecting a file from the
dropdown and clicking the Delete button.

Once all information is filled in and completed, clicking the Save button saves the template and add it to the list
of Templates.

8.6 Product Details Templates

Product Details Templates allows designing the Product Details page in a flexible, yet easy way by dragging and
dropping various elements to the Design panel. Users can see the templates designed in the Catalog when they
click on products View Details link. Templates can contain information about products, product attributes,
Facebook widgets and so on.

Product Details Templates administration can be accessed by selecting the Product Details Templates link
under the UI Design section of the Setup. From there you can add, delete, edit, or copy templates.

You can add new templates by clicking Add New. A new product details template can be defined in two steps. In
the first step, you need to name the new template. In the second step, you can define the template by dragging
variable elements onto the panel. On the right-hand side of the screen there are four groups of elements:

● Attributes in the entire system


● Properties of the product
● Static HTML elements
● Widgets

Product weight is added as a new product property. You can set label, rank, and styles as for all other product
properties. The label of this property depends on the value of the application parameter, Unit of Measurement
under Application Parameters General Parameters . The value of the product property is one of following:
Product Weight in GRAMS, Product Weight in KGS, Product Weight in LBS.

On the first tab Details, you can define properties specific to elements (for example - element div has only one
detail, rank, which defines the order within the parent element). On the second tab Styles, you can define the
style for that element.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 473
In the Catalog, only attributes that exist in a product are displayed for the user, while attributes that don't
belong to that product are ignored. All other elements are shown to the client. Static elements are listed in the
following table.

Name Description

Div Use it as a container for other static and nonstatic


elements.

Literal Use it when you want to display any HTML.

List Container for elements that are displayed as unordered list.

Tab container Use it when you want to separate data in more tabs.

Tab Use it to display data into a tab panel. Use it together with
tab container.

Display type allows selecting the way the attribute is displayed.

 Caution

After you've finished designing the template, you need to associate at least one product or a category with
this template in order to display it in the Catalog. See Products to Product Details Templates Mappings
[page 474] for more information.

8.7 Products to Product Details Templates Mappings

The Products to Product Details Templates Mappings feature allows you to specify where Product Details
template is used.

Templates Mappings administration can be accessed in Setup UI Design Product Details Templates
Mapping . From here user can add, delete, or edit a mapping.

Clicking Add New opens a page where you can connect a single product or products within a category to a
template.

Click Select to choose a Product or a Category the template is mapped to. If product or category isn't selected,
the template is shown for any product or category.

Once you set up the mapping, you can see the details by clicking View Details in the Catalog. It’s possible to
specify whether the details appear in a modal div, or in a new page, by changing the application parameter
Allow view details for simple products in catalogue, which has three available values: No, In modal popup, On
new page (See Application Parameters [page 545]).

When you click on View Details, the system tries to find the template for that product. If there’s no template for
that product, the system tries to find a template for the category to which the product belongs. If there’s no
template for that category, the system continues searching recursively for a template in the parent category.
Finally, if there's no template that matches the criteria, the system chooses a default template (which doesn't
define category and product (Any)) or if there’s no default template mapping, the standard view is used.

SAP CPQ Setup and Administration Guide


474 PUBLIC UI Design
8.8 Responsive Templates

Define New Template allows you to choose the template you want to change.

First, you must choose the page of the template, which can include Approval History, Cart, CreditCard,
Configurator, and so on. Then you must define the template name. You can't use invalid characters in the
names of responsive templates. The list of invalid characters includes, but it's not limited to: ASCII/Unicode
characters 1 through 31, quotation marks (“), less than (<), greater than (>), pipe (|), backspace (\b), null (\0)
and tab (\t). If you use an invalid character in the template name, a message informs you of the error.

 Note

Even though slash (/) is an invalid character, the templates that contain it in their names, and were created
before the 1911 release, remain unchanged. You can properly manage and use them without removing the
character from their name.

Let’s say you want to change the template on your Cart page. Once you select Cart on your Page dropdown
menu, the Template dropdown menu opens up with a number of different segments that you can customize.
For demo purposes, we’re going to select Sections/Costs.

When you make your selection, the Default Template on the right-hand side shows you what the template looks
like in its original form. When you click Copy default template, the template is copied in the New Template tab.
This enables you to modify the code, whether it's only a line in the code or major changes. You can't save the
new template before entering the new name of the template in the Name box in the Define new template box on
the left-hand side. You can also add a description in the box below, though it isn't mandatory. If you tick the
Default box, the new template shows up as default. This means that any client who logs in and looks at the
section Costs can see the new template, and not the old one.

 Note

If you wish to reuse a customized template on several different pages, simply add the
@Html.PartialCustomTemplate(“Reused_Template_Name”) function to another template in which
you want it to be displayed.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 475
If you tick the Default box, and want a specific user type to be able to see the new template, click Users
User Type , and edit your User Type.

Select the page we defined earlier, and the Sections/Costs template. The system then automatically selects all
templates related to this section in the Select Custom Template box. In our case that was the Test_Template
(if we had defined more templates the system would have listed all of them).

When you click Add, the previously defined sections are added to the system, making it possible for all users in
the Sales user type to see the new template.

Template Versions

When you open the Template Versions tab you can see a chronological list of all system and custom template
versions. If a new template version is added to SAP CPQ, it will be displayed above all previous system and
custom template versions.

If a custom template version is active, and a new system template version is added to SAP CPQ, this new
version will be displayed at the top of the Template Versions list. However, it will not be applied unless you
deselect the Default checkbox next to the currently applied custom template version in the Template tab.

The System version you see is the original version, created before any changes have been made. The second
version is the Test_Template we created.

To compare the templates, and see where they differ, tick the checkboxes in the Version column, and click
Compare. You can have more than two template versions, and you may be interested in comparing two, or more
versions.

User Side

Look at the following image to see what the code for the original template looks like in Setup. Notice that the
text on the template in the quote is entirely written in black.

SAP CPQ Setup and Administration Guide


476 PUBLIC UI Design
The following image shows the changes made to the code and how they’re reflected on the user side. Notice
the color of the text related to the Section/Costs template has been changed to blue.

8.9 Styles and Images

The Styles and Images section allows controlling the look of the application. Though not drastically important,
changing the design of SAP CPQ allows companies to personalize the application’s look according to their
preferences.

To access the Styles and Images section of SAP CPQ, click the link under the UI Design menu. There are three
options that can be modified: Top right image for Logo, Top left image for Logo, Image for Header, and CSS file
style. The image logo options affect the images displayed at the top of the screen.

To upload a new logo, click the Upload button. This displays the File Upload screen where a new image can be
browsed for and uploaded. Once the page is refreshed, the new images are displayed.

The Image for Header option affects the background image that is used as a header.

Images must be in a .gif format to be used by SAP CPQ. In addition, the images need to be same height. Images
currently being displayed can be downloaded by clicking the Download button. To set the default images back,
click Reset to Default.

 Note

Extensions are case-sensitive. Make sure the extension .gif is in lower case. Otherwise, an error can be
displayed stating that the extension is wrong.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 477
Changing the Style

SAP CPQ uses Cascading Style Sheets (CSS) to determine how a webpage is displayed to users. The display of
many HTML elements found in SAP CPQ is determined by the CSS file. This file can be downloaded if you click
the Download button. It can then be modified and reuploaded. Clicking Reset to Default replaces any modified
CSS file with the default file.

All UI (User Interface) elements are styled with HTML classes. This section explains how you can identify
different elements in your pages, identify the HTML class that is used for these elements, and then apply a
different class. The easiest way to see what elements class name is by installing small plugin for your browsers.
There are two plugins, one for Internet Explorer and one for Firefox. Details are in the following table:

Internet Explorer Firefox

Download Link https://www.microsoft.com/ https:getfirebug.com


downloads/details.aspx?
familyid=e59c3964-672d-451
1-
bb3e-2d5e1db91038&displayl
ang=en#AffinityDownloads

Installation Click the Download button and in Click the Install button from Firefox.
Download dialog click Open or Run. Firebug toolbar can be activated with
After installing the Developer Toolbar, icon in bottom-right corner of browser.
restart Internet Explorer and click the
Developer Toolbar icon in the command
bar to display or hide the Developer
Toolbar.

Pointer Icon UI elements can be selected with the UI elements can be selected with
pointer icon. Inspect.

How it Works Click on the UI element and read the Click on the UI element and read the
class name. Enter that class name in class name. Enter that class name in
CSS file and define its attributes (color, CSS file and define its attributes (color,
background, font…). background, font…).

 Note

You can match an element without class that is the descendant of another element that has the CSS class
(that is, Match h1 element that is contained by element with class header: .header h1 { color:
blue } )

8.10 Top Menu


In SAP CPQ Setup under section UI design there is a link Top Menu. The purpose of this functionality is creating
an alternate look of menu on the user side.

This view is representing a icons besides labels that is a common and standard view of Menu. On administrator
side, there is a new table which plenty of possibilities that can be manage through adding/editing icons.

When a radio button Icons is chosen a table below is editable and can be administered. When adding new icon
there are possibilities like position, images, URLs, HTMLs, tags and conditions. Depending on what is managed,

SAP CPQ Setup and Administration Guide


478 PUBLIC UI Design
the result on the user side can be a textual link, image link, some contextual SAP CPQ tags and pop ups
windows.

When a radio button Labels is chosen a table below is not editable and cannot be administered.

Once a new icon is added on the administrator side it can be viewed on the user side with all other standard
SAP CPQ icons if condition is allowing to show it. Everything else beside a visual style of menu is the same,
icons are behaving exactly as they are on default menu. Users have same permissions to browse along menu,
and to do that as an administrator or a user.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 479
8.11 Responsive Design Customizations

Here you can find all relevant information about customizations in Responsive Design including different code
examples.

Bear in mind that although these customizations bring lot of power they also raise implementation complexity.

In order to keep things simple avoid customizations when possible or use custom CSS in branding for custom
looks.

8.11.1 Prerequisites

Required knowledge

In order to do responsive customization you should have at least basic knowledge of HTML, CSS, JavaScript
and Knockout. For knockout learning we recommend the official knockout tutorial (http://
learn.knockoutjs.com/).

Tools

We recommend you to install Google Chrome extension for the Knockoutjs context debugger from the
following link: https://chrome.google.com/webstore/detail/knockoutjs-context-debugg/
oddcpmchholgcjgjdnfjmildmlielhof?hl=en.

SAP CPQ Setup and Administration Guide


480 PUBLIC UI Design
Getting Started

First of all, you have to know the structure of your observable array. For examples we will use quote custom
fields. Install Google Chrome extension Knockoutjs context debugger. On appropriate page (in this example
Cart Page) open Developer Tools in Chrome (right click and then click on Inspect element or Ctrl + Shift +
I or F12 ).

In Developer Tools go to first tab Elements and on right side click on Knockout context. Below you will see all
available data. Among other things there are custom fields.

When you expand custom fields observable array, and expand one member of array you will see all available
fields such as content, editable, id, isRequired, etc for specified array member. Also there are “values” field
representing array of values and it can be expanded, too.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 481
So, from this example you can see that there is an array of custom fields and that each custom field has some
info such as content, editable, id, isRequired, etc and has array of values.

8.11.2 Knockout Extension Functions

Knockout extension functions are used for observable arrays.

filterByProperty function [page 483]


Function filterByProperty returns a filtered observable array with members that have value of
property matched with passed appropriate values.

sortByProperty Function [page 484]


Function sortByProperty returns an observable array that contains all members of the original array
sorted by property which name is passed.

count/countWithProperty Function [page 485]


Function count returns the number of array elements that matches predicate function condition.

all/allWithProperty [page 489]

SAP CPQ Setup and Administration Guide


482 PUBLIC UI Design
Function all returns the boolean value whether all elements of the passed observable array matches
predicate function condition.

any/anyWithProperty [page 490]


Function any returns the boolean value whether at least one element of the passed observable array
matches predicate function condition.

indexOf [page 491]


Function indexOf returns index of the first element of passed array that matches predicate function
condition.

lastIndexOf/lastIndexOfWithProperty [page 492]


Function lastIndexOf returns index of the last element of passed array that matches predicate
function condition.

first/firstWithProperty [page 494]


Function returns the first element of passed array that matches predicate function condition.

last/lastWithProperty [page 496]


Function returns the last element of passed array that matches predicate function condition.

Chaining - Combining Multiple Function Calls [page 497]


Functions sortByProperty and filterByProperty return new observable array and they can be
combined with other functions.

8.11.2.1 filterByProperty function

Function filterByProperty returns a filtered observable array with members that have value of property
matched with passed appropriate values.

First argument is the name of property and other arguments are appropriate values and there is no limit of
number of passed values.

Context:

array.filterByProperty ('propertyName', value1, value2, …, valueN)

This function will return all members of array that have value of property “propertyName” equal to value1,
or value2, …, or valueN.

Example1 (single property value)

We want to create new section for custom fields where want to show all custom fields that are editable. Custom
filed has property with name “editable” that can be true or false. We don’t want to show all custom fields, but
only those that are editable (that has value of property “editable” equal to true).

1. Create new template.


2. Change this part of the template:

<div data-bind="foreach: customFields" class="custom-fields">


<!-- ko template: template -->

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 483
<!--/ko -->
</div>

With this:

<div data-bind="foreach: customFields.filterByProperty('editable', true)"


class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>

Example2 (multiple property values):

We want to create new section for custom fields where we want to show only custom fields that are type of
“Date” or “Select” or “LongText”. Custom field has property type that has numeric value (0 for Label, 1 for Text,
2 for Select, 3 for Date, 4 for LongText). We want to show only custom fields that have value of property “type”
2 or 3 or 4.

1. Create new template.


2. Change this part of the template:

<div data-bind="foreach: customFields" class="custom-fields">


<!-- ko template: template -->
<!--/ko -->
</div>

With this:

<div data-bind="foreach: customFields.filterByProperty('type', 2, 3 , 4)"


class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>

8.11.2.2 sortByProperty Function

Function sortByProperty returns an observable array that contains all members of the original array sorted
by property which name is passed.

Also, it leaves the original array unchanged. The only argument is the name of property which is criteria for
sorting array.

Syntax:

array.sortByProperty ('propertyName')

This function will return all members of array sorted by property which name is passed to the function.

SAP CPQ Setup and Administration Guide


484 PUBLIC UI Design
Example:

We want to create custom section for custom fields where we want to sort them by their label.

1. Create new template.


2. Change this part of the template:

<div data-bind="foreach: customFields" class="custom-fields">


<!-- ko template: template -->
<!--/ko -->
</div>

With this:

<div data-bind="foreach: customFields.sortByProperty('label')" class="custom-


fields">
<!-- ko template: template -->
<!--/ko -->
</div>

8.11.2.3 count/countWithProperty Function

Function count returns the number of array elements that matches predicate function condition.

Syntax:

array.count(predicateFunction)

Similar to the previous function, countWithProperty returns the number of array elements that have value
of property matched with passed appropriate values. First argument is the name of property and other
arguments are appropriate values and there is no limit of number of passed values.

Syntax:

array.countWithProperty ('propertyName', value1, value2, …, valueN)

This function will return number of members of array that have value of property “propertyName” equal to
value1, or value2, …, or valueN.

Example1 (simple condition - count):

We want to display section custom fields only if there is more than 3 required fields.

We will change visibility condition.

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 485
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

With this:

<div data-bind="visible: customFields.count(function(item) {return


item.isRequired === true;}) > 3">
<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

In this example predicate function is:

function(item) {return item.isRequired === true;}

We should check value of property isRequired for each item of array. So, as argument of function we
passed item and then we access to value of its property with item.isRequired, in order to check if that
value is true. We are also able to use logical operators (AND, OR, NOT, and so on) to make complex
conditions.

Example2 (complex condition - count):

We want to show section for custom fields only if there is exactly one non required field with type of “Date”
(value of properties “type” and “isRequired” should be 3 and false, respectively).

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

SAP CPQ Setup and Administration Guide


486 PUBLIC UI Design
With this:

<div data-bind="visible: customFields.count(function(item) {return


item.isRequired === false s&& item.type === 3;}) === 1">
<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

In this example predicate function is:

function(item) {return item.isRequired === false && item.type === 3;}

We should check value of properties “isRequired” and “type” for each item of array. So, as argument of
function we passed item and then we access to value of properties “isRequired” and “type” with
item.isRequired and item.isRequired. We use logical operator && for linking conditions.

 Note

Everything above about predicate functions is valid for all predicate functions in other customization
functions, such as any, all, indexOf, lastIndexOf, first, last, and so on.

Example3 (simple condition - countWithProperty):

We want to display section custom fields only if there is more than 3 required fields.

We will change visibility condition.

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

With this:

<div data-bind="visible: customFields.countWithProperty('isRequired', true) >


3">

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 487
<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

We should check value of property isRequired. So, first argument is the name of property and second
parameter is appropriate value of property “isRequired” and that is true.

Example4 (complex condition - countWithProperty):

We want to show section for custom fields only if there are more than two custom fields with type of “Date” or
“Select” or “LongText”. (appropriate values of property “type” are 2, 3 and 4).

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

With this:

<div data-bind=" visible: customFields.countWithProperty('type', 2, 3, 4) >


2">
<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

We should check value of property type. So, first argument is the name of property and other parameters are
appropriate values of property “type” and that are 2, 3 and 4.

SAP CPQ Setup and Administration Guide


488 PUBLIC UI Design
8.11.2.4 all/allWithProperty

Function all returns the boolean value whether all elements of the passed observable array matches
predicate function condition.

Syntax:

array.all(predicateFunction)

Similar to the previous function, allWithProperty returns the boolean value whether all elements of the
passed observable array have value of property matched with passed appropriate values. First argument is the
name of property and other arguments are appropriate values and there is no limit of number of passed values.

This function will return true if all members of array have value of property “propertyName” equal to value1,
or value2, …, or valueN.

Syntax:

array.allWithProperty ('propertyName', value1, value2, …, valueN)

Example1:

We want to display section for custom fields only if all custom fields have id greater than zero and don’t trigger
save.

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

With this:

<div data-bind="visible: customFields.all(function(item) {return item.id > 0


&& item.triggersSave=== false;})">
<div class="col-md-12">
<h3 class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 489
</div>

Example2:

We want to display section for custom fields only if there are only custom fields with id 5, 17, 35 and 212.

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

With this:

<div data-bind=" visible: customFields.allWithProperty('id', 5, 17, 35, 212)">


<div class="col-md-12">
<h3 class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

We should check value of property id. So, first argument is the name of property and other parameters are
appropriate values of property “id” and that are 5, 17, 35 and 212.

8.11.2.5 any/anyWithProperty

Function any returns the boolean value whether at least one element of the passed observable array matches
predicate function condition.

Syntax:

array.any(predicateFunction)

Similar to the previous function, anyWithProperty returns the boolean value whether at least one element of
the passed observable array has value of property matched with passed appropriate values. First argument is

SAP CPQ Setup and Administration Guide


490 PUBLIC UI Design
the name of property and other arguments are appropriate values and there is no limit of number of passed
values.

array.anyWithProperty ('propertyName', value1, value2, …, valueN)

This function will return true if any member of array has value of property “propertyName” equal to value1, or
value2, …, or valueN.

Example:

We want to display section for custom fields only if there is at least one required custom field.

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

With this:

<div data-bind="visible: customFields.any(function(item) {return item.isRequired


=== true;}) ">
<div class="col-md-12">
<h3 class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

8.11.2.6 indexOf

Function indexOf returns index of the first element of passed array that matches predicate function condition.

If predicate function is not passed, native 'indexOf' function will be called. Native 'indexOf' is function
from knockout. It receives member of array as parameter and returns index of that member in array starting
from 0. Our modified function receives predicate function and returns index of array member that matches
predicate function condition.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 491
Syntax:

array.indexOf(predicateFunction)

Example:

We want to display section for custom fields only if none of the first five custom fields is read-only.

We should check index of first appearing of read-only custom field. It should be greater than 4 (because
indexes start from 0).

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

With this:

<div data-bind="visible: customFields.indexOf(function (item) {return


item.editable === false;}) > 4 ">
<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

8.11.2.7 lastIndexOf/lastIndexOfWithProperty

Function lastIndexOf returns index of the last element of passed array that matches predicate function
condition.

Syntax:

array.lastIndexOf(predicateFunction)

SAP CPQ Setup and Administration Guide


492 PUBLIC UI Design
Similar to the previous function, lastIndexOfWithProperty returns index of the last element of passed
array that has value of property matched with passed appropriate values. First argument is the name of
property and other arguments are appropriate values and there is no limit of number of passed values.

Syntax:

array.lastIndexOfWithProperty('propertyName', value1, value2, …, valueN)

This function will return index of the last element of passed array that has value of property “propertyName”
equal to value1, or value2, …, or valueN.

Example1:

We want to display section for custom fields only if none of last three custom fields has different name and
label. (all of last three custom fields have same name and label) We should check if index of last appearing of
custom field, with different label and name, is less than array length minus three (because indexes start from
0).

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

3. With this:

<div data-bind="visible: customFields.lastIndexOf(function (item) {return


item.label !==item.name;}) < customFields().length - 3 ">
<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 493
Example2:

We want to display section for custom fields only if none of the last three custom fields is required.

We should check if index of last appearing of custom field, with value of isRequired equal to true, is less than
array length minus three (because indexes start from 0).

1. Create new template.


2. Change this part of the template:

<div data-bind="visible: customFields().length > 0">


<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

With this:

<div data-bind="visible: customFields.lastIndexOfWithProperty('isRequired',


true) < customFields().length - 3 ">
<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko template: template -->
<!--/ko -->
</div>
</div>
<br />
</div>

8.11.2.8 first/firstWithProperty

Function returns the first element of passed array that matches predicate function condition.

The arguments are predicate function, which is mandatory, and default value, which is optional parameter. If
there is no array member that matches predicate function condition, default value will be returned. If default
value is not defined null will be returned.

Syntax:

array.first(predicateFunction, [defaultValue])

Similar to the previous function, firstWithProperty returns the first element of passed array that has value
of property matched with passed appropriate values. First argument is the name of property and other
arguments are appropriate values and there is no limit of number of passed values.

SAP CPQ Setup and Administration Guide


494 PUBLIC UI Design
Syntax:

array.firstWithProperty ('propertyName', value1, value2, …, valueN)

This function will return first element of passed array that has value of property “propertyName” equal to
value1, or value2, …, or valueN.

Example1:

We want to show label of the first required custom field (without default value).

1. Create new template.


2. Add this part to existing template:

<h3>First required field</h3>


<!-- ko if: customFields.first(function(item){ return item.isRequired ===
true;}) !== null -->
<span data-bind ="text: customFields.first(function(item){ return
item.isRequired === true;}).label"></span>
<!-- /ko -->

Example2:

We want to show label of the first required custom field, if there is no required fields show No required fields.
(with default value)

We will create dummy default value with label No required fields.

1. Create new template.


2. Add this part to existing template:

<h3>First required field</h3>


<span data-bind ="text: customFields.first(function(item){ return
item.isRequired === 'not existing';}, {label: 'No required fields'}).label"></
span>

Example3:

We want to show label of the first custom field with id 23 or 5 or 19 or 91.

1. Create new template.


2. Add this part to existing template:

<h3>First field from the set with id 23 or 5 or 19 or 91 </h3>


<!-- ko if: customFields.firstWithProperty('id', 23, 5, 19, 91) !== null-->
<span data-bind ="text: customFields.firstWithProperty('id', 23, 5, 19,
91).label"></span>
<!-- /ko -->

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 495
8.11.2.9 last/lastWithProperty
Function returns the last element of passed array that matches predicate function condition.

The arguments are predicate function, which is mandatory, and default value, which is optional parameter. If
there is no array member that matches predicate function condition, default value will be returned. if default
value is not defined null will be returned.

Syntax:

array.last (predicateFunction, [defaultValue])

Similar to the previous function, lastWithProperty returns the last element of passed array that has value of
property matched with passed appropriate values. First argument is the name of property and other
arguments are appropriate values and there is no limit of number of passed values.

Syntax:

array.lastWithProperty ('propertyName', value1, value2, …, valueN)

This function will return last element of passed array that has value of property “propertyName” equal to
value1, or value2, …, or valueN.

Example1:

We want to show label of the last required custom field (without default value).

1. Create new template.


2. Add this part to existing template:

<h3>Last required field</h3>


<!-- ko if: customFields.last(function(item){ return item.isRequired ===
true;}) !== null -->
<span data-bind ="text: customFields.last(function(item){ return
item.isRequired === true;}).label"></span>
<!-- /ko -->

Example2:

We want to show label of the last required custom field, if there is no required fields show No required fields.
(with default value)

We will create dummy default value with label No required fields.

1. Create new template.


2. Add this part to existing template:

<h3>Last required field</h3>


<span data-bind ="text: customFields.last(function(item){ return
item.isRequired === 'not existing';}, {label: 'No required fields'}).label"></
span>

SAP CPQ Setup and Administration Guide


496 PUBLIC UI Design
Example3:

We want to show label of the last custom field with id 23 or 5 or 19 or 91.

1. Create new template.


2. Add this part to existing template:

<h3>Last field from the set with id 23 or 5 or 19 or 91 </h3>


<!-- ko if: customFields.lastWithProperty('id', 23, 5, 19, 91) !== null -->
<span data-bind ="text: customFields.lastWithProperty('id', 23, 5, 19,
91).label"></span>
<!-- /ko -->

8.11.2.10 Chaining - Combining Multiple Function Calls

Functions sortByProperty and filterByProperty return new observable array and they can be combined
with other functions.

Example1:

We can sort the array by value of label and then get the name of the first required member of sorted array.

<!-- ko if: customFields.sortByProperty('label').first(function(item)


{ return item.isRequired === true;}) !== null -->
<span data-bind ="text:
customFields.sortByProperty('label').first(function(item){ return
item.isRequired === true;}).name"></span>
<!-- /ko -->

Example2:

We can filter the array by value of editable and then check if all editable fields are required.

<h3>Are all editable fields required?</h3>


<span data-bind ="text: customFields.filterByProperty('editable',
true).all(function(item){ return item.isRequired === true;})"></span>

Example3:

We can filter the array by value of editable and then check if any editable field is required.

<h3>Is any editable field required?</h3>


<span data-bind ="text: customFields.filterByProperty('editable',
true).anyWithProperty('isRequired', true)"></span>

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 497
8.11.3 Customization Examples

In this topic you can see different types of common customizations in Responsive design as well as usefull
HTML snippets:

Header Customizations [page 498]


This section contains customizations which can be applied to the Header.

Configurator Customizations [page 499]


This section contains customizations which can be applied to the Configurator page.

Cart Customizations [page 502]


This section contains customizations which can be applied to the Cart page.

Quote Custom Fields Customizations [page 505]


This section contains examples for quote custom fields customizations.

Quote Item Custom Fields Customization [page 512]


This section contains examples of customizations of quote item custom fields.

Cart Items Table Customizations [page 519]


This section provides examples of cart items table customizations.

Catalog Customizations [page 520]


This section contains customizations which can be applied to the Catalog page.

8.11.3.1 Header Customizations

This section contains customizations which can be applied to the Header.

Change Logo through CSS [page 498]


You can change the logo through CSS.

8.11.3.1.1 Change Logo through CSS

You can change the logo through CSS.

Procedure

1. Go to Setup General File Management .


2. Upload an image in folder Additional Files.

SAP CPQ Setup and Administration Guide


498 PUBLIC UI Design
3. Add this to your custom CSS file, depending on where you uploaded your logo:

.cald_logo {
background: url(https://devstable.webcomcpq.com/mt/DEFAULT/additionalfiles/
logo1.jpg) no-repeat center center;
background-size: contain;
}

8.11.3.2 Configurator Customizations

This section contains customizations which can be applied to the Configurator page.

Customize Attribute Image Checkboxes [page 499]


Here, you can learn how attribute image checkboxes are customized.

Make Responder Display in Modal Window [page 501]


This page contains a piece of code which should be added to your custom CSS file to make the
Responder display in a modal window.

Change the Way Attributes are Displayed in One Tab [page 501]

8.11.3.2.1 Customize Attribute Image Checkboxes

Here, you can learn how attribute image checkboxes are customized.

Procedure

1. Edit attribute in product.


2. Set Display as to be Image Button.
3. Upload Image On and Image Off pictures.
4. Change Display as to be Check Box.
5. Click Save.
6. Create new template Editors/CheckboxTemplate to be used in the Configurator page.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 499
7. Change this part of the template:

<span class="l" data-bind="css: {'col-md-7 clear-padding': $parent.dataType()


== 'Attr.Quantity'}">
<label class="middle">
<input class="custom" type="checkbox" data-bind="value: pavId, checked:
selected, incrementalTabIndex, enable: $parent.isEnabled" />
<span data-bind="html: displayValueWithPrices" class="lbl"></span>
</label>
</span>

With this:

<span class="l image-checkbox" data-bind="css: {'col-md-7 clear-padding':


$parent.dataType() == 'Attr.Quantity'}">
<label class="middle">
<input class="custom" type="checkbox" data-bind="value: pavId, checked:
selected, incrementalTabIndex, enable: $parent.isEnabled" />
<!-- ko if: $data.imageUrl().length > 0 -->
<span class="img-thumbnail">
<img class="img-responsive" data-bind="attr:{src:
$data.imageUrl}" />
<span data-bind="html: displayValueWithPrices" class="lbl"></span>
</span>
<!-- /ko -->
<!-- ko if: $data.imageUrl().length == 0 -->
<span data-bind="html: displayValue" class="lbl"></span>
<!-- /ko -->
</label>
</span>

8. Add this CSS:

.image-checkbox {
width: 100%;
}
.image-checkbox input.custom[type="checkbox"]:checked + span.img-thumbnail {
border: 2px solid #00a8e3;
box-shadow: 0 0 8px #dce1e5;
}

SAP CPQ Setup and Administration Guide


500 PUBLIC UI Design
8.11.3.2.2 Make Responder Display in Modal Window

This page contains a piece of code which should be added to your custom CSS file to make the Responder
display in a modal window.

.hide-responder {
display: none;
}
.info-label.total {
display: table-cell;
}
.full-width {
width: 100%;
}

8.11.3.2.3 Change the Way Attributes are Displayed in One


Tab

Procedure

1. Create a new template ConfiguratorView for the Configurator page.

2. Add condition for tab ID (or name) and then display the attributes inside that tab the way you want
(example is showing attributes in a table).

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 501
In this example we customize tab with id = 17 and attributes with stdAttrCode = 930 and
stdAttrCode = 931.

<!-- ko if : tabs().length > 0 && currentTab().id() === 17 -->


<table class="table table-bordered">
<caption>Basic Information</caption>
<thead>
<tr>
<!-- ko foreach: attributes -->
<!-- ko if : $data.stdAttrCode() === 930 || $data.stdAttrCode() ===
931 -->
<th><label data-bind="html: label, css: { required: incomplete() &&
$root.highlightIncomplete() }"></label></th>
<!-- /ko -->
<!-- /ko -->
</tr>
</thead>
<tbody>
<tr>
<!-- ko foreach: attributes -->
<!-- ko if : $data.stdAttrCode() === 930 || $data.stdAttrCode() ===
931 -->
<td><span data-bind="text: userInput"></span></td>
<!-- /ko -->
<!-- /ko -->
</tr>
</tbody>
</table>
<!-- /ko -->

3. Add condition to display attributes in classic way in all other tabs.

<!-- ko if : tabs().length === 0 || tabs().length > 0 && currentTab().id() !


== 17 -->
<!-- ko foreach: attributes -->
<div data-bind="attr: { 'class': isWholeRow() ? 'g4' : 'g1' }">
<!-- ko template: { name: $root.getAttributeTemplate } -->
<!-- /ko -->
</div>
<!-- /ko -->
<!-- /ko -->

8.11.3.3 Cart Customizations

This section contains customizations which can be applied to the Cart page.

Replace Cart Action with custom JS [page 503]


Regular custom actions on cart can have embedded JavaScript code that will execute on click.

Allow Negative Numbers in Cart Cells [page 504]


We will customize cell template in order to allow negative numbers for discount, extended amount, and
so on.

SAP CPQ Setup and Administration Guide


502 PUBLIC UI Design
8.11.3.3.1 Replace Cart Action with custom JS

Regular custom actions on cart can have embedded JavaScript code that will execute on click.

Context

We want to add some JavaScript code for our custom action on a quote. We need to know our action's ID. For
this example, let's say that ID is 2524.

Procedure

1. Create IronPython script that returns some message (for example This is a test message.) and name it test.
2. Create a new ActionsTemplate on the Cart page.

3. Override default template with this (Observe that id in this example is our custom action's ID):

<script type="text/javascript">
window.ShowResult = function ()
{
var result = $.get("https://sandbox.webcomcpq.com/customapi?
username=admin&password=password123&scriptname=test");
alert(result);
};
</script>
<script type="text/html" id="actionsTemplate">
<div data-bind="foreach: $data">
<!-- ko if : $root.displayImagesForCartActions -->

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 503
<div class="action-row">
<!-- ko if: id !== 2524 -->
<a href="#">
<span data-bind="text: name, click: execute"></span>&nbsp;<img
data-bind="attr: { src: imageUrl }, visible: imageUrl" />
</a>
<!-- /ko -->
<!-- ko if: id === 2524 -->
<button data-bind="text: name" onclick="window.ShowResult()"></
button>&nbsp;<img data-bind="attr: { src: imageUrl }, visible: imageUrl" />
<!-- /ko -->
</div>
<!-- /ko -->
<!-- ko ifnot : $root.displayImagesForCartActions -->
<div class="button-actions"><button type="button" class="btn btn-
default" data-bind="text: name, click: execute"></button></div>
<!-- /ko -->
</div>
</script>

4. Go to Cart page.

You should see button beside your action's name.


5. Click on action and you should see message from your script:

In this example we've used SAP CPQ custom API for script execution. Of course, you can call any other
supported external API source.

8.11.3.3.2 Allow Negative Numbers in Cart Cells

We will customize cell template in order to allow negative numbers for discount, extended amount, and so on.

Procedure

1. Create a new responsive template which uses standard Cart/Templates/CellTemplates template.


2. In new template just replace numericMathCellTemplate with this one:

<script type="text/html" id="numericMathCellTemplate">


<div data-bind="css:{ 'input-group col-md-12 clear-padding':
hasModifiedComputedField }">
<span class="input-group-addon" data-bind="visible: hasModifiedComputedField,
tooltip:{ title: modifiedComputedFieldMsg }"><i class="fa fa-
exclamation"></i></span>
<input type="text" class="form-control numberCell"
data-bind="valueUpdatedOnEnter: value, executeOnEnter: $root.calculate,

SAP CPQ Setup and Administration Guide


504 PUBLIC UI Design
css:{ hasError: errorMessage }, attr:{ title: errorMessage() ?
errorMessage() : '' }, incrementalTabIndex: tabIndexGroup" />
</div>
</script>

8.11.3.4 Quote Custom Fields Customizations


This section contains examples for quote custom fields customizations.

Create Custom Field Custom Templates [page 505]


This page contains the procedure for creating custom field custom templates.

Show Custom Fields in a Separate Section [page 506]


This procedure shows you how to make custom fields display in a separate section.

Show Custom Field Value in Shipping Info Form [page 507]


This procedure shows you how to make the custom field value display in the Shopping Info form.

Display Custom Field in Product Type Section [page 509]


This procedure shows you how to make a custom field display in the Product Type section.

Display Custom Field in Product Type Section in Item Total Row [page 511]
This procedure shows you how to make a custom field diisplay in the Item Total row of the Product Type
section.

8.11.3.4.1 Create Custom Field Custom Templates


This page contains the procedure for creating custom field custom templates.

Procedure

1. Create new template Templates/CartCustomFieldTemplate on the Cart page.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 505
2. Make a copy of the existing templates.
3. Add your own suffix to the template names.

For example we will add CustomCF:

<script type="text/html" id="CartCustomFieldFreeFormTemplateCustomCF">


<div data-bind="html: content"></div>
<span data-bind="text: error, enable: editable" class="required"></span>
</script>

4. In this example we want to show custom field with id = 57. Name those custom templates wherever you
want to use them on Cart page, just by adding this part of HTML:

<!-- ko foreach: $root.customFields -->


<!-- ko if: $data.id === 57 -->
<!-- ko template: template + 'CustomCF' -->
<!--/ko -->
<!--/ko -->
<!--/ko -->

8.11.3.4.2 Show Custom Fields in a Separate Section

This procedure shows you how to make custom fields display in a separate section.

Procedure

1. Create new template inside the section where you want your new section to appear. For example, Sections/
CustomFields on the Cart page.

2. Change this part of template:

<td data-title="@Model.Cells[i].CellLabel">
<!-- ko if : $data.itemDescription.productTypeName() === 'Accessories' -->
@if (Model.Cells[i].ColumnName != "someNameColumn")
{

SAP CPQ Setup and Administration Guide


506 PUBLIC UI Design
<!-- ko template : { name : values[@i].template, data:
values[@i] } -->
<!-- /ko -->
}
<!-- /ko -->
<!-- ko if : $data.itemDescription.productTypeName() !== 'Accessories' -->
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
<!-- /ko -->
</td>

With this:

<div id="custom-fields-section">
@*Custom fields*@
<div data-bind="visible: customFields().length > 0">
<div class="col-md-12">
<h3
class="alternate">@Translation.Get("xsltQuoteCartCustomFields")</h3>
</div>
<div class="clearfix">
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko if: $data.id !== 53 && $data.id !== 57 -->
<!-- ko template: template -->
<!--/ko -->
<!--/ko -->
</div>
</div>
<br />
<h3 class="tertiary">My section for custom templates</h3>
<div data-bind="foreach: customFields" class="custom-fields">
<!-- ko if: $data.id === 53 || $data.id === 57 -->
<!-- ko template: template -->
<!--/ko -->
<!-- /ko -->
</div>
</div>
</div>

Results

In this example we create new section with name My section for custom template. We put custom fields with
IDs 53 and 57 in new section and remove those custom fields from regular section.

8.11.3.4.3 Show Custom Field Value in Shipping Info Form

This procedure shows you how to make the custom field value display in the Shopping Info form.

Procedure

1. Create new template CustomerDataTemplate in the Customers page.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 507
2. Change this part of template:

<div data-bind="foreach: fields">


<div class="form-group">
<label class="col-md-5 col-xs-6 control-label" data-bind="text: label,
css: { 'required': isRequired }" />
<div class="col-md-7 col-xs-6">
<!-- ko if: isListItem() -->
<select data-bind="options: items, optionsText: 'label',
optionsValue: 'value', value: listItemValue" class="form-control" />
<!-- /ko-->
<!-- ko if: isTextField() && fieldId !== 'Active'-->
<input type="text" data-bind="id: fieldId, value: value" class="form-
control" />
<!-- ko if: isPostcodeLookup-->
<a href="#" data-bind="click:
$parent.findAddress">[@Translation.Get("xsltFindAddress")]</a>
<!-- /ko -->
<!-- /ko-->
<!-- ko if: isSpan() && fieldId !== 'Active'-->
<span data-bind="id: fieldId, text: value" />
<!-- /ko-->
</div>
</div>
</div>

With this:

<div data-bind="foreach: fields">


<!-- ko if: $data.fieldId !== 'someFieldOnForm'-->
<div class="form-group">
<label class="col-md-5 col-xs-6 control-label" data-bind="text: label,
css: { 'required': isRequired }" />
<div class="col-md-7 col-xs-6">
<!-- ko if: isListItem() -->
<select data-bind="options: items, optionsText: 'label',
optionsValue: 'value', value: listItemValue" class="form-control" />
<!-- /ko-->
<!-- ko if: isTextField() && fieldId !== 'Active'-->

SAP CPQ Setup and Administration Guide


508 PUBLIC UI Design
<input type="text" data-bind="id: fieldId, value: value" class="form-
control" />
<!-- ko if: isPostcodeLookup-->
<a href="#" data-bind="click:
$parent.findAddress">[@Translation.Get("xsltFindAddress")]</a>
<!-- /ko -->
<!-- /ko-->
<!-- ko if: isSpan() && fieldId !== 'Active'-->
<span data-bind="id: fieldId, text: value" />
<!-- /ko-->
</div>
</div>
<!-- /ko-->
<!-- ko if: $data.fieldId === 'someFieldOnForm'-->
<div class="form-group">
<label class="col-md-5 col-xs-6 control-label" data-bind="text: label,
css: { 'required': isRequired }" />
<div class="col-md-7 col-xs-6">
<div data-bind="foreach: $root.customFleldsModel.customFields"
class="custom-fields">
<!-- ko if : $data.id === 50 -->
<span data-bind="html: content" />
<!-- /ko -->
</div>
</div>
</div>
<!-- /ko-->
</div>

Results

In this example we write value of custom field with ID equal to 50 into field with name someFieldOnForm.

8.11.3.4.4 Display Custom Field in Product Type Section

This procedure shows you how to make a custom field display in the Product Type section.

Procedure

1. Create new template Sections/ProductTypes in the Cart page.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 509
2. Change this part of template:

<!-- ko foreach: values -->


<td data-bind="attr: { 'data-title': $root.productTypes.columnLabels()
[$index()] }">
<!-- ko template : { name : template } -->
<!-- /ko -->
</td>
<!-- /ko -->

With this:

<!-- ko if: $data.productTypeName !== 'Hardware' -->


<!-- ko foreach: values -->
<td data-bind="attr: { 'data-title': $root.productTypes.columnLabels()
[$index()] }">
<!-- ko template : { name : template } -->
<!-- /ko -->
</td>
<!-- /ko -->
<!-- /ko -->
<!-- ko if: $data.productTypeName === 'Hardware' -->
<!-- ko foreach: values -->
<!-- ko if: $data.column.name === 'DiscountPercent' -->
<td>
<!-- ko foreach: $root.customFields -->
<!-- ko if: $data.id === 55 -->
<input data-bind="value: content, enable: editable,
incrementalTabIndex: 'customFields'" class="form-control" />
<span data-bind="text: error, enable: editable"
class="required"></span>
<!--/ko -->
<!--/ko -->
</td>
<!-- /ko -->
<!-- ko if: $data.column.name !== 'DiscountPercent' -->
<td data-bind="attr: { 'data-title': $root.productTypes.columnLabels()
[$index()] }">
<!-- ko template : { name : template } -->
<!-- /ko -->
</td>
<!-- /ko -->
<!-- /ko -->
<!-- /ko -->

SAP CPQ Setup and Administration Guide


510 PUBLIC UI Design
Results

In this example we write value of custom field with ID equal to 55 into column in section Product Types with
name DiscountPercent, but only for product type Hardware.

8.11.3.4.5 Display Custom Field in Product Type Section in


Item Total Row

This procedure shows you how to make a custom field diisplay in the Item Total row of the Product Type section.

Procedure

1. Create new template Sections/ProductTypes in the Cart page.

2. Change this part of template:

<!-- ko foreach: $root.productTypes.totals -->


<td class="bold-border" data-bind="attr: { 'data-title':
$root.productTypes.columnLabels()[$index()] }">
<!-- ko template : { name : template } -->
<!-- /ko -->
</td>
<!-- /ko -->

With this:

<!-- ko foreach: $root.productTypes.totals -->


<!-- ko if: $data.column.name === 'DiscountPercent' -->
<td class="bold-border" data-bind="attr: { 'data-title':
$root.productTypes.columnLabels()[$index()] }">
<!-- ko foreach: $root.customFields -->
<!-- ko if: $data.id === 55 -->
<input data-bind="value: content, enable: editable,
incrementalTabIndex: 'customFields'" class="form-control" />

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 511
<span data-bind="text: error, enable: editable" class="required"></
span>
<!--/ko -->
<!--/ko -->
</td>
<!--/ko -->
<!-- ko if: $data.column.name !== 'DiscountPercent' -->
<td class="bold-border" data-bind="attr: { 'data-title':
$root.productTypes.columnLabels()[$index()] }">
<!-- ko template : { name : template } -->
<!-- /ko -->
</td>
<!--/ko -->
<!-- /ko -->

Results

In this example we write value of custom field with ID equal to 55 into column in section Product Types with
name DiscountPercent, but only in Item Total row.

8.11.3.5 Quote Item Custom Fields Customization

This section contains examples of customizations of quote item custom fields.

Quote Item Custom Field as Checkbox [page 512]


This procedure shows you how to customize a quote item custom field to appear as a checkbox.

Quote Item Custom Field as Dropdown [page 514]


This procedure shows you how to customize a quote item custom field to appear as a dropdown.

Display Image in Item Custom Column [page 515]


This procedure shows you how to add an image to the item custom column.

Use Item column value in first column [page 517]


This procedure shows you how to make an item column value display in the first columnn.

8.11.3.5.1 Quote Item Custom Field as Checkbox

This procedure shows you how to customize a quote item custom field to appear as a checkbox.

Procedure

1. Create a custom field (for example someNameCheckboxCF), of the type Text.

○ If you want default value (when you enter the quote for first time) of checkbox to be checked set
Calculation formula to be true.

SAP CPQ Setup and Administration Guide


512 PUBLIC UI Design
○ If you want default value (when you enter the quote for first time) of checkbox to be unchecked set
Calculation formula to be false or leave it empty.

2. In Pricing/Calculations Cart Fields Administration for appropriate status and user type set this
custom field to be editable.

3. In QuotesQuotes Quote Layout Permissions set visibility permission for this custom field.

4. In UI DesignUI Design Quote Layout set this custom field to be visible in Cart.

5. In UI Design Responsive Templates create a new responsive template.

For Page select Cart, for template set Sections/ItemsTable, set Name and check Default.

6. In new template change this part:

<td data-title="@Model.Cells[i].CellLabel">
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
</td>

With this:

if (Model.Cells[i].ColumnName == "someNameCheckboxCF")
{
<!-- ko template : { name : 'checkBoxTemplate', data: values[@i] } -->
<!-- /ko -->
}
else
{
<td data-title="@Model.Cells[i].CellLabel">
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
</td>
}

7. At the end of template add this part:

<script type="text/html" id="checkBoxTemplate">


<div class="pull-right">
<input type="checkbox" data-bind="checked: ko.computed({
read: function(){
return value() === 'true';
},
write :function(newValue){

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 513
value(newValue.toString());
}
});" />
</div>
</script>

8.11.3.5.2 Quote Item Custom Field as Dropdown

This procedure shows you how to customize a quote item custom field to appear as a dropdown.

Procedure

1. Create custom field (for example someNameDropDownCF), and set its type to Text.

2. In Pricing/Calculations Cart Fields Administration for appropriate status and user type set this
custom field to be editable.

3. In Quotes Quote Layout Permissions set visibility permission for this custom field.

4. In UI Design Quote Layout set this custom field to be visible in Cart.

5. In UI Design Responsive Templates create new responsive template. For Page select Cart, for
template set Sections/ItemsTable, set Name and check Default.

6. In new template change this part:

<td data-title="@Model.Cells[i].CellLabel">
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
</td>

With this:

if (Model.Cells[i].ColumnName == "someNameDropDownCF")
{

SAP CPQ Setup and Administration Guide


514 PUBLIC UI Design
<!-- ko template : { name : 'dropDownTemplate', data: values[@i] } -->
<!-- /ko -->
}
else
{
<td data-title="@Model.Cells[i].CellLabel">
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
</td>
}

7. At the end of template add this part:

<script type="text/html" id="dropDownTemplate">


<div class="pull-right">
<select data-bind="options: ko.observable(['Status 1', 'Status 2',
'Status 3']), value: value"></select>
</div>
</script>

Results

In this example there are three statuses - Status 1, Status 2 and Status 3 in observable array that will be
displayed as options in dropdown, but you can create tour own custom observable array.

8.11.3.5.3 Display Image in Item Custom Column

This procedure shows you how to add an image to the item custom column.

Procedure

1. Go to Setup General File Management and upload an image in folder Additional Files.
2. Create custom field (for example CFWithPicture), set its type to Text and for calculation formula set picture
path.

For example: https://devstable.webcomcpq.com/mt/DEFAULT/additionalfiles/image1.jpg

This example is for devstable environment, default domain and picture with name image1.jp is
uploaded in folder additionalfiles

3. In Quotes Quote Layout Permissions set visibility permission for this custom field.

4. In UI Design Quote Layout set this custom field to be visible in Cart.

5. In UI Design Responsive Templates create a new responsive template. For Page select Cart, for
Template set Sections/ItemsTable, set Name and check Default.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 515
6. In new template change this part:

<td data-title="@Model.Cells[i].CellLabel">
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
</td>

With this:

@if(Model.Cells[i].ColumnName ==
"CFWithPicture")
{
<img data-bind="attr : { src : values[@i].value}"></img>
} else
{
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
}

Results

In this example we change the way of rendering quote item custom field if field name is CFWithPicture. For
that custom field we want to render image with path defined in its calculation formula.

SAP CPQ Setup and Administration Guide


516 PUBLIC UI Design
8.11.3.5.4 Use Item column value in first column

This procedure shows you how to make an item column value display in the first columnn.

Context

We are assuming that like in previous example [page 515] there is the same Item Custom field named
CFWithPicture that contains URL. We will add this custom field in first column.

Procedure

1. In place where we want to display this picture (form quote item custom field) add this part of code in the
Sections/ItemsTable template on the Cart page:

<img data-bind="attr : { src : values.filter(function (value) { return


value.column.name === 'CFWithPicture' })[0].value }"></img>

2. We use knockout projections function filter to get column value where column name is CFWithPicture.
We could expand our example with hidding this column form items table. We need to remove it from
header. Change this part of code:

<thead>
<tr style="height: 20px;">
<th rowspan="2" data-bind="visible: canManageItems" class="manage-
items">
<input type="checkbox" class="custom" data-bind="checked:
selectAll"/>
<span class="lbl"></span>
</th>
<th rowspan="2">@Translation.Get("docItem")</th>
@*Complex columns have 2 additional columns in next row sot their
rowSpan is 1 and colSpan is 2*@
@foreach (CartItemColumnVm column in Model.Columns)
{
if (column.IsComplex)
{
<th colspan="2" rowspan="1">@column.HeaderLabel</th>
}
else
{
<th colspan="1" rowspan="2">@column.HeaderLabel</th>
}
}
</tr>
<tr>
@foreach (CartItemColumnVm column in Model.Columns)
{
if (column.IsComplex)
{
<th>@Translation.Get("xsltNRC")</th>
<th>@Translation.Get("xsltMRC")</th>
}
}
</tr>

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 517
</thead>

With this:

<thead>
<tr style="height: 20px;">
<th rowspan="2" data-bind="visible: canManageItems" class="manage-
items">
<input type="checkbox" class="custom" data-bind="checked:
selectAll"/>
<span class="lbl"></span>
</th>
<th rowspan="2">@Translation.Get("docItem")</th>
@*Complex columns have 2 additional columns in next row sot their
rowSpan is 1 and colSpan is 2*@
@foreach (CartItemColumnVm column in Model.Columns)
{
if (column.Name != "CFWithPicture")
{
if (column.IsComplex)
{
<th colspan="2" rowspan="1">@column.HeaderLabel</th>
}
else
{
<th colspan="1" rowspan="2">@column.HeaderLabel</th>
}
}
}
</tr>
<tr>
@foreach (CartItemColumnVm column in Model.Columns)
{
if (column.IsComplex && column.Name != "CFWithPicture")
{
<th>@Translation.Get("xsltNRC")</th>
<th>@Translation.Get("xsltMRC")</th>
}
}
</tr>
</thead>

3. We need to skip it when rendering cells. Change this part of code:

<td data-title="@Model.Cells[i].CellLabel">
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
</td>

With this:

if(Model.Cells[i].ColumnName !=
"CFWithPicture")
{
<td data-title="@Model.Cells[i].CellLabel">
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
</td>
}

SAP CPQ Setup and Administration Guide


518 PUBLIC UI Design
8.11.3.6 Cart Items Table Customizations

This section provides examples of cart items table customizations.

Hide Values from Some Columns in the Cart [page 519]


This procedure shows you how to hide values from some columns in the quote.

8.11.3.6.1 Hide Values from Some Columns in the Cart

This procedure shows you how to hide values from some columns in the quote.

Procedure

1. Create new template Sections/ItemsTable in the Cart page.

2. Change this part of the template:

<td data-title="@Model.Cells[i].CellLabel">
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
</td>

With this:

<td data-title="@Model.Cells[i].CellLabel">
<!-- ko if : $data.itemDescription.productTypeName() === 'Accessories' -->
@if (Model.Cells[i].ColumnName != "someNameColumn")

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 519
{
<!-- ko template : { name : values[@i].template, data:
values[@i] } -->
<!-- /ko -->
}
<!-- /ko -->
<!-- ko if : $data.itemDescription.productTypeName() !== 'Accessories' -->
<!-- ko template : { name : values[@i].template, data: values[@i] } -->
<!-- /ko -->
<!-- /ko -->
</td>

Results

In this example we want to hide values from column with name someNameColumn, but only for products which
type is Accessories.

8.11.3.7 Catalog Customizations

This section contains customizations which can be applied to the Catalog page.

Remove Images of Categories from Catalog [page 520]


This procedure shows you how to remove images of categories from the Catalog.

Remove Images of Products from Catalog [page 521]


This procedure shows you how to remove images of products from the Catalog.

8.11.3.7.1 Remove Images of Categories from Catalog

This procedure shows you how to remove images of categories from the Catalog.

Procedure

1. Create a new template.

SAP CPQ Setup and Administration Guide


520 PUBLIC UI Design
2. At the end of file add this custom CSS:

<style>
.categories-tabular .image-holder {
display: none;
}
</style>

You can also add this to your CSS file for categories.

8.11.3.7.2 Remove Images of Products from Catalog


This procedure shows you how to remove images of products from the Catalog.

Procedure

1. Create new template:

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 521
2. At the end of file add this custom CSS:

<style>
.product-box .image-holder {
display: none;
}
</style>

You can also add this to your CSS file for products.

8.11.4 Advanced Customization Examples

In this section you can see different types of more advanced customizations in Responsive Design that add
custom behavior to pages:

cpq global variable [page 522]


Window contain global cpq variable. Sole purpose of this variable is to help deliver Responsive Design
customizations that contain custom behavior (custom JavaScript).

WorkflowContext ClientData Rendering [page 525]


Data you put in WorkflowContext.ClientData can be accessed on client on Cart and CartList
knockout model using WorkflowClientData observable on model.

How to Display Key Attributes on Custom Tab [page 529]

Fetching Additional Data from Server [page 531]


This procedure shows you how to make the list of hidden attributes display in the Responder.

How to Download XML File [page 533]


This procedure shows how you can download XML file that has been generated by global script.

8.11.4.1 cpq global variable

Window contain global cpq variable. Sole purpose of this variable is to help deliver Responsive Design
customizations that contain custom behavior (custom JavaScript).

cpq.models:

Models property will expose all knockout models present on current page. This will make easier to reach model
instance and inspect it. To try it out type cpq.models. in your browser console and see what will auto-
complete offer you.

SAP CPQ Setup and Administration Guide


522 PUBLIC UI Design
cpq.server:

Server property is there to help you communicate with server from your JavaScript. It contains only one
member, function executeScript which invokes your global IPython script. Please see Consuming Python
Global Scripts as REST web services.

JavaScript:

executeScript: function(scriptName, jsonParam, callback)

Name Type Required Description

scriptName string yes Name of your global IPython


script.

jsonParam object no If it's supplied it must be


object literal. For example:
{ myPoperty:
'myValue' }.

callback function no Function that will be called if


service was executed
successfully. If service
returned data it will be
returned as first parameter.

JavaScript:

cpq.server.executeScript('someScript', { myPoperty: "myValue" }, function (data)


{ console.log(data); });

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 523
cpq.events:

Events object contain pub and sub functions which allow you to subscribe to SAP CPQ public javascript events.
It also allow you to publish and subscribe to your custom events. This can be useful if you are building multiple
widgets for the same page that need to communicate.

 Code Syntax

JavaScript

sub: function (channelName, callback)

Name Type Required Description

channelName string no Name of the event you are


subscribing to. For example,
"modelCreated" or
"catalog:updated". Channel
name supports
namespacing. In case of
"catalog:updated" event, if
you subscribe to "catalog"
you will get notified for all
events starting with
"catalog:". If channel name is
not supplied you will
subscribe to all events.

callback function yes Function that will get called


once event is raised. First
parameter is the data and
second is channel name
(name of the raised event).

 Code Syntax

JavaScript

pub: function (channelName, data)

Name Type Required Description

channelName string yes Name of the event you are


publishing. For example,
"someEvent".

data anything no data that will be sent to


event subscribers.

 Code Syntax

JavaScript

cpq.events.sub("someEvent", function(data, event) { console.log(data,


event); });
cpq.events.pub("someEvent", "someData");

SAP CPQ Setup and Administration Guide


524 PUBLIC UI Design
cpq public events:

Each knockout model in SAP CPQ will raise events when models is crated and updated. When model is created
"modelCreated" is raised. When model receives data from server "modelName:updated" is raised. This event is
also raised when initial data is received. In this events data sent will alway have property "model" which
contains reference to model that raised the event.

 Code Syntax

JavaScript

cpq.events.sub("catalog:updated", function(data, event)


{ console.log("Catalog was updated", data.model); });

cpq.ready:

ready is function that accepts only one parameter which is callback function which is called when document is
ready. Unlike jQuery ready event this one will wait for some script initialization to finish so you can use ko global
variable.

 Code Syntax

JavaScript

cpq.ready(function(){
var model = {
name: ko.observable('MyModle'),
items: ko.observableArray()
};
ko.applyBindings(model, document.getElementById("exampleWidget"));
});

For full example using ready function please see WorkflowContext ClientData Rendering [page 525].

8.11.4.2 WorkflowContext ClientData Rendering

Data you put in WorkflowContext.ClientData can be accessed on client on Cart and CartList knockout
model using WorkflowClientData observable on model.

This observable stores last WorkflowContext.ClientData received from server and can be used for
rendering. See example below.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 525
Example 1:

Once custom action that will build ClientData is created, you need to add the following IronPython script to the
action:

Python:

# Apply some logic here for calculating client data


msgArray = [{ 'type' : 'info', 'message': 'some custom info' },
{ 'type' : 'error', 'message': 'some custom error' }]
warnMsg = {};
warnMsg['type'] = "warning";
warnMsg['message'] = "some warning message";
msgArray.append(warnMsg);
WorkflowContext.ClientData = msgArray

After you are done don't forget to setup new custom actoin in workflow and workflow permissions.

Then add following snippet in the Sections/Promotions template on Cart page:

<div class="row" data-bind="visible: workflowClientData">


<strong>Below is some client data</strong>
<!-- ko foreach : workflowClientData -->
<div class="alert" data-bind="text: message, css: { 'alert-info' : type ===
'info', 'alert-danger' : type === 'error', 'alert-warning': type ===
'warning' }"></div>
<!-- /ko -->
</div>

Now if you go to Cart you will see new action Get ClientData.

When you click Get ClientData IPython script sends data to client which is then rendered using out custom
template.

Example 2 (Widget implementation in CartPage template):

Downside of previous example is that client data can't be manipulated. It is using


WorkflowContext.ClientData to directly render data. Advantage of this approach is that is very simple.
Disadvantage is that you will show only last data received from server. In this example we'll implement custom
widget on cart page, in which client data is rendered and can be manipulated. This widget will accumulate and
display different messages received from server via client data and it will allow us to remove single or all
messages.

1. Create custom template in Cart/CartPage and add following HTML content:

<script type="text/javascript">
cpq.ready(function()
{
var model = {
isVisible: ko.observable(true),
data: ko.observableArray(),
clearAll: function ()
{
model.data([]);
},
remove: function(item)
{

SAP CPQ Setup and Administration Guide


526 PUBLIC UI Design
model.data.remove(item);
}
};
cpq.events.sub('cart:updated', function(data) {
// if we received client data, add it to our model
if (data.model.workflowClientData())
{
for(var i = 0; i <
data.model.workflowClientData().length; i++)
{

model.data.push(data.model.workflowClientData()[i]);
}
}
});
ko.applyBindings(model,
document.getElementById("exampleWidget"));
});
</script>
<div id="exampleWidget" class="center-block" data-bind="visible: isVisible"
style="display: none; width: 500px">
<div>
<strong>This is custom widget</strong>
<a href=#" data-bind="click: clearAll, visible: data().length >
0" style="float: right">Clear all</a>
<!-- ko foreach : data -->
<div class="alert" data-bind="css: { 'alert-info' : type ===
'info', 'alert-danger' : type === 'error', 'alert-warning': type ===
'warning' }">
<span data-bind="text: message"></span>
<a href="#" data-bind="click: $root.remove" style="float:
right">remove</a>
</div>
<!-- /ko -->
<div data-bind="visible: data().length === 0">currently
empty...</div>
</div>
</div>

2. Go to Cart page. You should see empty widget just above the quote:

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 527
3. Click on custom action for which you've defined IronPython script and you should see widget filled with
client data. You can remove individual divs or clear entire content of widget:

Example 3 (Widget implementation in Cart section template):

In previous example we've implemented widget that is positioned above cart page. This is because cart page
already have applied knockout bindings and we can't apply two or more bindings on same model. Luckily,
knockout have workaround for that, which give us possibility to implement our widget anywhere inside cart
page.

1. Create custom template in Sections/Promotions and add following HTML content:

<script type="text/javascript">
cpq.ready(function()
{
var model = {
isVisible: ko.observable(true),
data: ko.observableArray(),
clearAll: function ()
{
model.data([]);
},
remove: function(item)
{
model.data.remove(item);
}
};
cpq.events.sub('cart:updated', function(data) {
// if we received client data, add it to our model
if (data.model.workflowClientData())
{
for(var i = 0; i <
data.model.workflowClientData().length; i++)
{

model.data.push(data.model.workflowClientData()[i]);

SAP CPQ Setup and Administration Guide


528 PUBLIC UI Design
}
}
});
ko.bindingHandlers.stopBinding = {
init: function() {
return { controlsDescendantBindings: true };
}
};
ko.virtualElements.allowedBindings.stopBinding = true;
ko.applyBindings(model,
document.getElementById("exampleWidget"));
});
</script>
<!-- ko stopBinding: true -->
<div id="exampleWidget" class="center-block" data-bind="visible: isVisible"
style="display: none; width: 500px">
<div>
<strong>This is custom widget</strong>
<a href=#" data-bind="click: clearAll, visible: data().length >
0" style="float: right">Clear all</a>
<!-- ko foreach : data -->
<div class="alert" data-bind="css: { 'alert-info' : type ===
'info', 'alert-danger' : type === 'error', 'alert-warning': type ===
'warning' }">
<span data-bind="text: message"></span>
<a href="#" data-bind="click: $root.remove" style="float:
right">remove</a>
</div>
<!-- /ko -->
<div data-bind="visible: data().length === 0">currently
empty...</div>
</div>
</div>
<!-- /ko -->

2. Go to the Cart page. You should see widget as part of the cart page, similar to previous example.

Note that only difference between this and previous example is in block of code just above applyBindings
part. Then, we surounded our widget div with stopBinding function that we've added in script block to tell
knockout that on this part of HTML is applied inner binding.

8.11.4.3 How to Display Key Attributes on Custom Tab

In order to display key attributes on custom quote tab we need to do following:

1. Create global script for retrieving data to be displayed.


2. Write custom logic for getting and displaying data.
3. Add custom quote tab to a quote.

Create Global Script for Retrieving Data to be Displayed

The example of global script (name of script, Ex. GetData) for getting key attributes:

def GetColumns(mainItems):
columns = ["Product Name"]
if len(list(Quote.MainItems)) > 0 :

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 529
for attr in mainItems[0].KeyAttributes:
columns.append(attr.Label)
return columns
columns = GetColumns(Quote.MainItems)
values = [];
for item in Quote.MainItems:
values.append({"keyAttributes": item.KeyAttributes,"productName":
item.ProductName});
model = {'columns': columns, 'values': values}
ApiResponse = ApiResponseFactory.JsonResponse(model)

Write Custom Logic for Getting and Displaying Data

The example of js/html files that need to be added to file management:

MyPage.html:

<!DOCTYPE html>
<html>
<head>
<script src="libs/jquery.js"></script>
<script src="libs/knockout.js"></script>
<script src="app.js"></script>
<script src="libs/bootstrap.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="libs/bootstrap.min.css">
</head>
<body>
<div>
<table class="table table-bordered table-hover ">
<thead>
<tr data-bind='foreach: columns'>
<th>
<span data-bind="text: $data"></span>
</th>
</tr>
</thead>
<tbody data-bind="foreach: rows">
<tr>
<td data-bind="text: $data.productName "></td>
<!-- ko foreach: $data.keyAttributes -->
<td data-bind="text: $data.ParsedValue || 'Null'"></td>
<!-- /ko -->
</tr>
</tbody>
</table>
</div>
</body>
</html>

app.js:

$(function() {
$.get(location.origin + "/customapi/executescript?scriptname=GetData",
function(data) {
var ViewModel = function(data) {
var self = this;
self.columns = ko.observableArray(data.columns);
self.rows = ko.observableArray(data.values);
};
ko.applyBindings(new ViewModel(data)); // This makes Knockout get to
work

SAP CPQ Setup and Administration Guide


530 PUBLIC UI Design
});
})

Add tab to quote

We need to define a tab with IFrame as a Type, and in IFrame URL you should provide URL like : https://
webcomcpq.com/mt/default/additionalfiles/MyFolder/MyPage.html

Where MyFolder is a folder where we will upload our files (html, js, css), and MyPage.html our custom page
for displaying data.

Also we need to include knockout.js and jquery.js and reference them in MyPage.html. We can include
bootstrap to make UI looks more native.

All files needs to be uploaded to MyFolder, previously defined. For better organization we can create sub-
folder lib and place all common libraries (such as 'knockout.js', 'jquery.js', 'bootstrap.css..') there.

8.11.4.4 Fetching Additional Data from Server

This procedure shows you how to make the list of hidden attributes display in the Responder.

Procedure

1. Create new IronPython script for listing all product attribute values and name it GetHiddenAttributes.
Those attributes are hidden.

IronPython:

list = []
atrributes = Product.Attributes
for attr in atrributes:
if not attr.ShowInResponder:
for value in attr.Values:
list.append(value.Display)
ApiResponse = ApiResponseFactory.JsonResponse(list);

2. Create new template ResponderView in the Configurator page.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 531
3. Add following content to the ResponderView template:

<script type="text/javascript">
showResult = function (callback)
{
return cpq.server.executeScript("GetHiddenAttributes", {}, callback);
};
cpq.ready(function(){
var model = {
dataArray: ko.observableArray()
};
cpq.events.sub('API:configurator:updated', function(data) {
init = function(serverData) {
for(var i = 0; i < serverData.length; i++)
{
model.dataArray.push(serverData[i]);
}
};
showResult(init);
});
ko.applyBindings(model, document.getElementById("exampleList"));
});
</script>
<div id="exampleList" class="row" data-bind="visible: dataArray">
<strong>Below is some client data</strong>
<ul>
<!-- ko foreach : dataArray -->
<li data-bind="text: $data"></li>
<!-- /ko -->
</ul>
</div>

4. Configure your product and you should see list of hidden attribute values rendered just above the
Responder every time Configurator updates.

SAP CPQ Setup and Administration Guide


532 PUBLIC UI Design
8.11.4.5 How to Download XML File

This procedure shows how you can download XML file that has been generated by global script.

In order to download XML file we need to do following:

1. Create global script for generating XML file.


2. Write custom logic for downloading XML file.

Create global script for generating XML file

The example of global script (name of script, For example, GenerateXML) for generating XML file:

import clr
clr.AddReference('System.Xml')
from System.Xml import XmlDocument
from System.Text import Encoding
from System import DateTime, Random
xmlDoc = XmlDocument();
rootNode = xmlDoc.CreateElement('users');
xmlDoc.AppendChild(rootNode);
userNode = xmlDoc.CreateElement('user');
attribute = xmlDoc.CreateAttribute("age");
attribute.Value = '42';
userNode.Attributes.Append(attribute);
userNode.InnerText = 'John Doe';
rootNode.AppendChild(userNode);
ErrorMsg = None; #get error msg

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 533
file = ApiResponseFactory.FileResponse('text/plain',
Encoding.GetEncoding(1252).GetBytes(xmlDoc.OuterXml),
DateTime.Now.ToString("yyMMdd") + '_Users.xml')
ApiResponse = ApiResponseFactory.JsonResponse({"ErrorMsg": None, "File": file})

Note that we have set ErrorMsg to None, you should use some logic to see if error has happened and assign
message to ErrorMsg

Write Custom Logic for Downloading XML File.

You should create custom template and add button that will trigger script and use cpq global variable to
download XML file.

<button class='btn btn-default' onclick='downloadXML()'>Generate XML</button>


<script>
function downloadXML(e){
cpq.server.executeScript(“GenerateXML”, null, function(data) {
if(data.ErrorMsg){
alert(data.ErrorMsg);
return;
}
var byteArray = new Uint8Array(data.File.Content);
if(window.navigator && window.navigator.msSaveBlob){//if is IE
navigator.msSaveBlob( new Blob([byteArray], {type:'application/xml'}),
data.File.FileName )
} else {
var a = document.createElement("a");
document.body.appendChild(a);
a.href = window.URL.createObjectURL(new Blob([byteArray], { type:
'application/octet-stream' ));;
a.download = data.File.FileName;
a.click();
a.remove();} }); }
</script>
</html>

8.11.5 Server Side Rendering

Server context is accessible by @ in Razor.

The @ sign in templates denotes use of Razor syntax. Razor is a markup syntax for adding server-based code
to web pages. It is a server side markup syntax much like ASP and PHP and supports C# and Visual Basic
programming languages.

Example

XML:

<h1>Hello Razor</h1>
<p>The time is @DateTime.Now</p>

SAP CPQ Setup and Administration Guide


534 PUBLIC UI Design
The page contains ordinary HTML markup, with one addition: the @ marked Razor code. The Razor code does
all the work of determining the current time on the server and display it. You can specify formatting options, or
just display the default.

Razor View Helper Functions

Razor view helper functions are used in responsive template and all templates that we want to see title of
CSHTML file when we are debugging ( F12 in browsers).

Available functions:

● Translation function [page 535]


● PartialWithNameAsComment Function [page 536]
● How to Reuse Custom Templates [page 538]
● Url.MTContent [page 539]

8.11.5.1 Translation function

Translation is a helper function that renders message text on page based on key from appliaction dictionary.
The syntax is: @Translation.Get(key). This function will render message text from dictionary based on
provided key.

Context

We want to add multilanguage support to our template. To do that we need replace our static text with calls to
Translation.Get.

Procedure

1. Create new template:

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 535
2. In your main page add following part:

@Translation.Get("MyKeyFromDictionary")

3. When template renders you should see value from appliaction dictionary for supplied key.

8.11.5.2 PartialWithNameAsComment Function

Function PartialWithNameAsComment renders the specified partial view as an HTML-encoded string and
adds name of file as a comment in html.

Context

Syntax:

@Html.PartialWithNameAsComment(partialViewName)
@Html.PartialWithNameAsComment(partialViewName, model)
@Html.PartialWithNameAsComment(partialViewName, viewData)
@Html.PartialWithNameAsComment(partialViewName, model, viewData)

These functions will render partial view and add name of that source file as a HTML comment.

We want to add custom cshtml template on our main page, but we would also like to see message that from
certain part in our main page begins custom template part. That message will be visible as HTML comment
when debugging our page in browser.

Procedure

1. Create new template.

SAP CPQ Setup and Administration Guide


536 PUBLIC UI Design
2. In your main page add following part:

XML:

@Html.PartialWithNameAsComment("CustomTemplateCF")

3. When debugging main page in browser you should see:

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 537
8.11.5.3 How to Reuse Custom Templates
The purpose of shared template is that we can use it on many places, as part of some other template or as
separate template. So, with this possibility we don't have to write the same code so many times.

Procedure

1. Go to Setup UI Design Responsive Templates and click Add New button.


2. Configure template as shown below.

3. After shared template is created, we can use it within some other template. For example, if we have
template for Catalog page and we want to use some shared template within it, we simply call it with
@html.PartialCustomTemplate("Template_Name") where we want to add that part.

SAP CPQ Setup and Administration Guide


538 PUBLIC UI Design
Results

After naming shared template we will see it as part of Catalog page template when we exit setup. As it is shown
below, the point where is shared template placed matches the point where we call it within the code (on the top
of the page).

8.11.5.4 Url.MTContent

Converts a virtual (relative) to MT folder resource to an application absolute path.

Syntax:

@Url.MTContent(path)

Example

Render image beach.jpg that you previously added to Additional Files folder.

C#:

<img src="@Url.MTContent("additionalfiles/beach.jpg")" />

Some other useful relative MT relative paths:

● Product Images - "/images/productimages/..."


● Category Images - "/images/categoryimages/..."
● Attribute Images - "/images/attributeimages/..."
● Actions - "/images/quoteactions/..."

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 539
● Top Menu - "/images/topmenuicons/..."
● Additional Files - "/additionalfiles/..."

8.11.6 Manage Custom CSS/JS Files with File Manager

Custom CSS or JS files can be uploaded via the File Manager into additional files folder and be used and
referenced in custom templates.

Context

We want to upload JavaScript file on file system and reference that JS file in our custom action template on
Cart page.

Procedure

1. Create and upload your JavaScript file via File Manager into additional files folder.

In our example, JS file is a simple function that shows message in alert box.

SAP CPQ Setup and Administration Guide


540 PUBLIC UI Design
2. Override default template with custom action template and reference previously uploaded script:

XML:

<script src="~/mt/default/additionalfiles/file.js" type="text/javascript"></


script>
<script type="text/html" id="actionsTemplate">
<div data-bind="foreach: $data">
<!-- ko if : $root.displayImagesForCartActions -->
<div class="action-row">
<!-- ko if: id !== 2524 -->
<a href="#">
<span data-bind="text: name, click: execute"></span>&nbsp;<img
data-bind="attr: { src: imageUrl }, visible: imageUrl" />
</a>
<!-- /ko -->
<!-- ko if: id === 2524 -->
<button data-bind="text: name" onclick="window.ShowResult()"></
button>&nbsp;<img data-bind="attr: { src: imageUrl }, visible: imageUrl" />
<!-- /ko -->
</div>
<!-- /ko -->
<!-- ko ifnot : $root.displayImagesForCartActions -->
<div class="button-actions"><button type="button" class="btn btn-
default" data-bind="text: name, click: execute"></button></div>
<!-- /ko -->
</div>
</script>

Observe that src attribute in script html tag represents path to the uploaded script in additional files folder.
Also, ShowResult() is our JS function from uploaded file.
3. Go to Cart page.

You should see button beside your action's name.


4. Click on action and you should see message from your script.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 541
8.11.7 Upgrade Templates to Newer Versions with Newer
Releases

Here is an example of how to use new version of template and upgrade the existing one. When custom
template is used and new version of template appeared with new release, user won't see these modifications
unless he compares them and then upgrades custom template with differences. For this purpose we use
Template versions tab on Responsive UI Template page. Here, we have all versions of some template. Versions
with User System are release's versions and versions with some other user are custom.

After two versions are selected and Compare button is clicked we can see the differences between these two
versions, so than we can use these rows to upgrade our version of template.

SAP CPQ Setup and Administration Guide


542 PUBLIC UI Design
Now, we can edit our custom template, copy these differencies within it if needed and we have to do that
manualy or we can leave template unchanged.

8.12 Customized HTML Templates and Fixes for Breaking


Changes

This section provides best practices for common breaking changes that may occur in SAP CPQ. Currently, this
topic contains customized templates listed per version and the ways in which some of the breaking changes on
SAP CPQ pages may be fixed.

Customized HTML Templates and Tips for Fixing Breaking Changes 2005

The list of all templates that were customized during the development of SAP CPQ, as well as tips for fixing
breaking changes can be found in the UI Design section of SAP CPQ 2005 What's New.

SAP CPQ Setup and Administration Guide


UI Design PUBLIC 543
Customized HTML Templates and Tips for Fixing Breaking Changes 1911

This file contains a list of all templates that were customized during the development of SAP CPQ, as well as
the tips for fixing breaking changes that may have occurred as a result of the customization.

Breaking Changes 1911

Customized HTML Templates 1908

This file contains a list of all templates that were customized during the development of SAP CPQ 1908. No
breaking changes occurred in this release.

Customized HTML Templates 1908

Customized HTML Templates and Tips for Fixing Breaking Changes 1905

This file contains a list of all templates that were customized during the development of SAP CPQ 1905, as well
as the tips for fixing breaking changes that may have occurred as a result of the customization.

Breaking Changes 1905

SAP CPQ Setup and Administration Guide


544 PUBLIC UI Design
9 General Settings

The following topics explain the general settings in SAP CPQ.

Application Parameters [page 545]


The Application Parameters section provides settings that affect how some operations in the system
function. These settings allow companies to configure system operations to their needs.

Deploy / Send Changes [page 563]


The Deploy / Send Changes functionality enables you to send changes made in one SAP CPQ
environment (such as sandbox or test) to another (such as production).

Countries, States and Territories [page 593]

Tabs [page 594]


Tabs are components that help organize information on some of the SAP CPQ pages. You can
customize tabs to display the information best suited to your business needs.

Dictionaries [page 595]


A dictionary in SAP CPQ contains a set of keys and their values that are applicable on tenant level. Keys
are only used in the code to reference key values that are visible in the application and refer mainly to UI
content (button labels, tooltips, etc.).

Manage Generated Documents [page 598]

File Management [page 599]


File Management stores images and files that can be retrieved throughout Setup (when creating
products, categories, and so on).

Communication Links [page 600]

Time Zones [page 602]


If your company has departments in different countries, in different time zones, or simply your users
are scattered around the world, SAP CPQ can be set up SAP CPQ to display information in their own
time zone.

9.1 Application Parameters


The Application Parameters section provides settings that affect how some operations in the system function.
These settings allow companies to configure system operations to their needs.

To access these parameters, go to Setup General Application Parameters .

Application Parameters are separated into following tabs: General Parameters, Users, Product Catalog,
Configurator, Shopping Cart and Quotes, and Bulletin Board.

 Note

Changes made to application parameters are logged in the User Actions tab of the Audit Trail. The following
information is logged in the Action column: Application parameter changed.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 545
General Parameters

The following list explains the parameters in the General Parameters tab.

● DB Version: defines the current database version.


● Default Country: defines the country used in the system.
● Initially show only active products in administration's product list: includes only active products when set to
TRUE.
● When users enter several words in search box, SAP CPQ will find products based on each entered word
(instead of searching based on entire phrase) : regulates how SAP CPQ filters products.
● Do not email login details to users created by admin: defines whether a new User created by the SAP CPQ
admin receives an email notification with login details.
● Default login remember preference: defines which User login details are remembered.
● IIn Reverse Search, Sort Attribute Values By: enables the sorting of attribute values in reverse search by
rank (Attribute Value Sort Rank), Id (Product Attribute Value Id), or by the catalog code length/catalog
code content (As In V5).
● From Email Address: defines the email address used to contact administration, notify the SAP CPQ admin
about new user registration and email order confirmation.
● Shop SMTP Mail Server: indicates the name (DNS Name or IP) of the mail server that the system uses to
send out emails.
● Sender Email Name: defines the name that appears in email headers as the sender.
● Sender Email Address: defines the email address that appears in email headers as the sender's email.
● Reply-to / Return-Path Email Name: defines the name that appears in email headers as the Reply-to name.
● Reply-to / Return-Path Email Address: defines the name that appears in email headers as the Reply-to
email.
● Show Reverse Search: controls whether the Description/Part Number search functionality is displayed.
When set to TRUE, the functionality is displayed.
● Secure Site for License Purchasing: defines the URL of a web page that is secure for license purchasing.
● Unique Product Codes: determines whether product codes are unique.
● Unit of Measurement: indicates the unit used to measure weight in the system. The choices are GRAMS,
LBS and KGS.
● Try Formatting Report File: compares report Excel file columns and formats their content accordingly
(decimals, date/time), depending on their numerical pattern. It does not format string content.
● Try Formatting CSV Product Export Files: determines whether SAP CPQ arranges the Product Export File
content into columns.
● Export All Custom Table Data as Strings by Default: determines whether SAP CPQ exports all custom table
data and formats the table content. When set to TRUE, all data is treated as a string. For example, enabling
this parameter resolves the problem of leading zeroes being removed from spreadsheet files.
● Available actions for Inactive Revisions: determines whether actions are available either for active or
inactive revision. When Based on status of ACTIVE revision, actions are available only for active revisions.
When Based on status of EACH revision, actions are available for inactive revisions as well.
● Admin to receive PDA quote link: determines whether administrators receive an email notification
containing a list of all approvers for the Quote and their PDA approval links.
● Enable ResponsAbility Integration: enables Users to integrate with Workflow.
● Users who are able to change Effective date when selecting products are: determines which Users are able
to change the start and end dates when selecting products.
● Use recurring price and cost: determines whether recurring price and cost fields are displayed. For more
details, see the Recurring and Non-Recurring Prices section.

SAP CPQ Setup and Administration Guide


546 PUBLIC General Settings
● Allow processing of document generation tag formulas with Cost field: if set to False, document generation
tags with formulas referencing the Cost field from the quote are not processed in the output of parsable
attachments enclosed within email notifications.
● Users can only select project for the quote, not create new project: determines whether Users can only
select existing projects or create new ones. When set to TRUE, Users can only select existing projects, but
not define new projects. When set to FALSE, Users can create new projects.
● Users are able to create product favorites: determines whether Users can create product favorites. If the
parameter is set to TRUE, Users are able to create product favorites.
● Show lead/prompting arrows (catalog, configurator, shopping cart, document generation): indicates
whether breadcrumbs that track the User’s trail pop up in the Catalog, Configurator, Cart and document
generation. Users can click each item on the breadcrumbs trail to jump back and forth.
● Show effective dates for price book entries: displays effective start and end dates of price book entries
when set to TRUE. Effective dates may be different for Price books carrying the same identificators,
including their part number and code.
● Audit Trail for Pricebooks: if set to Audit Disabled, changes performed on pricebooks will not be logged in
Audit Trail Pricebooks . On tenants with exceedingly large pricebooks, performance may be slow
when updating pricebooks due to the size of the pricebook or the update. Disabling this parameter can
improve the performance in this scenario. The parameter is set to Audit Enabled by default.
● URL for PULL web service when retrieving assets: enables admins to enter a URL that enables Users to
retrieve assets or XML files required for configuring products.
● Show progress information to users when adding items to quote: defines whether Users receive a report on
their progress when they add items to Quote.
● Show progress information to users when sending data to CRM: defines whether Users receive a report on
their progress when they send data to CRM.
● Show progress information to users when arriving from CRM: defines whether Users receive a report on
their progress when they arrive from CRM.
● Display List Of Recent Items To Users: defines whether Users can view a list of their recent items. The list
appears on the left-hand side.
● Display products in Recent Items: defines whether recently used products are included in the List of Recent
Items.
● Display categories in Recent Items: defines whether recently used categories are included in the List of
Recent Items.
● Display generated documents in Recent Items: defines whether recently generated documents are included
in the List of Recent Items.
● Display quotes in Recent Items: defines whether recently created/used quotes are included in the List of
Recent Items.
● Ignore Standard CRM Mappings: defines whether SAP CPQ ignores standard CRM Mappings. When set to
TRUE, SAP CPQ ignores standard CRM Mappings and creates mappings through IronPython scripts
instead. When set to FALSE, standard CRM mappings override any script in the system.
● Display table for simple product rules: defines whether SAP CPQ displays a table for setting attribute
dependency rules in simple product administration.
● Show Allow Option for Simple product rules: defines whether Users have the option to allow a previously
disallowed attribute dependency rule.
● Use Badgeville Integration: enables Users to use the Badgeville integration.
● Badgeville URL: enables admins to enter the Badgeville URL that Users need to use for the Badgeville
integration (Production, Test or Sandbox).
● Badgeville Private Key: enables admins to enter the Badgeville private key used for API calls.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 547
● Badgeville Public Key: enables admins to enter the Badgeville public key used to access widgets in the
Badgeville integration.
● Badgeville Website: enables admins to enter the Badgeville website that acts as a domain for a group of
Users.
● Copy Opportunity Id On New Revision: defines whether SAP CPQ copies the Opportunity Id on each new
revision of the Quote. When set to FALSE, SAP CPQ creates a new Quote without the Opportunity Id.
● Always reset filters on LoadQuote: defines whether existing quote search filters are reset on each new
session. When set to FALSE, SAP CPQ does not save quote search filters for the next session.
● Allowed Content File Extensions: once administrators enter all file extensions they wish to whitelist in the
parameter field, they will enable uploading with these file extensions in File Management. Upload of other
file extensions cannot be performed.
● Enable security check for excel files: when enabled, it activates the security check for Excel files uploaded in
the Documents tab on quotes. The Excel file is checked if its extensions are .xlsx, .xls, .xltx, and .xlt.
● Use responsive GUI: enables Users to work on a responsive GUI platform.
● Responsive GUI per user: enables individual Users to switch to a responsive GUI platform. When set to
FALSE, Users use the GUI set by the Use responsive GUI parameter.
● Unique Company Code: defines whether Users can only add companies with a unique company code.
When set to FALSE, added companies do not need to have a unique company code.
● URLs that may Embed CPQ: defines URLs that may embed SAP CPQ using <frame>, <iframe>, <object>,
<embed> and <applet>. If the parameter is empty or * is entered, embedding is allowed for all URLs. To
prohibit embedding on all URLs, there should be ‘none’ in the parameter. Also, embedding is disabled if
there is an incorrect URL in the parameter. Administrators should set trusted domains through the
application parameter to prevent framing from other domains. The value of the parameter must be the
exact URL on which SAP CPQ is opened in another application.
● Disable timezone conversion for date field: prevents date-only fields from displaying different values to
users from different timezones.
● Set boundary for two-digit year resolving: enter the parameter value in the form of a two-digit number, so
that the system assumes the first two digits of a year entered in the two-digit format to be “19” (if the two-
digit year is larger than the pa
● Check For 5-digit Zip Code Number For Customers (USA format): determines whether Users need to enter
a 5-digit zip code number in the Bill To Details table on the Customer Info page in order to save the page.
When set to NO, SAP CPQ allows Users to enter another digit format and save the page.
● Use End User Role: determines whether the end user role is used or not.
● Fill BILL TO and SHIP TO data with default values: determines whether the Bill To and Ship To fields are filled
in with default values.
● Password Validity Period: The number administrators provide here determines for how many days a
password is valid for users after they change or create them. The default value of the parameter is 0, and if
this value isn’t changed, the password validity period is unlimited.
● Max Number of Days Before Password Expiration Warning is Shown: specifies the number of days before
Users receive a warning that their password needs to be changed. Password expiration is set for each User
in the User/Groups drop-down menu. See the chapter on Users for more information.
● User Can Change Global Customers’ Data: determines whether Users can modify global customer data.
When set to NO, only administrators can change the data.
● When determining permission groups based on market, use Quote selected market if available: defines
whether SAP CPQ uses the Quote-selected market. If the Quote-selected market is not available, SAP CPQ
uses the default market the User chose on the User Page. When set to FALSE, SSAP CPQ pulls the User’s
default market.

SAP CPQ Setup and Administration Guide


548 PUBLIC General Settings
● Send email to user when password is changed: if set to TRUE, which is the default value, users whose
password is changed will get an email informing them about the password change. This behavior applies
whether the password is changed in the application or via the API.
● Set boundary for two-digit year resolving: enter the parameter value in the form of a two-digit number, so
that the system assumes the first two digits of a year entered in the two-digit format to be “19” (if the two-
digit year is larger than the parameter value) or “20” (if the two-digit year is smaller than the parameter
value). If no values are entered for this parameter, the boundary for resolving two-digit years is “99” by
default.
● Hide Obsolete Features: hides the classic User Import functionality and the parameters which are not
supported by the responsive design. Refer to this page for more information on obsolete features.
● Allowed origins for the CORS filter: when one or more domains are entered in this field, only the API calls
originating from those domains are allowed. In all existing tenants, the preset value of this field will be *,
indicating that all API calls are allowed. In all new tenants, the preset value of this field will be the URL
address of that tenant, indicating that only API calls originating from that tenant are allowed.
To integrate SAP CPQ with other applications, if the parameter is not set to *, it is necessary to fill out the
field with both the URL of your tenant, and the URLs of the integrated applications to enable API
communication. Values are separated with a ;.
● Check permissions for pre/post actions: If set to Yes, the system checks user's permissions for pre and
post actions and executes them accordingly. If set to No, all pre and post actions are executed without
checking the user's permissions.
● Hide "From" Email Address and "Name" from the Generated Document Email Form: If this parameter is set
to TRUE, the From and Name fields will not be visible in SAP CPQ in the email form in the last step of
document generation. However, the email received displays the from email address and the name (the
email is retrieved from the From Email Address application parameter and the name belongs to the user
sending the proposal).

Users

The following list explains the parameters in the Users tab.

● Check For 5-digit Zip Code Number For Customers (USA format): determines whether Users need to enter
a 5-digit zip code number in the Bill To Details table on the Customer Info page in order to save the page.
When set to NO, SAP CPQ allows Users to enter another digit format and save the page.
● Validity Period for Password Creation Token: The number administrators provide here determines for how
many hours the URL for password creation sent to a newly created user’s email address is valid.
● Use End User Role: determines whether the end user role is used or not.
● Fill BILL TO and SHIP TO data with default values: determines whether the Bill To and Ship To fields are filled
in with default values.
● If the User Changes the Password It Will be Valid Another: specifies the number of days left until the
password expiration date.
● Max Number of Days Before Password Expiration Warning is Shown: specifies the number of days before
Users receive a warning that their password needs to be changed. Password expiration is set for each User
in the User/Groups drop-down menu. See the chapter on Users for more information.
● User Can Change Global Customers’ Data: determines whether Users can modify global customer data.
When set to NO, only administrators can change the data.
● When determining permission groups based on market, use Quote selected market if available: defines
whether SAP CPQ uses the Quote-selected market. If the Quote-selected market is not available, SAP CPQ

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 549
uses the default market the User chose on the User Page. When set to FALSE, SAP CPQ pulls the User’s
default market.
● Send email to user when password is changed: if set to TRUE, which is the default value, users whose
password is changed will get an email informing them about the password change. This behavior applies
whether the password is changed in the application or via the API.

Product Catalog

The following list explains the parameters in the Product Catalog tab.

● Allow Comparing In Catalog: enables Users to compare products in the Catalog.


● Allow Paging In Catalog: defines whether products are divided into page sections with a minimum of 5
products per page and a maximum of 100 per page. When set to FALSE, all products within a category are
grouped on one page.
● Allow view details for simple products in catalogue: enables administrators to specify the way product
details are shown in the Catalog.
● Attribute comparation display option: enables administrators to permit Users to compare various attributes
and Attribute Values in products.
● Catalog Loading Simple Products: optimizes the loading time of simple products. When set to FAST, the
loading time is the shortest. If a formula is used in product price or product description, it is not parsed.
Provided that no base price is defined, Users see the formula expression and 0 (zero), respectively. The
following example illustrates this point.
● Hide product price in catalogue (classic design): If set to Yes, product price isn’t displayed in the Catalog in
the classic design.

Example

A sample product “Warranty” with product code “Warr-1-yrs-extended” has its description defined this way:

Discount factor: <* TABLE ( SELECT Discount FROM contracts WHERE contract_name =
'Contract 12073' ) *> <br/>
* Visitor name: <* VisitorName *> <br/>
* Product code: <* ProductCode *>

Its price is defined as a formula:

<*Eval(100*<* TABLE ( SELECT Discount FROM contracts WHERE contract_name =


'Contract 12073' ) *>)*>

The base price is not defined.

SAP CPQ Setup and Administration Guide


550 PUBLIC General Settings
When set to WITH PARSING, formulas are parsed but no product detail is loaded. If the formula contains any
product detail tag, the product detail is not retrieved even though the tag itself is parsed.

In the example, both product description and price are parsed, but product code is not retrieved and therefore
is not displayed.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 551
When set to WITH DETAIL PARSING, it instructs SAP CPQ to load product details as well, so any product detail
tag is parsed along with other formulas. With this parameter value, the sample product is displayed within the
Catalog.

SAP CPQ Setup and Administration Guide


552 PUBLIC General Settings
When set to WITH FULL DETAIL NO RULES PARSING, it instructs SAP CPQ to load all the details related to the
product except rules.

To demonstrate this option, the product “Warranty” is modified by adding the attribute “Payment”. This
attribute has two values — “semiannually” and “annually”, with their prices $30 and $50, respectively. The
pricing formula is modified as well. It now reads the attribute price and sets it as a product price. The pricing
formula is:

<*PRICE(Payment)*>

In addition, a rule which selects the attribute value is defined, so the pricing formula picks the selected
attribute value and assigns it as a product price. The rule condition is:
1

The rule action is:

<*SELECTVALUES(Payment:2)*>

Since this option does not parse rules, the product price is 0 (zero).

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 553
When set to WITH FULL DETAIL PARSING, it instructs SAP CPQ to load and execute product rules. To
demonstrate, the very same product used for the previous option is used again, but this time, the price is
calculated and applied to the product because product rules are executed.

SAP CPQ Setup and Administration Guide


554 PUBLIC General Settings
● Catalog Loading Configurable Products: optimizes the loading time of configurable products. When set to
any value other than FAST, a product price and the Add to quote checkbox are shown in the Catalog. This
way it is possible to add several configurable products at once in the Quote. When set to FAST, the
configuration state is unknown and assumed to be incomplete, so no prices are shown. In addition, when
Guided Selling Product Search results are shown, if Guided Selling Product configuration applied to a
catalogue product makes it complete, price and Add to quote will appear. Price parsing and calculations for
the Guided Selling Product results are controlled by the Catalog Loading Attribute Based Search.
● Use Default Image: determines whether a default image is shown for products. The default image is
assigned to products that do not have an image.
● Default Product Image Name: specifies the name of the file used as the default product image. This image
file must exist in SAP CPQ’s images folder.
● Display Products Above Subcategories: takes Users directly to the Products page and skips subcategories.
● Show Quantity in Catalogue: enables Users to set quantity in the Catalog. When set to TRUE, products
have an input field for quantity. When Users select the Add to Quote check box, the quantity is 1 by default.
By entering quantity in the Catalog, the Add to Quote box is automatically selected.
● Show customize button for simple products: removes blank space in simple products. If there are no
configurable products, the Customize button is hidden.
● Hide categories within the catalog when tree navigation is available: defines whether the Catalog is visible
on the User side. When set to FALSE, the Catalog is visible.
● When users press 'Add Item' in quote, it will take them to the top catalog category: defines whether Users
are transferred to the root catalog category when they click Add Item in the Quote. When set to FALSE,
Users are redirected to the last category that was visited in the Catalog.
● Always reset filters in catalog: defines whether SAP CPQ sets filters (description search, part number
search) defined during the previous session. When set to FALSE, SAP CPQ sets description search by
default.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 555
● Remain in Catalog after adding product to the quote: determines whether Users remain in Catalog after
adding a product to Quote. When set to FALSE, Users are directed to the Quote.
● Show product image within the Quote summary in Catalog: defines whether the image of the product
added to Quote pops up in Summary.
● Show icon within the Quote summary in Catalog to clarify whether product is already in the Quote: defines
whether SAP CPQ displays a small orange-colored cart icon in the Summary window when a product is
already in the Quote. Note that this parameter is valid only when the Remain in Catalog after adding
product to the quote parameter is set to TRUE.
● Disable category rank sort for categories having more than: allows administrators to disable the rank sort
in categories, depending on the number of products they contain. When set to 1000, categories containing
more than 1000 products do not display the rank sort.

Configurator

The following list explains the parameters in the Configurator tab.

● Attribute Values per Page: defines the number of attribute values that are displayed in Product Attributes. If
the number of available attributes exceeds this number, SAP CPQ creates a new page under the Attribute
Values screen.
● Configurator Columns: enables administrators to enter the number of columns the Configurator needs to
contain.
● Do Not Recycle Sequence: determines whether a sequence starts over once the last number is generated.
When set to TRUE, an error displays when the product code is generated.
● Image Attributes Show Labels: defines whether SAP CPQ displays an image attribute label in the
Configurator.
● Max Column Count for Image Attributes: enables administrators to enter the maximum number of columns
that are taken up by image attributes. The value is 3 by default. If administrators leave the field blank or
enter 0 and 1, the default value of 3 columns is applied.
● Missing Attribute Image: refers to the attributes set up to be displayed as images. The missing attribute
image is displayed if the image for that attribute is unavailable. This image file must exist in SAP CPQ’s
images folder.
● Responder (right) Area Width: enables administrators to determine the area width of the responder.
● Request Transfer to Item in Configurator: determines whether items are transferred in the Configurator.
● Show quantity in responder: determines whether the quantity of each product is shown in the responder.
● Show product configuration template: defines whether SAP CPQ displays the product configuration
template in the Configurator.
● Show Attribute Prices within Configurator: determines whether attribute prices are displayed to Users
during configuration. Prices are displayed in brackets next to each attribute value. When set to Simple,
each attribute value has a price displayed next to it. When set to Relative, prices of the sibling attribute
values are shown relative to the price of the selected value.
● Configurator Lock Period: contains the number of minutes during which the item actions Delete, Edit, Copy,
Refresh and Upgrade to New Product Version are locked for user B while the user A is already working on
the quote. This parameter is relevant only for the parallel work on quotes in the Quote 2.0 engine.
● Visual Style (Responder): determines the default responder styles that Users see. Administrators can
override these selections by choosing a new style in the User Groups administrative section.
● Show dissallowed attributes in configurator: defines whether SAP CPQ displays disallowed attributes in the
Configurator.

SAP CPQ Setup and Administration Guide


556 PUBLIC General Settings
● Allow attribute value to be listed as line item even if its extended price is zero (default behavior): enables
Users to list attribute values as line items, even if their extended price is zero.
● ResponsAbility encript key: enables administrators to enter the ResponsAbility encrypt key that appears in
the Configurator.
● ResponsAbility tenant: enables administrators to enter the ResponsAbility tenant that appears in the
Configurator.
● ResponsAbility URL: enables administrators to enter the ResponsAbility URL that appears in the
Configurator.
● ResponsAbility Username: enables administrators to enter the ResponsAbility username that appears in
the Configurator.
● ResponsAbility Password: enables administrators to enter the ResponsAbility password that appears in the
Configurator.
● Show processing icon in configuration, quote and catalog: defines whether a processing icon appears in
configuration, Quote and Catalog to indicate that SAP CPQ is executing the selected action.
● Execute rules in child products (found in attribute container) when adding parent product to the quote:
defines whether SAP CPQ executes rules in child products when Users add parent products to the Quote.
● Show Next and Previous buttons in product configuration: defines whether SAP CPQSAP CPQ displays Next
and Previous buttons in product configuration.
● Show Next button in Product when only one tab is displayed: defines whether SAP CPQ displays a Next
button in product configuration when only one tab is displayed.
● Execute triggers when uploading attribute file attachment with the same name: defines whether SAP CPQ
executes a trigger event when uploading a new attribute file attachment with the same name as the
previous attachment.
● Display child item total price in parent item price breakdown: This parameter is by default set to TRUE.
When a parent-child configuration is opened and the user clicks on a parent item in the Configuration
Tree, the price displayed for the child item in the Configuration Summary will be the total price of
the child item including the price of its child items, instead of only the total price of the child item.
Additionally, if the parameter is enabled, a new CTX tag <* TotalPriceWithChildItems *> becomes
available, used for retrieving the total price of the product together with the total price of each of that
product’s child items. 
● Allow attribute propagation when attribute is disallowed: If set to Yes, attribute values are propagated from
parent to child even if the attribute is disallowed.

Shopping Cart and Quotes

The following list explains the parameters in the Shopping Cart and Quotes tab.

● When updating quote item, reapply default discount/multiplier: defines whether SAP CPQ reapplies the
default discount/multiplier each time a Quote is updated. When set to FALSE, Users can change the
multiplier in the Quote and save the change. Note that you need to set the appropriate Visual Style for the
multiplier to appear in the Quote.
● Allow Edit List Price on the Cart: determines the conditions under which the List Price is editable in the
Quote. When Users make adjustments in the Cart Fields Administration, they can set this parameter to one
of the four available values.
● Allow Edit Cost on the Cart: enables Users to edit the Cost field in the Quote, provided the field is made
editable in the Cart administration.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 557
● When item’s cost is edited in the quote, upon changing item’s configuration, cost will be recalculated: defines
whether SAP CPQ disregards Users’ edits of the Cost field value in the Quote and calculates a new value
based on the configuration changes. When set to FALSE, SAP CPQ does not retain Users’ manual edits of
the field value following the configuration changes and keeps the value defined in the Setup.
● Always Refresh List Price on Reconfigure: defines whether SAP CPQ disregards Users’ edits of the List Price
field value in the Quote and calculates a new value based on configuration changes (configuration changes
trigger list price formula recalculations). When set to NO, SAP CPQ does not retain Users’ manual edits of
the field value following the configuration changes and keeps the value defined in the Setup.
● Allow Reordering Items in a Cart: allows Users to reorder items in the Cart. When ALLOW PRODUCT
SORTING is set, Users can reorder main and line items. When ONLY ALLOW MAIN ITEM SORTING is set,
Users can only reorder the main items.
● Auto reconfigure cart: defines whether the Cart is reconfigured. When set to YES, the Cart is reconfigured
when the Ship To info is changed.
● Calculate Auto-Reconfigure only items with modified ItemQuantity attribute: defines whether SAP CPQ
automatically reconfigures only those items whose item quantity Attribute Value is changed.
● Owner of a Copied Quote will be: enables administrators to define the owner of the copied Quote – the
Owner of the Original Quote or the User that Made a Copy.
● Default Visual Style (Shopping Cart/Quote): determines the default styles Users see.
● Generate PDF: determines whether a PDF is generated during Quote generation. When set to FALSE, a
DOC file is generated.
● LineItemInfo Propagate Qty From Main Item: propagates quantity only to the first-level children.
● Propagate Quantity to Nested Products: propagates quantity from the main item to all its descendants.
● LineItemInfo User Can Enter Quantity: enables Users to enter the number of individual line items in the
Quote.
● MULTILEVEL System: determines whether an inheritance structure is used in SAP CPQ. When set to
FALSE, user administration, managing parent, approve parent, ordering parent, etc. are disabled. These
options are also removed from the User Definition page.
● My Quotes Tab Name: contains the tab name that replaces the My Quotes name set by default.
● Other Quotes Tab Name: contains the desired tab name that replaces the Other Quotes name set by
default.
● Shipping is Required: ensures that every Quote includes shipping.
● After setting optional, variant and alternative items CPQ should recalculate quote custom fields: defines
whether SAP CPQ recalculates the Quote Custom Field formulas when Users classify items as optional,
variant and alternative.
● Quantity Sign: enables administrators to select if the value entered in the Quantity field is ONLY NON-
NEGATIVE, ONLY POSITIVE or POSITIVE AND NEGATIVE.
● Visual Style: determines the default styles Users see for specific sections. Administrators can override
these selections by choosing a new style in the User Groups section.
● Waiting For Approval Tab Name: enables administrators to enter another name for the Waiting for Approval
tab.
● Action ‘Send Quote Xml’ sends quote xml under the name: specifies the template for the XML document
name that is sent to the FTP server.
● When action 'Send Quote Xml' is executed, send xml to Http Address: contains the HTTP address to which
an XML document is sent.
● When action 'Send Quote Xml' is executed, send xml to FTP Address: contains the FTP address to which an
XML document is sent.
● Ftp Path: contains the path SAP CPQ uses to execute transfers to the FTP server.

SAP CPQ Setup and Administration Guide


558 PUBLIC General Settings
● Ftp Username: contains the username used to gain access to the File Transfer Protocol.
● Ftp Password: contains the password used to gain access to the File Transfer Protocol.
● Action ‘Send BOM Xml’ sends quote xml under the name: specifies a template for the XML document name
that is sent to the FTP server.
● When action 'Send BOM Xml' is executed, send xml to Http Address: contains the HTTP address to which an
XML document is sent.
● When action 'Send BOM Xml' is executed, send xml to Ftp Address: contains the FTP address to which an
XML document is sent.
● When Creating Quotes through API, shipping method is required: defines whether Users creating Quotes
through API have to include a shipping method.
● When Creating Quotes through API, customer roles are required: defines whether Users creating Quotes
through API have to include customer roles.
● When Creating Quotes through API, do NOT require customer's StateAbbrev: defines whether Users
creating Quotes via API have to include customers’ state abbreviation. When set to NO, Users have to enter
the state abbreviation input node.
● When Creating Quotes through API, do NOT require customer's First Name: defines whether Users creating
Quotes via API have to include customers’ first name. When set to NO, Users have to enter the first name
input node.
● When Creating Quotes through API, do NOT require customer's Last Name: defines whether Users creating
Quotes via API have to include customers’ last name. When set to NO, Users have to enter the last name
input node.
● When Creating Quotes through API, do NOT require customer's Email: defines whether Users creating
Quotes via API have to include customers’ email. When set to NO, Users have to enter the email input node.
● Cart currency rounding error fix option: controls the rounding of items in the Quote and their sum. When set
to either None or Fix Items, the prices are rounded to the nearest whole number.
● Apply Taxes on Shipping: defines whether taxes are applied to shipping.
● Roll-Up Cart Items: enables an additional numbering scheme for items which support roll-up.
● Include child items set as 'Optional' in Rolled-Up price and cost calculations: determines whether SAP CPQ
includes optional child items in rolled-up price and cost calculations.
● Display Item Type column: defines whether the Quote includes the Item Type column. Line items are
optional, variant or alternative.
● Place order email Subject: displays the email subject of the order.
● Place order “From” email address: displays the default email address from which the order is sent.
● Override Default Place Order Email: defines whether SAP CPQ overrides the default order email address.
● Go to customer info tab when arrives from Sales Force even if customers are already mapped: directs Users
to the Customer Info tab when they arrive from Salesforce. In addition, the parameter enables Users to
check if mappings are properly conducted and to change data if required.
● Copy Opportunity Info on Copy Quote: defines whether SAP CPQ also copies the Opportunity info when
copying the Quote.
● Time out limit for inactive users in simultaneous work: imposes the time limit on Users working
simultaneously on one Quote. If Users do not work on the Quote and do not exit the Quote within the time
frame set by this limit, SAP CPQ considers the Users as no longer working on the Quote. As a result, the
names of these Users are not included in the message that notifies other Users of simultaneous work.
● Alert users about simultaneous work on the same quote: defines how Users working on the same Quote at
the same time are notified that others are working on that Quote.
● Display Quote Tabs as Read-Only: defines whether Users can only read Quote tabs. When set to NO, Users
can make changes to Quote tabs.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 559
● Generate Notification Attachments as PDF: enables Users to attach only PDF documents to generated
notifications. When set to NO, Users can attach other document formats.
● Optimize queries for customers and other users quotes: speeds up the loading of the customer lookup page
(the Shipping Info tab) and/or Other Quotes tab (Load Quote). When set to YES, only the first two pages
are loaded.
● Discount rules for parent items in the quote will be applied on: enables administrators to select which fields
are affected by the formulas for calculating discounts in parent items in the parent-child configurations.
● Allow only one promotion per quote: enables Users to place only one promotion per Quote. When set to NO,
Users can place more than one promotion per Quote.
● Enable product search by part number in ‘Add Products’ section of the quote: defines whether Users can
search products by part number in the Add Products section of the Quote.
● Enable product search by product name in ‘Add Products’ section of the quote: defines whether Users can
search products by name in the Add Products section of the Quote.
● Enable product search by product name and description in ‘Add Products’ section of the quote: defines
whether Users can search products by name and description in the Add Products section of the Quote.
● Show Part Number as part of product search results in ‘Add Products’ section of the quote: defines whether
SAP CPQ displays a product’s part number as a part of the product search results in the Add Products
section of the Quote.
● Show Product Name as part of product search results in ‘Add Products’ section of the quote: defines
whether SAP CPQ displays a product’s name as a part of the product search results in the Add Products
section of the Quote.
● Show Product Description as part of product search results in ‘Add Products’ section of the quote: defines
whether SAP CPQ displays a product’s description as a part of the product search results in the Add
Products section of the Quote.
● Product Search On The Quote Can Find Configurable Products: defines whether SAP CPQ finds configurable
products when searching for products in the Quote Products Search.
● Product Search On The Quote Can Find Product Favorites: defines whether SAP CPQ finds product
Favorites when Users search for products in the Quote Products Search.
● Define prefix for generated document name: enables administrators to define the name prefix of the
document generated by SAP CPQ.
● Define suffix for generated document name: enables administrators to define the name suffix that appears
by default on generated documents.
● Name of the Document Template to be automatically generated (custom action): enables administrators to
enter the name of the Document Template that is automatically generated.
● Share document customizations: enables administrators to share all customizations during Quote
document generation among all Users for each Quote. When set to FALSE, all customizations are stored
only for the User making these customizations. If multiple Users work on one Quote, customizations are
saved only for each individual User. Users working on one Quote cannot see each other’s customizations.
When set to TRUE, customizations are shared between all Users.
● Display floating widget for Customize template page: defines whether SAP CPQ displays a floating widget
for the Customize template page.
● Display actions for Customize template page on the bottom of the page: defines whether SAP CPQ shows
actions for the Customize template page at the bottom of the page.
● Upload Project Summary Template (xls file): enables administrators to upload a project summary template.
● Quotes For Project Approval and Change Of Status Action: enables administrators to choose which Quotes
are identified for Project Approval and Change of Status Action.

SAP CPQ Setup and Administration Guide


560 PUBLIC General Settings
● Include Change Status Action With Submit Project For Approval: defines whether the Change Status action
is included when a project is submitted for approval. When set to Combined (Default), the Change Status
Action is included with the Submit Project for Approval.
● Reset Quote Expiration Date on New Revision: defines whether SAP CPQ resets the existing value of the
Quote expiration date on each new revision.
● Save quote custom fields values when changing tabs: defines whether values entered in quote custom
fields are saved when the user changes tabs.
● Reconfigure products during document generation: enables SAP CPQ to collect the latest product and
configuration data so that the data can be used during document generation.
● Users can see previously generated documents: defines whether Users can see documents that were
previously generated in the Quote.
● Allow users to download documents that have been generated for templates that have been deleted: defines
whether Users can download documents generated for templates that have been deleted.
● Allow users to download documents that have been generated prior to CPQ 2012 January release: defines
whether Users can download documents generated prior to the January 2012 release.
● When List price is zero, discount will be set to zero: defines whether SAP CPQ sets the discount to zero
when the list price is set to zero.
● When quote is copied, new quote items will keep same identifiers(guid) as original quote: defines whether
new Quote items retain identifiers (guid) of the original Quote when the Quote is copied.
● Display quote number and customer name in the quote header: defines whether SAP CPQ displays the
Quote number and customer name in the Quote header.
● SAP Export XML template: enables admins to select a template used during the export of a SAP CPQ Quote
to SAP.
● Show copy item, delete item and refresh item actions for child products in the quote for Parent/Child System
Products: defines whether SAP CPQ displays these actions for child products in the Quote for Parent/Child
System Products.
● Populate customer role with company info based on company/customer code: defines whether SAP CPQ
fills out the customer role field with company info based on the company/customer code info.
● Automatically save quote on custom field change: defines whether the quote is automatically saved every
time a custom field is changed.
● Automatically save Cart Comment on clicking outside that field: if enabled, changes made in the Cart
Comment quote field are automatically saved after the user clicks outside that field.
● Hide Transparent Background for IE8: defines whether SAP CPQ hides the transparent background for the
IE8 browser.
● Send automatic notification when quote is reassigned: defines whether SAP CPQ sends an automatic
notification each time the Quote is reassigned.
● Enable quote custom field calculation ranking: defines whether SAP CPQ conducts a Quote custom field
calculation. This is done in the order of a hierarchical sequence of the custom fields determined by the
User.
● Fire event “Quote custom field change” only on changes performed by user: determines whether the Quote
custom field change action is triggered only when Users make changes in the Quote. When set to FALSE,
the Quote custom field change is triggered by a script.
● Postcode lookup type: enables Users to use a postcode lookup software to search for a postcode.
● International postcode anywhere WS URL: specifies the URL Users can use to search for the required
postcode.
● Postcode anywhere account code: specifies the account code which enables Users to use the international
postcode anywhere.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 561
● Postcode anywhere license key: specifies the license key which enables Users to use the international
postcode anywhere.
● Display Quotes In Last Days: shows all Quotes created within a specified number of preceding days set by
the administrator.
● Show both user quotes and other quotes on the 'Other Quotes' Tab: determines whether SAP CPQ displays
user Quotes and other Quotes in the Other Quotes tab.
● Inherit Only Product Type: determines whether child items inherit their product type from their parent and
whether line items inherit their product type from the main item.
● Use Additional Logging For Email Notification: enables administrators to track the status of email
notifications in the log.
● Heading style used in generated documents: allows administrators to control the heading styles used in the
document. Selecting Use destination styles applies the heading style of the first section to all sections.
Selecting Keep source formatting allows each section to maintain its individual heading style. If Sections
will inherit formatting (header,footer etc.) from first section in the template is active in Setup
Document Generation Templates Edit (a multisection template) Sections , and Keep source
formatting is the selected value for this parameter, sections of the document inherit header and footer
formatting from the first section of the template, but keep their own individual heading styles. This
parameter is available only for the new document generation engine.
● Type of break used in generated documents: allows administrators to override the default breaks between
the sections of the document and to apply the selected type of break instead. Administrators can choose
between the following breaks: Paragraph break, Page break, Column break, Section break continuous,
Section break new column, Section break new page, Section break even page, Section break odd page, Line
break. This parameter is available only for the new document generation engine.
● Allow saving custom fields if Save Quote is disabled: if this parameter is set to FALSE (which is the default
value) and the Save Quote action is disabled in the workflow, the Save and Continue actions are no longer
available in quote tabs (such as Additional Information and Customer Info). If the parameter is set to TRUE,
the Save and Continue actions remain available in quote tabs and custom field changes can be saved when
Save Quote is disabled in the workflow.
● Don't copy ship-to custom fields on quote copy: If users copy a quote when this parameter is set to Yes,
ship-to custom fields aren’t copied to the new quote.
● Execute pre/post actions on quote copy: If users copy a quote when this parameter is set to Yes, pre and
post actions attached to the Copy action are executed.
● Set margin health image and color based on Rolled Up Gross Margin: If set to No, the margin health image
and color are based on Manufactures Gross Margin.
● Optimize product type calculations on adding items to quote: If set to Yes, product type calculations are
optimized for a better performance.
● Enable Quote Expiration only after expiration date ends: If set to Yes, the Quote Expiration action is enabled
only after the expiration date ends. If set to No, the action is available when there is less than a day before
the expiration date ends.
● Allow adding configurable products to quote from quick search: If set to Yes, users can add configurable
products to quote directly from the quick search.

Bulletin Board

The following list explains the parameters in the Bulletin Board tab.

SAP CPQ Setup and Administration Guide


562 PUBLIC General Settings
● Use Bulletin board: determines whether the Bulletin board is available to Users.
● Display forum types: restricts access to certain forum types. Administrator restricts access to certain
forum types by deselecting these types from the list.

Defining Application Parameters

The difference between application parameters, Line Item Info Propagate Qty From Main Item and Propagate
Quantity to Nested Products: the difference is in the number of levels that quantity is propagated. The first
parameter, Line Item Info Propagate Qty From Main Item, will propagate quantity only to its children on the first
level, while Propagate Quantity to Nested Products will propagate quantity from main item to all of its
descendants, that is too all levels below. Take a look at the following figure below to see what application
parameters we are referring to.

9.2 Deploy / Send Changes

The Deploy / Send Changes functionality enables you to send changes made in one SAP CPQ environment
(such as sandbox or test) to another (such as production).

For example, imagine that you made several changes to a product in your sandbox environment (for instance,
you added formula rules, attribute triggers and global scripts). After running tests and concluding that the
changes will not break your existing customizations in the production, you can use the Deploy / Send Changes
feature to send and deploy the product to the production environment.

To access this feature, go to Setup General Deploy Send Changes . The page that displays contains
the following tabs:

● Deployment Setup [page 591]


● Deployment Packages [page 564]
● Deployment Templates [page 592]

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 563
9.2.1 Deployment Packages

Deployment packages enable you to combine one or more SAP CPQ objects (such as products, users,
templates, and so on) into a package, which you can then deploy to the target environment.

SAP CPQ objects that can be combined into a package are referred to as package components or change
types. Additionally, you can make changes to the deployment package as many times as needed, which makes
the deployment process more flexible. You can create a deployment package in SAP CPQ or upload an existing
deployment package. Details are provided in the following sections. Deploying an object that already exists in
the target environment overwrites the existing object.

Create a Deployment Package

To define a deployment package, follow the steps below.

1. Go to Setup General Deploy / Send Changes Deployment Packages .


2. Click Create Package.
A new page displays.
3. In the Create New Package section, enter a name for the deployment package.
○ (Optional) Enter a description of the deployment package in the dedicated fields.
○ (Optional) If you are deploying a Change Set [page 723] to the destination environment, select the
change set to which changes within that package are assigned in the Change Set dropdown list.
○ In Destination Environment, select the target environment to which you want to deploy the package. If
you previously set up only one target environment on the Deployment Setup tab, this environment is
selected by default. Otherwise, you can choose your destination environment by selecting the
appropriate radio button.
4. In the Deployment Package Component section, select the SAP CPQ object you want to add to the package
from the Package Component dropdown list. There is no limit to the number of components you can add to
the deployment package.
○ The Select Components radio button is selected by default when creating a deployment package. This
option allows you to select and add package components.
○ The Apply Template radio button allows you to select and add a deployment template. Once you add a
template, the product components from the template display in the grid.
5. Click Add.
A Product Sending Checklist opens, corresponding with the component you have previously chosen. Click
on a specific component in the list below to see the next step.

The following is a list of package components that can be added to the deployment package and deployed.
Click the appropriate link to learn how to add a particular component.

● Deploying Approval Rules [page 566]


● Deploying Cart Level Aggregates [page 567]
● Deploying Categories [page 568]
● Deploying CRM Integration [page 569]
● Deploying Currencies [page 570]
● Deploying Custom Actions [page 571]
● Deploying Custom Calculations [page 572]

SAP CPQ Setup and Administration Guide


564 PUBLIC General Settings
● Deploying Custom Fields [page 573]
● Deploying Custom Tables [page 574]
● Deploying Global Scripts [page 575]
● Deploying Guided Selling [page 576]
● Deploying Item Actions Workflow [page 577]
● Deploying Markets [page 578]
● Deploying Notifications [page 579]
● Deploying Permissions [page 580]
● Deploying Products [page 581]
● Deploying Quote Item Custom Fields [page 583]
● Deploying Quote Tables [page 584]
● Deploying Responsive Templates [page 586]
● Deploying Territories [page 586]
● Deploying User Types [page 587]
● Deploying Workflow [page 588]

Once you add a package component, save your changes. The newly created package is displayed in the grid on
the Deployment Packages tab. You can perform the following actions on the package:

● clone
● edit
● download
● send
● delete

The grid displays the following columns: Package Name, Package Description, Source Environment, Destination
Environment, Comment, Status Date and Status. You can sort the columns in an ascending or descending order
by clicking the arrows next to the column name. Additionally, values in columns can be searched by entering a
query in the dedicated box and clicking on Search or by pressing Enter.

Upload a Deployment Package

Apart from creating a deployment package from start to finish, you can also upload an existing package from
your computer. Uploaded packages can be managed the same way as any packages made in SAP CPQ.

1. Go to Setup General Deploy / Send Changes Deployment Packages .


2. Click Upload Package.
A pop-up displays.
3. In the Comment field, enter a comment for the package. This field is mandatory.
4. Click Choose File to browse and select the package you want to upload.
5. Click Upload.
The uploaded package displays in the grid on the Deployment Packages tab. The status of the package is
Uploaded.

 Note

Only .zip files can be uploaded.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 565
Decompressing a .zip file creates a folder of the same name. If you decompress a .zip file and subsequently
decide to compress it again in order to upload it back to SAP CPQ, you should open the folder, compress
the contents into a .zip file and upload the file. Compressing the folder (as opposed to opening the folder
and compressing the contents) prevents the .zip file from properly uploading.

Deploy a Package

To deploy a package to the destination environment, follow the steps below.

1. Click next to the package name in the current environment.


The package is automatically sent to the destination environment.
2. Log into the destination environment.
3. Go to Setup General Deploy / Send Changes Deployment Packages .
4. Find the package you sent to the destination environment.
The status of the package in the destination environment is Received, so you can search by Status to find
the package more easily.

5. Click next to the package name to deploy the package.


A new page displays.
6. In the Deployment Package Component section, define or change the deployment order of components:

1. Click next to the package component.


A pop-up displays.
2. In Deployment Order, enter a number to define the order in which the component is deployed.
3. Click Update.
7. In the Deployment Questionnaire section, answer additional questions about the package components. The
questions are specific to the package component that is being deployed.
8. Click Deploy.
A message displays, notifying you whether the deployment was successful. The deployed package is
displayed in the grid and has the status Deployed. You can view the content of the deployed package by

clicking next to its name

 Note

The size limit for deployment packages is 200 MB.

9.2.1.1 Deploying Approval Rules

To add approval rules to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Approval Rule in
Package Component and click Add.
A new page displays.

SAP CPQ Setup and Administration Guide


566 PUBLIC General Settings
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Approval Rules that will be sent, select the approval rules you want to add to the package.
1. All Approval Rules: all available approval rules are added to the package and sent to the destination
environment.
2. Selected Approval Rules: only the approval rules you select are added to the package and sent to the
destination environment.
To move approval rules from All Approval Rules to Selected Approval Rules, use the right arrow.
Alternatively, to remove approval rules from Selected Approval Rules, use the left arrow.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing approval rules as a package component displays in the grid on the Deployment
Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying approval rules, the following data is sent to the destination environment:

● approval rules
● custom approvers selection logic
● selected approvers
● delegation of approvals
● user types
● companies

 Note

New users will not be created in the destination environment for the selected approvers.

Related Information

Approval Rules [page 374]

9.2.1.2 Deploying Cart Level Aggregates

To add cart level aggregates to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Cart Level
Aggregates in Package Component and click Add.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 567
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Cart Level Aggregates that will be sent, select the cart level aggregates you want to add to the package.
1. All Cart Level Aggregates: all available cart level aggregates are added to the package and sent to the
destination environment.
2. Selected Cart Level Aggregates: only the cart level aggregates you select are added to the package and
sent to the destination environment.
To move aggregates from All Cart Level Aggregates to Selected Cart Level Aggregates, use the right
arrow. Alternatively, to remove approval rules fromSelected Cart Level Aggregates, use the left arrow.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing cart level aggregates as a package component displays in the grid on the
Deployment Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying cart level aggregates, the following data is sent to the destination environment:

● name
● expression

Related Information

Cart Level Aggregates [page 290]

9.2.1.3 Deploying Categories

To add categories to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Categories in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Categories, select the categories you want to add to the package.
1. All Categories: all categories are added to the package and sent to the destination environment.
2. Selected Categories: only the categories you select are added to the package and sent to the
destination environment.

SAP CPQ Setup and Administration Guide


568 PUBLIC General Settings
Select the checkboxes next to the categories you want to add to the package.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing categories as a package component displays in the grid on the Deployment
Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying categories, the following data is sent to the destination environment:

● categories
● images
● permissions
● parent categories

 Note

Subcategories need to be manually copied to the destination environment. In addition, if manually created
permission groups consist of users that exist in the destination environment, new users will not be created
in the destination environment.

Related Information

Categories [page 98]

9.2.1.4 Deploying CRM Integration

To add CRM integration to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select CRM Integration in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Selected CRM Integration data, select the integration data you want to add to the package.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 569
The package containing CRM integration as a package component displays in the grid on the Deployment
Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying CRM integration, the following data is sent to the destination environment:

● CRM objects
● custom field mappings (custom fields flagged as personally identifiable information and sensitive
information retain these flags after the deployment)
● customer role mappings (customer standard fields are always flagged as personally identifiable
information)
● opportunity status
● CRM item mappings
● CRM quote

 Note

Pricebook market mappings, user mappings, CRM administrator account, CRM quote parameters and
general parameters need to be manually copied to the destination environment. In addition, all custom
fields mappings and customer roles mappings in the destination environment will be replaced by the new
mappings from the source environment.

9.2.1.5 Deploying Currencies

To add currencies to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Currencies in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
5. Click Save.
The package containing currencies as a package component displays in the grid on the Deployment
Packages tab.
6. Deploy the package as explained in Deployment Packages [page 564].

SAP CPQ Setup and Administration Guide


570 PUBLIC General Settings
Data Sent to the Destination Environment

When deploying currencies, no data other than currencies is sent to the destination environment.

Related Information

Currencies [page 430]

9.2.1.6 Deploying Custom Actions

To add custom actions to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Categories in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Action selection, select the custom actions you want to add to the package.
1. All Custom Actions: all available custom actions are added to the package and sent to the destination
environment.
2. Selected Custom Actions: only the categories you select are added to the package and sent to the
destination environment.
To move available custom actions to Selected Custom Actions, use the right arrow.
Alternatively, to remove custom actions from Selected Custom Actions, use the left arrow.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing custom actions as a package component displays in the grid on the Deployment
Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying custom actions, the following data is sent to the destination environment:

● name
● system ID
● placement
● primary flag
● image

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 571
● conditions tied to a custom action
● script

Related Information

Categories [page 98]

9.2.1.7 Deploying Custom Calculations

To add custom calculations to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Categories in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Selected Custom Calculations, select the custom calculations you want to add to the package.
1. All Custom Calculations: all available custom calculations are added to the package and sent to the
destination environment.
2. Selected Custom Calculations: only the custom calculations you select are added to the package and
sent to the destination environment.
To move available custom calculations to Selected Custom Actions, use the right arrow.
Alternatively, to remove custom calculations from Selected Custom Actions, use the left arrow.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing custom calculations as a package component displays in the grid on the
Deployment Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying custom calculations, no data other than custom calculations is sent to the destination
environment.

Related Information

Categories [page 98]

SAP CPQ Setup and Administration Guide


572 PUBLIC General Settings
9.2.1.8 Deploying Custom Fields

To add custom calculations to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Categories in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Select Custom Fields that will be sent, select the custom fields you want to add to the package.
1. All Custom Fields: all available custom fields are added to the package and sent to the destination
environment.
2. Selected Custom Fields: only the custom fields you select are added to the package and sent to the
destination environment.
To move available custom fields to Selected Custom Fields, use the right arrow.
Alternatively, to remove custom fields from Selected Custom Actions, use the left arrow.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing custom fields as a package component displays in the grid on the Deployment
Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying custom fields, the following data is sent to the destination environment:

● custom fields (custom fields flagged as personally identifiable information and/or sensitive information
retain these flags after the deployment)
● user types
● attributes (attributes flagged as personally identifiable information and/or sensitive information retain
these flags after the deployment process)
● tabs

 Note

Quote custom tabs need to be manually copied to the destination environment.

Related Information

Custom Fields [page 272]

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 573
9.2.1.9 Deploying Custom Tables

To add custom tables to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Categories in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Table selection, select the custom tables you want to add to the package.
1. All Custom tables: all available custom tables are added to the package and sent to the destination
environment.
2. Selected Custom tables: only the custom tables you select are added to the package and sent to the
destination environment.
To move available custom fields to Selected Custom tables, use the right arrow.
Alternatively, to remove custom fields from Selected Custom tables, use the left arrow.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing custom tables as a package component displays in the grid on the Deployment
Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

 Note

Custom tables flagged as personally identifiable information and/or sensitive information retain these flags
after the deployment process.

Data Sent to the Destination Environment

When deploying custom tables, no data other than custom tables is sent to the destination environment.

 Note

The maximum size limit of custom tables that are sent to the destination environment is 20MB.

Access Rights

On source environments, you can:

● Create deployment packages containing custom tables if the visibility of those tables is enabled for you
with the Access Rights feature.
● Send packages containing those custom tables to target environments.

SAP CPQ Setup and Administration Guide


574 PUBLIC General Settings
On target environments you can:

● Deploy packages containing custom tables only if you have editing access rights for them.
● Create or update the existing custom tables from the package if you have editing access rights for custom
tables. To do this, the visibility of custom tables needs to be granted to you with the Access Rights feature.
If the package contains custom tables you can’t see, it can’t be deployed.

Related Information

Custom Tables [page 110]

9.2.1.10 Deploying Global Scripts

To add global scripts to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Approval Rule in
Package Component and click Add.
A new page displays.
2. On the Scripts tab, define a name for the package component in the Name field.
You can view the events that are attached to global scripts on the Events tab.
3. (Optional) In Description, enter a description for the package component.
4. In Script Selection, select the scripts you want to add to the package.
1. All Scripts: all available scripts are added to the package and sent to the destination environment.
2. Selected Scripts: only the scripts you select are added to the package and sent to the destination
environment.
To move scripts to Selected Scripts, use the right arrow. Alternatively, to remove approval rules from
Selected Scripts, use the left arrow.
5. For each script in Selected Scripts, select which version of the script is sent to the destination environment.
1. Click on the script.
Available versions of the script display in the Scripts Sending Checklist, and the active version is
preselected.
2. Select the checkboxes next to the versions you want to send.
Hover over the script version to view its content.
The most recent script version you select in the source environment will be active in the destination
environment.
6. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
7. Click Save.
The package containing approval rules as a package component displays in the grid on the Deployment
Packages tab.
8. Deploy the package as explained in Deployment Packages [page 564].

On the destination environment, in Setup Develop Global Scripts , locate the script you deployed and

click to view it.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 575
On the History tab, you can see when the script was created and on what environment, as well as whether there
are various versions of the script. You can also view description changes for each version in the Description
column.

Data Sent to the Destination Environment

When deploying approval rules, the following data is sent to the destination environment: page: select

● scripts
● events
● script history

Related Information

Approval Rules [page 374]

9.2.1.11 Deploying Guided Selling

To add guided selling products to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Approval Rule in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package.
The name of the package component is automatically added as a prefix to each guided selling product
name in the package, making it easier to discern which products belong to which package component.
You can view the events that are attached to global scripts on the Events tab.
3. (Optional) In Description, enter a description for the package.
4. In Guided Selling Product, click Add Product.
A pop-up appears, displaying all guided selling products in the system.
1. Select the checkboxes next to the guided selling products you want to add
2. Click Add Selected.
The selected guided selling products are displayed in Guided Selling Product.
5. Click Checklist next to each selected guided selling product to view the Product Sending Checklist for the
product in question.
6. (Optional) In Product Sending Checklist, deselect the items you want to exclude from the package.
Rules, messages, images and styles, scripts and shipping methods can be safely excluded from the
package.
7. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
8. Click Save.

SAP CPQ Setup and Administration Guide


576 PUBLIC General Settings
The package containing guided selling products as a package component displays in the grid on the
Deployment Packages tab.
9. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying guided selling products, the following data is sent to the destination environment:

● product name
● product description
● product part number
● permissions and effectivity dates
● additional formulas
● configuration layout (tabs, order of attributes)
● responder layout
● product details layout
● rules (you can choose not to send them)
● messages (you can choose not to send them)
● images and styles (you can choose not to send them)
● scripts (you can choose not to send them)
● attributes (attributes flagged as personally identifiable information and/or sensitive information retain
these flags after the deployment process)
● attributes values
● categories
● product types
● user types
● shipping methods (you can choose not to send them)
● replacement products

 Note

Container attributes are sent to the destination environment for all newly created containers. However, if
you make changes to the existing container attributes, you will have to manually update them in the
destination environment.

Related Information

Guided Selling [page 114]

9.2.1.12 Deploying Item Actions Workflow

To add item actions workflow to the deployment package and deploy them, follow the steps below.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 577
1. Create a deployment package as explained in Deployment Packages [page 564]: select Approval Rule in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Select item actions workflow per tab, select the e item actions you want to add to the package.
1. My Quotes: item actions defined for the My Quotes tab are added to the package and sent to the
destination environment.
2. Waiting for approval: item actions defined for the Waiting for approval tab are added to the package and
sent to the destination environment.
3. Other Quotes: item actions defined for the Other Quotes tab are added to the package and sent to the
destination environment.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing item actions workflow as a package component displays in the grid on the
Deployment Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying item actions workflow, the following data is sent to the destination environment:

● item actions
● item actions workflow

 Note

New users will not be created in the destination environment for the selected approvers.

Related Information

Item Actions Workflow [page 388]

9.2.1.13 Deploying Markets

To add markets to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Markets in Package
Component and click Add.
A new page displays.

SAP CPQ Setup and Administration Guide


578 PUBLIC General Settings
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
5. Click Save.
The package containing markets as a package component displays in the grid on the Deployment Packages
tab.
6. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying markets, the following data is sent to the destination environment:

● markets
● market visibility
● user types
● companies
● currencies

 Note

If market visibility is defined for users that exist in the destination environment, new users will not be
created.

Related Information

Markets [page 432]

9.2.1.14 Deploying Notifications

To add notifications to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Approval Rule in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Notifications that will be sent, select the notifications you want to add to the package.
1. All Notifications: all available notifications are added to the package and sent to the destination
environment.
2. Selected Notifications: only the notifications you select are added to the package and sent to the
destination environment.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 579
To move approval rules from Notifications to Selected Notifications, use the right arrow. Alternatively,
to remove approval rules from Selected Notification, use the left arrow.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing notifications as a package component displays in the grid on the Deployment
Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying notifications, the following data is sent to the destination environment:

● notifications
● parsable attachments
● non-parsable attachments
● email lists
● user types

 Note

Users need to be manually copied to the destination environment.

Related Information

Notifications [page 342]


Notification Implementation [page 345]

9.2.1.15 Deploying Permissions

To add permissions to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Approval Rule in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Permission groups that will be sent, select the groups you want to add to the package.
1. All Approval Rules: all groups displayed in System Permission Groups are added to the package and
sent to the destination environment.
2. Permission Groups

SAP CPQ Setup and Administration Guide


580 PUBLIC General Settings
Selected Permission Groups: only the permission groups you select are added to the package and sent
to the destination environment.
To move approval rules from System Permission Groups to Selected Permission Groups, use the right
arrow. Alternatively, to remove approval rules from Selected Permission Groups, use the left arrow.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package displays in the grid on the Deployment Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying approval rules, the following data is sent to the destination environment:

● custom permission groups


● user types
● companies
● markets
● brands

 Note

If manually created permission groups contain users specified in the destination environment, new users
will not be created in the destination environment. Additionally, permission groups that are set for some
company may not exist in the destination environment. In this case, permission groups that do not exist in
the destination environment will not be created.

Related Information

Permission Groups [page 154]

9.2.1.16 Deploying Products

To add products to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Product in Package
Component and click Add.
A new page displays.
2. In Name, define a name for the package.
The name of the package component is automatically added as a prefix to each product name in the
package, making it easier to discern which products belong to which package component.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 581
3. (Optional) In Description, enter a description for the package.
4. In Select Product, click Add Product.
A pop-up appears, displaying all products in the system.
1. Select the checkboxes next to the guided selling products you want to add
2. Click Add Selected.
3. The selected products are displayed in Select Product.
5. From the Select version dropdown list, select a product version for each product
6. Click Checklist next to each selected product to view the Product Sending Checklist for the product in
question.
7. (Optional) In Product Sending Checklist, deselect the items you want to exclude from the package.
Rules, messages, images and styles, scripts and shipping methods can be safely excluded from the
package.
8. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
9. Click Save.
The package containing products as a package component displays in the grid on the Deployment
Packages tab.
10. Deploy the package as explained in Deployment Packages [page 564].
11. In Deployment Questionnaire, select whether or not the product will be automatically activated in the
destination environment. If the No (default option) radio button is selected, the product will be inactive in
the destination environment and will not display in the catalog. In this case, you will need to find the
deployed product in SetupProducts and make it active by selecting the Active checkbox (applicable to
legacy Products page) or by enabling the Active toggle switch (applicable to Products 2.0).

Data Sent to the Destination Environment

When products, the following data is sent to the destination environment:

● product name
● product description
● product part number
● permissions and effectivity dates
● additional formulas
● configuration layout (tabs, order of attributes)
● responder layout
● product details layout
● rules (you can choose not to send them)
● messages (you can choose not to send them)
● images and styles (you can choose not to send them)
● scripts (you can choose not to send them)
● attributes (attributes flagged as personally identifiable information and/or sensitive information retain
these flags after the deployment process)
● attributes values
● categories

SAP CPQ Setup and Administration Guide


582 PUBLIC General Settings
● product types
● user types
● shipping methods (you can choose not to send them)
● replacement products

 Note

Container attributes are sent to the destination environment for all newly created containers. However, if
you make changes to the existing container attributes, you will have to manually update them in the
destination environment.

Related Information

Products [page 53]


Products 2.0 [page 126]
Product Editor [page 56]

9.2.1.17 Deploying Quote Item Custom Fields

To add quote item custom fields to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Quote Item Custom
Fields in Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Selected quote item custom fields, select the quote item custom fields you want to add to the package.
1. All quote item custom fields: all available quote item custom fields are added to the package and sent
to the destination environment.
2. Selected quote item custom fields: only the quote item custom fields you select are added to the
package and sent to the destination environment.
To move available quote item custom fields to Selected quote item custom fields, use the right arrow.
Alternatively, to remove quote item custom fields from Selected quote item custom fields, use the left
arrow.
5. In Quote layout permissions selection, select the quote layout permissions you want to add to the package
1. All quote layout permissions: all available quote layout permissions are added to the package and sent
to the destination environment.
2. Selected quote layout permissions: only the quote layout permissions you select are added to the
package and sent to the destination environment.
To move available quote layout permissions to Selected quote layout permissions, use the right arrow.
Alternatively, to remove quote layout permissions from Selected quote layout permissions, use the left
arrow.
3. Don’t deploy quote layout permissions: quote item custom fields are deployed without quote layout
permissions.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 583
6. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
7. Click Save.
The package containing quote item custom fields as a package component displays in the grid on the
Deployment Packages tab.
8. Deploy the package as explained in Deployment Packages [page 564].

 Note

Quote item custom fields flagged as personally identifiable information and/or sensitive information retain
these flags after the deployment process.

Data Sent to the Destination Environment

When deploying approval rules, the following data is sent to the destination environment: page: select

● quote item custom fields


● quote layout permissions
● custom permission groups
● user types
● companies
● markets
● brands

 Note

The following data needs to be manually copied to the destination environment:

● quote custom tabs


● users (if manually created permission groups have users specified in them)
● quote tables (if they are referenced by a deployed custom field whose type is autocomplete attribute)
● custom tables (if they are referenced by a deployed custom field whose type is autocomplete attribute)

Additionally, if a deployed quote item custom field contains CTX tags, it is necessary to check the fields
included in the package, in case the formula contains fields that are not included by default.

Related Information

Quote Item Custom Fields [page 307]

9.2.1.18 Deploying Quote Tables

To add quote tables to the deployment package and deploy them, follow the steps below.

SAP CPQ Setup and Administration Guide


584 PUBLIC General Settings
1. Create a deployment package as explained in Deployment Packages [page 564]: select Quote Tables in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Table selection, select the quote tables you want to add to the package.
1. All Quote Tables: all available quote tables are added to the package and sent to the destination
environment.
2. Selected Quote Tables: only the quote tables you select are added to the package and sent to the
destination environment.
To move approval rules to Selected Quote Tables, use the right arrow. Alternatively, to remove approval
rules from Selected Quote Tables, use the left arrow.
5. In Sending Checklist, select the checkboxes for Actions, Validations or Permissions if you want to include
them in the package.
If you decide to deploy only one element (for example, Actions) of a quote table that does not exist on the
destination environment, the system will first create the table in the destination environment and then
create the action.
6. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
7. Click Save.
The package containing quote tables as a package component displays in the grid on the Deployment
Packages tab.
8. Deploy the package as explained in Deployment Packages [page 564].

 Note

Quote tables flagged as personally identifiable information and/or sensitive information retain these flags
after the deployment process.

Data Sent to the Destination Environment

When deploying quote tables, the following data is sent to the destination environment:

● quote tables
● attributes
● permissions - all permission groups are always sent to the destination environment. Additionally, by
selecting/deselecting the Permissions checkbox in the Sending Checklist, you control whether the
permissions related to the quote table that is being deployed will be included in the package.

 Note

When you deploy a quote table that is in a quote tab that only exists on the source environment, that quote
tab is automatically created on the target environment and can be found under General Tabs in
Setup. However, since custom quote tabs are not sent to the target environment, you must manually
activate it by adding it as a new tab in Custom Quote Tabs .

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 585
Related Information

Quote Tables [page 258]

9.2.1.19 Deploying Responsive Templates

To add responsive templates to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Responsive
Templates in Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Template Selection, select the responsive templates you want to add to the package.
1. All Responsive Templates: all available responsive templates are added to the package and sent to the
destination environment.
2. Selected Responsive Templates: only the responsive templates you select are added to the package
and sent to the destination environment.
To move available responsive templates to Selected Templates, use the right arrow.
Alternatively, to remove responsive templates from Selected Templates, use the left arrow.
5. Click on a template in Selected Templates.
Checkboxes display in the Responsive Templates Checklist, allowing you to select the version of the
template you wish to deploy. The active version will be selected by default.
6. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
7. Click Save.
The package containing responsive templates as a package component displays in the grid on the
Deployment Packages tab.
8. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying responsive templates, the following data is sent to the destination environment:

● responsive templates
● responsive templates history

9.2.1.20 Deploying Territories

To add territories to the deployment package and deploy them, follow the steps below.

SAP CPQ Setup and Administration Guide


586 PUBLIC General Settings
1. Create a deployment package as explained in Deployment Packages [page 564]: select Territories in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
5. Click Save.
The package containing territories as a package component displays in the grid on the Deployment
Packages tab.
6. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying territories, no data other than territories is sent to the destination environment.

Related Information

Countries, States and Territories [page 593]

9.2.1.21 Deploying User Types

To add user types to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Approval Rule in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In User Types that will be sent, select the user types you want to add to the package.
1. All User Types: all available user types are added to the package and sent to the destination
environment.
2. Selected User Types: only the user types you select are added to the package and sent to the
destination environment.
To move approval rules from All user types to Selected user types, use the right arrow. Alternatively, to
remove approval rules from Selected user types, use the left arrow.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 587
The package containing user types as a package component displays in the grid on the Deployment
Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

Data Sent to the Destination Environment

When deploying user types, the following data is sent to the destination environment:

● start category
● XSL and XSLT files

 Note

New users will not be created in the destination environment for the selected approvers.

Related Information

User Types [page 160]

9.2.1.22 Deploying Workflow

To add workflow to the deployment package and deploy them, follow the steps below.

1. Create a deployment package as explained in Deployment Packages [page 564]: select Workflow in
Package Component and click Add.
A new page displays.
2. In Name, define a name for the package component.
3. (Optional) In Description, enter a description for the package component.
4. In Select workflow per tab, select the workflow you want to add to the package.
1. My Quotes: workflow actions defined for the My Quotes tab are added to the package and sent to the
destination environment.
2. Waiting for approval: workflow actions defined for the Waiting for approval tab are added to the package
and sent to the destination environment.
3. Other Quotes: workflow actions defined for the Other Quotes tab are added to the package and sent to
the destination environment.
5. Click Add to Package.
The package component displays in the Deployment Package Component section on the Deployment
Packages tab.
6. Click Save.
The package containing workflow as a package component displays in the grid on the Deployment
Packages tab.
7. Deploy the package as explained in Deployment Packages [page 564].

SAP CPQ Setup and Administration Guide


588 PUBLIC General Settings
Excluding Objects from Workflow Deployment

When deploying a workflow, administrators can exclude the following objects from the Workflow Sending
Checklist:

● custom actions
● notifications
● email lists

If custom actions are excluded from the checklist, notifications and email lists that are attached to the
excluded custom actions are not deployed. However, notifications and email lists attached to the standard
actions in the workflow are deployed in a regular way (unless notifications and email lists are excluded from
deployment).

Additionally, if custom actions are excluded from the checklist, the system decides whether to send the custom
actions attached as pre/post actions to the target environment depending on whether the actions already
exists in the source/target environments:

● if the same custom action is attached as a pre/post action in both the source and destination environment,
the action is sent to the destination environment (the existing action in the destination environment is
updated).
● if the same custom action exists on both environments, but it’s attached as a pre/post action only in the
source environment and not in the target environment, after deploying the workflow, the custom action will
be attached as a pre/post action in the target environment.
● if a custom action exists only in the source environment and it’s attached as a pre/post action, after the
deployment, the post action in the target environment will not have the custom action attached.

When deploying a workflow, administrators can choose between two buttons:

● Update all workflows - current settings are overwritten by the settings from the source environment.
● Only create new workflows - settings from the source environment are added to the current settings.

Data Sent to the Destination Environment

When deploying workflow, the following data is sent to the destination environment:

● statuses
● actions
● IronPython custom actions
● workflow permissions
● pre-actionspost-actions
● workflow conditions
● workflow flags
● notifications
● email lists
● required fields by workflow action

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 589
Related Information

Workflow-Approvals [page 329]

9.2.1.23 Troubleshooting Common Issues During Deployment

The two most common issues you can encounter during deployment are as follows:

● The shipping name already exists.


In this case, a shipping method with the same name, but different system ID, exists on both the source and
destination environment.
● The user type group name is already in use.
In this case, a user type with the same group name, but different system ID, exists on both the source and
destination environment.

To fix the issues, you need to change the system ID of the conflicted shipping method or user type in the source
environment.

To change the system ID of the shipping method:

1. In the source environment, go to Setup Pricing/Calculations Shipping .

2. Find the shipping in question and click to edit it.


A new page displays.

3. In Shipping Method System Id, click to change the system ID.


The field becomes editable.
4. Enter the system ID that matches the ID of the same shipping method in the target environment.
5. Click Save.

To change the system ID of the user type group name:

1. In the source environment, go to Setup Users User Types .


2. Find the group name in question and click the Edit button.
A new page displays.

3. In System ID, click to change the system ID.


The field becomes editable.
4. Enter the system ID that matches the ID of the same user type in the target environment.
5. Click Save.

SAP CPQ Setup and Administration Guide


590 PUBLIC General Settings
9.2.2 Deployment Setup

On the Deployment Setup tab, you connect your current environment, also known as source environment, to
the environments to which you want to deploy changes.

Set Up the Current Environment

To set up your current environment, follow the steps below.

1. In Current Environment, click Add Current Environment.


A pop-up displays.
2. Environment Type, URL (without http prefix) and Domain are prepopulated with the current environment
information.
3. Click Save.
Your current environment displays in the Current Environment section, where it can be edited or deleted.

Set Up the Target Environment

Users can send changes made in the current environment to a target environment. To connect your current
environment to a target environment, follow the steps below.

1. In Connected Environment, click Add Connected Environment.


A pop-up displays.
2. Select the destination environment type from the Environment Type dropdown list.
Test, Production and Sandbox environment types are available.
3. In URL (without http prefix), enter the URL of the destination environment without the http prefix (for
example, v60test.webcomcpq.com).
4. In Domain, enter your tenant name on the destination environment (for example, webcomqa).
5. The Username field is prepopulated with your current user ID.
6. The Password field is prepopulated with your current password.
7. Click Save.
The destination environment displays in the Connected Environment section.

 Note

You can connect multiple target environments to your current environment.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 591
9.2.3 Deployment Templates

Deployment templates enable you to create templates that contain as many products as you need. Templates
can be applied to any package and reused in future deployments. As a result, the deployment process is more
streamlined.

Create a Deployment Template

As an example, this procedure shows you the steps to create a deployment template named January
Deployment that contains the following products: Project Management, Software Evaluation and Software
Implementation.

1. Go to Setup General Deploy / Send Changes Deployment Templates .


2. Click Create Template.
A new page displays.
3. In Name, enter a name for the template (January Deployment).
4. Click Add Product.
A pop-up appears, displaying all available products.
5. Select the checkboxes next to the above-mentioned products: Project Management, Software Evaluation
and Software Implementation.
6. Click Add Selected.
The selected products display in the Select Product field.
7. Select a version for each product from the Select version dropdown list. Admins can create new product
versions (See Create Product Version [page 88]) in the Products tab while leaving the original products
intact.
8. Click Checklist next to each product to view the Product Sending Checklist for the product.
9. On the Product Sending Checklist, deselect the checkboxes next to the items you want to exclude. For
example, exclude scripts from the checklist that is sent with the Software Implementation product.
10. Save the template.

You can inspect the content of the template by clicking next to the template name. Additionally, you
can download or delete the template.

Apply the Deployment Template

Applying the newly created template to a package will populate the package with the products listed in the
template.

1. Go to Setup General Deploy / Send Changes Deployment Packages .


2. Click Create Package.
3. In the Create New Package section, enter a name for the template (January).
4. In Destination Environment, select the environment you want to deploy the package to.
5. In the Deployment Package Component section, select Apply Template.
The Select Template dropdown list appears.

SAP CPQ Setup and Administration Guide


592 PUBLIC General Settings
6. Select the template you want to apply (January Deployment).
7. Click Add.
Products from the list you applied are listed in the package.
8. Click Save.
The package displays in the grid on the Deployment Packages tab.

9. Click to send the package to the destination environment.

Reapply the Template

If you edit the products which are a part of a previously created template and wish to send these product
changes to the destination environment, you can reapply the existing template to which these products belong,
instead of manually creating a completely new deployment package. Reapplying the template causes the
template to automatically obtain the latest product updates from SAP CPQ and populate the package with
those product updates.

The procedure for reapplying a deployment template is the same as the procedure for applying a deployment
template for the first time as described above. Since reapplying the template causes it to automatically obtain
product updates from SAP CPQ, you do not need to edit the template in any way.

The previous example shows how to create a deployment template named January Deployment that contain
the following products: Project Management, Software Evaluation and Software Implementation. For the current
example, imagine that in February you decide to attach a global script to the Project Management product.
Instead of manually creating a completely new package to send the product change to the destination
environment, you can reapply the template you created for January deployment. Doing that will cause the
template to automatically obtain the global script you added to the Project Management product and populate
the package.

To view the package deployed in January as well as the one deployed in February, go to the Deployment

Packages tab. In addition, a package can also be downloaded. To download a package, click next to the
package name.

 Note

When you download both packages, you can upload them to Git and compare their XML files to see what
changed.

9.3 Countries, States and Territories

To define countries, states and territories in SAP CPQ, access the Countries, States and Territories sections in
Setup, respectively. The created entities will be available in the system when managing some other features
(for example, when defining users).

For countries, it is required to define a three-letter abbreviation and if needed, a two-letter abbreviation. For
states, you need to define only one abbreviation, with either two or three letters. Use the abbreviations defined
by the ISO standard.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 593
Names of countries can be translated into different languages by clicking the translation icon in the row of the
country whose name you want to translate. On the following page, you can select more than one language in
the language dropdown menu. For every selected language, a field appears, where you are prompted to enter a
translation for the selected language country name.

States

State abbreviations are not unique in the system, but they need to be unique within a country. You can create
multiple states with the same state abbreviation as long as the states pertain to different countries.

States are treated separately throughout SAP CPQ. When managing users, customers and companies in
Setup, the system displays only the states that pertain to the selected country. However, the system allows
adding any state to any country when managing the following:

● user import
● bulk user import/export
● customer import/export
● user administration API
● companies import/export
● company administration API
● customer administration API

Territories

When defining territories, you need to enter their name and system ID. The System id is generated
automatically from the territory name, but you can override it by clicking . Territories are treated separately
from countries and states in the system. When managing users, for example, you can select any of the
territories, even if their actual geographical position is not within the selected country and state.

9.4 Tabs

Tabs are components that help organize information on some of the SAP CPQ pages. You can customize tabs
to display the information best suited to your business needs.

Creating a General Tab

General tabs are invisible until you use them in product configuration or in quote tab creation. To create a
general tab:

1. Go to Setup General Tabs .

SAP CPQ Setup and Administration Guide


594 PUBLIC General Settings
A page with all existing tabs is displayed.
2. Click Add New.
Enter a name of the tab in Tab name.
Tab system Id is automatically created based on the tab name you entered.
3. Enter the rank in Default tab rank.
The defined rank is applied to the tabs in the configurator and it determines the order in which they are
displayed. The default rank will also be applied to custom quote tabs until you override it with a more
specific rank.
4. (Optional) Select Show tab header in configurator.
If selected, the tab header is displayed in the product configurator.
5. Click Save.
The page with all existing tabs is displayed.

After you create a tab, you can use it for product configuration (Configuration Layout Tab [page 61]) and
custom quote tab creation (Create Quote Tab [page 313]).

9.5 Dictionaries
A dictionary in SAP CPQ contains a set of keys and their values that are applicable on tenant level. Keys are
only used in the code to reference key values that are visible in the application and refer mainly to UI content
(button labels, tooltips, etc.).

The system distinguishes two types of dictionaries:

● System - there is a system dictionary in SAP CPQ for each supported language. System dictionaries cannot
be changed and no keys can be added. You can only compare and export system dictionaries. Names of
system dictionaries appear in both English and the language of the dictionary (for example: Español /
Spanish). These dictionaries are uploaded by default on all new tenants. If your business model does not
require creating custom key/value pairs, you do not need to manage dictionaries at all. The system
dictionaries are managed and updated by the SAP CPQ team and administrators have no authorization to
change them.
Custom - dictionaries that administrators create. Custom dictionaries are best to be used for overriding
key values in default dictionaries. Administrators are advised not to change the existing keys or add new
ones as this will require additional configuration in SAP CPQ so that the system could recognize them.

More details on dictionaries and how-to procedures are described in the following sections:

● Comparing Dictionaries [page 595]


● Exporting/Importing Dictionaries [page 596]
● Creating Custom Dictionary [page 596]
● Defining Key Values [page 597]
● Which Dictionaries will SAP CPQ Retrieve for my Users? [page 598]

9.5.1 Comparing Dictionaries

You can compare two dictionaries to see the difference in values for the keys contained in both dictionaries.
After opening a dictionary, select in the top of the page the dictionary with which you wish to compare it. The

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 595
list automatically displays common keys with different values. The Comparison Dictionary Value (CDV) column
shows the key values in the target dictionary.

Related Information

Exporting/Importing Dictionaries [page 596]

9.5.2 Exporting/Importing Dictionaries

You can either export the current dictionary or both the current dictionary and the dictionary that is being
compared, if any. You can also filter and export the dictionary entries that have been updated after a specified
date.

You can access import and export functions by clicking the icon next to dictionaries in Setup General
Dictionaries .

The Filter records modified since field is located above the list of dictionary entries. You can specify a date by
either typing it in the field or by clicking the calendar icon and picking a date in the calendar pop-up. If you are
entering the date manually, bear in mind that it needs to be in the user format. Clicking Export visible items and
Export all items exports the items currently visible on the page and all items in the dictionary, respectively.

The system exports dictionary values in the XML format and the same format should be used when importing
values.

These options are available for importing dictionaries:

● Add New and Update Existing Values - keys in the source dictionary will be updated with the values of
matching keys in the import file and new keys will be added.
● Add non-existing keys - only the keys that exist in the import file and do not exist in the source dictionary
will be imported.
● Add newer values - for matching keys, if the value in the import file is more recent, it will replace the value in
the source dictionary. Also, new keys are added through this option.

9.5.3 Creating Custom Dictionary

To access all dictionaries on a tenant and manage custom dictionaries, go to General Dictionaries . The
page lists all dictionaries and lets you delete and edit dictionary details and pertaining keys.

1. Click Add New.


2. Fill out these fields on the new page:
○ Name - the name of the dictionary. This is the only required field.
○ Rank - used for sorting out multiple default dictionaries.
○ Type - prepopulated with Custom.

SAP CPQ Setup and Administration Guide


596 PUBLIC General Settings
○ Parent Dictionary - the new dictionary inherits values from the parent dictionary. The parent key/value
pairs are not copied directly to the child dictionary, but they are stored in the background. To override
the value of a key, copy it to the child dictionary and change its value.

○ Visibility Condition - enter 1 to make a dictionary visible to all users. Otherwise, you can click to
restrict the visibility to certain users.
○ Condition for Defaulting to this Dictionary - the system retrieves values from this dictionary if no default
dictionary is selected for a user on User Page and in user configuration. To set a dictionary to default,

enter 1 in the box. Alternatively, click to create a more complex condition.


○ Language ISO Code - assign a language ISO code to the dictionary as defined by the ISO standard. You
need to assign language ISO codes here before you can successfully synchronize languages from SAP
Variant Configuration and Pricing.
3. Click Save.
The dictionary is created and it displays on the last page of the dictionary list.

Related Information

Defining Key Values [page 597]

9.5.4 Defining Key Values

You can easily change values of custom dictionaries in General Dictionaries .

1. Click next to the dictionary you wish to update.


2. Use the search fields to filter dictionaries.
3. Click Add new key.
4. Define the key and its value.
Please note that for an optimized usage of dictionaries, you should only copy/paste the keys whose values
you wish to override in the existing dictionaries, not define new ones.
5. Click Save.
The key and its value are added to the list from which you can always delete and edit them. Dedicated
columns show you when each key was created and when it was last modified.

Related Information

Which Dictionaries will SAP CPQ Retrieve for my Users? [page 598]

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 597
9.5.5 Which Dictionaries will SAP CPQ Retrieve for my
Users?

When users log into SAP CPQ, the system first checks which dictionary is set as default in Setup Users a
user Additional Settings tab. The values from that dictionary will be used for naming buttons, tooltips, etc.
Users can always override the administrator's selection in User Page User details Default Dictionary by
selecting a different dictionary. However, if users select Default Pricebook in the homonymous dropdown list in
User Page, the system disregards the selection you made in Setup and reaches for the default dictionary. When
multiple dictionaries have a defaulting condition evaluating to TRUE, the system will use rank to sort them out
(the dictionary with the lowest rank is retrieved first).

You can always limit which dictionaries display to users by applying the right visibility conditions.

Related Information

Comparing Dictionaries [page 595]

9.6 Manage Generated Documents

The Manage Generated Documents section gives administrators an insight into all the documents that their
underlying users have generated in SAP CPQ. The list of documents shows when the document was generated,
which user generated it, the name of the file and its size. Additionally, the Sent To Customer and the Viewed By
Customer columns show whether a document is sent to the customer and if the customer has viewed it,
respectively.

 Note

Non-administrative users with privileges for viewing and deleting generated documents, have the Manage
Generated Documents page available in user pages.

The only action that you can perform on generated documents is deletion:

● To delete an individual document, click the delete icon next to the file.
● To delete multiple documents at once, select the corresponding checkboxes in the Delete column and click
Delete Selected. Alternatively, click Select All to select all documents in the current page.
Clicking Delete All deletes all the generated documents in the application. You can switch to a different
page right away because the deletion process is handled in the background. This way administrators can
uninterruptedly manage other sections in Setup while the generated documents are being deleted. This
action does not delete the additional files.
To delete both the generated documents and the additional files, click Clean Up. This action is available
only to administrative users.

SAP CPQ Setup and Administration Guide


598 PUBLIC General Settings
Related Information

Document Generation [page 166]


Manage Content Documents [page 201]
Create Document Generation Template [page 189]

9.7 File Management

File Management stores images and files that can be retrieved throughout Setup (when creating products,
categories, and so on).

You can upload files to the following folders:

● Product Images - images for products.


● Category Images - images for categories.
● Attribute Images - images for attributes.
● Actions - images for quote action icons.
● Lightning Actions - images for quote action icons in lightning branding [page 470].
● Top Menu - images for icons in the top menu in the old SAP CPQ design.
● Additional Files - the only folder to which you can upload files other than images and reorganize them into
subfolders. You can retrieve files from this folder in responsive templates and through scripting.

To manage files (upload, download, copy, preview, and so on), access the Home tab. In the View tab, choose
how files display and whether the navigation pane with a list of folders shows up on the left.

 Note

The format of images that can be uploaded in File Management is set through the Allowed Image Extensions
application parameter.

<*DOMAIN*> Tag in File URLs

To determine your domain (tenant) name when constructing URLs for files uploaded to SAP CPQ, you can use
the <*DOMAIN*> tag. For example, to place the ChairProd image into a display-only text attribute in the
configurator, you need to use the following HTML code: <img src=”../mt/<*Domain*>/images/
productimages/Product1.png”/>. By using the <*DOMAIN*> tag, you don’t have to go back to every field
that contains a formula referring to images from the file system and manually replace the hard-coded domain
of the old environment with the name of the new environment. The system retrieves the domain name
automatically.

Upload Files [page 600]


Before you initiate the upload, click the destination folder to which you wish to upload the file in the left-
hand navigation pane.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 599
9.7.1 Upload Files

Before you initiate the upload, click the destination folder to which you wish to upload the file in the left-hand
navigation pane.

Procedure

1. Click Upload.

The Upload Files window pops up.


2. Click Add….

A window for browsing your local computer displays.


3. Select the file for upload and click Open.

You can repeat this step to select multiple files. All files are listed in the Upload Files window.
4. Click Upload.

The progress bar visually shows the time remaining for upload.

The file is uploaded to the selected folder.

9.8 Communication Links

There is a possibility to customize collaboration link that each user sees among header links on SAP CPQ client
side. Image below shows the place where collaboration link appears in SAP CPQ:

Each User Class can have its own collaboration link. Refer to userclasses help page for more info on how to set
up user classes. Collaboration Links are being set up from Setup General Collaboration Links page. On

SAP CPQ Setup and Administration Guide


600 PUBLIC General Settings
that page, administrator can add one customizable link per each user class, plus a default link for users that
don't belong to other user classes.

Link for default user class can't be deleted - it's always present in the system, and it applies to all users not
belonging to other user classes. Although it can't be deleted, it can be set to be invisible.

The image above shows a list of defined links. First link, labeled as (default) user class is the default link.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 601
The image above shows how to edit collaboration link. Please note that most of the fields are parse-able, so
user can use standard SAP CPQ tags in those links. There is a syntax builder button next to each parse-able
field.

“User Class” is the only required field. It defines to which user class this link applies to. “Link Label” field
defines how link will be presented to users. “Link Hint” field holds tool tip that will be shown to customers when
they hover it with mouse pointer. “Link URL” field defines where links will point to. For example, to use SAP CPQ
customer portal, use link like this one:

../CustomerPortal.aspx?
first=<*CTX( Visitor.Username )*>&email=<*CTX( Visitor.Email )*>&phone=<*CTX( Visitor.Phone )*>&fax=<*
CTX( Visitor.Fax )*>&address.street=<*CTX( Visitor.Address1 )*>&address.city=<*CTX( Visitor.City )*>&last=<*
CTX( Visitor.LastName )*>&stateName=<*CTX( Visitor.State )*>&countryName=<*CTX( Visitor.Country)*>&a
ddress.zip=<*CTX( Visitor.ZipCode )*>

Notice that SAP CPQ customer portal receives various parameters, such as first name, email, phone number,
street address, etc.

9.9 Time Zones

If your company has departments in different countries, in different time zones, or simply your users are
scattered around the world, SAP CPQ can be set up SAP CPQ to display information in their own time zone.

SAP CPQ administrators can set time zone globally - at the tenant level or at the user level. Once set globally,
the time zone is applied for each user. If some user needs different time zone it can be set by SAP CPQ
administrator, or by the user if they are allowed.

Setting Time Zone at tenant level

To set default time zone at the tenant level, go to Setup General Application Parameters , then under
“General Parameters” tab find the parameter “Default Time Zone” and make the desired selection. This will
apply the defined default time zone to all users.

Setting Time Zone at user level

As an SAP CPQ administrator you are allowed to set time zone for each user separately. You can decide
whether the user can change time zone on its own or not.

SAP CPQ Setup and Administration Guide


602 PUBLIC General Settings
Administrators can also set the time zone for multiple users in bulk - using the import/export feature. The user
import/export template contains two columns for this purpose: timezone and Allow timezone change.

In user import/export template there is a sheet labeled ”timezones”. This sheet contains information about all
SAP CPQ system timezones that you can enter in the sample template column Timezone under the users
sheet.

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 603
Users that are allowed to change their time zone can change it by selecting the desired time zone from the
drop-down list on the User Page.

Users that are not allowed to change their time zone by the administrator will have the user time zone field
disabled in the User Page.

SAP CPQ Setup and Administration Guide


604 PUBLIC General Settings
When a user creates a quote, all date information will be presented in their selected time zone. When user goes
to the load quote page, they will see the list of quotes - their own and from the others. For each quote, ”Date
Created” field will be presented to the user is in their selected time zone.

Example
User1 has created the quote in PST time zone on 06JUL2016 at 23:57:16.

User2 is in CET time zone. User2 will see that User1’s quote was created on 07JUL2016 at 08:57:16.

The same rule applies for Date Modified field. Otherwise, you can disable timezone conversion for fields which
contain date-only information (to ensure that the same date is displayed to all users regardless of their
timezones) via General Application Parameters General Parameters Disable timezone conversion for
date field . Timezone conversion is always disabled for those fields in Quote 2.0.

CTX Tags and Time Zones

Time zones are supported by the CTX tag. CTX Tag can be instructed to return the time zone value of a Quote
custom field that is of type Date.

CTX Tag Description

<*CTX( Date(09/13/2011).InUsertimezone)* Displays provided time in user time zone


>

<*CTX( Quote.CustomField(QuoteCustomFiel Displays value of QuoteCustomField in user time zone


d).InUsertimezone )*>

<*CTX(Quote.CurrentItem.CustomField(Quot Displays value of QuoteItemCustomField in user time


eItemCustomField).InUsertimezone)*> zone

SAP CPQ Setup and Administration Guide


General Settings PUBLIC 605
Iron Python Scripting and Time Zones

Iron Python Scripting now exposes the timezone property in the IUser interface. It can be used in scripts to
ensure that the result of the script execution will be presented to the user in the selected time zone.
The next line of Iron Python code will return the users time zone and set the content of the custom field named
Quote message:

Quote.GetCustomField('Quote message').Content = User.timezone.Id

SAP CPQ Setup and Administration Guide


606 PUBLIC General Settings
10 Scripting

In SAP CPQ scripts are managed in Setup under Develop Global Scripts .

 Note

A more detailed documentation for scripting is available on the dedicated Scripting page.

Details regarding all the scripts in the system are displayed in the following columns:

● Name - The name of the script.


● Execution Time - The execution event when the script is executed. The following available events trigger
scripts at a precise time:
○ Every time quote is changed - after each change on the quote that affects the Date Modified field.
○ Quote creation/edit
○ Quote creation - immediately after a quote is created.
○ Quote edit - after the action Edit quote is executed.
○ After adding products to quote
○ After adding products to quote - each time an item is added. If several items are added at once
(from catalog or through bulk validation), the scripts are executed after the last item (not after
each item is added).
○ After editing products in quote - after a user finishes editing a product in the quote.
○ After copying products from quote - after a user copies a product in the quote.
○ After deleting products from quote - after a user deletes an item in the quote. If several items are
deleted at once, the scripts are executed after all items are deleted.
○ After changing the value of custom fields - when a particular custom field is changed. For events that
are triggered when a custom field is altered, you are able to select the custom field from the system.
○ Custom fields calculation - after users choose the calculation type.
○ Before custom field calculation - before the formula is calculated.
○ After custom field calculation - after the formula is calculated.
○ When a user is on quotation tab - when a user is on a particular tab in the quote. As soon as a user
clicks on the particular tab, SAP CPQ executes the scripts specified for the tab. When the user clicks
Save on this tab, the scripts specified for the tab are executed. The event is executed in the following
tabs: Additional Info, Customer Info, Documents, Quotation and Quotation.
○ When quote layout is rendered - when the customization related to the layout of the quote (modify XML
and add additional data) that cannot be accomplished with simple changes to quote XSLT is
performed. The event is deprecated in the new SAP CPQ layout.
○ When catalog layout is rendered - when the customization related to the catalog of the quote (modify
XML and add additional data) that cannot be accomplished with simple changes to quote XSLT is
performed. The event is deprecated in the new SAP CPQ layout.
○ On product xml serialization start - before the xml serialization starts.
○ On product xml serialization end - when the xml serialization finishes.
○ When product is ready - executed after a product is loaded and configured (if configurable), but before
it is added to a quote.

SAP CPQ Setup and Administration Guide


Scripting PUBLIC 607
○ When product is loaded - executed after a product is loaded, configured (if configurable) and added to
a quote.
○ On Arrive From CRM - when users have arrived from SAP CPQ.
○ On Customer Mappings - when creating and assigning customers to quotes.
○ On Quote Fields Mappings - when retrieving different quote fields from CRM.
○ On Landing From CRM - chronologically, happens before arriving from CRM and after the
authentication handshake. This event has the request context.
○ On CRM Item Mappings - when sending items from SAP CPQ to Salesforce. Applicable only when SAP
CPQ is integrated with Salesforce.
○ On Asset Created - after the action Create Assets is triggered.
○ On user Login - when users log into SAP CPQ.
○ On customer change - when the Bill To, Ship To and End User customers are changed.
○ Document Sent To Customer - in the last step of the Document Generation process. Administrators can
define a script that changes the status of the quote to Sent to Customer.
○ On Quote Tab Changed - when moving to a quote tab (e.g. a script can be executed to create a quote
table in the current tab).
○ Before Quote Rendering - every time a user makes any change on a quote. For example, if the visibility
of a custom field is set in a script, administrators can attach that script to this new event. That way,
they make sure the field is always visible, regardless of the changes that users make on the quote.

When multiple scripts are attached to an event, it is possible to change their execution order by clicking the
event > Execution order.

● Code - holds code in Iron Python script language.


● Description
● Active - false and true.
● Module - false and true.
● Modified Date - the date when the script was last updated.
● Modified By - the name of the user who last modified the script.

Create a Script [page 609]


A script contains a series of commands that can be executed without being compiled. SAP CPQ
provides a user-friendly interface for administrators to create and manage scripts.

Custom Actions [page 612]


SAP CPQ offers flexible way to meet custom demands for various functionalities that are not part of the
standard software version. This is achieved by implementing custom actions – parts of code that
contain processing logic for appropriate functionalities.

Custom Calculations [page 614]


Administration for custom quote calculations can be found under SAP CPQ Setup Develop
Custom Quote Calculations .

Script Workbench [page 615]


Script Workbench is available for administrators to help them debug and develop their scripts. It can be
accessed through Scripts developing and editing page within SAP CPQ Setup, or from user view under
the top menu.

SAP CPQ Setup and Administration Guide


608 PUBLIC Scripting
10.1 Create a Script

A script contains a series of commands that can be executed without being compiled. SAP CPQ provides a
user-friendly interface for administrators to create and manage scripts.

1. In Setup, access Develop Global Scripts .


2. Click Add New.
A page with three tabs displays:
○ Script - for creating and editing scripts
○ Events - for tying a script to an event
○ History - for displaying all the versions of the script and the time and date of its creation/editing
3. Define Rule Name.
4. (Optional) Describe the script in Description.
5. Select Active if you wish the script to be active in the system.
6. Select Module to use the code in other scripts.
Scripts that have this option selected cannot be used independently, but only as a part of other scripts.
7. Define the start and end date of the script.
These fields are disabled if Module is selected.
The Modified by and Modified on are disabled and the system automatically populates them once the script
is saved.
8. In the Scripting Code section, choose the script engine type.
SAP CPQ currently supports IronPython for creating scripts.
9. (Optional) Select Force Proxy Generation to load and refresh the WSDL web services as the system does
not do it by default.
The checkbox needs to be selected only once when the script is saved for the first time.
10. Write your script in the Script box.
11. Click Save.

 Note

Using IronPython in SAP CPQ is limited as the system does not support standard IronPython modules. You
cannot add external .NET and complex IronPython modules to SAP CPQ scripts. However, in basic user
scenarios, you can paste the content of a simple module (without dependencies on other modules) into the
SAP CPQ script module and the system will process it properly.

When an administrator is creating a new script and clicks on Attach to Event, SAP CPQ saves the new script.
The administrator is not allowed to move to the Events tab unless the script name is properly defined. When
creating a script, users can click Check Syntax to validate the script.

The screenshot below shows the interface when the script syntax is correct:

SAP CPQ Setup and Administration Guide


Scripting PUBLIC 609
The following screenshots show the interface when a script contains errors:

 Note

The flag ITrace.IsOn, which is available in scripting, indicates whether tracing is turned on or off. With the
help of this flag, users can organize the logic that is related to tracing and thus optimize script execution
time.

SAP CPQ Setup and Administration Guide


610 PUBLIC Scripting
Saving Quotes on Events

The table below shows which elements of quotes are automatically saved after some events are triggered. The
data in the table is useful when creating scripts so you know when to include the Save action.

Events Custom Fields Line Items Product Types Totals Quote Tables

After adding Saved Saved Saved Saved


products to quote

After editing Saved Saved Saved Saved


products in quote

After deleting Saved


products from
quote

After copying Saved


products in quote

After changing
value of custom
fields

Quote creation

Quote edit Saved

On user Login

On customer
change

Document Sent To
Customer

On Quote Tab
Changed

When Excel is
uploaded into a
Quote Table

Exceptions for Quote.Save() Pipeline Execution

When certain parts of a quote are changed, calculations need to be performed and changes saved. As this does
not require all events from the pipeline to be triggered, some of them can be skipped. This is determined by the
Quote.Save() parameter. This parameter is by default set to True, which causes the entire pipeline to be
executed whenever changes on quote are saved. If the Quote.Save() parameter is set to False, the following
events will not be triggered:

● Quote creation
● Before custom field calculation
● After custom field calculation
● Every time quote is changed

SAP CPQ Setup and Administration Guide


Scripting PUBLIC 611
● When user is on quotation tab

Forbidden .NET Classes and Namespaces

The following .NET namespaces and classes are forbidden in IronPython scripts:

● System.IO
● System.Data
● System.Configuration
● Webcom.Configurator.Util.ConnectionStringProvider
● System.Environment
● System.GC

These namespaces and classes were available before the 1902 release, so administrators may had used them
in client scripts. In such cases, errors will display after the 1902 release when administrators save those scripts.

If there are scripts that contain System import * and Webcom.Configurator.Util import * and any of the words
from the forbidden classes, the system disables saving scripts (for example, saving is disabled if there is
System import * and Data in the same script).

For troubleshooting, please contact the SAP CPQ Support team.

10.2 Custom Actions

SAP CPQ offers flexible way to meet custom demands for various functionalities that are not part of the
standard software version. This is achieved by implementing custom actions – parts of code that contain
processing logic for appropriate functionalities.

Custom actions can be used in the quote workflow as any other standard quote action, they can be set up as
pre or post action. Also email notifications can be attached to them.

Typically , these actions are used for integration with other external systems – like ERP system. For example,
one custom action could contain code that would send relevant quote information to the product manufacturer
and/or distributor software, after the order is placed on that quote in SAP CPQ.

Administration for custom actions can be found under SAP CPQ Setup Develop Custom actions . When
user clicks on sub-menu Custom actions, table with all custom actions developed by the admin is displayed.
Admin is able to translate action names by clicking on the ‘Translate’ icon, edit action by clicking on the ‘Edit’
action button, delete action by clicking on ‘Delete’ action button and create new action by clicking on the ‘Add
New’ button.

No standard SAP CPQ actions is displayed on this page. Custom actions defined by the admin are not
displayed in SAP CPQ Setup Workflow/Approvals Actions .

Admin is able to use these actions in SAP CPQ Setup Workflow/Approvals Workflow and to define
permissions for the action in SAP CPQ Setup Workflow/Approvals Workflow Permissions .

SAP CPQ Setup and Administration Guide


612 PUBLIC Scripting
 Note

When defining Workflow transition for some custom action, in order to change quote status that action as
last row should include WorkflowContext.ChangeQuoteStatus = True.

When admin adds new/edits custom action, page is displayed where admin is able to:

● Define action name (required)


● Order within quote
● Whether it is a primary action or not (selected by default)
● Image for the action
● Global condition for action (empty by default)
● Pre-action condition (empty by default)
● Post-action condition (empty by default)
● Script engine type (currently only Python)
● Script

Action is always set up so that it can be set as pre or post action. Placement is set to the quote (Cart)
automatically, and admin is able to change that.

SAP CPQ Setup and Administration Guide


Scripting PUBLIC 613
10.3 Custom Calculations

Administration for custom quote calculations can be found under SAP CPQ Setup Develop Custom
Quote Calculations .

 Note

Documentation for scripting can be found on this page .

When user clicks on sub-menu Custom Quote Calculations, table with all custom quote calculations is
displayed. Admin is able to edit calculation by clicking on the ‘Edit’ action button, delete calculation by clicking
on the ‘Delete’ action button or create new calculation by clicking on the ‘Add New’ button.

Administrator will be able to define:

● Calculation name (required)


● Active (checked by default)
● Row Type (Cart Item selected by default, Product Type Item or Cart Total)
● Script Engine Type (only Python available currently)
● Description
● Script

SAP CPQ Setup and Administration Guide


614 PUBLIC Scripting
10.4 Script Workbench

Script Workbench is available for administrators to help them debug and develop their scripts. It can be
accessed through Scripts developing and editing page within SAP CPQ Setup, or from user view under the top
menu.

Iron Python Scripts have always been a powerful tool for SAP CPQ customization, so they’re well adopted by
SAP CPQ administrators and used frequently to complete a various kinds of tasks. Writing Iron Python (IP)
script can be exhaustive due to its syntax and indentation rules. Therefore, SAP CPQ introduces Script
Workbench along with some additional features that make writing scripts easier.

Note that if an administrator is in the middle of editing or developing a script, once the link Workbench is
clicked, the script is loaded into the workbench. There’s no fear that the script will be lost.

On the setup side, there are two more links beside link for starting the workbench. Clicking on the first link
“Open in new window” will open the API explorer in a new window. API explorer is a helpful reference on
Scripting API for SAP CPQ administrators. Clicking on the link “Open”, API explorer is open next to the
workbench window. “API explorer” represents a helpful Scripting reference with the descriptions on each
method that can help you while trying to recall how to retrieve some information.

Workbench is available in both – Classic and Responsive Design.

SAP CPQ Setup and Administration Guide


Scripting PUBLIC 615
There are two modes under which the workbench can operate. One mode is “Standard” and another is “Test”.
Standard mode should be used when writing, editing and debugging any script, since it provides more useful
snippets than the “Test” mode.

“Test” mode should be used when writing tests for your model and when executing them. Note that in this
mode, many API objects aren’t available since you’re able to only test your model, not the particular quote.
Therefore, if you open workbench in order to help you during writing the script, make sure that you select
“Standard” mode. This way you will be able to use all objects that are exposed through Scripting API. If you are
in “Test” mode, some objects (for example Quote) are not available and you will get an error when executing
the script.

While debugging, useful information is displayed under script edit area. All local variables are automatically
traced. Any syntax error you might have in your script is going to be displayed as well. This helps you a lot to
find the root cause of script problems, and shortens time to develop the script.

API Snippets

Beside the previously mentioned API explorer, you are introduced with API snippets. In the screenshot below
we wrote IP command to retrieve a custom field’s content with the help of “API snippets”. “API snippets” is a
practical way to quickly create chunks of API code by selecting through a series of drop down boxes and
inserting it to the editor. Note that “API snippets” is available in both, “Test” and “Standard” mode.

SAP CPQ Setup and Administration Guide


616 PUBLIC Scripting
Alias Snippets

“Alias snippets” provides you with the most used functions on different SAP CPQ entities (products, attributes,
customer, etc.). Similar to “API snippets”, you are able to select the appropriate function from the list and then
narrow your selection by selecting through the rest of drop down boxes. As soon as you construct the desired
method, you can insert it into the script editor using either “Insert at cursor” or “Add as new line” button.

SAP CPQ Setup and Administration Guide


Scripting PUBLIC 617
Python Snippets

“Python snippets” provides you with the list of simple Iron Python language specific constructions that are
frequently used while writing a script. For example, if you want to write an “if else if” statement, you can pick it
from the list and insert into the editor.

SAP CPQ Setup and Administration Guide


618 PUBLIC Scripting
Writing Tests

From time to time, it might be very convenient to have a test that you can execute and therefore test your
model. Now you can write a test in the workbench and execute it. Once the execution is complete, you are
informed on the execution result. If test fails you are informed on the reason through the information displayed
in the workbench. When you write tests, you must be in “Test” mode.

A new Scripting object has been introduced that comprises a list of useful methods for writing tests. The
objects name is IAssert. A detailed documentation on this object can be found at this location in SAP CPQ
scripting help: IAssert Interface .

 Note

Whenever a quote is edited via the Script Workbench, all changes are logged in Audit Trail User
Actions .

SAP CPQ Setup and Administration Guide


Scripting PUBLIC 619
11 SAP CPQ Tags

This section contains the list of all CTX tags, as well as ways in which various types of tags can be used in SAP
CPQ.

Conditional Statements [page 620]


Conditional statements are an integral part of SAP CPQ modeling and configuration. These statements
can be used in any part of SAP CPQ.

CTX Tags [page 622]


CTX tags are used for retrieving certain values from various parts of SAP CPQ.

Product Model Object Tags [page 694]

Quote Generation Tags [page 701]

Shopping Cart Object Tags [page 703]


These tags are generally used in visibility and approval rules. They can only be used outside of product
configuration and they will not work in product rules, descriptions, and so on.

Tags for Rules and Triggers [page 708]

GI Tags [page 714]

Main Item Price Tag [page 714]


The purpose of this feature is to develop new product tag that will return product price excluding line
items.

XWS Tag [page 715]


XWS tag may have one or more parameters. First parameter is function name. Other parameters are
optional and represent parameters passed to the specified function. Other than that, it supports
several standard functions it’s a gateway from Configurator to external resources like web services from
another systems.

11.1 Conditional Statements

Conditional statements are an integral part of SAP CPQ modeling and configuration. These statements can be
used in any part of SAP CPQ.

This includes product modeling areas (rules, hidden calculations, labels, pricing expression, attribute
descriptions), workflow areas (approval rules, discounting rules, visibility rules, actions conditions) and any
other area of SAP CPQ that has an input area.

Conditional statements are written in an “IF” format: [If](condition){expression if true}


{expression if false –note this is optional}[ENDIF]

A basic statement must have a beginning [IF] tag that ends with an [ENDIF] tag. The condition area must
contain an expression that will resolve to true or false. If true then any expression in the first set of curly
brackets will be used or performed, depending on what is included. If the condition statement is false then any

SAP CPQ Setup and Administration Guide


620 PUBLIC SAP CPQ Tags
expression in the second set of curly brackets will be used or performed. Since the second set of curly brackets
is optional, though, if they are not used when a statement is false then no action will be performed.

 Note

Standard mathematical and programming operators such as >, <, =, = cannot be used in conditional
statements. SAP CPQ uses its own operators to perform these actions.

11.1.1 Operators

Operator Description Syntax

[AND] Joins multiple conditions. When used, [AND](condition 1,condition


all conditions must be true for 2,condition 3)
expression if true section to be
performed.

[OR] Joins multiple conditions. When used, [OR](condition 1,condition 2,condition


at least one condition must be true for 3)
expression if true section to be
performed.

[LT] Equivalent to the ”<” operator, this [LT](value 1,value 2)


returns whether one value is less than
another value.

[GT] Equivalent to the ”>” operator, this [GT](value 1,value 2)


returns whether one value is greater
than another value.

[GEQ] Equivalent to ”>=”, this returns whether [GEQ](value 1,value 2)


one value is greater than or equal to
another value.

[LEQ] Equivalent to ”⇐”, this returns whether [LEQ](value 1,value 2)


one value is less than or equal to
another value.

[INR] Returns whether a value is between a [INR](value, bottom value,top value)


bottom value and a top value. If the
value equals the bottom or top value,
then true will be returned.

[IN] Returns whether a value equals a value [IN](value, value 1,value 2,value 3,…)
in a list of values.

[LIKE] Returns 1 if the second value is [LIKE](value 1, value 2)


contained in the first value.

[BEGW] Returns 1 if the first value begins with [BEGW](value 1, value 2)


the second value.

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 621
11.2 CTX Tags

CTX tags are used for retrieving certain values from various parts of SAP CPQ.

CTX tag should be formed in a standard way:

<*CTX(parameter)*>

The parameter is a specification of what value should be returned. It is a dot separated list of objects, sub
objects and property names. Each object may have sub objects and properties. Properties are terminals – this
means that CTX tag param may end with it.

In short this is the CTX param object structure:

● Quote
○ Total
○ CurrentItem
○ KeyAttribute
○ ProductType
○ Customer
○ Revision
○ Owner
○ UserType
○ Company
○ Territory
○ ManagingParent
○ OrderingParent
○ ApprovalParent
○ SelectedMarket
○ SelectedShipping
● SFDC
○ Opportunity
○ Account
● SOD
○ Account
○ Opportunity
● Visitor
○ UserType
○ Company
○ Territory
○ ManagingParent
○ OrderingParent
○ ApproveParent
● Date
● Container

SAP CPQ Setup and Administration Guide


622 PUBLIC SAP CPQ Tags
● MyContainer
● Product
○ PartNumber
○ SystemId
● Pricebook
○ Name
○ DistributionChannel
○ Code

Each of these objects has corresponding properties. Quote sub objects have cart cells as sub objects, for
example Quote.Total.CartComment. Cart cell objects that are decimals, like prices, have fixed four sub
tags:

● DefaultDisplay – returns decimal in default currency formatted as displayed on cart


● DefaultDecimal – returns decimal in default currency in numeric en-US format without 1000 separators
and with two decimals
● MarketDecimal – returns decimal in cart currency formatted as displayed on cart
● MarketDisplay – returns decimal in cart currency in numeric en-US format without 1000 separators and
with two decimals

For example, display is on three decimals, cart is in Euro currency, default is US Dollar:

<*CTX(Quote.Total.TotalAmount.DefaultDisplay)*> 2,345.678

<*CTX(Quote.Total.TotalAmount.DefaultDecimal)*> 2345.68

<*CTX(Quote.Total.TotalAmount.MarketDisplay)*> 1,503.639

<*CTX(Quote.Total.TotalAmount.MarketDecimal)*> 1503.64

Several tags, like:

● Quote.ProductType()
● Quote.CustomField()
● Quote.Customer()

Have a parameter in the brackets. With this parameter you may specify which instance of the object should be
returned.

Example

Quote.ProductType(Software).ListSubTotal.MarketDecimal will return total list price of the


“Software” product type.

Quote.CustomField(Terms) will return the value of the “Terms” quote custom field (sc param).

Quote customers should be referred by the role name:

● BillTo
● ShipTo
● EndUser

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 623
Example

Quote.Customer(BillTo).FirstName will return first name of the quote bill to customer.

Quote.CurrentItem.CartItemGuid will return unique identifier for an item in the cart.

Quote.DocumentFormat will return the file format (PDF, DOCX) of generated document.

Date tag returns current date/time.

Date/Time fields have optional Format child tag. It expects format string in argument that affects the way value
is shown.

For example, for January 19th 2009:

Date.Format(yyyy.MM.dd) 2009.01.19

Quote.DateCreated.Format(MM-dd-yy) 01-19-09

Container tag should be used in a product to access its container attributes.

Example

Use <*CTX(Container(Users).Rows.GetCount)*> in a product that has “Users” attribute container to get


number of rows in that container, or

Use <*CTX(Container(Users).Property(X).Set(<*Value(memory)*>)*> in a product that has


“Users” attribute container to set its property “X” to a value of “Memory” attribute of that same product.

The MyContainer tag should be used in an attribute container to access its own members, or in the product
that will be used as a container row to access parent container.

Your other option is to use it to define basic product info in the product by accessing the container in which the
product is located.

The parent container can be accessed from the child product, but only the basic info. By basic info we mean the
following: description, part number, etc. The product attribute or container of a child product cannot evaluate
the MyContainer tag in order to pull values from the parent container info.

Example

Use <*CTX(MyContainer.CurrentRow.Column(A).Get)*> in a column B calculation formula to set B


column to the same value as A column, or

Use <*CTX(MyContainer.Property(X).Get)*> in a column B calculation formula to set B column to the


same value as property X

 Note

Use this tag only when you have a product in the container, otherwise you might end up with unexpected
behavior.

SAP CPQ Setup and Administration Guide


624 PUBLIC SAP CPQ Tags
SFDC and SOD objects exists only if the SAP CPQ tenant is set to use them. They are exclusive – a tenant can
integrate with only one of them at once. If integration is not set usage of these tags will make syntax error in the
formula – using these tags is invalid if integration is not set.

Sample 1

Free form attribute in configuration to have a value of some SOD Opportunity field. Make a rule with following
action <*ASSIGNFF(SomeAttribute:<*CTX(SOD.Opportunity.Description)*>)*>

Sample 2

Action depends on an SOD Account field In the workflow condition for the action put following formula
<*CTX(SOD.Account.Description)*>

11.2.1 Complete Tag List

Quote.InProject

Quote.CurrentItem.AttributeRank

Quote.CurrentItem.AttributeSubRank

Quote.CurrentItem.IsMainItem

Quote.CurrentItem.IsChildItem

Quote.CurrentItem.SystemID

Quote.CurrentItem.IsAlternative

Quote.CurrentItem.IsVariant

Quote.CurrentItem.RolledUpEndCustomerUnitPrice

Quote.CurrentItem.RolledUpEndCustomerUnitPrice.DefaultDisplay

Quote.CurrentItem.RolledUpEndCustomerUnitPrice.DefaultDecimal

Quote.CurrentItem.RolledUpEndCustomerUnitPrice.MarketDecimal

Quote.CurrentItem.RolledUpEndCustomerUnitPrice.MarketDisplay

Quote.CurrentItem.RolledUpEndCustomerExtendedPrice

Quote.CurrentItem.RolledUpEndCustomerExtendedPrice.DefaultDisplay

Quote.CurrentItem.RolledUpEndCustomerExtendedPrice.DefaultDecimal

Quote.CurrentItem.RolledUpEndCustomerExtendedPrice.MarketDecimal

Quote.CurrentItem.RolledUpEndCustomerExtendedPrice.MarketDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 625
Quote.CurrentItem.RolledUpListPrice

Quote.CurrentItem.RolledUpListPrice.DefaultDisplay

Quote.CurrentItem.RolledUpListPrice.DefaultDecimal

Quote.CurrentItem.RolledUpListPrice.MarketDecimal

Quote.CurrentItem.RolledUpListPrice.MarketDisplay

Quote.CurrentItem.RolledUpExtendedListPrice

Quote.CurrentItem.RolledUpExtendedListPrice.DefaultDisplay

Quote.CurrentItem.RolledUpExtendedListPrice.DefaultDecimal

Quote.CurrentItem.RolledUpExtendedListPrice.MarketDecimal

Quote.CurrentItem.RolledUpExtendedListPrice.MarketDisplay

Quote.CurrentItem.RolledUpNetPrice

Quote.CurrentItem.RolledUpNetPrice.DefaultDisplay

Quote.CurrentItem.RolledUpNetPrice.DefaultDecimal

Quote.CurrentItem.RolledUpNetPrice.MarketDecimal

Quote.CurrentItem.RolledUpNetPrice.MarketDisplay

Quote.CurrentItem.RolledUpExtendedAmount

Quote.CurrentItem.RolledUpExtendedAmount.DefaultDisplay

Quote.CurrentItem.RolledUpExtendedAmount.DefaultDecimal

Quote.CurrentItem.RolledUpExtendedAmount.MarketDecimal

Quote.CurrentItem.RolledUpExtendedAmount.MarketDisplay

Quote.CurrentItem.RolledUpCost

Quote.CurrentItem.RolledUpCost.DefaultDisplay

Quote.CurrentItem.RolledUpCost.DefaultDecimal

Quote.CurrentItem.RolledUpCost.MarketDecimal

Quote.CurrentItem.RolledUpCost.MarketDisplay

Quote.CurrentItem.RolledUpExtendedCost

Quote.CurrentItem.RolledUpExtendedCost.DefaultDisplay

Quote.CurrentItem.RolledUpExtendedCost.DefaultDecimal

Quote.CurrentItem.RolledUpExtendedCost.MarketDecimal

Quote.CurrentItem.RolledUpExtendedCost.MarketDisplay

Quote.CurrentItem.RolledUpGrossMargin

Quote.CurrentItem.RolledUpGrossMargin.DefaultDisplay

Quote.CurrentItem.RolledUpGrossMargin.DefaultDecimal

SAP CPQ Setup and Administration Guide


626 PUBLIC SAP CPQ Tags
Quote.CurrentItem.RolledUpGrossMargin.MarketDecimal

Quote.CurrentItem.RolledUpGrossMargin.MarketDisplay

Quote.CurrentItem.RolledUpDiscountAmount

Quote.CurrentItem.RolledUpDiscountAmount.DefaultDisplay

Quote.CurrentItem.RolledUpDiscountAmount.DefaultDecimal

Quote.CurrentItem.RolledUpDiscountAmount.MarketDecimal

Quote.CurrentItem.RolledUpDiscountAmount.MarketDisplay

Quote.CurrentItem.RolledUpDiscountPercent

Quote.CurrentItem.RolledUpDiscountPercent.DefaultDisplay

Quote.CurrentItem.RolledUpDiscountPercent.DefaultDecimal

Quote.CurrentItem.RolledUpDiscountPercent.MarketDecimal

Quote.CurrentItem.RolledUpDiscountPercent.MarketDisplay

Quote.CurrentItem.NetAmountDifferenceFromBaseItem

Quote.CurrentItem.NetAmountDifferenceFromBaseItem.DefaultDisplay

Quote.CurrentItem.NetAmountDifferenceFromBaseItem.DefaultDecimal

Quote.CurrentItem.NetAmountDifferenceFromBaseItem.MarketDecimal

Quote.CurrentItem.NetAmountDifferenceFromBaseItem.MarketDisplay

Quote.CurrentItem.RolledUpNetDifferenceFromBaseItem

Quote.CurrentItem.RolledUpNetDifferenceFromBaseItem.DefaultDisplay

Quote.CurrentItem.RolledUpNetDifferenceFromBaseItem.DefaultDecimal

Quote.CurrentItem.RolledUpNetDifferenceFromBaseItem.MarketDecimal

Quote.CurrentItem.RolledUpNetDifferenceFromBaseItem.MarketDisplay

Quote.CurrentItem.RolledUpCartItem

Quote.CurrentItem.Rank

Quote.CurrentItem.ParentItem

Quote.CurrentItem.CartItem

Quote.CurrentItem.Quantity

Quote.CurrentItem.Quantity.DefaultDisplay

Quote.CurrentItem.Quantity.DefaultDecimal

Quote.CurrentItem.Quantity.MarketDecimal

Quote.CurrentItem.Quantity.MarketDisplay

Quote.CurrentItem.PartNumber

Quote.CurrentItem.Cost.DefaultDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 627
Quote.CurrentItem.Cost.DefaultDecimal

Quote.CurrentItem.Cost.MarketDecimal

Quote.CurrentItem.Cost.MarketDisplay

Quote.CurrentItem.ExtendedCost.DefaultDisplay

Quote.CurrentItem.ExtendedCost.DefaultDecimal

Quote.CurrentItem.ExtendedCost.MarketDecimal

Quote.CurrentItem.ExtendedCost.MarketDisplay

Quote.CurrentItem.ProductModelPrice.DefaultDisplay

Quote.CurrentItem.ProductModelPrice.DefaultDecimal

Quote.CurrentItem.ProductModelPrice.MarketDecimal

Quote.CurrentItem.ProductModelPrice.MarketDisplay

Quote.CurrentItem.ProductCost.DefaultDisplay

Quote.CurrentItem.ProductCost.DefaultDecimal

Quote.CurrentItem.ProductCost.MarketDecimal

Quote.CurrentItem.ProductCost.MarketDisplay

Quote.CurrentItem.PromoDiscountAmount.DefaultDisplay

Quote.CurrentItem.PromoDiscountAmount.DefaultDecimal

Quote.CurrentItem.PromoDiscountAmount.MarketDecimal

Quote.CurrentItem.PromoDiscountAmount.MarketDisplay

Quote.CurrentItem.PromoDiscountPercent.DefaultDisplay

Quote.CurrentItem.PromoDiscountPercent.DefaultDecimal

Quote.CurrentItem.PromoDiscountPercent.MarketDecimal

Quote.CurrentItem.PromoDiscountPercent.MarketDisplay

Quote.CurrentItem.ListPrice.DefaultDisplay

Quote.CurrentItem.ListPrice.DefaultDecimal

Quote.CurrentItem.ListPrice.MarketDecimal

Quote.CurrentItem.ListPrice.MarketDisplay

Quote.CurrentItem.BaseListPrice.DefaultDisplay

Quote.CurrentItem.BaseListPrice.DefaultDecimal

Quote.CurrentItem.BaseListPrice.MarketDecimal

Quote.CurrentItem.BaseListPrice.MarketDisplay

Quote.CurrentItem.ExtendedListPrice.DefaultDisplay

Quote.CurrentItem.ExtendedListPrice.DefaultDecimal

SAP CPQ Setup and Administration Guide


628 PUBLIC SAP CPQ Tags
Quote.CurrentItem.ExtendedListPrice.MarketDecimal

Quote.CurrentItem.ExtendedListPrice.MarketDisplay

Quote.CurrentItem.DiscountPercent.DefaultDisplay

Quote.CurrentItem.DiscountPercent.DefaultDecimal

Quote.CurrentItem.DiscountPercent.MarketDecimal

Quote.CurrentItem.DiscountPercent.MarketDisplay

Quote.CurrentItem.UnitDiscountAmount.DefaultDisplay

Quote.CurrentItem.UnitDiscountAmount.DefaultDecimal

Quote.CurrentItem.UnitDiscountAmount.MarketDecimal

Quote.CurrentItem.UnitDiscountAmount.MarketDisplay

Quote.CurrentItem.DiscountAmount.DefaultDisplay

Quote.CurrentItem.DiscountAmount.DefaultDecimal

Quote.CurrentItem.DiscountAmount.MarketDecimal

Quote.CurrentItem.DiscountAmount.MarketDisplay

Quote.CurrentItem.Multiplier.DefaultDisplay

Quote.CurrentItem.Multiplier.DefaultDecimal

Quote.CurrentItem.Multiplier.MarketDecimal

Quote.CurrentItem.Multiplier.MarketDisplay

Quote.CurrentItem.UnitMultiplierAmount.DefaultDisplay

Quote.CurrentItem.UnitMultiplierAmount.DefaultDecimal

Quote.CurrentItem.UnitMultiplierAmount.MarketDecimal

Quote.CurrentItem.UnitMultiplierAmount.MarketDisplay

Quote.CurrentItem.MultiplierAmount.DefaultDisplay

Quote.CurrentItem.MultiplierAmount.DefaultDecimal

Quote.CurrentItem.MultiplierAmount.MarketDecimal

Quote.CurrentItem.MultiplierAmount.MarketDisplay

Quote.CurrentItem.NetPrice.DefaultDisplay

Quote.CurrentItem.NetPrice.DefaultDecimal

Quote.CurrentItem.NetPrice.MarketDecimal

Quote.CurrentItem.NetPrice.MarketDisplay

Quote.CurrentItem.ExtendedAmount.DefaultDisplay

Quote.CurrentItem.ExtendedAmount.DefaultDecimal

Quote.CurrentItem.ExtendedAmount.MarketDecimal

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 629
Quote.CurrentItem.ExtendedAmount.MarketDisplay

Quote.CurrentItem.ManufacturesGrossMargin.DefaultDisplay

Quote.CurrentItem.ManufacturesGrossMargin.DefaultDecimal

Quote.CurrentItem.ManufacturesGrossMargin.MarketDecimal

Quote.CurrentItem.ManufacturesGrossMargin.MarketDisplay

Quote.CurrentItem.ChannelMarkupPercent.DefaultDisplay

Quote.CurrentItem.ChannelMarkupPercent.DefaultDecimal

Quote.CurrentItem.ChannelMarkupPercent.MarketDecimal

Quote.CurrentItem.ChannelMarkupPercent.MarketDisplay

Quote.CurrentItem.ChannelMarkupAmount.DefaultDisplay

Quote.CurrentItem.ChannelMarkupAmount.DefaultDecimal

Quote.CurrentItem.ChannelMarkupAmount.MarketDecimal

Quote.CurrentItem.ChannelMarkupAmount.MarketDisplay

Quote.CurrentItem.EndUserNet.DefaultDisplay

Quote.CurrentItem.EndUserNet.DefaultDecimal

Quote.CurrentItem.EndUserNet.MarketDecimal

Quote.CurrentItem.EndUserNet.MarketDisplay

Quote.CurrentItem.EndUserExtendedAmount.DefaultDisplay

Quote.CurrentItem.EndUserExtendedAmount.DefaultDecimal

Quote.CurrentItem.EndUserExtendedAmount.MarketDecimal

Quote.CurrentItem.EndUserExtendedAmount.MarketDisplay

Quote.CurrentItem.ChannelMarginPercent.DefaultDisplay

Quote.CurrentItem.ChannelMarginPercent.DefaultDecimal

Quote.CurrentItem.ChannelMarginPercent.MarketDecimal

Quote.CurrentItem.ChannelMarginPercent.MarketDisplay

Quote.CurrentItem.IsOptional

Quote.CurrentItem.MarginHealthColor

Quote.CurrentItem.MarginHealthImage

Quote.CurrentItem.MRCMarginHealthColor

Quote.CurrentItem.MRCMarginHealthImage

Quote.CurrentItem.MasterParentItem

Quote.CurrentItem.ProductTypeName

Quote.CurrentItem.ProductTypeId

SAP CPQ Setup and Administration Guide


630 PUBLIC SAP CPQ Tags
Quote.CurrentItem.ChannelCommisionPercent.DefaultDisplay

Quote.CurrentItem.ChannelCommisionPercent.DefaultDecimal

Quote.CurrentItem.ChannelCommisionPercent.MarketDecimal

Quote.CurrentItem.ChannelCommisionPercent.MarketDisplay

Quote.CurrentItem.ChannelCommisionAmount.DefaultDisplay

Quote.CurrentItem.ChannelCommisionAmount.DefaultDecimal

Quote.CurrentItem.ChannelCommisionAmount.MarketDecimal

Quote.CurrentItem.ChannelCommisionAmount.MarketDisplay

Quote.CurrentItem.UserCommisionPercent.DefaultDisplay

Quote.CurrentItem.UserCommisionPercent.DefaultDecimal

Quote.CurrentItem.UserCommisionPercent.MarketDecimal

Quote.CurrentItem.UserCommisionPercent.MarketDisplay

Quote.CurrentItem.UserCommisionAmount.DefaultDisplay

Quote.CurrentItem.UserCommisionAmount.DefaultDecimal

Quote.CurrentItem.UserCommisionAmount.MarketDecimal

Quote.CurrentItem.UserCommisionAmount.MarketDisplay

Quote.CurrentItem.ProductId

Quote.CurrentItem.ProductName

Quote.CurrentItem.Description

Quote.CurrentItem.DescriptionLong

Quote.CurrentItem.UserDescription

Quote.CurrentItem.CsvPavId

Quote.CurrentItem.CategoryId

Quote.CurrentItem.DateAdded

Quote.CurrentItem.DateAdded.Format()

Quote.CurrentItem.DateAdded.AddDays()

Quote.CurrentItem.DateAdded.AddDays().Format()

Quote.CurrentItem.DateAdded.AddDays().InUSDateFormat

Quote.CurrentItem.DateAdded.AddMonths()

Quote.CurrentItem.DateAdded.AddMonths().Format()

Quote.CurrentItem.DateAdded.AddMonths().InUSDateFormat

Quote.CurrentItem.DateAdded.AddYears()

Quote.CurrentItem.DateAdded.AddYears().Format()

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 631
Quote.CurrentItem.DateAdded.AddYears().InUSDateFormat

Quote.CurrentItem.ItemDeliveryMethod

Quote.CurrentItem.ItemDeliveryStatus

Quote.CurrentItem.EffDate

Quote.CurrentItem.EffDate.Format()

Quote.CurrentItem.EffDate.AddDays()

Quote.CurrentItem.EffDate.AddDays().Format()

Quote.CurrentItem.EffDate.AddDays().InUSDateFormat

Quote.CurrentItem.EffDate.AddMonths()

Quote.CurrentItem.EffDate.AddMonths().Format()

Quote.CurrentItem.EffDate.AddMonths().InUSDateFormat

Quote.CurrentItem.EffDate.AddYears()

Quote.CurrentItem.EffDate.AddYears().Format()

Quote.CurrentItem.EffDate.AddYears().InUSDateFormat

Quote.CurrentItem.SubProductId

Quote.CurrentItem.GroupId

Quote.CurrentItem.HasIncompleteConfiguration

Quote.CurrentItem.BaseQuantity.DefaultDisplay

Quote.CurrentItem.BaseQuantity.DefaultDecimal

Quote.CurrentItem.BaseQuantity.MarketDecimal

Quote.CurrentItem.BaseQuantity.MarketDisplay

Quote.CurrentItem.Weight.DefaultDisplay

Quote.CurrentItem.Weight.DefaultDecimal

Quote.CurrentItem.Weight.MarketDecimal

Quote.CurrentItem.Weight.MarketDisplay

Quote.CurrentItem.DefaultDiscountPercent.DefaultDisplay

Quote.CurrentItem.DefaultDiscountPercent.DefaultDecimal

Quote.CurrentItem.DefaultDiscountPercent.MarketDecimal

Quote.CurrentItem.DefaultDiscountPercent.MarketDisplay

Quote.CurrentItem.MinDiscountPercent.DefaultDisplay

Quote.CurrentItem.MinDiscountPercent.DefaultDecimal

Quote.CurrentItem.MinDiscountPercent.MarketDecimal

Quote.CurrentItem.MinDiscountPercent.MarketDisplay

SAP CPQ Setup and Administration Guide


632 PUBLIC SAP CPQ Tags
Quote.CurrentItem.MaxDiscountPercent.DefaultDisplay

Quote.CurrentItem.MaxDiscountPercent.DefaultDecimal

Quote.CurrentItem.MaxDiscountPercent.MarketDecimal

Quote.CurrentItem.MaxDiscountPercent.MarketDisplay

Quote.CurrentItem.DefaultMultiplier.DefaultDisplay

Quote.CurrentItem.DefaultMultiplier.DefaultDecimal

Quote.CurrentItem.DefaultMultiplier.MarketDecimal

Quote.CurrentItem.DefaultMultiplier.MarketDisplay

Quote.CurrentItem.MinMultiplier.DefaultDisplay

Quote.CurrentItem.MinMultiplier.DefaultDecimal

Quote.CurrentItem.MinMultiplier.MarketDecimal

Quote.CurrentItem.MinMultiplier.MarketDisplay

Quote.CurrentItem.MaxMultiplier.DefaultDisplay

Quote.CurrentItem.MaxMultiplier.DefaultDecimal

Quote.CurrentItem.MaxMultiplier.MarketDecimal

Quote.CurrentItem.MaxMultiplier.MarketDisplay

Quote.CurrentItem.DefaultMRCDiscountPercent.DefaultDisplay

Quote.CurrentItem.DefaultMRCDiscountPercent.DefaultDecimal

Quote.CurrentItem.DefaultMRCDiscountPercent.MarketDecimal

Quote.CurrentItem.DefaultMRCDiscountPercent.MarketDisplay

Quote.CurrentItem.MinMRCDiscountPercent.DefaultDisplay

Quote.CurrentItem.MinMRCDiscountPercent.DefaultDecimal

Quote.CurrentItem.MinMRCDiscountPercent.MarketDecimal

Quote.CurrentItem.MinMRCDiscountPercent.MarketDisplay

Quote.CurrentItem.MaxMRCDiscountPercent.DefaultDisplay

Quote.CurrentItem.MaxMRCDiscountPercent.DefaultDecimal

Quote.CurrentItem.MaxMRCDiscountPercent.MarketDecimal

Quote.CurrentItem.MaxMRCDiscountPercent.MarketDisplay

Quote.CurrentItem.DefaultMRCMultiplier.DefaultDisplay

Quote.CurrentItem.DefaultMRCMultiplier.DefaultDecimal

Quote.CurrentItem.DefaultMRCMultiplier.MarketDecimal

Quote.CurrentItem.DefaultMRCMultiplier.MarketDisplay

Quote.CurrentItem.MinMRCMultiplier.DefaultDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 633
Quote.CurrentItem.MinMRCMultiplier.DefaultDecimal

Quote.CurrentItem.MinMRCMultiplier.MarketDecimal

Quote.CurrentItem.MinMRCMultiplier.MarketDisplay

Quote.CurrentItem.MaxMRCMultiplier.DefaultDisplay

Quote.CurrentItem.MaxMRCMultiplier.DefaultDecimal

Quote.CurrentItem.MaxMRCMultiplier.MarketDecimal

Quote.CurrentItem.MaxMRCMultiplier.MarketDisplay

Quote.CurrentItem.UpfrontPercent.DefaultDisplay

Quote.CurrentItem.UpfrontPercent.DefaultDecimal

Quote.CurrentItem.UpfrontPercent.MarketDecimal

Quote.CurrentItem.UpfrontPercent.MarketDisplay

Quote.CurrentItem.UpfrontAmount.DefaultDisplay

Quote.CurrentItem.UpfrontAmount.DefaultDecimal

Quote.CurrentItem.UpfrontAmount.MarketDecimal

Quote.CurrentItem.UpfrontAmount.MarketDisplay

Quote.CurrentItem.MonthlyFeeAmount.DefaultDisplay

Quote.CurrentItem.MonthlyFeeAmount.DefaultDecimal

Quote.CurrentItem.MonthlyFeeAmount.MarketDecimal

Quote.CurrentItem.MonthlyFeeAmount.MarketDisplay

Quote.CurrentItem.CustomColumn1.DefaultDisplay

Quote.CurrentItem.CustomColumn1.DefaultDecimal

Quote.CurrentItem.CustomColumn1.MarketDecimal

Quote.CurrentItem.CustomColumn1.MarketDisplay

Quote.CurrentItem.CustomColumn2.DefaultDisplay

Quote.CurrentItem.CustomColumn2.DefaultDecimal

Quote.CurrentItem.CustomColumn2.MarketDecimal

Quote.CurrentItem.CustomColumn2.MarketDisplay

Quote.CurrentItem.CustomColumn3.DefaultDisplay

Quote.CurrentItem.CustomColumn3.DefaultDecimal

Quote.CurrentItem.CustomColumn3.MarketDecimal

Quote.CurrentItem.CustomColumn3.MarketDisplay

Quote.CurrentItem.CustomColumn4.DefaultDisplay

Quote.CurrentItem.CustomColumn4.DefaultDecimal

SAP CPQ Setup and Administration Guide


634 PUBLIC SAP CPQ Tags
Quote.CurrentItem.CustomColumn4.MarketDecimal

Quote.CurrentItem.CustomColumn4.MarketDisplay

Quote.CurrentItem.CustomColumn5.DefaultDisplay

Quote.CurrentItem.CustomColumn5.DefaultDecimal

Quote.CurrentItem.CustomColumn5.MarketDecimal

Quote.CurrentItem.CustomColumn5.MarketDisplay

Quote.CurrentItem.CustomColumn6.DefaultDisplay

Quote.CurrentItem.CustomColumn6.DefaultDecimal

Quote.CurrentItem.CustomColumn6.MarketDecimal

Quote.CurrentItem.CustomColumn6.MarketDisplay

Quote.CurrentItem.ProductVersion

Quote.CurrentItem.ExternalId

Quote.CurrentItem.UPC

Quote.CurrentItem.MPN

Quote.CurrentItem.Inventory

Quote.CurrentItem.LeadTime

Quote.CurrentItem.FamilyCode

Quote.CurrentItem.PRODUCT_WEIGHT

Quote.CurrentItem.CanOverrideMinMaxValues

Quote.CurrentItem.ItemType

Quote.CurrentItem.BaseItem

Quote.CurrentItem.MRCListPrice.DefaultDisplay

Quote.CurrentItem.MRCListPrice.DefaultDecimal

Quote.CurrentItem.MRCListPrice.MarketDecimal

Quote.CurrentItem.MRCListPrice.MarketDisplay

Quote.CurrentItem.MRCExtendedListPrice.DefaultDisplay

Quote.CurrentItem.MRCExtendedListPrice.DefaultDecimal

Quote.CurrentItem.MRCExtendedListPrice.MarketDecimal

Quote.CurrentItem.MRCExtendedListPrice.MarketDisplay

Quote.CurrentItem.MRCDiscountPercent.DefaultDisplay

Quote.CurrentItem.MRCDiscountPercent.DefaultDecimal

Quote.CurrentItem.MRCDiscountPercent.MarketDecimal

Quote.CurrentItem.MRCDiscountPercent.MarketDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 635
Quote.CurrentItem.MRCDiscountAmount.DefaultDisplay

Quote.CurrentItem.MRCDiscountAmount.DefaultDecimal

Quote.CurrentItem.MRCDiscountAmount.MarketDecimal

Quote.CurrentItem.MRCDiscountAmount.MarketDisplay

Quote.CurrentItem.MRCUnitDiscountAmount.DefaultDisplay

Quote.CurrentItem.MRCUnitDiscountAmount.DefaultDecimal

Quote.CurrentItem.MRCUnitDiscountAmount.MarketDecimal

Quote.CurrentItem.MRCUnitDiscountAmount.MarketDisplay

Quote.CurrentItem.MRCNetPrice.DefaultDisplay

Quote.CurrentItem.MRCNetPrice.DefaultDecimal

Quote.CurrentItem.MRCNetPrice.MarketDecimal

Quote.CurrentItem.MRCNetPrice.MarketDisplay

Quote.CurrentItem.MRCExtendedAmount.DefaultDisplay

Quote.CurrentItem.MRCExtendedAmount.DefaultDecimal

Quote.CurrentItem.MRCExtendedAmount.MarketDecimal

Quote.CurrentItem.MRCExtendedAmount.MarketDisplay

Quote.CurrentItem.MRCGrossMarginPercent.DefaultDisplay

Quote.CurrentItem.MRCGrossMarginPercent.DefaultDecimal

Quote.CurrentItem.MRCGrossMarginPercent.MarketDecimal

Quote.CurrentItem.MRCGrossMarginPercent.MarketDisplay

Quote.CurrentItem.MRCCost.DefaultDisplay

Quote.CurrentItem.MRCCost.DefaultDecimal

Quote.CurrentItem.MRCCost.MarketDecimal

Quote.CurrentItem.MRCCost.MarketDisplay

Quote.CurrentItem.MRCExtendedCost.DefaultDisplay

Quote.CurrentItem.MRCExtendedCost.DefaultDecimal

Quote.CurrentItem.MRCExtendedCost.MarketDecimal

Quote.CurrentItem.MRCExtendedCost.MarketDisplay

Quote.CurrentItem.MRCMultiplier.DefaultDisplay

Quote.CurrentItem.MRCMultiplier.DefaultDecimal

Quote.CurrentItem.MRCMultiplier.MarketDecimal

Quote.CurrentItem.MRCMultiplier.MarketDisplay

Quote.CurrentItem.MRCMultiplierAmount.DefaultDisplay

SAP CPQ Setup and Administration Guide


636 PUBLIC SAP CPQ Tags
Quote.CurrentItem.MRCMultiplierAmount.DefaultDecimal

Quote.CurrentItem.MRCMultiplierAmount.MarketDecimal

Quote.CurrentItem.MRCMultiplierAmount.MarketDisplay

Quote.CurrentItem.MRCUnitMultiplierAmount.DefaultDisplay

Quote.CurrentItem.MRCUnitMultiplierAmount.DefaultDecimal

Quote.CurrentItem.MRCUnitMultiplierAmount.MarketDecimal

Quote.CurrentItem.MRCUnitMultiplierAmount.MarketDisplay

Quote.CurrentItem.MRCChannelMarkupPercent.DefaultDisplay

Quote.CurrentItem.MRCChannelMarkupPercent.DefaultDecimal

Quote.CurrentItem.MRCChannelMarkupPercent.MarketDecimal

Quote.CurrentItem.MRCChannelMarkupPercent.MarketDisplay

Quote.CurrentItem.MRCChannelMarkupAmount.DefaultDisplay

Quote.CurrentItem.MRCChannelMarkupAmount.DefaultDecimal

Quote.CurrentItem.MRCChannelMarkupAmount.MarketDecimal

Quote.CurrentItem.MRCChannelMarkupAmount.MarketDisplay

Quote.CurrentItem.MRCChannelMarginPercent.DefaultDisplay

Quote.CurrentItem.MRCChannelMarginPercent.DefaultDecimal

Quote.CurrentItem.MRCChannelMarginPercent.MarketDecimal

Quote.CurrentItem.MRCChannelMarginPercent.MarketDisplay

Quote.CurrentItem.MRCChannelMarginAmount.DefaultDisplay

Quote.CurrentItem.MRCChannelMarginAmount.DefaultDecimal

Quote.CurrentItem.MRCChannelMarginAmount.MarketDecimal

Quote.CurrentItem.MRCChannelMarginAmount.MarketDisplay

Quote.CurrentItem.MRCEndUserNet.DefaultDisplay

Quote.CurrentItem.MRCEndUserNet.DefaultDecimal

Quote.CurrentItem.MRCEndUserNet.MarketDecimal

Quote.CurrentItem.MRCEndUserNet.MarketDisplay

Quote.CurrentItem.MRCEndUserExtendedAmount.DefaultDisplay

Quote.CurrentItem.MRCEndUserExtendedAmount.DefaultDecimal

Quote.CurrentItem.MRCEndUserExtendedAmount.MarketDecimal

Quote.CurrentItem.MRCEndUserExtendedAmount.MarketDisplay

Quote.CurrentItem.CartItemGuid

Quote.CurrentItem.BaseItemGuid

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 637
Quote.CurrentItem.KeyAttribute().Rank

Quote.CurrentItem.KeyAttribute().Label

Quote.CurrentItem.KeyAttribute().Value

Quote.CurrentItem.Attribute().Value

Quote.CurrentItem.Attribute(NameOfAttribute).ValueCode

Quote.CurrentItem.MainItem.AttributeRank

Quote.CurrentItem.MainItem.AttributeSubRank

Quote.CurrentItem.MainItem.IsMainItem

Quote.CurrentItem.MainItem.IsChildItem

Quote.CurrentItem.MainItem.SystemID

Quote.CurrentItem.MainItem.IsAlternative

Quote.CurrentItem.MainItem.IsVariant

Quote.CurrentItem.MainItem.RolledUpEndCustomerUnitPrice

Quote.CurrentItem.MainItem.RolledUpEndCustomerUnitPrice.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpEndCustomerUnitPrice.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpEndCustomerUnitPrice.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpEndCustomerUnitPrice.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpEndCustomerExtendedPrice

Quote.CurrentItem.MainItem.RolledUpEndCustomerExtendedPrice.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpEndCustomerExtendedPrice.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpEndCustomerExtendedPrice.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpEndCustomerExtendedPrice.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpListPrice

Quote.CurrentItem.MainItem.RolledUpListPrice.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpListPrice.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpListPrice.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpListPrice.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpExtendedListPrice

Quote.CurrentItem.MainItem.RolledUpExtendedListPrice.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpExtendedListPrice.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpExtendedListPrice.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpExtendedListPrice.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpNetPrice

SAP CPQ Setup and Administration Guide


638 PUBLIC SAP CPQ Tags
Quote.CurrentItem.MainItem.RolledUpNetPrice.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpNetPrice.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpNetPrice.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpNetPrice.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpExtendedAmount

Quote.CurrentItem.MainItem.RolledUpExtendedAmount.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpExtendedAmount.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpExtendedAmount.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpExtendedAmount.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpCost

Quote.CurrentItem.MainItem.RolledUpCost.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpCost.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpCost.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpCost.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpExtendedCost

Quote.CurrentItem.MainItem.RolledUpExtendedCost.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpExtendedCost.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpExtendedCost.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpExtendedCost.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpGrossMargin

Quote.CurrentItem.MainItem.RolledUpGrossMargin.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpGrossMargin.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpGrossMargin.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpGrossMargin.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpDiscountAmount

Quote.CurrentItem.MainItem.RolledUpDiscountAmount.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpDiscountAmount.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpDiscountAmount.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpDiscountAmount.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpDiscountPercent

Quote.CurrentItem.MainItem.RolledUpDiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpDiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpDiscountPercent.MarketDecimal

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 639
Quote.CurrentItem.MainItem.RolledUpDiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.NetAmountDifferenceFromBaseItem

Quote.CurrentItem.MainItem.NetAmountDifferenceFromBaseItem.DefaultDisplay

Quote.CurrentItem.MainItem.NetAmountDifferenceFromBaseItem.DefaultDecimal

Quote.CurrentItem.MainItem.NetAmountDifferenceFromBaseItem.MarketDecimal

Quote.CurrentItem.MainItem.NetAmountDifferenceFromBaseItem.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpNetDifferenceFromBaseItem

Quote.CurrentItem.MainItem.RolledUpNetDifferenceFromBaseItem.DefaultDisplay

Quote.CurrentItem.MainItem.RolledUpNetDifferenceFromBaseItem.DefaultDecimal

Quote.CurrentItem.MainItem.RolledUpNetDifferenceFromBaseItem.MarketDecimal

Quote.CurrentItem.MainItem.RolledUpNetDifferenceFromBaseItem.MarketDisplay

Quote.CurrentItem.MainItem.RolledUpCartItem

Quote.CurrentItem.MainItem.Rank

Quote.CurrentItem.MainItem.ParentItem

Quote.CurrentItem.MainItem.CartItem

Quote.CurrentItem.MainItem.Quantity

Quote.CurrentItem.MainItem.Quantity.DefaultDisplay

Quote.CurrentItem.MainItem.Quantity.DefaultDecimal

Quote.CurrentItem.MainItem.Quantity.MarketDecimal

Quote.CurrentItem.MainItem.Quantity.MarketDisplay

Quote.CurrentItem.MainItem.PartNumber

Quote.CurrentItem.MainItem.Cost.DefaultDisplay

Quote.CurrentItem.MainItem.Cost.DefaultDecimal

Quote.CurrentItem.MainItem.Cost.MarketDecimal

Quote.CurrentItem.MainItem.Cost.MarketDisplay

Quote.CurrentItem.MainItem.ExtendedCost.DefaultDisplay

Quote.CurrentItem.MainItem.ExtendedCost.DefaultDecimal

Quote.CurrentItem.MainItem.ExtendedCost.MarketDecimal

Quote.CurrentItem.MainItem.ExtendedCost.MarketDisplay

Quote.CurrentItem.MainItem.ProductModelPrice.DefaultDisplay

Quote.CurrentItem.MainItem.ProductModelPrice.DefaultDecimal

Quote.CurrentItem.MainItem.ProductModelPrice.MarketDecimal

Quote.CurrentItem.MainItem.ProductModelPrice.MarketDisplay

SAP CPQ Setup and Administration Guide


640 PUBLIC SAP CPQ Tags
Quote.CurrentItem.MainItem.ProductCost.DefaultDisplay

Quote.CurrentItem.MainItem.ProductCost.DefaultDecimal

Quote.CurrentItem.MainItem.ProductCost.MarketDecimal

Quote.CurrentItem.MainItem.ProductCost.MarketDisplay

Quote.CurrentItem.MainItem.PromoDiscountAmount.DefaultDisplay

Quote.CurrentItem.MainItem.PromoDiscountAmount.DefaultDecimal

Quote.CurrentItem.MainItem.PromoDiscountAmount.MarketDecimal

Quote.CurrentItem.MainItem.PromoDiscountAmount.MarketDisplay

Quote.CurrentItem.MainItem.PromoDiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.PromoDiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.PromoDiscountPercent.MarketDecimal

Quote.CurrentItem.MainItem.PromoDiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.ListPrice.DefaultDisplay

Quote.CurrentItem.MainItem.ListPrice.DefaultDecimal

Quote.CurrentItem.MainItem.ListPrice.MarketDecimal

Quote.CurrentItem.MainItem.ListPrice.MarketDisplay

Quote.CurrentItem.MainItem.BaseListPrice.DefaultDisplay

Quote.CurrentItem.MainItem.BaseListPrice.DefaultDecimal

Quote.CurrentItem.MainItem.BaseListPrice.MarketDecimal

Quote.CurrentItem.MainItem.BaseListPrice.MarketDisplay

Quote.CurrentItem.MainItem.ExtendedListPrice.DefaultDisplay

Quote.CurrentItem.MainItem.ExtendedListPrice.DefaultDecimal

Quote.CurrentItem.MainItem.ExtendedListPrice.MarketDecimal

Quote.CurrentItem.MainItem.ExtendedListPrice.MarketDisplay

Quote.CurrentItem.MainItem.DiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.DiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.DiscountPercent.MarketDecimal

Quote.CurrentItem.MainItem.DiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.UnitDiscountAmount.DefaultDisplay

Quote.CurrentItem.MainItem.UnitDiscountAmount.DefaultDecimal

Quote.CurrentItem.MainItem.UnitDiscountAmount.MarketDecimal

Quote.CurrentItem.MainItem.UnitDiscountAmount.MarketDisplay

Quote.CurrentItem.MainItem.DiscountAmount.DefaultDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 641
Quote.CurrentItem.MainItem.DiscountAmount.DefaultDecimal

Quote.CurrentItem.MainItem.DiscountAmount.MarketDecimal

Quote.CurrentItem.MainItem.DiscountAmount.MarketDisplay

Quote.CurrentItem.MainItem.Multiplier.DefaultDisplay

Quote.CurrentItem.MainItem.Multiplier.DefaultDecimal

Quote.CurrentItem.MainItem.Multiplier.MarketDecimal

Quote.CurrentItem.MainItem.Multiplier.MarketDisplay

Quote.CurrentItem.MainItem.UnitMultiplierAmount.DefaultDisplay

Quote.CurrentItem.MainItem.UnitMultiplierAmount.DefaultDecimal

Quote.CurrentItem.MainItem.UnitMultiplierAmount.MarketDecimal

Quote.CurrentItem.MainItem.UnitMultiplierAmount.MarketDisplay

Quote.CurrentItem.MainItem.MultiplierAmount.DefaultDisplay

Quote.CurrentItem.MainItem.MultiplierAmount.DefaultDecimal

Quote.CurrentItem.MainItem.MultiplierAmount.MarketDecimal

Quote.CurrentItem.MainItem.MultiplierAmount.MarketDisplay

Quote.CurrentItem.MainItem.NetPrice.DefaultDisplay

Quote.CurrentItem.MainItem.NetPrice.DefaultDecimal

Quote.CurrentItem.MainItem.NetPrice.MarketDecimal

Quote.CurrentItem.MainItem.NetPrice.MarketDisplay

Quote.CurrentItem.MainItem.ExtendedAmount.DefaultDisplay

Quote.CurrentItem.MainItem.ExtendedAmount.DefaultDecimal

Quote.CurrentItem.MainItem.ExtendedAmount.MarketDecimal

Quote.CurrentItem.MainItem.ExtendedAmount.MarketDisplay

Quote.CurrentItem.MainItem.ManufacturesGrossMargin.DefaultDisplay

Quote.CurrentItem.MainItem.ManufacturesGrossMargin.DefaultDecimal

Quote.CurrentItem.MainItem.ManufacturesGrossMargin.MarketDecimal

Quote.CurrentItem.MainItem.ManufacturesGrossMargin.MarketDisplay

Quote.CurrentItem.MainItem.ChannelMarkupPercent.DefaultDisplay

Quote.CurrentItem.MainItem.ChannelMarkupPercent.DefaultDecimal

Quote.CurrentItem.MainItem.ChannelMarkupPercent.MarketDecimal

Quote.CurrentItem.MainItem.ChannelMarkupPercent.MarketDisplay

Quote.CurrentItem.MainItem.ChannelMarkupAmount.DefaultDisplay

Quote.CurrentItem.MainItem.ChannelMarkupAmount.DefaultDecimal

SAP CPQ Setup and Administration Guide


642 PUBLIC SAP CPQ Tags
Quote.CurrentItem.MainItem.ChannelMarkupAmount.MarketDecimal

Quote.CurrentItem.MainItem.ChannelMarkupAmount.MarketDisplay

Quote.CurrentItem.MainItem.EndUserNet.DefaultDisplay

Quote.CurrentItem.MainItem.EndUserNet.DefaultDecimal

Quote.CurrentItem.MainItem.EndUserNet.MarketDecimal

Quote.CurrentItem.MainItem.EndUserNet.MarketDisplay

Quote.CurrentItem.MainItem.EndUserExtendedAmount.DefaultDisplay

Quote.CurrentItem.MainItem.EndUserExtendedAmount.DefaultDecimal

Quote.CurrentItem.MainItem.EndUserExtendedAmount.MarketDecimal

Quote.CurrentItem.MainItem.EndUserExtendedAmount.MarketDisplay

Quote.CurrentItem.MainItem.ChannelMarginPercent.DefaultDisplay

Quote.CurrentItem.MainItem.ChannelMarginPercent.DefaultDecimal

Quote.CurrentItem.MainItem.ChannelMarginPercent.MarketDecimal

Quote.CurrentItem.MainItem.ChannelMarginPercent.MarketDisplay

Quote.CurrentItem.MainItem.IsOptional

Quote.CurrentItem.MainItem.MarginHealthColor

Quote.CurrentItem.MainItem.MarginHealthImage

Quote.CurrentItem.MainItem.MRCMarginHealthColor

Quote.CurrentItem.MainItem.MRCMarginHealthImage

Quote.CurrentItem.MainItem.ProductTypeName

Quote.CurrentItem.MainItem.ProductTypeId

Quote.CurrentItem.MainItem.ChannelCommisionPercent.DefaultDisplay

Quote.CurrentItem.MainItem.ChannelCommisionPercent.DefaultDecimal

Quote.CurrentItem.MainItem.ChannelCommisionPercent.MarketDecimal

Quote.CurrentItem.MainItem.ChannelCommisionPercent.MarketDisplay

Quote.CurrentItem.MainItem.ChannelCommisionAmount.DefaultDisplay

Quote.CurrentItem.MainItem.ChannelCommisionAmount.DefaultDecimal

Quote.CurrentItem.MainItem.ChannelCommisionAmount.MarketDecimal

Quote.CurrentItem.MainItem.ChannelCommisionAmount.MarketDisplay

Quote.CurrentItem.MainItem.UserCommisionPercent.DefaultDisplay

Quote.CurrentItem.MainItem.UserCommisionPercent.DefaultDecimal

Quote.CurrentItem.MainItem.UserCommisionPercent.MarketDecimal

Quote.CurrentItem.MainItem.UserCommisionPercent.MarketDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 643
Quote.CurrentItem.MainItem.UserCommisionAmount.DefaultDisplay

Quote.CurrentItem.MainItem.UserCommisionAmount.DefaultDecimal

Quote.CurrentItem.MainItem.UserCommisionAmount.MarketDecimal

Quote.CurrentItem.MainItem.UserCommisionAmount.MarketDisplay

Quote.CurrentItem.MainItem.ProductId

Quote.CurrentItem.MainItem.ProductName

Quote.CurrentItem.MainItem.Description

Quote.CurrentItem.MainItem.DescriptionLong

Quote.CurrentItem.MainItem.UserDescription

Quote.CurrentItem.MainItem.CsvPavId

Quote.CurrentItem.MainItem.CategoryId

Quote.CurrentItem.MainItem.DateAdded

Quote.CurrentItem.MainItem.DateAdded.Format()

Quote.CurrentItem.MainItem.DateAdded.AddDays()

Quote.CurrentItem.MainItem.DateAdded.AddDays().Format()

Quote.CurrentItem.MainItem.DateAdded.AddDays().InUSDateFormat

Quote.CurrentItem.MainItem.DateAdded.AddMonths()

Quote.CurrentItem.MainItem.DateAdded.AddMonths().Format()

Quote.CurrentItem.MainItem.DateAdded.AddMonths().InUSDateFormat

Quote.CurrentItem.MainItem.DateAdded.AddYears()

Quote.CurrentItem.MainItem.DateAdded.AddYears().Format()

Quote.CurrentItem.MainItem.DateAdded.AddYears().InUSDateFormat

Quote.CurrentItem.MainItem.ItemDeliveryMethod

Quote.CurrentItem.MainItem.ItemDeliveryStatus

Quote.CurrentItem.MainItem.EffDate

Quote.CurrentItem.MainItem.EffDate.Format()

Quote.CurrentItem.MainItem.EffDate.AddDays()

Quote.CurrentItem.MainItem.EffDate.AddDays().Format()

Quote.CurrentItem.MainItem.EffDate.AddDays().InUSDateFormat

Quote.CurrentItem.MainItem.EffDate.AddMonths()

Quote.CurrentItem.MainItem.EffDate.AddMonths().Format()

Quote.CurrentItem.MainItem.EffDate.AddMonths().InUSDateFormat

Quote.CurrentItem.MainItem.EffDate.AddYears()

SAP CPQ Setup and Administration Guide


644 PUBLIC SAP CPQ Tags
Quote.CurrentItem.MainItem.EffDate.AddYears().Format()

Quote.CurrentItem.MainItem.EffDate.AddYears().InUSDateFormat

Quote.CurrentItem.MainItem.SubProductId

Quote.CurrentItem.MainItem.GroupId

Quote.CurrentItem.MainItem.BaseQuantity.DefaultDisplay

Quote.CurrentItem.MainItem.BaseQuantity.DefaultDecimal

Quote.CurrentItem.MainItem.BaseQuantity.MarketDecimal

Quote.CurrentItem.MainItem.BaseQuantity.MarketDisplay

Quote.CurrentItem.MainItem.Weight.DefaultDisplay

Quote.CurrentItem.MainItem.Weight.DefaultDecimal

Quote.CurrentItem.MainItem.Weight.MarketDecimal

Quote.CurrentItem.MainItem.Weight.MarketDisplay

Quote.CurrentItem.MainItem.DefaultDiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.DefaultDiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.DefaultDiscountPercent.MarketDecimal

Quote.CurrentItem.MainItem.DefaultDiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.MinDiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.MinDiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.MinDiscountPercent.MarketDecimal

Quote.CurrentItem.MainItem.MinDiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.MaxDiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.MaxDiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.MaxDiscountPercent.MarketDecimal

Quote.CurrentItem.MainItem.MaxDiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.DefaultMultiplier.DefaultDisplay

Quote.CurrentItem.MainItem.DefaultMultiplier.DefaultDecimal

Quote.CurrentItem.MainItem.DefaultMultiplier.MarketDecimal

Quote.CurrentItem.MainItem.DefaultMultiplier.MarketDisplay

Quote.CurrentItem.MainItem.MinMultiplier.DefaultDisplay

Quote.CurrentItem.MainItem.MinMultiplier.DefaultDecimal

Quote.CurrentItem.MainItem.MinMultiplier.MarketDecimal

Quote.CurrentItem.MainItem.MinMultiplier.MarketDisplay

Quote.CurrentItem.MainItem.MaxMultiplier.DefaultDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 645
Quote.CurrentItem.MainItem.MaxMultiplier.DefaultDecimal

Quote.CurrentItem.MainItem.MaxMultiplier.MarketDecimal

Quote.CurrentItem.MainItem.MaxMultiplier.MarketDisplay

Quote.CurrentItem.MainItem.DefaultMRCDiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.DefaultMRCDiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.DefaultMRCDiscountPercent.MarketDecimal

Quote.CurrentItem.MainItem.DefaultMRCDiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.MinMRCDiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.MinMRCDiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.MinMRCDiscountPercent.MarketDecimal

Quote.CurrentItem.MainItem.MinMRCDiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.MaxMRCDiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.MaxMRCDiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.MaxMRCDiscountPercent.MarketDecimal

Quote.CurrentItem.MainItem.MaxMRCDiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.DefaultMRCMultiplier.DefaultDisplay

Quote.CurrentItem.MainItem.DefaultMRCMultiplier.DefaultDecimal

Quote.CurrentItem.MainItem.DefaultMRCMultiplier.MarketDecimal

Quote.CurrentItem.MainItem.DefaultMRCMultiplier.MarketDisplay

Quote.CurrentItem.MainItem.MinMRCMultiplier.DefaultDisplay

Quote.CurrentItem.MainItem.MinMRCMultiplier.DefaultDecimal

Quote.CurrentItem.MainItem.MinMRCMultiplier.MarketDecimal

Quote.CurrentItem.MainItem.MinMRCMultiplier.MarketDisplay

Quote.CurrentItem.MainItem.MaxMRCMultiplier.DefaultDisplay

Quote.CurrentItem.MainItem.MaxMRCMultiplier.DefaultDecimal

Quote.CurrentItem.MainItem.MaxMRCMultiplier.MarketDecimal

Quote.CurrentItem.MainItem.MaxMRCMultiplier.MarketDisplay

Quote.CurrentItem.MainItem.UpfrontPercent.DefaultDisplay

Quote.CurrentItem.MainItem.UpfrontPercent.DefaultDecimal

Quote.CurrentItem.MainItem.UpfrontPercent.MarketDecimal

Quote.CurrentItem.MainItem.UpfrontPercent.MarketDisplay

Quote.CurrentItem.MainItem.UpfrontAmount.DefaultDisplay

Quote.CurrentItem.MainItem.UpfrontAmount.DefaultDecimal

SAP CPQ Setup and Administration Guide


646 PUBLIC SAP CPQ Tags
Quote.CurrentItem.MainItem.UpfrontAmount.MarketDecimal

Quote.CurrentItem.MainItem.UpfrontAmount.MarketDisplay

Quote.CurrentItem.MainItem.MonthlyFeeAmount.DefaultDisplay

Quote.CurrentItem.MainItem.MonthlyFeeAmount.DefaultDecimal

Quote.CurrentItem.MainItem.MonthlyFeeAmount.MarketDecimal

Quote.CurrentItem.MainItem.MonthlyFeeAmount.MarketDisplay

Quote.CurrentItem.MainItem.CustomColumn1.DefaultDisplay

Quote.CurrentItem.MainItem.CustomColumn1.DefaultDecimal

Quote.CurrentItem.MainItem.CustomColumn1.MarketDecimal

Quote.CurrentItem.MainItem.CustomColumn1.MarketDisplay

Quote.CurrentItem.MainItem.CustomColumn2.DefaultDisplay

Quote.CurrentItem.MainItem.CustomColumn2.DefaultDecimal

Quote.CurrentItem.MainItem.CustomColumn2.MarketDecimal

Quote.CurrentItem.MainItem.CustomColumn2.MarketDisplay

Quote.CurrentItem.MainItem.CustomColumn3.DefaultDisplay

Quote.CurrentItem.MainItem.CustomColumn3.DefaultDecimal

Quote.CurrentItem.MainItem.CustomColumn3.MarketDecimal

Quote.CurrentItem.MainItem.CustomColumn3.MarketDisplay

Quote.CurrentItem.MainItem.CustomColumn4.DefaultDisplay

Quote.CurrentItem.MainItem.CustomColumn4.DefaultDecimal

Quote.CurrentItem.MainItem.CustomColumn4.MarketDecimal

Quote.CurrentItem.MainItem.CustomColumn4.MarketDisplay

Quote.CurrentItem.MainItem.CustomColumn5.DefaultDisplay

Quote.CurrentItem.MainItem.CustomColumn5.DefaultDecimal

Quote.CurrentItem.MainItem.CustomColumn5.MarketDecimal

Quote.CurrentItem.MainItem.CustomColumn5.MarketDisplay

Quote.CurrentItem.MainItem.CustomColumn6.DefaultDisplay

Quote.CurrentItem.MainItem.CustomColumn6.DefaultDecimal

Quote.CurrentItem.MainItem.CustomColumn6.MarketDecimal

Quote.CurrentItem.MainItem.CustomColumn6.MarketDisplay

Quote.CurrentItem.MainItem.ProductVersion

Quote.CurrentItem.MainItem.ExternalId

Quote.CurrentItem.MainItem.UPC

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 647
Quote.CurrentItem.MainItem.MPN

Quote.CurrentItem.MainItem.Inventory

Quote.CurrentItem.MainItem.LeadTime

Quote.CurrentItem.MainItem.FamilyCode

Quote.CurrentItem.MainItem.PRODUCT_WEIGHT

Quote.CurrentItem.MainItem.CanOverrideMinMaxValues

Quote.CurrentItem.MainItem.ItemType

Quote.CurrentItem.MainItem.BaseItem

Quote.CurrentItem.MainItem.MRCListPrice.DefaultDisplay

Quote.CurrentItem.MainItem.MRCListPrice.DefaultDecimal

Quote.CurrentItem.MainItem.MRCListPrice.MarketDecimal

Quote.CurrentItem.MainItem.MRCListPrice.MarketDisplay

Quote.CurrentItem.MainItem.MRCExtendedListPrice.DefaultDisplay

Quote.CurrentItem.MainItem.MRCExtendedListPrice.DefaultDecimal

Quote.CurrentItem.MainItem.MRCExtendedListPrice.MarketDecimal

Quote.CurrentItem.MainItem.MRCExtendedListPrice.MarketDisplay

Quote.CurrentItem.MainItem.MRCDiscountPercent.DefaultDisplay

Quote.CurrentItem.MainItem.MRCDiscountPercent.DefaultDecimal

Quote.CurrentItem.MainItem.MRCDiscountPercent.MarketDecimal

Quote.CurrentItem.MainItem.MRCDiscountPercent.MarketDisplay

Quote.CurrentItem.MainItem.MRCDiscountAmount.DefaultDisplay

Quote.CurrentItem.MainItem.MRCDiscountAmount.DefaultDecimal

Quote.CurrentItem.MainItem.MRCDiscountAmount.MarketDecimal

Quote.CurrentItem.MainItem.MRCDiscountAmount.MarketDisplay

Quote.CurrentItem.MainItem.MRCUnitDiscountAmount.DefaultDisplay

Quote.CurrentItem.MainItem.MRCUnitDiscountAmount.DefaultDecimal

Quote.CurrentItem.MainItem.MRCUnitDiscountAmount.MarketDecimal

Quote.CurrentItem.MainItem.MRCUnitDiscountAmount.MarketDisplay

Quote.CurrentItem.MainItem.MRCNetPrice.DefaultDisplay

Quote.CurrentItem.MainItem.MRCNetPrice.DefaultDecimal

Quote.CurrentItem.MainItem.MRCNetPrice.MarketDecimal

Quote.CurrentItem.MainItem.MRCNetPrice.MarketDisplay

Quote.CurrentItem.MainItem.MRCExtendedAmount.DefaultDisplay

SAP CPQ Setup and Administration Guide


648 PUBLIC SAP CPQ Tags
Quote.CurrentItem.MainItem.MRCExtendedAmount.DefaultDecimal

Quote.CurrentItem.MainItem.MRCExtendedAmount.MarketDecimal

Quote.CurrentItem.MainItem.MRCExtendedAmount.MarketDisplay

Quote.CurrentItem.MainItem.MRCGrossMarginPercent.DefaultDisplay

Quote.CurrentItem.MainItem.MRCGrossMarginPercent.DefaultDecimal

Quote.CurrentItem.MainItem.MRCGrossMarginPercent.MarketDecimal

Quote.CurrentItem.MainItem.MRCGrossMarginPercent.MarketDisplay

Quote.CurrentItem.MainItem.MRCCost.DefaultDisplay

Quote.CurrentItem.MainItem.MRCCost.DefaultDecimal

Quote.CurrentItem.MainItem.MRCCost.MarketDecimal

Quote.CurrentItem.MainItem.MRCCost.MarketDisplay

Quote.CurrentItem.MainItem.MRCExtendedCost.DefaultDisplay

Quote.CurrentItem.MainItem.MRCExtendedCost.DefaultDecimal

Quote.CurrentItem.MainItem.MRCExtendedCost.MarketDecimal

Quote.CurrentItem.MainItem.MRCExtendedCost.MarketDisplay

Quote.CurrentItem.MainItem.MRCMultiplier.DefaultDisplay

Quote.CurrentItem.MainItem.MRCMultiplier.DefaultDecimal

Quote.CurrentItem.MainItem.MRCMultiplier.MarketDecimal

Quote.CurrentItem.MainItem.MRCMultiplier.MarketDisplay

Quote.CurrentItem.MainItem.MRCMultiplierAmount.DefaultDisplay

Quote.CurrentItem.MainItem.MRCMultiplierAmount.DefaultDecimal

Quote.CurrentItem.MainItem.MRCMultiplierAmount.MarketDecimal

Quote.CurrentItem.MainItem.MRCMultiplierAmount.MarketDisplay

Quote.CurrentItem.MainItem.MRCUnitMultiplierAmount.DefaultDisplay

Quote.CurrentItem.MainItem.MRCUnitMultiplierAmount.DefaultDecimal

Quote.CurrentItem.MainItem.MRCUnitMultiplierAmount.MarketDecimal

Quote.CurrentItem.MainItem.MRCUnitMultiplierAmount.MarketDisplay

Quote.CurrentItem.MainItem.MRCChannelMarkupPercent.DefaultDisplay

Quote.CurrentItem.MainItem.MRCChannelMarkupPercent.DefaultDecimal

Quote.CurrentItem.MainItem.MRCChannelMarkupPercent.MarketDecimal

Quote.CurrentItem.MainItem.MRCChannelMarkupPercent.MarketDisplay

Quote.CurrentItem.MainItem.MRCChannelMarkupAmount.DefaultDisplay

Quote.CurrentItem.MainItem.MRCChannelMarkupAmount.DefaultDecimal

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 649
Quote.CurrentItem.MainItem.MRCChannelMarkupAmount.MarketDecimal

Quote.CurrentItem.MainItem.MRCChannelMarkupAmount.MarketDisplay

Quote.CurrentItem.MainItem.MRCChannelMarginPercent.DefaultDisplay

Quote.CurrentItem.MainItem.MRCChannelMarginPercent.DefaultDecimal

Quote.CurrentItem.MainItem.MRCChannelMarginPercent.MarketDecimal

Quote.CurrentItem.MainItem.MRCChannelMarginPercent.MarketDisplay

Quote.CurrentItem.MainItem.MRCChannelMarginAmount.DefaultDisplay

Quote.CurrentItem.MainItem.MRCChannelMarginAmount.DefaultDecimal

Quote.CurrentItem.MainItem.MRCChannelMarginAmount.MarketDecimal

Quote.CurrentItem.MainItem.MRCChannelMarginAmount.MarketDisplay

Quote.CurrentItem.MainItem.MRCEndUserNet.DefaultDisplay

Quote.CurrentItem.MainItem.MRCEndUserNet.DefaultDecimal

Quote.CurrentItem.MainItem.MRCEndUserNet.MarketDecimal

Quote.CurrentItem.MainItem.MRCEndUserNet.MarketDisplay

Quote.CurrentItem.MainItem.MRCEndUserExtendedAmount.DefaultDisplay

Quote.CurrentItem.MainItem.MRCEndUserExtendedAmount.DefaultDecimal

Quote.CurrentItem.MainItem.MRCEndUserExtendedAmount.MarketDecimal

Quote.CurrentItem.MainItem.MRCEndUserExtendedAmount.MarketDisplay

Quote.CurrentItem.MainItem.CartItemGuid

Quote.CurrentItem.MainItem.BaseItemGuid

Quote.CurrentItem.MainItem.KeyAttribute().Rank

Quote.CurrentItem.MainItem.KeyAttribute().Label

Quote.CurrentItem.MainItem.KeyAttribute().Value

Quote.CurrentItem.MainItem.Attribute().Value

Quote.CurrentItem.CustomField

Quote.CurrentSection.HierarchyId

Quote.CurrentSection.Rank

Quote.CurrentSection.Name

Quote.CurrentSection.CustomField(CustomFieldName

Quote.Section.Total.CustomField(CustomFieldName

Quote.HasIncompleteItems

Quote.Total.CartComment

Quote.Total.TotalOptionalItems.DefaultDecimal

SAP CPQ Setup and Administration Guide


650 PUBLIC SAP CPQ Tags
Quote.Total.TotalProductModelPrice.DefaultDisplay

Quote.Total.TotalProductModelPrice.DefaultDecimal

Quote.Total.TotalProductModelPrice.MarketDecimal

Quote.Total.TotalProductModelPrice.MarketDisplay

Quote.Total.TotalPromoDiscountAmount.DefaultDisplay

Quote.Total.TotalPromoDiscountAmount.DefaultDecimal

Quote.Total.TotalPromoDiscountAmount.MarketDecimal

Quote.Total.TotalPromoDiscountAmount.MarketDisplay

Quote.Total.AveragePromoDiscountPercent.DefaultDisplay

Quote.Total.AveragePromoDiscountPercent.DefaultDecimal

Quote.Total.AveragePromoDiscountPercent.MarketDecimal

Quote.Total.AveragePromoDiscountPercent.MarketDisplay

Quote.Total.TotalListPrice.DefaultDisplay

Quote.Total.TotalListPrice.DefaultDecimal

Quote.Total.TotalListPrice.MarketDecimal

Quote.Total.TotalListPrice.MarketDisplay

Quote.Total.TotalNetPrice.DefaultDisplay

Quote.Total.TotalNetPrice.DefaultDecimal

Quote.Total.TotalNetPrice.MarketDecimal

Quote.Total.TotalNetPrice.MarketDisplay

Quote.Total.AverageProductDiscountPercent.DefaultDisplay

Quote.Total.AverageProductDiscountPercent.DefaultDecimal

Quote.Total.AverageProductDiscountPercent.MarketDecimal

Quote.Total.AverageProductDiscountPercent.MarketDisplay

Quote.Total.TotalProductDiscountAmount.DefaultDisplay

Quote.Total.TotalProductDiscountAmount.DefaultDecimal

Quote.Total.TotalProductDiscountAmount.MarketDecimal

Quote.Total.TotalProductDiscountAmount.MarketDisplay

Quote.Total.AverageProductMultiplier.DefaultDisplay

Quote.Total.AverageProductMultiplier.DefaultDecimal

Quote.Total.AverageProductMultiplier.MarketDecimal

Quote.Total.AverageProductMultiplier.MarketDisplay

Quote.Total.TotalProductMultiplierAmount.DefaultDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 651
Quote.Total.TotalProductMultiplierAmount.DefaultDecimal

Quote.Total.TotalProductMultiplierAmount.MarketDecimal

Quote.Total.TotalProductMultiplierAmount.MarketDisplay

Quote.Total.AdditionalMultiplier.DefaultDisplay

Quote.Total.AdditionalMultiplier.DefaultDecimal

Quote.Total.AdditionalMultiplier.MarketDecimal

Quote.Total.AdditionalMultiplier.MarketDisplay

Quote.Total.AdditionalMultiplierAmount.DefaultDisplay

Quote.Total.AdditionalMultiplierAmount.DefaultDecimal

Quote.Total.AdditionalMultiplierAmount.MarketDecimal

Quote.Total.AdditionalMultiplierAmount.MarketDisplay

Quote.Total.OverallDiscountPercent.DefaultDisplay

Quote.Total.OverallDiscountPercent.DefaultDecimal

Quote.Total.OverallDiscountPercent.MarketDecimal

Quote.Total.OverallDiscountPercent.MarketDisplay

Quote.Total.OverallDiscountAmount.DefaultDisplay

Quote.Total.OverallDiscountAmount.DefaultDecimal

Quote.Total.OverallDiscountAmount.MarketDecimal

Quote.Total.OverallDiscountAmount.MarketDisplay

Quote.Total.SubTotalAmount.DefaultDisplay

Quote.Total.SubTotalAmount.DefaultDecimal

Quote.Total.SubTotalAmount.MarketDecimal

Quote.Total.SubTotalAmount.MarketDisplay

Quote.Total.ChannelMarkupPercent.DefaultDisplay

Quote.Total.ChannelMarkupPercent.DefaultDecimal

Quote.Total.ChannelMarkupPercent.MarketDecimal

Quote.Total.ChannelMarkupPercent.MarketDisplay

Quote.Total.ChannelMarkupAmount.DefaultDisplay

Quote.Total.ChannelMarkupAmount.DefaultDecimal

Quote.Total.ChannelMarkupAmount.MarketDecimal

Quote.Total.ChannelMarkupAmount.MarketDisplay

Quote.Total.EndUserSubTotalAmount.DefaultDisplay

Quote.Total.EndUserSubTotalAmount.DefaultDecimal

SAP CPQ Setup and Administration Guide


652 PUBLIC SAP CPQ Tags
Quote.Total.EndUserSubTotalAmount.MarketDecimal

Quote.Total.EndUserSubTotalAmount.MarketDisplay

Quote.Total.Cost.DefaultDisplay

Quote.Total.Cost.DefaultDecimal

Quote.Total.Cost.MarketDecimal

Quote.Total.Cost.MarketDisplay

Quote.Total.GrossMarginPercent.DefaultDisplay

Quote.Total.GrossMarginPercent.DefaultDecimal

Quote.Total.GrossMarginPercent.MarketDecimal

Quote.Total.GrossMarginPercent.MarketDisplay

Quote.Total.GrossMarginAmount.DefaultDisplay

Quote.Total.GrossMarginAmount.DefaultDecimal

Quote.Total.GrossMarginAmount.MarketDecimal

Quote.Total.GrossMarginAmount.MarketDisplay

Quote.Total.MarginHealthColor

Quote.Total.MarginHealthImage

Quote.Total.MRCMarginHealthColor

Quote.Total.MRCMarginHealthImage

Quote.Total.ChannelCost.DefaultDisplay

Quote.Total.ChannelCost.DefaultDecimal

Quote.Total.ChannelCost.MarketDecimal

Quote.Total.ChannelCost.MarketDisplay

Quote.Total.ChannelGrossMarginPercent.DefaultDisplay

Quote.Total.ChannelGrossMarginPercent.DefaultDecimal

Quote.Total.ChannelGrossMarginPercent.MarketDecimal

Quote.Total.ChannelGrossMarginPercent.MarketDisplay

Quote.Total.ChannelGrossMarginAmount.DefaultDisplay

Quote.Total.ChannelGrossMarginAmount.DefaultDecimal

Quote.Total.ChannelGrossMarginAmount.MarketDecimal

Quote.Total.ChannelGrossMarginAmount.MarketDisplay

Quote.Total.ChannelCommisionPercent.DefaultDisplay

Quote.Total.ChannelCommisionPercent.DefaultDecimal

Quote.Total.ChannelCommisionPercent.MarketDecimal

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 653
Quote.Total.ChannelCommisionPercent.MarketDisplay

Quote.Total.ChannelCommisionAmount.DefaultDisplay

Quote.Total.ChannelCommisionAmount.DefaultDecimal

Quote.Total.ChannelCommisionAmount.MarketDecimal

Quote.Total.ChannelCommisionAmount.MarketDisplay

Quote.Total.UserCommisionPercent.DefaultDisplay

Quote.Total.UserCommisionPercent.DefaultDecimal

Quote.Total.UserCommisionPercent.MarketDecimal

Quote.Total.UserCommisionPercent.MarketDisplay

Quote.Total.UserCommisionAmount.DefaultDisplay

Quote.Total.UserCommisionAmount.DefaultDecimal

Quote.Total.UserCommisionAmount.MarketDecimal

Quote.Total.UserCommisionAmount.MarketDisplay

Quote.Total.ShippingStaticPrice.DefaultDisplay

Quote.Total.ShippingStaticPrice.DefaultDecimal

Quote.Total.ShippingStaticPrice.MarketDecimal

Quote.Total.ShippingStaticPrice.MarketDisplay

Quote.Total.ShippingCost.DefaultDisplay

Quote.Total.ShippingCost.DefaultDecimal

Quote.Total.ShippingCost.MarketDecimal

Quote.Total.ShippingCost.MarketDisplay

Quote.Total.TaxPercent.DefaultDisplay

Quote.Total.TaxPercent.DefaultDecimal

Quote.Total.TaxPercent.MarketDecimal

Quote.Total.TaxPercent.MarketDisplay

Quote.Total.TaxAmount.DefaultDisplay

Quote.Total.TaxAmount.DefaultDecimal

Quote.Total.TaxAmount.MarketDecimal

Quote.Total.TaxAmount.MarketDisplay

Quote.Total.VatPercent.DefaultDisplay

Quote.Total.VatPercent.DefaultDecimal

Quote.Total.VatPercent.MarketDecimal

Quote.Total.VatPercent.MarketDisplay

SAP CPQ Setup and Administration Guide


654 PUBLIC SAP CPQ Tags
Quote.Total.VatAmount.DefaultDisplay

Quote.Total.VatAmount.DefaultDecimal

Quote.Total.VatAmount.MarketDecimal

Quote.Total.VatAmount.MarketDisplay

Quote.Total.TotalAmount.DefaultDisplay

Quote.Total.TotalAmount.DefaultDecimal

Quote.Total.TotalAmount.MarketDecimal

Quote.Total.TotalAmount.MarketDisplay

Quote.Total.TotalWeight.DefaultDisplay

Quote.Total.TotalWeight.DefaultDecimal

Quote.Total.TotalWeight.MarketDecimal

Quote.Total.TotalWeight.MarketDisplay

Quote.Total.TotalUpfrontAmount.DefaultDisplay

Quote.Total.TotalUpfrontAmount.DefaultDecimal

Quote.Total.TotalUpfrontAmount.MarketDecimal

Quote.Total.TotalUpfrontAmount.MarketDisplay

Quote.Total.TotalMonthlyFeeAmount.DefaultDisplay

Quote.Total.TotalMonthlyFeeAmount.DefaultDecimal

Quote.Total.TotalMonthlyFeeAmount.MarketDecimal

Quote.Total.TotalMonthlyFeeAmount.MarketDisplay

Quote.Total.NumberOfPayments

Quote.Total.TotalCustomColumn1.DefaultDisplay

Quote.Total.TotalCustomColumn1.DefaultDecimal

Quote.Total.TotalCustomColumn1.MarketDecimal

Quote.Total.TotalCustomColumn1.MarketDisplay

Quote.Total.TotalCustomColumn2.DefaultDisplay

Quote.Total.TotalCustomColumn2.DefaultDecimal

Quote.Total.TotalCustomColumn2.MarketDecimal

Quote.Total.TotalCustomColumn2.MarketDisplay

Quote.Total.TotalCustomColumn3.DefaultDisplay

Quote.Total.TotalCustomColumn3.DefaultDecimal

Quote.Total.TotalCustomColumn3.MarketDecimal

Quote.Total.TotalCustomColumn3.MarketDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 655
Quote.Total.TotalCustomColumn4.DefaultDisplay

Quote.Total.TotalCustomColumn4.DefaultDecimal

Quote.Total.TotalCustomColumn4.MarketDecimal

Quote.Total.TotalCustomColumn4.MarketDisplay

Quote.Total.TotalCustomColumn5.DefaultDisplay

Quote.Total.TotalCustomColumn5.DefaultDecimal

Quote.Total.TotalCustomColumn5.MarketDecimal

Quote.Total.TotalCustomColumn5.MarketDisplay

Quote.Total.TotalCustomColumn6.DefaultDisplay

Quote.Total.TotalCustomColumn6.DefaultDecimal

Quote.Total.TotalCustomColumn6.MarketDecimal

Quote.Total.TotalCustomColumn6.MarketDisplay

Quote.Total.TotalVariantItems.DefaultDisplay

Quote.Total.TotalVariantItems.DefaultDecimal

Quote.Total.TotalVariantItems.MarketDecimal

Quote.Total.TotalVariantItems.MarketDisplay

Quote.Total.MonthlyFee.DefaultDisplay

Quote.Total.MonthlyFee.DefaultDecimal

Quote.Total.MonthlyFee.MarketDecimal

Quote.Total.MonthlyFee.MarketDisplay

Quote.Total.TotalMRCListPrice.DefaultDisplay

Quote.Total.TotalMRCListPrice.DefaultDecimal

Quote.Total.TotalMRCListPrice.MarketDecimal

Quote.Total.TotalMRCListPrice.MarketDisplay

Quote.Total.TotalMRCNetPrice.DefaultDisplay

Quote.Total.TotalMRCNetPrice.DefaultDecimal

Quote.Total.TotalMRCNetPrice.MarketDecimal

Quote.Total.TotalMRCNetPrice.MarketDisplay

Quote.Total.AverageMRCProductDiscountPercent.DefaultDisplay

Quote.Total.AverageMRCProductDiscountPercent.DefaultDecimal

Quote.Total.AverageMRCProductDiscountPercent.MarketDecimal

Quote.Total.AverageMRCProductDiscountPercent.MarketDisplay

Quote.Total.TotalMRCProductDiscountAmount.DefaultDisplay

SAP CPQ Setup and Administration Guide


656 PUBLIC SAP CPQ Tags
Quote.Total.TotalMRCProductDiscountAmount.DefaultDecimal

Quote.Total.TotalMRCProductDiscountAmount.MarketDecimal

Quote.Total.TotalMRCProductDiscountAmount.MarketDisplay

Quote.Total.AverageMRCProductMultiplier.DefaultDisplay

Quote.Total.AverageMRCProductMultiplier.DefaultDecimal

Quote.Total.AverageMRCProductMultiplier.MarketDecimal

Quote.Total.AverageMRCProductMultiplier.MarketDisplay

Quote.Total.TotalMRCProductMultiplierAmount.DefaultDisplay

Quote.Total.TotalMRCProductMultiplierAmount.DefaultDecimal

Quote.Total.TotalMRCProductMultiplierAmount.MarketDecimal

Quote.Total.TotalMRCProductMultiplierAmount.MarketDisplay

Quote.Total.MRCSubTotalAmount.DefaultDisplay

Quote.Total.MRCSubTotalAmount.DefaultDecimal

Quote.Total.MRCSubTotalAmount.MarketDecimal

Quote.Total.MRCSubTotalAmount.MarketDisplay

Quote.Total.TotalMRCChannelMarkupPercent.DefaultDisplay

Quote.Total.TotalMRCChannelMarkupPercent.DefaultDecimal

Quote.Total.TotalMRCChannelMarkupPercent.MarketDecimal

Quote.Total.TotalMRCChannelMarkupPercent.MarketDisplay

Quote.Total.TotalMRCChannelMarkupAmount.DefaultDisplay

Quote.Total.TotalMRCChannelMarkupAmount.DefaultDecimal

Quote.Total.TotalMRCChannelMarkupAmount.MarketDecimal

Quote.Total.TotalMRCChannelMarkupAmount.MarketDisplay

Quote.Total.TotalMRCCost.DefaultDisplay

Quote.Total.TotalMRCCost.DefaultDecimal

Quote.Total.TotalMRCCost.MarketDecimal

Quote.Total.TotalMRCCost.MarketDisplay

Quote.Total.TotalMRCGrossMarginPercent.DefaultDisplay

Quote.Total.TotalMRCGrossMarginPercent.DefaultDecimal

Quote.Total.TotalMRCGrossMarginPercent.MarketDecimal

Quote.Total.TotalMRCGrossMarginPercent.MarketDisplay

Quote.Total.TotalMRCGrossMarginAmount.DefaultDisplay

Quote.Total.TotalMRCGrossMarginAmount.DefaultDecimal

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 657
Quote.Total.TotalMRCGrossMarginAmount.MarketDecimal

Quote.Total.TotalMRCGrossMarginAmount.MarketDisplay

Quote.Total.TotalMRCChannelCost.DefaultDisplay

Quote.Total.TotalMRCChannelCost.DefaultDecimal

Quote.Total.TotalMRCChannelCost.MarketDecimal

Quote.Total.TotalMRCChannelCost.MarketDisplay

Quote.Total.TotalMRCChannelGrossMarginPercent.DefaultDisplay

Quote.Total.TotalMRCChannelGrossMarginPercent.DefaultDecimal

Quote.Total.TotalMRCChannelGrossMarginPercent.MarketDecimal

Quote.Total.TotalMRCChannelGrossMarginPercent.MarketDisplay

Quote.Total.TotalMRCChannelGrossMarginAmount.DefaultDisplay

Quote.Total.TotalMRCChannelGrossMarginAmount.DefaultDecimal

Quote.Total.TotalMRCChannelGrossMarginAmount.MarketDecimal

Quote.Total.TotalMRCChannelGrossMarginAmount.MarketDisplay

Quote.Total.OverallMRCDiscountPercent.DefaultDisplay

Quote.Total.OverallMRCDiscountPercent.DefaultDecimal

Quote.Total.OverallMRCDiscountPercent.MarketDecimal

Quote.Total.OverallMRCDiscountPercent.MarketDisplay

Quote.Total.OverallMRCDiscountAmount.DefaultDisplay

Quote.Total.OverallMRCDiscountAmount.DefaultDecimal

Quote.Total.OverallMRCDiscountAmount.MarketDecimal

Quote.Total.OverallMRCDiscountAmount.MarketDisplay

Quote.Total.MRCEndUserSubTotalAmount.DefaultDisplay

Quote.Total.MRCEndUserSubTotalAmount.DefaultDecimal

Quote.Total.MRCEndUserSubTotalAmount.MarketDecimal

Quote.Total.MRCEndUserSubTotalAmount.MarketDisplay

Quote.Total.MRCTaxAmount.DefaultDisplay

Quote.Total.MRCTaxAmount.DefaultDecimal

Quote.Total.MRCTaxAmount.MarketDecimal

Quote.Total.MRCTaxAmount.MarketDisplay

Quote.Total.MRCVatAmount.DefaultDisplay

Quote.Total.MRCVatAmount.DefaultDecimal

Quote.Total.MRCVatAmount.MarketDecimal

SAP CPQ Setup and Administration Guide


658 PUBLIC SAP CPQ Tags
Quote.Total.MRCVatAmount.MarketDisplay

Quote.Total.MRCTotalAmount.DefaultDisplay

Quote.Total.MRCTotalAmount.DefaultDecimal

Quote.Total.MRCTotalAmount.MarketDecimal

Quote.Total.MRCTotalAmount.MarketDisplay

Quote.ProductType().ProductTypeName

Quote.ProductType().ProductTypeRank

Quote.ProductType().ProductTypeId

Quote.ProductType().ProductModelSubTotal.DefaultDisplay

Quote.ProductType().ProductModelSubTotal.DefaultDecimal

Quote.ProductType().ProductModelSubTotal.MarketDecimal

Quote.ProductType().ProductModelSubTotal.MarketDisplay

Quote.ProductType().PromoDiscountAmount.DefaultDisplay

Quote.ProductType().PromoDiscountAmount.DefaultDecimal

Quote.ProductType().PromoDiscountAmount.MarketDecimal

Quote.ProductType().PromoDiscountAmount.MarketDisplay

Quote.ProductType().PromoDiscountPercent.DefaultDisplay

Quote.ProductType().PromoDiscountPercent.DefaultDecimal

Quote.ProductType().PromoDiscountPercent.MarketDecimal

Quote.ProductType().PromoDiscountPercent.MarketDisplay

Quote.ProductType().ListSubTotal.DefaultDisplay

Quote.ProductType().ListSubTotal.DefaultDecimal

Quote.ProductType().ListSubTotal.MarketDecimal

Quote.ProductType().ListSubTotal.MarketDisplay

Quote.ProductType().Multiplier.DefaultDisplay

Quote.ProductType().Multiplier.DefaultDecimal

Quote.ProductType().Multiplier.MarketDecimal

Quote.ProductType().Multiplier.MarketDisplay

Quote.ProductType().MultiplierAmount.DefaultDisplay

Quote.ProductType().MultiplierAmount.DefaultDecimal

Quote.ProductType().MultiplierAmount.MarketDecimal

Quote.ProductType().MultiplierAmount.MarketDisplay

Quote.ProductType().DiscountPercent.DefaultDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 659
Quote.ProductType().DiscountPercent.DefaultDecimal

Quote.ProductType().DiscountPercent.MarketDecimal

Quote.ProductType().DiscountPercent.MarketDisplay

Quote.ProductType().DiscountAmount.DefaultDisplay

Quote.ProductType().DiscountAmount.DefaultDecimal

Quote.ProductType().DiscountAmount.MarketDecimal

Quote.ProductType().DiscountAmount.MarketDisplay

Quote.ProductType().SubTotal.DefaultDisplay

Quote.ProductType().SubTotal.DefaultDecimal

Quote.ProductType().SubTotal.MarketDecimal

Quote.ProductType().SubTotal.MarketDisplay

Quote.ProductType().ChannelMarkupPercent.DefaultDisplay

Quote.ProductType().ChannelMarkupPercent.DefaultDecimal

Quote.ProductType().ChannelMarkupPercent.MarketDecimal

Quote.ProductType().ChannelMarkupPercent.MarketDisplay

Quote.ProductType().ChannelMarkupAmount.DefaultDisplay

Quote.ProductType().ChannelMarkupAmount.DefaultDecimal

Quote.ProductType().ChannelMarkupAmount.MarketDecimal

Quote.ProductType().ChannelMarkupAmount.MarketDisplay

Quote.ProductType().EndUserSubTotal.DefaultDisplay

Quote.ProductType().EndUserSubTotal.DefaultDecimal

Quote.ProductType().EndUserSubTotal.MarketDecimal

Quote.ProductType().EndUserSubTotal.MarketDisplay

Quote.ProductType().ChannelCommisionPercent.DefaultDisplay

Quote.ProductType().ChannelCommisionPercent.DefaultDecimal

Quote.ProductType().ChannelCommisionPercent.MarketDecimal

Quote.ProductType().ChannelCommisionPercent.MarketDisplay

Quote.ProductType().ChannelCommisionAmount.DefaultDisplay

Quote.ProductType().ChannelCommisionAmount.DefaultDecimal

Quote.ProductType().ChannelCommisionAmount.MarketDecimal

Quote.ProductType().ChannelCommisionAmount.MarketDisplay

Quote.ProductType().UserCommisionPercent.DefaultDisplay

Quote.ProductType().UserCommisionPercent.DefaultDecimal

SAP CPQ Setup and Administration Guide


660 PUBLIC SAP CPQ Tags
Quote.ProductType().UserCommisionPercent.MarketDecimal

Quote.ProductType().UserCommisionPercent.MarketDisplay

Quote.ProductType().UserCommisionAmount.DefaultDisplay

Quote.ProductType().UserCommisionAmount.DefaultDecimal

Quote.ProductType().UserCommisionAmount.MarketDecimal

Quote.ProductType().UserCommisionAmount.MarketDisplay

Quote.ProductType().Cost.DefaultDisplay

Quote.ProductType().Cost.DefaultDecimal

Quote.ProductType().Cost.MarketDecimal

Quote.ProductType().Cost.MarketDisplay

Quote.ProductType().GrossMarginPercent.DefaultDisplay

Quote.ProductType().GrossMarginPercent.DefaultDecimal

Quote.ProductType().GrossMarginPercent.MarketDecimal

Quote.ProductType().GrossMarginPercent.MarketDisplay

Quote.ProductType().GrossMarginAmount.DefaultDisplay

Quote.ProductType().GrossMarginAmount.DefaultDecimal

Quote.ProductType().GrossMarginAmount.MarketDecimal

Quote.ProductType().GrossMarginAmount.MarketDisplay

Quote.ProductType().ChannelCost.DefaultDisplay

Quote.ProductType().ChannelCost.DefaultDecimal

Quote.ProductType().ChannelCost.MarketDecimal

Quote.ProductType().ChannelCost.MarketDisplay

Quote.ProductType().ChannelGrossMarginPercent.DefaultDisplay

Quote.ProductType().ChannelGrossMarginPercent.DefaultDecimal

Quote.ProductType().ChannelGrossMarginPercent.MarketDecimal

Quote.ProductType().ChannelGrossMarginPercent.MarketDisplay

Quote.ProductType().ChannelGrossMarginAmount.DefaultDisplay

Quote.ProductType().ChannelGrossMarginAmount.DefaultDecimal

Quote.ProductType().ChannelGrossMarginAmount.MarketDecimal

Quote.ProductType().ChannelGrossMarginAmount.MarketDisplay

Quote.ProductType().MarginHealthColor

Quote.ProductType().MarginHealthImage

Quote.ProductType().MRCMarginHealthColor

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 661
Quote.ProductType().MRCMarginHealthImage

Quote.ProductType().DefaultDiscountPercent.DefaultDisplay

Quote.ProductType().DefaultDiscountPercent.DefaultDecimal

Quote.ProductType().DefaultDiscountPercent.MarketDecimal

Quote.ProductType().DefaultDiscountPercent.MarketDisplay

Quote.ProductType().MinDiscountPercent.DefaultDisplay

Quote.ProductType().MinDiscountPercent.DefaultDecimal

Quote.ProductType().MinDiscountPercent.MarketDecimal

Quote.ProductType().MinDiscountPercent.MarketDisplay

Quote.ProductType().MaxDiscountPercent.DefaultDisplay

Quote.ProductType().MaxDiscountPercent.DefaultDecimal

Quote.ProductType().MaxDiscountPercent.MarketDecimal

Quote.ProductType().MaxDiscountPercent.MarketDisplay

Quote.ProductType().DefaultMultiplier.DefaultDisplay

Quote.ProductType().DefaultMultiplier.DefaultDecimal

Quote.ProductType().DefaultMultiplier.MarketDecimal

Quote.ProductType().DefaultMultiplier.MarketDisplay

Quote.ProductType().MinMultiplier.DefaultDisplay

Quote.ProductType().MinMultiplier.DefaultDecimal

Quote.ProductType().MinMultiplier.MarketDecimal

Quote.ProductType().MinMultiplier.MarketDisplay

Quote.ProductType().MaxMultiplier.DefaultDisplay

Quote.ProductType().MaxMultiplier.DefaultDecimal

Quote.ProductType().MaxMultiplier.MarketDecimal

Quote.ProductType().MaxMultiplier.MarketDisplay

Quote.ProductType().DefaultMRCDiscountPercent.DefaultDisplay

Quote.ProductType().DefaultMRCDiscountPercent.DefaultDecimal

Quote.ProductType().DefaultMRCDiscountPercent.MarketDecimal

Quote.ProductType().DefaultMRCDiscountPercent.MarketDisplay

Quote.ProductType().MinMRCDiscountPercent.DefaultDisplay

Quote.ProductType().MinMRCDiscountPercent.DefaultDecimal

Quote.ProductType().MinMRCDiscountPercent.MarketDecimal

Quote.ProductType().MinMRCDiscountPercent.MarketDisplay

SAP CPQ Setup and Administration Guide


662 PUBLIC SAP CPQ Tags
Quote.ProductType().MaxMRCDiscountPercent.DefaultDisplay

Quote.ProductType().MaxMRCDiscountPercent.DefaultDecimal

Quote.ProductType().MaxMRCDiscountPercent.MarketDecimal

Quote.ProductType().MaxMRCDiscountPercent.MarketDisplay

Quote.ProductType().DefaultMRCMultiplier.DefaultDisplay

Quote.ProductType().DefaultMRCMultiplier.DefaultDecimal

Quote.ProductType().DefaultMRCMultiplier.MarketDecimal

Quote.ProductType().DefaultMRCMultiplier.MarketDisplay

Quote.ProductType().MinMRCMultiplier.DefaultDisplay

Quote.ProductType().MinMRCMultiplier.DefaultDecimal

Quote.ProductType().MinMRCMultiplier.MarketDecimal

Quote.ProductType().MinMRCMultiplier.MarketDisplay

Quote.ProductType().MaxMRCMultiplier.DefaultDisplay

Quote.ProductType().MaxMRCMultiplier.DefaultDecimal

Quote.ProductType().MaxMRCMultiplier.MarketDecimal

Quote.ProductType().MaxMRCMultiplier.MarketDisplay

Quote.ProductType().CanOverrideMinMaxValues

Quote.ProductType().CustomColumn1.DefaultDisplay

Quote.ProductType().CustomColumn1.DefaultDecimal

Quote.ProductType().CustomColumn1.MarketDecimal

Quote.ProductType().CustomColumn1.MarketDisplay

Quote.ProductType().CustomColumn2.DefaultDisplay

Quote.ProductType().CustomColumn2.DefaultDecimal

Quote.ProductType().CustomColumn2.MarketDecimal

Quote.ProductType().CustomColumn2.MarketDisplay

Quote.ProductType().CustomColumn3.DefaultDisplay

Quote.ProductType().CustomColumn3.DefaultDecimal

Quote.ProductType().CustomColumn3.MarketDecimal

Quote.ProductType().CustomColumn3.MarketDisplay

Quote.ProductType().CustomColumn4.DefaultDisplay

Quote.ProductType().CustomColumn4.DefaultDecimal

Quote.ProductType().CustomColumn4.MarketDecimal

Quote.ProductType().CustomColumn4.MarketDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 663
Quote.ProductType().CustomColumn5.DefaultDisplay

Quote.ProductType().CustomColumn5.DefaultDecimal

Quote.ProductType().CustomColumn5.MarketDecimal

Quote.ProductType().CustomColumn5.MarketDisplay

Quote.ProductType().CustomColumn6.DefaultDisplay

Quote.ProductType().CustomColumn6.DefaultDecimal

Quote.ProductType().CustomColumn6.MarketDecimal

Quote.ProductType().CustomColumn6.MarketDisplay

Quote.ProductType().MRCListSubTotal.DefaultDisplay

Quote.ProductType().MRCListSubTotal.DefaultDecimal

Quote.ProductType().MRCListSubTotal.MarketDecimal

Quote.ProductType().MRCListSubTotal.MarketDisplay

Quote.ProductType().MRCCost.DefaultDisplay

Quote.ProductType().MRCCost.DefaultDecimal

Quote.ProductType().MRCCost.MarketDecimal

Quote.ProductType().MRCCost.MarketDisplay

Quote.ProductType().MRCDiscountPercent.DefaultDisplay

Quote.ProductType().MRCDiscountPercent.DefaultDecimal

Quote.ProductType().MRCDiscountPercent.MarketDecimal

Quote.ProductType().MRCDiscountPercent.MarketDisplay

Quote.ProductType().MRCDiscountAmount.DefaultDisplay

Quote.ProductType().MRCDiscountAmount.DefaultDecimal

Quote.ProductType().MRCDiscountAmount.MarketDecimal

Quote.ProductType().MRCDiscountAmount.MarketDisplay

Quote.ProductType().MRCMultiplier.DefaultDisplay

Quote.ProductType().MRCMultiplier.DefaultDecimal

Quote.ProductType().MRCMultiplier.MarketDecimal

Quote.ProductType().MRCMultiplier.MarketDisplay

Quote.ProductType().MRCMultiplierAmount.DefaultDisplay

Quote.ProductType().MRCMultiplierAmount.DefaultDecimal

Quote.ProductType().MRCMultiplierAmount.MarketDecimal

Quote.ProductType().MRCMultiplierAmount.MarketDisplay

Quote.ProductType().MRCSubTotal.DefaultDisplay

SAP CPQ Setup and Administration Guide


664 PUBLIC SAP CPQ Tags
Quote.ProductType().MRCSubTotal.DefaultDecimal

Quote.ProductType().MRCSubTotal.MarketDecimal

Quote.ProductType().MRCSubTotal.MarketDisplay

Quote.ProductType().MRCGrossMarginPercent.DefaultDisplay

Quote.ProductType().MRCGrossMarginPercent.DefaultDecimal

Quote.ProductType().MRCGrossMarginPercent.MarketDecimal

Quote.ProductType().MRCGrossMarginPercent.MarketDisplay

Quote.ProductType().MRCGrossMarginAmount.DefaultDisplay

Quote.ProductType().MRCGrossMarginAmount.DefaultDecimal

Quote.ProductType().MRCGrossMarginAmount.MarketDecimal

Quote.ProductType().MRCGrossMarginAmount.MarketDisplay

Quote.ProductType().MRCChannelMarkupPercent.DefaultDisplay

Quote.ProductType().MRCChannelMarkupPercent.DefaultDecimal

Quote.ProductType().MRCChannelMarkupPercent.MarketDecimal

Quote.ProductType().MRCChannelMarkupPercent.MarketDisplay

Quote.ProductType().MRCChannelMarkupAmount.DefaultDisplay

Quote.ProductType().MRCChannelMarkupAmount.DefaultDecimal

Quote.ProductType().MRCChannelMarkupAmount.MarketDecimal

Quote.ProductType().MRCChannelMarkupAmount.MarketDisplay

Quote.ProductType().MRCChannelGrossMarginPercent.DefaultDisplay

Quote.ProductType().MRCChannelGrossMarginPercent.DefaultDecimal

Quote.ProductType().MRCChannelGrossMarginPercent.MarketDecimal

Quote.ProductType().MRCChannelGrossMarginPercent.MarketDisplay

Quote.ProductType().MRCEndUserSubTotal.DefaultDisplay

Quote.ProductType().MRCEndUserSubTotal.DefaultDecimal

Quote.ProductType().MRCEndUserSubTotal.MarketDecimal

Quote.ProductType().MRCEndUserSubTotal.MarketDisplay

Quote.AdditionalDiscount().Description

Quote.AdditionalDiscount().DiscountAmount.DefaultDisplay

Quote.AdditionalDiscount().DiscountAmount.DefaultDecimal

Quote.AdditionalDiscount().DiscountAmount.MarketDecimal

Quote.AdditionalDiscount().DiscountAmount.MarketDisplay

Quote.CustomField()

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 665
Quote.CustomField().Format()

Quote.CustomField().AddDays()

Quote.CustomField().AddDays().Format()

Quote.CustomField().AddDays().InUSDateFormat

Quote.CustomField().AddMonths()

Quote.CustomField().AddMonths().Format()

Quote.CustomField().AddMonths().InUSDateFormat

Quote.CustomField().AddYears()

Quote.CustomField().AddYears().Format()

Quote.CustomField().AddYears().InUSDateFormat

Quote.CustomField().InUSDateFormat

Quote.CustomField().AttrValue

Quote.CustomField().AttrValueCode

Quote.Customer().CustomerId

Quote.Customer().ShopCartId

Quote.Customer().UserId

Quote.Customer().CustomerCode

Quote.Customer().CRMAccountId

Quote.Customer().CRMContactId

Quote.Customer().DirtyFlag

Quote.Customer().RevisionNumber

Quote.Customer().FirstName

Quote.Customer().LastName

Quote.Customer().Company

Quote.Customer().Address1

Quote.Customer().Address2

Quote.Customer().City

Quote.Customer().StateAbbrev

Quote.Customer().ZipCode

Quote.Customer().CountryAbbrev

Quote.Customer().TerritoryId

Quote.Customer().TerritoryName

Quote.Customer().BusinessPhone

SAP CPQ Setup and Administration Guide


666 PUBLIC SAP CPQ Tags
Quote.Customer().BusinessFax

Quote.Customer().Email

Quote.Customer().Province

Quote.Customer().Title

Quote.Customer().OwnerName

Quote.Customer().PrimaryIndustry

Quote.Customer().CustomerPassword

Quote.Customer().CustomerType

Quote.Customer().Active

Quote.Customer().RoleType

Quote.Customer().Rank

Quote.Customer().Editable

Quote.Customer().Visible

Quote.Customer().Required

Quote.Customer().IsPersonal

Quote.Customer().CustomField()

Quote.Revision.CartId

Quote.Revision.Description

Quote.Revision.MasterId

Quote.Revision.Name

Quote.Revision.RevisionNumber

Quote.Opportunity.Id

Quote.Opportunity.Name

Quote.Status.Id

Quote.Status.Name

Quote.Status.NameDefaultLanguage

Quote.SelectedMarket.MarketName

Quote.SelectedMarket.MarketId

Quote.SelectedMarket.MarketFactor.DefaultDisplay

Quote.SelectedMarket.MarketFactor.DefaultDecimal

Quote.SelectedMarket.MarketFactor.MarketDecimal

Quote.SelectedMarket.MarketFactor.MarketDisplay

Quote.SelectedMarket.ForwardCurrencyRate.DefaultDisplay

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 667
Quote.SelectedMarket.ForwardCurrencyRate.DefaultDecimal

Quote.SelectedMarket.ForwardCurrencyRate.MarketDecimal

Quote.SelectedMarket.ForwardCurrencyRate.MarketDisplay

Quote.SelectedMarket.MarketCode

Quote.SelectedMarket.CurrencyCode

Quote.SelectedMarket.CurrencyQuote.DefaultDisplay

Quote.SelectedMarket.CurrencyQuote.DefaultDecimal

Quote.SelectedMarket.CurrencyQuote.MarketDecimal

Quote.SelectedMarket.CurrencyQuote.MarketDisplay

Quote.SelectedMarket.CurrencyDescription

Quote.SelectedMarket.CurrencySign

Quote.SelectedMarket.CurrencyDefault

Quote.SelectedMarket.Selected

Quote.SelectedShipping.ShippingName

Quote.SelectedShipping.ShippingId

Quote.SelectedShipping.StaticCostFormula

Quote.SelectedShipping.ShippingErrorMessage

Quote.SelectedShipping.Selected

Quote.SelectedShipping.Editable

Quote.CRMObject().Id

Quote.CRMObject().Name

Quote.Link.Crypted

Quote.Link.CustomerAcceptance

Quote.CountOfMainItems

Quote.CountOfAllItems

Quote.DocumentFormat

Quote.DocumentTemplateName

Quote.DateOrdered

Quote.DateOrdered.Format()

Quote.DateOrdered.AddDays()

Quote.DateOrdered.AddDays().Format()

Quote.DateOrdered.AddDays().InUSDateFormat

Quote.DateOrdered.AddMonths()

SAP CPQ Setup and Administration Guide


668 PUBLIC SAP CPQ Tags
Quote.DateOrdered.AddMonths().Format()

Quote.DateOrdered.AddMonths().InUSDateFormat

Quote.DateOrdered.AddYears()

Quote.DateOrdered.AddYears().Format()

Quote.DateOrdered.AddYears().InUSDateFormat

Quote.DateClosed

Quote.DateClosed.Format()

Quote.DateClosed.AddDays()

Quote.DateClosed.AddDays().Format()

Quote.DateClosed.AddDays().InUSDateFormat

Quote.DateClosed.AddMonths()

Quote.DateClosed.AddMonths().Format()

Quote.DateClosed.AddMonths().InUSDateFormat

Quote.DateClosed.AddYears()

Quote.DateClosed.AddYears().Format()

Quote.DateClosed.AddYears().InUSDateFormat

Quote.DateCreated

Quote.DateCreated.Format()

Quote.DateCreated.AddDays()

Quote.DateCreated.AddDays().Format()

Quote.DateCreated.AddDays().InUSDateFormat

Quote.DateCreated.AddMonths()

Quote.DateCreated.AddMonths().Format()

Quote.DateCreated.AddMonths().InUSDateFormat

Quote.DateCreated.AddYears()

Quote.DateCreated.AddYears().Format()

Quote.DateCreated.AddYears().InUSDateFormat

Quote.DateModified

Quote.DateModified.Format()

Quote.DateModified.AddDays()

Quote.DateModified.AddDays().Format()

Quote.DateModified.AddDays().InUSDateFormat

Quote.DateModified.AddMonths()

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 669
Quote.DateModified.AddMonths().Format()

Quote.DateModified.AddMonths().InUSDateFormat

Quote.DateModified.AddYears()

Quote.DateModified.AddYears().Format()

Quote.DateModified.AddYears().InUSDateFormat

Quote.DirtyFlag

Quote.SubCartId

Quote.SubOwnerId

Quote.ActiveRevision

Quote.MarketId

Quote.MarketFactor.DefaultDisplay

Quote.MarketFactor.DefaultDecimal

Quote.MarketFactor.MarketDecimal

Quote.MarketFactor.MarketDisplay

Quote.ForwardCurrencyRate.DefaultDisplay

Quote.ForwardCurrencyRate.DefaultDecimal

Quote.ForwardCurrencyRate.MarketDecimal

Quote.ForwardCurrencyRate.MarketDisplay

Quote.GlobalsCsv

Quote.PaymentApproved

Quote.PaymentMethod

Quote.TrackingKey

Quote.LastCartXml

Quote.CRMAccountRoleId

Quote.CartId

Quote.OwnerId

Quote.TaxExempt

Quote.DiscountExceeded

Quote.CartCompositeNumber

Quote.QuoteNumber

Quote.Owner.Id

Quote.Owner.Username

Quote.Owner.Name

SAP CPQ Setup and Administration Guide


670 PUBLIC SAP CPQ Tags
Quote.Owner.FirstName

Quote.Owner.LastName

Quote.Owner.Email

Quote.Owner.Address1

Quote.Owner.Address2

Quote.Owner.ZipCode

Quote.Owner.City

Quote.Owner.State

Quote.Owner.Country

Quote.Owner.Phone

Quote.Owner.Fax

Quote.Owner.UserIdCode

Quote.Owner.UserCode

Quote.Owner.IsAdmin

Quote.Owner.Brand

Quote.Owner.EffectiveDate

Quote.Owner.CustomField()

Quote.Owner.UserType.Id

Quote.Owner.UserType.Name

Quote.Owner.Company.Id

Quote.Owner.Company.Name

Quote.Owner.Company.Address1

Quote.Owner.Company.Address2

Quote.Owner.Company.City

Quote.Owner.Company.State

Quote.Owner.Company.Province

Quote.Owner.Company.Zip

Quote.Owner.Company.Country

Quote.Owner.Company.Phone

Quote.Owner.Company.Fax

Quote.Owner.Company.Email

Quote.Owner.Company.CompanyCode

Quote.Owner.Company.ImageLogoLink

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 671
Quote.Owner.Company.CrmAccountId

Quote.Owner.Territory.Id

Quote.Owner.Territory.Name

Quote.Owner.ManagingParent.Id

Quote.Owner.ManagingParent.Username

Quote.Owner.ManagingParent.Name

Quote.Owner.ManagingParent.FirstName

Quote.Owner.ManagingParent.LastName

Quote.Owner.ManagingParent.Email

Quote.Owner.ManagingParent.Address1

Quote.Owner.ManagingParent.Address2

Quote.Owner.ManagingParent.ZipCode

Quote.Owner.ManagingParent.City

Quote.Owner.ManagingParent.State

Quote.Owner.ManagingParent.Country

Quote.Owner.ManagingParent.Phone

Quote.Owner.ManagingParent.Fax

Quote.Owner.ManagingParent.UserIdCode

Quote.Owner.ManagingParent.UserCode

Quote.Owner.ManagingParent.IsAdmin

Quote.Owner.ManagingParent.Brand

Quote.Owner.ManagingParent.EffectiveDate

Quote.Owner.ManagingParent.CustomField()

Quote.Owner.ManagingParent.UserType.Id

Quote.Owner.ManagingParent.UserType.Name

Quote.Owner.ManagingParent.Company.Id

Quote.Owner.ManagingParent.Company.Name

Quote.Owner.ManagingParent.Company.Address1

Quote.Owner.ManagingParent.Company.Address2

Quote.Owner.ManagingParent.Company.City

Quote.Owner.ManagingParent.Company.State

Quote.Owner.ManagingParent.Company.Province

Quote.Owner.ManagingParent.Company.Zip

SAP CPQ Setup and Administration Guide


672 PUBLIC SAP CPQ Tags
Quote.Owner.ManagingParent.Company.Country

Quote.Owner.ManagingParent.Company.Phone

Quote.Owner.ManagingParent.Company.Fax

Quote.Owner.ManagingParent.Company.Email

Quote.Owner.ManagingParent.Company.CompanyCode

Quote.Owner.ManagingParent.Company.ImageLogoLink

Quote.Owner.ManagingParent.Company.CrmAccountId

Quote.Owner.ManagingParent.Territory.Id

Quote.Owner.ManagingParent.Territory.Name

Quote.Owner.OrderingParent.Id

Quote.Owner.OrderingParent.Username

Quote.Owner.OrderingParent.Name

Quote.Owner.OrderingParent.FirstName

Quote.Owner.OrderingParent.LastName

Quote.Owner.OrderingParent.Email

Quote.Owner.OrderingParent.Address1

Quote.Owner.OrderingParent.Address2

Quote.Owner.OrderingParent.ZipCode

Quote.Owner.OrderingParent.City

Quote.Owner.OrderingParent.State

Quote.Owner.OrderingParent.Country

Quote.Owner.OrderingParent.Phone

Quote.Owner.OrderingParent.Fax

Quote.Owner.OrderingParent.UserIdCode

Quote.Owner.OrderingParent.UserCode

Quote.Owner.OrderingParent.IsAdmin

Quote.Owner.OrderingParent.Brand

Quote.Owner.OrderingParent.EffectiveDate

Quote.Owner.OrderingParent.CustomField()

Quote.Owner.OrderingParent.UserType.Id

Quote.Owner.OrderingParent.UserType.Name

Quote.Owner.OrderingParent.Company.Id

Quote.Owner.OrderingParent.Company.Name

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 673
Quote.Owner.OrderingParent.Company.Address1

Quote.Owner.OrderingParent.Company.Address2

Quote.Owner.OrderingParent.Company.City

Quote.Owner.OrderingParent.Company.State

Quote.Owner.OrderingParent.Company.Province

Quote.Owner.OrderingParent.Company.Zip

Quote.Owner.OrderingParent.Company.Country

Quote.Owner.OrderingParent.Company.Phone

Quote.Owner.OrderingParent.Company.Fax

Quote.Owner.OrderingParent.Company.Email

Quote.Owner.OrderingParent.Company.CompanyCode

Quote.Owner.OrderingParent.Company.ImageLogoLink

Quote.Owner.OrderingParent.Company.CrmAccountId

Quote.Owner.OrderingParent.Territory.Id

Quote.Owner.OrderingParent.Territory.Name

Quote.Owner.ApproveParent.Id

Quote.Owner.ApproveParent.Username

Quote.Owner.ApproveParent.Name

Quote.Owner.ApproveParent.FirstName

Quote.Owner.ApproveParent.LastName

Quote.Owner.ApproveParent.Email

Quote.Owner.ApproveParent.Address1

Quote.Owner.ApproveParent.Address2

Quote.Owner.ApproveParent.ZipCode

Quote.Owner.ApproveParent.City

Quote.Owner.ApproveParent.State

Quote.Owner.ApproveParent.Country

Quote.Owner.ApproveParent.Phone

Quote.Owner.ApproveParent.Fax

Quote.Owner.ApproveParent.UserIdCode

Quote.Owner.ApproveParent.UserCode

Quote.Owner.ApproveParent.IsAdmin

Quote.Owner.ApproveParent.Brand

SAP CPQ Setup and Administration Guide


674 PUBLIC SAP CPQ Tags
Quote.Owner.ApproveParent.EffectiveDate

Quote.Owner.ApproveParent.CustomField()

Quote.Owner.ApproveParent.UserType.Id

Quote.Owner.ApproveParent.UserType.Name

Quote.Owner.ApproveParent.Company.Id

Quote.Owner.ApproveParent.Company.Name

Quote.Owner.ApproveParent.Company.Address1

Quote.Owner.ApproveParent.Company.Address2

Quote.Owner.ApproveParent.Company.City

Quote.Owner.ApproveParent.Company.State

Quote.Owner.ApproveParent.Company.Province

Quote.Owner.ApproveParent.Company.Zip

Quote.Owner.ApproveParent.Company.Country

Quote.Owner.ApproveParent.Company.Phone

Quote.Owner.ApproveParent.Company.Fax

Quote.Owner.ApproveParent.Company.Email

Quote.Owner.ApproveParent.Company.CompanyCode

Quote.Owner.ApproveParent.Company.ImageLogoLink

Quote.Owner.ApproveParent.Company.CrmAccountId

Quote.Owner.ApproveParent.Territory.Id

Quote.Owner.ApproveParent.Territory.Name

Visitor.Id

Visitor.Username

Visitor.Name

Visitor.FirstName

Visitor.LastName

Visitor.Email

Visitor.Address1

Visitor.Address2

Visitor.ZipCode

Visitor.City

Visitor.State

Visitor.Country

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 675
Visitor.Phone

Visitor.Fax

Visitor.UserIdCode

Visitor.UserCode

Visitor.IsAdmin

Visitor.Brand

Visitor.EffectiveDate

Visitor.CustomField()

Visitor.UserType.Id

Visitor.UserType.Name

Visitor.Company.Id

Visitor.Company.Name

Visitor.Company.Address1

Visitor.Company.Address2

Visitor.Company.City

Visitor.Company.State

Visitor.Company.Province

Visitor.Company.Zip

Visitor.Company.Country

Visitor.Company.Phone

Visitor.Company.Fax

Visitor.Company.Email

Visitor.Company.CompanyCode

Visitor.Company.ImageLogoLink

Visitor.Company.CrmAccountId

Visitor.Territory.Id

Visitor.Territory.Name

Visitor.ManagingParent.Id

Visitor.ManagingParent.Username

Visitor.ManagingParent.Name

Visitor.ManagingParent.FirstName

Visitor.ManagingParent.LastName

Visitor.ManagingParent.Email

SAP CPQ Setup and Administration Guide


676 PUBLIC SAP CPQ Tags
Visitor.ManagingParent.Address1

Visitor.ManagingParent.Address2

Visitor.ManagingParent.ZipCode

Visitor.ManagingParent.City

Visitor.ManagingParent.State

Visitor.ManagingParent.Country

Visitor.ManagingParent.Phone

Visitor.ManagingParent.Fax

Visitor.ManagingParent.UserIdCode

Visitor.ManagingParent.UserCode

Visitor.ManagingParent.IsAdmin

Visitor.ManagingParent.Brand

Visitor.ManagingParent.EffectiveDate

Visitor.ManagingParent.CustomField()

Visitor.ManagingParent.UserType.Id

Visitor.ManagingParent.UserType.Name

Visitor.ManagingParent.Company.Id

Visitor.ManagingParent.Company.Name

Visitor.ManagingParent.Company.Address1

Visitor.ManagingParent.Company.Address2

Visitor.ManagingParent.Company.City

Visitor.ManagingParent.Company.State

Visitor.ManagingParent.Company.Province

Visitor.ManagingParent.Company.Zip

Visitor.ManagingParent.Company.Country

Visitor.ManagingParent.Company.Phone

Visitor.ManagingParent.Company.Fax

Visitor.ManagingParent.Company.Email

Visitor.ManagingParent.Company.CompanyCode

Visitor.ManagingParent.Company.ImageLogoLink

Visitor.ManagingParent.Company.CrmAccountId

Visitor.ManagingParent.Territory.Id

Visitor.ManagingParent.Territory.Name

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 677
Visitor.OrderingParent.Id

Visitor.OrderingParent.Username

Visitor.OrderingParent.Name

Visitor.OrderingParent.FirstName

Visitor.OrderingParent.LastName

Visitor.OrderingParent.Email

Visitor.OrderingParent.Address1

Visitor.OrderingParent.Address2

Visitor.OrderingParent.ZipCode

Visitor.OrderingParent.City

Visitor.OrderingParent.State

Visitor.OrderingParent.Country

Visitor.OrderingParent.Phone

Visitor.OrderingParent.Fax

Visitor.OrderingParent.UserIdCode

Visitor.OrderingParent.UserCode

Visitor.OrderingParent.IsAdmin

Visitor.OrderingParent.Brand

Visitor.OrderingParent.EffectiveDate

Visitor.OrderingParent.CustomField()

Visitor.OrderingParent.UserType.Id

Visitor.OrderingParent.UserType.Name

Visitor.OrderingParent.Company.Id

Visitor.OrderingParent.Company.Name

Visitor.OrderingParent.Company.Address1

Visitor.OrderingParent.Company.Address2

Visitor.OrderingParent.Company.City

Visitor.OrderingParent.Company.State

Visitor.OrderingParent.Company.Province

Visitor.OrderingParent.Company.Zip

Visitor.OrderingParent.Company.Country

Visitor.OrderingParent.Company.Phone

Visitor.OrderingParent.Company.Fax

SAP CPQ Setup and Administration Guide


678 PUBLIC SAP CPQ Tags
Visitor.OrderingParent.Company.Email

Visitor.OrderingParent.Company.CompanyCode

Visitor.OrderingParent.Company.ImageLogoLink

Visitor.OrderingParent.Company.CrmAccountId

Visitor.OrderingParent.Territory.Id

Visitor.OrderingParent.Territory.Name

Visitor.ApproveParent.Id

Visitor.ApproveParent.Username

Visitor.ApproveParent.Name

Visitor.ApproveParent.FirstName

Visitor.ApproveParent.LastName

Visitor.ApproveParent.Email

Visitor.ApproveParent.Address1

Visitor.ApproveParent.Address2

Visitor.ApproveParent.ZipCode

Visitor.ApproveParent.City

Visitor.ApproveParent.State

Visitor.ApproveParent.Country

Visitor.ApproveParent.Phone

Visitor.ApproveParent.Fax

Visitor.ApproveParent.UserIdCode

Visitor.ApproveParent.UserCode

Visitor.ApproveParent.IsAdmin

Visitor.ApproveParent.Brand

Visitor.ApproveParent.EffectiveDate

Visitor.ApproveParent.CustomField()

Visitor.ApproveParent.UserType.Id

Visitor.ApproveParent.UserType.Name

Visitor.ApproveParent.Company.Id

Visitor.ApproveParent.Company.Name

Visitor.ApproveParent.Company.Address1

Visitor.ApproveParent.Company.Address2

Visitor.ApproveParent.Company.City

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 679
Visitor.ApproveParent.Company.State

Visitor.ApproveParent.Company.Province

Visitor.ApproveParent.Company.Zip

Visitor.ApproveParent.Company.Country

Visitor.ApproveParent.Company.Phone

Visitor.ApproveParent.Company.Fax

Visitor.ApproveParent.Company.Email

Visitor.ApproveParent.Company.CompanyCode

Visitor.ApproveParent.Company.ImageLogoLink

Visitor.ApproveParent.Company.CrmAccountId

Visitor.ApproveParent.Territory.Id

Visitor.ApproveParent.Territory.Name

Project.Id

Project.Name

Project.Total().Decimal

Project.Owner.Id

Project.Owner.Username

Project.Owner.Name

Project.Owner.FirstName

Project.Owner.LastName

Project.Owner.Email

Project.Owner.Address1

Project.Owner.Address2

Project.Owner.ZipCode

Project.Owner.City

Project.Owner.State

Project.Owner.Country

Project.Owner.Phone

Project.Owner.Fax

Project.Owner.UserIdCode

Project.Owner.UserCode

Project.Owner.IsAdmin

Project.Owner.Brand

SAP CPQ Setup and Administration Guide


680 PUBLIC SAP CPQ Tags
Project.Owner.EffectiveDate

Project.Owner.CustomField()

Project.Owner.UserType.Id

Project.Owner.UserType.Name

Project.Owner.Company.Id

Project.Owner.Company.Name

Project.Owner.Company.Address1

Project.Owner.Company.Address2

Project.Owner.Company.City

Project.Owner.Company.State

Project.Owner.Company.Province

Project.Owner.Company.Zip

Project.Owner.Company.Country

Project.Owner.Company.Phone

Project.Owner.Company.Fax

Project.Owner.Company.Email

Project.Owner.Company.CompanyCode

Project.Owner.Company.ImageLogoLink

Project.Owner.Company.CrmAccountId

Project.Owner.Territory.Id

Project.Owner.Territory.Name

Project.Owner.ManagingParent.Id

Project.Owner.ManagingParent.Username

Project.Owner.ManagingParent.Name

Project.Owner.ManagingParent.FirstName

Project.Owner.ManagingParent.LastName

Project.Owner.ManagingParent.Email

Project.Owner.ManagingParent.Address1

Project.Owner.ManagingParent.Address2

Project.Owner.ManagingParent.ZipCode

Project.Owner.ManagingParent.City

Project.Owner.ManagingParent.State

Project.Owner.ManagingParent.Country

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 681
Project.Owner.ManagingParent.Phone

Project.Owner.ManagingParent.Fax

Project.Owner.ManagingParent.UserIdCode

Project.Owner.ManagingParent.UserCode

Project.Owner.ManagingParent.IsAdmin

Project.Owner.ManagingParent.Brand

Project.Owner.ManagingParent.EffectiveDate

Project.Owner.ManagingParent.CustomField()

Project.Owner.ManagingParent.UserType.Id

Project.Owner.ManagingParent.UserType.Name

Project.Owner.ManagingParent.Company.Id

Project.Owner.ManagingParent.Company.Name

Project.Owner.ManagingParent.Company.Address1

Project.Owner.ManagingParent.Company.Address2

Project.Owner.ManagingParent.Company.City

Project.Owner.ManagingParent.Company.State

Project.Owner.ManagingParent.Company.Province

Project.Owner.ManagingParent.Company.Zip

Project.Owner.ManagingParent.Company.Country

Project.Owner.ManagingParent.Company.Phone

Project.Owner.ManagingParent.Company.Fax

Project.Owner.ManagingParent.Company.Email

Project.Owner.ManagingParent.Company.CompanyCode

Project.Owner.ManagingParent.Company.ImageLogoLink

Project.Owner.ManagingParent.Company.CrmAccountId

Project.Owner.ManagingParent.Territory.Id

Project.Owner.ManagingParent.Territory.Name

Project.Owner.OrderingParent.Id

Project.Owner.OrderingParent.Username

Project.Owner.OrderingParent.Name

Project.Owner.OrderingParent.FirstName

Project.Owner.OrderingParent.LastName

Project.Owner.OrderingParent.Email

SAP CPQ Setup and Administration Guide


682 PUBLIC SAP CPQ Tags
Project.Owner.OrderingParent.Address1

Project.Owner.OrderingParent.Address2

Project.Owner.OrderingParent.ZipCode

Project.Owner.OrderingParent.City

Project.Owner.OrderingParent.State

Project.Owner.OrderingParent.Country

Project.Owner.OrderingParent.Phone

Project.Owner.OrderingParent.Fax

Project.Owner.OrderingParent.UserIdCode

Project.Owner.OrderingParent.UserCode

Project.Owner.OrderingParent.IsAdmin

Project.Owner.OrderingParent.Brand

Project.Owner.OrderingParent.EffectiveDate

Project.Owner.OrderingParent.CustomField()

Project.Owner.OrderingParent.UserType.Id

Project.Owner.OrderingParent.UserType.Name

Project.Owner.OrderingParent.Company.Id

Project.Owner.OrderingParent.Company.Name

Project.Owner.OrderingParent.Company.Address1

Project.Owner.OrderingParent.Company.Address2

Project.Owner.OrderingParent.Company.City

Project.Owner.OrderingParent.Company.State

Project.Owner.OrderingParent.Company.Province

Project.Owner.OrderingParent.Company.Zip

Project.Owner.OrderingParent.Company.Country

Project.Owner.OrderingParent.Company.Phone

Project.Owner.OrderingParent.Company.Fax

Project.Owner.OrderingParent.Company.Email

Project.Owner.OrderingParent.Company.CompanyCode

Project.Owner.OrderingParent.Company.ImageLogoLink

Project.Owner.OrderingParent.Company.CrmAccountId

Project.Owner.OrderingParent.Territory.Id

Project.Owner.OrderingParent.Territory.Name

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 683
Project.Owner.ApproveParent.Id

Project.Owner.ApproveParent.Username

Project.Owner.ApproveParent.Name

Project.Owner.ApproveParent.FirstName

Project.Owner.ApproveParent.LastName

Project.Owner.ApproveParent.Email

Project.Owner.ApproveParent.Address1

Project.Owner.ApproveParent.Address2

Project.Owner.ApproveParent.ZipCode

Project.Owner.ApproveParent.City

Project.Owner.ApproveParent.State

Project.Owner.ApproveParent.Country

Project.Owner.ApproveParent.Phone

Project.Owner.ApproveParent.Fax

Project.Owner.ApproveParent.UserIdCode

Project.Owner.ApproveParent.UserCode

Project.Owner.ApproveParent.IsAdmin

Project.Owner.ApproveParent.Brand

Project.Owner.ApproveParent.EffectiveDate

Project.Owner.ApproveParent.CustomField()

Project.Owner.ApproveParent.UserType.Id

Project.Owner.ApproveParent.UserType.Name

Project.Owner.ApproveParent.Company.Id

Project.Owner.ApproveParent.Company.Name

Project.Owner.ApproveParent.Company.Address1

Project.Owner.ApproveParent.Company.Address2

Project.Owner.ApproveParent.Company.City

Project.Owner.ApproveParent.Company.State

Project.Owner.ApproveParent.Company.Province

Project.Owner.ApproveParent.Company.Zip

Project.Owner.ApproveParent.Company.Country

Project.Owner.ApproveParent.Company.Phone

Project.Owner.ApproveParent.Company.Fax

SAP CPQ Setup and Administration Guide


684 PUBLIC SAP CPQ Tags
Project.Owner.ApproveParent.Company.Email

Project.Owner.ApproveParent.Company.CompanyCode

Project.Owner.ApproveParent.Company.ImageLogoLink

Project.Owner.ApproveParent.Company.CrmAccountId

Project.Owner.ApproveParent.Territory.Id

Project.Owner.ApproveParent.Territory.Name

Date

Date.Format()

Date.AddDays()

Date.AddDays().Format()

Date.AddDays().InUSDateFormat

Date.AddMonths()

Date.AddMonths().Format()

Date.AddMonths().InUSDateFormat

Date.AddYears()

Date.AddYears().Format()

Date.AddYears().InUSDateFormat

Date.InUserDateFormat()

Global.Tax.State()

Global.Tax.Country()

Container().Column().GetPermission

Container().Column().SetPermission()

Container().Rows.GetCount

Container().Rows.GetMin

Container().Rows.GetMax

Container().Rows.SetMin()

Container().Rows.SetMax()

Container().Rows.Add()

Container().Rows.SetCount()

Container().Rows.Clear

Container().Product().GetCount

Container().Product().GetMin

Container().Product().GetMax

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 685
Container().Product().SetMin()

Container().Product().SetMax()

Container().Product().Add()

Container().Product().SetCount()

Container().Property().Get

Container().Property().GetFormatted

Container().Property().Set()

Container().Total()

Container().Avg()

Container().Sum()

Container().IsUnique()

Container().IsValid

Container().HasColumn()

Container().IsAnyCellEmpty()

Container().AreAllCellsEmpty()

Container().GetEmptyCellCount()

Container().UniqueValues().Separator()

Container().Row().Column().Get - the numeric values that this tag retrieves are not
formatted.

Container().Row().Column().Get.DateInUserFormat

Container().Row().Column().Get.Format()

Container().Row().Column().Get.AddDays()

Container().Row().Column().Get.AddDays().Format()

Container().Row().Column().Get.AddDays().InUSDateFormat

Container().Row().Column().Get.AddMonths()

Container().Row().Column().Get.AddMonths().Format()

Container().Row().Column().Get.AddMonths().InUSDateFormat

Container().Row().Column().Get.AddYears()

Container().Row().Column().Get.AddYears().Format()

Container().Row().Column().Get.AddYears().InUSDateFormat

Container().Row().Column().GetDisplayValue

Container().Row().Column().GetFormatted - the numeric values that this tag retrieves have the same
format as in the container.

Container().Row().Column().Set()

SAP CPQ Setup and Administration Guide


686 PUBLIC SAP CPQ Tags
Container().Row().Remove

Container().Row().Calculate

Container().Row().ProductId

Container().Row().ProductName

Container().Row().ProductTypeName

Container().Row().ProductTotalPriceWoLi

Container().Row().ProductTotalPrice

Container().Row().Index

Container().Row().CrmId

Container().Load()

Container().LoadKeys().Load()

Container().LoadCartItems().WherePartNumbers().ToColumns()

Container().LoadCartItems().WherePartNumbers().WhereProductTypes().ToColumns()

Container().LoadCartItems().WhereProductTypes().ToColumns()

Container().LoadCartItems().WhereProductTypes().WherePartNumbers().ToColumns()

Container().LoadCartItems().ToColumns()

Container().LoadFromSFDC().ToColumns()

Container().SelectedRow.Column().Get

Container().SelectedRow.Column().Get.DateInUserFormat

Container().SelectedRow.Column().Get.Format()

Container().SelectedRow.Column().Get.AddDays()

Container().SelectedRow.Column().Get.AddDays().Format()

Container().SelectedRow.Column().Get.AddDays().InUSDateFormat

Container().SelectedRow.Column().Get.AddMonths()

Container().SelectedRow.Column().Get.AddMonths().Format()

Container().SelectedRow.Column().Get.AddMonths().InUSDateFormat

Container().SelectedRow.Column().Get.AddYears()

Container().SelectedRow.Column().Get.AddYears().Format()

Container().SelectedRow.Column().Get.AddYears().InUSDateFormat

Container().SelectedRow.Column().GetDisplayValue

Container().SelectedRow.Column().GetFormatted

Container().SelectedRow.Column().Set()

Container().SelectedRow.Remove

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 687
Container().SelectedRow.Calculate

Container().SelectedRow.ProductId

Container().SelectedRow.ProductName

Container().SelectedRow.ProductTypeName

Container().SelectedRow.ProductTotalPriceWoLi

Container().SelectedRow.ProductTotalPrice

Container().SelectedRow.Index

Container().SelectedRow.CrmId

Container().SelectedRowsIndexes

Container().SelectedRowsIndexes.Count

MyContainer.Column().GetPermission

MyContainer.Column().SetPermission()

MyContainer.CurrentRow.Column().Get

MyContainer.CurrentRow.Column().Get.DateInUserFormat

MyContainer.CurrentRow.Column().Get.Format()

MyContainer.CurrentRow.Column().Get.AddDays()

MyContainer.CurrentRow.Column().Get.AddDays().Format()

MyContainer.CurrentRow.Column().Get.AddDays().InUSDateFormat

MyContainer.CurrentRow.Column().Get.AddMonths()

MyContainer.CurrentRow.Column().Get.AddMonths().Format()

MyContainer.CurrentRow.Column().Get.AddMonths().InUSDateFormat

MyContainer.CurrentRow.Column().Get.AddYears()

MyContainer.CurrentRow.Column().Get.AddYears().Format()

MyContainer.CurrentRow.Column().Get.AddYears().InUSDateFormat

MyContainer.CurrentRow.Column().GetDisplayValue

MyContainer.CurrentRow.Column().GetFormatted

MyContainer.CurrentRow.ProductId

MyContainer.CurrentRow.ProductName

MyContainer.CurrentRow.ProductTypeName

MyContainer.CurrentRow.ProductTotalPrice

MyContainer.CurrentRow.ProductTotalPriceWoLi

MyContainer.CurrentRow.Index

MyContainer.Rows.GetCount

SAP CPQ Setup and Administration Guide


688 PUBLIC SAP CPQ Tags
MyContainer.Rows.GetMin

MyContainer.Rows.GetMax

MyContainer.Product().GetCount

MyContainer.Product().GetMin

MyContainer.Product().GetMax

MyContainer.Property().Get

MyContainer.Property().GetFormatted

MyContainer.Total()

MyContainer.Avg()

MyContainer.Sum()

MyContainer.IsUnique()

MyContainer.IsValid

MyContainer.HasColumn()

MyContainer.IsAnyCellEmpty()

MyContainer.AreAllCellsEmpty()

MyContainer.GetEmptyCellCount()

MyContainer.UniqueValues().Separator()

Product.Validation()

Product.Name.Translated

Product.Description.Translated

Product.LongDescription.Translated

Product.QuoteDescription.Translated

Product.Attribute().Value.Translated

Product.Attribute().Label.Translated

Product.Attribute().Description.Translated

Product.Attribute().ValueDescription().Translated

Product.PartNumber

Product.SystemId

Pricebook.Name

Pricebook.DistributionChannel

Pricebook.Code

Dictionary.Current.SystemId

Dictionary.Current.Name

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 689
Dictionary.Current.Value()

Number().Format()

Number().Raw

Number().ToWords

Number().ToFormat().Decimal()

Math.Sum()

Workflow.Is Action Add Item

Market.Factor

Market.Code

Market.CurrencyRate

Market.CurrencyCode

Market.CurrencyReportingRate

Market.CurrencySign

Glossary

Default Decimal – the number will be displayed in the default value that includes as many decimal places as at
the time of the calculation.

Default Display – the number will be displayed in as many decimal points as selected by the user.

Market Decimal – the number will be displayed in the value of the quote’s currency.

Market Display – the number will include decimal points of the quote’s market.

MRC (Monthly Recurring Cost) - regular cost incurred repeatedly on a monthly basis.

Rolled-up Extended Amount – refers to a total price of all items in the quote.

MRCExtendedListPrice – MRC List Price multiplied by quantity.

11.2.2 CTX Date Format Strings

This topic contains format specifiers accepted by the Date Time Format string.

d Represents the day of the month as a number from 1


through 31. A single-digit day is formatted without a leading
zero

dd Represents the day of the month as a number from 01


through 31. A single-digit day is formatted with a leading
zero.

SAP CPQ Setup and Administration Guide


690 PUBLIC SAP CPQ Tags
f Represents the most significant digit of the seconds
fraction; that is, it represents the tenths of a second in a
date and time value.If the f format specifier is used without
other format specifiers, it is interpreted as the f standard
date and time format specifier.

ff Represents the two most significant digits of the seconds


fraction; that is, it represents the hundredths of a second in
a date and time value.

fff Represents the three most significant digits of the seconds


fraction; that is, it represents the milliseconds in a date and
time value.

h Represents the hour as a number from 1 through 12, that is,


the hour as represented by a 12-hour clock that counts the
whole hours since midnight or noon. A particular hour after
midnight is indistinguishable from the same hour after
noon. The hour is not rounded, and a single-digit hour is
formatted without a leading zero. For example, given a time
of 5:43, this custom format specifier displays “5”.

hh Represents the hour as a number from 01 through 12, that


is, the hour as represented by a 12-hour clock that counts
the whole hours since midnight or noon. A particular hour
after midnight is indistinguishable from the same hour after
noon. The hour is not rounded, and a single-digit hour is
formatted with a leading zero. For example, given a time of
5:43, this format specifier displays “05”.

H Represents the hour as a number from 0 through 23, that is,


the hour as represented by a zero-based 24-hour clock that
counts the hours since midnight. A single-digit hour is
formatted without a leading zero.

HH Represents the hour as a number from 00 through 23, that


is, the hour as represented by a zero-based 24-hour clock
that counts the hours since midnight. A single-digit hour is
formatted with a leading zero.

m Represents the minute as a number from 0 through 59. The


minute represents whole minutes that have passed since
the last hour. A single-digit minute is formatted without a
leading zero.

mm Represents the minute as a number from 00 through 59.


The minute represents whole minutes that have passed
since the last hour. A single-digit minute is formatted with a
leading zero.

M Represents the month as a number from 1 through 12. A


single-digit month is formatted without a leading zero.

MM Represents the month as a number from 01 through 12. A


single-digit month is formatted with a leading zero.

s Represents the seconds as a number from 0 through 59.


The result represents whole seconds that have passed since
the last minute. A single-digit second is formatted without a
leading zero.

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 691
ss Represents the seconds as a number from 00 through 59.
The result represents whole seconds that have passed since
the last minute. A single-digit second is formatted with a
leading zero.

tt Represents the AM/PM designator.

y Represents the year as a one or two-digit number. If the


year has more than two digits, only the two low-order digits
appear in the result. If the first digit of a two-digit year
begins with a zero (for example, 2008), the number is
formatted without a leading zero.

yy Represents the year as a two-digit number. If the year has


more than two digits, only the two low-order digits appear in
the result. If the two-digit year has fewer than two
significant digits, the number is padded with leading zeros
to achieve two digits.

yyy Represents the year with a minimum of three digits. If the


year has more than three significant digits, they are
included in the result string. If the year has fewer than three
digits, the number is padded with leading zeros to achieve
three digits.

yyyy Represents the year as a four-digit number. If the year has


more than four digits, only the four low-order digits appear
in the result. If the year has fewer than four digits, the
number is padded with leading zeros to achieve four digits.

Copies any other character to the result string, without


affecting formatting.

In order for Salesforce to receive data in SF Date Time type fields, the valid format must be as follows: yyyy-
MM-ddTHH:mm:ss.ff

Example: <*CTX( Quote.DateCreated.Format(yyyy-MM-ddTHH:mm:ss.ff) )*>

11.2.3 CTX Objects and Lifetime


A CTX tag returns the value of an object property only if that object is already loaded. If the object doesn’t exist
or is not loaded the returned value will be empty string.

The Quote object is loaded in the edit action. It exists on the quote, quote property, customers, and all other
cart tab pages. The Quote object is also present in the Configurator, with the exception that it doesn’t exist if
the user clicked new quote and is configuring the first item. The Quote object exists in the Catalog, but only if
add item was executed.

The Quote.CurrentItem object refers to the cart item being iterated in the loops. If used outside of the loop
it will use the first cart item. It can be used in discount rules and CRM mappings. It can be used only if the
Quote object is loaded.

The SFDC object exists if the Salesforce integration is enabled and the user came through the Salesforce
backdoor from an opportunity.

The SOD object exists if the SOD integration is enabled and current quote is attached to an opportunity.

SAP CPQ Setup and Administration Guide


692 PUBLIC SAP CPQ Tags
The Visitor object is created after the user logs in. It is present the whole all time while user session is valid.

11.2.4 Enhanced Language Tags

New CTX tags have been developed to help support companies with multiple languages.

● Product Name Translated - CTX(Product.Name.Translated)


● Product Description Translated - CTX(Product.Description.Translated)
● Long Product Description Translated - CTX(Product.LongDescription.Translated)
● Product Quote Description Translated - CTX(Product.QuoteDescription.Translated)
● Attribute Value Translated - CTX(Product.Attribute(Attribute Name).Value.Translated)
● Attribute Label Translated - CTX(Product.Attribute(Attribute Name).Label.Translated)
● Attribute Description Translated - CTX(Product.Attribute(Attribute
Name).Description.Translated)
● Attribute Value Description Translated - CTX(Product.Attribute(Attribute
Name).ValueDescription(AttributeValue).Translated)

If the value is not found in current dictionary, value from default dictionary will be returned.

11.2.5 Salesforce Details

When a user enters SAP CPQ from a SalesForce opportunity, by using


CTX(SFDC.Opportunity.FieldName), the value of the opportunity FieldName will be obtained. Every
FieldName the user has privileges to read can be obtained by using this tag.

When a user enters SAP CPQ from SalesForce opportunity, by using CTX(SFDC.Account.FieldName), the
value of the opportunity account FieldName will be obtained. Every FieldName the user has privileges to read
can be obtained by using this tag.

Two new tags for Salesforce are developed:

<*CTX( Quote.LastGeneratedDocument.Link )*> - returns link to last generated quote document

<*CTX( Quote.LastGeneratedDocument.Name )*> - returns name of last generated document

The purpose of these tags is that users will be able to download generated documents (proposals, SOWs, and
so on) from the external system without having to log into SAP CPQ.

In order for Salesforce to receive data in SF Date Time type fields, the valid format must be as follows: yyyy-
MM-ddTHH:mm:ss.ff

Example: <*CTX( Quote.DateCreated.Format(yyyy-MM-ddTHH:mm:ss.ff) )*>

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 693
11.2.6 SOD Details

SOD tag refers to the CRM objects current quote is attached to.

Once the CRM object is loaded to associate with quote and/or execute mappings it is stored in the session level
cache. After Update Opportunity finishes this cache is cleared.

11.3 Product Model Object Tags

Arithmetic Tags [page 694]

Attribute Data Tags [page 695]

External Source Tags [page 697]

Logged in User Data Tags [page 698]

Product Data Tags [page 699]

Sequence Tags [page 700]

11.3.1 Arithmetic Tags

Tag Description Type Returned Example

<*EVAL(math Evaluates a math expression. Result of evaluation <* EVAL( [IF](<*


expression)*> The expression can contain IsSelected(Operatin
operators and conditions g System.Linux 10)
that need to be evaluated. *>){<*
This tag initiates the Price(Operating
VBScript engine, so all
System) *> * 0.10}
VBScript functions can be
{<* Price(Operating
used. See Appendix A for
System) *> * 0.05}
more information.
[ENDIF] ) *> - if Linux
10 is selected from the
attribute Operating
System then multiply the
price of the selected
attribute value in the
Operating System
attribute by 0.10, otherwise
multiply it by 0.05. The
EVAL tag evaluates the
entire expression and
returns the result.

SAP CPQ Setup and Administration Guide


694 PUBLIC SAP CPQ Tags
Tag Description Type Returned Example

<*Round (value, Rounds a value. The number Number <*


decimal places)*> of decimal places can be Round(<*EVAL(13/2)*
specified; otherwise the >)*> - returns 6 <*
value is rounded to the whole Round(<*EVAL(13/2)*
number. >,2)*> - returns
6.5 <*
Round( <*EVAL(<*Pri
ce(Maint)*>/
<*Value(Months))*>*
>) *> - returns the
quotient of the Maint price
divided by the value of the
Months attribute.

11.3.2 Attribute Data Tags

Tag Description Type Returned Example

<*Quantity(attribut Gives the value of the Number <*Quantity(Network


e name)*> quantity entered for an Cable)*> - returns 2 from
attribute. Att. Quantity must the attribute Network Cable
be selected for the attribute
in order for users to enter a
quantity.

<*Price(attribute Gives the price of the current Number <*Price(Memory)*> -


name)*> attribute selection returns the price from the
attribute Memory.

<*ATTRIBUTECOST(Att Returns Attribute cost Number <*ATTRIBUTECOST(Har


ributeName)*> d Drive)*> -
returns the cost of
the selected
attribute value for
Hard Drive.

<*ATTRIBUTEVALUECOS Returns Attribute Value cost Number <*ATTRIBUTEVALUECOS


T(AttributeName:Att T(Hard Drive:
ributeValueCode)*> 250GB)*> - returns the
cost of the attribute value
250GB from the attribute
Hard Drive.

<*Value(attribute Gives the display value of the String/Number Depends on <*Value(Hard


name)*> current attribute selection. what the attribute contains Drive)*> - returns the
This will also return the value display value or hidden
of a hidden calculated calculation value from the
expression if it is being used. attribute Hard Drive.

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 695
Tag Description Type Returned Example

<*ValueCode(attribu Gives the value of the String/Number Depends on what the


te name)*> current attribute selection. attribute contains
This is what is entered with <*ValueCode(CD or
the display value when an DVD Drive #1)*> -
attribute is created. returns the value of the
attribute CD or DVD Drive
#1.

<*ValueCode(attribu Gives the value of the String/Number Depends on what the


te name)*> current attribute selection. attribute contains
This is what is entered with <*ValueCode(CD or
the display value when an DVD Drive #1)*> -
attribute is created. returns the value of the
attribute CD or DVD Drive
#1.

<*CatCode(attribute Gives the value catalog code String/Number Depends on <* CatCode(CD or
name)*> of the current attribute what the catalog code DVD Drive #1) *>:
selection contains returns the catalog code
value of the attribute CD or
DVD Drive #1.

<*IsSelected(attrib Gives whether or not the True/False <*IsSelected(Proces


ute name.attribute specified attribute value of sor.Amtel 9 3GHz
display value)*> an attribute is selected. Processor)*>: returns
whether Amtel 9 3GHz
Processor is selected.

<*AttDef(attribute Gives whether the attribute True/False <* AttDef(Hard


name)*> is currently selected. Similar Drive) *> - returns
to <*AttSel( )*> but whether any value has been
checks a status flag and is selected in the attribute
faster for a long list of Hard Drive.
attribute values.

<*AttSel(attribute Gives whether the attribute True/False <* AttSel(Hard


name)*> is currently selected. Similar Drive) *> - returns
to <*AttDef( )*> but whether any value has been
checks every selection of an selected in the attribute
attribute. Hard Drive.

<*GETATVUPC(attribu Gives the price of the Number <*


te name : attribute specified attribute value. GETATVUPC(Color:Blu
value)*> Value will only be returned if e) *> - returns the price of
it has been selected. the value Blue from the
attribute. Color

<*SETQTY(attribute Sets a specified quantity to Number <*SETQTY(Color,5)*> -


name, quantity)*> the entire attribute. Note: sets the quantity of the
Can only be used in Triggers. attribute Color to 5

<*SETATVQTY(attribu Sets a specified quantity to Number <*SETATVQTY(Color:B


te name : attribute the specified attribute value. lue,5)*> - sets the
display value, quantity of the attribute
quantity )*>

SAP CPQ Setup and Administration Guide


696 PUBLIC SAP CPQ Tags
Tag Description Type Returned Example

value Blue from the


attribute Color to 5

<*GETATVQTY(attribu Gives the quantity of the Number <*GETATVQTY(Color:B


te name : attribute specified attribute value. lue)*> - returns the
value)*> Value will only be returned if quantity of the attribute
it has been selected. value Blue from the
attribute. Color

<* Returns sum( attribute


EXTENDEDPRICE(attri values extended prices ) *
bute name) *> (attribute quantity )s
Attribute value extended
price = attribute value price
* attribute value quantity
Attribute quantity = 1 or else
if “user may enter quantity”

<*AttributeValueXco Returns cost multiply by Number <*AttributeValueXco


st(attribute:attrib attribute value quantity. st(Monitor:F19)*> -
ute_value)*> Value will only be returned if returns cost*quantity of the
it has been selected. attribute Monitor which
value code is F19.

<*AttributeValueXPr Returns attribute value unit Number <*AttributeValueXPr


ice(attribute:attri price multiplied by attribute ice(Monitor:F19)*> -
bute_value)*> value quantity. Value will only Gives unit price multiply by
be returned if it has been quantity of attribute Monitor
selected. which value code is F19.

<*AttributeValueDes Returns parsed attribute String


cription(attribute: value description builder
attribute_value)*> field. Value will only be
returned if it has been
selected. Returns empty
string if designated attribute
value is not selected.

11.3.3 External Source Tags

Tag Description Type Retuned Example

<*XValue(Subproduct This is used for product String/Number Depends on <*XValue(Nested


/Attribute)*> hierarchy (nested products). what the part number Printer/Toner)*> -
It allows you to access the contains returns the selected value of
attributes of the nested or Toner attribute in the child
parent product. The attribute Printer. The
subproduct part of the tag attribute referencing
will be the attribute in the Printer is called Nested
parent product that is
Printer.
referencing the child/nested
product. If using this tag

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 697
Tag Description Type Retuned Example

from the child product then


the subproduct part of the
tag will be replaced with ../

<*XWS(getProductPri Retrieves the total price of Number <*XWS(getProductPri


ce,NestedProductNam the nested product. ce,Nested
e)*> Printer)*> - returns the
total price of the Nested
Printer product.

<*XWS(getProductDes Retrieves the product String <*XWS(getProductDes


cription,NestedProd description of the nested cription,Nested
uctName)*> product. Printer)*> - returns the
product description of the
Nested Printer product.

<*XWS(getProductCat Retrieves the product String/Number <*XWS(getProductCat


Code,NestedProductN catalog code of the nested Code,Nested
ame)*> product. Printer)*> - returns the
product cat code of the
Nested Printer product.

11.3.4 Logged in User Data Tags

Tag Description Type Retuned Example

<*VISITORGROUP*> Gives the name of a user String [EQ](<*


group that the currently VisitorGroup *>,
logged in user belongs to. Webcom) – resolves to true
if the currently logged in user
is from the Webcom group.

<*VISITORNAME*> Gives the real name of the String Hello <*


currently logged in user. VisitorName *> -
displays Hello and the user’s
full name.

<*VISITORGROUPID*> Gives the group id of the Number [EQ](<*


currently logged in user. VisitorGroupID *>,
9) – resolves to true if the
currently logged in user’s
group id is 9.

<*VISITORID*> Gives the user id of the Number [EQ](<* VisitorID


currently logged in user. *>, 112) – resolves to
true if the currently logged in
user’s id is 112.

SAP CPQ Setup and Administration Guide


698 PUBLIC SAP CPQ Tags
11.3.5 Product Data Tags

Tag Description Type Returned Example

<*ProductCode*> Gives the part number of the String/Number Depends on <* ProductCode *>:
current configuration what the part number returns the current part
contains number from whichever
product the tag is used in.

<*ProductName*> Gives the product’s name String <* ProductName *> -


returns the product name of
the product the tag is used
in.

<*ProductDescriptio Gives the product String <*


n*> description entered in the ProductDescription
Product Definition *> - returns text in the
Product Description field.

<*LongProductDescri Gives the long product String <*


ption*> description entered in the LongProductDescript
Product Definition. ion *> - returns text in the
Long Product Description
field.

<*ProductLink*> Gives the link or URL from String <* ProductLink *> -
the product link field returns the text from the
Product Link field.

<*ProductImage*> Gives the product image file String <* ProductImage *> -
name used for a product returns the file name used
for the product image for the
product the tag is used in.

<*LargeProductImage Gives the large product String <*


*> image file name used for a LargeProductImage
product *> - returns the file name
used for the large product
image for a product.

<*PRODUCTINFO(produ Gives defined product type String <*


ct type)*> name. This can be used PRODUCTINFO(Product
when defining specifics Type_CD) *> - returns CD
correlated with product type from the system
using Custom Tables.

<*PRODUCTDEFINED*> Gives whether configuration True/False [IF](<*


is complete on a product or ProductDefined *>)
not. {<*SELATV(Status:Ac
tive)*>}{}[ENDIF] –
sets the Status attribute to
Active when the product has
a complete configuration

<*Price(*)*> Gives the sum of all prices Number <* Price(*) *> -
for all currently selected returns the prices of all
attributes but doesn’t selected attributes without
include base price. This

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 699
Tag Description Type Returned Example

would be different than adding in the base price of


TotalPrice if there is a the product.
base price and/or if
TotalPrice is calculated
using Product Price building
sequence.

<*TotalPrice*> Gives the price of the current Number <* TotalPrice *> -
configuration. This includes returns the total price of the
items designated as product configuration.
separate line items.
Calculations using Product
Price building sequence may
produce a different value.

<*BasePrice*> Gives the base price of the Number <* BasePrice *> -
product. This is the amount returns the base price of the
entered in the product price product the tag is used in.
field.

<*TotalPriceWoLi*> Gives the total product price Number <* TotalPriceWoLi


of the configuration *> - returns the price of the
excluding prices of attributes configuration without adding
that are designated as line any line item prices.
items.

<*ITEMCODE*> Returns part number of the String


current cart item while
calculating discount rules
and aggregates. In all other
cases it returns empty
string. It should be used for
aggregates and discounts
only.

<*TotalCost*> Gives the cost of the current Number <* TotalCost*> -


configuration. This includes returns the total cost of the
the cost of all selected product configuration.
attributes.

11.3.6 Sequence Tags

Tag Description Type Returned Example

<*PSEQ(sequence Product sequence, which A Sequence value Product 1 = ABC <*


name)*> allows several products to PSEQ(productSeq) *>
use the same sequence Product 2 = XYZ <*
independently of each other. PSEQ(productSeq) *> -
sequence is ABC001,
XYZ001, ABC002,
XYZ002, and so on.

SAP CPQ Setup and Administration Guide


700 PUBLIC SAP CPQ Tags
Tag Description Type Returned Example

<*GSEQ(sequence Global sequence, which A Sequence value Product 1 = ABC <*


name)*> allows several products to PSEQ(productSeq) *>
share the same sequence. Product 2 = XYZ <*
GSEQ(productSeq)*> -
sequence is ABC001,
XYZ002, ABC003, and so
on.

<*SSEQ(sequence 1 Nested sequences, which A Sequence value Sequence ABC =


name,sequence 2 allow sequences to be used A,B,C; Sequence
name, …, sequence n with another sequence. Three = 1,2,3 <*
name)*> SSEQ(ABC,Three) *> -
returns A1, A2, A3, B1, B2,
B3, and so on.

<*CXSUB(intelligent Used with serial numbers A Sequence Value See chapter on Sequences
sequence and substituting a number to [page 131] for more
substitution replace long string of information.
name)*> attribute values for a product
number.

11.4 Quote Generation Tags

Functional Tags [page 701]

Tags for Displaying Data from Custom Tables [page 702]


SAP CPQ offers a few tags that are used to display data from custom table uploaded by the SAP CPQ
administrator.

11.4.1 Functional Tags

Conditions [CONDITION,...]

Standalone conditions are used to control if section of a document will be displayed or not. Conditions are
processed after all the other tags have been processed. Using conditions may slow down a performance if large
number of conditions are used to determine in the end if one section is displayed or not. On the left side is a tag
whose value will be compared and on the right side is list of values to compare with. Values are separated by |
Conditions always use OR logic. To check if value is equal use = and if not equal use !. Typical example of
condition is: [CONDITION,«Q_QP(my property)»=golf|soccer|basketball] Any static text or
tables or tags [CONDITION_END]

[CONDITION,…] Tags must not be nested.

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 701
EVAL [EVAL(...)]

EVAL function treats an expression as a VBScript call, evaluates it and returns the result.

When writing EVAL in Word, the program uses two sets of different quotation marks, open-ended (“) and
closed-ended (”). VBScript expects the same set (” ”) and will not evaluate the expression when two different
sets are entered. To prevent this from happening, type the expression in Notepad and copy paste it to Word.

To remove ”,” from a price 12,345.99 returned by «C_PRICE» : [EVAL(Replace(+~:<$


$C_PRICE»”,”,”,””))] In the above example «C_PRICE» will be processed first resulting in
[EVAL(Replace(“12,345,99”,”,”,””))]. Once EVAL is processed, it will return 12345.99.

HTML [HTML(...)]

HTML tag takes the content and interprets is as HTML and inserts it in the document. For example,
[HTML(<<C_DESC>>)]. If <<C_DESC>> returns <a href=“http://www.webcominc.com”>Webcom,
Inc.</a>, the link will be inserted in the document. One caveat when using HTML tag is that if there is any text
before or after it, HTML content will be inserted in a new paragraph right before it. For example: text before -
[HTML(<<C_DESC>>)] - text after will result in: HTML returned content text before - - text after.

To include static text and have it on same line, simply put it inside HTML tag. [HTML(text before -
<<C_DESC>> - text after)]

11.4.2 Tags for Displaying Data from Custom Tables

SAP CPQ offers a few tags that are used to display data from custom table uploaded by the SAP CPQ
administrator.

Here is the list of tags and an example of how to use them:

● <<CUSTOM_TABLE(...)>> - Always comes in pair with its closing tag <<CUSTOM_TABLE_END>>. As a


parameter, this tag accepts a custom table name. (for example,
«CUSTOM_TABLE(additional_options_custom_table)»)
● <<CUSTOM_TABLE_HEADER>> - Always comes in pair with its closing tag
<<CUSTOM_TABLE_HEADER_END>>. This tag does not accept any parameter and is used to define header
of the table that will display data.
● <<CUSTOM_TABLE_ROW>> - Always comes in pair with its closing tag <<CUSTOM_TABLE_ROW_END>>. This
tag defines table row where data will be displayed. It can contain one or more
<<CUSTOM_TABLE_COLUMN>> tags.
● <<CUSTOM_TABLE_COLUMN(...)>> tag defines table column within table row where data from a
particular custom table column is displayed. This tag does not have a closing tag. This tag accepts
parameter, which it is the name of the custom table column that you want to be displayed. This tag is
always placed within <<CUSTOM_TABLE_ROW>> tag.

SAP CPQ Setup and Administration Guide


702 PUBLIC SAP CPQ Tags
Example

Assuming that SAP CPQ administrator has already defined custom table named
additional_options_custom_table with two columns: additional_description and options, you can create
template section to display data from custom table as follows:

<<C2>>
<<MAIN>>
<<CUSTOM_TABLE(additional_options_custom_table)>>
<<CUSTOM_TABLE_HEADER>>
Additional description ---- Options
<<CUSTOM_TABLE_HEADER_END>>
<<CUSTOM_TABLE_ROW>>
<<CUSTOM_TABLE_COLUMN(additiona_description)>> ----
<<CUSTOM_TABLE_COLUMN(options)>>
<<CUSTOM_TABLE_ROW_END>>
<<CUSTOM_TABLE_END>>
<<MAIN_END>>
<<C_END>>

11.5 Shopping Cart Object Tags

These tags are generally used in visibility and approval rules. They can only be used outside of product
configuration and they will not work in product rules, descriptions, and so on.

The first three tables provide information about a cart owner (CO), current user (CU), bill to information (BT),
or customer information (CO_ST). Tag syntax for these tables is similar. The cart owner and current user
information use the same column names. The bill to information is pulled from the Bill To and End User role in
the Billing/Shipping tab of a quote. Customer information is pulled from the Ship To role.

EXAMPLE: [EQ](<*CU_INFO(TERRITORY_ID*>, <*CO_INFO(TERRITORY_ID)*>) – returns whether the


current user’s territory Id matches the territory Id of the cart owner. This expression can be used in quote
visibility rules to allow users to only see quotes from their own territory.

11.5.1 Other Shopping Cart Tags

Tag Description Type Returned Example

<*CARTAMOUNT*> Gives total amount of the Number See below…


cart.

<*USERAMOUNT*> Gives max approval amount Number [GT]


for the currently logged in (<*CARTAMOUNT*>,
user. <*USERAMOUNT*>) –
returns whether the total
amount of the cart is greater
than the approval amount
set for the current user.

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 703
Tag Description Type Returned Example

<*USERID*> Gives the currently logged in Number See below…


user’s ID. Functions the
same as
<*CU_INFO(ID)*>.

<*CARTOWNER*> Gives the user Id for cart’s Number [EQ](<*USERID*>,


owner. Functions the same <*CARTOWNER*>) –
as <*CO_INFO(ID)*>). returns true if the currently
logged in user’s Id and the
cart owner’s Id are equal.
This can be used behind an
action for a cart or visibility
rules.

<*SAMETERRITORY*> Gives whether the currently True/False <*SAMETERRITORY*> -


logged in user and the cart can be used for visibility
owner are in the same rules or behind an action for
territory. Checks against the a cart.
territory Id. Functions the
same as [EQ]
( <*CU_INFO(TERRITO
RY_ID)*>,
<*CO_INFO(TERRITORY
_ID)*>)

<*TERRITORY*> Gives the cart owner’s String [EQ](<*TERRITORY*>,


territory name. Functions <*CU_INFO(TERRITORY
the same as _NAME)*>) – returns true
<*CO_INFO( TERRITOR if currently logged in user
Y_NAME)*>. belongs to the same territory
as the cart owner’s.

<*SAMEGROUP*> Gives whether the currently True/False <*SAMEGROUP*> - can be


logged in user and the cart used for visibility rules or
owner are in the same group. behind an action for a cart.
Functions the same as [EQ]
(<*CU_INFO(USER_TYP
E_NAME)*>,<*CO_INF
O(USER_TYPE_NAME)*>
).

<*GROUP*> Gives the cart’s owner group String [EQ](<*GROUP*>,


name. Functions the same as <*CU_INFO(USER_TYPE
<*CO_INFO(USER_TYPE _NAME)*>) – returns true
_NAME)*>. if currently logged in user
belongs to the same group
as the cart owner’s.

<*ISRESPAPPROV*> True/False

<*CHILDREN*> Is currently logged in user True/False


ordering parent for cart’s
owner?

SAP CPQ Setup and Administration Guide


704 PUBLIC SAP CPQ Tags
Tag Description Type Returned Example

<*CHILD*> Is currently logged in user True/False


direct ordering parent for
cart’s owner?

<*FIRSTAPPROVEC*> Is currently logged in user True/False


approve parent for cart’s
owner?

<*ALLAPPROVEC*> Is currently logged in user True/False True/False


direct approve parent for
cart’s owner?

<*SAMEZIPCODE*> Are the ZIP codes of True/False


currently logged in user and
cart’s owner the same? (Cart
Visibility) and Is the ZIP
codes of currently logged in
user and customer the
same? (Customer Visibility).

<*ZIPCODE*> Returns user ZIP code. Number

<*SAMESHIPZIPCODE*> Is ZIP code of currently True/False


logged in user the same as
ZIP code of the city where
quote is delivered?

<*SHIPZIPCODE*> Returns ZIP code of Ship to Number


address.

<*SAMECUSTOMERZIPCO Is ZIP code of currently True/False


DE*> logged in user the same as
customer’s ZIP code?

<*CUSTOMERZIPCODE*> Returns customer ZIP code. Number

<*CUSTOMERCOUNTRY*> Returns customer’s country/ String


region.

<*CUSTOMERCOMPANY*> Returns customer’s String


company

<*APPROVALREQUIRED* This tag is often used as True/False


> Condition for showing up
Submit for approval button.
Condition is true (1) if there
is needed to execute
Approval process for the
loaded quote. For example, if
administrator doesn’t want
to execute Generate Quote
action if is necessary to
execute Approval Process
before then the condition for
Generate Quote action will be
[NOT]<*APPROVALREQU
IRED*> .

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 705
Tag Description Type Returned Example

<*ISAPPROVED*> This tag is used for checking True/False


if a quote is approved (quote
passed through approval
process and now is
approved) or not.

<*ISREJECTED*> This tag is used for checking True/False


if quote is rejected (quote
passed through approval
process and now is rejected)
or not.

<*ISWAITING*> This tag is used for checking True/False


if quote is into approval
process but is neither
approved nor rejected.

<*CUSTOMERTERRITORY Customer’s territory. String


*>

<*GETATTNUMVAL*> Returns numeric value of Number


attribute.

<*SAMEUSERCOMPANY*> If the current user works for True/False


the same company as the
user who created a cart
(quote) this expression will
evaluate to 1, otherwise it is
0.

<*USERCOMPANY*> Returns name of user String


company.

<*AUX(AUXTABLE, See below, after description


…)*> of XWS tags.

<*QUOTEPROPERTY(Quo Returns the value of the String <* QUOTEPROPERTY


teCustomFieldName)* quote custom field from (Expiration Date)
> database. *>

<*CSIGN*> Returns current currency


sign as defined in database.

<*MFACTOR*> Returns market factor.

<*MCODE*> Returns market code - if


needed to access additional
price books via AUX tags.

<*CRATE*> Returns current currency


rate (related to default
currency as administered).

<*USER_CO_CRM_ACCOU Returns CRM ID for a CRM Account Number Example of a formula in


NT_ID*> company that a user belongs discounting rules for default
to. This tag is used in a field discount: AUX(some
for default discount, in side table, discount
of a AUX tag to find a default column, crm id
column,<*USER_CO_CR

SAP CPQ Setup and Administration Guide


706 PUBLIC SAP CPQ Tags
Tag Description Type Returned Example

discount for a company that M_ACCOUNT_ID*> – used


user belongs to. in a discounting rule for a
default discount.

<*TotalItemsAmount* Returns Total Items Amount


> before shipping or
commission costs.

<*TotalItemsCost*> Returns Total Items Cost


before shipping or
commission costs.

<*TotalGrossMargin* Returns Total Gross Margin


> before shipping or
commission costs.

<*FREIGHTAMOUNT*> Returns freight amount. [if]([GT]


(<*FREIGHTAMOUNT*>,
0)){1}{0}[endif]

11.5.2 User and Customer Information

<* CO_INFO(column name) *> <* BT_INFO(column name) *> <* CO_STINFO(column name)
Column Name Column Name *> Column Name

TERRITORY_NAME CUSTOMER_NAME (last and first CUSTOMER_NAME (last and


name) first name)

USER_TYPE_NAME COUNTRY_NAME SHOP_CART_ID (quote number)

COMPANY_NAME TERRITORY_NAME SHIP_E_MAIL_ADDR

APPROVE_PARENT_NAME CUSTOMER_E_MAIL_ADDR SHIP_TITLE

ORDERING_PARENT_NAME CUSTOMER_TITLE SHIP_COMPANY

MANAGING_PARENT_NAME CUSTOMER_COMPANY SHIP_CITY

NAME CUSTOMER_CITY SHIP_STATE

EMAIL CUSTOMER_STATE SHIP_PROVINCE

EXPDATE (password expiration) CUSTOMER_PROVINCE SHIP_ZIP_CODE

COMPANYID CUSTOMER_ZIP_CODE SHIP_BUSINESS_PHONE

ID (user’s Id) CUSTOMER_BUSINESS_PHONE SHIP_BUSINESS_FAX

USER_ZIP_CODE CUSTOMER_BUSINESS_FAX SHIP_PRIMARY_INDUSTRY

USER_CITY CUSTOMER_PRIMARY_INDUSTRY SHIP_ID

USER_STATE CUSTOMER_ID SHIP_COUNTRY

MULTIPLIER TERRITORY_ID

PHONE ACTIVE (true/false)

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 707
<* CO_INFO(column name) *> <* BT_INFO(column name) *> <* CO_STINFO(column name)
Column Name Column Name *> Column Name

FAX CUSTOMER_CODE

COUNTRY

TITLE

TERRITORY_ID

11.6 Tags for Rules and Triggers

SETLISTSEPARATOR Tag [page 708]


When using <*SETLISTSEPARATORTAG(…)*>, it should be always used in pair. First to set different
separator, and second time to reset to default “|”.

Action Tags [page 708]

Condition Tags [page 713]

11.6.1 SETLISTSEPARATOR Tag

When using <*SETLISTSEPARATORTAG(…)*>, it should be always used in pair. First to set different separator,
and second time to reset to default “|”.

Example

<*SETLISTSEPARATOR(”,”)*> <*LIST(SELECT Col1 from Table)*>


<*SETLISTSEPARATOR(“|”)*>

11.6.2 Action Tags

Tag Description Result

<*allowatt(standard Parameters: attribute names. More Allows all values from all specified
attribute name)*> than one attribute can be entered. attributes.
Each separated from the other a
comma.

SAP CPQ Setup and Administration Guide


708 PUBLIC SAP CPQ Tags
Tag Description Result

<*AllowAttributes(standard Parameters: attribute names. More Allows all values from all specified
attribute name)*> than one attribute can be entered. attributes.
Each separated from the other a
comma.

<*allowatv(standard Parameters: attributes with their Allows all values from the entered list
attribute name:standard values, separated by colon. More than
attribute value)*> one attribute/value pair can be
entered. Every pair is separated from
other pairs by a comma.

<*AllowValues(standard Parameters: attributes with their Allows all values from the entered list
attribute name:standard values, separated by colon. More than
attribute value)*> one attribute/value pair can be
entered. Every pair is separated from
other pairs by a comma.

<*assignff(attribute Parameters: the name of the free-form Every free input value is assigned to
name:value)*> attribute, and the value to be assigned appropriate free form attribute. If free
to the attribute, separated by colon. input value contains function, the
More than one free form attribute/free function is executed before
input value pairs can be entered. Every assignment. For example:
pair is separated from other pairs by a <*assignff(attribute_name:
comma. <*catcode(other_attribute
)*>)*> gives as the result the
CatCode string from the
other_attribute, assigned to free form
field in the attribute_name
attribute.
<*assignff(attrib_name:Web
com)*> assigns the string Webcom to
the “attrib_name” attribute. Non-free-
form attributes can’t accept the
assigned values.

<*AssignValue(attribute Parameters: the name of the free form Every free input value is assigned to
name:value)*> attribute, and the value to be assigned appropriate free form attribute. If free
to the attribute, separated by a colon. input value contains a function, the
More than one free form attribute/free function is executed before the
input value pairs can be entered. Every assignment. For
pair is separated from other pairs by a example:<*AssignValue(attrib
comma. ute_name:<*catcode(other_a
ttribute)*>)*> gives as the result
the CatCode string from the
other_attribute, assigned to
FreeForm field in the
attribute_name attribute.
<*AssignValue(attrib_name:
Webcom)*> assigns the string
Webcom to the attrib_name
attribute. Non-free-form attributes
can’t accept the assigned values.

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 709
 Note

If you wish to assign date to an attribute of type Date via this tag, you should use
<*ASSIGNVALUE(TestDate:<*CTX( Date.AddMonths(1).InUSDateFormat )*>)*> since the date
needs to be converted from the user format to the US format when the AssignValue tag is used. If the
user's date format is set to anything other than the US format, and the <CTX( Date.AddMonths(1) )>
is used, the date value will be assigned incorrectly.

Tag Description Result

<*assignpc(attribute Parameters: attributes with their prices The same as previous, except that it
name:value)*> to be assigned, separated by a colon. assigns “standard attribute value” to
More than one attribute/price pair can the Price field of the “standard
be entered. Every pair is separated attribute name”.
from other pairs by a comma.

<*AssignPrice(attribute Parameters: attributes with their prices The same as previous, except that it
name:value)*> to be assigned, separated by a colon. assigns “standard attribute value” to
More than one attribute/price pair can the Price field of the “standard
be entered. Every pair is separated attribute name”.
from other pairs by a comma.

<*disallowatv(standard Parameters: attributes with their Disallows every specified value in every
attribute name:standard values, separated by a colon. More attribute in the list.
attribute value)*> than one attribute/value pair can be
entered. Every pair is separated from
other pairs by a comma.

<*DisallowValues(standard Parameters: attributes with their Disallows every specified value in every
attribute name:standard values, separated by colon. More than attribute in the list.
attribute value)*> one attribute/value pair can be
entered. Every pair is separated from
other pairs by a comma.

<*disallowatt(standard Parameters: attribute names. More If condition is TRUE, all listed attributes
attribute name)*> than one Attribute can be entered. are disallowed. If condition, during
Each separated from other by a some of the following steps become
comma. FALSE, the attributes are NOT re-
allowed. Here, it's recommended to
create complementary rules: for every
rule made as condition - >
disallowatt(attribute_list) create
another as [not]condition - >
allowatt(attribute_list). Additionally,
make sure that every complementary
Rule has its rank higher than the rank
of the primary rule.

<*DisallowAttributes(stand Parameters: attribute names. More If condition is TRUE, all listed attributes
ard attribute name)*> than one attribute can be entered. are disallowed. If condition, during
Each separated from other by a some of the following steps become
comma. FALSE, the attributes are NOT re-
allowed. Recommended here is to
create complementary Rules: for every
Rule made as condition - >
DisallowAttributes(attribute_list)
create another as [not]condition - >

SAP CPQ Setup and Administration Guide


710 PUBLIC SAP CPQ Tags
Tag Description Result

AllowAttributes(attribute_list).
Additionally, make sure that every
complementary rule has its rank higher
than the rank of the primary rule.

<*DisallowAllValuesExcept( Parameters: attributes with their Sets all attribute values to not allowed,
Attribute_Name : Value1, values, separated by colon. More than except for the listed values. This may
Attribute_Name : one attribute/value pair can be be used when there is a large number
Value2, ..)*> entered. Every pair is separated from of attribute values, but only a couple of
other pairs by a comma. them needs to be allowed.

<*resetatt(standard Parameters: attribute names. More Resets every value of every listed
attribute name)*> than one Attribute can be entered. attribute.
Each is separated from other by a
comma.

<*resetatv(standard Parameters: attributes with their Resets every listed attribute value.
attribute name:standard values, separated by colon. More than
attribute value)*> one attribute/value pair can be
entered. Every pair is separated from
other pairs by a comma.

<* SELATV (attribute1: Selects attribute values. By default the Attribute values included in tag will be
value1 I value2 I value3, system resets the attribute when a selected.
attribute2: value 1)*> selection is made with SELATV. With
the use of <*DONOTRESETATT*>
and <*DORESETATT*> (see
description below) more than one
attribute value will be selected without
the other values being unselected.

<* SelectValues Selects attribute values. By default the Attribute values included in tag will be
(attribute1: value1 I system resets the attribute when a selected.
value2 I value3, selection is made with SelectValue.
attribute2: value 1)*> With the use of
<*DONOTRESETATT*> and
<*DORESETATT*> (see description
below) more than one attribute value
will be selected without the other
values being unselected.

<* SelectValue Selects attribute values. By default the Attribute values included in tag will be
(attribute1: system resets the attribute when a selected.
value1,attribute1:value2 , selection is made with SelectValue.
attribute1:value3)*> With the use of
<*DONOTRESETATT*> and
<*DORESETATT*> (see description
below) more than one attribute value
will be selected without the other
values being unselected.

<*ResetValue(standard Parameters: attributes with their Resets every listed attribute value.
attribute name:standard values, separated by colon. More than
attribute value)*> one attribute/value pair can be
entered. Every pair is separated from
other pairs by a comma.

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 711
Tag Description Result

<*DONOTRESETATT*> Tells the system not to reset the Switches the system to not reset
attribute values when another attributes when SELATV tag is used.
selection is made. By default the
system resets the attribute when a
selection is made with SELATV. Use in
conjunction with <*DORESETATT*>
(see description below)

<*DORESETATT*> Tells system to reset attribute values Switches the system to reset attributes
when another selection is made. when the SELATV tag is used.
Generally this is used after the
<*DONOTRESETATT*> tag in the
same expression. For example:
<*DONOTRESETATT*><*SELATV(
attr1:value1)*><*DORESETAT
T*>

<* ResetAttribute(standard Parameters: attribute names. More Resets every value of every listed
attribute name) *> than one attribute can be entered. attribute.
Each is separated from other by a
comma.

<*DONOTREVERSERULES*> Tells the system not to reverse a rule Switches the system to not reverse
when the rule becomes not true. By rules when the condition is no longer
default the system will reverse a rule true.
when the condition is no longer true.
Use <*DONOTREVERSERULES*> to
turn this function off.

<*REVERSERULES*> Tells the system to reverse the rule Switches the system to reverse rules
when the rule becomes not true. when the condition is no longer true.
Generally this is used after the
<*DONOTREVERSERULES*> tag in
the same expression. For
example:<*DONOTREVERSERULES*
><*DISALLOWATT(attr1)*><*
REVERSERULES*>

<*SETREQUIRED(AttName)*> Sets an attribute to be required. Useful Sets the specified attribute as


when attributes only need to be required.
required under certain conditions.
When it is used, another rule needs to
be created to set the same attribute as
optional under the reverse conditions.

<*SETOPTIONAL(AttName)*> Sets an attribute to be optional. Sets the specified attribute as


Generally used in conjunction with required.
<*SETREQUIRED()*> as a separate
rule.

SAP CPQ Setup and Administration Guide


712 PUBLIC SAP CPQ Tags
11.6.3 Condition Tags

Tag Description Result

<*anysel(standard Parameters: attributes with their If any value from the entered list is
attribute name:standard values, separated by a colon. More selected the result is TRUE, otherwise
attribute value)*> than one attribute/value pair can be it’s FALSE.
entered. Every pair is separated from
other pairs by a comma.

<*IfAnyValue(standard Parameters: attributes with their If any value from the entered list is
attribute name:standard values, separated by a colon. More selected the result is TRUE, otherwise
attribute value)*> than one attribute/value pair can be it’s FALSE.
entered. Every pair is separated from
other pairs by a comma. This tag
should be used for product rules only.

<*anyselatt(standard Parameters: attribute names. More If any value from the specified
attribute name)*> than one attribute can be selected. attributes is selected the result is
Separate them by commas. TRUE, otherwise it’s FALSE.

<*IfAnyAttribute(standard Parameters: attribute names. More If any value from the specified
attribute name)*> than one attribute can be selected. attributes is selected the result is
Separate them by commas. TRUE, otherwise it’s FALSE.

<*allsel(standard Parameters: attributes with their If all of the specified values are
attribute name:standard values, separated by a colon. More selected the result is TRUE, otherwise
attribute value)*> than one attribute/value pair can be it’s FALSE.
entered. Every pair is separated from
other pairs by a comma.

<*IfAllValues(standard Parameters: attributes with their If all of the specified values are
attribute name:standard values, separated by a colon. More selected the result is TRUE, otherwise
attribute value)*> than one attribute/value pair can be it’s FALSE.
entered. Every pair is separated from
other pairs by a comma.

<*allselatt(standard Parameters: attribute names. More If every specified attribute has its
attribute name)*> than one Attribute can be entered. selection the result is TRUE, otherwise
Each separated from the other a it’s FALSE.
comma.

<*IfAllAttributes(standard Parameters: attribute names. More If every specified attribute has its
attribute name)*> than one attribute can be entered. selection the result is TRUE, otherwise
Each separated from the other a it’s FALSE.
comma.

<*IsNull(check_expression, Parameters: check_expression is the The value of check_expression is


replacement_value ) *> expression to be checked for NULL. returned if it is not NULL; otherwise,
check_expression can be of any type. replacement_value is returned after it’s
replacement_value is the expression to implicitly converted to the type of
be returned if check_expression is check_expression, if the types are
NULL. replacement_value must be of a different.
type that is implicitly convertible to the
type of check_expression.

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 713
11.7 GI Tags

Tag Description

<*setGI(key,value)*> Sets Global Info value in a map with key.

<*GI(keyV)*> Gets Global Info from global cashe under key, evaluates to
null if there is no info under key.

<*GI*> Sets Global Info value in a map.

<*remGI(key)*> Removes key.

<*clearGI*> Removes all globals.

<*TESTGI(keyValue)*> Returns 1 if GI(keyValue) is defined else returns 0


purpose: it is more convinient to test for the existence of a
variable before using it in calculations/conditions.

<*GI(CUSTOMERID)*> Return Customer ID.

<*getAttNumVal(attribute name)*> Read attributes numeric value directly from the database
(from the cart items table).

<*GI(QUOTESTATUS)*> Returns information about Quote Status. If the quote is not


yet created then ‘default status’ (order status marked as
default) will be returned. If a user changes the status of a
quote and performes an action that is not marked as
autoreconfigure, GI(QUOTESTATUS) will remain
unchanged.

11.8 Main Item Price Tag

The purpose of this feature is to develop new product tag that will return product price excluding line items.

On user side of the application, implemented tags will return:

● Unit Price of the main item without line items. The tag is <*MainItemUnitPrice*> and it returns the
same value as <*TotalPriceWoLI *>.
● Extended Price of the main item without line items. Tag is <*MainItemPrice*> and it returns
{<*TotalPriceWoLI *> * <* ItemQuantity *>}.

Description Tag

Main Item Price Without Line Items (Unit) <*MainItemUnitPrice*>

Main Item Price Without Line Items (Extended) <*MainItemPrice*>

In Debugger opened for product configuration, tag can be found under Variables.

SAP CPQ Setup and Administration Guide


714 PUBLIC SAP CPQ Tags
11.9 XWS Tag

XWS tag may have one or more parameters. First parameter is function name. Other parameters are optional
and represent parameters passed to the specified function. Other than that, it supports several standard
functions it’s a gateway from Configurator to external resources like web services from another systems.

The standard XWS functions are:

● Candy - <*XWS(Candy)*> Always returns the same constant. Parameters - none. Returns - 100.
● GetProductPrice - <*XWS(GetProductPrice, ProductName)*> applies current product configuration
to the specified product and returns its price. Parameters - ProductName – a name of the product that’s
price is queried. Returns - Price of the specified product after current configuration has been applied to it.
● GetProductCatCode - <*XWS(GetProductCatCode, ProductName)*> applies current product
configuration to the specified product and returns its catalogue code. Parameters - ProductName – a
name of the product that’s catalog code is queried. Returns - Catalog code of the specified product after
current configuration has been applied to it.
● GetProductDescription <*XWS(GetProductDescription, ProductName)*> applies current product
configuration to the specified product and returns its description. Parameters - ProductName – a name of
the product that’s description is queried. Returns - Description of the specified product after current
configuration has been applied to it.
● Iterate - <*XWS(Iterate, Data, Formula)*> applies formula expression from the hint of the Formula
attribute to each part of the comma-separated values (CSV) in the value of the Data attribute and returns
sum of all evaluations. Parameters - Data – name of the attribute that in its value contains the data that
needs to be iterated - Formula – name of the attribute that in its hint contains the formula that needs to be
evaluated on each CSV value from Data attribute. Formula may contain all standard tags and new special
tag {{CurrentValue}} that will be replaced by the current iteration value. Returns - Sum of all evaluated
formulas

Example

<*XWS(Iterate, Data, Formula)*> Value of attribute Data is 1,2,3,4,5 Hint of attribute Formula is
{{CurrentValue}} Will return 15 Sum = 0 Iteration 1 - Sum = Sum + 1 = 0 + 1 = 1 Iteration 2 - Sum = Sum + 2 = 1
+ 2 = 3 Iteration 3 - Sum = Sum + 3 = 3 + 3 = 6 Iteration 4 - Sum = Sum + 4 = 6 + 4 = 10 Iteration 5 - Sum =
Sum + 5 = 10 + 5 = 15

Example

<*XWS(Iterate, Data, Formula)*> Value of attribute Data is 1,2,3,4,5 Hint of attribute Formula is
<*eval({{CurrentValue}}+1)*> Will return 20 Sum = 0 Iteration 1 - Sum = Sum + <*eval(1+1)*> = 0 + 2 = 2
Iteration 2 - Sum = Sum + <*eval(2+1)*> = 2 + 3 = 5 Iteration 3 - Sum = Sum + <*eval(3+1)*> = 5 + 4 = 9
Iteration 4 - Sum = Sum + <*eval(4+1)*> = 9 + 5 = 14 Iteration 5 - Sum = Sum + <*eval(5+1)*> = 14 + 6 = 20

SAP CPQ Setup and Administration Guide


SAP CPQ Tags PUBLIC 715
Example

<*XWS(Iterate, Data, Formula)*> Value of attribute Data is 09/01/2008,09/03/2008,09/08/2008


Hint of attribute Formula is <*Table(select top 1 Price from Table where
StartDate⇐‘{{CurrentValue}}’ and EndDate>=‘{{CurrentValue}}’)*> Will return sum of prices
for selected dates in Data attribute.

SAP CPQ Setup and Administration Guide


716 PUBLIC SAP CPQ Tags
12 Audit Trail

In this section, you can learn more about the logging of actions performed by administrators and users. You
can also learn about change sets, which are used for tracking changes performed by administrators.

Audit Trail Logs [page 717]


SAP CPQ tracks all actions that administrators and users perform throughout the application and logs
them in the dedicated section of the Setup. The audit trail logs changes that are performed either
directly in the application or via API.

Change Set [page 723]


Change Set is a feature that increases traceability of changes (in Setup or via scripting) and ensures
that appropriate recording of changes occurs in the relevant change management procedures.

12.1 Audit Trail Logs

SAP CPQ tracks all actions that administrators and users perform throughout the application and logs them in
the dedicated section of the Setup. The audit trail logs changes that are performed either directly in the
application or via API.

Any logged information can be found in the following tabs in Setup Audit Trail Audit Trail :

● Admin Actions [page 719]


● User Actions [page 719]
● Products [page 720]
● Attributes [page 721]
● Pricebooks [page 721]
● Custom Tables [page 722]

The audit trail permanently retains records. However, if you want logged information to be automatically and
permanently deleted, you can specify data deletion intervals in Setup Security Data Deletion Audit Trail
Deletion . See Audit Trail Deletion [page 742] for more information.

Filtering and Searching

You can search the audit trail records by performing a global search, an advanced search or by using the quick

filter. Additionally, you can select which audit trail columns are visible by clicking , selecting or
unselecting individual columns and clicking Save.

Global Search
To perform a global search across all tabs, follow the steps.

SAP CPQ Setup and Administration Guide


Audit Trail PUBLIC 717
1. Click in the top-right corner of the page.
A pop-up window appears with search fields: Change Set ID, User, From, and To.
2. Enter the search terms in the dedicated field or fields.
Alternatively, select the From and To dates to filter the records created between those dates.
All the audit trail grids are now filtered according to your search criteria. You can search multiple fields at
the same time.

Advanced Search

The advanced search filters only the currently open audit trail tab, but it allows you to search every column in
the grid. To perform an advanced search, follow these steps.

1. Click Advanced Search.


The Advanced Search window with search fields pops up.
2. Enter your search criteria in any of the dedicated fields.
A field is available for every column in the grid (and From and To fields are available for the Date column).
You can search multiple fields at the same time.
3. Click OK.
The currently open audit trail grid is now filtered according to your search criteria.
When you perform an advanced search, you can see your filters below the quick filter and the Advanced
Search button. Click X to remove any filter you added.

Alternatively, you can use the quick filter to instantly search the currently open audit trail tab. The quick filter
works the same way as the advanced search, except that it only filters by the parameters listed in the search
bar. The parameters are specific for every audit trail tab.

Audit Trail Search Logic

You can combine the search filters in the following ways:

● If value A is entered in the global search, and value B is entered in the advanced search, the records in the
currently open tab are filtered by the value B. However, all the other audit trail tabs are filtered by value A.
● If the quick filter is applied on any audit trail tab, it overrides all other search filters, both global and
advanced.

Related Information

Change Set [page 723]


Logged Data [page 723]
Audit Trail Deletion [page 742]

SAP CPQ Setup and Administration Guide


718 PUBLIC Audit Trail
12.1.1 Admin Actions

The system tracks changes performed by administrators in various sections of the Setup and displays them in
the Admin Actions tab.

Additionally, actions performed by users with special administrator permissions in the User Menu are also
logged in the Admin Actions tab (this doesn’t include the User Page, which is available to all users and covered
by User Actions in terms of logging). See Logged Data [page 723] for more information about what is logged in
the audit trail.

Log details are displayed in the following columns:

● Change Set ID – the ID of the change set [page 723] that was active when the change was performed. All
changes are grouped under the currently active change set.
● Change ID – the ID of the specific change inside the change set.
● Entity – the type of SAP CPQ object that is being changed (for example, Application Parameter).
● Entity ID – the unique identifier of the specific SAP CPQ object that is being changed (for example, the
name of a specific application parameter).
● Action – any change carried out by the administrator or the user (such as Add, Change, or Delete). Post
actions attached to an action are also logged here.
● Field – the field whose value has been changed.
● Previous Value – the value that was in place before the change.
● New Value – the value that is in place after the change.
● User – the name and the username of the administrator or user who performed the change.
● Date – the date and the time when the change was performed.

Related Information

Audit Trail Logs [page 717]


Logged Data [page 723]

12.1.2 User Actions

Here, administrators can track changes performed by SAP CPQ users on the user side of the application, in
high detail and real time.

See Logged Data [page 723] for more information about what is logged in the audit trail.

Log details are displayed in the following columns:

● Quote – the number of the quote on which the change was performed.
● Quote Revision – the name and number of a specific quote revision.
● Quote Status – the status of the quote when the action was performed.
● Quote Item – the ordinal number of a specific item in the quote on which the change was made.
● Product – a product that was changed by a user (for example, by configuring it).

SAP CPQ Setup and Administration Guide


Audit Trail PUBLIC 719
● Attribute – an attribute that was changed by a user (for example, while configuring a product).
● Action – any change carried out by the user (such as logging in, creating a quote or changing the attribute
quantity).
● Field – the field whose value has been changed.
● Page – a web location where the change has taken place.
● Previous Value – the value that was in place before the change.
● New Value – the value that is in place after the change.
● User – the name and the username of the user who performed the change.
● Date – the date and the time when the change was performed.

Related Information

Audit Trail Logs [page 717]


Logged Data [page 723]

12.1.3 Products

This functionality allows administrators to track changes performed on products. Specifically, the changes
logged here are product definition changes performed in the Setup.

See Logged Data [page 723] for more information about what is logged in the audit trail.

Log details are displayed in the following columns:

● Change Set ID – the ID of the change set [page 723] that was active when the change was performed. All
changes are grouped under the currently active change set.
● Change ID – the ID of the specific change inside the change set.
● Product – a product that is being changed, usually goods or services (for example, a laptop or a software
license).
● Product System ID – the system ID of the product.
● Attribute – the specific attribute on the product that is being changed (for example, a CPU as an attribute
of a laptop product).
● Attribute System ID – the system ID of the attribute.
● Attribute Value – the value of the attribute (for example, any of the CPU models offered to users as values
for the attribute CPU).
● Rule/Message/Script –the rule or message triggered upon product configuration.
● Action – any change carried out by the administrator (such as Add, Change or Delete).
● Field – the field whose value has been changed.
● Previous Value – the value that was in place before the change.
● New Value – the value that is in place after the change.
● User – the name and the username of the administrator who performed the change.
● Date – the date and the time when the change was performed.

SAP CPQ Setup and Administration Guide


720 PUBLIC Audit Trail
Related Information

Products [page 53]


Audit Trail Logs [page 717]

12.1.4 Attributes

This functionality allows administrators to track all changes performed on attributes. Specifically, the changes
logged here are attribute definition changes performed in the Setup.

See Logged Data [page 723] for more information about what is logged in the audit trail.

Log details are displayed in the following columns:

● Change Set ID – the ID of the change set [page 723] that was active when the change was performed. All
changes are grouped under the currently active change set.
● Change ID – the ID of the specific change inside the change set.
● Entity – the type of SAP CPQ object that is being changed (such as Attribute or Attribute Container
Content).
● Entity ID – the identity of the specific SAP CPQ object that is being changed (such as the specific system ID
of an attribute).
● Action – any change carried out by the administrator (such as Add, Change, or Delete).
● Field – the field whose value has been changed.
● Previous Value – the value that was in place before the change.
● New Value – the value that is in place after the change.
● User – the name and the username of the administrator who performed the change.
● Date – the date and the time when the change was performed.

Related Information

Attributes [page 26]


Audit Trail Logs [page 717]

12.1.5 Pricebooks

This functionality allows administrators to track all changes performed on pricebooks in the Setup.

See Logged Data [page 723] for more information about what is logged in the audit trail.

Log details are displayed in the following columns:

● Change Set ID – the ID of the change set [page 723] that was active when the change was performed. All
changes are grouped under the currently active change set.

SAP CPQ Setup and Administration Guide


Audit Trail PUBLIC 721
● Change ID – the ID of the specific change inside the change set.
● Pricebook – the name of the pricebook that was changed.
● Part Number – the part number of a pricebook entry.
● Action – any change carried out by the administrator (such as Add, Change, or Delete).
● Field – the field whose value has been changed.
● Previous Value – the value that was in place before the change.
● New Value – the value that is in place after the change.
● User – the name and the username of the administrator who performed the change.
● Date – the date and the time when the change was performed.

 Note

Logging can be disabled for changes on pricebooks by setting the application parameter Audit Trail for
Pricebooks to Audit Disabled. This can improve system performance when working with pricebooks.

Related Information

Pricebooks [page 406]


Audit Trail Logs [page 717]

12.1.6 Custom Tables

This functionality allows administrators to track all changes performed on custom tables in the Setup.

See Logged Data [page 723] for more information about what is logged in the audit trail.

Log details are displayed in the following columns:

● Change Set ID – the ID of the change set [page 723] that was active when the change was performed. All
changes are grouped under the currently active change set.
● Change ID – the ID of the specific change inside the change set.
● Entity – the type of SAP CPQ object that is being changed (such as Custom Table or Custom Table Entry).
● Entity ID – the identity of the specific SAP CPQ object that is being changed (such as the name of a custom
table or the ID of a custom table entry).
● Action – any change carried out by the administrator (such as Add, Change, or Delete).
● Field – the field whose value has been changed.
● Previous Value – the value that was in place before the change.
● New Value – the value that is in place after the change.
● User – the name and the username of the administrator who performed the change.
● Date – the date and the time when the change was performed.

SAP CPQ Setup and Administration Guide


722 PUBLIC Audit Trail
Related Information

Custom Tables [page 110]


Audit Trail Logs [page 717]

12.1.7 Logged Data

This topic explains where different types of data are logged, and which sections are not covered by the audit
trail.

The Products, Attributes, Pricebooks, and Custom Tables tabs log details about every action performed on
products, attributes, pricebooks and custom tables, respectively.

The Admin Actions tab logs all actions performed in the Setup with the following exceptions:

● Actions performed on products, attributes, pricebooks, and custom tables are logged in their respective
logs.
● Actions performed in the following sections of the Setup aren’t logged:
○ General Report Module
○ Bulletin Board

The User Actions tab logs all actions performed by users on the user side of the application, with the following
exceptions:

● Configurator (changes made via API aren’t logged)


● Collaboration (changes made via API aren’t logged)
● Favorites (changes made via API aren’t logged)
● Bulk Validation

Related Information

Audit Trail Logs [page 717]


Change Set [page 723]

12.2 Change Set

Change Set is a feature that increases traceability of changes (in Setup or via scripting) and ensures that
appropriate recording of changes occurs in the relevant change management procedures.

A change set encompasses a group of changes that are performed in a single set. Each change in SAP CPQ is
logged in the Audit Trail [page 717] as a part of a change set.

SAP CPQ Setup and Administration Guide


Audit Trail PUBLIC 723
 Note

Change sets can only be created in development and testing SAP CPQ environments. If you want a change
set to be displayed in Setup in sandbox and production environments, you need to deploy it from the lower
environment once the changes have been tested and applied there.

Change sets can be active and inactive. Of all the active change sets, only one can be in use at a time. You can
select the change set you wish to use in the Change Set dropdown in Setup. Once you select a change set, all
changes that you apply to SAP CPQ from that moment on are logged in Audit Trail under that change set. The
inactive change sets don’t appear in the dropdown, but you can find them in Setup Audit Trail Change
Set (where all change sets created by administrators are listed) and activate them again. Changes can’t be
logged under an inactive change set.

 Note

Using change sets to improve tracking of changes is optional. If there are no change sets in your
environment other than DEFAULT (CPQ-1), the Change Set dropdown isn’t displayed in Setup.

The default change set is selected every time you log into SAP CPQ regardless of whether a different change
set was previously selected or not. If you make some changes under a custom change set, exit the Setup and
then enter it again without logging out, the custom change set you have previously used is the selected one.

Change Set and API

If a change is performed via API, and you wish to assign it to a change set, enter the change set ID in the header
for each API call. You can only use IDs of active change sets. The key entered in the header should be
ChangeSetId, and its value should be the value of that change set ID (for example, CPQ-10). This is the list of
affected APIs:

● AUXTableAdministrator
● CompanyAdministration
● ImportMaterialsFromERP
● SimpleProductAdministration
● UpsertPricebook
● UpsertPricebookWithDistributionChain
● UserAdministration
● CustomerAdministration

Related Information

Audit Trail Logs [page 717]


Create Change Set [page 725]
Deploying a Change Set [page 725]

SAP CPQ Setup and Administration Guide


724 PUBLIC Audit Trail
12.2.1 Create Change Set

This topic lists the two ways to create change sets.

You can access the Change Set dropdown in the Setup. The names and IDs of active change sets in your
environment are displayed here.

1. Click next to the Change Set dropdown in Setup.


A popup window displays.
2. Enter the name of a new change set in the indicated field.
3. (Optional) Enter the description of a new change set in the indicated field.
4. Click Save.
Once you create this change set, it’s automatically activated.

Alternatively, you can:

1. Go to Setup Audit Trail Change Set .


The grid containing all available change sets (except the default one) displays. It has the following columns:
Edit, Active, Name, Description, Change Set ID, Date, and User.
2. Click New Change Set.
A popup window displays.
3. Enter the name of a new change set in the indicated field.
4. (Optional) Enter the description of a new change set in the indicated field.
5. Click Save.

6. (Optional) To edit column visibility, click .


The new change set is now listed in the Change Set grid. Once created, the change set can be edited.

 Note

Currently, change sets can’t be deleted, but they can be deactivated with the Active toggle switch.

Related Information

Change Set [page 723]


Audit Trail Logs [page 717]

12.2.2 Deploying a Change Set

It is possible to deploy active change sets from development and testing to sandbox and production
environments.

In this initial phase of improved SAP CPQ transport mechanism, there are two ways to deploy change sets to
target environments. You can either do it manually or via a deployment package.

SAP CPQ Setup and Administration Guide


Audit Trail PUBLIC 725
Manual Deployment

Once you click the Deploy button in Setup Audit Trail Change Set , a popup window displays. You are
prompted to select a target environment and a change set or change sets that should be deployed to it.

● Target environments – a list of connected environments ( Deploy/Send Changes Deployment Setup


Connected Environment . If there are no connected environments, you need to establish a connection
between environments first.
● Change set grid – a grid with all active change sets. You can select change sets you wish to deploy here.

When a change set is deployed from one of development or testing environments, it will appear in the target
environment’s list of active change sets. No changes previously performed in the source environment will be
applied to that environment automatically or logged in the target environment’s Audit Trail.

Example

An administrator selects the CPQ Test change set in the source environment, performs some changes
manually and sends that change set's definition to the target environment by clicking the Deploy button in the
Change Set page. Then an administrator selects that change set on the target environment and applies the
same changes manually there.

Deployment Package

To deploy a change set via a deployment package, navigate to the Deployment Packages tab in Setup
General Deploy/Send Changes Deployment Setup in the source environment and click Create Package.
There, you can select the change set and deploy the package to the target environment.

The Change Set dropdown list is blank by default and selecting a change set from the list is mandatory.
However, the field isn’t visible if there are no active change sets in the environment.

If the change set with that ID already exists in the target environment, it is preselected in Setup and all changes
that were deployed in the package are applied in the target environment and logged as a part of that change
set. If the change set does not exist in the target environment, it is created, preselected and all changes
associated with it are applied in the target environment and logged in that environment's Audit Trail.

 Note

If an administrator performs one change in the source environment as a part of the Change Set A and
another change as a part of the Change Set B, there are no restrictions which prevent both changes to be
sent as a part of the Change Set B if they are deployed in the same package when Change Set B was
selected in Setup.

SAP CPQ Setup and Administration Guide


726 PUBLIC Audit Trail
Related Information

Change Set [page 723]


Audit Trail Logs [page 717]

SAP CPQ Setup and Administration Guide


Audit Trail PUBLIC 727
13 Delegation of Authority

When delegating authority for a setup feature to SAP CPQ users, you allow them to manage features that are
available only to administrators. This way users become local administrators for specific setup functionalities.

In companies where a local administrator manages a part of setup, the process is optimized, and the
turnaround is faster. Also, limiting data access to local administrators enhances its security.

Example

In a XYZ company with offices around the globe, there are a number of administrators distributed per
countries/regions and regions. An office in Sweden has monthly special offers for specific customer groups, so
they require different price books regularly. The administrator can’t handle all the requests for importing new
price books in time, so he delegates authority for managing price books to a user located in the Swedish office.
The process is now more optimized as the local administrator can upload new price books into the application
almost in real time.

In the Delegation of Authority section in Setup, users can be delegated authority to manage:

● Custom Tables
● Simple Products
● Pricebooks
● Users
● Bulk Quote Reassignment
● Documents

Users can access the pages for managing specific setup features in the menu available when clicking their
username in the top bar.

Ability to Manage Documents [page 729]


When you delegate authority for managing documents to a permission group, the pertaining users can
create and upload local document templates and content documents in SAP CPQ.

Bulk Quote Reassignment [page 729]


This page lets you define permission groups that can reassign quotes in bulk.

Delegating Authority for Custom Tables [page 730]


The Custom Tables subsection displays all custom tables in the system for which you can delegate
authority. You can find a specific table faster using the search box above each column.

Delegating Authority for Price Books [page 730]


Under Pricebooks, you choose permission groups that can manage each price book and define under
which conditions the authority is delegated.

Delegating Authority for Simple Products [page 731]


You can delegate authority for simple products in the Simple Products subsection.

User Management [page 731]


This functionality enables users who aren’t SAP CPQ administrators to manage other users and
companies.

SAP CPQ Setup and Administration Guide


728 PUBLIC Delegation of Authority
13.1 Ability to Manage Documents
When you delegate authority for managing documents to a permission group, the pertaining users can create
and upload local document templates and content documents in SAP CPQ.

If needed, each user can also be able to share templates with the members of their own company. To delegate
authority for managing documents, go to Setup Delegation of Authority Ability to Manage Documents .

 Note

The logic between permission groups is OR, so the system delegates authority for managing documents to
all users that belong to at least one of the selected permission groups.

If you wish to enable users pertaining to the selected permission groups to upload content files that are used in
templates uploaded by application administrators, select the Users from selected permission groups will be
able to upload content files used in templates uploaded by application administrator checkbox.

Users who are delegated authority for managing document templates have the Manage Document Templates
page available in the user pages. When creating a new template, define it in the Template Definition tab
according to the instructions for creating templates described in Document Generation Template. Users can
select Share with users from my company and brand to expand access to the template to other users in their
company.

In the Additional Fields tab, you define which content files are going to be added to the template.

 Note

The system includes the additional files into the generated template only if these two tags are properly
added in the template: INCLUDE_DOCUMENTS and INCLUDE_DOCUMENTS_END.

Users can also make the following adjustments:

● Include file(s) for each quote item - select it to add files for each quote item.
● Included File(s) - enter the name of the file (with file extension) that is going to be added to the generated
document, or define the formula that dynamically pulls the file name from elsewhere in the application.
The files need to be placed in Manage Content Documents.
● File Description - define a description that is shown to users, or a formula that generates a description
dynamically.
● File Selection - select Checkboxes to allow multiple selections of files that will be included in the generated
file. Alternatively, select Radio Buttons to restrict the selection to only one file.
● Separate files with page break - selected by default so that the system would make a page break after every
added file.

13.2 Bulk Quote Reassignment


This page lets you define permission groups that can reassign quotes in bulk.

You can either select Everyone and enable all permission groups to reassign quotes in bulk, or select specific
groups by moving them to the right column. In the Bulk Quote Reassign Rights subsection, you can also restrict

SAP CPQ Setup and Administration Guide


Delegation of Authority PUBLIC 729
the selection of source and target users to specific permission groups. To disable reassigning quotes in certain
statuses, in Exclude statuses move the respective statuses from the left to the right column.

 Note

The logic between permission groups is OR, so the system delegates authority for reassigning quotes to all
users that belong to at least one permission group.

On the user side, users in the selected permission group can select a user whose quotes will be reassigned and
the user to whom the quotes will be reassigned.

On the Bulk Quote Reassign page available in user pages, SAP CPQ users select a user whose quotes they wish
to reassign, a user to whom the quotes will be reassigned and quotes that will be reassigned.

13.3 Delegating Authority for Custom Tables

The Custom Tables subsection displays all custom tables in the system for which you can delegate authority.
You can find a specific table faster using the search box above each column.

Click the Edit button next to a table to edit the permission groups who can manage it. Use the left and right
arrows to move available permission groups to selected and vice versa.

 Note

The logic between permission groups is OR, so the system delegates authority for a custom table to all
users that belong to at least one permission group.

On the user side, delegated users can manage custom tables on the Manage Tables page. Users are allowed to
edit tables for which they’re granted authority, to add, edit, and delete rows in tables. Additionally, tables can
be exported as Excel and ZIP files for a cleaner overview.

13.4 Delegating Authority for Price Books

Under Pricebooks, you choose permission groups that can manage each price book and define under which
conditions the authority is delegated.

When in editing mode, first move the system permission groups to the right column and then define the
condition by creating a formula in the Formula Builder.

 Note

The formula box can't be empty. To make the price book always visible/invisible to the selected permission
group, enter 1 or 0 in the formula box.

To manage price books as a user, access Manage Pricebooks under User Menu. In addition to editing and
exporting price books, users can add, edit, and export price book entries as well.

SAP CPQ Setup and Administration Guide


730 PUBLIC Delegation of Authority
13.5 Delegating Authority for Simple Products

You can delegate authority for simple products in the Simple Products subsection.

The page shows all conditions created for delegating authority for simple products management.

To add a new condition, you need to click Add New. The page that opens up is divided into three sections
enabling you to select the following:

● A permission group that can add products to the selected categories.


● Categories to which products can be added.
● Permission groups whose products delegated users can manage.

On the Manage Simple Products page reached via User Menu, delegated users can add and import simple
products to the categories for which they’re granted rights. Also, users can edit products and export them.

13.6 User Management

This functionality enables users who aren’t SAP CPQ administrators to manage other users and companies.

Delegation of authority for user management is managed through two tabs: Management of users and
Management of companies.

Management of Users

The tab contains all conditions under which the authority for user management is delegated to users.

 Note

If User who creates company can manage its users is selected, users who have created companies can
automatically manage all new users that join those companies.

Click Add New to define a new condition. A new page displays, containing the following fields:

Field Description

Permission Group Type the name of the permission group to which you’re
delegating authority, or click the Search icon to find a
permission group.

Can Edit Users Select All Company Users and allow the selected permission
group to edit all users belonging to the same companies as
the selected group. Alternatively, if you select Only if
Managing Parent of Users, you’re allowing each user to
manage those users to whom they’re set up as managing
parents.

SAP CPQ Setup and Administration Guide


Delegation of Authority PUBLIC 731
Field Description

Can Manage Users of These User Types Move user types to the right column to enable the selected
permission groups to manage them.

Can Manage Users From These Companies Select Users' own company to enable each user to manage
other users pertaining to the same company. Alternatively,
select specific companies.

Condition Select either OR logic or AND logic depending on whether


the users that are going to be managed need to adjust to
both criteria (user type and company), or only one of these,
respectively.

Can Allow Other Users Permissions to Administer Users Enable the permission group to delegate authority for
managing users.

Can Allow Other Users Permissions to Administer Enable the permission group to delegate authority for
Companies managing companies to other users.

Management of Companies

The tab displays all conditions under which the authority for managing companies is delegated to users.

Click Add New to define a new condition and fill out these fields:

Field Description

Permission Group Type the name of the permission group to which you’re
delegating authority, or click the search icon to find a
permission group.

Can Create New Companies Enable the permission group to create new companies.

Can Edit These Companies Select User's own company and allow each user in the
permission group to edit their own company. Alternatively,
select specific companies. In addition, you can choose the
Where user belongs to the Permission Group which is an
administrator option. It allows users from the selected
permission group to edit companies for which they’re
granted administrator rights through other permission
groups (an administrator permission group is assigned to a
company in Companies Permissions ).

On the user side of SAP CPQ, the Manage Users page displays all users that the logged user has the rights to
manage. Adding and editing of users is also enabled.

SAP CPQ Setup and Administration Guide


732 PUBLIC Delegation of Authority
14 Security

SAP CPQ provides features that are intended to help achieve compliance with General Data Protection
Regulation (GDPR).

SAP CPQ doesn't include any technical measures that support the processing of special categories of personal
data, which includes but isn’t limited to:

● Racial or ethnic origin


● Political opinions
● Religious or philosophical beliefs
● Trade-union membership
● Health or sex life
● Personal data concerning bank and credit accounts
● Genetic data
● Biometric data for the purpose of uniquely identifying a natural person

Look at SAP CPQ features rolled out under GDPR standards and click the links for more details:

Automatic Data Deletion [page 733]


The feature enables you to set a data retention policy and/or manage your account’s storage space by
defining a period of time after which the system automatically and permanently deletes data.

Personally Identifiable Information [page 744]


Personally identifiable information (PII) is any information that could potentially be used to identify an
individual.

WSDL Management and SSL Certificates [page 750]


These features can be used together for establishing efficient and secure SOAP communication
between two different servers.

Access Rights [page 753]


Access Rights gives you an option to hide some of the Setup sections and entities or make them read-
only to individual administrators or permission groups.

DKIM Support for Outbound Emails [page 756]


The DomainKey Identified Mail (DKIM) authentication standard adds an encrypted digital signature to
outbound email messages sent on company’s behalf.

14.1 Automatic Data Deletion


The feature enables you to set a data retention policy and/or manage your account’s storage space by defining
a period of time after which the system automatically and permanently deletes data.

 Note

Since data can be permanently deleted, we recommend that only data protection officers, in cooperation
with administrators, use this feature to define a data retention policy.

SAP CPQ Setup and Administration Guide


Security PUBLIC 733
The following data can be permanently deleted:

● Quotes
● Users
● Customers
● User actions
● Administrator actions

This feature is accessed in Setup Security Data Deletion . The above-mentioned data is organized into
the following tabs: General Deletion [page 738] and Audit Trail Deletion [page 742]

Apart from deleting data on the previously mentioned tabs, you can also prevent data from being deleted [page
734].

The feature is available in both Responsive and Classic Design. However, when deleting or blocking data using
Classic Design, UI text such as messages and blocked status of users, quotes and customers isn’t visible.

 Note

If your attempt to delete data with the Data Deletion feature is unsuccessful, contact the SAP CPQ Support
Team and request deletion of the necessary SAP CPQ entities.

Blocked Data [page 734]


Besides deleting data, the Data Deletion functionality also enables you to prevent data, which is
important to you, from being deleted.

General Deletion [page 738]


It's possible to define time periods after which user, quote, and customer data is deleted.

Audit Trail Deletion [page 742]


It's possible to define time periods after which audit trail data is deleted.

14.1.1 Blocked Data


Besides deleting data, the Data Deletion functionality also enables you to prevent data, which is important to
you, from being deleted.

Depending on your business needs, you can:

● Block quotes from being deleted.


● Block users from being deleted.
● Block customers from being deleted.

 Note

Data exempt from deletion can’t be manually deleted or edited.

Blocking Customers from Being Deleted [page 735]


You can block customers from being deleted.

Blocking Quotes from Being Deleted [page 735]


You can prevent quotes from being deleted.

Blocking Users from Being Deleted [page 736]

SAP CPQ Setup and Administration Guide


734 PUBLIC Security
You can prevent users from being deleted.

14.1.1.1 Blocking Customers from Being Deleted

You can block customers from being deleted.

To prevent customers from being deleted:

1. Go to Setup Security Data Deletion .


A new page displays.
2. In Blocked Data Blocked Customers , enter either the first name, last name, or email address of the
customer you want to block from deletion.
The field offers autocomplete suggestions as you start typing a search query. Customers matching the
input are displayed as suggestions. Alternatively, you can select a customer from the dropdown list.
3. Click Save.
A confirmation message displays.

Restrictions for Blocked Customers

When you block a customer:

● The customer details can’t be edited. You can only view the details.
● The customer can’t be deleted manually or via the API.
● The customer can’t be added to quote.
On the Customer Info tab, the blocked customer doesn’t appear in autocomplete suggestions. Moreover,
when adding customers via Lookup, a customer’s blocked status is displayed in the Actions column.

In case a customer was first attached to a quote and got blocked afterwards, if a user performs certain actions
on the quote that process the customer information (for example, generate documents or place order), a
message displays, notifying the user that the customer is blocked and that another customer should be added
to the quote.

14.1.1.2 Blocking Quotes from Being Deleted

You can prevent quotes from being deleted.

To prevent quotes from being deleted:

1. Go to Setup Security Data Deletion .


A new page displays.
2. In Blocked Data Blocked Quotes , enter the number of the quote you want to block from deletion.
The field offers autocomplete suggestions as you start typing a search query. Quote numbers matching the
input are displayed as suggestions. Alternatively, you can select a quote number from the dropdown list.
The selected quotes are displayed below the Blocked Quotes search field.

SAP CPQ Setup and Administration Guide


Security PUBLIC 735
3. Click Save.
A confirmation message displays.

Restrictions for Blocked Quotes

When you block a quote:

● The quote status is set to Blocked.


● The quote can’t be deleted manually or via the API.
● View is the only available action on the Load Quote page.

14.1.1.3 Blocking Users from Being Deleted

You can prevent users from being deleted.

To prevent users from being deleted:

1. Go to Setup Security Data Deletion .


A new page displays.
2. In Blocked Data Blocked Users , enter either the first name, last name, username, or email address of
the user you want to block from deletion.
The field offers autocomplete suggestions as you start typing a search query. Users matching the input are
displayed as suggestions. Alternatively, you can select a user from the dropdown list.
3. Click Save.
A confirmation message displays.

The blocked user’s status is considered for SAP CPQ licenses. The user can be either active or inactive, and this
status is displayed in the Active column on the Users page. If the blocked user is active, the user counts as a
license user. On the other hand, if the blocked user is inactive, the user doesn’t count as a license user.

Restrictions for Blocked Users

When you block a user:

● The user can’t log into the system.


● The user details can’t be edited.
You can only view the details, as the Save button is disabled. The user’s blocked status is displayed in the
Active column.
● The user can’t be deleted manually or via the API.
● The user can’t be updated via the API.
● The user’s blocked status is displayed on the Manage Users page, and no action is available.
● The user can be selected in permission groups.
When selected, the user’s blocked status is also displayed. If the blocked user is the only selection, the
Save button is disabled.

SAP CPQ Setup and Administration Guide


736 PUBLIC Security
● The user can’t be set as a guest user.
● When the blocked user is selected as a guest user, a message displays, and the Save button is disabled.
● The user can’t be set as an approval parent, managing parent or ordering parent.
When the blocked user is selected as an approval parent, managing parent or ordering parent, a message
displays, and the Save button is disabled.
● The user, who previously granted you or a support representative access to their account, isn’t displayed
due to their blocked status.
This means you can’t log in as a proxy user when the user is blocked.
● The user can’t be exported.
● The user can’t be updated through user import or bulk import.
● The user can’t be deleted on the Bulk Deletion page.
The user's blocked status is displayed next to their name.
Additionally, when selecting a user whose customers you want to delete, the blocked user isn’t displayed in
the list.
● The user can’t be set as a backup approver.
When selecting backup approvers, the blocked user doesn’t appear in autocomplete suggestions. However,
if the user was selected prior to becoming blocked, the user’s blocked status is displayed, and the Save
button is disabled.
● The user can’t be set as an approver for approval rules.
When selecting approvers, the blocked user doesn’t appear in the user list. However, if the user was
selected prior to becoming blocked, the user’s blocked status is displayed, and the Save button is disabled.
Additionally, when a quote is submitted for approval, and one of the designated approvers is blocked, the
approver’s blocked status is displayed and a message notifies the user that the approval process might not
succeed because of the blocked approver. Moreover, the approver’s blocked status is also displayed in the
Approval History.
● The user can’t be added to email lists.
When selecting users, the blocked user doesn’t appear in the user list. However, if the user was selected
prior to becoming blocked, the user’s blocked status is displayed, and the Save button is disabled. This
means that the blocked user doesn’t receive email messages or notifications.
● The user’s status (active or inactive) remains the same as it was before the user was blocked.
If the user was inactive before being blocked, the blocked period also counts as inactivity.
● The user can’t be selected when setting up cart visibility.
● The user can’t be added to the list of users who can edit multipliers and discounts.
● The user can’t be selected when setting up market visibility.
● The user can’t be selected when setting up the total amount limit.
● The user can’t be selected when setting up a margin health indicator.
● The user can’t be selected when setting up promotions/special pricing.
● The user can’t be selected when defining which users have to submit quotes for approval on the Approval
Rules page.
● The user can’t be selected when setting up user mappings for CRM integrations.

When you unblock a user:

● The user’s status (active or inactive) remains the same as it was before the user was blocked.
● The user will get deleted if the deletion criteria is met based on the inactivity period or last login time.

SAP CPQ Setup and Administration Guide


Security PUBLIC 737
14.1.2 General Deletion

It's possible to define time periods after which user, quote, and customer data is deleted.

On the General Deletion tab, you define a time period for:

● Automatic deletion of quotes


● Automatic deletion of users
● Automatic deletion of customers

Automatic Deletion of Customers [page 738]


Automatic customer deletion applies to both global and local customers.

Automatic Deletion of Quotes [page 739]


When deleting quotes, you can either delete all quotes that meet the deletion criteria, regardless of
their status, or only quotes in particular status.

Automatic Deletion of Users [page 740]


When deleting users, you can either delete inactive users or users who don’t log into the system during
the specified deletion period.

14.1.2.1 Automatic Deletion of Customers

Automatic customer deletion applies to both global and local customers.

To delete customers:

1. Go to Setup Security Data Deletion .


A new page displays.
2. In General Deletion Customers , enable the Delete Customers toggle switch.
Time period selector displays.
3. Define a period after which customers will get deleted.
The period can be set in either months or years.
4. Click Save.
A confirmation message displays.

The system calculates the deletion period once the customer is no longer attached to any quote.

Each deleted customer is recorded in Setup Audit Trail Admin Actions . Additionally, customer ID of the
deleted customer is displayed in the Action column in the following format: GDPR - delete customer - customer
ID.

SAP CPQ Setup and Administration Guide


738 PUBLIC Security
14.1.2.2 Automatic Deletion of Quotes

When deleting quotes, you can either delete all quotes that meet the deletion criteria, regardless of their status,
or only quotes in particular status.

Automatic Deletion of Quotes Regardless of Status

To delete quotes without taking into account their status:

1. Go to Setup Security Data Deletion .


A new page displays.
2. In General Deletion Quotes , enable the Default Deletion Period toggle switch.
Time period selector displays.
3. Define a period after which quotes will get deleted.
The period can be set in either months or years.
4. Click Save.
A confirmation message displays.

The system calculates the deletion period from the date the quote was last modified. For example, if you set the
default deletion period to one year, all quotes with a modified date older than one year will be deleted
immediately.

Automatic Deletion of Quotes by Status

To delete quotes in particular status:

1. Go to Setup Security Data Deletion .


A new page displays.
2. In General Deletion Quotes , enable the Delete Quotes by Status toggle switch.
Time period selector and field for selecting a status display.
3. In Deletion Period, set the number of months or years after which the quotes will get deleted.
4. In Status, define the status of quotes you want to delete.
The field offers autocomplete suggestions as you start typing a search query. Statuses matching the input
are displayed as suggestions. Alternatively, you can select a status from the dropdown list.

 Note

This is a single-choice selection field. To define multiple statuses, click Add Status below the Deletion
Period time selector for each status you want to define.

5. Click Save.
A confirmation message displays.

The system calculates the deletion period from the last modified date.

SAP CPQ Setup and Administration Guide


Security PUBLIC 739
Default Deletion Period and Status-Based Deletion Working in Parallel

You can set default deletion period and status-based deletion to work in parallel. In this case, the status-based
deletion will overrule the default deletion period. The status-based deletion is useful when you want to set
different deletion periods for particular statuses, in which case the default deletion period applies to quotes in
nonselected statuses.

Example

You want to keep quotes in Won status for a longer time than quotes in all other statuses. Moreover, you also
want to remove quotes in Lost status from the system. The first thing you can do is set the Default Deletion
Period to 1 year. Next, after enabling the Delete Quotes by Status toggle switch, you can set the deletion period
for quotes in Won status to 3 years, whereas the deletion period for quotes in Lost status can be set to 5
months. As a result, quotes in Won status will be kept in the system for 3 years, that is, they will be deleted 3
years after their last modified date. Quotes in Lost status will be deleted 5 months after their last modified date,
whereas quotes in all other statuses will be deleted 1 year after their last modified date.

Logging Deleted Quotes

Each deleted quote is recorded in Setup Audit Trail Admin Actions . Additionally, quote number of the
deleted quote is displayed in the Action column in the following format: GDPR - delete quote - user ID - cart ID.

14.1.2.3 Automatic Deletion of Users

When deleting users, you can either delete inactive users or users who don’t log into the system during the
specified deletion period.

Automatic Deletion of Inactive Users

A user becomes inactive when you:

● disable the Active toggle switch in Setup Users Users General , or


● Update the user's active status via the API or through user import.

To delete inactive users:

1. Go to Setup Security Data Deletion .


A new page displays.
2. In General Deletion Users , enable the Delete Inactive Users toggle switch.
Time period selector displays.

SAP CPQ Setup and Administration Guide


740 PUBLIC Security
3. Define a period after which inactive users will get deleted.
The period can be set in either months or years.
4. Click Save.
A confirmation message displays.

The system calculates the deletion period from the date the administrator marked the user as inactive, starting
from the 2018.4 release date. If the user was inactive before the 2018.4 release, that period isn’t taken into
account when calculating the deletion period.

Example

Example: You want to delete inactive users from the system, so you enable the Delete Inactive Users toggle
switch and set the deletion period to 3 months. In this case, the system will take into account only those users
who became inactive after the 2018.4 release date (November 17, 2018). This means that if a user becomes
inactive on November 20, 2018, the system will delete the user on February 20, 2019. On the other hand, if the
user became inactive on October 10, 2018, the system won’t take the deletion period set for this user into
consideration. As a result, the user won’t get deleted.

Automatic Deletion of Nonlogged in Users

To delete users who don’t log into the system during the specified period:

1. Go to Setup Security Data Deletion .


A new page displays.
2. In General Deletion Users , enable the Delete Non-logged in Usersw toggle switch.
Time period selector displays.
3. Define a period during which users who don’t log into the system will get deleted.
The period can be set in either months or years.
4. Click Save.
A confirmation message displays.

The system calculates the deletion period from the last login date, starting from the 2018.4 release date. If the
user didn’t log into the system before the 2018.4 release, that period isn’t taken into account when calculating
the deletion period.

Example

You want to delete non-logged in users from the system, so you enable the Delete Non-logged in Users toggle
switch and set the deletion period to 3 months. In this case, the system will take into account only those users
who logged in after the 2018.4 release date (November 17, 2018). This means that if a user’s last login was on
November 20, 2018, the system will delete the user on February 20, 2019. On the other hand, if the user’s last
login was on October 10, 2018, the system won’t take the deletion period set for this user into consideration. As
a result, the user won’t get deleted.

SAP CPQ Setup and Administration Guide


Security PUBLIC 741
Deletion Limitations for Users

Since users are linked to other SAP CPQ entities, deleting a user isn’t possible in the following cases:

● The user is the designated approver for approval rules.


● The user has performed actions on existing quotes.
● The user is in charge of a forum or a topic or has posts published.
● The user needs to either approve or reject the quotes assigned.
● The user created existing quotes.
● The user created customers.

Users that can’t be deleted due to the above-mentioned reasons will be marked for deletion, and the system
will keep trying to delete users on a daily basis. Users will get deleted once the condition that prevented them
from being deleted the first time is no longer valid.

On the other hand, during the scheduled daily job when the system is trying to delete a user who couldn’t be
deleted due to the above-mentioned reasons, if the user no longer meets the deletion criteria (the user logged
in or became active), the system will stop trying to delete the user.

Logging Deleted Users

Each deleted user is recorded in Setup Audit Trail Admin Actions . Additionally, the user ID of the
deleted user is displayed in the Action column in the following format: GDPR - delete user - user ID.

14.1.3 Audit Trail Deletion

It's possible to define time periods after which audit trail data is deleted.

On the Audit Trail Deletion tab, you define a time period for:

● Automatic deletion of administrator actions, user actions, and changes on products, attributes, pricebooks
and custom tables from their respective audit trail logs.
● Automatic deletion of personal data log records.

Set Up Automatic Deletion of Data from the Audit Trail [page 743]
You can set up automatic deletion of data from a specific Audit Trail log of your choice.

Set Up Automatic Deletion of Personal Data Log [page 743]


You can set up automatic deletion of the Personal Data Log.

SAP CPQ Setup and Administration Guide


742 PUBLIC Security
14.1.3.1 Set Up Automatic Deletion of Data from the Audit
Trail

You can set up automatic deletion of data from a specific Audit Trail log of your choice.

Procedure

1. Go to Setup Security Data Deletion .

A new page displays.


2. Under Audit Trail, find the audit trail for which you wish to enable automatic deletion and enable the
dedicated Delete Audit Trail toggle switch.
3. Define a period after which the records from that particular audit trail will be automatically deleted.

The period can be set in either months or years.


4. Click Save.

A confirmation message displays.

All log entries older than the specified period are deleted daily.

14.1.3.2 Set Up Automatic Deletion of Personal Data Log

You can set up automatic deletion of the Personal Data Log.

Context

All Personal Data Log entries are by default automatically deleted after six months, or less, if they’re no longer
required by the company that holds that information. The default retention period of personally identifiable
information can be changed if needed.

Procedure

1. Go to Setup Security Data Deletion .

A new page displays.

2. In Audit Trail Deletion Personal Data Log , enable the Delete Data Protection Log toggle switch.

New fields display for defining the period after which the data will be deleted.
3. Select Month or Years and enter the number in the first field.

SAP CPQ Setup and Administration Guide


Security PUBLIC 743
4. Click Save.

A confirmation message displays.

14.2 Personally Identifiable Information

Personally identifiable information (PII) is any information that could potentially be used to identify an
individual.

The following pieces of information are examples of PII:

● Full name
● Home address
● Email address
● Social security number
● Passport number
● Driver's license number
● Credit card number
● Date of birth
● Telephone number
● Login details

You can mark certain information as PII if needed. This action makes the processes of managing and filtering
PII much easier.

The following SAP CPQ objects always contain PII:

● User standard and custom fields


● Customer standard and custom fields

The following objects aren’t flagged as PII by default, but you have the option to flag them as such if necessary:

● Quote custom fields


● Quote item custom fields
● Attributes
● Custom tables
● Quote tables

You can flag data as PII by selecting the Contains Personally Identifiable Information checkbox for the above-
mentioned objects. Once data is flagged as PII, it’s also possible to flag it as sensitive [page 745].

If the following objects are flagged as PII, they retain that flag after being sent and deployed via the Deploy /
Send Changes [page 563] feature:

● Attributes (deployed as elements of other deployment package components: products, guided selling,
custom fields, or CRM integrations)
● Quote tables
● Custom tables
● Customer standard and custom fields
● Quote custom fields

SAP CPQ Setup and Administration Guide


744 PUBLIC Security
● Quote item custom fields

14.2.1 Personal Data Log

Changes made to all data categorized as PII (personally identifiable information) in SAP CPQ are logged in a
dedicated Personal Data Log. This enables data protection officers to filter and monitor these changes more
easily.

To access the Personal Data Log, go to Setup Security Personal Data Log .

The following data is logged here:

● date and time of the performed action


● the username of the administrator who performed the action
● the performed action
● entity type on which changes are performed (users, customers, attributes, tables and so on)
● affected field
● a unique ID of an entity
● quote ID (if changes are made to quotes)
● the old value (unless changes are made to sensitive information)
● the new value (unless changes are made to sensitive information)

PII is logged only in Quote 1.0.

 Note

PII data can also be imported via API and the Import/Export feature. In that case, the user who performs
the import is logged as the performer and there is no indication in the log that the import was done via API
or Import/Export.

14.2.2 Sensitive Personally Identifiable Information

Some types of PII are more rigorously protected than others (for example, social security number and driver’s
license number) since the unauthorized acquisition of this information could be harmful to the concerned
individual. Such information is termed Sensitive information in SAP CPQ and its old and new values are not
logged in the system.

In order to flag data as sensitive, you need to make sure it is flagged as PII first since only PII data can be
sensitive. Some data is PII by default, but there is also data that needs to be flagged as PII manually. Refer to
this topic [page 744] to see which data is PII by default and which is not. To flag PII data as sensitive, activate
the Sensitive toggle switch while adding/editing SAP CPQ objects.

 Note

Passwords are by default flagged as sensitive.

SAP CPQ Setup and Administration Guide


Security PUBLIC 745
Although sensitive information values are not logged in the system, when changes occur on the sensitive data,
information such as the date of performed action, the name of the action performer and so on, is logged in the
Personal Data Log [page 745].

If the following objects are flagged as sensitive information, they will retain that flag after being sent and
deployed via Deploy / Send Changes [page 563]:

● Attributes (deployed as elements of other deployment package components: products, guided selling,
custom fields or CRM integrations)
● Quote Tables
● Custom tables
● Quote custom fields
● Quote item custom fields

14.2.3 View/Export Personally Identifiable Information

Personally identifiable information about SAP CPQ users and customers can be exported. If users/customers
prove that their identity is genuine, they can request extraction of personally identifiable information.

Prerequisites

Have data that you wish to extract flagged as PII.

Context

In SAP CPQ, User and Customer objects are by default flagged as PII. However, PII can also be located in other
objects, in which case they need to be flagged manually. To do this, select the Personally Identifiable
Information checkbox on each object individually. Unflagged data can’t be exported.

SAP CPQ Setup and Administration Guide


746 PUBLIC Security
 Note

Any data that was in the system before this functionality was created can’t be exported until it’s manually
flagged as PII.

To extract PII about users, follow these steps:

Procedure

1. Go to Setup Security View/Export PII .

A new page displays.


2. Select the Search Users option.
3. Start typing the name, username, or email address of the user.

A dropdown list with matching users displays.


4. Select a user.

A card with user details displays.

If there are multiple users with identical names, the data in the cards will help you distinguish between
them.
5. Click Filter Data.

The Search Filter popup displays.


6. Select the objects that will be filtered.

The available objects are:


○ Quotes
○ Quote Custom Fields
○ Quote Item Custom Fields
○ Quote Tables
○ User Custom Fields
○ Customer Custom Fields
○ Custom Tables
7. Click Apply.
8. Click Search Data.

To filter all objects, click Search Data right away, without manually filtering the objects.

Pills with object labels are displayed and all requested objects with user/customer PII are listed. If there’s
no PII in the requested objects, only their names and empty columns are displayed.
9. Select checkboxes for all data you wish to export.
10. Click either Export as .xlsx or Export as PDF.

The file is downloaded.

SAP CPQ Setup and Administration Guide


Security PUBLIC 747
Example

Next Steps

Extracting customer PII is done in a similar way. The only difference is that customers don’t have usernames,
so when you select the Search Customers button, you need to enter a customer’s full name or an email address
in the search field.

Each performed search for users’ or customers’ PII is tracked in Audit Trail Admin Actions .

14.2.3.1 View/Export PII Data Filter

After you click Search Data, pills with object labels you selected in the Search Filter are displayed, followed by
the requested objects with user/customer PII. Pills are used for data filtering.

By clicking X next to a pill with an object label, the corresponding object is hidden. The objects themselves
consist of PII sorted in columns listed in the following text. You can choose which columns you wish to export
by selecting/unselecting the adjacent checkboxes.

SAP CPQ Setup and Administration Guide


748 PUBLIC Security
Individual records can be unselected in all objects if they do not refer to the requested user/customer except in
quotes because quotes always refer to the user/customer in question. Only individual columns that belong to
the Quotes object can be unselected.

The following objects and details can be exported:

● Quotes
○ Quote Number
○ Quote Owner
○ Customer
○ Status
○ Date Created
○ Date Modified
● Quote Custom Fields
○ Custom Field Content
○ Custom Field Name
○ Quote Number
○ Quote Owner
○ Tab Name
● Quote Item Custom Fields
○ Custom Field Content
○ Custom Field Name
○ Custom Field Label
○ Quote Number
○ Product Name
○ Date Modified
● Quote Tables
○ Column Value
○ Table Label
○ Table Name
○ Column Name
○ Quote Number
○ Tab Name
○ Date Modified
● User Custom Fields
○ Custom Field Content
○ Custom Field Name
○ Custom Field Label
○ On User
● Customer Custom Fields
○ Custom Field Content
○ Custom Field Name
○ Custom Field Label
○ On Customer
● Custom Tables
○ Column Value

SAP CPQ Setup and Administration Guide


Security PUBLIC 749
○ Table Name
○ Column Name
○ Date Modified
○ Modified By

 Note

As of the 1905 release, the Modified By column for Custom Tables displays the name of the user who last
modified the custom table row in which user/customer data is found. However, in the previous releases the
Modified By column displayed the name of the user who last modified the entire custom table for the
custom tables created before 1905, as the system did not record changes on row-level.

14.2.3.2 Audit Trail and View/Export PII

This topic lists items logged in the Audit Trail regarding viewing and exporting personally identifiable
information.

● the name of the administrator who performed the search


● the username of the administrator who performed the search
● the name of the user/customer who was searched for
● the section in which the search was performed
● date and time of the search
● the name of the user who last modified each row in custom tables

14.3 WSDL Management and SSL Certificates

These features can be used together for establishing efficient and secure SOAP communication between two
different servers.

You can upload WSDL [page 752] files for interpreting secured SOAP messages sent from third-party web
services to SAP CPQ. These SOAP messages are secured with SSL certificates which are created with the
Certificate Management [page 751] feature. The same web service URL should be defined during the creation
of a certificate for secure communication with the server on which the service is installed, and WSDL which
describes the service.

Certificate Management [page 751]


On the Certificate Management page, you can create and manage certificates for securing SOAP
communication.

WSDL Management [page 752]


This feature gives administrators the ability to upload and store WSDL files in SAP CPQ.

SAP CPQ Setup and Administration Guide


750 PUBLIC Security
14.3.1 Certificate Management

On the Certificate Management page, you can create and manage certificates for securing SOAP
communication.

In the future releases, this feature will be used for managing all digital security certificates in SAP CPQ, except
the ones used for email protection, which is done in the DKIM Keys page.

The certificates are used for securing messages sent to the URL you have specified during certificate creation.
The SOAP messages are encrypted, and only those who have the appropriate keys can verify the received
SOAP message requests and access the information contained within the messages. In short, if the received
SOAP message is verified, messages can be exchanged between two endpoints securely.

 Note

SOAP communication can be secured in two directions – from SAP CPQ towards the client, and from the
client towards SAP CPQ.

14.3.1.1 Creating Certificates for Secure SOAP


Communication

To create a new certificate, go to Setup Security Certificate Management and click New Certificate.

Certificates can be added in several ways:

● Let SAP CPQ generate a certificate – Enter the certificate name, select the encryption type and key size.
This is the best option if you do not already have a certificate that can be used.
● Add a certificate manually - Paste the private key in the Private key (required) field and the certificate in the
Certificate (required) field. Enter the certificate password in the Password (required) field. For this option,
you first need to generate the certificate externally to be able to use it in SAP CPQ.
● Upload a certificate from a file – upload a PFX file containing a certificate by clicking Upload a PFX file. Enter
the password for the file in the Password (required) field.

 Note

The certificate must be installed on the client’s machine.

Regardless of the selected certificate creation method, the Purpose (required) dropdown and the SOAP URL
(required) field are required and common in all three cases.

In the Purpose (required) dropdown, you can choose between:

● Outbound SOAP Header Signing - secure SOAP communication from SAP CPQ towards clients
● Inbound SOAP Header Signing - secure SOAP communication from clients towards SAP CPQ

In the Service URL (required) field you need to provide the path to the secure gateway on which the service
(WSDL) is installed.

Once you have created a certificate and made it Active via the toggle switch, it will be used to secure all SOAP
communication exchanged between SAP CPQ and a client. Only one Outbound SOAP Header Signing
certificate can be made active per a service URL.

SAP CPQ Setup and Administration Guide


Security PUBLIC 751
 Note

Once a client uploads/generates a certificate in SAP CPQ and makes it active, the certificate will be used on
SAP CPQ side to verify all inbound SOAP messages from that client. Likewise, if the client is verifying a SAP
CPQ response of an inbound SOAP message, they need to use the matching certificate.

14.3.2 WSDL Management

This feature gives administrators the ability to upload and store WSDL files in SAP CPQ.

WSDL files are used for describing a SOAP-based web service and creating a link between two distinct servers.
In order to be used properly, WSDL files added to SAP CPQ need to be connected to a URL of the endpoint on
which the web service is installed.

To initialize the web service, you need to use the following method from scripting:

ws = WebServiceHelper.LoadImportedWsdlService(“Wsdl”,”UrlToService”)
ws.pathToWSDLServiceMethod()

Once you do this, the SAP CPQ scripting environment will create a proxy class which can perform
communication targeting the service URL.

14.3.2.1 Add a New WSDL

This topic contains the procedure for adding WSDL files.

Context

If you’re adding WSDLs of web services with which you’ve previously established secure SOAP communication
in Certificate Management, the service URL you provide when adding a WSDL file needs to be the same as the
service URL you provide during the creation of a certificate.

Procedure

1. Go to Setup Security WSDL Management .

A page for managing and adding WSDL files displays.


2. Click Add New WSDL.

A popup window displays.


3. In the Service URL (required) field, enter the path to the endpoint of the secure gateway on which the WSDL
file is installed.

SAP CPQ Setup and Administration Guide


752 PUBLIC Security
4. Click Upload new file to add a WSDL.

The file should be in .xml format.


5. Click Save WSDL.

Results

Once a WSDL file is added to SAP CPQ, it will provide the means of communication between SAP CPQ and the
server with which SOAP communication is performed.

14.4 Access Rights

Access Rights gives you an option to hide some of the Setup sections and entities or make them read-only to
individual administrators or permission groups.

It is customary for different administrators to manage different tasks in SAP CPQ, which means that they do
not require access to the sections outside their domain.

 Note

For now, the only options under Setup Sections that can be flagged as read-only are Users Users and
Product Catalog Custom Tables .

To gain access to this feature, you need to explicitly request it from the SAP CPQ Support Team. Once the
feature is implemented, only the administrator who requested it will have the option to assign access rights for
Setup sections and entities to other administrators.

Access Rights Settings

This tab offers administrators the option to select individual administrators or custom permission groups and
allow them to access certain Setup sections and Setup entities. These sections and entities are selected in the
Setup Sections and Setup Section Entities trees respectively.

All administrators will have access to all Setup sections until the Enable Access Rights toggle switch is enabled.

If administrators belong to two (or more) permission groups and one of them has read-only access rights for
either Users or Custom Tables in the Entries in Selected Sections column while the other permission group has
edit right for the same sections, the read-only access rights prevail by default. Even though the administrators
belong to both permission groups, they will only be able to view these entries.

This behavior can be altered with the toggle switch Editing rights will prevail when two or more permission
groups administrators belong to have both read-only and edit access rights to a particular Setup option. If the
toggle switch is active and administrators belong to at least one permission group that has edit access rights
for either Custom Tables or Users, the edit access rights will always prevail.

SAP CPQ Setup and Administration Guide


Security PUBLIC 753
14.4.1 Assign Access Rights for Setup Sections

You can assign access rights to other administrators and permission groups on a Setup section level.

Prerequisites

Be one of the Assign Access Rights Administrators [page 756].

Context

If you are a member of several permission groups, once access rights are enabled, you will automatically have
access to the union of sections and entities that your permission groups [page 154] have access to. If you have
access to overlapping sections with conflicting access rights, read-only rights will null full access rights.

 Note

Any administrators to whom no sections were assigned will only have access to Setup Home, System
Performance and Business Performance sections.

Procedure

1. Go to Setup Users Access Rights Access Rights Settings .

The page for the assignment of access rights displays.


2. Select or search for a permission group or an administrator to whom you wish to assign the rights in the
Permission Groups tree.

The Setup Sections tree expands.


3. Select setup sections and setup section options to which you wish to assign access rights in the Setup
Sections tree.

Once you select a setup section, all options under it will automatically be selected.
4. (Optional) Select the Show only selected checkbox to make only the setup sections you selected appear.
5. Activate the Enable Access Rights toggle switch.

Access rights are applied.


6. Click Save.

SAP CPQ Setup and Administration Guide


754 PUBLIC Security
14.4.2 Assign Access Rights for Setup Sections and Entities

You can assign access rights to other administrators and permission groups on a Setup section and section
entity level.

Context

If you are a member of several permission groups, once access rights are enabled, you will automatically have
access to the union of sections and entities that your permission groups [page 154] have access to. If you have
access to overlapping sections with conflicting access rights, read-only rights will null full access rights.

Procedure

1. Go to Setup Users Access Rights Access Rights Settings

The page for the assignment of access rights displays.


2. Select or search for a permission group or an administrator to which you wish to assign the rights in the
Permission Groups tree.

The Setup Sections tree expands.


3. Select Setup sections to which you wish to assign access rights in the Setup Sections tree.

The Setup Section Entities tree expands if you select the Pricing Catalog Custom Tables or
Import/Export Bulk Import/Export options.
4. Select the entities to which you wish to assign administrators’ rights.

Custom Tables entity by default has a Select All checkbox selected. Deselecting the checkbox makes a
search bar appear, which can be used for browsing custom tables.
5. Activate the Enable Access Rights toggle switch.

Access rights are applied.


6. Click Save.

SAP CPQ Setup and Administration Guide


Security PUBLIC 755
14.4.3 Assign Access Rights Administrators

This tab contains the Select Access Rights Administrators field in which you can state which administrators will
be able to use the Access Rights functionality. These administrators will be able to assign access rights to other
administrators and permission groups.

Procedure

1. Go to Setup Users Access Rights Access Rights Administrators .


2. (Optional) Start typing names, e-mails, or usernames of administrators you wish to find in the list.

The list of displayed administrators narrows down.


3. Select administrators who will be able to use the functionality.

Multiple administrators can be selected.


4. Click Save.

14.4.4 Access Rights and Custom Table Deployment

Access rights assigned to you have impact on your ability to deploy and send custom tables.

On source environments, you can:

● Create deployment packages containing custom tables if the visibility of those tables is enabled for you
with the Access Rights feature.
● Send packages containing those custom tables to target environments.

On target environments you can:

● Deploy packages containing custom tables only if you have editing rights for them.
● Create or update the existing custom tables from the package if you have editing access rights for custom
tables. To do this, the visibility of custom tables needs to be granted to you with the Access Rights feature.
If the package contains custom tables you can’t see, it can’t be deployed.

14.5 DKIM Support for Outbound Emails

The DomainKey Identified Mail (DKIM) authentication standard adds an encrypted digital signature to
outbound email messages sent on company’s behalf.

As a result, email recipients who have implemented DKIM on their side can be certain that messages really
come from SAP CPQ and have not been modified along the way.

SAP CPQ Setup and Administration Guide


756 PUBLIC Security
Setting up a DKIM Signature

To set up the functionality and generate a key, take the following steps:

1. Go to Setup Security DKIM Keys .


2. Enable the functionality.
3. Click New Key.
A pop-up displays.
4. In Selector, enter a unique name (e.g. Callidus).
The selector is added to the domain name and will be visible in the email header.
5. In Domain, enter the company’s domain name for which the DKIM key is generated.
6. From the Encryption drop-down list, select the signing algorithm.
RSA-SHA256 is selected by default.
7. Define how a certificate is generated.
8. ○ Let SAP CPQ generate a certificate - If selected, SAP CPQ generates a new certificate and a private key.
The length of each key is 2,048 bits.
○ Add a certificate manually - If selected, paste both the private and the certificate in the dedicated
fields. Additionally, enter the password for the private key in the corresponding field.
○ Upload a certificate from a file - If selected, upload a PFX file containing a private key and a certificate
by clicking Upload new file. Additionally, enter the password for unlocking the file in the corresponding
field.
9. Click Save Key.
The key is displayed in the grid.

 Note

There cannot be more than one DKIM key per domain.

The private key is not visible, whereas the public key of the defined DKIM key can be copied from the Public Key
column or downloaded as a .cer file. Additionally, the DKIM key can be edited by clicking the Edit button. The
selector, domain and encryption algorithm can all be edited, whereas the private/public key pair cannot be
modified. You can leave the existing key pair as is or generate a new pair, as explained in step 7.

The following conditions determine whether or not an email message has a DKIM signature:

● If the sender’s email is defined in Setup Application Parameters General Parameters Sender Email
Address and the DKIM signature has been set up for the sender’s email domain, the email is signed with
the DKIM signature set for the sender’s email domain.
● If neither the sender nor the From (user) email domain match any available DKIM settings, the email is not
signed.

Activating the DKIM Key and Updating the DNS

The newly created DKIM key is inactive by default, so you have to activate it by enabling the toggle switch in the
Active column. However, before activating the DKIM key, you need to add the public key to the DNS record.

SAP CPQ Setup and Administration Guide


Security PUBLIC 757
When adding the public key to the DNS, the format of the name of the TXT record is
selector._domainkey.domain.com, whereas the value in the TXT record is in the following format: v=DKIM1;
k=rsa; p=MIIBIjANBgkqhki…;

The value after p= is the public key.

14.5.1 Test DKIM Signature

To confirm that DKIM authentication is active, you can use both Gmail and Yahoo accounts.

Test DKIM Signature with Gmail Account

1. Send a message from your domain (e.g. [email protected]) to your Gmail email address.
2. Open the message in your Gmail inbox
3. Click the downward arrow next to the recipient’s name (in this case, your name) to view details.
A pop-up displays.
If there is signed-by: your domain, DKIM authentication is active.

Test DKIM Signature with Yahoo Account

1. Send a message from your domain to your Yahoo email address.


2. Open the message in your Yahoo inbox.
3. Next to Spam, click the elipsis icon.
4. Select View raw message.
A new tab opens, containing the full message, including the email header information. If there is dkim=pass
(ok) in the email header, DKIM authentication is active.

SAP CPQ Setup and Administration Guide


758 PUBLIC Security
15 Log and Developer Console

Although they are accessed on the user side of the application, the Log and the Developer Console can only be
accessed by administrators.

Log [page 759]


The Log allows SAP CPQ administrators to monitor Iron Python scripts and track all the data manually
logged from them.

Developer Console [page 760]


The Developer Console is a practical tool that allows tracing of scripts and business rules executed in
the production system. It allows you to analyze your actions in SAP CPQ easily, profile application
problems and locate potential bottlenecks.

15.1 Log

The Log allows SAP CPQ administrators to monitor Iron Python scripts and track all the data manually logged
from them.

Administrators can see all the errors that occur in the scripts, making it easier to fix them. Additionally, the
administrator is able to see if some formula that is part of approval rule fails during parse by the rule engine.

Example

Consider the following Iron Python (IP) script:

Log.Write(User.FirstName + " created a quote");


a = 5/0;

This script will run each time a new quote is created. It uses a log interface to log which user has created the
quote. It simulates the division by zero operation that triggers an exception. The script will break each time it’s
executed and the error will be logged. The administrator is able to see this log on the Log page along with all the
contextual data related to the creation of the quote, such as Date, Session ID, and so on.

 Note

You can track the status of email notifications in the log after enabling email notification logging in
General Application Parameters Shopping Cart and Quotes Use Additional Logging For Email
Notification . You can find more information on email notification logging on the Notifications [page 342]
page.

SAP CPQ Setup and Administration Guide


Log and Developer Console PUBLIC 759
15.2 Developer Console

The Developer Console is a practical tool that allows tracing of scripts and business rules executed in the
production system. It allows you to analyze your actions in SAP CPQ easily, profile application problems and
locate potential bottlenecks.

The Developer Console is accessible from the side menu, under the Setup menu item. The tool opens in a new
tab so you can work in SAP CPQ and track actions and traces in parallel. The console captures up to 10,000
traces per request (a request is a click in the application). When you first access it, the Developer Console is
empty until you start working in the application.

Example

If you need to track and analyze all actions that have been performed on a quote in SAP CPQ, click Developer
Console and the tool opens in a separate tab. Select the Full Mode checkbox. In the first tab, open the quote
whose actions you wish to analyze. If you go back to the Developer Console, you can see that all the actions you
performed on the quote from the moment you first opened the console are listed. Also, all future actions that
you’ll perform on the quote will also be recorded in the console.

Depending on the data you wish to track in the Developer Console, you can select/unselect these checkboxes:

● Trace - enable/disable tracing of all actions in SAP CPQ.


● Trace App Params - select to trace application parameters and their values. This is applicable only for
actions controlled by application parameters.
● Full Mode - select to view traces related to all actions performed in SAP CPQ. Otherwise, if you don’t select
the option, only traces that are related to products, rules and scripting are displayed. If you wish to switch
between the default and the full mode, you need to check/uncheck the Full Mode checkbox and repeat the
user action.
● Disable UI Customizations - select to disable any customization made to the template and branding and to
revert SAP CPQ to the default template and branding. The customization is disabled only during the
current session. This feature helps administrators during troubleshooting to establish if a UI issue is
caused by a broken customization.
All data tracked in the Developer Console is organized into Actions [page 761], Trace [page 762], and
Groups [page 763].

 Note

There’s a set of keyboard shortcuts you can use to easily navigate between actions and trace lines. Press
Shift + ? to open the list of shortcuts.

Actions [page 761]


The Developer Console refreshes as you perform actions in SAP CPQ, and new data is added to the list
of actions and traces.

Trace [page 762]


This section displays a detailed trace for every action recorded in the Developer Console. The data is
displayed chronologically, in the order that the actions had taken place.

Groups [page 763]

SAP CPQ Setup and Administration Guide


760 PUBLIC Log and Developer Console
The Groups section lists the main traces (high-level traces - Trace H) so you can expand them and have
a hierarchical overview of the underlying traces.

Debugging Examples [page 763]


This section describes some typical scenarios when you can use the Developer Console to debug your
SAP CPQ.

15.2.1 Actions

The Developer Console refreshes as you perform actions in SAP CPQ, and new data is added to the list of
actions and traces.

The tool lists only actions that you performed during the current session. A good practice is to clear the
Developer Console by clicking Clear, and then perform actions in the application. This way you’ll have a clearer
overview of the data related only to a particular action.

The list of tracked actions is displayed in the header of the Developer Console. To collapse/expand the section,
click Hide actions and Show actions, respectively. All listed actions have time stamps, duration in seconds and
available actions (view, download, and performance). If an error occurs, the action's information is displayed
within the table with red background that indicates that the action is somehow erroneous. To see details of an
action, click on the action's row, and all the details will be displayed within Trace.

Performance Details

The Performance details dialog box provides a more detailed overview of the performance of a particular action.

To view performance details of an action, click next to the action.

Example

For the GetInitData action, the Performance details dialog box displays details for logs labeled Quote Parser.

SAP CPQ Setup and Administration Guide


Log and Developer Console PUBLIC 761
Tags used for the quote in question are logged for Quote Parser. For logs labeled Quote Parser, the Performance
details table displays the following information:

● Name - The name of the log.


● Count - The number of logs labeled Quote Parser whose duration is greater than 0.
● Average Time(s) - The average duration (in seconds) of logs labeled Quote Parser.
● Slowest Time(s) - The slowest duration (in seconds) of logs labeled Quote Parser.
● Total Time(s) - The total duration (in seconds) of logs labeled Quote Parser. The percentage shown in
brackets represents the total duration of logs labeled Quote Parser compared to the total duration of the
action in question.

15.2.2 Trace

This section displays a detailed trace for every action recorded in the Developer Console. The data is displayed
chronologically, in the order that the actions had taken place.

You can filter the trace by:

● Message - detailed description of the trace. If you select Negative Filter and enter a search term, the system
displays only the lines that don’t contain that term in the description. This field also allows filtering support
for special search characters: question marks and asterisks. The question mark replaces one character
and the asterisk replaces any character and any number of characters.
● Logger - the class from which the method was initiated.
● Level - Trace H are high-level traces and Trace L are low-level traces.
● Labels - a label describing the trace (such as Scripting, QuoteParser, or DatabaseQuery).
● duration (ms) - the time needed for the method to execute.
● from parent (ms) - the time needed for the parent method to trigger the current method.

If you want to focus on one trace line, enter a search term in a column to find the trace and select the line. If you
remove the search term, the line remains selected and all other trace lines are displayed again. If you want to
rearrange actions to view the slowest actions first, click Slowest first in the duration (ms) column. This
rearranges the trace lines so that the slowest actions are displayed on top. You can click the action you’re
interested in and unselect the Slowest first checkbox, and the selected trace line remains selected, allowing you
to see the context in which the action was executed. Logs that show up when scripts attached to events are
triggered are labeled ScriptEvent. All other scripts have the Script label.

 Note

Formula errors are logged in the Trace section with the log level Error and the label Formula Error.

To view more trace details, click .

 Note

The flag ITrace.IsOn, which is available in scripting, indicates whether tracing is turned on or off. With
the help of this flag, users can organize the logic that is related to tracing and, that way, optimize script
execution time.

SAP CPQ Setup and Administration Guide


762 PUBLIC Log and Developer Console
Breadcrumbs and Pin

When you’re analyzing your trace lines, you can use the breadcrumbs to check how you arrived to the line and
view actions that occurred. In the trace list, click . Other traces are removed from the list, so that only the
pinned trace and its children traces are displayed, and the breadcrumbs display above the list. By pinning, you
can isolate a group of traces within one action and focus on analyzing them. Using this feature affects groups
on the left-hand side. Clicking the same icon removes the breadcrumbs and all data is displayed in Trace. If you
select a particular group, only the content of that group is displayed. Doing so is useful when you have
extensive data.

15.2.3 Groups
The Groups section lists the main traces (high-level traces - Trace H) so you can expand them and have a
hierarchical overview of the underlying traces.

You can filter groups by entering a keyword. The filter can also be negative (for example, you can choose to view
all the traced lines that don’t contain a particular word, such as clone, for example). The feature also enables
filtering support for characters, asterisks, and question marks. The question mark replaces one character and
the asterisk replaces any character and any number of characters.

15.2.4 Debugging Examples


This section describes some typical scenarios when you can use the Developer Console to debug your SAP
CPQ.

Retracing and Debugging Iron Python Scripts

This feature is explained through a simple example script:

a = 0;
Trace.Write("a is initialized.")
a = 100;
Trace.Write("a is changed.")

This script initializes the variable a, traces the variable, and later updates the value of the variable to 100 and
traces it once again. When the script gets executed (for example, after the quote has been changed), the
Developer Console logs two trace messages and displays them.

SAP CPQ Setup and Administration Guide


Log and Developer Console PUBLIC 763
Scripts have an interface for writing the trace and the log using Trace.Write and log.Write. Log data is
visible in the Log [page 759] and this interface can be used to log information that is useful for monitoring while
the trace interface should be used for debugging data. It’s important not to overuse the log feature because
your log form will end up full of data that may not be useful. Also, if you log too much, you’ll slow down your
scripts because logs are much slower to process than the trace. Ultimately, unlike the trace, the log is
persistent, which makes it useful for monitoring and analysis, but it’s preferable to use the trace interface
instead of the log whenever that is possible.

 Note

When you set your script to be a post action for Generate Documents, make sure to use Log.Write to log
your data and any messages. Avoid using Trace.Write since it doesn’t get recorded in the Developer
Console. This only applies to the Generate Documents action.

Tracking Attribute Changes During Rule Execution Loops

Tracking attribute changes during rule execution loops can help you understand why the system is maybe
slower than usual. For example, if your product rules overlap, SAP CPQ takes longer to execute the rules. For
example, the product Network cable has two rules attached to it: if Category 6 is selected, the cable length
is set to 100 meters and if the length of the cable is over 100 meters, then the Category 6 must be selected. If
users first set the cable length to 110 meters, then both rules are executed. The first rule sets the cable
category to Category 6 and the second rule sets the cable length as a result of the Category 6 setting (100
meters). In scenarios like this, rules are always going to be performed in two loops, because the two rules
correlate. The Developer Console records execution of rules, and displays a message that describes why the
system is running slower.

SAP CPQ Setup and Administration Guide


764 PUBLIC Log and Developer Console
Important Disclaimers and Legal Information

Hyperlinks
Some links are classified by an icon and/or a mouseover text. These links provide additional information.
About the icons:

● Links with the icon : You are entering a Web site that is not hosted by SAP. By using such links, you agree (unless expressly stated otherwise in your
agreements with SAP) to this:

● The content of the linked-to site is not SAP documentation. You may not infer any product claims against SAP based on this information.
● SAP does not agree or disagree with the content on the linked-to site, nor does SAP warrant the availability and correctness. SAP shall not be liable for any
damages caused by the use of such content unless damages have been caused by SAP's gross negligence or willful misconduct.

● Links with the icon : You are leaving the documentation for that particular SAP product or service and are entering a SAP-hosted Web site. By using such
links, you agree that (unless expressly stated otherwise in your agreements with SAP) you may not infer any product claims against SAP based on this
information.

Beta and Other Experimental Features


Experimental features are not part of the officially delivered scope that SAP guarantees for future releases. This means that experimental features may be changed by
SAP at any time for any reason without notice. Experimental features are not for productive use. You may not demonstrate, test, examine, evaluate or otherwise use
the experimental features in a live operating environment or with data that has not been sufficiently backed up.
The purpose of experimental features is to get feedback early on, allowing customers and partners to influence the future product accordingly. By providing your
feedback (e.g. in the SAP Community), you accept that intellectual property rights of the contributions or derivative works shall remain the exclusive property of SAP.

Example Code
Any software coding and/or code snippets are examples. They are not for productive use. The example code is only intended to better explain and visualize the syntax
and phrasing rules. SAP does not warrant the correctness and completeness of the example code. SAP shall not be liable for errors or damages caused by the use of
example code unless damages have been caused by SAP's gross negligence or willful misconduct.

Gender-Related Language
We try not to use gender-specific word forms and formulations. As appropriate for context and readability, SAP may use masculine word forms to refer to all genders.

Videos Hosted on External Platforms


Some videos may point to third-party video hosting platforms. SAP cannot guarantee the future availability of videos stored on these platforms. Furthermore, any
advertisements or other content hosted on these platforms (for example, suggested videos or by navigating to other videos hosted on the same site), are not within
the control or responsibility of SAP.

SAP CPQ Setup and Administration Guide


Important Disclaimers and Legal Information PUBLIC 765
www.sap.com/contactsap

© 2020 SAP SE or an SAP affiliate company. All rights reserved.

No part of this publication may be reproduced or transmitted in any form


or for any purpose without the express permission of SAP SE or an SAP
affiliate company. The information contained herein may be changed
without prior notice.

Some software products marketed by SAP SE and its distributors


contain proprietary software components of other software vendors.
National product specifications may vary.

These materials are provided by SAP SE or an SAP affiliate company for


informational purposes only, without representation or warranty of any
kind, and SAP or its affiliated companies shall not be liable for errors or
omissions with respect to the materials. The only warranties for SAP or
SAP affiliate company products and services are those that are set forth
in the express warranty statements accompanying such products and
services, if any. Nothing herein should be construed as constituting an
additional warranty.

SAP and other SAP products and services mentioned herein as well as
their respective logos are trademarks or registered trademarks of SAP
SE (or an SAP affiliate company) in Germany and other countries. All
other product and service names mentioned are the trademarks of their
respective companies.

Please see https://www.sap.com/about/legal/trademark.html for


additional trademark information and notices.

THE BEST RUN

You might also like