SAP CPQ API Documentation - SAP Help Portal

464
API Reference | PUBLIC Document Version: 1.0.0 – 2022-05-16 SAP CPQ API Documentation © 2022 SAP SE or an SAP affiliate company. All rights reserved. THE BEST RUN

Transcript of SAP CPQ API Documentation - SAP Help Portal

API Reference | PUBLICDocument Version: 1.0.0 – 2022-05-16

SAP CPQ API Documentation

© 2

022

SAP

SE o

r an

SAP affi

liate

com

pany

. All r

ight

s re

serv

ed.

THE BEST RUN

Content

1 SAP CPQ API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1 Simple Product Administration SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Input and Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11Input XML Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Input XML Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Output XML Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Output XML Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31PRODUCT ADMINISTRATION - Input XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31PRODUCT ADMINISTRATION WEB METHOD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Sorting and Ranking Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

2.2 Customer Administration SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Customer Administration-Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68Customer Administration - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Customer Administration Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73Customer Administration Execution Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Customer Searching Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Customer Updating Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76Input XML Schema - Customer Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Output XML Schema - Customer Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78

2.3 User Administration SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80User Administration - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80User Administration - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Function Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83General Deserialization Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Input XML Scheme - User Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85Output XML Scheme - User Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Managing User Custom Fields via API Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87User administration API XML Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88XML Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93

2.4 ImportMaterialsFromERP SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932.5 Company Administration SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

Company Administration - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Company Administration - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96Input XML Schema - Company Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

2 PUBLICSAP CPQ API Documentation

Content

Output XML Schema - Company Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972.6 Link Opportunity SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

Link Opportunity - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98Link Opportunity - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Input XML Schema - Link Opportunity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Output XML Schema - Link Opportunity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

2.7 Custom Table Administration SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101Create Table Input XML Schema - AUX Table Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . 101Create Table Output XML Schema - AUX Table Administration. . . . . . . . . . . . . . . . . . . . . . . . . 102Custom Table Administration - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Custom Table Administration Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Custom Table Administration Execution Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Custom Table Searching Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Custom Table Web Method - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Export Rows Input XML Schema - AUX Table Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . 115Export Rows Output XML Schema - AUX Table Administration. . . . . . . . . . . . . . . . . . . . . . . . . 115Insert Update Upsert Delete Input Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Insert Update Upsert Delete Output Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

2.8 Get Catalogue Data SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119Output XML Schema - Get Catalogue Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Get Catalogue Data - Input and Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

2.9 Get Quote Data SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Get Quote Data - Input and Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Result XML Examples, List No. 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155Output XML Schema - Get Quote Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

2.10 Get Quote Items Attributes SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294Get Quote Items Attributes - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295Get Quote Items Attributes - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295Output XML Schema - Get Quote Items Attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

2.11 New Quote from Salesforce SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298New Quote from SalesForce - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

2.12 Request for Quotation SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304Input XML Schema - Request for Quotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304Output XML Schema - Request for Quotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306Request for Quotation - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307Request for Quotation - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310Result XML Examples - Request for Quotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

2.13 Search Quotes SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

SAP CPQ API DocumentationContent PUBLIC 3

2.14 Search Quotes from SF SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3142.15 New Quote SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316

New Quote - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317New Quote - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327New Quote Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329New Quote - Execution Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334Input XML Schema - New Quote. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335Output XML Schema - New Quote. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337Login after API Quote Creation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

2.16 Place Order SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339Place Order - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339Place Order - Execution Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340XML Schema - Place Order. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

2.17 Validate Catalogue Codes SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340Validate Catalogue Codes - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341Validate Catalogue Codes – Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342Input XML Scheme - Validate Catalogue Codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342Output XML Scheme - Validate Catalogue Codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

2.18 Get Cart Properties SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343Get Cart Properties - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Get Cart Properties – Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345Output XML Schema - Get Cart Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

2.19 Get Cart Actions SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347Get Action List – Output parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347Get Action List - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348Output XML Schema - Get Action List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348

2.20 Perform Cart Action SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349Perform Cart Action - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349Perform Cart Action – Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352Input XML Schema - Perform Cart Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Output XML Schema - Perform Cart Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

2.21 Add Items Data SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355Add Items Data - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355Input XML Schema - Add Items Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358Output XML Schema - Add Items Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359

2.22 Perform Quote Action SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359

4 PUBLICSAP CPQ API Documentation

Content

Perform Quote Action – Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360Perform Quote Action – Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361Input XML Schema - Perform Quote Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .361Output XML Schema - Perform Quote Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

2.23 Perform Quote Action From SF SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362Perform Quote Action From SF – Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362Perform Quote Action From SF – Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364Result XML Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .364Input XML Schema - Perform Quote Action From SF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365Output XML Schema - Perform Quote Action From SF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

2.24 Set Cart Properties SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366Set Cart Properties - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366Set Cart Properties - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367Input XML Schema - Set Cart Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367Output XML Schema - Set Cart Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

2.25 Set Cart Properties For Every Quote In Opportunity SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . .368Set Cart Properties For Every Quote In Opportunity - Input Parameters. . . . . . . . . . . . . . . . . . . 369Set Cart Properties For Every Quote In Opportunity - Output Parameters. . . . . . . . . . . . . . . . . .370Input XML Schema - Set Cart Properties For Every Quote In Opportunity. . . . . . . . . . . . . . . . . .370

2.26 Set Cart Item Properties SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370Set Cart Item Properties - Result XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .371Set Cart Item Properties - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

2.27 Create New Quote and Get Quote Data SOAP API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .373Create New Quote and Get Quote Data - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . .373Create New Quote and Get Quote Data - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . 376

2.28 SOAP API Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3762.29 SOAP API Error Codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3772.30 Pricing API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

DELETE PRICEBOOK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385INSERT PRICEBOOK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389UPDATE PRICEBOOK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392Pricing Table Administration Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .395Pricing Table Web Method - Input Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .396Input XML Example for INSERTROWS action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397Input XML Example for UPDATEROWS Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397Input XML Example for DELETEROWS Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398Input XML Example for EXPORTROWS action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .398Input XML Schema - DELETE ROWS action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399Input XML Schema - EXPORT ROWS action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399INPUT XML Schema - INSERT ROW Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

SAP CPQ API DocumentationContent PUBLIC 5

INPUT XML Schema - UPDATE ROW action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401OUTPUT XML Example - UPDATE ROWS action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .401Output XML Schema - INSERT ROWS action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402Output XML Schema - UPDATE ROWS action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402Pricing Table Administration - Output Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .403Upsert API Method for Pricebook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405Upsert Pricebook With Distribution Chain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

2.31 DoYouSeeMe API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410XML Example - DoYouSeeMe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .410XML Schema - DoYouSeeMe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411

3 XWS (EXTERNAL WEB SERVICE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

4 Invalid XML Characters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .413

5 API Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

6 External Webservices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4166.1 UPS Shipping Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

7 REST API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4197.1 REST API Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

Bearer Token API Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421JWT Bearer Token API Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425Stateful API Authentication (authentication with cookies). . . . . . . . . . . . . . . . . . . . . . . . . . . . 427Basic API Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

7.2 Script API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431Global Scripts API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431Custom Actions API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433Custom Calculations API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434Product-Level Scripts API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435Responsive Design Templates API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .438Continuous Integration/Continuous Delivery (CI/CD) Process in SAP CPQ – Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

7.3 SCIM API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4417.4 Configurations API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4447.5 Custom Table API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4477.6 Rate Plans API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

Rate Plans Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4477.7 REST API for Updating Ship To, Bill To and End User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4487.8 API for Content Upload. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

Requests and Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4507.9 REST API Error Codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454

6 PUBLICSAP CPQ API Documentation

Content

7.10 Custom API (Global Scripts Consumed as REST API Web Services). . . . . . . . . . . . . . . . . . . . . . . . 457Custom API Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458Consume IronPython Global Scripts as REST API Webservices. . . . . . . . . . . . . . . . . . . . . . . . .459

7.11 User Interface API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

SAP CPQ API DocumentationContent PUBLIC 7

1 SAP CPQ API

External applications can call API methods in SAP CPQ to automate processes and avoid the need for manually entering information.

With API you can update quotes, execute quote actions, create customers or business partners, update users and so on. For example, if a company uses a separate application to process shipping information after an order has been placed, SAP CPQ API can be used to update a quote with shipping information, such as a tracking number, tracking URL, estimated shipping date, and so on.

SAP CPQ uses SOAP, User Interface and REST APIs for communication with external systems. In scenarios when communication can be established with all of the aforementioned APIs, opt for the REST API, if possible, as it complies with SAP guidelines and standards.

SAP CPQ APIs are described in three platforms, as stated below:

● REST APIs have a separate set of documentation , although some of them are described in this guide [page 419] as well.

● Custom table APIs are described in a separate set of documentation● API packages are described in the SAP API Business Hub:

○ The next generation SAP Configure Price Quote APIs used for the Quote 2.0 engine○ Get standard and subscription billing products○ APIs used for creation and synchronization of business partners and partner functions

● SOAP APIs are described in the sections of this guide.

Related Information

REST API Authentication [page 420]API Example [page 414]

8 PUBLICSAP CPQ API Documentation

SAP CPQ API

2 SOAP API

SOAP API messages are in the XML format and are typically sent over the HTTPS protocol. You can use this API to create, retrieve, update or delete system and custom entities in SAP CPQ.

With SOAP API, you can:

● Create, manage or delete products [page 10]● Create, manage or delete customers [page 67]● Create, manage or delete users [page 80]● Import materials from back-end applications like SAP ERP and SAP S/4HANA [page 93]● Create, manage or delete companies [page 94]● Link an SAP CPQ quote to a CRM opportunity [page 98]● Create, manage or delete custom tables [page 101]● Retrieve a hierarchical overview of the catalog [page 119]● Retrieve general quote data (main/line items, actions, key attributes, product types, promo codes,

additional discounts, markets, shippings, customer data and custom fields) [page 155]● Retrieve attributes from the specified quote [page 294]● Create a quote while the Salesforce session is established [page 298]● Create a new quote in the context of the SAP Commerce Cloud Integration with Variant Configuration

configurable products [page 304]● Retrieve quotes from SAP CPQ based on the provided search criteria [page 314]● Retrieve quotes from SAP CPQ based on the provided search criteria [page 314] (authentication is

performed with the session ID and API URL received from the Salesforce)● Create a quote, billing info, shipping info, end user info, quote properties, and set attributes [page 316]● Create a quote, billing info, shipping info, end user info, quote properties, calculate the shipping method,

and execute the Place Order action [page 339]● Execute reverse search on the supplied part numbers [page 340]● Retrieve values for the specified quote properties [page 343]● Retrieve the available actions for the specified quote and username, based on the quote's status [page

347]● Perform a workflow action [page 349]● Add/update quote/order items data [page 355]● Perform any action on a quote [page 359]● Perform any action on a quote in Salesforce [page 362]● Set up or update custom fields on a quote [page 366]● Set up or update custom fields for every quote in the opportunity [page 368]● Update the value of custom fields on quote items [page 370]● Create a new quote and retrieve quote details [page 373]● Test whether the credentials you're using in the API call form an external system are valid [page 410]● Create, delete or modify pricebooks [page 385]

SAP CPQ API DocumentationSOAP API PUBLIC 9

SOAP API consumers need to be authenticated before they can access and modify the data in SAP CPQ. Once you establish authentication with a SOAP envelope containing your credentials [page 376], you don't need to authenticate yourself again in any of the subsequent API calls.

2.1 Simple Product Administration SOAP API

Function name: SimpleProductAdministration

Authentication: SOAP API authentication [page 376]

Function description: The SimpleProductAdministration function can be used to:

● Add Simple Products● Delete Simple Products● Update Simple Product information● Add/Update/Delete product data in multiple languages● Make Simple Products Active / Inactive

List of Action values for this function:

● ADDORUPDATE● DELETE● GETLANGUAGES

NoteGETLANGUAGES functions should be called before using ADDORUPDATE in order to receive a list of valid languages for current SAP CPQ installation.

The SAP CPQ Simple Product Administration SOAP API also supports additional values other than simple products:

● Configurable● System● Collection● Parent/Child

Click here [page 44] to access the page about these values.

The Simple Product Administration API supports the Variant Pricing mechanism, which is available when SAP CPQ is integrated with SAP Variant Configuration and Pricing. When the integration is enabled, Variant Pricing can be set via the PricingMechanism node for products that are flagged as isSyncedFromBackOffice.

NotePayloads created before the 2111 release of SAP CPQ (November 2021) contain the IsSapProduct flag instead of isSyncedFromBackOffice. Although the system is adapted to accept both flags, all payloads created after the 2111 release should contain the isSyncedFromBackOffice flag only.

10 PUBLICSAP CPQ API Documentation

SOAP API

The following is an example of the payload containing the Variant Pricing value:

<Products> <Product> <ProductSystemId>3569874648523</ProductSystemId> <PartNumber>DA353LNAL00</PartNumber> <ProductName> <USEnglish><![CDATA[Robot Arm]]></USEnglish> </ProductName> <ProductType>Hardware</ProductType> <Categories> <USEnglish><![CDATA[Battle Machinery]]></USEnglish> </Categories> <PricingMechanism>Variant Pricing</PricingMechanism> <isSyncedFromBackOffice>True</isSyncedFromBackOffice> </Product> </Products>

During product and attribute update with this method, if the RefProduct node is used to create a reference to an attribute value from a product, the new value with the same name and a different ID is created and referenced to a product. This change is visible if the attribute is accessed from the product Attributes tab, but not from Product Catalog Attributes .

If the Simple Product Administration API is used for creating a product and an attribute, and an attribute value which references a product with the RefProduct node is added, the created values are referenced. This is visible if the attribute is accessed from the product Attributes tab, but not from Product CatalogAttributes .

Input and Output Parameters [page 11]

Input XML Example [page 12]

Input XML Schema [page 25]

Output XML Example [page 30]

Output XML Schema [page 31]

PRODUCT ADMINISTRATION - Input XML Examples [page 31]

PRODUCT ADMINISTRATION WEB METHOD [page 44]

Sorting and Ranking Attributes [page 63]

2.1.1 Input and Output Parameters

Simple Product Administration - Input parameters:

Tag Data Type Description Required Comments

Username String Only SAP CPQ admin users can execute this function. SAP CPQ user is defined in SAP CPQ admin.

Yes SAP CPQ admin user name

SAP CPQ API DocumentationSOAP API PUBLIC 11

Tag Data Type Description Required Comments

Password String Only SAP CPQ admin users can execute this function. Password is defined in SAP CPQ admin.

Yes SAP CPQ admin pass­word for the admin user name provided in the username element

Action String Action that will be exe­cuted.

Yes ADDORUPDATE or DE­LETE or GETLAN­GUAGES

Input XML Object passing Prod­ucts data

Yes (ADDORUPDATE/DELETE)

XML formatted data for ADDORUPDATE or DELETE actions

Input XML can be logged to Event Log. By default, this logging is turned off. Internal application parameter: ProductWebserviceLogXMLOnRequest controls whether input XML is logged to Event Log.

Simple Product Administration – Output parameters:

Tag Data Type Description Required Comments

Result XML Output result Yes Result is an XML for­matted string.

Related Information

SOAP API Authentication [page 376]

2.1.2 Input XML Example

NoteIMPORTANT! To get valid DefaultLanguage and OtherLanguage in this example, call the SimpleProductAdministration method with GETLANGUAGES action parameter. Import will fail if DefaultLanguage is not present in the current CPQ installation

When updating products, system first looks what's in <Identificator> node. If it contains “PartNumber”, product would be searched based on provided part number (provided in node <PartNumber>). If it contains “ProductName”, product will be searched based on provided product name (provided in node <ProductName>). It can also contain “PriceCode” which should be used in combination with “PartNumber”. Performed search by <Identificator> node can return more than one product so multiple products can be updated with same data.

If it contains anything else, product will be searched by CPQ ID provided in node <CPQProductID> Product search is performed by whatever the Identificator column suggests, and if that fails, a search is performed by CPQProductID (if supplied). If no products are found, new product will be created.

12 PUBLICSAP CPQ API Documentation

SOAP API

Note on categories: If a product belongs to more than one category, split the categories using ”;” character, for example, Software;Services;Old;…

If you need to specify product hierarchy, use the ”>” character. For example, if you want to put the product to category “Hardware” which belongs to category “Products” which belongs to category “Everything”, you would use the following for the Categories node:Everything>Products>Hardware

Additionally, if you define a preselected category, which determines where products are placed in SAP CPQ catalog, products will be added to the preselected category only when PreselectInCPQ=true in the Categories node.

If used, <UserCanEnterQuantity> node should have 1 or 0 set.

<PricingMechanism> node can be set to: 'Pricebook Lookup' or 'Custom Pricing'.

Date format for <StartDate> and <EndDate> nodes should be MM/DD/YY or MM/DD/YYYY (e.g.<StartDate>1/31/2010</StartDate>)

NoteRequired product fields are: ProductName, Categories and ProductType

Other fields are not required (XML may not contain them). Default values for other fields are:

<DisplayType>,

xPATH: //Products/Product/DisplayType

● Supported values: “Simple”,”Configurable”,”System”,”Collection”,”Parent_child”● If node is not present in the XML file, or is present and does not have a value, default display type will be

“Simple product”

SkipCategoriesOnProductUpdate

● Default Value (if attribute is missing) : false

SkipPermissionsOnProductUpdate

● Default Value (if attribute is missing) : false

Identificator

● Default Value (if node is missing) : PartNumber

ShippingCosts

● Default Value (if node is missing) : Empty

Permissions

● Default Value (if node is missing) : Visible to all● If Permissions node is present in XML and it is empty, product will not be visible to any permission group

CPQProductId

● When product is being created, this node is not required. If any value is sent through this node, it will be ignored

Part number

● Default Value (if node is missing) : Empty

SAP CPQ API DocumentationSOAP API PUBLIC 13

UPC

● Default Value (if node is missing) : Empty

MPN

● Default Value (if node is missing) : Empty

ProductFamilyCode

● Default Value (if node is missing) : Empty

RecurringPriceFormula

● Default Value (if node is missing) : Empty

RecurringCostFormula

● Default Value (if node is missing) : Empty

Inventory

● Default Value (if node is missing) : Empty

LeadTime

● Default Value (if node is missing) : Empty

ProductVersion

● Default Value (if node is missing) : 1

ExternalId

● Default Value (if node is missing) : Empty

Active

● Default Value (if node is missing) : TRUE

isSyncedFromBackOffice

● Default Value (if node is missing) : FALSE● Defines whether a product is imported from SAP

Weight

● Default Value (if node is missing) : Empty

Image

● Default Value (if node is missing) : Empty

StartDate

● Default Value (if node is missing) : Empty

EndDate

● Default Value (if node is missing) : Empty

UserCanEnterQuantity

● Default Value (if node is missing) : Empty

UnitOfMeasure

14 PUBLICSAP CPQ API Documentation

SOAP API

● Default Value (if node is missing) : Empty● A three-character ISO code

PricingMechanism

● Default Value (if node is missing) : Value of application parameter ‘As default source for product and attribute prices use’ (found in Setup → Pricing/Calculations → Pricebooks)

PricingCode

● Default Value (if node is missing) : Empty

BaseRecurringPrice

● Default Value (if node is missing) : Empty

Price

● Default Value (if node is missing) : Empty

PriceFormula

● Default Value (if node is missing) : Empty

CostFormula

● Default Value (if node is missing) : Empty

Description

● Default Value (if node is missing) : Empty

LongDescription

● Default Value (if node is missing) : Empty

CartDescription

● Default Value (if node is missing) : Empty

Attributes

● Default Value (if node is missing) : Empty

<Type> - Set attribute type

xPATH: //Products/Product/Attributes/Attribute/AttributeType

● Supported values: “UserSelection”,”Date”,”String”,”Number”,”Att.Quantity”,”AttValue.Quantity”,”ExternalValue”,”UnitsOfMeasurement”,”Container”

● If node is not present in the XML file, or is present and does not have a value, default display type will be “User selection”

● Attribute type container cannot be created over API call but system will be able to add an attribute type container to a product if that attribute already exists within CPQ

<DisplayType> - Set attribute display type

xPATH: //Products/Product/Attributes/Attribute/DisplayType

● Supported values: “Button”,”CheckBox”,”DisplayOnlyText”,”DropDown”,”FileAttachment”,”Freeinput_No_Matching”,”HiddenCal

SAP CPQ API DocumentationSOAP API PUBLIC 15

culated_No_Matching”,”FreeForm_ExactMatch_w_OtherwiseOption”,”FreeForm_ExactMatch”,”FreeForm_MatchLower”,”FreeForm_MatchUpper”,”FreeForm_SetMatchLower”,”FreeForm_SetMatchUpper”

● If node is not present in the XML file, or is present and does not have a value, default display type will be “Drop Down”

● Attrinute Display type Custom control is not supported on API call● Attribute Display type Container is supported only by Container attribute type.● Attribute type container cannot be created over API call but system will be able to add an attribute type

container to a product if that attribute already exists within CPQ● Not all display types are supported with all attribute types. Also, not all display types support having

multiple attribute values.

Next table contains more information on this topic.

Attribute display type sup­ported Supported Attribute type(s) Number of attribute values

Error message(s) in case when certain attribute dis­play type is not align with attribute type/number of values

Button User selection, Att­Value.Quantity, Att­Value.Quantity

One Display type “Button” is not supported with requested at­tribute type\\“Button” must have exactly one value

CheckBox User selection, Att.Quantity, AttValue.Quantity, UnitsOf­Measurement

Multiselection Display type “Check Box” is not supported with re­quested attribute type

DisplayOnlyText All One “Display only text” must have exactly one value

DropDown User selection, Att­Value.Quantity, Att­Value.Quantity, UnitsOfMea­surement

many Display type “Drop down” is not supported with re­quested attribute type

FileAttachment All One “File Attachment” must have exactly one value

FreeInput_No_Matching All One “Free input, no matching” must have exactly one value

HiddenCalculated_No_ Matching

All One “Hidden calculated no matching” must have exactly one value

16 PUBLICSAP CPQ API Documentation

SOAP API

Attribute display type sup­ported Supported Attribute type(s) Number of attribute values

Error message(s) in case when certain attribute dis­play type is not align with attribute type/number of values

-FreeForm_Exact­Match_w_OtherwiseOption

-FreeForm_ExactMatch

-FreeForm_MatchLower

-FreeForm_MatchUpper

-FreeForm_SetMatchLower

-FreeForm_SetMatchUpper

User selection, Att­Value.Quantity, Att­Value.Quantity

One Display type “Free Form ex­act match w. otherwise op­tion” is not supported with requested attribute type \\“Free Form exact match w. otherwise option” must have exactly one value

Display type “Free Form , Ex­act Match” is not supported with requested attribute type

“Free Form , Exact Match” must have exactly one value

Display type “Free Form , Match lower” is not sup­ported with requested attrib­ute type

“Free Form , Match lower” must have exactly one value

Display type “Free Form , Match upper” is not sup­ported with requested attrib­ute type

“Free Form , Match upper” must have exactly one value

Display type “Free Form , Set Match lower” is not sup­ported with requested attrib­ute type

“Free Form , Set Match lower” must have exactly one value

Display type “Free Form , Set Match upper” is not sup­ported with requested attrib­ute type

“Free Form , Set Match up­per” must have exactly one value

SAP CPQ API DocumentationSOAP API PUBLIC 17

Attribute display type sup­ported Supported Attribute type(s) Number of attribute values

Error message(s) in case when certain attribute dis­play type is not align with attribute type/number of values

ImageButton User selection, Att­Value.Quantity, Att­Value.Quantity

One Display type “Image Button” is not supported with re­quested attribute type

“Image button” must have exactly one value

ListBox_MultiSelect User selection, Att­Value.Quantity, Att­Value.Quantity

many Display type “List box multi selection” is not supported with requested attribute type

ListBox User selection, Att­Value.Quantity, Att­Value.Quantity

many Display type “List box” is not supported with requested at­tribute type

RadioButton User selection, Att­Value.Quantity, Att­Value.Quantity, UnitsOfMea­surement

many Display type “Radio button” is not supported with re­quested attribute type

Container Container no values Display type “Container” is not supported with re­quested attribute type

Display type “Container” does not support new values

<MeasurementType> - Set measurement type to the attribute

xPATH: //Products/Product/Attributes/Attribute/MeasurementType

● This node is required if Attribute type is UnitsOfMeasurement

<Rank> - Set the rank within attribute values

xPATH: //Products/Product/Attributes/Attribute/Values/Value/Rank

● Supported values: integer● This node is optional. If node is not present or it is empty, system will assign rank value in order the values

are sent: 10, 20, 30…

<LineItem> - Set the product attribute as line item

xPATH: //Products/Product/Attributes/Attribute/LineItem

● Supported values: 1 for Yes, 0 for No.● This node is optional.

<LineItemDescription> - Set Description on line item

xPATH: //Products/Product/Attributes/Attribute/LineItemDescripiton

18 PUBLICSAP CPQ API Documentation

SOAP API

● Supported values: Plain text or CPQ formula; 2000 characters● This node is optional.● This value can be translated to any language similar to Product name.

<LineItemDescription> <USEnglish><![CDATA[text]]></USEnglish> <French><![CDATA[text]]></French> </LineItemDescription>

Language names in XML nodes cannot contain brackets (for example, Portuguese (Brasil) should be written as PortugueseBrasil).

<RankWithinCart> - Set rank within Cart on product attribute

xPATH: //Products/Product/Attributes/Attribute/RankWithinCart

● Supported values: ingeger● This node is optional.● This node can be set only if “Line item flag” has value 1.

<SpansAcrossEntireRow> - Set “Spans across entire row in configuration” on product attribute

xPATH: //Products/Product/Attributes/Attribute/SpansAcrossEntireRow

● Supported values: “1” as True. “0 “ value is sent in case this flag should be deselected● This node is optional.● This node is not supported for display type “BUTTON”

<Required> - Set Required flag on product attribute

xPATH: //Products/Product/Attributes/Attribute/Required

● Supported values: “1” as True. “0 “ value is sent in case this flag should be deselected● This node is optional.● This node is not supported for display type “BUTTON”

<Label> - Set Attribute Label on product attribute

xPATH: //Products/Product/Attributes/Attribute/Label

● Supported values: Plain text or CPQ formula up to 1500 characters.● This node is optional.● This value can be translated to any language● This node is not supported for display type “BUTTON”

<Label> <USEnglish> <![CDATA[text]]> </USEnglish> <French><![CDATA[text]]> </French> </Label>

<Hint> - Set Attribute Hint on product attribute

xPATH: //Products/Product/Attributes/Attribute/Hint

● Supported values: Plain text or CPQ formula up to 2000 characters.

SAP CPQ API DocumentationSOAP API PUBLIC 19

● This node is optional.● This value can be translated to any language● This node is not supported for display type “BUTTON”

<Hint> <USEnglish> <![CDATA[text]]> </USEnglish> <French><![CDATA[text]]> </French> </Hint>

<ShowOneTimePrice> - Set the Show One Time Price flag on product attribute

xPATH: //Products/Product/Attributes/Attribute/ShowOneTimePrice

● Supported values: “1” as True, “0 “value is sent in case this flag should be deselected.● This node is optional.● This node is not supported for display type “BUTTON”

<ShowRecurringPrice> - Set the Show Recurring Price flag on product attribute

xPATH: //Products/Product/Attributes/Attribute/ShowRecurringPrice

● Supported values: “1” as True, “0 “value is sent in case this flag should be deselected.● This node is optional.● This node is not supported for display type “BUTTON”

<ButtonText> - Set the Button text

xPATH: //Products/Product/Attributes/Attribute/ButtonText

● Supported values: Plain text or CPQ formula up to 2000 characters.● This node is optional.● This node can be set only if attribute display type is “Button”

<AttachScriptButton> - set Attach script flag to Button attribute

xPATH: //Products/Product/Attributes/Attribute/AttachScriptButton ● Supported values: “1” as True, “0 “value is sent in case this flag should be deselected.● This node is optional.● This node can be set only if attribute display type is “Button”

<ButtonScriptsAttached> - add script to Button attribute

xPATH: //Products/Product/Attributes/Attribute/ButtonScriptsAttached

This node will support adding child nodes <ButtonScript> and <Rank>: The full XPATH follow:

//Products/Product/Attributes/Attribute/ ButtonScriptsAttached/ButtonScript

//Products/Product/Attributes/Attribute/ ButtonScriptsAttached/Rank

<ButtonScript> Supported values: Exact Script Name.

● This node is optional

20 PUBLICSAP CPQ API Documentation

SOAP API

● CPQ does not support adding new script over API call. Product administration API can only add a script that already exists within CPQ

<Rank> Supported values: Integer.

● This node is optional

<Preselected> - Set flag Preselected on Attribute Value level

xPATH: //Products/Product/Attributes/Attribute/Values/Value/Preselected

● Supported values: “1” as True, “0 “value is sent in case this flag should be deselected.● This node is optional.

<Tabs> - Set product tabs

xPATH: //Products/Product/Tabs

● This node is optional.● Tabs node is not allowed with Simple products● If the SimpleProductAdministration API doesn’t contain this node, the configuration layout of the product

stays unchanged. If the API contains this node without any values, the configuration layout of the product is removed. Consequently, if the node contains some values, the configuration layout of the product will be updated accordingly.

● Nodes within Tab node are:

1. <SystemId>: This is tab unique identifier. Supported values: any.

xPATH: //Products/Product/Tabs/Tab/SystemId

2. <name>: Supported values: text.

xPATH: //Products/Product/Tabs/Tab/Name

3. <ProductTabRank>: Supported values: integer.

xPATH: //Products/Product/Tabs/Tab/ProductTabRank

4. <LayoutTemplate>: This node is required. Supported values: 0 (Always displayed), 1 (Display only if it is not empty), 2 (define condition for visibility).

xPATH: //Products/Product/Tabs/Tab/LayoutTemplate

5. <VisibilityPermission>: This node is required. Supported values: string.

xPATH: //Products/Product/Tabs/Tab/TabVisibility

6. <VisibilityCondition>: This node is optional. Supported values: string.

xPATH: //Products/Product/Tabs/Tab/VisiblityCondition

7. <ShowTabHeader>: This node is optional. Supported values: “1” as True, “0 “value is sent in case this flag should be deselected.

xPATH: //Products/Product/Tabs/Tab/ShowTabHeader

SAP CPQ API DocumentationSOAP API PUBLIC 21

8. <Attributes>: This node is optional. Supported values: “1” as True, “0 “value is sent in case this flag should be deselected.

xPATH: //Products/Product/Tabs/Tab/ Attributes //Products/Product/Tabs/Tab/ Attributes/Attribute//Products/Product/Tabs/Tab/ Attributes/Attribute/Name //Products/Product/Tabs/Tab/ Attributes/Attribute/Rank

This node can contain two child nodes (xPATH shown above). Both nodes are optional. Node Name can contain name of the attribute that is already attached to the product. You cannot use attributed that does not belong to the product.

<ResponderAttributes> and <ResponderLineItems> - Set Attributes in Responder

xPATH: //Products/Product/ResponderAttributes //Products/Product/ResponderLineItems

These 2 nodes are not allowed with Simple products.

● To list attributes as responder items, use <attributes> node with its corresponding child nodes. Their names are self-descriptive.

xPATH: //Products/Product/ResponderAttributes/Attributes/Attribute //Products/Product/ ResponderAttributes /Attributes/Attribute/Rank //Products/Product/ ResponderAttributes /Attributes/Attribute/Name

● The same applies for <ResponderLineItems>

<GlobalScripts> - Set Global IPython script

xPATH: //Products/Product/GlobalScripts

● This node is optional.● This node contains child nodes that are self-descriptive.● This node is not supported for display type “BUTTON”● If the SimpleProductAdministration API doesn’t contain this node, the global scripts attached to the

product stay unchanged. If the API contains this node without any values, the global scripts will be detached from the product. Additionally, if the node contains some values, the global scripts attached to the product will be updated accordingly.

● Child nodes:

//Products/Product/GlobalScripts/Script/Name //Products/Product/GlobalScripts/Script/Rank//Products/Product/GlobalScripts/Script/Events//Products/Product/GlobalScripts/Script/Events/EventSupported values for this node: - OnProductLoaded - OnProductRuleExecutionStart - OnProductRuleExecutionEnd - OnProductTabChanged - OnProductCompleted - OnProductAddedToQuote - OnProductBeforeAddToQuote

22 PUBLICSAP CPQ API Documentation

SOAP API

NoteWhen products are updated, only fields that should be updated need to be sent. Other fields will not be updated (they will remain as they were before the call).

<?xml version="1.0" encoding="utf-8"?> <Products SkipCategoriesOnProductUpdate="false" SkipPermissionsOnProductUpdate="false" > <Product> <Identificator>PartNumber</Identificator> <ShippingCosts> <ShippingName_1><![CDATA[some formula]]></ShippingName_1> <ShippingName_2><![CDATA[some formula]]></ShippingName_2> </ShippingCosts> <Permissions>Sales;Sales Management</Permissions> <CPQProductID><![CDATA[some_product_id]]></CPQProductID> <PartNumber>DA353LNAL00</PartNumber> <UPC><![CDATA[some_upc_num]]></UPC> <MPN><![CDATA[some_mpn_num]]></MPN> <ProductFamilyCode><![CDATA[some_prod_fam_code]]></ProductFamilyCode> <RecurringPriceFormula><![CDATA[some_rec_price_formula]]></RecurringPriceFormula> <RecurringCostFormula><![CDATA[some_rec_cost_formula]]></RecurringCostFormula> <Inventory>1234</Inventory> <LeadTime><![CDATA[3 weeks]]></LeadTime> <ProductVersion><![CDATA[pv12]]></ProductVersion> <ExternalId><![CDATA[some_ext_id]]></ExternalId> <Active>true</Active> <Weight>136.00</Weight> <Image><![CDATA[image.jpg]]></Image> <StartDate>1/31/2010</StartDate> <EndDate>1/31/2011</EndDate> <UserCanEnterQuantity>1</UserCanEnterQuantity> <PricingMechanism>Custom Pricing</PricingMechanism> <PricingCode><![CDATA[some pricing code]]></PricingCode> <BaseRecurringPrice>1234</BaseRecurringPrice> <Price>1234.45</Price> <LongDescription>Some long description here</LongDescription> <PriceFormula><![CDATA[136]]></PriceFormula> <CostFormula><![CDATA[136]]></CostFormula> <ProductType>Cardio</ProductType> <ProductName> <USEnglish><![CDATA[Step Excite+ 500]]></USEnglish> <French><![CDATA[Step Excite+ 500]]></French> </ProductName> <Description> <USEnglish><![CDATA[description english]]></USEnglish> <French><![CDATA[description French]]></French> </Description> <CartDescription> <USEnglish><![CDATA[cart description english]]></USEnglish> <French><![CDATA[cart description French]]></French> </CartDescription> <Categories> <USEnglish><![CDATA[Cardio>Excite+ Class]]></USEnglish> <French><![CDATA[Cardios>Excites+ Class]]></French> </Categories> <Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[LINE]]></USEnglish> <French><![CDATA[LINEA]]></French> </AttributeName> <Values> <Value>

SAP CPQ API DocumentationSOAP API PUBLIC 23

<USEnglish><![CDATA[Excite+]]></USEnglish> <French><![CDATA[Excite+]]></French> </Value> </Values> </Attribute> <Attribute> <AttributeName> <USEnglish><![CDATA[MODEL]]></USEnglish> <French><![CDATA[MODELLO]]></French> </AttributeName> <Values> <Value> <USEnglish><![CDATA[Step]]></USEnglish> <French><![CDATA[Step]]></French> </Value> </Values> </Attribute> <Attribute> <AttributeName> <USEnglish><![CDATA[VERSION]]></USEnglish> <French><![CDATA[VERSIONE]]></French> </AttributeName> <Values> <Value> <USEnglish><![CDATA[500]]></USEnglish> <French><![CDATA[500]]></French> </Value> </Values> </Attribute> <Attribute> <AttributeName> <USEnglish><![CDATA[FRAME]]></USEnglish> <French><![CDATA[TELAIO]]></French> </AttributeName> <Values> <Value> <USEnglish><![CDATA[Grey]]></USEnglish> <French><![CDATA[Argento]]></French> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

Minimal XML used to create a product (product name, type and category are required nodes)

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <ProductType>Cardio</ProductType> <ProductName> <USEnglish><![CDATA[Step Excite+ 500]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Cardio>Excite+ Class]]></USEnglish> </Categories> </Product> </Products>

24 PUBLICSAP CPQ API Documentation

SOAP API

XML example snippet in case multiple <Identificator> nodes are used:

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <Identificator>PriceCode</Identificator> <ShippingCosts> <ShippingName_1><![CDATA[some formula]]></ShippingName_1> <ShippingName_2><![CDATA[some formula]]></ShippingName_2> </ShippingCosts> . . . .

Related Information

SOAP API Authentication [page 376]

2.1.3 Input XML Schema

You can test your XML against XML schema here : http://www.utilities-online.info/xsdvalidation.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Products"> <xs:complexType> <xs:sequence> <xs:element name="Product"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="CPQProductID"/> <xs:element type="xs:string" name="Identificator" maxOccurs="unbounded" minOccurs="0"/> <xs:element type="xs:boolean" name="Active"/> <xs:element name="Categories"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="USEnglish"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ProductName"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="USEnglish"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element type="xs:string" name="UnitOfMeasure"/> <xs:element name="Description"> <xs:complexType> <xs:sequence>

SAP CPQ API DocumentationSOAP API PUBLIC 25

<xs:element type="xs:string" name="USEnglish"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="CartDescription"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="USEnglish"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element type="xs:string" name="PartNumber"/> <xs:element type="xs:string" name="ProductSystemId"/> <xs:element type="xs:string" name="ProductType"/> <xs:element type="xs:string" name="DisplayType"/> <xs:element type="xs:string" name="PriceFormula"/> <xs:element type="xs:string" name="CostFormula"/> <xs:element type="xs:float" name="Price"/> <xs:element type="xs:string" name="Image"/> <xs:element type="xs:string" name="Weight"/> <xs:element type="xs:date" name="StartDate"/> <xs:element type="xs:date" name="EndDate"/> <xs:element type="xs:string" name="Permissions"/> <xs:element name="Obsolete"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Status"/> <xs:element type="xs:string" name="ProductSysId"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element type="xs:string" name="PricingMechanism"/> <xs:element type="xs:string" name="PricingCode"/> <xs:element type="xs:string" name="UPC"/> <xs:element type="xs:string" name="MPN"/> <xs:element name="ShippingCosts"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="CustomShipping"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element type="xs:string" name="ProductFamilyCode"/> <xs:element type="xs:string" name="RecurringPriceFormula"/> <xs:element type="xs:string" name="RecurringCostFormula"/> <xs:element type="xs:string" name="BaseRecurringPrice"/> <xs:element type="xs:string" name="Inventory"/> <xs:element type="xs:string" name="LeadTime"/> <xs:element type="xs:string" name="ProductVersion"/> <xs:element type="xs:string" name="ExternalId"/> <xs:element type="xs:byte" name="UserCanEnterQuantity"/> <xs:element type="xs:string" name="LongDescription"/> <xs:element type="xs:string" name="RDResponderTemplate"/> <xs:element name="ResponderAttributes"> <xs:complexType> <xs:sequence> <xs:element name="Attribute" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Name"/> <xs:element type="xs:int" name="Rank"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element>

26 PUBLICSAP CPQ API Documentation

SOAP API

<xs:element name="ResponderLineItems"> <xs:complexType> <xs:sequence> <xs:element name="Attribute"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Name"/> <xs:element type="xs:int" name="Rank"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Tabs"> <xs:complexType> <xs:sequence> <xs:element name="Tab" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="SystemId"/> <xs:element type="xs:string" name="Name"/> <xs:element type="xs:int" name="Rank"/> <xs:element type="xs:string" name="LayoutTemplate"/> <xs:element type="xs:string" name="RDTemplate"/> <xs:element type="xs:string" name="VisibilityPermission"/> <xs:element type="xs:string" name="VisibilityCondition"/> <xs:element type="xs:byte" name="ShowTabHeader"/> <xs:element name="Attributes"> <xs:complexType> <xs:sequence> <xs:element name="Attribute" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Name"/> <xs:element type="xs:int" name="Rank"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="GlobalScripts"> <xs:complexType> <xs:sequence> <xs:element name="Script" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Name"/> <xs:element type="xs:int" name="Rank"/> <xs:element name="Events"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Event" maxOccurs="unbounded" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>

SAP CPQ API DocumentationSOAP API PUBLIC 27

</xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Attributes"> <xs:complexType> <xs:sequence> <xs:element name="Attribute" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:choice maxOccurs="unbounded" minOccurs="0"> <xs:element name="AttributeName"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="USEnglish"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Triggers"> <xs:complexType> <xs:sequence> <xs:element name="Trigger" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Type"/> <xs:element type="xs:byte" name="Engine"/> <xs:element type="xs:string" name="Formula"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element type="xs:string" name="ScriptOnRowAdded"/> <xs:element type="xs:string" name="ScriptOnRowCopied"/> <xs:element type="xs:string" name="ScriptOnRowDeleted"/> <xs:element type="xs:string" name="ScriptOnCellEdited"/> <xs:element type="xs:byte" name="InheritQuantity"/> <xs:element type="xs:string" name="UnitOfMeasurement"/> <xs:element type="xs:string" name="AttributeType"/> <xs:element type="xs:string" name="DisplayType"/> <xs:element type="xs:byte" name="IsRequired"/> <xs:element type="xs:byte" name="IsLineItem"/> <xs:element type="xs:byte" name="IsFirstValuePreselected"/> <xs:element type="xs:string" name="ExternalId"/> <xs:element type="xs:date" name="StartDate"/> <xs:element type="xs:date" name="EndDate"/> <xs:element type="xs:int" name="RankWithinCart"/> <xs:element type="xs:string" name="AttributeSystemId"/> <xs:element type="xs:byte" name="SpansAcrossEntireRow"/> <xs:element type="xs:byte" name="ShowOneTimePrice"/> <xs:element type="xs:byte" name="ShowRecurringPrice"/> <xs:element type="xs:string" name="ButtonText"/> <xs:element type="xs:string" name="AttachScriptButton"/> <xs:element name="ButtonScripts"> <xs:complexType> <xs:sequence> <xs:element name="ButtonScript" maxOccurs="unbounded" minOccurs="0">

28 PUBLICSAP CPQ API Documentation

SOAP API

<xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Name"/> <xs:element type="xs:int" name="Rank"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element type="xs:string" name="LineItemDescription"/> <xs:element type="xs:string" name="Label"/> <xs:element type="xs:string" name="Hint"/> <xs:element name="Values"> <xs:complexType> <xs:sequence> <xs:element name="Value" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="USEnglish"/> <xs:element type="xs:string" name="ValueCode"/> <xs:element type="xs:byte" name="UsePricebook"/> <xs:element type="xs:string" name="CatalogCode"/> <xs:element type="xs:string" name="Price"/> <xs:element type="xs:string" name="AttributeValueSystemId"/> <xs:element type="xs:int" name="Rank"/> <xs:element type="xs:byte" name="Selected"/> <xs:element type="xs:byte" name="Preselected" minOccurs="0"/> <xs:element type="xs:byte" name="Sort"/> <xs:element type="xs:string" name="RefProduct"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> <xs:attribute type="xs:boolean" name="UpdateOnlyListedValues" use="optional"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute type="xs:boolean" name="UpdateOnlyListedAttributes"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute type="xs:boolean" name="SkipCategoriesOnProductUpdate"/> <xs:attribute type="xs:boolean" name="SkipPermissionsOnProductUpdate"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

SAP CPQ API DocumentationSOAP API PUBLIC 29

Related Information

SOAP API Authentication [page 376]

2.1.4 Output XML Example

Result OK

<Result xmlns="http://webcominc.com/"> <Status>OK</Status> <Message>Action successful.</Message> </Result>

Result not OK

<Result xmlns="http://webcominc.com/"> <Status>NOK</Status> <Message>DELETE failed</Message> <Error> <ErrorCode>100000</ErrorCode> <Description> Product not found. (DA353LNAL00G0) Product not found. (DA353LNAL00G0BRS)</Description> </Error> </Result>

Result for GETLANGUAGE action

<Result xmlns="http://webcominc.com/"> <Status>OK</Status> <Message>Default language: USEnglish. Other available languages: Serbian,Spanish,Test,French,japanese,German,Italian,Chinese,Russian,Dutch,Portuguese,Greek,Swedish.</Message> </Result>

Related Information

SOAP API Authentication [page 376]

30 PUBLICSAP CPQ API Documentation

SOAP API

2.1.5 Output XML Schema

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://webcominc.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Status"/> <xs:element type="xs:string" name="Message"/> <xs:element name="Error" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element type="xs:int" name="ErrorCode"/> <xs:element type="xs:string" name="Description"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Related Information

SOAP API Authentication [page 376]

2.1.6 PRODUCT ADMINISTRATION - Input XML Examples

Example No. 1

The following XML enables the process of effective dates for product and attributes: AttributeType, AttributeSystemId, Display Type for product and attributes, Rank and Value Code for attributes. Supported values for the Product Display Type are: Simple, Configurable, System, Collection and Parent/Child.

Supported values for Attribute Display Type are as follows: UserSelection, Date, String, Number, Att.Quantity, AttValue.Quantity, ExternalValue, Measurement, Container (Attribute type container can be created over API call and the system will be able to add an attribute type container to a product if that attribute already exists within SAP CPQ. When attribute type “Container” is created over API call, this container attribute will not have any other properties such as columns, properties, validation messages set up over API call).

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Parent/Child</DisplayType> <ProductSystemId>Laptop_cpq</ProductSystemId> <PartNumber>Test Number</PartNumber> <ProductType>Accessories</ProductType> <ProductName> <USEnglish><![CDATA[Laptop]]></USEnglish> </ProductName>

SAP CPQ API DocumentationSOAP API PUBLIC 31

<StartDate>3/3/15</StartDate> <EndDate>5/5/18</EndDate> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Attributes> <Attribute> <StartDate>3/3/15</StartDate> <EndDate>5/5/18</EndDate> <AttributeName> <USEnglish><![CDATA[HardDisk]]></USEnglish> </AttributeName> <AttributeSystemId>HardDisk_cpq</AttributeSystemId> <AttributeType>UserSelection</AttributeType> <DisplayType>DropDown</DisplayType> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>20</Rank> <ValueCode>2</ValueCode><AttributeValueSystemId>HardDisk1_cpq</AttributeValueSystemId> </Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>40</Rank> <ValueCode>4</ValueCode><AttributeValueSystemId>HardDisk2_cpq</AttributeValueSystemId> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

Example No. 2

The following XML is for a new attribute type - Measurement. You will need one more node,<UnitOfMeasurement>, for Measurement type. Supported values are as follows: Measurement types that have already been defined in SAP CPQ. It is not possible to create a new Measurement type via API call.

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Configurable</DisplayType> <ProductSystemId>HighPressureHoze_cpq</ProductSystemId> <PartNumber>New Test Number</PartNumber> <ProductType>Cardio</ProductType> <Description> <USEnglish>Test Description</USEnglish> </Description> <ProductName> <USEnglish><![CDATA[HighPressureHose]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Accessories]]></USEnglish> </Categories> <Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[MaxPressure]]></USEnglish> </AttributeName>

32 PUBLICSAP CPQ API Documentation

SOAP API

<AttributeSystemId>MaxPressure</AttributeSystemId> <AttributeType>Measurement</AttributeType> <UnitOfMeasurement>Flow</UnitOfMeasurement> <Values> <Value> <USEnglish><![CDATA[10bar]]></USEnglish> <Rank>10</Rank> <ValueCode>10bar</ValueCode> </Value> <Value> <USEnglish><![CDATA[20bar]]></USEnglish> <Rank>20</Rank> <ValueCode>20bar</ValueCode> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

Example No. 3

The following XML enables you to create a Product with Attribute, which is Line Item and Required, and contains Line Item Description, Rank within cart, Label, Hint, and checkbox for Spans across the entire row, Show one time price and Show recurring price.

Supported values for checkbox include the following: 1 for Yes, 0 for No. You should send “0 “value to deselect this option.

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Parent/Child</DisplayType> <ProductSystemId>SpeedBoatParentChild_cpq</ProductSystemId> <PartNumber>Test Number PC</PartNumber> <ProductType>Vehicles</ProductType> <Description> <USEnglish>Test Description PC</USEnglish> </Description> <ProductName> <USEnglish><![CDATA[SpeedBoatPCProduct]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[SpeedBoatUserSelectionAttribute]]></USEnglish> </AttributeName> <AttributeSystemId>SpeedBoatUser</AttributeSystemId> <AttributeType>UserSelection</AttributeType> <DisplayType>CheckBox</DisplayType> <IsLineItem>1</IsLineItem> <IsRequired>1</IsRequired> <LineItemDescription> <USEnglish>Line Item Description</USEnglish> </LineItemDescription> <RankWithinCart>100</RankWithinCart> <SpansAcrossEntireRow>1</SpansAcrossEntireRow> <Label>

SAP CPQ API DocumentationSOAP API PUBLIC 33

<USEnglish><![CDATA[SpeedBoat Label Test]]></USEnglish> </Label> <Hint> <USEnglish><![CDATA[SpeedBoat Hint Test]]></USEnglish> </Hint> <ShowOneTimePrice>1</ShowOneTimePrice> <ShowRecurringPrice>1</ShowRecurringPrice> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> <ValueCode>1</ValueCode> </Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>20</Rank> <ValueCode>2</ValueCode> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

Example No. 4

For Attach Script Button, the supported values are as follows: “1” for True, while “0” value is sent in case this flag should be deselected. Supported values: Exact Script Name.

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Configurable</DisplayType> <ProductSystemId>RegressionConfigurable_cpq</ProductSystemId> <PartNumber>Test Number Configurable</PartNumber> <ProductType>Configuration</ProductType> <Description> <USEnglish>Test Description Configurable</USEnglish> </Description> <ProductName> <USEnglish><![CDATA[PersonalComputer]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[RegressionAttValueQuantity]]></USEnglish> </AttributeName> <AttributeSystemId>AttValueQuantity_cpq</AttributeSystemId> <AttributeType>AttValue.Quantity</AttributeType> <DisplayType>Button</DisplayType> <AttachScriptButton>1</AttachScriptButton> <ButtonScripts> <ButtonScript> <Name>1stScriptQWE</Name> <Rank>1</Rank> </ButtonScript> <ButtonScript> <Name>RegressionScript</Name>

34 PUBLICSAP CPQ API Documentation

SOAP API

<Rank>1</Rank> </ButtonScript> <ButtonScript> <Name>AddItem</Name> <Rank>1</Rank> </ButtonScript> </ButtonScripts> <Label> <USEnglish><![CDATA[Button Label]]></USEnglish> </Label> <StartDate>3/3/2015</StartDate> <ButtonText> <USEnglish><![CDATA[Button ! ! !]]></USEnglish> </ButtonText> <SpansAcrossEntireRow>0</SpansAcrossEntireRow> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> <ValueCode>1</ValueCode> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

Example No. 5

The following XML is for <Preselected> and <IsFirstValuePreselected>, when sending attributes. It enables the processing of attributes whose first value is always preselected, according to standard SAP CPQ behavior.

Supported values are as follows: “1” for True, while “0” value is sent when this flag should be deselected. For the first value use <IsFirstValuePreselected>; for other values use preselected, same supported values.

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Collection</DisplayType> <ProductSystemId>FitnessCollectionPreselected_cpq</ProductSystemId> <PartNumber>Test Number Collection</PartNumber> <ProductType>Cardio</ProductType> <Description> <USEnglish>Test Description Collection</USEnglish> </Description> <ProductName> <USEnglish><![CDATA[FitnessCollectionProduct]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[FitnessUserSelectionAttribute]]></USEnglish> </AttributeName> <AttributeSystemId>FitnessUser</AttributeSystemId> <AttributeType>UserSelection</AttributeType> <DisplayType>ListBox</DisplayType> <IsLineItem>1</IsLineItem> <IsRequired>0</IsRequired>

SAP CPQ API DocumentationSOAP API PUBLIC 35

<LineItemDescription> <USEnglish>Line Item Description</USEnglish> </LineItemDescription> <RankWithinCart>100</RankWithinCart> <SpansAcrossEntireRow>0</SpansAcrossEntireRow> <ShowOneTimePrice>1</ShowOneTimePrice> <ShowRecurringPrice>0</ShowRecurringPrice> <IsFirstValuePreselected>0</IsFirstValuePreselected> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> <ValueCode>1</ValueCode> </Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>20</Rank> <ValueCode>2</ValueCode> <Preselected>1</Preselected> </Value> <Value> <USEnglish><![CDATA[3]]></USEnglish> <Rank>30</Rank> <ValueCode>3</ValueCode> <Preselected>1</Preselected> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

Example No. 6

The following XML is for Tabs with attributes. When Product Display Type is “Simple” or Product Display Type node is not present, <Tabs> node is not allowed. Parent The Tabs node has a child node Tab, and nodes within the Tab node are as follows: SystemId, Name, Rank, LayoutTemplate, VisibilityPermission, Visibility condition and Show tab header in configuration.

Supported values include the following:

● LayoutTemplate - string. This is tab configuration’s exact name. In order to set the tab layout template over API call, that file must have been created in SAP CPQ already; otherwise, the tab won’t be added to the system.

● VisibilityPermission - 0 (Always displayed), 1 (Display only if it is not empty), 2 (define condition for visibility)

● Show tab header in configuration - “1” as True, while the “0” value is sent when this flag should be deselected.

The following node is Attributes.

The nodes within the Attributes node are Name and Rank. Supported values for Name: Product attribute name. Only attributes added to a product can be placed on the tabs.

Responder Attributes and LineItem Responder are not allowed with Simple products. For ResponderLineItem node, attributes should be set as Line Items.

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

36 PUBLICSAP CPQ API Documentation

SOAP API

<Products> <Product> <Identificator>PartNumber</Identificator> <ProductSystemId>DesktopComputer_cpq</ProductSystemId> <PartNumber>New Part Number</PartNumber> <DisplayType>Configurable</DisplayType> <ProductType>Accessories</ProductType> <ProductName> <USEnglish><![CDATA[DesktopComputer]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <ResponderAttributes> <Attribute> <Name>Processor</Name> <Rank>10</Rank> </Attribute> </ResponderAttributes><ResponderLineItems><Attribute><Name>Processor</Name><Rank>10</Rank></Attribute><Attribute><Name>HardDrive</Name><Rank>20</Rank></Attribute></ResponderLineItems> <Tabs> <Tab> <SystemId>Test1_tab</SystemId> <Name>Test1Tab</Name> <Rank>10</Rank> <LayoutTemplate>GENERAL</LayoutTemplate> <VisibilityPermission>2</VisibilityPermission> <VisibilityCondition>1</VisibilityCondition> <ShowTabHeader>1</ShowTabHeader> <Attributes> <Attribute> <Name>HardDrive</Name> <Rank>20</Rank> </Attribute> <Attribute> <Name>Processor</Name> <Rank>10</Rank> </Attribute> </Attributes> </Tab> <Tab> <SystemId>Test2_tab</SystemId> <Name>Test2Tab</Name> <Rank>1</Rank> <LayoutTemplate>GENERAL</LayoutTemplate> <VisibilityPermission>2</VisibilityPermission> <VisibilityCondition>1</VisibilityCondition> <ShowTabHeader>0</ShowTabHeader> <Attributes> <Attribute> <Name>HardDrive</Name> <Rank>10</Rank> </Attribute> </Attributes> </Tab> </Tabs> <Attributes> <Attribute> <AttributeName>

SAP CPQ API DocumentationSOAP API PUBLIC 37

<USEnglish><![CDATA[Processor]]></USEnglish> </AttributeName> <AttributeType>UserSelection</AttributeType> <DisplayType>CheckBox</DisplayType><IsLineItem>1</IsLineItem> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> <ValueCode>1</ValueCode> </Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>20</Rank> <ValueCode>2</ValueCode> </Value> <Value> <USEnglish><![CDATA[3]]></USEnglish> <Rank>30</Rank> <ValueCode>3</ValueCode> </Value> </Values> </Attribute> <Attribute> <AttributeName> <USEnglish><![CDATA[HardDrive]]></USEnglish> </AttributeName> <AttributeType>UserSelection</AttributeType> <DisplayType>CheckBox</DisplayType><IsLineItem>1</IsLineItem> <Values> <Value> <USEnglish><![CDATA[10]]></USEnglish> <Rank>10</Rank> <ValueCode>10</ValueCode> </Value> <Value> <USEnglish><![CDATA[20]]></USEnglish> <Rank>20</Rank> <ValueCode>20</ValueCode> </Value> <Value> <USEnglish><![CDATA[30]]></USEnglish> <Rank>30</Rank> <ValueCode>30</ValueCode> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

Example No. 7

The following XML is for setting the Global IPython script. To set the script add a new child node <GlobalScripts> to <Product> input XML node. Parent GlobalScripts node has a child node, Script, and nodes within the Script node are as follows: Name, Rank, Event.

For the Name node you must use the Exact Script Name; supported values for Events are as follows:

● OnProductLoaded

38 PUBLICSAP CPQ API Documentation

SOAP API

● OnProductRuleExecutionStart● OnProductRuleExecutionEnd● OnProductTabChanged● OnProductCompleted● OnProductAddedToQuote● OnProductBeforeAddToQuote

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <ProductSystemId>Configurable_cpq</ProductSystemId> <PartNumber>Regression Part Number</PartNumber> <DisplayType>Configurable</DisplayType> <ProductType>Accessories</ProductType> <ProductName> <USEnglish><![CDATA[PneumaticDrill]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Machine]]></USEnglish> </Categories> <GlobalScripts> <Script> <Name>RegressionScript</Name> <Rank>10</Rank><Events><Event>OnProductBeforeAddToQuote</Event></Events></Script></GlobalScripts> <Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[RegressionScript1]]></USEnglish> </AttributeName> <AttributeType>UserSelection</AttributeType> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> </Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>20</Rank> </Value> <Value> <USEnglish><![CDATA[3]]></USEnglish> <Rank>30</Rank> </Value> </Values> </Attribute> <Attribute> <AttributeName> <USEnglish><![CDATA[RegressionScript2]]></USEnglish> </AttributeName> <AttributeType>UserSelection</AttributeType> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> </Value> </Values> </Attribute> </Attributes> </Product>

SAP CPQ API DocumentationSOAP API PUBLIC 39

</Products>

Example No. 8 - Add/Update attribute

If you want to add an attribute or update the existing one, you should provide an XML input file with desired data (Sample XML file follows). Note that there is an property UpdateOnlyListedAttributes that controls which attributes will be affected. This property should be added to the <attributes> node and set to TRUE or FALSE based on what you want to achieve. Explanation on this parameter follows.

Parameter UpdateOnlyListedAttributes on <Attributes> node:

● If value is FALSE then all attributes provided through XML will be added or updated. Attributes that are not provided in the XML will be deleted.

● If value is TRUE then all attributes provided through XML will be added or updated. Attributes that are not provided in the XML will remain intact (ignored).

<Attributes UpdateOnlyListedAttributes="TRUE"> <Attribute><AttributeName><USEnglish>VERSION3</USEnglish></AttributeName><Values><Value><USEnglish>100</USEnglish></Value></Values></Attribute> </Attributes>

Example No. 9 - Add/Update attribute values

If you want to add or update attribute values, you should provide an XML input file with desired data (Sample XML file follows). This XML file should also provide two properties - UpdateOnlyListedAttributes and UpdateOnlyListedValues that control which attributes and attribute values will be affected.

UpdateOnlyListedAttributes property should be added to the <attributes> node and set to TRUE or FALSE based on what you want to achieve. Explanation on this parameter can be found here.

UpdateOnlyListedValues property should be added to the <attribute> node and set to TRUE or FALSE based on what you want to achieve. Explanation on this parameter follows.

Parameter UpdateOnlyListedValues on <Attribute> node:

● If value is set to FALSE or parameter is not provided in XML, then all the existing attribute values will be disabled. Values provided in XML will be either updated or created.

● If value is set to TRUE then all attibute values provided through XML will be either added or updated. Values that are not provided in the XML will remain intact (ignored).

<Attributes UpdateOnlyListedAttributes="TRUE"> <Attribute UpdateOnlyListedValues="TRUE"><AttributeName><USEnglish>VERSION2</USEnglish>

40 PUBLICSAP CPQ API Documentation

SOAP API

</AttributeName><Values><Value><USEnglish>610</USEnglish></Value></Values></Attribute> </Attributes>

Example No. 10 - Set reference product as an attribute value

If you want to set reference product as an attribute value, you should provide an XML file that contains node <RefProduct> under <value> node of attribute value that you want to set. If you don't provide parameter UpdateOnlyListedValues or it is set to FALSE, then all other attribute values are deleted. Similarly, if you don't provide UpdateOnlyListedAttributes parameter or it is set to FALSE then all other attributes are deleted. Sample XML file follows.

<Attributes> <Attribute><AttributeName><USEnglish>VERSION2</USEnglish></AttributeName><Values><Value><USEnglish>506</USEnglish><RefProduct>Product_SystemId_cpq</RefProduct></Value></Values></Attribute> </Attributes>

Example No. 11 - Set responder template

If you want to set responder template, you can use node RDResponderTemplate node in input XML. Sample XML follows.

<Products> <Product><DisplayType>Configurable</DisplayType><Identificator>PartNumber</Identificator><ProductSystemId>TestRDProduct_cpq</ProductSystemId><ProductType>Accessories</ProductType><RDResponderTemplate>MyResponderTemplate</RDResponderTemplate><PartNumber>DA353LNAL00G0BRE</PartNumber><Active>TRUE</Active><Weight>136.00</Weight><PriceFormula><![CDATA[136]]></PriceFormula><ProductName><USEnglish><![CDATA[TestRDProduct]]></USEnglish></ProductName><Description><USEnglish><![CDATA[description english]]></USEnglish></Description><CartDescription><USEnglish><![CDATA[cart description english]]></USEnglish>

SAP CPQ API DocumentationSOAP API PUBLIC 41

</CartDescription><Categories><USEnglish><![CDATA[Cardio>Excite+ Class]]></USEnglish></Categories><Tabs><Tab><SystemId>Tab1_tab</SystemId><Name>Tab1</Name><Rank>10</Rank><LayoutTemplate>GENERAL</LayoutTemplate><RDTemplate>MyConfigTemplate</RDTemplate><VisibilityPermission>2</VisibilityPermission><VisibilityCondition>1</VisibilityCondition><ShowTabHeader>1</ShowTabHeader> </Tab></Tabs></Product> </Products>

Example No. 12 - Display different values of the same product attribute

The following XML allows you to specify which values of the same product attribute you want to be displayed to users in the Configurator.

<Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Parent/Child</DisplayType> <ProductSystemId>Laptop_cpq</ProductSystemId> <PartNumber>Test Number2</PartNumber> <ProductType>Accessories</ProductType> <ProductName> <USEnglish><![CDATA[Laptop]]></USEnglish> </ProductName> <StartDate>3/3/15</StartDate> <EndDate>5/5/18</EndDate> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Attributes> <Attribute> <StartDate>3/3/15</StartDate> <EndDate>5/5/18</EndDate> <AttributeName> <USEnglish><![CDATA[HardDisk]]></USEnglish> </AttributeName> <AttributeSystemId>HardDisk_cpq</AttributeSystemId> <AttributeType>UserSelection</AttributeType> <DisplayType>DropDown</DisplayType> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> <ValueCode>1</ValueCode><AttributeValueSystemId>HardDisk1_cpq</AttributeValueSystemId> </Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>20</Rank> <ValueCode>2</ValueCode><AttributeValueSystemId>HardDisk2_cpq</AttributeValueSystemId> </Value> </Values>

42 PUBLICSAP CPQ API Documentation

SOAP API

</Attribute> </Attributes> </Product></Products>

Now, the product named Laptop with the HardDisk attribute will have only attribute values 1 and 2 displayed to users.

If you want to add another product with different values of the same attribute, you can specify which values of the product you want to show to users by adding UpdateOnlyListedValues parameter to the <Values> node and set it to TRUE, as shown in the example below.

<Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Parent/Child</DisplayType> <ProductSystemId>Laptop2_cpq</ProductSystemId> <PartNumber>Test Number</PartNumber> <ProductType>Accessories</ProductType> <ProductName> <USEnglish><![CDATA[Laptop2]]></USEnglish> </ProductName> <StartDate>3/3/15</StartDate> <EndDate>5/5/18</EndDate> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Attributes> <Attribute> <StartDate>3/3/15</StartDate> <EndDate>5/5/18</EndDate> <AttributeName> <USEnglish><![CDATA[HardDisk]]></USEnglish> </AttributeName> <AttributeSystemId>HardDisk_cpq</AttributeSystemId> <AttributeType>UserSelection</AttributeType> <DisplayType>DropDown</DisplayType> <Values UpdateOnlyListedValues="true"> <Value> <USEnglish><![CDATA[3]]></USEnglish> <Rank>30</Rank> <ValueCode>3</ValueCode><AttributeValueSystemId>HardDisk1_cpq</AttributeValueSystemId> </Value> <Value> <USEnglish><![CDATA[4]]></USEnglish> <Rank>40</Rank> <ValueCode>4</ValueCode><AttributeValueSystemId>HardDisk2_cpq</AttributeValueSystemId> </Value> </Values> </Attribute> </Attributes> </Product></Products>

In this example, only attribute values 3 and 4 are displayed. At the same time, Display to users checkbox is selected in the Setup and the new values are created and selected for the new product without affecting values which are already in the system.

Now, you have created two products which share the same attribute and four different attribute values. The result of the first example is the product named Laptop with HardDisk attribute where all values are present in the Setup, but only values 1 and 2 are displayed to users. On the other hand, even though the product Laptop2

SAP CPQ API DocumentationSOAP API PUBLIC 43

created in the second example contains the same attribute as the previous product, users can only see attribute values 3 and 4 in the Configurator.

Related Information

SOAP API Authentication [page 376]

2.1.7 PRODUCT ADMINISTRATION WEB METHOD

Function name: ProductAdministration

Function description: ProductAdministration function can be used to:

● Add Products● Delete Products● Update Product information● Add/Update/Delete product data in multiple languages

The Simple Product Administration SAP CPQ API can maintain simple products in SAP CPQ, and it’s capable of creating/updating configurable products to some extent. Note that the current SAP CPQ API does not permit the creation of more complex configurable products.

The following use cases must be supported when using the ProductAdministration API to create and update products in SAP CPQ. Note that you can view Product Administration Input XML Examples here [page 31].

Display Type

When sending product data, a flag will be supported that allows users to define a product display type.

Supported values:

● Simple● Configurable● System● Collection● Parent/Child

To set a product display type, the <Product> input XML node you must include the following child node: <DisplayType>. The full XPATH should look this way: Products/Product/DisplayType.

This node is optional - If the node is not present in input XML, the system will move on without crashing or returning error messages.

Error message “Value in Node Display Type is not supported” will appear in the Response field if the value sent in this note is not supported. If the node is not present or it is left vacant, the system will read it as a Simple product display type.

44 PUBLICSAP CPQ API Documentation

SOAP API

System ID

To enable users to set the Product System ID, you must include the following child node: <ProductSystemId.> The full XPATH should look this way: Products/Product/ ProductSystemId.

Product System ID supports all values, there is no restriction. It is used as an object identification when migrating objects from Sandbox to Production environment. If you use an existing System ID, SAP CPQ will return the following message: “Product with the same System ID already exist in the system. Please specify different Product System ID”

The node is optional - if the node is not present in input XML or it is left vacant, the system will move on without crashing or returning error messages.

When updating products, the system first looks at what is in the <Identificator> node. This means that:

● If it contains PartNumber, the product will be searched based on the provided part number provided in the <PartNumber> node.

● If it contains “ProductName,” the product will be searched based on the provided product name (provided in node <ProductName>).

● If it contains any other field, the product will be searched by the SAP CPQ ID provided in node <CPQProductID>.

Note that the <Identificator> can also contain the “PricingCode” which should be used in combination with the “PartNumber.” In <Indentificator> node we should use PriceCode, and to pass the pricing code value we should use node <PricingCode> It should look as follows:

<Products SkipCategoriesOnProductUpdate="True"> <Product> <Identificator>PriceCode</Identificator> <PricingCode>65</PricingCode> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Description> <USEnglish>test1243</USEnglish> </Description> </Product> </Products>

Performing a search with the <Identificator> node can return more than one product, so multiple products can be updated with the same data.

In case you do not define the System ID, SAP CPQ will generate it for you and add _cpq at the end. The best way to identify a product is by using two identificators.

Product search is performed by whatever the Identification column suggests and, if that fails, the search is performed by the CPQProductID (if provided). If no products are found, a new product will be created.

If the identification node contains “ProductSystemId,” the product will be searched based on the provided Product System ID.

SAP CPQ API DocumentationSOAP API PUBLIC 45

Attribute Type

To enable users to set the Attribute Type, you should add a new child node, <AttributeType>, to the <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/AttributeType

The node supports the following values:

● UserSelection● Date● String● Number● Att.Quantity● AttValue.Quantity● ExternalValue● Measurement● Container

This node is optional - if the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is not present, or is empty, the system will set User Selection as the attribute type.● The Attribute type container can be created over API call, and the system will be able to add an attribute

type container to a product if that attribute already exists within SAP CPQ. When the Container Attribute type is created over API call, this attribute will not have any other property (columns, properties, validation messages) set up over API call.

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node ATTRIBUTE TYPE is not supported.”

Attribute Display Type

To enable users to set the Attribute Display Type, add a new child node, <DisplayType> to the <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/DisplayType

Not all display types are supported by all attribute types. And not all display types support multiple attribute values.

The table outlined below shows the connection between

● Attribute display type and the attribute type● Attribute display types and the number of attribute values

The following table displays what error messages will pop up when an incompatible combination is sent.

46 PUBLICSAP CPQ API Documentation

SOAP API

SAP CPQ API DocumentationSOAP API PUBLIC 47

This node is optional - If the node is not present in input XML, the system would move on without crashing or returning error messages.

If the node is not present or it’s empty, the system will set Drop Down as the attribute display type.

Display type Custom control is not supported on API call.

If a value sent in this node is not supported, the system will return the following error message: “Value in the node ATTRIBUTE TYPE is not supported”

Measurement Attribute Type

To enable users to set the Measurement Attribute Type, add a new child node, <UnitOfMeasurement> to the <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/Measurement/UnitOfMeasurement

Supported values include Measurement Types previously defined in SAP CPQ. It is not possible to create a new Measurement Type via API call.

● Note that this node is required if the attribute type is Measurement. In case this node is not present when attribute type is Measurement the system will return the following message: “Node UnitOfMeasurement is required.”

● If the value of this node is not supported in SAP CPQ, the system will return the following message: “Measurement type not found in SAP CPQ.”

● If the attribute type is not “UnitsOfMeasurement.” and if the node is not present in input XML, the system would move on without crashing or returning error messages.

Attribute System ID in Attribute

To enable users to set the Attribute System ID, you should add a new child node, <AttributeSystemId> to the <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/ AttributeSystemId

Supported values include all values, there is no restriction.

This node is optional - If the node is not present in input XML or it is empty, the system will move on without crashing or returning error messages. Since this is an attribute system ID, the system will populate this field automatically when the node is not present in input XML or it is empty.

Rank Within Attribute Values

To enable users to define Rank within attribute values, you should add a new child node, <Rank>, to the <Value> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/Values/Value/Rank

48 PUBLICSAP CPQ API Documentation

SOAP API

Supported values are integer values.

This node is optional - if the node is not present in input XML or it is empty, the system will move on without crashing or returning error messages. If node is not present or is empty, the system will assign the rank value in the order in which the values were sent: 10, 20, 30…

That said, Value “10” will have rank 10, while Value “11” will have rank 20.

If a value sent in this node is not supported, the system will return the following error message: “Value in Node Attribute/Values/Value/Rank is not supported.

NoteAttribute Value, Attribute Value Code, Attribute System ID and Attribute Value system ID are already supported on API call.

Value Code in Product Attribute Value

To enable users to check the Value Code flag in Product Attribute Value, you should add a new child node <ValueCode> to the <Value> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/Values/Value/ValueCode

Supported values include all values. Since this is an attribute value code, this field should not contain a specific character.

This node is optional - if the node is not present in input XML, the system will move on without crashing or returning error messages.

Attribute Value System ID in Product Attribute Value

To enable users to check the Attribute Value System ID flag in Product Attribute Value, you should add a new child node, <AttributeValueSystemId> to the <Value> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/Values/Value/AttributeValueSystemId

Supported values are any values, there is no restriction.

This node is optional - if the node is not present in input XML or is empty, the system will move on without crashing or returning error messages.

Since this is an attribute system ID, the system will populate this field automatically the node is not present in input XML or is empty.

SAP CPQ API DocumentationSOAP API PUBLIC 49

Line Item in Product Attribute

To enable users to check the Line Item flag in Product Attribute, you should add a new child node, <IsLineItem> to the <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/IsLineItem

Supported values include the following: 1 for Yes, 0 for No. “0” value is sent when this option should be deselected.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning any error messages.

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node LINE ITEM is not supported”

● If this Node has a value and attribute display type as “Button,” the system will return the following message.: Node “LINE ITEM” is not supported for display type is “BUTTON.”

Description in Line Items in Product Attribute

To enable users to check the “User Can Enter Quantity” flag in Product Attribute, add a new child node, <LineItemDescription> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/LineItemDescription

This value can be translated to any language similar to Product name.

<LineItemDescription> <USEnglish> <![CDATA[text]]> </USEnglish><French><![CDATA[text]]> </French> </LineItemDescription>

Supported values include plain text.

Note that this node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If node is empty in product Update, the system will remove all text present in this field.● This node can be set only if “Line item flag” has value 1. If this node is present for non-line item attributes,

the system will return the following message: “Node LINE ITEM DESCRIPTION is not supported for non-line items”

● If the provided input contains text that is longer than what the system supports, SAP CPQ will return the following message: “Number of characters in Node LINE ITEM DESCRIPTION is out allowed limit”

50 PUBLICSAP CPQ API Documentation

SOAP API

Rank Within Cart in Product Attribute

To enable users to enter the “Rank within Cart” flag in Product Attribute, add a new child node, <RankWithinCart> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/RankWithinCart

Supported values are integer values. Note that this node is optional or empty in product import.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning any error messages.

● If the node is empty in product Update the system will remove all text present in this field.● If the value sent in this node is not supported, the system will return the following error message:“Value in

Node RANK WITHIN CART is not supported”● This node can be set only if “Line item flag” has value 1. If this node is present for non-line item attributes,

the system will return the following message: “Node RANK WITHIN CART is not supported for non-line items”

"Spans across entire row in configuration" in Product Attribute

To enable users to select the “Spans across the entire row in configuration” flag in product attribute, add a new child node, <SpansAcrossEntireRow> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/SpansAcrossEntireRow

Supported values are as follows: set “1” for True and set “0” when this flag should be deselected.

Note that this node is optional.

Error messages

●● If the node is not present in input XML, the system will move on without crashing or returning error

messages.● If the value sent in this node is not supported, the system will return the following error message: “Value in

Node SPANS ACROSS ENTIRE ROW is not supported”● “If this Node has a value and attribute display type as “Button,” the system will return the following

message: “Node SPANS ACROSS ENTIRE ROW is not supported for display type is BUTTON”

"Required" in Product Attribute

To enable users to select the “Required” flag in Product Attribute, add a new child node, <IsRequired> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/IsRequired

SAP CPQ API DocumentationSOAP API PUBLIC 51

Supported values:

Supported values are as follows: set “1” for True and set “0” when this flag should be deselected.

Note that this node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node REQUIRED is not supported”

● If this Node has a value and attribute display type as “Button,” the system will return the following message: “Node REQUIRED is not supported for display type is BUTTON”

Attribute Label in Product Attribute

To enable users to enter the Custom Label field in Product Attribute, add a new child node, <Label> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/Label

This value can be translated to any language similar to Product name.

<Label> <USEnglish> <![CDATA[text]]> </USEnglish><French><![CDATA[text]]> </French> </Label>

Supported values include plain text.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is empty on product update, the system will remove all text present in this field.● If the provided input contains text that is longer than the length supported by the system, SAP CPQ will

return the following message: “Number of characters in Node LABEL is out allowed limit”

Attribute Hint In Product Attribute

To enable users to enter the Hint field in Product Attribute, add a new child node, <Hint> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/Hint

This value can be translated to any language similar to Product name.

<Hint> <USEnglish> <![CDATA[text]]> </USEnglish>

52 PUBLICSAP CPQ API Documentation

SOAP API

<French><![CDATA[text]]> </French> </Hint>

Supported values include plain text.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is empty on product update the system will remove all text present in this field.● If the provided input contains text longer than that supported by the system, SAP CPQ will return the

following message: “Number of characters in Node HINT is out allowed limit”● If this Node has a value and attribute display type as “Button,” the system will return the following

message: Node “HINT” is not supported for display type is “BUTTON”

"Show One Time Price" Flag in Product Attribute

To enable users to tick the “Show One Time Price” check box in Product Attribute, add a new child node, <ShowOneTimePrice> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/ ShowOneTimePrice

Supported values: set “1” for True, and “0” when this flag should be deselected.

Note that this node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is not present, the flag is not selected.● If a value sent in this node is not supported, the system will return the following message: “Value in Node

SHOW ONE TIME PRICES is not supported”● If this Node has a value and attribute display type as “Button,” the system will return the following

message: Node “SHOW ONE TIME PRICES” is not supported for display type is “BUTTON”

"Show Recurring Price" Flag in Product Attribute

To enable users to tick the “Show Recurring Price” check box in Product Attribute, add a new child node, <ShowRecurringPrice> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/ShowRecurringPrice

Supported values: set “1” for True, and “0” when this flag should be deselected.

Note that this node is optional.

Error message

SAP CPQ API DocumentationSOAP API PUBLIC 53

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node SHOW RECURRING PRICES is not supported”

● If the node is not present, this flag is not selected.● If this node has value and attribute display type as “Button” the following message will appear: Node

“SHOW RECURRING PRICES” is not supported for display type is “BUTTON”

Button Text in Product Attribute

To enable users to set the Button Text in Product Attribute, add a new child node, <ButtonText> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/ButtonText

Supported values include text.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is empty on product update, the system will remove all text present in this field.● This node can be set only if the attribute display type is “Button.” IF this node is present for other

attributes' types except “Button,” the system will return the following message: “Node BUTTON TEXT is supported for BUTTON attributes only”

● If the provided input contains text that is longer than the length supported by the system, SAP CPQ will return the following message:

“Number of characters in Node BUTTON TEXT is out allowed limit”

Script Attachment in Button Attribute

To enable users to set Button Text in Button Attribute, add a new child node, <AttachScriptButton> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/AttachScriptButton

Supported values: set “1” for True, and “0” when this flag should be deselected.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● This node can be set only if the attribute display type is “Button.” If this node is present for other attribute types other than Button, the system will return the following message: “Node ATTACH SCRIPT BUTTON is supported for BUTTON attributes only.”

54 PUBLICSAP CPQ API Documentation

SOAP API

● If the value sent in this node is not supported, the system will return the following error message: “Value in Node ATTACH SCRIPT BUTTON is not supported.”

Adding Script to Button Attribute

This node can be set only if the ATTACH SCRIPT BUTTON flag has value 1.

To enable users to define Script in Button Attribute, add a new child node, <ButtonScripts> to <Attribute> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/ButtonScripts

This node will support adding child nodes <ButtonScript>

The <ButtonScript> node will support additional child nodes <Name> and <Rank>. The full XPATH will look as follows:

Products/Product/Attributes/Attribute/ButtonScripts/ButtonScript/Name

Products/Product/Attributes/Attribute/ButtonScripts/ButtonScript/Name/Rank

The supported value is the Exact Script Name.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● This node can be set only if the ATTACH SCRIPT BUTTON flag has value 1. If this node is present when this flag has value 0, the system will return the following message: “Script in Node BUTTON SCRIPT cannot be attached if ATTACH SCRIPT BUTTON has value 0”

● Note that SAP CPQ does not support adding a new script over API call. Product Administration API can add only those scripts that have already been defined in SAP CPQ. If the provided name for a script does not exist in SAP CPQ, the system will return the following message: “Script Name in node BUTTON SCRIPT ATTACHED/ BUTTON SCRIPT is not found in SAP CPQ”

Rank

Supported values are integer values.

This node is optional or empty on product import.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is empty on product Update/Create New, the system will add this script at the end.● If a value sent in this node is not supported, the system will return the following error message: “Value in

Node BUTTON SCRIPTS ATTACHED/RANK is not supported”

SAP CPQ API DocumentationSOAP API PUBLIC 55

"Is First Value Preselected" in Attribute

As part of standard SAP CPQ behavior, the first value of any attribute is always preselected.

To override the default settings, add the following child node to <Value> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/IsFirstValuePreselected

Supported values: set “1” for True, and “0” when this flag should be deselected.

This node is optional.

Error messages

● If this node is not present in input XML, the system will move on without crashing or returning error messages; no selection will be made as a result.

● If the node is empty on product Update, the system will not update this field.● If a value sent in this node is not supported, the system will return the following error message: “Value in

the node IS FIRST VALUE IS PRESELECTED is not supported”

Preselected Flag in Attribute Value

To enable users to check the Preselected flag in Product Attribute, add a new child node, <Preselected> to <Value> input XML node. The full XPATH should look this way:

Products/Product/Attributes/Attribute/Values/Value/Preselected

Supported values: set “1” for True, and “0” when this flag should be deselected.

This node is optional.

Error messages

● If the node is not present in input XML, the system would move on without crashing or returning any error messages; no selection will be made as a result. If the product display type is Simple, or if this node has been omitted, the system will keep the current API behavior. In all other cases, the system will behave as it has been defined in this document.

● If the node is empty on product update the system will not update this field.● If a value sent in this node is not support, the system will return the following error message: “Value in

Node PRESELECTED is not supported”● If this Node has a value and attribute display type as “Button,” the system will return the following

message: “Node PRESELECTED is not supported for display type is 'BUTTON'”

Display to User in Attribute

The Display Value flag will not be present in product XML due to the current behavior of the system.

● All values sent within one attribute are set as “Displayed to user.”

56 PUBLICSAP CPQ API Documentation

SOAP API

● Attribute Values omitted from Product XML are not displayed to end users.

Product Tabs

To enable users to add tabs to the Product Configuration Layout, add <Tabs> to <Product> input XML node. The full XPATH should look this way:

Products/Product/Tabs

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages (if this node is not present, no tabs will be added to the product).

● The Tabs node cannot be added in Simple product XPATHs. When the <ProductDisplayType> is Simple, or when <Product DisplayType> node is not present, <Tabs> node is not permitted, and the system will return the following message: “Node TABS is not allowed with this product display type”

Child Nodes

The parent Tabs node can have a child node Tab. To enable users to add a child node Tab to the parent node Tabs, add a new child node <Tab> to the <Tabs> input XML node. The full XPATH should look this way:

Products/Product/Tabs/Tab

This node is optional. If the node is not present in input XML, the system will move on without crashing or returning error messages.

The Tab node can include the following nodes:

Tab System Id

The full XPATH is as follows: Products/Product/Tabs/Tab/SystemId

This tab is required and a unique identifier.

Supported values are any values.

Error messages

● If the node is not present in input XML, the system will return the following error message: “Node SYSTEM ID is required”

● If the tab sent from the external system cannot be found in SAP CPQ, the system will create it. The Tab default rank is added by the system, and it is 10.

● On product update, if a certain tab is omitted in product xml of a certain product, that tab will be removed from that product.

Name

The full XPATH is as follows: Products/Product/Tabs/Tab/Name

Supported values are any values. This node is required.

SAP CPQ API DocumentationSOAP API PUBLIC 57

ProductTabRank

The full XPATH is as follows: Products/Product/Tabs/Tab/Rank

Supported values are integer values.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without error messages. Default rank value will be 10 when it is not provided.

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node PRODUCT TAB RANK is not supported”

LayoutTemplate

The full XPATH is as follows:

Products/Product/Tabs/Tab/LayoutTemplate

Supported values are string values. This value is the name of the tab's configuration. To set tab layout template over API call, that file must have already been created in SAP CPQ; otherwise the table will not be added to the system.

This node is required.

Error messages

● If the node is not present in input XML, the system will return the following error message: “Node TAB LAYOUT TEMPLATE is required”

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node TAB LAYOUT TEMPLATE is not supported”

Visibility Permission

The full XPATH is as follows:

Products/Product/Tabs/Tab/VisibilityPermission

Supported values are: 0 (Always displayed), 1 (displayed only if it is not empty), and 2 (defines the condition for visibility).

Error messages

● If the node is not present in input XML, the system will return the following error message: “Node TAB VISIBILITY PERMISSIONS is required”

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node TAB VISIBILITY PERMISSIONS is not supported”

Visibility condition

The full XPATH is as follows: Products/Product/Tabs/Tab/VisibilityCondition

Supported values are any values.

This node is optional.

Error messages

58 PUBLICSAP CPQ API Documentation

SOAP API

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is empty on product Update, the system will remove all text present in this field.● If the provided input contains text that is longer than that supported by the system, SAP CPQ system will

return the following message: “Number of characters in Node TAB VISIBILITY CONDITION is out allowed limit”

● This node can be set only if the “Visibility permission” flag has value 2. If this node is present for the remaining 2 possibilities, the system will return the following message:

“Node TAB VISIBILITY CONDITION is not supported for provided permission type”

Show tab header in configuration

The full XPATH is as follows:

Products/Product/Tabs/Tab/ShowTabHeader

Supported values: set “1” for True, and “0” when this flag should be deselected.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is empty on product Update, the system will not update this field.● If a value sent in this node is not supported, the system will return the following error message: “Value in

Node SHOW TAB HEADER is not supported”

Attributes

The full XPATH is as follows:

Products/Product/Tabs/Tab/Attributes

Products/Product/Tabs/Tab/Attributes/Attribute

Products/Product/Tabs/Tab/Attributes/Attribute/Name

Products/Product/Tabs/Tab/Attributes/Attribute/Rank

Name

Supported value is the product attribute name. Only attributes added to the product can be placed on the tabs.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node TABS/TAB /ATTRIBUTES/ATTRIBUTE/NAME is not supported”

● On product update, if a certain attribute is omitted in product XML of a certain product (tab logic), that attribute will be removed from the tab of that product.

Rank

Supported values are integer values.

This node is optional.

SAP CPQ API DocumentationSOAP API PUBLIC 59

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node TABS/TAB /ATTRIBUTES/ATTRIBUTE/RANK is not supported.” If a rank value for a certain attribute is not sent, the system will add that attribute at the end of the list.

● If this node is present but the attribute name has not been passed, this system will ignore this value.

Attributes in Responder

To enable users to add attributes to Responder, add the following child nodes: <ResponderAttributes> and <ResponderLineItems> to the <Product> input XML node.

The full XPATHs should look this way:

Products/Product/ResponderAttributes Products/Product/ResponderLineItems

These two nodes are not allowed with Simple products.

Error messages

● When the <ProductDisplayType> is “Simple” or <ProductDisplayType> node is not present, the <Tabs> node is not allowed and the system will return the following message:

● “Node RESPONDER ATTRIBUTES is not allowed with this product display type”● “Node RESPONDER LINE ITEMS is not allowed with this product display type”

NODES

Responder Attributes

To execute the above, add a new child node, <Attribute> to <ResponderAttributes> input XML node.

The full XPATH is as follows:

Products/Product/ResponderAttributes/Attribute

Child node <Name>

The full XPATH is as follows:

Products/Product/ResponderAttributes/Attribute/Name

Supported values include the Product Attribute name. Only attributes already added to the product can be placed on the responder.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node RESPONDER ATTRIBUTES/ATTRIBUTES/ATTRIBUTE/NAME is not supported”

● On product update, if a certain attribute is omitted in product XML of a certain product (responder logic), that attribute will be removed from the responder of that product.

60 PUBLICSAP CPQ API Documentation

SOAP API

Rank

The full XPATH is as follows:

Products/Product/ResponderAttributes/Attribute/Rank

This node is optional.

Supported values are integer values.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages. If a rank for a certain attribute is not present, the system will place that attribute at the end of the list. If rank for certain attribute is not present system will put that attribute at the end of list. If there are two attributes with the same rank, the system will add them in order they are sent.

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node RESPONDER ATTRIBUTES/ATTRIBUTES/ATTRIBUTE/RANK is not supported”

Responder line items

To execute the above, add a new child node, <Attribute> to <ResponderLineItems> input XML node.

The full XPATH is as follows:

Products/Product/ResponderLineItems/Attribute

After Products/Product/ResponderAttributes enter new row for Products/Product/ResponderLineItems.

Child node <Name>

The full XPATH is as follows:

Products/Product/ResponderLineItems/Attribute/Name

Supported values are the product attribute name. Only attributes already added to the product can be placed on the responder.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning any error messages.

● If a value sent in this node is not supported, the system will return the following error message: “Value in Node RESPONDER LINE ITEMS/ATTRIBUTES/ATTRIBUTE/NAME is not supported”

● On product update, if a certain attribute is omitted in product XML of a certain product (responder logic), that attribute will be removed from the responder of that product.

● Attribute can be added to this list only if marked as a line item. In case this node is present for non-line item attributes, the system will throw the following message: “Node RESPONDER LINET ITEMS is not supported for non-line attributes”

Rank

The full XPATH is as follows:

Products/Product/ResponderLineItems/Attribute/Rank

Supported values are integer values.

This node is optional.

SAP CPQ API DocumentationSOAP API PUBLIC 61

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages. If the rank for a certain attribute is not present, the system will put that attribute at the end of the list.

● If there are two attributes with the same rank, the system will add them in the order they are sent.

Global IPython Script

To enable users to set the Global IPython Script, add child node <GlobalScripts> to the <Product> input XML node. The full XPATH should look this way:

Products/Product/GlobalScripts

This node is optional. If the node is not present in input XML, the system will move on without crashing or returning error messages.

The Parent Global Scripts node will have a Rule child node. To enable users to define the rule, add <Script> child node to the <GlobalScripts> XML node. The full XPATH should look this way:

Products/Product/GlobalScripts/Script

This node is optional. If the node is not present in input XML, the system will move on without crashing or returning error messages. If there are omitted scripts on product update, they will be removed from the product.

Nodes within Script node include the following:

Name

The full XPATH will look this way:

Products/Product/GlobalScripts/Script/Name

Supported values are those representing the exact Script name.

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is empty on product Update, the system will not add a script.● If, on product update, a script is omitted from the list of scripts attached to the Button, the system will

remove it from the product.● SAP CPQ does not support adding new scripts over API call. Product administration API can only add

scripts already defined in SAP CPQ.● If the provided script name does not exist in SAP CPQ, the system will return the following message:

“Script Name in node GLOBAL SCRIPTS/SCRIPT/NAME is not found in SAP CPQ”

Rank

The full XPATH will look this way:

Products/Product/GlobalScripts/Script/Rank

62 PUBLICSAP CPQ API Documentation

SOAP API

Event

The full XPATH is as follows:

Products/Product/GlobalScripts/Script/Events

The parent Events will have a child node, Event. The full XPATH should look this way:

Products/Product/GlobalScripts/Script/Events/Event

Supported values include the following:

● OnProductLoaded● OnProductRuleExecutionStart● OnProductRuleExecutionEnd● OnProductTabChanged● OnProductCompleted● OnProductAddedToQuote● OnProductBeforeAddToQuote

This node is optional.

Error messages

● If the node is not present in input XML, the system will move on without crashing or returning error messages.

● If the node is empty on product Update, the system will not attach a script to any Event.● Product update - if a certain event is not present in the list of events, the system will remove it from the list.● If a value sent in this node is not supported, the system will return the following error message: “Value in

Node GLOBAL SCRIPTS/SCRIPT/EVENTS/EVENT is not supported”

Related Information

SOAP API Authentication [page 376]

2.1.8 Sorting and Ranking Attributes

Here are some additional functionalities you can employ when using the Simple Product administration.

If you create a product with an attribute and, for that attribute, you add <Rank> node next to <Value> and <Value Code>, the Rank will sort only the values in Setup>Attributes, while values in Product Attributes/Options will be lined as determined by the XML. These values will get automatic sort, and in that order will be displayed in Configurator. These values will be sorted automatically and, as such, will be displayed in the Configurator.

XML example:

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator>

SAP CPQ API DocumentationSOAP API PUBLIC 63

<DisplayType>Configurable</DisplayType> <ProductSystemId>Regression_cpq</ProductSystemId> <PartNumber>Test Number</PartNumber> <ProductType>Accessories</ProductType> <ProductName> <USEnglish><![CDATA[RegressionProduct]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[RegressionAttribute]]></USEnglish> </AttributeName> <AttributeSystemId>Regression</AttributeSystemId> <AttributeType>UserSelection</AttributeType> <DisplayType>DropDown</DisplayType> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> <ValueCode>1</ValueCode> </Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>20</Rank> <ValueCode>2</ValueCode> </Value> <Value> <USEnglish><![CDATA[3]]></USEnglish> <Rank>30</Rank> <ValueCode>3</ValueCode> </Value> <Value> <USEnglish><![CDATA[4]]></USEnglish> <Rank>40</Rank> <ValueCode>4</ValueCode> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

If you add one more node, the <Sort> node, you will set the same values in the <Sort> node. Result: Rank will sort values in Setup>Attributes, while values in Product Attributes/Options will be lined as determined by <ValueCode>. The values will be sorted in an ascending order, that is from the smallest item to the largest, or in an alphabetical order.

XML example:

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Configurable</DisplayType> <ProductSystemId>Regression_cpq</ProductSystemId> <PartNumber>Test Number</PartNumber> <ProductType>Accessories</ProductType> <ProductName> <USEnglish><![CDATA[RegressionProduct]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories>

64 PUBLICSAP CPQ API Documentation

SOAP API

<Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[RegressionAttribute]]></USEnglish> </AttributeName> <AttributeSystemId>Regression</AttributeSystemId> <AttributeType>UserSelection</AttributeType> <DisplayType>DropDown</DisplayType> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> <ValueCode>4</ValueCode> <Sort>1</Sort> </Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>20</Rank> <ValueCode>3</ValueCode> <Sort>1</Sort> </Value> <Value> <USEnglish><![CDATA[3]]></USEnglish> <Rank>30</Rank> <ValueCode>2</ValueCode> <Sort>1</Sort> </Value> <Value> <USEnglish><![CDATA[4]]></USEnglish> <Rank>40</Rank> <ValueCode>1</ValueCode> <Sort>1</Sort> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

Note that this example uses the same node as before. If you use the same values in the <Sort> node for two <Values>, these two values in Product Attributes/Option will be lined as determined by the order from the <ValueCode>; other values will be sorted as determined by <Sort>. Values with the same <Sort> within the configurator will be lined as determined by the <Value> (from the smallest item to the largest, or in an alphabetical order); other values will be sorted as determined by the order from <Sort>.

XML example:

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Configurable</DisplayType> <ProductSystemId>Regression_cpq</ProductSystemId> <PartNumber>Test Number</PartNumber> <ProductType>Accessories</ProductType> <ProductName> <USEnglish><![CDATA[RegressionProduct]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[RegressionAttribute]]></USEnglish> </AttributeName>

SAP CPQ API DocumentationSOAP API PUBLIC 65

<AttributeSystemId>Regression</AttributeSystemId> <AttributeType>UserSelection</AttributeType> <DisplayType>DropDown</DisplayType> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> <ValueCode>4</ValueCode> <Sort>1</Sort> </Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>20</Rank> <ValueCode>3</ValueCode> <Sort>3</Sort> </Value> <Value> <USEnglish><![CDATA[3]]></USEnglish> <Rank>30</Rank> <ValueCode>2</ValueCode> <Sort>2</Sort> </Value> <Value> <USEnglish><![CDATA[4]]></USEnglish> <Rank>40</Rank> <ValueCode>1</ValueCode> <Sort>1</Sort> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

If you use different values in the <Sort> node, values in Product Attributes/Options will be lined in an order as determined by <Sort>; the same behavior will take place in the Configurator, as expected.

XML example:

<?xml version="1.0" encoding="utf-8"?> <Products> <Product> <Identificator>PartNumber</Identificator> <DisplayType>Configurable</DisplayType> <ProductSystemId>Regression_cpq</ProductSystemId> <PartNumber>Test Number</PartNumber> <ProductType>Accessories</ProductType> <ProductName> <USEnglish><![CDATA[RegressionProduct]]></USEnglish> </ProductName> <Categories> <USEnglish><![CDATA[Hardware]]></USEnglish> </Categories> <Attributes> <Attribute> <AttributeName> <USEnglish><![CDATA[RegressionAttribute]]></USEnglish> </AttributeName> <AttributeSystemId>Regression</AttributeSystemId> <AttributeType>UserSelection</AttributeType> <DisplayType>DropDown</DisplayType> <Values> <Value> <USEnglish><![CDATA[1]]></USEnglish> <Rank>10</Rank> <ValueCode>4</ValueCode> <Sort>1</Sort>

66 PUBLICSAP CPQ API Documentation

SOAP API

</Value> <Value> <USEnglish><![CDATA[2]]></USEnglish> <Rank>20</Rank> <ValueCode>3</ValueCode> <Sort>3</Sort> </Value> <Value> <USEnglish><![CDATA[3]]></USEnglish> <Rank>30</Rank> <ValueCode>2</ValueCode> <Sort>2</Sort> </Value> <Value> <USEnglish><![CDATA[4]]></USEnglish> <Rank>40</Rank> <ValueCode>1</ValueCode> <Sort>4</Sort> </Value> </Values> </Attribute> </Attributes> </Product> </Products>

Related Information

SOAP API Authentication [page 376]

2.2 Customer Administration SOAP API

Function name: CustomerAdministration

Authentication: SOAP API authentication [page 376]

Function description: CustomerAdministration function executes any available action on the specified Customers

List of Action values for this function:

● ADD● UPDATE● ADDORUPDATE● DELETE(Inactivate)

API parameters Username and Password identify the api user. Action parameter defines the action that will be executed, and Customersproperties XML contains search fields, which will be used for identifying customer if performed action is delete or update, and user data that will be added/updated to customers.

SAP CPQ API DocumentationSOAP API PUBLIC 67

2.2.1 Customer Administration-Input Parameters

Tag Data Type Description Required Comments

Username String (50) Only SAP CPQ admin­istrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor user name

Password String (50) Only SAP CPQ admin­istrators can execute this function. Pass­word is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor's password for the administrator user name provided in the username element

Action String (50) Action that will be exe­cuted for the customer

Yes Examples: - ADDOR­UPDATE - DELETE

XML XML XML Object Yes XML structure is shown below

Data Definition for Customer Administration input XML

Field Name Description Sample Data Type Size

SearchFileld The fields whose value will be used for search

The fields whose value will be used for search

Text 20

SearchCustomFilelds → CustomField

The custom fields whose value will be used for search

CustomCode Text 50

Id ID from SAP CPQ 12345 Text 20

ExternalId External ID (not from SAP CPQ)

000001 Text 20

Active Used to activate (deac­tivate) customers.

“0” or “1” or “False” or “True”

Text 5

FirstName First Name Harry Text 100

LastName Last Name Bruce Text 100

Company Company Name Webcom Text 100

CustomerType Type of a customer Bill To Text 10

Address1 The first address 8601 RR 2222 Text 100

Address2 The second address xxx Text 100

City City Austin Text 100

Province Province New South Wales Text 100

StateAbbrev State (2 chars) TX Text 2

68 PUBLICSAP CPQ API Documentation

SOAP API

Field Name Description Sample Data Type Size

ZipCode ZipCode ZipCode Text 10

CountryAbbrev Country/Region (3 chars)

USA Text 3

TerritoryName Territory Name North America Text 100

BusinessPhone Phone Number Text 100

BusinessFax Fax Number Text 100

EMail Email address Text 100

OwnerID UserID from SAP CPQ that Customer belongs to

Text 20

OwnerUserName UserName from SAP CPQ that Customer belongs to

Text 20

CRMAccountId CRM Contact ID Text 100

CRMContactId CRM Account ID Text 100

Example for company properties XML

<Root> <SearchFields Priority ="1"> <SearchField>CRMAccountId</SearchField> <SearchField>FirstName</SearchField> <SearchField>StateAbbrev</SearchField> <SearchCustomFields> <CustomField> <Name>CustomCode</Name> </CustomField> </SearchCustomFields> </SearchFields> <Customers> <Customer> <Id>23</Id> <ExternalId></ExternalId> <Active>0</Active> <FirstName>Harry</FirstName> <LastName>Bruce</LastName> <CustomerType></CustomerType> <Company>Procter &amp; Gamble Company, The</Company> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <Province></Province> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail> <OwnerID>234</OwnerID> <OwnerUserName>MitchB</OwnerUserName>

SAP CPQ API DocumentationSOAP API PUBLIC 69

<CRMAccountId>0036000000Kq8eU</CRMAccountId> <CRMContactId>0016000000F0qvQ</CRMContactId> <CustomFields> <CustomField> <Name>CustomCode</Name> <Value>AAA111</Value> </CustomField> </CustomFields> </Customer> <Customer> <Id>32</Id> <ExternalId></ExternalId> <FirstName>John</FirstName> <LastName>Steven</LastName> <CustomerType></CustomerType> <Company>Procter &amp; Gamble Company, The</Company> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <Province></Province> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail> <OwnerID></OwnerID> <OwnerUserName>MitchB</OwnerUserName> <CRMAccountId></CRMAccountId> <CRMContactId></CRMContactId> <CustomFields> <CustomField> <Name>CustomCode</Name> <Value>BBB222</Value> </CustomField> </CustomFields> </Customer> <Customer> <Id>2223</Id> <ExternalId></ExternalId> <FirstName>Tomas</FirstName> <LastName>Johanson</LastName> <CustomerType></CustomerType> <Company>Procter &amp; Gamble Company, The</Company> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <Province></Province> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail> <OwnerID></OwnerID> <OwnerUserName></OwnerUserName> <CRMAccountId>0036000000332fg</CRMAccountId> <CRMContactId>0016000000F3432</CRMContactId> <CustomFields> <CustomField> <Name>CustomCode</Name> <Value>CCC333</Value> </CustomField> </CustomFields> </Customer> </Customers>

70 PUBLICSAP CPQ API Documentation

SOAP API

</Root>

Related Information

SOAP API Authentication [page 376]

2.2.2 Customer Administration - Output Parameters

Tag Data Type Description Required Comments

Result XML This function will gen­erate XML document as result of the per­formed actions

Yes Result is always gener­ated

XML definition

Element Name Data Type Description Required Comments

Result Y

Status String(10) OK if passed values are verified and all sent customers success­fully passed requested action, otherwise NOK

Y

Message String (500) Msg generated by SAP CPQ

N

Errors N If any error occurs this node will contain info about it.

Error Y

ErrorCode String(50) Error code Y

Description String(500) Error description mes­sage

Y

Customer String(1000) Xml containing all data for Customer that caused an error

Y

SAP CPQ API DocumentationSOAP API PUBLIC 71

Result XML Examples

Example for the successful customer creation

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>OK</Status> <Message>All Customers added</Message> </Result>

Example for the missing id and ExternalId

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>NOK</Status> <Message>Update failed</Message> <Errors> <Error> <ErrorCode>xxxxxxx</ErrorCode> <Description>More than one customer found with provided search values</Description><Customer> <Id></Id> <ExternalId></ExternalId> <FirstName>Tomas</FirstName> <LastName>Johanson</LastName> <Company>Procter &amp; Gamble Company, The</Company> <CustomerType></CustomerType> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <Province></Province> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail><OwnerID></OwnerID> <OwnerUserName></OwnerUserName> <CRMAccountId>0036000000332fg</CRMAccountId> <CRMContactId>0016000000F3432</CRMContactId> </Customer> </Error><Error> <ErrorCode>yyyyyyy</ErrorCode> <Description>No Customer found with provided search values.</Description><Customer> <Id>23</Id> <ExternalId></ExternalId> <FirstName>Mark</FirstName> <LastName>Huges</LastName> <Company>Procter &amp; Gamble Company, The</Company> <CustomerType></CustomerType> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <Province></Province> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax>

72 PUBLICSAP CPQ API Documentation

SOAP API

<EMail></EMail> <OwnerID></OwnerID> <OwnerUserName></OwnerUserName> <CRMAccountId>0036000000332fg</CRMAccountId> <CRMContactId>0016000000F3432</CRMContactId> </Customer> </Error> </Errors> </Result>

Related Information

SOAP API Authentication [page 376]

2.2.3 Customer Administration Details

<SearchFields> - not required

● (attribute) Priority =“1” -If set to 1, fields listed in SearchFields nodes while have priority over ID and externalID nodes during search. This is discussed later.

<SearchField>

<Customers>

● <Customer>● <Id> - Not required*● <ExternalId> - Not required*● <Active> - Not required

This node is not required, but can be used to activate/deactivate customers. Deactivated customers can stay attached to quotes (old quotes), but they are not participating in search when a user wants to attach a customer to quote. (Shipping Info page, customer lookup and Ajax lookup actions). If this node is not present, the customer will stay active/inactive just the way it was. If adding new customers, and this node is not provided, it will default to “true” - so customers will be added as “active”.

● <FirstName> - Not required*● <LastName> - Not required*● <Company> - Not required*● <CustomerType> - - Not required*● <Address1> - Not required*● <Address2> - Not required*● <City> - Not required*● <Province> - Not required*● <StateAbbrev> - Not required*

Two letter abbreviation for one of the States defined in SAP CPQ admin. If supplied value is not recognized as valid two letter state abbreviation the customer will not be created/updated and the result sent to the API caller will contain the reason for the action failure.

SAP CPQ API DocumentationSOAP API PUBLIC 73

● <ZipCode> - Not required*● <CountryAbbrev> - Not required*

Three letter country/region abbreviation for one of the Countries defined in SAP CPQ admin. If supplied value is not recognized as valid three letter country/region abbreviation the customer will not be created/updated and the result sent to the API caller will contain the reason for the action failure.

● <TerritoryName> - Not required*

If supplied it should contain a name of a defined Territory in SAP CPQ admin. If the value is not recognized as valid Territory name the customer will not be created/updated and the

result sent to the API caller will contain the reason for the action failure.

● <BusinessPhone> - Not required*● <BusinessFax> - Not required*● <Email> - Not required*

This field should contain valid email address. If the value is not valid email address the customer will not be created/updated and the result sent to the API caller will contain the reason for the action failure.

● - <OwnerID> - Not required*● <OwnerUserName> - Not required*● <CRMAccountId> - Not required*● <CRMContactId> - Not required*

* What fields are required is administered in Customer Fields

Permission » Advanced Permissions for Bill To Role, Default Status and User Type of User whose UserName is provided in API call parameters. Note that, if you change permissions to be more restrictive, next time you want to update existing customers, you will need to provide the data that was not required previously, or the update will fail.

* Customer field name and label must be the same, but they can have more than one word;name:“cust field test”, label: “cust field test.”

Related Information

SOAP API Authentication [page 376]

2.2.4 Customer Administration Execution Workflow

● The supplied username and password are checked for security reasons, if check fails, the API call will fail.● If required action is Update, AddOrUpdate or Delete the node SearchFields is deserialized.● If a number of provided customers exceeds allowed value - 50, the API call will fail.● Customer nodes are one by one deserialized from input XML.● Depending on the requested API action, the search of existing customers is performed, or the deserialized

customer is being added (saved) in SAP CPQ DB without search.● If required action is Delete, Update or AddOrUpdate the search is performed in SAP CPQ for customer.

Search rules are described later.

74 PUBLICSAP CPQ API Documentation

SOAP API

● If search returns more than one customer, the search will be considered as failed: Delete, Update or AddOrUpdate action will fail for current customer and error XML will be generated and added to result XML, and the next customer will be deserialized from input xml. However, if action is Add, the search won't be performed, and new customer will be created using the provided data.

● If search doesn’t return any value, AddOrUpdate action will be treated as Add action, but Delete and Update will fail for current customer, and error XML will be added to result XML, and the next customer will be deserialized from input XML.

● If search returns only one customer record, desired action will be executed. If it is a Delete action, and for some reason deleting of current customer is impossible (it is already assigned to a quote, for example), the customer will be inactivated, so it can't be inserted in existing or new quotes. It will still, however, stay assigned to the quotes he was assigned to.

● If action is Add, and one of required fields is missing, deserialization for current customer will fail, and its input XML will be included in API call results. Newly added customers are assumed to be “active”, if “active” node is not supplied.

● If action is AddOrUpdate or Update, after all input XML nodes are reflected to existing customer, if it turns out that some customer's fields are now blank that are required (either if you erased them in this API call, or If they were not populated in the first place since the customer is created), the action will fail for existing customer, and its input XML will be added to error XML. The API call will move on to next customer node.

● If action is Add, Customer's Id node (which should represent customer's ID from SAP CPQ system) will be ignored: he will be given its new, unique SAP CPQ ID.

● When the required action is performed for all provided customers, the result XML will be returned.

Related Information

SOAP API Authentication [page 376]

2.2.5 Customer Searching Rules

There are two scenarios for performing the search.

1. There are no SearchFields provided: ID and ExternalID have priority successively. If ID is provided, the customer will be searched by SAP CPQ ID, and External ID will be ignored. If the value of the ID field is empty, ExternaID will be used for the search.

2. We have two cases if SearchFields are provided, depending on Priority attribute of SearchFields node:○ Priority = “1”; the search will be performed as a combination of the fields that are provided as search

fields. If the search fails (returns none or multiple Customers), the search will be tried again like described in scenario #1.

○ Priority has any other value; first, the search will be tried like described in scenario #1. If search fails, the search will be performed as a combination of the fields that are provided as search fields. If a value for a search field is missing or empty, it will be omitted from search condition.

SAP CPQ API DocumentationSOAP API PUBLIC 75

Search Tips and Tutorials

● Currently, the SAP CPQ API Customer Administration does not support having more than one custom field in the “search custom field” section. The custom field specified in the search section must be added for each customer in the XML file respective to their custom field list; otherwise, when importing the XML an error message will pop up.

● Actions delete, update and addupdate work only with a single customer at one given time. If using search parameters we don’t find one distinct customer, or we find more than one, the specified search field is overrun and search parameters are defined by the customer’s ID or ExternalID.When using this type of search, the first customer that the system finds will be returned by his ID. If the customer is not found, the customer will be searched by his ExternalID. Regardless of values entered in other search fields, the system will return the first customer it finds. If, after completing our search, we still cannot find a single customer, an error message will pop up – except for add action for which the system does not use the search function

● To avoid any accidental updates or customer deletes, the search field and parameters should be picked for their respective values so that only a single customer will be affected by these actions. This isn’t as easy because only the SAP CPQ ID is a valid identifier of a single customer. In other words, there is a possibility that a combination of other search fields can return more than one customer.SoapUI seems to interpret spaces and new line characters a bit differently than other API App so this should be written in the same line as follows: Instead of these lines in XML

<CustomFields> <CustomField> <Name>JasonTest</Name> <Value>Hello</Value> </CustomField> </CustomFields>

add

<CustomFields><CustomField><Name>JasonTest</Name><Value>Hello</Value></CustomField></CustomFields>

* all in one line with no spaces

Related Information

SOAP API Authentication [page 376]

2.2.6 Customer Updating Rules

If an existing customer is being updated (via AddOrUpdate or via Update action) the updating works as follows:

● After search returned an unique customer, it is being loaded from database.● Customer data that is deserialized from input XML will be used to update existing customer data.● If a node (field) in input XML is left blank (empty), it will erase existing SAP CPQ customer's corresponding

field's value. I.e. If you provide nothing for <FirstName> node, the existing customer's first name will be set to blank.

76 PUBLICSAP CPQ API Documentation

SOAP API

● If a node (field) in input XML is completely left over, it will not update the corresponding existing customer's field. I.e. If you omit <FirstName> node from input XML, the existing customer will preserve its original first name.

● If you try to erase some field's value (by providing empty node in input XML), and that field is a required field, updating of current customer will fail, the customer's input XML will be added to error results, and the API will move on to deserialize and update next customer from input XML.

Related Information

SOAP API Authentication [page 376]

2.2.7 Input XML Schema - Customer Administration

<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="SearchFields" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="SearchField" type="xs:string" minOccurs="0" /> </xs:sequence> <xs:attribute name="Priority" type="yesno" use="required" /> </xs:complexType> </xs:element> <xs:element name="Customers" minOccurs="1" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="50" name="Customer" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="Id" type="xs:unsignedInt" maxOccurs="1" /> <xs:element name="ExternalId" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element minOccurs="0" name="Active" type="yesno" maxOccurs="1" /> <xs:element name="FirstName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="LastName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CustomerType" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Company" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Address1" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Address2" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="City" type="xs:string" maxOccurs="1" minOccurs="0" />

SAP CPQ API DocumentationSOAP API PUBLIC 77

<xs:element name="Province" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="StateAbbrev" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ZipCode" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CountryAbbrev" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="TerritoryName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="BusinessPhone" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="BusinessFax" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="EMail" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="OwnerID" type="xs:unsignedInt" maxOccurs="1" minOccurs="0" /> <xs:element name="OwnerUserName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CRMAccountId" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CRMContactId" type="xs:string" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="yesno"> <xs:restriction base="xs:string"> <xs:enumeration value="1" /> <xs:enumeration value="0" /> </xs:restriction> </xs:simpleType> </xs:schema>

Related Information

SOAP API Authentication [page 376]

2.2.8 Output XML Schema - Customer Administration

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result">

78 PUBLICSAP CPQ API Documentation

SOAP API

<xs:complexType> <xs:sequence> <xs:element name="Status" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element name="Message" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Errors" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Error" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="ErrorCode" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Description" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Customer" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Id" type="xs:unsignedInt" maxOccurs="1" minOccurs="0" /> <xs:element name="ExternalId" maxOccurs="1" type="xs:string" minOccurs="0" /> <xs:element name="FirstName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="LastName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Company" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CustomerType" maxOccurs="1" type="xs:string" minOccurs="0" /> <xs:element name="Address1" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Address2" maxOccurs="1" type="xs:string" minOccurs="0" /> <xs:element name="City" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Province" maxOccurs="1" type="xs:string" minOccurs="0" /> <xs:element name="StateAbbrev" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ZipCode" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CountryAbbrev" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="TerritoryName" maxOccurs="1" type="xs:string" minOccurs="0" /> <xs:element name="BusinessPhone" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="BusinessFax" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="EMail" maxOccurs="1" type="xs:string" minOccurs="0" /> <xs:element name="OwnerID" maxOccurs="1" type="xs:unsignedInt" minOccurs="0" /> <xs:element name="OwnerUserName" maxOccurs="1" type="xs:string" minOccurs="0" /> <xs:element name="CRMAccountId" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CRMContactId" type="xs:string" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>

SAP CPQ API DocumentationSOAP API PUBLIC 79

</xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

Related Information

SOAP API Authentication [page 376]

2.3 User Administration SOAP API

Function name: UserAdministration

Authentication: SOAP API authentication [page 376]

Function description: UserAdministration function executes any available action on the specified User

List of Action values for this function:

● ADD● UPDATE● ADD OR UPDATE● DELETE

API parameters Username and Password identify the api user. Action parameter defines the action that will be executed, and Userproperties XML contains the user data that will be added/updated to user.

When users are created by API, Email with log-in information is not sent to newly created users.

2.3.1 User Administration - Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only SAP CPQ admin­istrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor user name

80 PUBLICSAP CPQ API Documentation

SOAP API

Tag Data Type Description Required Comments

Password String (25) Only SAP CPQ admin­istrators can execute this function. Pass­word is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor's password for the administrator user name provided in the username element

Action String (50) Action that will be exe­cuted for the user

Yes Examples: - ADDOR­UPDATE - DELETE

UserProperties XML Object Passing User Data

Yes The UserProperties XML structure is shown below

Data Definition for User Properties XML

Field Name Description Sample Data Type Size

USERNAME User Name (once set does not change)

Jasmith123 Text

TITLE User Gender Title Mr. Text

FIRSTNAME User First Name Joe Text

LASTNAME User Last Name Smith Text

TYPE Group User Belongs To (must be pre-config-ured by SAP CPQ Ad­ministrator)

CD2 Text

EMAILADDRESS User E-Mail Address [email protected] Text

ADDRESS1 User First Address Line 123 Letters Way Text

ADDRESS2 User Second Address Line

P.O. Box 123 Text

CITY User City Mytown Text

STATE User State WI Text

ZIPCODE User Zip Code 55555 Text

COUNTRY User Country/Region United States Text

PHONENUMBER User Phone Number 1E+10 Text

FAXNUMBER User FAX Number 8.889E+09 Text

COMPANYCODE Code of the Company User Belongs to (usu­ally is the SAP num­ber) Company must exist (be pre-config-ured by SAP CPQ ad­ministrator

9.99E+09 Text

SAP CPQ API DocumentationSOAP API PUBLIC 81

Field Name Description Sample Data Type Size

ISSSOUSER Defines whether a user signs in with the Feder­ated Single Sign-On method, or with a user­name and a password.

1, true, 0, false Text

DEFAULTDICTIONARY Dictionary (can be set to be either system or custom)

Text

ORDERINGPARENT Ordering parent SAP CPQ user name

nzagorac Text

MANAGINGPARENT Managing parent SAP CPQ user name

ppetrovic Text

APPROVEPARENT Approving parent SAP CPQ user name

vzaric Text

CrmUserId Integration user Id WEBCOM/CLESAR@WEBCO­MINC.COM

Text

CrmName CRM User name WEBCOM/CLESAR@WEBCO­MINC.COM

Text

CrmUserName Integration User name Text

CrmPassword Integration password webcom123 Text

Example for User Addministration properties XML

<USERPROPERTIES> <USERNAME>ksmith</USERNAME> <PASSWORD AllowSameAsExisting="1">xdF5460Bf</PASSWORD> <TITLE>Mr.</TITLE> <FIRSTNAME>Kyle</FIRSTNAME> <LASTNAME>Smith</LASTNAME> <TYPE>Sales</TYPE> <EMAILADDRESS>[email protected]</EMAILADDRESS> <ADDRESS1>Summer Street</ADDRESS1> <ADDRESS2 /> <ADMINISTRATOR>TRUE</ADMINISTRATOR> <CITY>New Berlin</CITY> <STATE>WI</STATE> <ZIPCODE>53151</ZIPCODE> <COUNTRY>United States</COUNTRY> <PHONENUMBER>262-785-8320</PHONENUMBER> <FAXNUMBER /> <COMPANYCODE>SAP</COMPANYCODE> <MUSTCHANGEPASSWORD>0</MUSTCHANGEPASSWORD> <PASSWORDLOCKED>0</PASSWORDLOCKED> <DEFAULTDICTIONARY></DEFAULTDICTIONARY> <ORDERINGPARENT>jsmith</ORDERINGPARENT> <MANAGINGPARENT>msmith</MANAGINGPARENT> <APPROVINGPARENT>msmith</APPROVINGPARENT> <CrmUserId>SAP/[email protected]</CrmUserId> <CrmName>SAP/[email protected]</CrmName>

82 PUBLICSAP CPQ API Documentation

SOAP API

<CrmUserName></CrmUserName> <CrmPassword>crm_123zfgTlm</CrmPassword> </USERPROPERTIES>

Details about each XML node in this example can be found in User administration API XML Details [page 88].

2.3.2 User Administration - Output Parameters

Tag Data Type Description Required Comments

Result XML This function will gen­erate XML document as result of the per­formed actions

Yes Result is always gener­ated

XML definition

Element Name Data Type Description Required Comments

RESPONSE Y

RESULT String(10) OK if if requested com­pany admin task has been completed NOK if requested company admin task did

Y

MESSAGE String (50) Msg generated by SAP CPQ

N

ERROR Node containing error description

N

CODE String(50) SAP CPQ Error code N

2.3.3 Function Workflow

● The supplied username and password are checked for security reasons.● The username node is checked to see if it contains value, because it is a required field. If username node is

left empty, the API call will end, and the NOK result xml will be returned to caller.● The action node is parsed. If the action is “DELETE” then the API will try to delete the supplied user from

DB. Whether delete succeeds or not, the resulting XML will contain OK or NOK result.● If the action is ADDORUPDATE or ADD or UPDATE, the API will do the following:

○ The supplied username is used to find existing user in cpq DB.○ If the action is update, and the user with supplied username does not exist in SAP CPQ database, the

API call will fail, and the caller will get the response XML with error message.

SAP CPQ API DocumentationSOAP API PUBLIC 83

○ If the user is found, this user is going to be updated with new supplied XML data.○ If the user with given username already exists, and the action is ADD, the existing user will be updated

with new supplied data, so there is no way to create two users with same username.○ If the user is not found, and the action is ADDORUPDATE or ADD, the new user will be created using

new supplied XML data, and given username.○ The input XML is deserialized to SAP CPQ user object.User's name property will be deserialized to

combination of first name and last name from input XML. If updating existing user, this will happen only if name property is empty on the existing user that is being updated. While deserializing, ordering parent / managing parent / approving parent user names are checked in SAP CPQ system. (These nodes should contain SAP CPQ usernames). If any of these is supplied wrong, the API call will fail, and the XML returned to caller will contain an error message specifying that the error occurred while trying to find specified parent username in SAP CPQ system. This same workflow applies if XML contains invalid company code or user type – when it's invalid, the API call will fail and the caller will get the xml result describing the error.

○ Note about treating empty nodes while deserializing:When an empty node is supplied, and API is updating an existing user, the user data from all nodes (even empty ones) will overwrite old user data. Overwriting user's values with empty data is however, not the case with required fields. If supplying empty nodes which are required, the API call will fail. If omitting not required node values, they will not overwrite old user's fields. When empty nodes are supplied, and API is creating new user, the user will be created, having values as specified in input XML. However, API call will fail if any of the required nodes has no value in input XML.

○ The SAP CPQ user object is deserialized to appropriate table row○ Users table is being updated with new row data if API is updating existing user, or the table is being

appended with new data if API is creating new user.○ If no errors occurred during API call, the OK result XML will be returned to caller. Otherwise, the NOK

result XML will be returned, with information about the error.

Possible errors:

1. The username and/or password used for authentication are incorrect2. The username is not present in input XML3. The action is not supplied to API4. The user type node is left blank or supplied wrong.5. Any of the required nodes are supplied blank, or omitted from input XML.6. E-mail address is supplied in a non standard format. (invalid e-mail address).7. Ordering parent / managing parent / approving parent nodes are supplied with wrong data (user names

that do not exist in SAP CPQ system).8. Company code is supplied wrong in input xml.

2.3.4 General Deserialization Rules

This section describes process of deserialization of the input XML.

Depending of the API action (DELETE/ADD/UPDATE/ADDORUPDATE), the input XML is treated differently. If the action is ADD, all nodes that are described as required in below section, are really in need to be present in input XML. When action is UPDATE, the required nodes can be omitted from input XML. However, if these nodes are present in input XML, they must not be empty. If the action is ADDORUPDATE and the existing user is being updated, the required nodes can be omitted. In that case, the existing user will preserve previous value

84 PUBLICSAP CPQ API Documentation

SOAP API

for that node. However, if the action is ADDORUPDATE and the new user is being created, the API call will fail if a required node is not supplied.

Every node from input XML is being copied to respective SAP CPQ user field. If the node is not present in input XML, it will not be copied, and the respective user's field will remain as it was before API call. So, omit the node if you don't want to affect its previous content. If the node is present, and if it is empty (has no content), it will erase respective user's field. If the node is required, and is supplied empty, the API call will fail, and the caller will get the XML response with error message. Required fields cannot be erased from existing users, and no new users can be created without setting required fields. If the node is required, and is not supplied in input XML, and the action is UPDATE, the user will preserve his original respective field. However, if the action is ADD, the API call will fail, returning the XML to the caller, with error message. For ADD, the required nodes must be present. ADDORUPDATE allows the nodes to be absent, but the API call will fail, if ADDORUPDATE action is creating new user and not updating existing one. In that case, the caller will receive result XML with error message.

The nodes that should contain boolean values accept only '1' , '0', 'true' and 'false' values.

2.3.5 Input XML Scheme - User Administration

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="USERPROPERTIES"> <xs:complexType> <xs:sequence> <xs:element name="USERNAME" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="PASSWORD" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="TITLE" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="FIRSTNAME" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="LASTNAME" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="TYPE" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="EMAILADDRESS" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ADDRESS1" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ADDRESS2" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CITY" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="STATE" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ZIPCODE" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="COUNTRY" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="PHONENUMBER" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="FAXNUMBER" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="COMPANYCODE" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="MUSTCHANGEPASSWORD" type="yesno" maxOccurs="1" minOccurs="0" /> <xs:element name="PASSWORDLOCKED" type="yesno" maxOccurs="1" minOccurs="0" /> <xs:element name="ORDERINGPARENT" type="xs:string" maxOccurs="1" minOccurs="0" />

SAP CPQ API DocumentationSOAP API PUBLIC 85

<xs:element name="MANGAGINGPARENT" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="APPROVINGPARENT" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CrmUserId" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CrmName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CrmUserName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="CrmPassword" type="xs:string" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="yesno"> <xs:restriction base="xs:string"> <xs:enumeration value="0" /> <xs:enumeration value="1" /> <xs:enumeration value="true" /> <xs:enumeration value="false" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.3.6 Output XML Scheme - User Administration

<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RESPONSE"> <xs:complexType> <xs:sequence> <xs:element name="RESULT" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element name="MESSAGE" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ERROR" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="CODE" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="MESSAGE" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

86 PUBLICSAP CPQ API Documentation

SOAP API

2.3.7 Managing User Custom Fields via API Method

The node <CustomFields> is not required and may have children where custom fields are specified:

<CUSTOMFIELD> <NAME>CUSTOMFIELDSNAME</NAME> <VALUE>CUSTOMFIELDVALUE</VALUE> </CUSTOMFIELD

SAP CPQ will look for specified custom fields and assign values accordingly.

SAP CPQ will not update custom fields nor delete their content during user update unless this has been specified in XML.

SAP CPQ

If the provided custom field is not recognized in SAP CPQ, the following message will pop up Specified Custom Field ‘Street 3’ doesn’t exist in the system.

The response will be as follows:

<RESPONSE XMLNS=""> <RESULT>NOK</RESULT> <ERROR> <CODE>103005</CODE> <MESSAGE> SPECIFIED CUSTOM FIELD 'STREET 3' DOESN'T EXIST IN THE SYSTEM</MESSAGE> </ERROR> </RESPONSE>

The following is an input XML sample that can be used when calling the API Method for updating custom fields:

<USERPROPERTIES> <USERNAME>AOSHEPAR</USERNAME> <PASSWORD>EASUP4SSW0RD</PASSWORD> <TITLE>MR.</TITLE> <FIRSTNAME>ADAM</FIRSTNAME> <LASTNAME>SHEPARD</LASTNAME> <TYPE>BU DRIVES</TYPE> <EMAILADDRESS>[email protected]</EMAILADDRESS> <ADDRESS1>16250 W GLENDATE DR</ADDRESS1> <ADDRESS2 /> <CITY>NEW BERLIN</CITY> <STATE>WI</STATE> <ZIPCODE>53151</ZIPCODE> <COUNTRY>UNITED STATES</COUNTRY> <PHONENUMBER>111222333</PHONENUMBER> <FAXNUMBER /> <COMPANYCODE>ACME</COMPANYCODE> <MUSTCHANGEPASSWORD>0</MUSTCHANGEPASSWORD> <PASSWORDLOCKED>0</PASSWORDLOCKED> <ORDERINGPARENT>NZAGORAC</ORDERINGPARENT> <MANGAGINGPARENT>PPETROVIC</MANGAGINGPARENT> <APPROVINGPARENT>VZARIC</APPROVINGPARENT> <CRMUSERID>WEBCOM/[email protected]</CRMUSERID> <CRMNAME>WEBCOM/[email protected]</CRMNAME> <CRMUSERNAME></CRMUSERNAME> <CRMPASSWORD>WEBCOM123</CRMPASSWORD> <CUSTOMFIELDS>

SAP CPQ API DocumentationSOAP API PUBLIC 87

<CUSTOMFIELD> <NAME>STREET 3</NAME> <VALUE>YONGE STREET</VALUE> </CUSTOMFIELD> <CUSTOMFIELD> <NAME>CELL PHONE NUMBER</NAME> <VALUE>4422445666</VALUE> </CUSTOMFIELD> </CUSTOMFIELDS> </USERPROPERTIES>

NoteKeep in mind that XML is case sensitive. This means that the node names written in uppercase and lowercase letters will not accomplish the same results. The convention of the Simple User API calls should be created in the uppercase letters.

2.3.8 User administration API XML Details

<USERNAME>

● This node is required.● This node should contain the desired username.● If this node is missing and the API is adding a new user, the API call will fail and the XML with error will be

sent to the caller.● If this node is missing and the API is updating an existing user, the existing user's username will remain as

it was before the API call.● If this field is left blank, the API call will fail and the result containing error will be sent to the API caller.

<PASSWORD>

● The user's password will be set to the text value of this node.● The password must meet the following rules:

The password must be between 8 and 50 characters long;The password must not contain a username;The password must not contain the previous password;The password must contain only alphabetic and numeric characters.

● The AutoGenerateForNew attribute generates new passwords for new users. Passwords are not updated for existing users via this attribute.

● If you are creating a new user, this node is required.● If you want to update a user, you can exclude this node so that the password for the existing users remains

the same.● If you are not sure if the user already exists, you will use the ADDORUPDATE action. In this case, you must

provide the <PASSWORD> node. In addition, you must provide an attribute AllowSameAsExisting with value 1 for the node <PASSWORD>. This way, you are making sure you are providing the user's existing password if the user exists. If the user does not exist, a new user will be created with the provided password.

● If this node is supplied empty, no matter what the action is, the API call will fail and the caller will receive XML with an error message. You cannot erase the user's password, nor can you create a user with an empty password.

88 PUBLICSAP CPQ API Documentation

SOAP API

● If you want to create a new user without providing a password, you need to use one of the following formats in the <PASSWORD> node: <PASSWORD AutoGenerate=“1”/> or <PASSWORD AutoGenerate=“1”></PASSWORD>. When you use one of the aforementioned formats in the <PASSWORD> node, SAP CPQ generates a random password. You can also use <PASSWORD AutoGenerate=“1”>RandomPassword</PASSWORD> for the <PASSWORD> node. In this case, SAP CPQ overrides RandomPassword by automatically generating a password.

<TITLE>

● This node is not required.● The user's title will be set to the text value of this node.● If this node is left empty, the user will have the title set to blank.● If this node is not present in the input XML, and the API is updating the existing user, the existing user will

preserve the original title.

<FIRSTNAME>

● This node is required.● The user's first name will be set to the text value of this node.● If this node is not present in the input XML, and the API is updating the existing user, the user will preserve

the original first name.● If this node is left empty, the API call will fail, and the result XML with error code will be sent to the API

caller. You cannot erase user's first name, as it is a required field.● If this node is not present and the API is adding a new user, the API call will fail, and the caller will get

resulting XML with an error message.

<LASTNAME>

● This node is not required.● The user's last name will be set to the text value of this node.● If this node is left empty, the user will have the last name set to blank.● If this node is not present in the input XML, and the API is updating the existing user, the user will preserve

the original last name.

<TYPE>

● This node is required.● The user's group will be set according to the value of this node.● If the user group with a supplied name does not exist in SAP CPQ DB, the API call will fail and the caller will

get XML with an error message.● If this node is left empty, the API call will fail, and the caller will get XML with an error message.● If this node is not present in the input XML, and the API is updating an existing user, the user will preserve

the original user group.● If this node is not present in the input XML, and the API is adding a new user, the call will fail, and the caller

will get XML with an error message.

<EMAILADDRESS>

● This node is not required.● The user's email address will be set to the text value of this node.● If the supplied e-mail address is invalid, the API call will fail, and the caller will get XML response with an

error message.● If this node is left empty, the user will have the email address set to blank.

SAP CPQ API DocumentationSOAP API PUBLIC 89

● If the API is updating an existing user, and the input XML does not contain this node, the existing user will preserve the original e-mail address.

<ADDRESS1>

● This node is not required.● The user's address 1 will be set to the text value of this node.● If this node is left empty, the user will have the address 1 set to blank.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original address 1.

<ADDRESS2>

● This node is not required.● The user's address 2 will be set to the text value of this node.● If this node is left empty, the user will have the address 2 set to blank.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original address 2.

<CITY>

● This node is not required.● The user's city will be set to the text value of this node.● If this node is left empty, the user will have the city set to blank.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original city.

<STATE>

● This node is not required.● Two-letter abbreviation for user's state.● The user's state will be set to the text value of this node.● If this node is left empty, the user will have the state set to blank.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original state.

<ZIPCODE>

● This node is not required.● The user's zip code will be set to the text value of this node.● If this node is left empty, the user will have the zip code set to blank.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original zip code.

<COUNTRY>

● This node is required.● The user's country/region will be set to the text value of this node.● The user’s country/region can be represented either as a two-letter country/region code, a three-letter

country/region code or the full name of the country/region.● If this node is left empty, the API call will fail, and the caller will get XML with an error message. You cannot

erase a user's country/region.● If the API is updating an existing user, and this node is not present in the input XML, the user will preserve

the original country/region.

90 PUBLICSAP CPQ API Documentation

SOAP API

● If the API is adding a new user, and this node is not present in the input XML, the API call will fail, and the caller will get XML with an error message.

<PHONENUMBER>

● This node is not required.● The user's phone number will be set to the text value of this node.● If this node is left empty, the user will have the phone number set to blank.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original phone number.

<FAXNUMBER>

● This node is not required.● The user's fax number will be set to the text value of this node.● If this node is left empty, the user will have the fax number set to blank.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original fax number.

<COMPANYCODE>

● This node is required.● This node represents the code of the company the user belongs to.● If the company with a supplied code does not exist in SAP CPQ, the API call will fail, and the caller will get

XML with an error message.● If this node is left blank, the API call will fail, and the caller will get XML with an error message. You cannot

erase a user's company code.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original company code.● If the API is adding a new user, and this node is not present in the input XML, the API call will fail, and the

caller will get an XML response with an error message.● If the company code is not recognized in SAP CPQ, the API call will fail, and the caller will get XML

containing an error message.

<DEFAULTDICTIONARY>

● This node is not required.● When the node is not provided or is provided empty, the system assigns the default system dictionary to

the newly created user.● To assign a specific system dictionary, include the name of the dictionary in the node (for example,

<DEFAULTDICTIONARY>NameofSystemDictionary</DEFAULTDICTIONARY>).● To assign a custom dictionary, include isCustom=“true” in the node (for example,

<DEFAULTDICTIONARY isCustom=“true”>NameofCustomDictionary</DEFAULTDICTIONARY>).

<ORDERINGPARENT>

● This node is not required.● The user's ordering parent will be set according to this node's value.● This node's value should contain the ordering parent's username from SAP CPQ.● If the ordering parent's username is not found in SAP CPQ DB, the API call will fail, and the caller will get

XML with an error message.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original ordering parent.

SAP CPQ API DocumentationSOAP API PUBLIC 91

● If this node is left blank, the user's ordering parent will be erased (or not saved if adding a new user).

<MANAGINGPARENT>

● This node is not required.● The user's managing parent will be set according to this node's value.● This node's value should contain the managing parent's username from SAP CPQ.● If the managing parent's username is not found in SAP CPQ DB, the API call will fail, and the caller will get

XML with an error message.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original managing parent.● If this node is left blank, the user's managing parent will be erased (or not saved if adding new user).

<APPROVINGPARENT>

● This node is not required.● The user's approving parent will be set according to this node's value.● This node's value should contain the approving parent's username from SAP CPQ.● If the approving parent's username is not found in SAP CPQ DB, the API call will fail, and the caller will get

XML with an error message.● If the API is updating an existing user, and this node is not present in the input XML, the existing user will

preserve the original approving parent.● If this node is left blank, the user's approving parent will be erased (or not saved if adding a new user).

<CrmUserId>

● This node is not required.● If this node is left blank or does not exist, the Integration User Id will be erased (or not saved if adding a new

user).

<CrmName>

● This node is not required.● If this node is left blank or does not exist, the CRM User name will be erased (or not saved if adding a new

user).

<CrmUserName>

● This node is not required.● If this node is left blank or does not exist, the Integration User name will be erased (or not saved if adding a

new user).

<CrmPassword>

● This node is not required.● If this node is left blank or does not exist, the Integration password will be erased (or not saved if adding a

new user).

NoteAt least one of the CRM user mapping nodes needs to be present in order to create/update CRM user mappings. In addition, CRM integration needs to be enabled in administration (any setting other than None).

92 PUBLICSAP CPQ API Documentation

SOAP API

2.3.9 XML Definition

<RESPONSE xmlns=""> <RESULT>OK</RESULT><MESSAGE>User aoshepar updated</MESSAGE></RESPONSE> <RESPONSE xmlns=""><RESULT>NOK</RESULT><ERROR> <CODE>103001</CODE><MESSAGE>Required node USERNAME not supplied</MESSAGE></ERROR></RESPONSE> <RESPONSE xmlns=""><RESULT>NOK</RESULT><ERROR> <CODE>103002</CODE><MESSAGE>Approving parent user not found in CPQ database</MESSAGE></ERROR></RESPONSE> <RESPONSE xmlns=""><RESULT>NOK</RESULT><ERROR> <CODE>103004</CODE><MESSAGE>Managing parent user not found in CPQ database</MESSAGE></ERROR> </RESPONSE>

2.4 ImportMaterialsFromERP SOAP API

ImportMaterialsFromERP SOAP API is the SOAP API used for importing materials from back-end applications such as SAP ERP and SAP S/4HANA. It can be used regardless of whether SAP CPQ is integrated with Variant Configuraton. You can manually set the flag isSyncedFromBackOffice through the payload sent to the ImportMaterialsFromERP endpoint for any product imported via this API. Products imported via the API can be marked as isSyncedFromBackOffice even if they are not Variant Configuration products, in which case they will have the value Yes in the column Synced from Back Office in the Setup.

NotePayloads created before the 2111 release of SAP CPQ (November 2021) contain the IsSapProduct flag instead of isSyncedFromBackOffice. Although the system is adapted to accept both flags, all payloads created after the 2111 release should contain the isSyncedFromBackOffice flag only.

If SAP CPQ is integrated with SAP Billing Revenue and Innovation Management, the ImportMaterialsFromERP API is used for replicating products into SAP CPQ. All simple products arriving via this API that have the IsSubscription flag set to TRUE are automatically created as configurable products in SAP CPQ. The API payload contains the system attributes Contract Duration and Billing Cycle, which are created on the product in SAP CPQ.

SAP CPQ API DocumentationSOAP API PUBLIC 93

ImportMaterialsFromERP SOAP API only supports dictionary values (translations) in the default language (the system dictionary with the lowest rank that has a default formula that evaluates to 1).

Authentication: SOAP API authentication [page 376]

An example of the XML payload for ImportMaterialsFromERP:

<Products> <Product><PricingMechanism>Pricebook Lookup</PricingMechanism><Active>TRUE</Active><Categories><USEnglish>DRAFT</USEnglish></Categories><isSyncedFromBackOffice>TRUE</isSyncedFromBackOffice><ProductName><USEnglish><![CDATA[Material from ERP]]></USEnglish></ProductName><UnitOfMeasure>PC</UnitOfMeasure><PartNumber>MFERP-1</PartNumber><PricingCode>001</PricingCode><ProductVersion>Version 1</ProductVersion><ProductSystemId>Material_from_ERP_cpq</ProductSystemId><ProductType>Material</ProductType></Product> </Products>

2.5 Company Administration SOAP API

Function name: CompanyAdministration

Function description: CompanyAdministration function executes any available action on the specified Company

Authentication: SOAP API authentication [page 376]

List of Action values for this function:

● ADD● UPDATE (Identification of company is done based on company code. If company hasn't been found based

on company code, error is thrown)● ADDORUPDATE (Identification of company is done based on company code. If company hasn't been found

based on company code, new company is created with provided data)● DELETE

94 PUBLICSAP CPQ API Documentation

SOAP API

2.5.1 Company Administration - Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only SAP CPQ admin­istrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor user name

Password String (25) Only SAP CPQ admin­istrators can execute this function. Pass­word is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor's password for the administrator user name provided in the username element

Action String (50) Action that will be exe­cuted for the company

Yes Examples: - ADDOR­UPDATE - DELETE

Examples: - ADDOR­UPDATE - DELETE

XML Object Passing Com­pany Data

Yes The Company Proper­ties XML structure is shown below

Data definition for company properties XML

Field Name Description Sample Data Type Size

COMPANYCODE Code of the Company WBI Text 25

NAME Company Name Webcom, Inc Text

EMAILADDRESS Company E-Mail Ad­dress

webmaster@webco­minc.com

Text

ADDRESS1 Company First Ad­dress Line

123 Letters Way Text

ADDRESS2 Company Second Ad­dress Line

P.O. Box 123 Text

CITY Company City Mytown Text

STATE Company State WI Text

ZIPCODE Company Zip Code 55555 Text

COUNTRY Company Country/Region

United States Text

PHONENUMBER Company Phone Num­ber

9999999999 Text

FAXNUMBER Company FAX Number 8888888888 Text

IMAGE Company Image Anyimage.gif Text

SAP CPQ API DocumentationSOAP API PUBLIC 95

Example for company properties XML

<COMPANYPROPERTIES> <COMPANYCODE>WBI</COMPANYCODE > <NAME>Webcom, Inc</NAME> <EMAILADDRESS>[email protected]</EMAILADDRESS> <ADDRESS1>611 N Broadway</ADDRESS1> <ADDRESS2 /> <CITY>Milwaukee</CITY> <STATE>WI</STATE> <ZIPCODE>53202</ZIPCODE> <COUNTRY>United States</COUNTRY> <PHONENUMBER>414-273-4442</PHONENUMBER> <FAXNUMBER> 414-298-9248 </FAXNUMBER> <IMAGE>Webcomlogo.gif</IMAGE> </COMPANYPROPERTIES>

2.5.2 Company Administration - Output Parameters

Tag Data Type Description Required Comments

Result XML This function will gen­erate XML document as result of the per­formed actions

Yes Result is always gener­ated

XML definition

Element Name Data Type Description Required Comments

RESPONSE Y

RESULT String(10) OK if if requested com­pany admin task has been completed NOK if requested company admin task did

Y

MESSAGE String (50) Msg generated by SAP CPQ

N

ERROR Node containing error description

N

CODE String(50) SAP CPQ Error code N

2.5.3 Result XML Examples

<RESPONSE xmlns="">

96 PUBLICSAP CPQ API Documentation

SOAP API

<RESULT>OK</RESULT> <MESSAGE>User aoshepar updated</MESSAGE></RESPONSE> <RESPONSE xmlns=""> <RESULT>NOK</RESULT> <ERROR> <CODE>102</CODE> <MESSAGE>Required node COMPANYCODE not supplied</MESSAGE> </ERROR> </RESPONSE>

2.5.4 Input XML Schema - Company Administration

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="COMPANYPROPERTIES"> <xs:complexType> <xs:sequence> <xs:element name="COMPANYCODE" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="NAME" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="EMAILADDRESS" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ADDRESS1" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ADDRESS2" maxOccurs="1" minOccurs="0" type="xs:string" /> <xs:element name="CITY" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="STATE" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ZIPCODE" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="COUNTRY" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="PHONENUMBER" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="FAXNUMBER" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="IMAGE" type="xs:string" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.5.5 Output XML Schema - Company Administration

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RESPONSE"> <xs:complexType> <xs:sequence> <xs:element name="RESULT" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element name="MESSAGE" type="xs:string" maxOccurs="1" minOccurs="0" />

SAP CPQ API DocumentationSOAP API PUBLIC 97

<xs:element name="ERROR" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="CODE" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="MESSAGE" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.6 Link Opportunity SOAP API

Function name: LinkOpportunity

Authentication: SOAP API authentication [page 376]

Function description:

● LinkOpportunity function links a SAP CPQ quote to a CRM opportunity. Note that this method links quote to opportunity, and executes SAP CPQ-CRM mappings. This means that some data from quote will be uploaded to CRM opportunity, and also, that some data from opportunity will be written to SAP CPQ quote, and will overwrite fields in SAP CPQ quote if they already contained some values.

● Please note that CRM mappings need an CRM administrative account set up in SAP CPQ in order to be executed. If this account is not set up, API call will fail, and the caller will be notified about error, in result xml.

2.6.1 Link Opportunity - Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only SAP CPQ users can execute this func­tion. SAP CPQ user is defined in SAP CPQ admin.

Yes SAP CPQUsername of API user

98 PUBLICSAP CPQ API Documentation

SOAP API

Tag Data Type Description Required Comments

Password String (25) Only SAP CPQ users can execute this func­tion. Password is de­fined in SAP CPQ ad­min.

Yes Password of API user

OrderID Number (8-12) Order# (8 or 12 -digit number)

Yes SAP CPQ System quo­tation number

XML XML Opportunity properties Yes This xml contains op­portunity id, which will be used to link cpq quote to crm opportu­nity.

Input XML definition

Element Name Data Type Description Required Comments

OpportunityId Tag containing oppor­tunity id

Y Id of the CRM opportu­nity.

OpportunityName Tag containing oppor­tunity name

N Name of CRM oppor­tunity.

Input XML Example

<Crm> <OpportunityId>892ADE6756HIX</OpportunityId> <OpportunityName>Test Oppty</OpportunityName> </Crm>

2.6.2 Link Opportunity - Output Parameters

Tag Data Type Description Required Comments

Result XML This function will gen­erate XML document as result of the per­formed actions

Yes Result is always gener­ated

SAP CPQ API DocumentationSOAP API PUBLIC 99

Output XML definition

Element Name Data Type Description Required Comments

Result Y

Result String (50) OK or NOK Y If OK action is per­formed successfully If NOK an error has oc­curred

Reason String(200) Error message N Empty if no error oc­curred

2.6.3 Result XML Examples

Example for successful action execution

<RESULT> <RESULT>OK</RESULT> <REASON></REASON> </RESULT>

Example for non-successful action execution

<RESULT> <RESULT>NOK</RESULT> <REASON>Reason why...</REASON> </RESULT>

2.6.4 Input XML Schema - Link Opportunity

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Crm"> <xs:complexType> <xs:sequence> <xs:element name="OpportunityId" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="OpportunityName" type="xs:string" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

100 PUBLICSAP CPQ API Documentation

SOAP API

2.6.5 Output XML Schema - Link Opportunity

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RESULT"> <xs:complexType> <xs:sequence> <xs:element name="RESULT" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element name="REASON" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.7 Custom Table Administration SOAP API

Function name: AUXTableAdministration

Function description: AUXTableAdministration function executes any available action on the specified AUXTable

Authentication: SOAP API authentication [page 376]

Admin level function: (<application root>/wsAPI/wssrv.asmx)

List of Action values for this function:

● CREATETABLE● INSERTROWS● EXPORTROWS● EXPORTTABLE● UPDATEROWS● DELETEROWS● DELETETABLE● UPSERTROWS

The API parameters Username and Password identify the API user. The Action parameter defines the action that will be executed, and AUXTablesproperties XML contains, depending on action, necessary data.

2.7.1 Create Table Input XML Schema - AUX Table Administration

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

SAP CPQ API DocumentationSOAP API PUBLIC 101

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Column" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="ColumnName" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="ColumnSize" type="xs:unsignedInt" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.7.2 Create Table Output XML Schema - AUX Table Administration

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element name="Status" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element name="Message" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

102 PUBLICSAP CPQ API Documentation

SOAP API

2.7.3 Custom Table Administration - Output Parameters

Tag Data Type Description Required Comments

Result XML This function will gen­erate XML document as result of the per­formed actions

Yes Result is always gener­ated

XML definition

Element Name Data Type Description Required Comments

Result Y

Status String(10) OK if passed values are verified and success­fully passed requested action, otherwise NOK

Y

Message String (500) Msg generated by SAP CPQ

Y

Root N For search, if any row matches provided con­ditions, it will contain XML for result

Error N If any error occurs this node will contain info about it.

ErrorCode String(50) Error code Y

Description String(500) Error description mes­sage

Y

Result XML Examples

Result XML for CREATETABLE actionUse case - Custom table successfully created.

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>OK</Status> <Message>Table Created</Message> </Result>

Use case - Custom table creation failed. The reason of failure is that column names contain blank spaces.

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

SAP CPQ API DocumentationSOAP API PUBLIC 103

<Status>NOK</Status> <Message>Creation failed</Message> <Error> <ErrorCode>xxxxxxx</ErrorCode> <Description> Column names containing blank spaces </Description> </Error> <Error>

Result XML for EXPORTROWS actionSuccessful rows export based on the search criteria

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>OK</Status> <Message>Search succeded</Message> <Root> <Columns> <Column>CpqTableEntryId</Column> <Column>AccountId</Column> <Column>FirstName</Column> <Column>SecondName</Column> </Columns> <Rows> <Row> <Value>23</Value> <Value>23</Value> <Value >Jack</Value> <Value >Longly</Value> </Row> <Row> <Value>27</Value> <Value>25</Value> <Value >Denis</Value> <Value >Longly</Value> </Row> <Row> <Value>55</Value> <Value>33</Value> <Value >Rod</Value> <Value >Dard</Value> </Row> </Rows> </Root> </Result>

Result XML for UPSERTROWS actionUse case - Rows get updated / inserted during UPSERTROWS action

<Result xmlns="http://webcominc.com/"> <Status>OK</Status> <Message>action 'UPSERTROWS' for CustomUsers succeeded</Message> <Root> <Columns> <Column key="1">Username</Column> <Column>Name</Column> <Column>Email</Column> </Columns> <Rows> <Row> <Value>jsummers</Value> <Value>John Summers</Value> <Value>[email protected]</Value> <Result> <Status>OK</Status>

104 PUBLICSAP CPQ API Documentation

SOAP API

<Message>Table entries have been successfully updated</Message> <ActionTaken>Updated</ActionTaken> </Result> </Row> <Row> <Value>jlongly</Value> <Value>Jack Longly</Value> <Value>[email protected]</Value> <Result> <Status>OK</Status> <Message>Table entries have been successfully inserted</Message> <ActionTaken>Inserted</ActionTaken> <CpqTableEntryId>5</CpqTableEntryId> </Result> </Row> </Rows> </Root> </Result>

Use case - One row get updated while another causes an error

<Result xmlns="http://webcominc.com/"> <Status>NOK</Status> <Message>Row action(s) failed for action 'UPSERTROWS' performed on table CustomUsers </Message> <Root> <Columns> <Column key="1">Username</Column> <Column>Name</Column> <Column>Email</Column> </Columns> <Rows> <Row> <Value>jsummers</Value> <Value>John Summers</Value> <Value>[email protected]</Value> <Result> <Status>OK</Status> <Message>Table entries have been successfully updated</Message> <ActionTaken>Updated</ActionTaken> </Result> </Row> <Row> <Value>jlongly</Value> <Value>Jack Longly</Value> <Value>[email protected]</Value> <Value>Test data</Value> <Result> <Status>NOK</Status> <Message>Row action failed</Message> <Error> <ErrorCode>105013</ErrorCode> <Description>Number of values doesn't match the number of columns provided</Description> </Error> </Result> </Row> </Rows> </Root> </Result>

Result XML for DELETEROWS actionUse case - Rows get deleted while some rows cause an error

SAP CPQ API DocumentationSOAP API PUBLIC 105

In this example, username ’jsummers’ exists in the database while username ’mbill’ does not. The first row will be deleted while the error message will be displayed for the second one as shown in next figure.

<Result xmlns="http://webcominc.com/"> <Status>NOK</Status> <Message>Row action(s) failed for action 'DELETEROWS' performed on table 'CustomUsers'</Message> <Root> <Columns> <Column>Username</Column> </Columns> <Rows><Row> <Value>jsummers</Value> <Result> <Status>OK</Status> <Message> Table entries have been successfully deleted </Message> <ActionTaken>Deleted</ActionTaken> </Result> </Row> <Row> <Value>mbill</Value> <Result> <Status>NOK</Status> <Message>Row action failed</Message> <Error> <ErrorCode>105016</ErrorCode> <Description>No entries found for provided search criteria</Description> </Error> </Result> </Row> </Rows> </Root> </Result>

Result XML for UPDATEROWS action

Use case - Rows get updated while some errors cause an error

<Result xmlns="http://webcominc.com/"> <Status>NOK</Status> <Message>Row action(s) failed for action 'UPDATEROWS' performed on table CustomUsers </Message> <Root> <Columns> <Column key="1">Username</Column> <Column>Name</Column> <Column>Email</Column> </Columns> <Rows> <Row> <Value>jsummers</Value> <Value>John Summers</Value> <Value>[email protected]</Value> <Result> <Status>OK</Status> <Message>Table entries have been successfully updated</Message> <ActionTaken>Updated</ActionTaken> </Result> </Row> <Row> <Value>mbill</Value> <Value>Michael Bill</Value> <Value>[email protected]</Value> <Result>

106 PUBLICSAP CPQ API Documentation

SOAP API

<Status>NOK</Status> <Message>Action update row failed</Message> <Error> <ErrorCode>105016</ErrorCode> <Description>Entry is missing for provided columns</Description> </Error> </Result> </Row> </Rows> </Root> </Result>

Result XML for INSERTROWS action

Rows successfully inserted.

<Result xmlns="http://webcominc.com/"> <Status>OK</Status> <Message>action 'INSERTROWS' for CustomUsers succeeded</Message> <Root> <Columns> <Column key="1">Username</Column> <Column>Name</Column> <Column>Email</Column> </Columns> <Rows> <Row> <Value>jsummers</Value> <Value>John Summers</Value> <Value>[email protected]</Value> <Result> <Status>OK</Status> <Message>Table entries have been successfully inserted</Message> <ActionTaken>Inserted</ActionTaken> <CpqTableEntryId>4</CpqTableEntryId> </Result> </Row> <Row> <Value>jlongly</Value> <Value>Jack Longly</Value> <Value>[email protected]</Value> <Result> <Status>OK</Status> <Message>Table entries have been successfully inserted</Message> <ActionTaken>Inserted</ActionTaken> <CpqTableEntryId>5</CpqTableEntryId> </Result> </Row> </Rows> </Root> </Result>

2.7.4 Custom Table Administration Details

● <Columns> - required● <Column> - required, representing Column name, for all actions except CreateTable, of table with provided

name.● <ColumnName>- required, for CreateTable action.● <ColumnSize> - required, for CreateTable action.

SAP CPQ API DocumentationSOAP API PUBLIC 107

● <Rows> - required, for all actions except CreateTable● <Row> - required, representing values for provided columns● <SearchCriteria> - required, for Export action● <Value> - required, for all actions except CreateTable

Column and value node must be provided in matching order.

2.7.5 Custom Table Administration Execution Workflow

● The supplied username and password are checked for security reasons, if check fails, the API call will fail.● Columns’ names are deserialized. If required action is CREATETABLE the table name and columns’ names

are checked. If any contains blank spaces, or anything except alphanumeric signs, the API call will fail. For any other action provided columns’ names are compared with provided table columns (in database). If they don’t match, the API call will fail.

● If a number of provided rows exceeds allowed value for provided action, the API call will fail.● If length of provided values exceeds column’s size, the API call will fail.● If action is CREATETABLE, when new table is created, primary auto increment key ‘CpqTableEntryId’ is

added to the table.● If action isn’t CretateTable Row nodes are deserialized from input XML.● Provided action is performed.● When the required action is performed for all provided rows, the result XML will be returned.

2.7.6 Custom Table Searching Rules

Example: Table – Account(CpqTableEntryId*, AccountId, FirstName, LastName)

*this column is added automaticly, by API

<Root> <Columns> <Column>AccountId</Column> <Column>FirstName</Column> </Columns> <SearchCriteria> <Value>23</Value> <Value >Jack</Value> </SearchCriteria > </Root>

Result will be obtained with query like this:

Select CpqTableEntryId , AccountId, FirstName, LastName from Account where AccountId = ‘23’ and FirstName = ‘Jack’.

108 PUBLICSAP CPQ API Documentation

SOAP API

2.7.7 Custom Table Web Method - Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only SAP CPQ admin­istrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor user name

Password String (25) Only SAP CPQ admin­istrators can execute this function. Pass­word is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor's password for the administrator user name provided in the username element

Action String (50) Action that will be exe­cuted for the AUXTable

Yes Examples: 1. CREATET­able 2. DELETEROWS

AUXTablesproperties XML Object Passing User Data

Yes The AUXTablesproper­ties XML structure for each action is shown

TableName String(100) Name of the table on which the action will be performed – no white spaces allowed

Yes ExternalPrices

Input XML definition – for CreateTable actions

Field Name Description Sample Data Input Type DefaultSize Nullable

ColumnName The name of the column from specified table. Only al­phanumeric signs are al­lowed. White spaces are not allowed.

FirstName text 50 false

ColumnSize Size for speci­fied column

DbType Type for speci­fied column

SecondName text NVARCHAR 250 true/false

Active boolean BIT true/false

Price number INT true/false

DateValidUntil date DATE true/false

DatetimeVali­dUntil

datetime DATETIME true/false

SAP CPQ API DocumentationSOAP API PUBLIC 109

Field Name Description Sample Data Input Type DefaultSize Nullable

RecPrice float DECIMAL 2 true/false

Input XML definition – for other actions

Field Name Description Sample Data Type Size

Column The name of the col­umn from specified ta­ble. Only alphanumeric signs are allowed. White spaces aren’t al­lowed. This column can have an attribute key. It is used in UPDATEROWS and UPSERTROWS. If set to 1, the column will be considered as a search criteria

FirstName Text 50

Value Value for specified col­umn

Jack Text Depends on column size

Input XML Example for CREATETABLE action

<Root> <Columns> <Column> <ColumnName>AccountId</ColumnName> <ColumnSize>200</ColumnSize> </Column> <Column> <ColumnName>FirstName</ColumnName> <ColumnSize>2000</ColumnSize> </Column> <Column> <ColumnName>SecondName</ColumnName> <ColumnSize>2000</ColumnSize> </Column> <Column> <ColumnName>IntColumn</ColumnName> <DbType>int</DbType> <IsNull>true</IsNull> </Column> <Column> <ColumnName>DecimalColumn</ColumnName> <DbType>decimal</DbType> <IsNull>true</IsNull> <ColumnSize>2</ColumnSize> </Column> <Column> <ColumnName>NvarcharColumn</ColumnName>

110 PUBLICSAP CPQ API Documentation

SOAP API

<DbType>nvarchar</DbType> <ColumnSize>250</ColumnSize> <IsNull>false</IsNull> </Column> <Column> <ColumnName>BitColumn</ColumnName> <DbType>bit</DbType> <IsNull>false</IsNull> </Column> <Column> <ColumnName>DateColumn</ColumnName> <DbType>date</DbType> <IsNull>false</IsNull> </Column> <Column> <ColumnName>DateTimeColumn</ColumnName> <DbType>datetime</DbType> <IsNull>false</IsNull> </Column> </Columns> </Root>

We can see that there are different type of columns that user can defined. Columns type NVARCHAR and DECIMAL have default values (250, 2). All columns can be nullable. Also, when new table is created, primary auto increment key ‘CpqTableEntryId’ is added to the table, which will be used for update and delete actions, and be obtained using Export action.

By default, all column names will be converted to upper case. This behavior can be changed in SetupApplication Parameters General “Allow lower case column names when creating tables via API” .

Input XML Example for UPSERTROWS action

UPSERTROWS action

This action is used to either update all or the specific set of records in the custom table, or to insert new rows if they don’t exist. The action takes into account search criteria defined in the input XML.

Any column can be set as a search criteria by adding the key attribute to the column and setting its value to 1.

Number of rows per one call is limited to 1000. If more than 1000 rows is supplied, the error message will be shown and no processing will occur.

Similarly, if there is a column in the custom table that has been set as a 'Non Null' column, it must be supplied through the XML input file. If it is not supplied, the error message will be shown and no processing will occur.

<?xml version="1.0" encoding="utf-8"?> <Root> <Columns> <Column key="1">Username</Column> <Column>Name</Column> <Column>Email</Column> </Columns> <Rows> <Row> <Value>jsummers</Value> <Value>John Summers</Value> <Value>[email protected]</Value> </Row> <Row>

SAP CPQ API DocumentationSOAP API PUBLIC 111

<Value>jlongly</Value> <Value>Jack Longly</Value> <Value>[email protected]</Value> </Row> </Rows> </Root>

If the custom table record with username “jsummers” already exists, SAP CPQ will find it (searching by column “username”) and update it with the values provided through the input XML. However, if the custom table record with username “jlongly” does not exist, SAP CPQ will insert the new one.

Noteif any record causes an error, it will be skipped but all the other records that don’t cause any error will be processed (updated or inserted).

Input XML Example for INSERTROWS action

If any record already exists, the error will be returned in the output XML, and all other non-existing records will be inserted. Column node can’t have ‘CpqTableEntryId’ value.

Number of rows per one call is limited to 1000. If more than 1000 rows is supplied, the error message will be shown and no processing will occur.

Similarly, if there is a column in the custom table that has been set as a 'Non Null' column, it must be supplied through the XML input file. If it is not supplied, the error message will be shown and no processing will occur.

<Root> <Columns> <Column>AccountId</Column> <Column>FirstName</Column> <Column>SecondName</Column> </Columns> <Rows> <Row> <Value>23</Value> <Value>Jack</Value> <Value>Longly</Value> </Row> <Row> <Value>44</Value> <Value>John</Value> <Value>Summers</Value> </Row> </Rows> </Root>

Input XML Example for EXPORTROWS action

<Root> <Columns> <Column>AccountId</Column> <Column>FirstName</Column>

112 PUBLICSAP CPQ API Documentation

SOAP API

</Columns> <SearchCriteria> <Value>23</Value> <Value >Jack</Value> </SearchCriteria > </Root>

Column node can’t have ‘CpqTableEntryId’ value. The search will be performed on search criteria, where AND condition will be used between values. All table rows that matches the condition will be returned.

The result XML will be explained later.

Input XML Example for EXPORTTABLE action

This action does not require any input parameters. Custom table name is the only field that must be populated.

NoteThere is no limit of max number of rows exported.

Input XML Example for UPDATEROWS action

UPDATEROWS action

CpqTableEntryId can be used as a search criteria. In this case it must be the first in the list of columns within Input XML. Maximum number of rows is 1000. The following input XML uses it as a search criteria.

<Root> <Columns> <Column>CpqTableEntryId</Column> <Column>AccountId</Column> <Column>FirstName</Column> <Column>SecondName</Column> </Columns> <Rows> <Row> <Value>23</Value> <Value>23</Value> <Value >Jack</Value> <Value >Longly</Value> </Row> <Row> <Value>27</Value> <Value>25</Value> <Value >Denis</Value> <Value >May</Value> </Row> </Rows> </Root>

However, CpqTableEntryId column is not the only column that can be used as a search criteria. Other columns can be also used. You can set the column as a search criteria by adding a key attribute to the XML column node.

SAP CPQ API DocumentationSOAP API PUBLIC 113

NoteIf CpqTableEntryId column is used as a search criteria, no other column can be set as a search criteria at the same time. That being said, if you define one or more columns as the search critera then CpqTableEntryId can't be one of them.

The following example demonstrates the situation when column 'username' is set as a search critera.

<?xml version="1.0" encoding="utf-8"?> <Root> <Columns> <Column key="1">Username</Column> <Column>Name</Column> <Column>Email</Column> </Columns> <Rows> <Row> <Value>jsummers</Value> <Value>John Summers</Value> <Value>[email protected]</Value> </Row> <Row> <Value>mbill</Value> <Value>Michael Bill</Value> <Value>[email protected]</Value> </Row> </Rows> </Root>

Input XML Example for DELETEROWS action

DELETEROWS action

CpqTableEntryId column can be set as a search criteria for this action. In this case the input XML should look like the one that follows. Maximum number of rows is 1000.

<Root> <Columns> <Column>CpqTableEntryId</Column> </Columns> <Rows> <Row> <Value>23</Value> </Row> <Row> <Value>27</Value> </Row> </Rows> </Root>

Besides CpqTableEntryId, other columns can be set as a search criteria by adding them within Columns tag. If the searched record could not be found, an error is returned for that particular record and records that are found get deleted.

<?xml version="1.0" encoding="utf-8"?> <Root> <Columns> <Column>Username</Column>

114 PUBLICSAP CPQ API Documentation

SOAP API

</Columns> <Rows> <Row> <Value>jsummers</Value> </Row> <Row> <Value>mbill</Value> </Row> </Rows> </Root>

Input XML Example for DELETETABLE action

In this case input XML is ignored.

2.7.8 Export Rows Input XML Schema - AUX Table Administration

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Column" type="xs:string" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="SearchCriteria" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Value" type="xs:string" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.7.9 Export Rows Output XML Schema - AUX Table Administration

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"

SAP CPQ API DocumentationSOAP API PUBLIC 115

xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element name="Status" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element name="Message" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Error" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="ErrorCode" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Description" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Root" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Columns" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Column" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Row" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Value" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.7.10 Insert Update Upsert Delete Input Schema

<?xml version='1.0' encoding='UTF-8'?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Root">

116 PUBLICSAP CPQ API Documentation

SOAP API

<xs:complexType> <xs:sequence> <xs:element name="Columns" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="Column" maxOccurs="unbounded" minOccurs="1"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute type="xs:byte" name="key" use="optional"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows" maxOccurs="1" minOccurs="1" > <xs:complexType> <xs:sequence> <xs:element name="Row" maxOccurs="unbounded" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="unbounded" minOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.7.11 Insert Update Upsert Delete Output Schema

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://webcominc.com/" xmlns="http://webcominc.com/"> <xs:element name="Result"> <xs:complexType> <xs:sequence > <xs:element name="Status" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element type="xs:string" name="Message" maxOccurs="1" minOccurs="0"/> <xs:element name="Error" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:int" name="ErrorCode"/> <xs:element type="xs:string" name="Description"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Root" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Columns" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Column" minOccurs="0"> <xs:complexType>

SAP CPQ API DocumentationSOAP API PUBLIC 117

<xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="key" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Row" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Value" type="xs:string" minOccurs="0" /> <xs:element name="Result" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence > <xs:element name="Status" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element type="xs:string" name="Message" maxOccurs="1" minOccurs="0"/> <xs:element type="xs:string" name="ActionTaken" maxOccurs="1" minOccurs="0"/> <xs:element name="CpqTableEntryId" type="xs:integer" maxOccurs="1" minOccurs="0" /> <xs:element name="Error" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="ErrorCode" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Description" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

118 PUBLICSAP CPQ API Documentation

SOAP API

2.8 Get Catalogue Data SOAP API

Function name: GetCatalogue

Function description: GetCatalogue function returns XML document that contains hierarchical representation of the catalog (categories, sub-categories and products). Visibility rules are applied to the returned categories and products based on a username / product. This means that if a product is not visible to the user's user group, it will not be returned in method result.

Authentication: SOAP API authentication [page 376]

2.8.1 Result XML Examples

<?xml version="1.0" encoding="utf-16"?><CATALOGUE> <CATEGORIES> <CATEGORY> <ID>1</ID> <NAME>Hardware</NAME> <RANK>10</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>category_hardware.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>30</ID> <NAME>SMB5 Desktop computer</NAME> <PARTNUM>SMB5&lt;*CATCODE(Processor) *&gt;&lt;*CATCODE(Memory) *&gt;&lt;*CATCODE(Hard Drive) *&gt;&lt;*CATCODE(CD or DVD drive) *&gt;&lt;*CATCODE(Monitor) *&gt;</PARTNUM> <DESCRIPTION> &lt;table style="width:100%;font-size:9pt;" cellpadding="5px"&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="border-top:1px solid #CCCCCC"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="color:#414141;font-weight:bold;"&gt;Reliable Desktop computers for any kind of exploitation&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="border-top:1px solid #CCCCCC"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="background-color: #EEE;"&gt;&lt;td&gt;&lt;b&gt;Processor&lt;/b&gt;&lt;br /&gt;Intel Pentium 2.0GHz&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;b&gt;Operating System&lt;/b&gt;&lt;br /&gt;Windows XP Home&lt;/td&gt;&lt;/tr&gt; &lt;tr style="background-color: #EEE;"&gt;&lt;td&gt;&lt;b&gt;Optical Drive&lt;/b&gt;&lt;br /&gt;DVD-R 12/4&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;b&gt;Memory&lt;/b&gt;&lt;br /&gt;2GB&lt;/td&gt;&lt;/tr&gt; &lt;tr style="background-color: #EEE;"&gt;&lt;td&gt;&lt;b&gt;Hard Drive&lt;/b&gt;&lt;br /&gt;500GB&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;b&gt;Warranty&lt;/b&gt;&lt;br /&gt;1 year limited&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="border-top:1px solid #CCCCCC"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; </DESCRIPTION> <PRICE>0.0000</PRICE>

SAP CPQ API DocumentationSOAP API PUBLIC 119

<COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>1</ID> <NAME>SMB2 Desktop computer</NAME> <PARTNUM>SMB2&lt;*CATCODE(Processor) *&gt;&lt;*CATCODE(Memory) *&gt;&lt;*CATCODE(Hard Drive) *&gt;&lt;*CATCODE(CD or DVD drive) *&gt;&lt;*CATCODE(Monitor) *&gt;</PARTNUM> <DESCRIPTION> &lt;table style="width:100%;font-size:9pt;" cellpadding="5px"&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="border-top:1px solid #CCCCCC"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="color:#414141;font-weight:bold;"&gt;Reliable Desktop computers for any kind of exploitation&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="border-top:1px solid #CCCCCC"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="background-color: #EEE;"&gt;&lt;td&gt;&lt;b&gt;Processor&lt;/b&gt;&lt;br /&gt;Intel Pentium 3.0GHz&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;b&gt;Operating System&lt;/b&gt;&lt;br /&gt;Windows XP Home&lt;/td&gt;&lt;/tr&gt; &lt;tr style="background-color: #EEE;"&gt;&lt;td&gt;&lt;b&gt;Optical Drive&lt;/b&gt;&lt;br /&gt;DVD 12x&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;b&gt;Memory&lt;/b&gt;&lt;br /&gt;3GB&lt;/td&gt;&lt;/tr&gt; &lt;tr style="background-color: #EEE;"&gt;&lt;td&gt;&lt;b&gt;Hard Drive&lt;/b&gt;&lt;br /&gt;320GB&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;b&gt;Warranty&lt;/b&gt;&lt;br /&gt;1 year limited&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="border-top:1px solid #CCCCCC"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; </DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>4</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>28</ID> <NAME>SMB3 Desktop computer</NAME> <PARTNUM>SMB3&lt;*CATCODE(Processor) *&gt;&lt;*CATCODE(Memory) *&gt;&lt;*CATCODE(Hard Drive) *&gt;&lt;*CATCODE(CD or DVD drive) *&gt;&lt;*CATCODE(Monitor) *&gt;</PARTNUM> <DESCRIPTION> &lt;table style="width:100%;font-size:9pt;" cellpadding="5px"&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="border-top:1px solid #CCCCCC"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="color:#414141;font-weight:bold;"&gt;Reliable Desktop computers for any kind of exploitation&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="border-top:1px solid #CCCCCC"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="background-color: #EEE;"&gt;&lt;td&gt;&lt;b&gt;Processor&lt;/b&gt;&lt;br /&gt;Intel Celeron 2.4GHz&lt;/td&gt;&lt;/tr&gt;

120 PUBLICSAP CPQ API Documentation

SOAP API

&lt;tr&gt;&lt;td&gt;&lt;b&gt;Operating System&lt;/b&gt;&lt;br /&gt;Windows XP Home&lt;/td&gt;&lt;/tr&gt; &lt;tr style="background-color: #EEE;"&gt;&lt;td&gt;&lt;b&gt;Optical Drive&lt;/b&gt;&lt;br /&gt;CD-R 52/16/52&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;b&gt;Memory&lt;/b&gt;&lt;br /&gt;1GB&lt;/td&gt;&lt;/tr&gt; &lt;tr style="background-color: #EEE;"&gt;&lt;td&gt;&lt;b&gt;Hard Drive&lt;/b&gt;&lt;br /&gt;250GB&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;b&gt;Warranty&lt;/b&gt;&lt;br /&gt;1 year limited&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="background-color: #fff;"&gt;&lt;div style="border-top:1px solid #CCCCCC"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; </DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>5</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>33</ID> <NAME>SMB2 Desktop and Printer Bundle</NAME> <PARTNUM>SMB2&lt;*CATCODE(Processor) *&gt;&lt;*CATCODE(Memory) *&gt;&lt;*CATCODE(Hard Drive) *&gt;&lt;*CATCODE(CD or DVD drive) *&gt;&lt;*CATCODE(Monitor) *&gt;</PARTNUM> <DESCRIPTION>Reliable Desktop computers for any kind of exploitation</DESCRIPTION> <PRICE>799.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>192</ID> <NAME>Desktop Computer</NAME> <PARTNUM>Desk-1054</PARTNUM> <DESCRIPTION /> <PRICE>1500.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>193</ID> <NAME>Desktop Computer 2</NAME> <PARTNUM>Desk-2-1283</PARTNUM> <DESCRIPTION /> <PRICE>2000.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT>

SAP CPQ API DocumentationSOAP API PUBLIC 121

</PRODUCTS> <CATEGORY> <ID>47</ID> <NAME>Accessories</NAME> <RANK>10</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>ScreenShot008.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>70</ID> <NAME>SMB Extended Warranty</NAME> <PARTNUM>SMB-3YR</PARTNUM> <DESCRIPTION>3 year extended warranty for SMB model desktop computers.</DESCRIPTION> <PRICE>175.0000</PRICE> <COST /> <PRODUCTTYPE>Warranty</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>6</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>22</ID> <NAME>Router</NAME> <PARTNUM>RDI-&lt;*VALUE(Router) *&gt;</PARTNUM> <DESCRIPTION>Configurable router</DESCRIPTION> <PRICE>40.0000</PRICE> <COST>10</COST> <PRODUCTTYPE>Accessories</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>7</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>23</ID> <NAME>Hub</NAME> <PARTNUM>H-345-01</PARTNUM> <DESCRIPTION>Commonly used to connect segments of a LAN.</DESCRIPTION> <PRICE>40.0000</PRICE> <COST>10</COST> <PRODUCTTYPE>Accessories</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>7</ID> <NAME>Personal Printer</NAME> <PARTNUM>&lt;*VALUE(Personal printer) *&gt;</PARTNUM> <DESCRIPTION>Choose the right printer for your home or small office</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>100</RANKWITHINCATEGORY>

122 PUBLICSAP CPQ API Documentation

SOAP API

<ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>8</ID> <NAME>Printer Toner</NAME> <PARTNUM>&lt;*CATCODE(Toner) *&gt;</PARTNUM> <DESCRIPTION>Black and white or color toners for your printer</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>100</WEIGHT> <RANKWITHINCATEGORY>100</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>9</ID> <NAME>Network cable</NAME> <PARTNUM>NC&lt;*VALUE(CableLength) *&gt;</PARTNUM> <DESCRIPTION>100mbps high speed network cable for home or small office</DESCRIPTION> <PRICE>10.0000</PRICE> <COST /> <PRODUCTTYPE>Accessories</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>100</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>13</ID> <NAME>52X High Speed Branded CD-R</NAME> <PARTNUM>CD-R</PARTNUM> <DESCRIPTION>52X High Speed Branded CD-R 80min/700MB Bulk.</DESCRIPTION> <PRICE>18.0000</PRICE> <COST>4.5</COST> <PRODUCTTYPE>Accessories</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>100</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>14</ID> <NAME>DVD-R 1X-8X / 9.4GB Double-Sided Bulk</NAME> <PARTNUM>DVD-R</PARTNUM> <DESCRIPTION>DVD-R 1X-8X / 9.4GB Double-Sided Bulk by Matrix.</DESCRIPTION> <PRICE>29.5000</PRICE> <COST>7.375</COST> <PRODUCTTYPE>Accessories</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>100</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> </CATEGORY> <CATEGORY> <ID>2</ID> <NAME>Software</NAME>

SAP CPQ API DocumentationSOAP API PUBLIC 123

<RANK>20</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>category_software.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>5</ID> <NAME>Microsoft Office XP Pro</NAME> <PARTNUM>MOXP</PARTNUM> <DESCRIPTION>Microsoft Office Tools Pro Edition</DESCRIPTION> <PRICE>310.0000</PRICE> <COST>77.5</COST> <PRODUCTTYPE>Software</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>6</ID> <NAME>Microsoft SQL</NAME> <PARTNUM>SQL</PARTNUM> <DESCRIPTION>Microsoft Structure Query Language-Enterprise edition</DESCRIPTION> <PRICE>2700.0000</PRICE> <COST>675</COST> <PRODUCTTYPE>Software</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>4</ID> <NAME>Microsoft Windows XP</NAME> <PARTNUM>WXP</PARTNUM> <DESCRIPTION>Microsoft operating system Windows XP with SP2</DESCRIPTION> <PRICE>210.0000</PRICE> <COST>52.5</COST> <PRODUCTTYPE>Software</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>11</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>10</ID> <NAME>Custom Software</NAME> <PARTNUM>&lt;*VALUE(Custom Part Number) *&gt;</PARTNUM> <DESCRIPTION>Customizable software item</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Software</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>1000</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>35</ID> <NAME>Configurable Software</NAME>

124 PUBLICSAP CPQ API Documentation

SOAP API

<PARTNUM>CD-&lt;*VALUE(Number of users) *&gt;U&lt;*VALUE(Hours of implementation) *&gt;Hw&lt;*VALUECODE(Maintenance duration) *&gt;00</PARTNUM> <DESCRIPTION>The new version of the NINO Network Manager Suite</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Software</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>1000</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>3</ID> <NAME>Services</NAME> <RANK>30</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>category_service1.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>3</ID> <NAME>Project Management</NAME> <PARTNUM>PM&lt;*CATCODE(Type of project management) *&gt;&lt;*CATCODE(Project lenght) *&gt;&lt;*CATCODE(Number of meetings) *&gt;</PARTNUM> <DESCRIPTION>Let our experience be your greatest strength. We provide all kind of consulting services.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Service</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>0</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>12</ID> <NAME>Custom Service Offering</NAME> <PARTNUM>&lt;*VALUE(Custom Part Number) *&gt;</PARTNUM> <DESCRIPTION>Specify Custom Service item by typing in price, description, and part number.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*Value(Our Cost) *&gt;</COST> <PRODUCTTYPE>Service</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>36</ID> <NAME>Maintenance</NAME> <PARTNUM /> <DESCRIPTION /> <PRICE>750.0000</PRICE> <COST>187.5</COST> <PRODUCTTYPE>Maintenance</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT />

SAP CPQ API DocumentationSOAP API PUBLIC 125

<RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>37</ID> <NAME>Services</NAME> <PARTNUM /> <DESCRIPTION>Implementation</DESCRIPTION> <PRICE>500.0000</PRICE> <COST>125</COST> <PRODUCTTYPE>Services</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>42</ID> <NAME>Admin Demo Script prod</NAME> <PARTNUM /> <DESCRIPTION /> <PRICE>1000.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>189</ID> <NAME>Renewal</NAME> <PARTNUM /> <DESCRIPTION /> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Services</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>5</ID> <NAME>Vision Boats</NAME> <RANK>50</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>category_boats.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>19</ID> <NAME>180 LE Horizon-2</NAME> <PARTNUM>180 LE</PARTNUM> <DESCRIPTION>Four Winns 180 LE Horizon</DESCRIPTION> <PRICE>12000.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT />

126 PUBLICSAP CPQ API Documentation

SOAP API

<RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>13</ID> <NAME>Cell Phones</NAME> <RANK>100</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>3_Cell_Phones.jpg</IMAGE> <PRODUCTS /> <CATEGORY> <ID>14</ID> <NAME>ATT</NAME> <RANK>100</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>att_logo.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>51</ID> <NAME>Blackberry Bold</NAME> <PARTNUM>Bold</PARTNUM> <DESCRIPTION>Accept no substitutes. The BlackBerry® Bold™ smartphone embodies elegant design – without sacrificing the features or functionality you expect from a premium smartphone.</DESCRIPTION> <PRICE>199.9900</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>0</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>52</ID> <NAME>HTC Fuze</NAME> <PARTNUM>Fuze</PARTNUM> <DESCRIPTION>A powerful smartphone that features a large VGA touch screen that features the HTC one touch single-handed operation TouchFLO™ 3D user interface for quick access to the items most important to you.</DESCRIPTION> <PRICE>299.9900</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>5</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>53</ID> <NAME>Nokia 2600</NAME> <PARTNUM>2600</PARTNUM> <DESCRIPTION>The Nokia 2600 is a convenient easy-to-use phone with a VGA camera and multiple messaging options. Download MP3 ringtones and games. Surf the Internet with MEdia Net &amp; talk effortlessly on the hands-free speakerphone or with Bluetooth® capabilities.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE>

SAP CPQ API DocumentationSOAP API PUBLIC 127

<STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>54</ID> <NAME>LG Shine</NAME> <PARTNUM>Shine</PARTNUM> <DESCRIPTION>This elegant slider has a mirror finish and shine through screen and is loaded with multimedia features. Listen to digital music and more. Take pictures with the 2MP camera and camcorder.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>15</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>55</ID> <NAME>Samsung A237</NAME> <PARTNUM>A237</PARTNUM> <DESCRIPTION>Talk easily and conveniently with the Samsung a237 camera phone. Get messaging, entertainment and Bluetooth® wireless capabilities - all in one attractively priced compact flip. The a237 has mobile email, MEdia(TM) Net browsing, text &amp; instant messaging.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>20</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>69</ID> <NAME>AT&amp;T Wireless Phone Insurance</NAME> <PARTNUM>ATT-WPI123</PARTNUM> <DESCRIPTION>One year of phone insurance. Protects your wireless phone against loss, theft, accidental physical or liquid damage, and mechanical and/or electrical failure after the manufacturer's warranty period has expired.</DESCRIPTION> <PRICE>60.0000</PRICE> <COST /> <PRODUCTTYPE>Warranty</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>25</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>16</ID> <NAME>T Mobile</NAME> <RANK>100</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>TMobileLogo_5.jpg</IMAGE> <PRODUCTS>

128 PUBLICSAP CPQ API Documentation

SOAP API

<PRODUCT> <ID>61</ID> <NAME>Motorola RAZR2</NAME> <PARTNUM>RAZR2</PARTNUM> <DESCRIPTION>The MOTORAZR2 V8 combines the premium RAZR style with innovative improvements that make staying connected more fun than ever.</DESCRIPTION> <PRICE>149.9900</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>0</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>62</ID> <NAME>Samsung Behold</NAME> <PARTNUM>Behold</PARTNUM> <DESCRIPTION>Experience the freedom of the web truly at your fingertips. The full touch screen of the beautifully designed Samsung Behold gives you seamless access to your mobile life.</DESCRIPTION> <PRICE>149.9900</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>5</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>63</ID> <NAME>Nokia 5610</NAME> <PARTNUM>5610</PARTNUM> <DESCRIPTION>Your music is just a thumb away with the unique music slider key and quality sound of the Nokia 5610 XpressMusic.</DESCRIPTION> <PRICE>79.9900</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>64</ID> <NAME>Samsung t229</NAME> <PARTNUM>t229</PARTNUM> <DESCRIPTION>The dependable Samsung t229 will keep you connected through voice calls, Bluetooth connectivity and text messaging.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>15</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>65</ID> <NAME>T Mobile G1</NAME> <PARTNUM>G1</PARTNUM>

SAP CPQ API DocumentationSOAP API PUBLIC 129

<DESCRIPTION>Got questions? Now you can get all the answers— anytime, anywhere. They’re just a touch away with the simple, smart, and sleek T-Mobile G1.</DESCRIPTION> <PRICE>179.9900</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>20</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>68</ID> <NAME>T-Mobile Handset Protection</NAME> <PARTNUM>TMB-HDP-123</PARTNUM> <DESCRIPTION>One year of protection. Protect your device from loss, theft, accidental damage, or malfunction. Get a little peace of mind.</DESCRIPTION> <PRICE>72.0000</PRICE> <COST /> <PRODUCTTYPE>Warranty</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>25</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>15</ID> <NAME>Verizon</NAME> <RANK>100</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>verizon_logo.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>56</ID> <NAME>Samsung SCH-u340</NAME> <PARTNUM>SCH-u340</PARTNUM> <DESCRIPTION>The basics just got better with the Samsung SCH–u340. Capture the moment, even on the go, with a VGA digital camera. Also, have access to the In Case of Emergency (I.C.E.) contacts menu, even when the phone is locked. This sleek tri–mode phone with internal antenna gets you where you need to be in affordable style.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>0</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>57</ID> <NAME>Samsung Sway</NAME> <PARTNUM>Sway</PARTNUM> <DESCRIPTION>Fashionable phone with sharp looks and smart features. With an ultra–slim .47 inch profile and a super sharp screen, the Sway is designed to fit beautifully into your life. It’s loaded with multi–media features including a music player, 2.0 megapixel camera/camcorder, Media Center capabilities and multiple messaging options.</DESCRIPTION> <PRICE>29.9900</PRICE>

130 PUBLICSAP CPQ API Documentation

SOAP API

<COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>5</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>58</ID> <NAME>Motorola Rapture VU30</NAME> <PARTNUM>Rapture VU30</PARTNUM> <DESCRIPTION>The Motorola Rapture VU30 will get you noticed. With its unique, rounded design and jewel–like keypad, all you have to do is pull it out of your pocket and wait for the reactions. The vanishing external display will awe your friends as it lights up and comes to life with one touch, providing easy access to your music and photos</DESCRIPTION> <PRICE>169.9900</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>59</ID> <NAME>LG Dare</NAME> <PARTNUM>Dare</PARTNUM> <DESCRIPTION>Dare to be different with the Dare by LG. This new handset will surpass your expectations with a large 3–inch touch screen that recognizes your handwriting and gives you tactile feedback. Zoom in closer to find a 3.2 megapixel camera/camcorder with advanced features like face detection for outstanding image quality.</DESCRIPTION> <PRICE>179.9900</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>15</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>60</ID> <NAME>Motorola MOTO Q</NAME> <PARTNUM>MOTO Q</PARTNUM> <DESCRIPTION>This sleek and robust device is packed with power, functionality and offers a cool design that satisfies the appetite of gadget lovers, business professionals and even fashion conscious consumers.</DESCRIPTION> <PRICE>249.9900</PRICE> <COST /> <PRODUCTTYPE>Cell Phone</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>20</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>67</ID> <NAME>Verizon Equipment Protection</NAME> <PARTNUM>VZ-EQP-123</PARTNUM> <DESCRIPTION>One year of protection. Provides convenient coverage against any mechanical or electrical malfunctions and manufacturer defects after the manufacturer's warranty expires.</DESCRIPTION>

SAP CPQ API DocumentationSOAP API PUBLIC 131

<PRICE>72.0000</PRICE> <COST /> <PRODUCTTYPE>Warranty</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>25</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> </CATEGORY> <CATEGORY> <ID>4</ID> <NAME>Guided Selling Examples</NAME> <RANK>100</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>category_guided.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>20</ID> <NAME>Small Office Wizard</NAME> <PARTNUM>SOW</PARTNUM> <DESCRIPTION>This wizard is set to assist you in purchasing your small office computer network</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>27</ID> <NAME>Desktop Selection Assistant</NAME> <PARTNUM>The Desktop Selection Assistant helps you in finding the right desktop computer for your needs.</PARTNUM> <DESCRIPTION /> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>32</ID> <NAME>Desk</NAME> <PARTNUM>&lt;*Value(Desk Location) *&gt;</PARTNUM> <DESCRIPTION>Configure items for a desk</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY>

132 PUBLICSAP CPQ API Documentation

SOAP API

<CATEGORY> <ID>8</ID> <NAME>Vertical Demos</NAME> <RANK>100</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE /> <PRODUCTS /> <CATEGORY> <ID>17</ID> <NAME>Software</NAME> <RANK>5</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>mouse_w_at_sign.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>71</ID> <NAME>WebApp X</NAME> <PARTNUM>WAX&lt;*CatCode(Type of Quote) *&gt;&lt;*CatCode(No of Users) *&gt;&lt;*CatCode(Disk Size) *&gt;&lt;*CatCode(Software Rental) *&gt;</PARTNUM> <DESCRIPTION>Software can be purchased through licenses or with a subscription.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Software</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>18</ID> <NAME>Services</NAME> <RANK>10</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>category_service1.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>3</ID> <NAME>Project Management</NAME> <PARTNUM>PM&lt;*CATCODE(Type of project management) *&gt;&lt;*CATCODE(Project lenght) *&gt;&lt;*CATCODE(Number of meetings) *&gt;</PARTNUM> <DESCRIPTION>Let our experience be your greatest strength. We provide all kind of consulting services.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Service</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>72</ID>

SAP CPQ API DocumentationSOAP API PUBLIC 133

<NAME>Cleaning Service</NAME> <PARTNUM>CLEANING SERVICE</PARTNUM> <DESCRIPTION>For commercial and residential, we clean everything from carpets to windows.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Service</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>19</ID> <NAME>Hi-Tech</NAME> <RANK>15</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>motherboard.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>73</ID> <NAME>Server</NAME> <PARTNUM>SVR&lt;*CatCode(Processor) *&gt;&lt;*CatCode(Memory) *&gt;&lt;*CatCode(Hard Drive Controller) *&gt;</PARTNUM> <DESCRIPTION>Powerful, affordable network engines emphasizing scalability and reliability.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>20</ID> <NAME>Media</NAME> <RANK>20</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>newspapers.jpg</IMAGE> <PRODUCTS /> <CATEGORY> <ID>35</ID> <NAME>Classified Ads</NAME> <RANK>5</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>newspapers.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>76</ID> <NAME>Auto Advertisement</NAME> <PARTNUM>&lt;*ValueCode(Styles) *&gt;</PARTNUM>

134 PUBLICSAP CPQ API Documentation

SOAP API

<DESCRIPTION>One car ad in a single publication or web site.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>34</ID> <NAME>Online Ads</NAME> <RANK>10</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>cityjobs.gif</IMAGE> <PRODUCTS> <PRODUCT> <ID>75</ID> <NAME>Online Job Advertisement</NAME> <PARTNUM>JobSite.com Advert</PARTNUM> <DESCRIPTION>Place online job ads at CityJobs.com</DESCRIPTION> <PRICE>100.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>30</ID> <NAME>Television Ads</NAME> <RANK>15</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>television.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>74</ID> <NAME>Commercial</NAME> <PARTNUM>TV-AD-035</PARTNUM> <DESCRIPTION>Commercial at specified length of time and channel</DESCRIPTION> <PRICE>3000.0000</PRICE> <COST /> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> </CATEGORY> <CATEGORY>

SAP CPQ API DocumentationSOAP API PUBLIC 135

<ID>21</ID> <NAME>Telecom and Managed Services</NAME> <RANK>25</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>global_communications.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>145</ID> <NAME>Site Connection</NAME> <PARTNUM>&lt;*CatCode(Distance Range) *&gt;</PARTNUM> <DESCRIPTION>High speed connection between two sites</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AttributeCost(Distance Range) *&gt;</COST> <PRODUCTTYPE>Service</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>22</ID> <NAME>CPG and FMCG</NAME> <RANK>30</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>consumer_goods.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>91</ID> <NAME>Liquorice 2mg Chewing Gum Triple Pack</NAME> <PARTNUM>NICL-2CGTP</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>93</ID> <NAME>Mint Chewing Gum 4mg</NAME> <PARTNUM>NICMINCG-4</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]

136 PUBLICSAP CPQ API Documentation

SOAP API

([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>50</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>90</ID> <NAME>Liquorice 2mg Chewing Gum</NAME> <PARTNUM>NICL-2CG</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>90</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>94</ID> <NAME>Original Fruit 2mg Chewing Gum</NAME> <PARTNUM>NICOF</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>100</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>92</ID> <NAME>Mint Chewing Gum 2mg</NAME> <PARTNUM>NICMINCG-2</PARTNUM>

SAP CPQ API DocumentationSOAP API PUBLIC 137

<DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>110</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>104</ID> <NAME>Pain Tablets</NAME> <PARTNUM>VOLTAROL-P-TAB</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>150</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>78</ID> <NAME>Cream Triple Pack</NAME> <PARTNUM>LAMISIL-AT-CTP</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>160</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT>

138 PUBLICSAP CPQ API Documentation

SOAP API

<PRODUCT> <ID>77</ID> <NAME>Cream</NAME> <PARTNUM>LAMISIL-AT-C</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>170</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>82</ID> <NAME>Cream + Spray</NAME> <PARTNUM>LAMISIL-C-S</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>180</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>79</ID> <NAME>Gel</NAME> <PARTNUM>LAMISIL-AT-G</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE />

SAP CPQ API DocumentationSOAP API PUBLIC 139

<WEIGHT /> <RANKWITHINCATEGORY>190</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>83</ID> <NAME>Once 1% Cutaneous Solution</NAME> <PARTNUM>LAMISIL-O-1</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>200</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>80</ID> <NAME>Spray 1%</NAME> <PARTNUM>LAMISIL-AT-S-1</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>210</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>81</ID> <NAME>Spray 1% Triple Pack</NAME> <PARTNUM>LAMISIL-AT-S-1TP</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;)

140 PUBLICSAP CPQ API Documentation

SOAP API

*&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>220</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>96</ID> <NAME>Adult Formula Spray</NAME> <PARTNUM>OTRIVINE-AFS</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>230</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>97</ID> <NAME>Menthol Nasal Spray</NAME> <PARTNUM>OTRIVINE-MNS</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>240</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>98</ID> <NAME>Sinusitis Spray</NAME> <PARTNUM>OTRIVINE-SS</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}

SAP CPQ API DocumentationSOAP API PUBLIC 141

[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>250</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>102</ID> <NAME>Cough and Cold Linctus - Sugar &amp; Colour Free</NAME> <PARTNUM>TIXYLIX-CCL</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>260</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>99</ID> <NAME>Antiseptic Cream</NAME> <PARTNUM>SAVLON-AC</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>270</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>100</ID> <NAME>Antiseptic Wipes</NAME> <PARTNUM>SAVLON-AW</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*P

142 PUBLICSAP CPQ API Documentation

SOAP API

roductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>280</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>101</ID> <NAME>Sterile Alginate Dressings x 5</NAME> <PARTNUM>SAVLON-AD-5</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>290</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>103</ID> <NAME>Night Cough 2-10 years 100ml</NAME> <PARTNUM>TIXYLIX-NC-10-100</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>300</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> </PRODUCTS> <CATEGORY>

SAP CPQ API DocumentationSOAP API PUBLIC 143

<ID>46</ID> <NAME>This Month's Promotions</NAME> <RANK>0</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>rsz_sale.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>77</ID> <NAME>Cream</NAME> <PARTNUM>LAMISIL-AT-C</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>102</ID> <NAME>Cough and Cold Linctus - Sugar &amp; Colour Free</NAME> <PARTNUM>TIXYLIX-CCL</PARTNUM> <DESCRIPTION>&lt;*AUX(NovartisPrice,Description_&lt;*MCODE*&gt;,PartNumber,&lt;*ProductCode*&gt;) *&gt; [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensione della confezione}{Pack Size}[ENDIF]: &lt;*AUX(NovartisPrice,PackSize,PartNumber,&lt;*ProductCode*&gt;) *&gt; . [IF]([EQ](&lt;*MCODE*&gt;,ITA)){Dimensioni unità di vendita}{Selling Unit Size}[ENDIF]: &lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST>&lt;*AUX(NovartisPrice,Price,PartNumber,&lt;*ProductCode*&gt;) *&gt;*&lt;*AUX(NovartisPrice,SelingPack,PartNumber,&lt;*ProductCode*&gt;) *&gt;*(1-&lt;*AUX(NovartisPrice,MarkUp,PartNumber,&lt;*ProductCode*&gt;) *&gt;)</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> </CATEGORY> <CATEGORY> <ID>23</ID> <NAME>Utilities</NAME> <RANK>35</RANK> <ACTIVE>1</ACTIVE> <STARTDATE />

144 PUBLICSAP CPQ API Documentation

SOAP API

<ENDDATE /> <REDIRECTTOURL /> <IMAGE>meter.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>180</ID> <NAME>Electricity</NAME> <PARTNUM>&lt;*Value(MPAN Core) *&gt;</PARTNUM> <DESCRIPTION /> <PRICE>0.0000</PRICE> <COST>&lt;*Value(Annual Spend Quoted) *&gt; * (1-&lt;*Value(BMI Quoted Number) *&gt;/100)</COST> <PRODUCTTYPE>Power</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>181</ID> <NAME>Gas</NAME> <PARTNUM>&lt;*Value(MPR Number) *&gt; &lt;*setGI(MPR,&lt;*Value(MPR Number) *&gt;)*&gt;</PARTNUM> <DESCRIPTION /> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Gas</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>24</ID> <NAME>Freight and Shipping</NAME> <RANK>40</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>box.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>108</ID> <NAME>Shipping Rate</NAME> <PARTNUM>RQ-&lt;*CatCode(Transport) *&gt;</PARTNUM> <DESCRIPTION>For rate information please complete the following form and submit it to us.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Service</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>28</ID> <NAME>Controls and Automation</NAME> <RANK>42</RANK> <ACTIVE>1</ACTIVE>

SAP CPQ API DocumentationSOAP API PUBLIC 145

<STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>controls_automation.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>148</ID> <NAME>VFD-720</NAME> <PARTNUM>VFD-720&lt;*CATCODE(Construction) *&gt;&lt;*CATCODE(Amps_Volts) *&gt;&lt;*CATCODE(Enclosure) *&gt;&lt;*CATCODE(Drive Options) *&gt;&lt;*CATCODE(FieldBus Communication Options) *&gt;&lt;*CATCODE(Input / Output Options) *&gt;</PARTNUM> <DESCRIPTION> 1 - 500 HP&lt;br&gt; 208 - 600 VAC Input&lt;br&gt; Commercial HVAC </DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>HVAC Drives</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>29</ID> <NAME>Automotive</NAME> <RANK>44</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>automotive.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>109</ID> <NAME>DOBLO` CARGO</NAME> <PARTNUM>&lt;*Value(Model) *&gt;</PARTNUM> <DESCRIPTION>&lt;b&gt;This is the work mate you were looking for. &lt;/b&gt;&lt;ul&gt;&lt;li&gt;Versatile, sturdy and friendly, it makes your job less tiring, more fun, much safer.&lt;/li&gt;&lt;li&gt;High quality seats and pleasant trim certainly make your day more comfortable.&lt;/li&gt;&lt;/ul&gt;</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Van</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>110</ID> <NAME>2008 Veracruz</NAME> <PARTNUM>&lt;*Value(Model) *&gt;</PARTNUM> <DESCRIPTION> &lt;b&gt;Sophistication, style, convenience and power&lt;/b&gt; &lt;ul&gt; &lt;li&gt; Advanced standard safety technologies&lt;/li&gt; &lt;li&gt; Premium comfort and convenience feautures&lt;/li&gt; &lt;li&gt; Powerful and technologically advanced&lt;/li&gt; &lt;li&gt;Striking, sophisticated styling&lt;/li&gt; &lt;/ul&gt;

146 PUBLICSAP CPQ API Documentation

SOAP API

</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Sport Utility</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>186</ID> <NAME>DOBLO` CARGO (CONFIGURE IN 3D)</NAME> <PARTNUM>&lt;*Value(Model) *&gt;</PARTNUM> <DESCRIPTION>This is the work mate you were looking for. Versatile, sturdy and friendly, it makes your job less tiring, more fun, much safer.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Cargo Van</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>25</ID> <NAME>Events</NAME> <RANK>45</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>badge.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>149</ID> <NAME>Stand</NAME> <PARTNUM>&lt;*Value(stand)*&gt;</PARTNUM> <DESCRIPTION /> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Stand</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>26</ID> <NAME>Insurance</NAME> <RANK>50</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>insurance-form.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>155</ID> <NAME>Single Coverage Health Care Plan</NAME> <PARTNUM />

SAP CPQ API DocumentationSOAP API PUBLIC 147

<DESCRIPTION /> <PRICE>1000.0000</PRICE> <COST /> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT>0</WEIGHT> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>157</ID> <NAME>Family Coverage Health Care Plan</NAME> <PARTNUM /> <DESCRIPTION /> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Service</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>4</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>150</ID> <NAME>Plumbing &amp; Drainage</NAME> <PARTNUM /> <DESCRIPTION>Fuss-free help at hand when your plumbing or drains go up the spout.</DESCRIPTION> <PRICE>0.0000</PRICE> <COST /> <PRODUCTTYPE>Service</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>6</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>27</ID> <NAME>Furniture</NAME> <RANK>55</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>office_chair.jpg</IMAGE> <PRODUCTS /> <CATEGORY> <ID>45</ID> <NAME>Tables</NAME> <RANK>5</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE /> <PRODUCTS> <PRODUCT> <ID>166</ID> <NAME>Quickly Standard</NAME> <PARTNUM /> <DESCRIPTION> Design Johannes Foersom &amp; Peter Hiort-Lorenzen 2000 light weight folding table

148 PUBLICSAP CPQ API Documentation

SOAP API

Frame of Ø30 mm conical welded steel tubing, powder coated or chromium plated. 25 mm top of blockboard with birch (some sizes also in oak) veneer alt. laminate (K2010 UN). Edges of wood or plastic. All tables linkable, linking device against order. Modesty panel in light grey MDF RAL7047 for all table sizes. 1/4-circle top of light grey MDF RAL7047, lacquered to match plastic edge standard. </DESCRIPTION> <PRICE>0.0000</PRICE> <COST>645</COST> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> <CATEGORY> <ID>44</ID> <NAME>Chairs</NAME> <RANK>100</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE /> <PRODUCTS> <PRODUCT> <ID>164</ID> <NAME>Snow 300</NAME> <PARTNUM>300</PARTNUM> <DESCRIPTION>Snow chair, injected polypropylene, lightweight and UV rays resistant, is ideal for outdoor use. Peculiar is the water outflow hole on the seat part. Characterized by oval profiles that make it strong and handly. Available in colours: red, white, orange, green and blue. Stackable. 1st Prize YOUNG&amp;DESIGN 2008.</DESCRIPTION> <PRICE>51.0000</PRICE> <COST>51</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>165</ID> <NAME>Miss Alu</NAME> <PARTNUM>ALU</PARTNUM> <DESCRIPTION> Chair with die-casted-aluminium frame, back in polypropylene or wood and seat in polypropylene, wood or covered with vinyl. Armchair version is also available. Suitable for outside, light and stackable. </DESCRIPTION> <PRICE>115.5000</PRICE> <COST>115.5</COST> <PRODUCTTYPE>Product</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>2</RANKWITHINCATEGORY> <ISSIMPLE>0</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>161</ID>

SAP CPQ API DocumentationSOAP API PUBLIC 149

<NAME>Daydream 400</NAME> <PARTNUM>400</PARTNUM> <DESCRIPTION>An ergonomic shape for Day Dream with polycarbonate injected shell. Polycarbonate is a very resistant and flexible material, that allows to obtain full colours with high-gloss finish. The appealing design makes the chair suitable for any environment.</DESCRIPTION> <PRICE>96.0000</PRICE> <COST>96</COST> <PRODUCTTYPE>SuperPlastic</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>5</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>162</ID> <NAME>Daydream 401</NAME> <PARTNUM>401</PARTNUM> <DESCRIPTION>Day Dream, a creative idea has originated a chair with an ergonomic and appealing shape. Designed by Archirivolto, once more handling with testing on plastic materials, Day Dream has a coloured trasparent polycarbonate shell which is clipped on the frame without screws, the result is a clean and pure look.</DESCRIPTION> <PRICE>101.0000</PRICE> <COST>101</COST> <PRODUCTTYPE>SuperPlastic</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>163</ID> <NAME>Daydream 404</NAME> <PARTNUM>404</PARTNUM> <DESCRIPTION>Day Dream, a creative idea has originated a chair with an ergonomic and appealing shape. Designed by Archirivolto, once more handling with testing on plastic materials, Day Dream has a coloured trasparent polycarbonate shell which is clipped on the frame without screws, the result is a clean and pure look.</DESCRIPTION> <PRICE>183.0000</PRICE> <COST>183</COST> <PRODUCTTYPE>SuperPlastic</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>15</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> </CATEGORY> </CATEGORY> <CATEGORY> <ID>6</ID> <NAME>Appliances</NAME> <RANK>120</RANK> <ACTIVE>1</ACTIVE> <STARTDATE /> <ENDDATE /> <REDIRECTTOURL /> <IMAGE>category_appliance.jpg</IMAGE> <PRODUCTS> <PRODUCT> <ID>43</ID> <NAME>Nestar Portable Air Conditioner</NAME>

150 PUBLICSAP CPQ API Documentation

SOAP API

<PARTNUM>NPAC-2335</PARTNUM> <DESCRIPTION>Nestar offers the ideal portable Air Conditioning units for individual room cooling.</DESCRIPTION> <PRICE>350.0000</PRICE> <COST>87.5</COST> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>44</ID> <NAME>Venhouse Portable Air Conditioner</NAME> <PARTNUM>VPAC-0340</PARTNUM> <DESCRIPTION>It provides both "library quiet" cooling with sleek, slim styling and a Plasmacluster ion generator</DESCRIPTION> <PRICE>550.0000</PRICE> <COST>137.5</COST> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>45</ID> <NAME>Royal AC Portable Air Conditioner</NAME> <PARTNUM>RAC-5722</PARTNUM> <DESCRIPTION>This air conditioner doesn't just look cool - it's a powerful cooling machine with multiple speeds.</DESCRIPTION> <PRICE>449.0000</PRICE> <COST>112.25</COST> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> <PRODUCT> <ID>46</ID> <NAME>Systeram Portable Air Conditioner</NAME> <PARTNUM>SPAC-4333</PARTNUM> <DESCRIPTION>Systeram's new 4300 series Air Conditioner provides a powereful cooler in a small portable package.</DESCRIPTION> <PRICE>299.0000</PRICE> <COST>74.75</COST> <PRODUCTTYPE>Hardware</PRODUCTTYPE> <STARTDATE /> <ENDDATE /> <WEIGHT /> <RANKWITHINCATEGORY>10</RANKWITHINCATEGORY> <ISSIMPLE>1</ISSIMPLE> </PRODUCT> </PRODUCTS> </CATEGORY> </CATEGORIES> </CATALOGUE>

SAP CPQ API DocumentationSOAP API PUBLIC 151

2.8.2 Output XML Schema - Get Catalogue Data

<?xml version="1.0" encoding="utf-16"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="CATALOGUE"> <xs:complexType> <xs:sequence> <xs:element name="CATEGORIES"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="CATEGORY"> <xs:complexType> <xs:sequence> <xs:element name="ID" type="xs:unsignedByte" /> <xs:element name="NAME" type="xs:string" /> <xs:element name="RANK" type="xs:unsignedByte" /> <xs:element name="ACTIVE" type="xs:unsignedByte" /> <xs:element name="STARTDATE" /> <xs:element name="ENDDATE" /> <xs:element name="REDIRECTTOURL" /> <xs:element name="IMAGE" type="xs:string" /> <xs:element name="PRODUCTS"> <xs:complexType> <xs:sequence minOccurs="0"> <xs:element maxOccurs="unbounded" name="PRODUCT"> <xs:complexType> <xs:sequence> <xs:element name="ID" type="xs:unsignedByte" /> <xs:element name="NAME" type="xs:string" /> <xs:element name="PARTNUM" type="xs:string" /> <xs:element name="DESCRIPTION" type="xs:string" /> <xs:element name="PRICE" type="xs:decimal" /> <xs:element name="COST" type="xs:string" /> <xs:element name="PRODUCTTYPE" type="xs:string" /> <xs:element name="STARTDATE" /> <xs:element name="ENDDATE" /> <xs:element name="WEIGHT" type="xs:string" /> <xs:element name="RANKWITHINCATEGORY" type="xs:unsignedShort" /> <xs:element name="ISSIMPLE" type="xs:unsignedByte" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element minOccurs="0" maxOccurs="unbounded" name="CATEGORY"> <xs:complexType> <xs:sequence> <xs:element name="ID" type="xs:unsignedByte" /> <xs:element name="NAME" type="xs:string" /> <xs:element name="RANK" type="xs:unsignedByte" /> <xs:element name="ACTIVE" type="xs:unsignedByte" /> <xs:element name="STARTDATE" /> <xs:element name="ENDDATE" /> <xs:element name="REDIRECTTOURL" /> <xs:element name="IMAGE" type="xs:string" /> <xs:element name="PRODUCTS"> <xs:complexType> <xs:sequence minOccurs="0"> <xs:element maxOccurs="unbounded" name="PRODUCT">

152 PUBLICSAP CPQ API Documentation

SOAP API

<xs:complexType> <xs:sequence> <xs:element name="ID" type="xs:unsignedByte" /> <xs:element name="NAME" type="xs:string" /> <xs:element name="PARTNUM" type="xs:string" /> <xs:element name="DESCRIPTION" type="xs:string" /> <xs:element name="PRICE" type="xs:decimal" /> <xs:element name="COST" type="xs:string" /> <xs:element name="PRODUCTTYPE" type="xs:string" /> <xs:element name="STARTDATE" /> <xs:element name="ENDDATE" /> <xs:element name="WEIGHT" type="xs:string" /> <xs:element name="RANKWITHINCATEGORY" type="xs:unsignedShort" /> <xs:element name="ISSIMPLE" type="xs:unsignedByte" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element minOccurs="0" maxOccurs="unbounded" name="CATEGORY"> <xs:complexType> <xs:sequence> <xs:element name="ID" type="xs:unsignedByte" /> <xs:element name="NAME" type="xs:string" /> <xs:element name="RANK" type="xs:unsignedByte" /> <xs:element name="ACTIVE" type="xs:unsignedByte" /> <xs:element name="STARTDATE" /> <xs:element name="ENDDATE" /> <xs:element name="REDIRECTTOURL" /> <xs:element name="IMAGE" type="xs:string" /> <xs:element name="PRODUCTS"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="PRODUCT"> <xs:complexType> <xs:sequence> <xs:element name="ID" type="xs:unsignedByte" /> <xs:element name="NAME" type="xs:string" /> <xs:element name="PARTNUM" type="xs:string" /> <xs:element name="DESCRIPTION" type="xs:string" /> <xs:element name="PRICE" type="xs:decimal" /> <xs:element name="COST" type="xs:string" /> <xs:element name="PRODUCTTYPE" type="xs:string" /> <xs:element name="STARTDATE" /> <xs:element name="ENDDATE" /> <xs:element name="WEIGHT" /> <xs:element name="RANKWITHINCATEGORY" type="xs:unsignedByte" />

SAP CPQ API DocumentationSOAP API PUBLIC 153

<xs:element name="ISSIMPLE" type="xs:unsignedByte" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.8.3 Get Catalogue Data - Input and Output Parameters

Get Catalogue Data - Input parameters:

Tag Data Type Description Required Comments

Username String Only SAP CPQ admin­istrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor user name

Password String Only SAP CPQ admin­istrators can execute this function. Pass­word is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor's password for the administrator user name provided in the username element

Get Catalogue Data - Output parameters:

Get Cart Properties – Output parameters:

Tag Data Type Description Required Comments

CART XML Output result. Yes Result is an XML for­matted string.

154 PUBLICSAP CPQ API Documentation

SOAP API

2.9 Get Quote Data SOAP API

Function name: GetQuoteData

The GetQuoteData function returns general quote data (including main/line items), actions, key attributes, product types, promo codes, additional discounts, markets, shippings, customer data and custom fields.

Authentication: SOAP API authentication [page 376]

2.9.1 Get Quote Data - Input and Output Parameters

Get Quote Data - Input parameters:

Tag Data Type Description Required Comments

Username String Only SAP CPQ admin­istrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor user name

Password String Only SAP CPQ admin­istrators can execute this function. Pass­word is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor's password for the administrator user name provided in the username element

cartCompositeNumber String Cart composite num­ber.

System quotation number of a cart to get properties of

revNum Integer or Null Cart revision number. No If null, active revision will be returned

Get Quote Data - Output parameters:

Tag Data Type Description Required Comments

CART XML Output result. Yes Result is an XML for­matted string.

2.9.2 Result XML Examples, List No. 1

<Cart CartCompositeNumber="00010001" CartId="1" OwnerId="1"> <DateOrdered Editable="0"><![CDATA[]]></DateOrdered> <DateClosed Editable="0"><![CDATA[]]></DateClosed> <DateCreated Editable="0"><![CDATA[07/20/09]]></DateCreated> <DateModified Editable="0"><![CDATA[07/20/09]]></DateModified> <DirtyFlag Editable="0"><![CDATA[4]]></DirtyFlag> <SubCartId Editable="0"><![CDATA[0]]></SubCartId>

SAP CPQ API DocumentationSOAP API PUBLIC 155

<SubOwnerId Editable="0"><![CDATA[0]]></SubOwnerId> <ActiveRevision Editable="0"><![CDATA[1]]></ActiveRevision> <GlobalsCsv Editable="0"><![CDATA[CART_OWNER_ID: 1,CARTID: 1,QUOTESTATUS: Open,EXCEEDEDISCOUNT: 0,]]></GlobalsCsv> <RevisionNumber Editable="0"><![CDATA[0]]></RevisionNumber> <MarketId Editable="0"><![CDATA[1]]></MarketId> <MarketFactor Editable="0"><![CDATA[1.00]]></MarketFactor> <PaymentApproved Editable="0"><![CDATA[0]]></PaymentApproved> <PaymentMethod Editable="0"><![CDATA[]]></PaymentMethod> <TrackingKey Editable="0"><![CDATA[ ]]></TrackingKey> <LastCartXml Editable="0"><![CDATA[]]></LastCartXml> <CRMAccountRoleId Editable="0"><![CDATA[0]]></CRMAccountRoleId> <Revision> <MasterId><![CDATA[1]]></MasterId> <ParentId><![CDATA[1]]></ParentId> <CartId><![CDATA[1]]></CartId> <Name><![CDATA[MASTER]]></Name> <Description><![CDATA[Master description...]]></Description> <RevisionNumber><![CDATA[0]]></RevisionNumber> </Revision> <CartComment Editable="0" EditableGroup="0"><![CDATA[]]></CartComment> <TotalProductModelPrice Editable="0" EditableGroup="0"><![CDATA[660.00]]></TotalProductModelPrice> <TotalPromoDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalPromoDiscountAmount> <AveragePromoDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></AveragePromoDiscountPercent> <TotalListPrice Editable="0" EditableGroup="0"><![CDATA[660.00]]></TotalListPrice> <TotalNetPrice Editable="0" EditableGroup="0"><![CDATA[660.00]]></TotalNetPrice> <AverageProductDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></AverageProductDiscountPercent> <TotalProductDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalProductDiscountAmount> <AverageProductMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></AverageProductMultiplier> <TotalProductMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalProductMultiplierAmount> <AdditionalMultiplier Editable="0" EditableGroup="0"><![CDATA[0.00]]></AdditionalMultiplier> <AdditionalMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></AdditionalMultiplierAmount> <OverallDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></OverallDiscountAmount> <OverallDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></OverallDiscountPercent> <SubTotalAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></SubTotalAmount> <TotalChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelMarkupPercent> <TotalChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelMarkupAmount> <EndUserSubTotalAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></EndUserSubTotalAmount> <TotalCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCost> <TotalGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[100.00]]></TotalGrossMarginPercent> <TotalGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></TotalGrossMarginAmount> <MarginHealthColor Editable="0" EditableGroup="0"><![CDATA[]]></MarginHealthColor> <MarginHealthImage Editable="0" EditableGroup="0"><![CDATA[]]></MarginHealthImage> <TotalChannelCost Editable="0" EditableGroup="0"><![CDATA[660.00]]></TotalChannelCost> <TotalChannelGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[100.00]]></TotalChannelGrossMarginPercent>

156 PUBLICSAP CPQ API Documentation

SOAP API

<TotalChannelGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></TotalChannelGrossMarginAmount> <TotalChannelCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelCommisionPercent> <TotalChannelCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelCommisionAmount> <TotalUserCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalUserCommisionPercent> <TotalUserCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalUserCommisionAmount> <TotalShippingStaticPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalShippingStaticPrice> <TotalShippingCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalShippingCost> <VatAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></VatAmount> <VatPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></VatPercent> <TaxPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TaxPercent> <TaxAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TaxAmount> <TotalAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></TotalAmount> <TotalWeight Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalWeight> <TotalUpfrontAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></TotalUpfrontAmount> <TotalMonthlyFeeAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMonthlyFeeAmount> <MonthlyFee Editable="0" EditableGroup="0"><![CDATA[0.00]]></MonthlyFee> <NumberOfPayments Editable="0" EditableGroup="0"><![CDATA[0]]></NumberOfPayments> <TotalCustomColumn1 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn1> <TotalCustomColumn2 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn2> <TotalCustomColumn3 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn3> <TotalCustomColumn4 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn4> <MainItems> <MainItem CanOverrideMinMaxValues="0"> <Rank Editable="0" EditableGroup="0"><![CDATA[1]]></Rank> <CartItem Editable="0" EditableGroup="0"><![CDATA[1]]></CartItem> <RolledUpCartItem Editable="0" EditableGroup="0"><![CDATA[1]]></RolledUpCartItem> <ParentItem Editable="0" EditableGroup="0"><![CDATA[0]]></ParentItem> <Quantity Editable="0" EditableGroup="0"><![CDATA[1]]></Quantity> <PartNumber Editable="0" EditableGroup="0"><![CDATA[SMB2-A3-1024-H25-C521F]]></PartNumber> <Cost Editable="0" EditableGroup="0"><![CDATA[0.00]]></Cost> <ExtendedCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedCost> <ProductModelPrice Editable="0" EditableGroup="0"><![CDATA[660.00]]></ProductModelPrice> <PromoDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PromoDiscountAmount> <PromoDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PromoDiscountPercent> <ListPrice Editable="0" EditableGroup="0"><![CDATA[660.00]]></ListPrice> <BaseListPrice Editable="0" EditableGroup="0"><![CDATA[660.00]]></BaseListPrice> <ExtendedListPrice Editable="0" EditableGroup="0"><![CDATA[660.00]]></ExtendedListPrice> <DiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></DiscountPercent> <UnitDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UnitDiscountAmount> <DiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></DiscountAmount> <Multiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.000000]]></Multiplier>

SAP CPQ API DocumentationSOAP API PUBLIC 157

<UnitMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UnitMultiplierAmount> <MultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MultiplierAmount> <NetPrice Editable="0" EditableGroup="0"><![CDATA[660.00]]></NetPrice> <ExtendedAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></ExtendedAmount> <ManufacturesGrossMargin Editable="0" EditableGroup="0"><![CDATA[100.00]]></ManufacturesGrossMargin> <ChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarkupPercent> <ChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarkupAmount> <EndUserNet Editable="0" EditableGroup="0"><![CDATA[660.00]]></EndUserNet> <EndUserExtendedAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></EndUserExtendedAmount> <ChannelMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarginPercent> <ProductTypeName Editable="0" EditableGroup="0"><![CDATA[Hardware]]></ProductTypeName> <ProductTypeId Editable="0" EditableGroup="0"><![CDATA[2]]></ProductTypeId> <ChannelCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelCommisionPercent> <ChannelCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelCommisionAmount> <UserCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></UserCommisionPercent> <UserCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UserCommisionAmount> <IsOptional Editable="0" EditableGroup="0"><![CDATA[0]]></IsOptional> <MarginHealthColor Editable="0" EditableGroup="0"><![CDATA[]]></MarginHealthColor> <MarginHealthImage Editable="0" EditableGroup="0"><![CDATA[]]></MarginHealthImage> <ProductId Editable="0" EditableGroup="0"><![CDATA[1]]></ProductId> <ProductName Editable="0" EditableGroup="0"><![CDATA[SMB2 Desktop computer]]></ProductName> <Description Editable="0" EditableGroup="0"><![CDATA[SMB2 Desktop Computer with:AMD Athlon 3000+ Processor,1024MB-DDR Memory,250GB Hard Disc,CD-R 52/16/52 Drive,21inch Flat Screen Monitor]]></Description> <DescriptionLong Editable="0" EditableGroup="0"><![CDATA[SMB2 Desktop computer]]></DescriptionLong> <UserDescription Editable="0" EditableGroup="0"><![CDATA[]]></UserDescription> <CategoryId Editable="0" EditableGroup="0"><![CDATA[1]]></CategoryId> <DateAdded Editable="0" EditableGroup="0"><![CDATA[07/20/09]]></DateAdded> <ItemDeliveryMethod Editable="0" EditableGroup="0"><![CDATA[]]></ItemDeliveryMethod> <ItemDeliveryStatus Editable="0" EditableGroup="0"><![CDATA[0]]></ItemDeliveryStatus> <EffDate Editable="0" EditableGroup="0"><![CDATA[07/20/09]]></EffDate> <SubProductId Editable="0" EditableGroup="0"><![CDATA[]]></SubProductId> <GroupId Editable="0" EditableGroup="0"><![CDATA[]]></GroupId> <BaseQuantity Editable="0" EditableGroup="0"><![CDATA[0.00]]></BaseQuantity> <DefaultDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></DefaultDiscountPercent> <MinDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MinDiscountPercent> <MaxDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MaxDiscountPercent> <DefaultMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></DefaultMultiplier> <MinMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MinMultiplier> <MaxMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MaxMultiplier> <Weight Editable="0" EditableGroup="0"><![CDATA[0.00]]></Weight>

158 PUBLICSAP CPQ API Documentation

SOAP API

<UpfrontPercent Editable="0" EditableGroup="0"><![CDATA[100.00]]></UpfrontPercent> <UpfrontAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></UpfrontAmount> <MonthlyFeeAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MonthlyFeeAmount> <CustomColumn1 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn1> <CustomColumn2 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn2> <CustomColumn3 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn3> <CustomColumn4 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn4> <IsSimple Editable="0"><![CDATA[0]]></IsSimple> <ItemShippingCost Editable="0"><![CDATA[0.00]]></ItemShippingCost> <ProductWizardCfgId Editable="0"><![CDATA[0]]></ProductWizardCfgId> <ProductWizardCfgAttrCode Editable="0"><![CDATA[0]]></ProductWizardCfgAttrCode> <RolledUpListPrice Editable="0"><![CDATA[0.00]]></RolledUpListPrice> <RolledUpExtendedListPrice Editable="0"><![CDATA[0.00]]></RolledUpExtendedListPrice> <RolledUpNetPrice Editable="0"><![CDATA[0.00]]></RolledUpNetPrice> <RolledUpExtendedAmount Editable="0"><![CDATA[0.00]]></RolledUpExtendedAmount> <IsComplete Editable="0"><![CDATA[1]]></IsComplete> <IsInvalid Editable="0"><![CDATA[0]]></IsInvalid> <RolledUpEndCustomerUnitPrice Editable="0"><![CDATA[660.00]]></RolledUpEndCustomerUnitPrice> <RolledUpEndCustomerExtendedPrice Editable="0"><![CDATA[660.00]]></RolledUpEndCustomerExtendedPrice> <LineItems /> <Actions /> <KeyAttributes> <KeyAttribute> <Rank>4</Rank> <Expression /> <Label>Terms</Label> <Value><![CDATA[]]></Value> <OwnerId>0</OwnerId> <CartId>0</CartId> <CartItem>0</CartItem> </KeyAttribute> </KeyAttributes> <Details /> <SubProducts /> <AppliedPromotions /> </MainItem> </MainItems> <ProductTypes> <ProductType CanOverrideMinMaxValues="0"> <PTName Editable="0" EditableGroup="0"><![CDATA[Hardware]]></PTName> <PTRank Editable="0" EditableGroup="0"><![CDATA[0]]></PTRank> <PTId Editable="0" EditableGroup="0"><![CDATA[2]]></PTId> <ProductModelSubTotal Editable="0" EditableGroup="0"><![CDATA[660.00]]></ProductModelSubTotal> <PTPromoDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTPromoDiscountAmount> <PTPromoDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTPromoDiscountPercent> <PTListSubTotal Editable="0" EditableGroup="0"><![CDATA[660.00]]></PTListSubTotal> <PTMultiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.00]]></PTMultiplier> <PTMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMultiplierAmount> <PTDiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></PTDiscountPercent>

SAP CPQ API DocumentationSOAP API PUBLIC 159

<PTDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTDiscountAmount> <PTSubTotal Editable="0" EditableGroup="0"><![CDATA[660.00]]></PTSubTotal> <PTChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelMarkupPercent> <PTChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelMarkupAmount> <PTEndUserSubTotal Editable="0" EditableGroup="0"><![CDATA[660.00]]></PTEndUserSubTotal> <PTChannelCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelCommisionPercent> <PTChannelCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelCommisionAmount> <PTUserCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTUserCommisionPercent> <PTUserCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTUserCommisionAmount> <PTCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCost> <PTGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[100.00]]></PTGrossMarginPercent> <PTGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[660.00]]></PTGrossMarginAmount> <PTChannelCost Editable="0" EditableGroup="0"><![CDATA[660.00]]></PTChannelCost> <PTChannelGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelGrossMarginPercent> <PTChannelGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelGrossMarginAmount> <MarginHealthColor Editable="0" EditableGroup="0"><![CDATA[]]></MarginHealthColor> <MarginHealthImage Editable="0" EditableGroup="0"><![CDATA[]]></MarginHealthImage> <PTDefaultDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTDefaultDiscountPercent> <PTMinDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMinDiscountPercent> <PTMaxDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMaxDiscountPercent> <PTDefaultMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></PTDefaultMultiplier> <PTMinMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></PTMinMultiplier> <PTMaxMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></PTMaxMultiplier> <PTCustomColumn1 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn1> <PTCustomColumn2 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn2> <PTCustomColumn3 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn3> <PTCustomColumn4 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn4> </ProductType> </ProductTypes> <PromoCodes /> <AdditionalDiscounts Editable="0" /> <Markets> <Market Selected="1"> <MarketName><![CDATA[USA Market]]></MarketName> <MarketId><![CDATA[1]]></MarketId> <MarketFactor><![CDATA[1.00]]></MarketFactor> <MarketCode><![CDATA[USD]]></MarketCode> <CurrencyCode><![CDATA[USD]]></CurrencyCode> <CurrencyQuote><![CDATA[1.00]]></CurrencyQuote> <CurrencyDescription><![CDATA[USA Dollar]]></CurrencyDescription> <CurrencySign><![CDATA[$]]></CurrencySign> <CurrencyDefault><![CDATA[1]]></CurrencyDefault> </Market>

160 PUBLICSAP CPQ API Documentation

SOAP API

</Markets> <Shippings> <Shipping Selected="1" Editable="0"> <ShippingName><![CDATA[Standard Shipping]]></ShippingName> <ShippingId><![CDATA[1]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> </Shippings> <Customers> <Customer CustomerRoleType="1" Editable="1" Visible="0" Required="0" Personal="1" Rank="1"> <CustomerId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></CustomerId> <ShopCartId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></ShopCartId> <UserId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></UserId> <FirstName Editable="1" Visible="1" Required="0" FieldDisplayName="First Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="1" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_FIRST_NAME"><![CDATA[]]></FirstName> <LastName Editable="1" Visible="1" Required="0" FieldDisplayName="Last Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="2" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_LAST_NAME"><![CDATA[]]></LastName> <Company Editable="1" Visible="1" Required="0" FieldDisplayName="Company" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="5" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COMPANY"><![CDATA[]]></Company> <Address1 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (1)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="6" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_ADDR1"><![CDATA[]]></Address1> <Address2 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (2)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="7" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ADDR2"><![CDATA[]]></Address2> <City Editable="1" Visible="1" Required="0" FieldDisplayName="City" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="8" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_CITY"><![CDATA[]]></City> <StateAbbrev Editable="1" Visible="1" Required="0" FieldDisplayName="State/Province" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="States" FieldErrorMessage="" Rank="9" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_STATE"><![CDATA[]]></StateAbbrev> <ZipCode Editable="1" Visible="1" Required="0" FieldDisplayName="ZIP/Postal Code" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="11" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ZIP_CODE"><![CDATA[]]></ZipCode>

SAP CPQ API DocumentationSOAP API PUBLIC 161

<CountryAbbrev Editable="1" Visible="1" Required="0" FieldDisplayName="Country" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Countries" FieldErrorMessage="" Rank="12" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COUNTRY"><![CDATA[USA]]></CountryAbbrev> <TerritoryId Editable="1" Visible="1" Required="0" FieldDisplayName="Territory" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Territories" FieldErrorMessage="" Rank="13" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="teritory_id"><![CDATA[0]]></TerritoryId> <TerritoryName Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></TerritoryName> <BusinessPhone Editable="1" Visible="1" Required="0" FieldDisplayName="Phone" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="14" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_PHONE"><![CDATA[]]></BusinessPhone> <BusinessFax Editable="1" Visible="1" Required="0" FieldDisplayName="Fax" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="15" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_FAX"><![CDATA[]]></BusinessFax> <Email Editable="1" Visible="1" Required="0" FieldDisplayName="Email" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="16" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_E_MAIL_ADDR"><![CDATA[]]></Email> <DirtyFlag Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[4]]></DirtyFlag> <CustomerCode Editable="1" Visible="1" Required="0" FieldDisplayName="Customer Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="3" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="customer_code"><![CDATA[]]></CustomerCode> <RevisionNumber Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></RevisionNumber> <CRMAccountId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Account Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="17" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_AccountId"><![CDATA[]]></CRMAccountId> <CRMContactId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Contact Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="18" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_ContactId"><![CDATA[]]></CRMContactId> <Province Editable="1" Visible="1" Required="0" FieldDisplayName="Province" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="10" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_PROVINCE"><![CDATA[]]></Province> <OwnerName Editable="0" Visible="1" Required="0" FieldDisplayName="Owner name" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="99999" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="1" CustomerInfoColumn=""><![CDATA[John Smith]]></OwnerName> <PrimaryIndustry Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData=""

162 PUBLICSAP CPQ API Documentation

SOAP API

FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></PrimaryIndustry> <CustomerPassword Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerPassword> <CustomerType Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerType> <Active Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[1]]></Active> <Title Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></Title> <Actions> <Action ActionId="1" ActionName="Edit" /> <Action ActionId="2" ActionName="Add" /> <Action ActionId="3" ActionName="Delete" /> <Action ActionId="4" ActionName="Lookup" /> </Actions> </Customer> <Customer CustomerRoleType="2" Editable="1" Visible="0" Required="0" Personal="1" Rank="3"> <CustomerId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></CustomerId> <ShopCartId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></ShopCartId> <UserId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></UserId> <FirstName Editable="1" Visible="1" Required="0" FieldDisplayName="First Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="1" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_FIRST_NAME"><![CDATA[]]></FirstName> <LastName Editable="1" Visible="1" Required="0" FieldDisplayName="Last Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="2" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_LAST_NAME"><![CDATA[]]></LastName> <Company Editable="1" Visible="1" Required="0" FieldDisplayName="Company" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="5" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COMPANY"><![CDATA[]]></Company> <Address1 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (1)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="6" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_ADDR1"><![CDATA[]]></Address1>

SAP CPQ API DocumentationSOAP API PUBLIC 163

<Address2 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (2)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="7" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ADDR2"><![CDATA[]]></Address2> <City Editable="1" Visible="1" Required="0" FieldDisplayName="City" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="8" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_CITY"><![CDATA[]]></City> <StateAbbrev Editable="1" Visible="1" Required="0" FieldDisplayName="State/Province" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="States" FieldErrorMessage="" Rank="9" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_STATE"><![CDATA[]]></StateAbbrev> <ZipCode Editable="1" Visible="1" Required="0" FieldDisplayName="ZIP/Postal Code" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="11" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ZIP_CODE"><![CDATA[]]></ZipCode> <CountryAbbrev Editable="1" Visible="1" Required="0" FieldDisplayName="Country" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Countries" FieldErrorMessage="" Rank="12" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COUNTRY"><![CDATA[USA]]></CountryAbbrev> <TerritoryId Editable="1" Visible="1" Required="0" FieldDisplayName="Territory" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Territories" FieldErrorMessage="" Rank="13" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="teritory_id"><![CDATA[0]]></TerritoryId> <TerritoryName Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></TerritoryName> <BusinessPhone Editable="1" Visible="1" Required="0" FieldDisplayName="Phone" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="14" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_PHONE"><![CDATA[]]></BusinessPhone> <BusinessFax Editable="1" Visible="1" Required="0" FieldDisplayName="Fax" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="15" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_FAX"><![CDATA[]]></BusinessFax> <Email Editable="1" Visible="1" Required="0" FieldDisplayName="Email" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="16" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_E_MAIL_ADDR"><![CDATA[]]></Email> <DirtyFlag Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></DirtyFlag> <CustomerCode Editable="1" Visible="1" Required="0" FieldDisplayName="Customer Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="3" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="customer_code"><![CDATA[]]></CustomerCode> <RevisionNumber Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></RevisionNumber> <CRMAccountId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Account Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData=""

164 PUBLICSAP CPQ API Documentation

SOAP API

FieldErrorMessage="" Rank="17" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_AccountId"><![CDATA[]]></CRMAccountId> <CRMContactId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Contact Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="18" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_ContactId"><![CDATA[]]></CRMContactId> <Province Editable="1" Visible="1" Required="0" FieldDisplayName="Province" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="10" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_PROVINCE"><![CDATA[]]></Province> <OwnerName Editable="0" Visible="1" Required="0" FieldDisplayName="Owner name" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="99999" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="1" CustomerInfoColumn=""><![CDATA[]]></OwnerName> <PrimaryIndustry Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></PrimaryIndustry> <CustomerPassword Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerPassword> <CustomerType Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerType> <Active Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[1]]></Active> <Title Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></Title> <Actions> <Action ActionId="1" ActionName="Edit" /> <Action ActionId="2" ActionName="Add" /> <Action ActionId="3" ActionName="Delete" /> <Action ActionId="4" ActionName="Lookup" /> </Actions> </Customer> </Customers> <Actions /> <ScParams> <SCParam Required="0" Editable="1" Visible="1" FieldDisplayName="Additional Comments" FieldDisplayType="LongTextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[4]]></ScParamId> <Label><![CDATA[Additional Comments]]></Label> <StrongName><![CDATA[Additional Comments]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[3]]></Rank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[4]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder>

SAP CPQ API DocumentationSOAP API PUBLIC 165

<CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" Visible="1" FieldDisplayName="Expiration Date" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[10]]></ScParamId> <Label><![CDATA[Expiration Date]]></Label> <StrongName><![CDATA[Expiration Date]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[2]]></Rank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[3]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" Visible="1" FieldDisplayName="Invoice Number" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[8]]></ScParamId> <Label><![CDATA[Invoice Number]]></Label> <StrongName><![CDATA[Invoice Number]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[7]]></Rank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" Visible="1" FieldDisplayName="PO Number" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[6]]></ScParamId> <Label><![CDATA[PO Number]]></Label> <StrongName><![CDATA[PO Number]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[6]]></Rank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" Visible="1" FieldDisplayName="Project Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[1]]></ScParamId> <Label><![CDATA[Project Name]]></Label> <StrongName><![CDATA[Project Name]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[1]]></Rank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem>

166 PUBLICSAP CPQ API Documentation

SOAP API

<ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" Visible="1" FieldDisplayName="Terms" FieldDisplayType="SelectList" FieldDisplaySize="350" FieldSelectListData="Attribute_17" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[5]]></ScParamId> <Label><![CDATA[Terms]]></Label> <StrongName><![CDATA[Terms]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[5]]></Rank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[2]]></ScParamType> <StdAttrCode><![CDATA[17]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" Visible="1" FieldDisplayName="Vertical Market" FieldDisplayType="SelectList" FieldDisplaySize="350" FieldSelectListData="Attribute_18" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[9]]></ScParamId> <Label><![CDATA[Vertical Market]]></Label> <StrongName><![CDATA[Vertical Market]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[8]]></Rank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[2]]></ScParamType> <StdAttrCode><![CDATA[18]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> </ScParams> <OrderStatus> <OrderStatusId><![CDATA[1]]></OrderStatusId> <OrderStatusName><![CDATA[Open]]></OrderStatusName> </OrderStatus> <MT_PATH>/WebSite/mt/TESTING/</MT_PATH> <SHOW_MARGIN_HEALTH>0</SHOW_MARGIN_HEALTH> <SHOW_PRICES>1</SHOW_PRICES> <PlaceOrder_OverrideGenericEmail>0</PlaceOrder_OverrideGenericEmail> <OwnerIdCrypted>5NykW38aN5E%3d</OwnerIdCrypted> <CartIdCrypted>DM%2fQfFMFgdo%3d</CartIdCrypted> <History CanUndo="0" CanRedo="0" /> <ApprovalRules IsApprovalNeeded="0"> <ErrorMessages /> </ApprovalRules> <ShowProposalOnCart>0</ShowProposalOnCart> <ShowQuoteOnViewProposal>0</ShowQuoteOnViewProposal> </Cart>

SAP CPQ API DocumentationSOAP API PUBLIC 167

Result XML Examples, List No. 2

<Cart CartCompositeNumber="000127000021" CartId="21" OwnerId="127"> <DateOrdered Editable="0" EditableGroup="0"><![CDATA[]]></DateOrdered> <DateClosed Editable="0" EditableGroup="0"><![CDATA[]]></DateClosed> <DateCreated><![CDATA[17/04/15]]></DateCreated> <DateModified><![CDATA[17/04/15]]></DateModified> <DirtyFlag><![CDATA[4]]></DirtyFlag> <SubCartId><![CDATA[0]]></SubCartId> <SubOwnerId><![CDATA[0]]></SubOwnerId> <ActiveRevision><![CDATA[1]]></ActiveRevision> <GlobalsCsv><![CDATA[QUOTESTATUS:Open,CART_OWNER_ID:127,EXCEEDEDISCOUNT:0,CARTID:21,MD TOTAL PRICE:0,CUSTOM_TEST:22,CUSTOMJR:jecaRelease,CUSTOMS40:200,KACACUSTOMFIELD:0.000000000000000000,MAJAE:2015.04.17 10%3A06%3A36.82,POLJE1:000127000021-1-,POLJE2:-2--2--2-,POLJE3:blablablablablabla,QUOTE EXPIRATION DATE:17/05/15,TERMS:Net 30,TESTCUSTOM:0,]]></GlobalsCsv> <RevisionNumber><![CDATA[0]]></RevisionNumber> <MarketId><![CDATA[3]]></MarketId> <MarketFactor><![CDATA[1.20]]></MarketFactor> <ShipId><![CDATA[0]]></ShipId> <ForwardCurrencyRate><![CDATA[1.00]]></ForwardCurrencyRate> <PaymentApproved><![CDATA[0]]></PaymentApproved> <PaymentMethod><![CDATA[]]></PaymentMethod> <TrackingKey><![CDATA[ ]]></TrackingKey> <CRMAccountRoleId><![CDATA[0]]></CRMAccountRoleId> <Revision> <MasterId><![CDATA[21]]></MasterId> <ParentId><![CDATA[21]]></ParentId> <CartId><![CDATA[21]]></CartId> <Name><![CDATA[MASTER]]></Name> <Description><![CDATA[Master description...]]></Description> <RevisionNumber><![CDATA[0]]></RevisionNumber> </Revision> <CartComment Editable="0" EditableGroup="0"><![CDATA[]]></CartComment> <TotalProductModelPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalProductModelPrice> <TotalPromoDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalPromoDiscountAmount> <AveragePromoDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></AveragePromoDiscountPercent> <TotalListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalListPrice> <TotalNetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalNetPrice> <AverageProductDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></AverageProductDiscountPercent> <TotalProductDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalProductDiscountAmount> <AverageProductMultiplier Editable="0" EditableGroup="0"><![CDATA[0.00]]></AverageProductMultiplier> <TotalProductMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalProductMultiplierAmount> <AdditionalMultiplier Editable="0" EditableGroup="0"><![CDATA[0.00]]></AdditionalMultiplier> <AdditionalMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></AdditionalMultiplierAmount> <OverallDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></OverallDiscountAmount> <OverallDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></OverallDiscountPercent> <SubTotalAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></SubTotalAmount> <TotalChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelMarkupPercent> <TotalChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelMarkupAmount>

168 PUBLICSAP CPQ API Documentation

SOAP API

<EndUserSubTotalAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></EndUserSubTotalAmount> <TotalCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCost> <TotalGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalGrossMarginPercent> <TotalGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalGrossMarginAmount> <MarginHealthColor><![CDATA[Yellow]]></MarginHealthColor> <MarginHealthImage><![CDATA[highMarginPicture.gif]]></MarginHealthImage> <MRCMarginHealthColor><![CDATA[Yellow]]></MRCMarginHealthColor> <MRCMarginHealthImage><![CDATA[highMarginPicture.gif]]></MRCMarginHealthImage> <TotalChannelCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelCost> <TotalChannelGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelGrossMarginPercent> <TotalChannelGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelGrossMarginAmount> <TotalChannelCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelCommisionPercent> <TotalChannelCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalChannelCommisionAmount> <TotalUserCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalUserCommisionPercent> <TotalUserCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalUserCommisionAmount> <TotalShippingStaticPrice Editable="0" EditableGroup="0"><![CDATA[1.00]]></TotalShippingStaticPrice> <TotalShippingCost Editable="0" EditableGroup="0"><![CDATA[1.08]]></TotalShippingCost> <VatAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></VatAmount> <VatPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></VatPercent> <TaxPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TaxPercent> <TaxAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TaxAmount> <TotalAmount Editable="0" EditableGroup="0"><![CDATA[1.08]]></TotalAmount> <TotalWeight Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalWeight> <TotalUpfrontAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalUpfrontAmount> <TotalMonthlyFeeAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMonthlyFeeAmount> <MonthlyFee Editable="0" EditableGroup="0"><![CDATA[0.00]]></MonthlyFee> <NumberOfPayments Editable="0" EditableGroup="0"><![CDATA[24]]></NumberOfPayments> <TotalCustomColumn1 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn1> <TotalCustomColumn2 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn2> <TotalCustomColumn3 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn3> <TotalCustomColumn4 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn4> <TotalCustomColumn5 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn5> <TotalCustomColumn6 Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalCustomColumn6> <TotalVariantItems Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalVariantItems> <TotalMRCListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCListPrice> <TotalMRCNetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCNetPrice> <AverageMRCProductDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></AverageMRCProductDiscountPercent> <TotalMRCProductDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCProductDiscountAmount> <AverageMRCProductMultiplier Editable="0" EditableGroup="0"><![CDATA[0.00]]></AverageMRCProductMultiplier> <TotalMRCProductMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCProductMultiplierAmount>

SAP CPQ API DocumentationSOAP API PUBLIC 169

<MRCSubTotalAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCSubTotalAmount> <TotalMRCChannelCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCChannelCost> <TotalMRCChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCChannelMarkupPercent> <TotalMRCChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCChannelMarkupAmount> <TotalMRCCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCCost> <TotalMRCGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCGrossMarginPercent> <TotalMRCGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCGrossMarginAmount> <TotalMRCChannelGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCChannelGrossMarginPercent> <TotalMRCChannelGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></TotalMRCChannelGrossMarginAmount> <OverallMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></OverallMRCDiscountPercent> <OverallMRCDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></OverallMRCDiscountAmount> <MRCEndUserSubTotalAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCEndUserSubTotalAmount> <MRCVatAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCVatAmount> <MRCTaxAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCTaxAmount> <MRCTotalAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCTotalAmount> <CekiD Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="2.00" MaxValue="2.00" FieldSummary="6.00" MinValueCV="2.00" MaxValueCV="2.00" FieldSummaryCV="6.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></CekiD> <RecommendedDiscount Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></RecommendedDiscount> <milos_currency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="5.00" MaxValue="5.00" FieldSummary="15.00" MinValueCV="5.00" MaxValueCV="5.00" FieldSummaryCV="15.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></milos_currency> <jvCustomField Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></jvCustomField> <stefandate Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></stefandate> <milos_number Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></milos_number> <stefannumber Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></stefannumber> <bojanacrrency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Currency" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00"

170 PUBLICSAP CPQ API Documentation

SOAP API

MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></bojanacrrency> <milos_text Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[]]></milos_text> <TestCF Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[]]></TestCF> <milos_date Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueDate="" CustomFieldDataType="Date" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[]]></milos_date> <MainItems> <MainItem CanOverrideMinMaxValues="0"> <Id><![CDATA[1878]]></Id> <Rank><![CDATA[1]]></Rank> <CartItem><![CDATA[1]]></CartItem> <RolledUpCartItem><![CDATA[1]]></RolledUpCartItem> <ParentItem><![CDATA[0]]></ParentItem> <Quantity Editable="0" EditableGroup="0"><![CDATA[1]]></Quantity> <PartNumber Editable="0" EditableGroup="0"><![CDATA[SMB2-PB-1GB-H250]]></PartNumber> <Cost Editable="0" EditableGroup="0"><![CDATA[0.00]]></Cost> <ExtendedCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedCost> <ProductModelPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></ProductModelPrice> <ProductCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></ProductCost> <PromoDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PromoDiscountAmount> <PromoDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PromoDiscountPercent> <ListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></ListPrice> <BaseListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></BaseListPrice> <ExtendedListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedListPrice> <DiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></DiscountPercent> <UnitDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UnitDiscountAmount> <DiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></DiscountAmount> <Multiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.00000]]></Multiplier> <UnitMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UnitMultiplierAmount> <MultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MultiplierAmount> <NetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></NetPrice> <ExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedAmount> <ManufacturesGrossMargin Editable="0" EditableGroup="0"><![CDATA[0.00]]></ManufacturesGrossMargin> <ChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarkupPercent> <ChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarkupAmount> <EndUserNet Editable="0" EditableGroup="0"><![CDATA[0.00]]></EndUserNet> <EndUserExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></EndUserExtendedAmount> <ChannelMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarginPercent> <ProductTypeName><![CDATA[Hardware]]></ProductTypeName> <ProductTypeNameInDefaultLanguage><![CDATA[Hardware]]></ProductTypeNameInDefaultLanguage> <ProductTypeId><![CDATA[2]]></ProductTypeId> <ProductTypeSystemId><![CDATA[Hardware_cpq]]></ProductTypeSystemId> <ProductTypeRank><![CDATA[0]]></ProductTypeRank>

SAP CPQ API DocumentationSOAP API PUBLIC 171

<ProductTypeAddToCRM><![CDATA[1]]></ProductTypeAddToCRM> <ChannelCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelCommisionPercent> <ChannelCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelCommisionAmount> <UserCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></UserCommisionPercent> <UserCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UserCommisionAmount> <IsOptional><![CDATA[0]]></IsOptional> <MarginHealthColor><![CDATA[Red]]></MarginHealthColor> <MarginHealthImage><![CDATA[highMarginPicture.gif]]></MarginHealthImage> <MRCMarginHealthColor><![CDATA[Red]]></MRCMarginHealthColor> <MRCMarginHealthImage><![CDATA[highMarginPicture.gif]]></MRCMarginHealthImage> <ProductId><![CDATA[196]]></ProductId> <ProductSystemId><![CDATA[Desktop_Example_1_cpq]]></ProductSystemId> <ProductName><![CDATA[Desktop Example]]></ProductName> <ProductNameInDefaultLanguage><![CDATA[Desktop Example]]></ProductNameInDefaultLanguage> <Description><![CDATA[Product Description Example...Reliable office desktop for clerical and data entry work.]]></Description> <DescriptionLong><![CDATA[SMB2 Desktop computer]]></DescriptionLong> <UserDescription Editable="0" EditableGroup="0"><![CDATA[]]></UserDescription> <CategoryId><![CDATA[1]]></CategoryId> <DateAdded><![CDATA[17/04/15]]></DateAdded> <ItemDeliveryMethod><![CDATA[]]></ItemDeliveryMethod> <ItemDeliveryStatus><![CDATA[0]]></ItemDeliveryStatus> <EffDate><![CDATA[17/04/15]]></EffDate> <GroupId><![CDATA[ ]]></GroupId> <BaseQuantity Editable="0" EditableGroup="0"><![CDATA[0.00]]></BaseQuantity> <DefaultDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></DefaultDiscountPercent> <MinDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MinDiscountPercent> <MaxDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MaxDiscountPercent> <DefaultMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></DefaultMultiplier> <MinMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MinMultiplier> <MaxMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MaxMultiplier> <DefaultMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></DefaultMRCDiscountPercent> <MinMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MinMRCDiscountPercent> <MaxMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MaxMRCDiscountPercent> <DefaultMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></DefaultMRCMultiplier> <MinMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MinMRCMultiplier> <MaxMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MaxMRCMultiplier> <Weight Editable="0" EditableGroup="0"><![CDATA[0.00]]></Weight> <UpfrontPercent Editable="0" EditableGroup="0"><![CDATA[100.00]]></UpfrontPercent> <UpfrontAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UpfrontAmount> <MonthlyFeeAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MonthlyFeeAmount> <CustomColumn1 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn1> <CustomColumn2 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn2>

172 PUBLICSAP CPQ API Documentation

SOAP API

<CustomColumn3 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn3> <CustomColumn4 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn4> <CustomColumn5 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn5> <CustomColumn6 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn6> <ProductVersion><![CDATA[]]></ProductVersion> <ExternalId><![CDATA[]]></ExternalId> <UPC><![CDATA[]]></UPC> <MPN><![CDATA[]]></MPN> <LeadTime><![CDATA[]]></LeadTime> <Inventory><![CDATA[0]]></Inventory> <ProductDisplayInfo><![CDATA[0]]></ProductDisplayInfo> <FamilyCode><![CDATA[]]></FamilyCode> <PRODUCT_WEIGHT><![CDATA[]]></PRODUCT_WEIGHT> <ForwardCurrencyRate Editable="0" EditableGroup="0"><![CDATA[0.00]]></ForwardCurrencyRate> <ItemType Editable="0" EditableGroup="0"><![CDATA[0]]></ItemType> <BaseItem><![CDATA[0]]></BaseItem> <MRCListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCListPrice> <MRCExtendedListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCExtendedListPrice> <MRCDiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></MRCDiscountPercent> <MRCDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCDiscountAmount> <MRCUnitDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCUnitDiscountAmount> <MRCNetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCNetPrice> <MRCExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCExtendedAmount> <MRCGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCGrossMarginPercent> <MRCCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCCost> <MRCExtendedCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCExtendedCost> <MRCMultiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.00]]></MRCMultiplier> <MRCMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCMultiplierAmount> <MRCUnitMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCUnitMultiplierAmount> <MRCChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarkupPercent> <MRCChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarkupAmount> <MRCChannelMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarginPercent> <MRCChannelMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarginAmount> <MRCEndUserNet Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCEndUserNet> <MRCEndUserExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCEndUserExtendedAmount> <CartItemGuid><![CDATA[1fcfce4c-e816-497d-a47f-a40d6673397b]]></CartItemGuid> <BaseItemGuid><![CDATA[]]></BaseItemGuid> <ParentItemGuid><![CDATA[]]></ParentItemGuid> <CekiD Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="2.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[2.00]]></CekiD> <RecommendedDiscount Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></RecommendedDiscount>

SAP CPQ API DocumentationSOAP API PUBLIC 173

<milos_currency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="5.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[5.00]]></milos_currency> <jvCustomField Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></jvCustomField> <stefandate Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></stefandate> <milos_number Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></milos_number> <stefannumber Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></stefannumber> <bojanacrrency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Currency" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></bojanacrrency> <milos_text Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="neki text" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[neki text]]></milos_text> <TestCF Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="Express Shipping" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[Express Shipping]]></TestCF> <milos_date Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueDate="" CustomFieldDataType="Date" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[]]></milos_date> <IsSimple><![CDATA[0]]></IsSimple> <ItemShippingCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></ItemShippingCost> <ProductWizardCfgId><![CDATA[0]]></ProductWizardCfgId> <ProductWizardSystemProductId><![CDATA[0]]></ProductWizardSystemProductId> <ProductWizardCfgAttrCode><![CDATA[0]]></ProductWizardCfgAttrCode> <ProductWizardPavId><![CDATA[0]]></ProductWizardPavId> <RolledUpListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpListPrice> <RolledUpExtendedListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpExtendedListPrice> <RolledUpNetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpNetPrice> <RolledUpExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpExtendedAmount> <IsComplete><![CDATA[1]]></IsComplete> <HasIncompleteChildren><![CDATA[0]]></HasIncompleteChildren> <IsInvalid><![CDATA[0]]></IsInvalid> <IsExpanded><![CDATA[0]]></IsExpanded> <IsOptionalExpanded><![CDATA[0]]></IsOptionalExpanded> <RolledUpEndCustomerUnitPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpEndCustomerUnitPrice> <RolledUpEndCustomerExtendedPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpEndCustomerExtendedPrice> <RolledUpCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpCost> <RolledUpExtendedCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpExtendedCost> <RolledUpGrossMargin Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpGrossMargin> <RolledUpDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpDiscountAmount> <RolledUpDiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></RolledUpDiscountPercent> <NetAmountDifferenceFromBaseItem Editable="0" EditableGroup="0"><![CDATA[0.00]]></NetAmountDifferenceFromBaseItem> <RolledUpNetDifferenceFromBaseItem Editable="0" EditableGroup="0"><![CDATA[0.00]]></RolledUpNetDifferenceFromBaseItem> <MRCRolledUpEndCustomerUnitPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpEndCustomerUnitPrice>

174 PUBLICSAP CPQ API Documentation

SOAP API

<MRCRolledUpEndCustomerExtendedPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpEndCustomerExtendedPrice> <MRCRolledUpListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpListPrice> <MRCRolledUpExtendedListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpExtendedListPrice> <MRCRolledUpNetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpNetPrice> <MRCRolledUpExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpExtendedAmount> <MRCRolledUpCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpCost> <MRCRolledUpExtendedCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpExtendedCost> <MRCRolledUpGrossMargin Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpGrossMargin> <MRCRolledUpDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpDiscountAmount> <MRCRolledUpDiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></MRCRolledUpDiscountPercent> <MRCRolledUpNetDifferenceFromBaseItem Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCRolledUpNetDifferenceFromBaseItem> <HasDeleteAction>0</HasDeleteAction> <LineItems> <LineItem CanOverrideMinMaxValues="0"> <Id><![CDATA[1879]]></Id> <Rank><![CDATA[2]]></Rank> <CartItem><![CDATA[2]]></CartItem> <RolledUpCartItem><![CDATA[1.1]]></RolledUpCartItem> <ParentItem><![CDATA[1]]></ParentItem> <Quantity Editable="0" EditableGroup="0"><![CDATA[1]]></Quantity> <PartNumber Editable="0" EditableGroup="0"><![CDATA[LCD-20]]></PartNumber> <Cost Editable="0" EditableGroup="0"><![CDATA[0.00]]></Cost> <ExtendedCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedCost> <ProductModelPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></ProductModelPrice> <ProductCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></ProductCost> <PromoDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PromoDiscountAmount> <PromoDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PromoDiscountPercent> <ListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></ListPrice> <BaseListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></BaseListPrice> <ExtendedListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedListPrice> <DiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></DiscountPercent> <UnitDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UnitDiscountAmount> <DiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></DiscountAmount> <Multiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.00000]]></Multiplier> <UnitMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UnitMultiplierAmount> <MultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MultiplierAmount> <NetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></NetPrice> <ExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedAmount> <ManufacturesGrossMargin Editable="0" EditableGroup="0"><![CDATA[0.00]]></ManufacturesGrossMargin> <ChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarkupPercent>

SAP CPQ API DocumentationSOAP API PUBLIC 175

<ChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarkupAmount> <EndUserNet Editable="0" EditableGroup="0"><![CDATA[0.00]]></EndUserNet> <EndUserExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></EndUserExtendedAmount> <ChannelMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarginPercent> <ProductTypeName><![CDATA[Hardware]]></ProductTypeName> <ProductTypeNameInDefaultLanguage><![CDATA[Hardware]]></ProductTypeNameInDefaultLanguage> <ProductTypeId><![CDATA[2]]></ProductTypeId> <ProductTypeSystemId><![CDATA[Hardware_cpq]]></ProductTypeSystemId> <ProductTypeRank><![CDATA[0]]></ProductTypeRank> <ProductTypeAddToCRM><![CDATA[1]]></ProductTypeAddToCRM> <ChannelCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelCommisionPercent> <ChannelCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelCommisionAmount> <UserCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></UserCommisionPercent> <UserCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UserCommisionAmount> <IsOptional><![CDATA[0]]></IsOptional> <MarginHealthColor><![CDATA[Red]]></MarginHealthColor> <MarginHealthImage><![CDATA[highMarginPicture.gif]]></MarginHealthImage> <MRCMarginHealthColor><![CDATA[Red]]></MRCMarginHealthColor> <MRCMarginHealthImage><![CDATA[highMarginPicture.gif]]></MRCMarginHealthImage> <ProductId><![CDATA[196]]></ProductId> <ProductSystemId><![CDATA[Desktop_Example_1_cpq]]></ProductSystemId> <ProductName><![CDATA[Desktop Example]]></ProductName> <ProductNameInDefaultLanguage><![CDATA[Desktop Example]]></ProductNameInDefaultLanguage> <Description><![CDATA[20" Widescreen LCD]]></Description> <DescriptionLong><![CDATA[]]></DescriptionLong> <UserDescription Editable="0" EditableGroup="0"><![CDATA[]]></UserDescription> <CategoryId><![CDATA[1]]></CategoryId> <DateAdded><![CDATA[17/04/15]]></DateAdded> <ItemDeliveryMethod><![CDATA[]]></ItemDeliveryMethod> <ItemDeliveryStatus><![CDATA[0]]></ItemDeliveryStatus> <EffDate><![CDATA[17/04/15]]></EffDate> <GroupId><![CDATA[ ]]></GroupId> <BaseQuantity Editable="0" EditableGroup="0"><![CDATA[1.00]]></BaseQuantity> <DefaultDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></DefaultDiscountPercent> <MinDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MinDiscountPercent> <MaxDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MaxDiscountPercent> <DefaultMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></DefaultMultiplier> <MinMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MinMultiplier> <MaxMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MaxMultiplier> <DefaultMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></DefaultMRCDiscountPercent> <MinMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MinMRCDiscountPercent> <MaxMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MaxMRCDiscountPercent> <DefaultMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></DefaultMRCMultiplier>

176 PUBLICSAP CPQ API Documentation

SOAP API

<MinMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MinMRCMultiplier> <MaxMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MaxMRCMultiplier> <Weight Editable="0" EditableGroup="0"><![CDATA[0.00]]></Weight> <UpfrontPercent Editable="0" EditableGroup="0"><![CDATA[100.00]]></UpfrontPercent> <UpfrontAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UpfrontAmount> <MonthlyFeeAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MonthlyFeeAmount> <CustomColumn1 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn1> <CustomColumn2 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn2> <CustomColumn3 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn3> <CustomColumn4 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn4> <CustomColumn5 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn5> <CustomColumn6 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn6> <ProductVersion><![CDATA[]]></ProductVersion> <ExternalId><![CDATA[]]></ExternalId> <UPC><![CDATA[]]></UPC> <MPN><![CDATA[]]></MPN> <LeadTime><![CDATA[]]></LeadTime> <Inventory><![CDATA[0]]></Inventory> <ProductDisplayInfo><![CDATA[0]]></ProductDisplayInfo> <FamilyCode><![CDATA[]]></FamilyCode> <PRODUCT_WEIGHT><![CDATA[]]></PRODUCT_WEIGHT> <ForwardCurrencyRate Editable="0" EditableGroup="0"><![CDATA[0.00]]></ForwardCurrencyRate> <ItemType Editable="0" EditableGroup="0"><![CDATA[0]]></ItemType> <BaseItem><![CDATA[0]]></BaseItem> <MRCListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCListPrice> <MRCExtendedListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCExtendedListPrice> <MRCDiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></MRCDiscountPercent> <MRCDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCDiscountAmount> <MRCUnitDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCUnitDiscountAmount> <MRCNetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCNetPrice> <MRCExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCExtendedAmount> <MRCGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCGrossMarginPercent> <MRCCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCCost> <MRCExtendedCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCExtendedCost> <MRCMultiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.00]]></MRCMultiplier> <MRCMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCMultiplierAmount> <MRCUnitMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCUnitMultiplierAmount> <MRCChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarkupPercent> <MRCChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarkupAmount> <MRCChannelMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarginPercent>

SAP CPQ API DocumentationSOAP API PUBLIC 177

<MRCChannelMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarginAmount> <MRCEndUserNet Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCEndUserNet> <MRCEndUserExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCEndUserExtendedAmount> <CartItemGuid><![CDATA[99f356d4-83d0-4bbc-92ba-57636b0bec47]]></CartItemGuid> <BaseItemGuid><![CDATA[]]></BaseItemGuid> <ParentItemGuid><![CDATA[]]></ParentItemGuid> <CekiD Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="2.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[2.00]]></CekiD> <RecommendedDiscount Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></RecommendedDiscount> <milos_currency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="5.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[5.00]]></milos_currency> <jvCustomField Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></jvCustomField> <stefandate Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></stefandate> <milos_number Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></milos_number> <stefannumber Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></stefannumber> <bojanacrrency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Currency" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></bojanacrrency> <milos_text Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="neki text" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[neki text]]></milos_text> <TestCF Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="Express Shipping" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[Express Shipping]]></TestCF> <milos_date Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueDate="" CustomFieldDataType="Date" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[]]></milos_date> <AttributeRank><![CDATA[1]]></AttributeRank> <AttributeSubRank><![CDATA[4]]></AttributeSubRank> <Details /> <AppliedPromotions /> </LineItem> <LineItem CanOverrideMinMaxValues="0"> <Id><![CDATA[1880]]></Id> <Rank><![CDATA[3]]></Rank> <CartItem><![CDATA[3]]></CartItem> <RolledUpCartItem><![CDATA[1.2]]></RolledUpCartItem> <ParentItem><![CDATA[1]]></ParentItem> <Quantity Editable="0" EditableGroup="0"><![CDATA[1]]></Quantity> <PartNumber Editable="0" EditableGroup="0"><![CDATA[AIO-01]]></PartNumber> <Cost Editable="0" EditableGroup="0"><![CDATA[0.00]]></Cost> <ExtendedCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedCost> <ProductModelPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></ProductModelPrice> <ProductCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></ProductCost> <PromoDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PromoDiscountAmount>

178 PUBLICSAP CPQ API Documentation

SOAP API

<PromoDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PromoDiscountPercent> <ListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></ListPrice> <BaseListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></BaseListPrice> <ExtendedListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedListPrice> <DiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></DiscountPercent> <UnitDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UnitDiscountAmount> <DiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></DiscountAmount> <Multiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.00000]]></Multiplier> <UnitMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UnitMultiplierAmount> <MultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MultiplierAmount> <NetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></NetPrice> <ExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ExtendedAmount> <ManufacturesGrossMargin Editable="0" EditableGroup="0"><![CDATA[0.00]]></ManufacturesGrossMargin> <ChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarkupPercent> <ChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarkupAmount> <EndUserNet Editable="0" EditableGroup="0"><![CDATA[0.00]]></EndUserNet> <EndUserExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></EndUserExtendedAmount> <ChannelMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelMarginPercent> <ProductTypeName><![CDATA[Hardware]]></ProductTypeName> <ProductTypeNameInDefaultLanguage><![CDATA[Hardware]]></ProductTypeNameInDefaultLanguage> <ProductTypeId><![CDATA[2]]></ProductTypeId> <ProductTypeSystemId><![CDATA[Hardware_cpq]]></ProductTypeSystemId> <ProductTypeRank><![CDATA[0]]></ProductTypeRank> <ProductTypeAddToCRM><![CDATA[1]]></ProductTypeAddToCRM> <ChannelCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelCommisionPercent> <ChannelCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></ChannelCommisionAmount> <UserCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></UserCommisionPercent> <UserCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UserCommisionAmount> <IsOptional><![CDATA[0]]></IsOptional> <MarginHealthColor><![CDATA[Red]]></MarginHealthColor> <MarginHealthImage><![CDATA[highMarginPicture.gif]]></MarginHealthImage> <MRCMarginHealthColor><![CDATA[Red]]></MRCMarginHealthColor> <MRCMarginHealthImage><![CDATA[highMarginPicture.gif]]></MRCMarginHealthImage> <ProductId><![CDATA[196]]></ProductId> <ProductSystemId><![CDATA[Desktop_Example_1_cpq]]></ProductSystemId> <ProductName><![CDATA[Desktop Example]]></ProductName> <ProductNameInDefaultLanguage><![CDATA[Desktop Example]]></ProductNameInDefaultLanguage> <Description><![CDATA[All-In-One Printer]]></Description> <DescriptionLong><![CDATA[]]></DescriptionLong> <UserDescription Editable="0" EditableGroup="0"><![CDATA[]]></UserDescription> <CategoryId><![CDATA[1]]></CategoryId> <DateAdded><![CDATA[17/04/15]]></DateAdded> <ItemDeliveryMethod><![CDATA[]]></ItemDeliveryMethod>

SAP CPQ API DocumentationSOAP API PUBLIC 179

<ItemDeliveryStatus><![CDATA[0]]></ItemDeliveryStatus> <EffDate><![CDATA[17/04/15]]></EffDate> <GroupId><![CDATA[ ]]></GroupId> <BaseQuantity Editable="0" EditableGroup="0"><![CDATA[1.00]]></BaseQuantity> <DefaultDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></DefaultDiscountPercent> <MinDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MinDiscountPercent> <MaxDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MaxDiscountPercent> <DefaultMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></DefaultMultiplier> <MinMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MinMultiplier> <MaxMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MaxMultiplier> <DefaultMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></DefaultMRCDiscountPercent> <MinMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MinMRCDiscountPercent> <MaxMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MaxMRCDiscountPercent> <DefaultMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></DefaultMRCMultiplier> <MinMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MinMRCMultiplier> <MaxMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></MaxMRCMultiplier> <Weight Editable="0" EditableGroup="0"><![CDATA[0.00]]></Weight> <UpfrontPercent Editable="0" EditableGroup="0"><![CDATA[100.00]]></UpfrontPercent> <UpfrontAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></UpfrontAmount> <MonthlyFeeAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MonthlyFeeAmount> <CustomColumn1 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn1> <CustomColumn2 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn2> <CustomColumn3 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn3> <CustomColumn4 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn4> <CustomColumn5 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn5> <CustomColumn6 Editable="0" EditableGroup="0"><![CDATA[0.00]]></CustomColumn6> <ProductVersion><![CDATA[]]></ProductVersion> <ExternalId><![CDATA[]]></ExternalId> <UPC><![CDATA[]]></UPC> <MPN><![CDATA[]]></MPN> <LeadTime><![CDATA[]]></LeadTime> <Inventory><![CDATA[0]]></Inventory> <ProductDisplayInfo><![CDATA[0]]></ProductDisplayInfo> <FamilyCode><![CDATA[]]></FamilyCode> <PRODUCT_WEIGHT><![CDATA[]]></PRODUCT_WEIGHT> <ForwardCurrencyRate Editable="0" EditableGroup="0"><![CDATA[0.00]]></ForwardCurrencyRate> <ItemType Editable="0" EditableGroup="0"><![CDATA[0]]></ItemType> <BaseItem><![CDATA[0]]></BaseItem> <MRCListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCListPrice> <MRCExtendedListPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCExtendedListPrice> <MRCDiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></MRCDiscountPercent>

180 PUBLICSAP CPQ API Documentation

SOAP API

<MRCDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCDiscountAmount> <MRCUnitDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCUnitDiscountAmount> <MRCNetPrice Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCNetPrice> <MRCExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCExtendedAmount> <MRCGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCGrossMarginPercent> <MRCCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCCost> <MRCExtendedCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCExtendedCost> <MRCMultiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.00]]></MRCMultiplier> <MRCMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCMultiplierAmount> <MRCUnitMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCUnitMultiplierAmount> <MRCChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarkupPercent> <MRCChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarkupAmount> <MRCChannelMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarginPercent> <MRCChannelMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCChannelMarginAmount> <MRCEndUserNet Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCEndUserNet> <MRCEndUserExtendedAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></MRCEndUserExtendedAmount> <CartItemGuid><![CDATA[7d124108-9ce6-496f-b683-2b1b27cfe182]]></CartItemGuid> <BaseItemGuid><![CDATA[]]></BaseItemGuid> <ParentItemGuid><![CDATA[]]></ParentItemGuid> <CekiD Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="2.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[2.00]]></CekiD> <RecommendedDiscount Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></RecommendedDiscount> <milos_currency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="5.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[5.00]]></milos_currency> <jvCustomField Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></jvCustomField> <stefandate Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></stefandate> <milos_number Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></milos_number> <stefannumber Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></stefannumber> <bojanacrrency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Currency" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[0.00]]></bojanacrrency> <milos_text Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="neki text" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[neki text]]></milos_text> <TestCF Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="Express Shipping" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[Express Shipping]]></TestCF>

SAP CPQ API DocumentationSOAP API PUBLIC 181

<milos_date Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueDate="" CustomFieldDataType="Date" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[]]></milos_date> <AttributeRank><![CDATA[1]]></AttributeRank> <AttributeSubRank><![CDATA[5]]></AttributeSubRank> <Details /> <AppliedPromotions /> </LineItem> </LineItems> <Actions /> <KeyAttributes> <KeyAttribute> <Rank>1</Rank> <Expression>&lt;*value(Memory)*&gt;</Expression> <Label>Memory</Label> <Value><![CDATA[1GB]]></Value> <CartItemId>1878</CartItemId> </KeyAttribute> <KeyAttribute> <Rank>2</Rank> <Expression>&lt;*value(Processor)*&gt;</Expression> <Label>Processor</Label> <Value><![CDATA[Processor B]]></Value> <CartItemId>1878</CartItemId> </KeyAttribute> <KeyAttribute> <Rank>4</Rank> <Expression>&lt;*value(Mouse)*&gt;</Expression> <Label>NasMouse</Label> <Value><![CDATA[]]></Value> <CartItemId>1878</CartItemId> </KeyAttribute> </KeyAttributes> <Details /> <AppliedPromotions /> </MainItem> </MainItems> <ProductTypes> <ProductType CanOverrideMinMaxValues="0"> <PTName><![CDATA[Hardware]]></PTName> <PTNameInDefaultLanguage><![CDATA[Hardware]]></PTNameInDefaultLanguage> <PTRank><![CDATA[0]]></PTRank> <PTId><![CDATA[2]]></PTId> <PTSystemId><![CDATA[Hardware_cpq]]></PTSystemId> <PTAddToCRM><![CDATA[1]]></PTAddToCRM> <ProductModelSubTotal Editable="0" EditableGroup="0"><![CDATA[0.00]]></ProductModelSubTotal> <PTPromoDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTPromoDiscountAmount> <PTPromoDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTPromoDiscountPercent> <PTListSubTotal Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTListSubTotal> <PTMultiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.00]]></PTMultiplier> <PTMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMultiplierAmount> <PTDiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></PTDiscountPercent> <PTDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTDiscountAmount> <PTSubTotal Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTSubTotal> <PTChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelMarkupPercent> <PTChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelMarkupAmount> <PTEndUserSubTotal Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTEndUserSubTotal>

182 PUBLICSAP CPQ API Documentation

SOAP API

<PTChannelCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelCommisionPercent> <PTChannelCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelCommisionAmount> <PTUserCommisionPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTUserCommisionPercent> <PTUserCommisionAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTUserCommisionAmount> <PTCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCost> <PTGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTGrossMarginPercent> <PTGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTGrossMarginAmount> <PTChannelCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelCost> <PTChannelGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelGrossMarginPercent> <PTChannelGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTChannelGrossMarginAmount> <MarginHealthColor><![CDATA[Red]]></MarginHealthColor> <MarginHealthImage><![CDATA[highMarginPicture.gif]]></MarginHealthImage> <MRCMarginHealthColor><![CDATA[Red]]></MRCMarginHealthColor> <MRCMarginHealthImage><![CDATA[highMarginPicture.gif]]></MRCMarginHealthImage> <PTDefaultDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTDefaultDiscountPercent> <PTMinDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMinDiscountPercent> <PTMaxDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMaxDiscountPercent> <PTDefaultMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></PTDefaultMultiplier> <PTMinMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></PTMinMultiplier> <PTMaxMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></PTMaxMultiplier> <PTDefaultMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTDefaultMRCDiscountPercent> <PTMinMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMinMRCDiscountPercent> <PTMaxMRCDiscountPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMaxMRCDiscountPercent> <PTDefaultMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></PTDefaultMRCMultiplier> <PTMinMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></PTMinMRCMultiplier> <PTMaxMRCMultiplier Editable="0" EditableGroup="0"><![CDATA[1.00]]></PTMaxMRCMultiplier> <PTCustomColumn1 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn1> <PTCustomColumn2 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn2> <PTCustomColumn3 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn3> <PTCustomColumn4 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn4> <PTCustomColumn5 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn5> <PTCustomColumn6 Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTCustomColumn6> <PTMRCListSubTotal Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCListSubTotal> <PTMRCCost Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCCost> <PTMRCDiscountPercent Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[0.00]]></PTMRCDiscountPercent> <PTMRCDiscountAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCDiscountAmount>

SAP CPQ API DocumentationSOAP API PUBLIC 183

<PTMRCMultiplier Editable="0" EditableGroup="0" FieldErrorMessage=""><![CDATA[1.00]]></PTMRCMultiplier> <PTMRCMultiplierAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCMultiplierAmount> <PTMRCSubTotal Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCSubTotal> <PTMRCGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCGrossMarginPercent> <PTMRCGrossMarginAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCGrossMarginAmount> <PTMRCChannelMarkupPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCChannelMarkupPercent> <PTMRCChannelMarkupAmount Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCChannelMarkupAmount> <PTMRCChannelGrossMarginPercent Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCChannelGrossMarginPercent> <PTMRCEndUserSubTotal Editable="0" EditableGroup="0"><![CDATA[0.00]]></PTMRCEndUserSubTotal> <CekiD Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="2.00" MaxValue="2.00" FieldSummary="6.00" MinValueCV="2.00" MaxValueCV="2.00" FieldSummaryCV="6.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></CekiD> <RecommendedDiscount Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></RecommendedDiscount> <milos_currency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="5.00" MaxValue="5.00" FieldSummary="15.00" MinValueCV="5.00" MaxValueCV="5.00" FieldSummaryCV="15.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></milos_currency> <jvCustomField Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></jvCustomField> <stefandate Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></stefandate> <milos_number Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></milos_number> <stefannumber Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Number" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></stefannumber> <bojanacrrency Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValue="0.00" CustomFieldDataType="Currency" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1" Count="3" MinValue="0.00" MaxValue="0.00" FieldSummary="0.00" MinValueCV="0.00" MaxValueCV="0.00" FieldSummaryCV="0.00" DisplayAdditionalInfo="1"><![CDATA[0.00]]></bojanacrrency> <milos_text Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[]]></milos_text> <TestCF Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueString="" CustomFieldDataType="Text" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[]]></TestCF>

184 PUBLICSAP CPQ API Documentation

SOAP API

<milos_date Editable="0" EditableGroup="0" DisplaySummary="0" CalculatedValueDate="" CustomFieldDataType="Date" IsOverridden="0" IsCalculatedSuccessfully="1" IsCustomField="1"><![CDATA[]]></milos_date> </ProductType> </ProductTypes> <PromoCodes /> <AdditionalDiscounts Editable="0" /> <Markets> <Market Selected="0"> <MarketName><![CDATA[USA in $]]></MarketName> <MarketId><![CDATA[1]]></MarketId> <MarketFactor><![CDATA[1.00]]></MarketFactor> <ForwardCurrencyRate><![CDATA[1.00]]></ForwardCurrencyRate> <MarketCode><![CDATA[USD]]></MarketCode> <CurrencyCode><![CDATA[USD]]></CurrencyCode> <CurrencyQuote><![CDATA[1.00]]></CurrencyQuote> <CurrencyDescription><![CDATA[USA Dollar]]></CurrencyDescription> <CurrencySign><![CDATA[$]]></CurrencySign> <CurrencyDefault><![CDATA[1]]></CurrencyDefault> </Market> <Market Selected="0"> <MarketName><![CDATA[Europe in $]]></MarketName> <MarketId><![CDATA[2]]></MarketId> <MarketFactor><![CDATA[1.20]]></MarketFactor> <ForwardCurrencyRate><![CDATA[1.00]]></ForwardCurrencyRate> <MarketCode><![CDATA[EMD]]></MarketCode> <CurrencyCode><![CDATA[USD]]></CurrencyCode> <CurrencyQuote><![CDATA[1.00]]></CurrencyQuote> <CurrencyDescription><![CDATA[USA Dollar]]></CurrencyDescription> <CurrencySign><![CDATA[$]]></CurrencySign> <CurrencyDefault><![CDATA[1]]></CurrencyDefault> </Market> <Market Selected="1"> <MarketName><![CDATA[Europe in €]]></MarketName> <MarketId><![CDATA[3]]></MarketId> <MarketFactor><![CDATA[1.20]]></MarketFactor> <ForwardCurrencyRate><![CDATA[1.00]]></ForwardCurrencyRate> <MarketCode><![CDATA[EUR]]></MarketCode> <CurrencyCode><![CDATA[EUR]]></CurrencyCode> <CurrencyQuote><![CDATA[0.90]]></CurrencyQuote> <CurrencyDescription><![CDATA[European Monetary Union]]></CurrencyDescription> <CurrencySign><![CDATA[€]]></CurrencySign> <CurrencyDefault><![CDATA[0]]></CurrencyDefault> </Market> <Market Selected="0"> <MarketName><![CDATA[Japan in ¥]]></MarketName> <MarketId><![CDATA[4]]></MarketId> <MarketFactor><![CDATA[1.00]]></MarketFactor> <ForwardCurrencyRate><![CDATA[1.00]]></ForwardCurrencyRate> <MarketCode><![CDATA[JPN]]></MarketCode> <CurrencyCode><![CDATA[YEN]]></CurrencyCode> <CurrencyQuote><![CDATA[117.34]]></CurrencyQuote> <CurrencyDescription><![CDATA[Japan Yen]]></CurrencyDescription> <CurrencySign><![CDATA[¥]]></CurrencySign> <CurrencyDefault><![CDATA[0]]></CurrencyDefault> </Market> <Market Selected="0"> <MarketName><![CDATA[Great Britain in £]]></MarketName> <MarketId><![CDATA[5]]></MarketId> <MarketFactor><![CDATA[1.20]]></MarketFactor> <ForwardCurrencyRate><![CDATA[1.00]]></ForwardCurrencyRate> <MarketCode><![CDATA[GBR]]></MarketCode> <CurrencyCode><![CDATA[GPD]]></CurrencyCode> <CurrencyQuote><![CDATA[0.63]]></CurrencyQuote> <CurrencyDescription><![CDATA[GB Pound]]></CurrencyDescription> <CurrencySign><![CDATA[£]]></CurrencySign> <CurrencyDefault><![CDATA[0]]></CurrencyDefault>

SAP CPQ API DocumentationSOAP API PUBLIC 185

</Market> <Market Selected="0"> <MarketName><![CDATA[Canada in C$]]></MarketName> <MarketId><![CDATA[6]]></MarketId> <MarketFactor><![CDATA[1.00]]></MarketFactor> <ForwardCurrencyRate><![CDATA[1.00]]></ForwardCurrencyRate> <MarketCode><![CDATA[CAD]]></MarketCode> <CurrencyCode><![CDATA[CAD]]></CurrencyCode> <CurrencyQuote><![CDATA[1.44]]></CurrencyQuote> <CurrencyDescription><![CDATA[Canadian Dollar]]></CurrencyDescription> <CurrencySign><![CDATA[$]]></CurrencySign> <CurrencyDefault><![CDATA[0]]></CurrencyDefault> </Market> </Markets> <Shippings> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Standard Shipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[1]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="1" Editable="0"> <ShippingName><![CDATA[Express Shipping]]></ShippingName> <ShippingDescription><![CDATA[Overnight shipping]]></ShippingDescription> <ShippingId><![CDATA[2]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Test Shipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[3]]></ShippingId> <StaticPriceFormula><![CDATA[30]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[Shipping Method 2]]></ShippingName> <ShippingDescription><![CDATA[Test Shipping method]]></ShippingDescription> <ShippingId><![CDATA[4]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[NemanjaTestShipping_Method]]></ShippingName> <ShippingDescription><![CDATA[NemanjaTestShipping_Method]]></ShippingDescription> <ShippingId><![CDATA[5]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[JovanaShipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[6]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[TestTest]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[8]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Test Freight]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription>

186 PUBLICSAP CPQ API Documentation

SOAP API

<ShippingId><![CDATA[9]]></ShippingId> <StaticPriceFormula><![CDATA[[IF]([LT](<*CTX( Quote.Total.SubTotalAmount.DefaultDecimal )*>,20000)){0}{300}[ENDIF]]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[test zeljka shipping]]></ShippingName> <ShippingDescription><![CDATA[test]]></ShippingDescription> <ShippingId><![CDATA[10]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[UPS]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[11]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Fedex]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[12]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[US Mail]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[13]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[NewInstall Shipping]]></ShippingName> <ShippingDescription><![CDATA[testing new instalation]]></ShippingDescription> <ShippingId><![CDATA[14]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[_Anica]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[15]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Ship40]]></ShippingName> <ShippingDescription><![CDATA[nice]]></ShippingDescription> <ShippingId><![CDATA[18]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[shipp_hrom]]></ShippingName> <ShippingDescription><![CDATA[desc.]]></ShippingDescription> <ShippingId><![CDATA[19]]></ShippingId> <StaticPriceFormula><![CDATA[stat.]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[shipping00]]></ShippingName> <ShippingDescription><![CDATA[desc]]></ShippingDescription> <ShippingId><![CDATA[20]]></ShippingId> <StaticPriceFormula><![CDATA[desc]]></StaticPriceFormula>

SAP CPQ API DocumentationSOAP API PUBLIC 187

<ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[TestShipping2]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[22]]></ShippingId> <StaticPriceFormula><![CDATA[250]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[shipping0000]]></ShippingName> <ShippingDescription><![CDATA[opis opis opis opis opis opis.......]]></ShippingDescription> <ShippingId><![CDATA[23]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Ship_S_E_L]]></ShippingName> <ShippingDescription> <![CDATA[opisopis]]> </ShippingDescription> <ShippingId><![CDATA[24]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Testing Shipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[25]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[JovanaTestShipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[26]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[NewTestShipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[27]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[BojanaShipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[28]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[BRANKAShipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[29]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[ups next day]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[30]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula>

188 PUBLICSAP CPQ API Documentation

SOAP API

<ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[MtestShipping]]></ShippingName> <ShippingDescription><![CDATA[test shipping]]></ShippingDescription> <ShippingId><![CDATA[31]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[TShipping]]></ShippingName> <ShippingDescription><![CDATA[test shipping]]></ShippingDescription> <ShippingId><![CDATA[32]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Estimated Freight]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[33]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[brankatest2]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[34]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[NenadShipping]]></ShippingName> <ShippingDescription><![CDATA[Shiping description]]></ShippingDescription> <ShippingId><![CDATA[36]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[NenadShiping]]></ShippingName> <ShippingDescription><![CDATA[asdf]]></ShippingDescription> <ShippingId><![CDATA[37]]></ShippingId> <StaticPriceFormula><![CDATA[df]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[ShippingName_1]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[38]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[ShippingName_2]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[39]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[PetarPetrovic]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[40]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[TestQA_selenium]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription>

SAP CPQ API DocumentationSOAP API PUBLIC 189

<ShippingId><![CDATA[41]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[System Id Shipping Nemanja]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[42]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[System Id Shipping Nemanja copy]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[43]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[bokicash]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[44]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Delivery to Site (2.5% of Net Sale)]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[45]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Ex Works Belgium]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[46]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Delivery to Site]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[47]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Транспортные услуги]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[48]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Delivery to Site (2% of Net Sale)]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[49]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Freight]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[50]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping>

190 PUBLICSAP CPQ API Documentation

SOAP API

<Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[zajshipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[51]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[MarkoShipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[52]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Custom Shipping Nemanja]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[53]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Custom Shipping FP]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[54]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[ATShipping_Original0001]]></ShippingName> <ShippingDescription><![CDATA[Some description.]]></ShippingDescription> <ShippingId><![CDATA[55]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[ATShipping_Copy0001]]></ShippingName> <ShippingDescription><![CDATA[Some description.]]></ShippingDescription> <ShippingId><![CDATA[56]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[ATShipping_Original0002]]></ShippingName> <ShippingDescription><![CDATA[Some description.]]></ShippingDescription> <ShippingId><![CDATA[57]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[ATShipping_Copy0002]]></ShippingName> <ShippingDescription><![CDATA[Some description.]]></ShippingDescription> <ShippingId><![CDATA[58]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[AutomationShipping_New0001]]></ShippingName> <ShippingDescription><![CDATA[Some description.]]></ShippingDescription> <ShippingId><![CDATA[59]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[TestM]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[63]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula>

SAP CPQ API DocumentationSOAP API PUBLIC 191

<ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[novi123]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[66]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[test Shipping QWE]]></ShippingName> <ShippingDescription><![CDATA[System ID: test_Shipping_QWE_cpq]]></ShippingDescription> <ShippingId><![CDATA[69]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[test Shipping ASD]]></ShippingName> <ShippingDescription><![CDATA[test_Shipping_ASD_1_cpq]]></ShippingDescription> <ShippingId><![CDATA[70]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[andrea]]></ShippingName> <ShippingDescription><![CDATA[opis]]></ShippingDescription> <ShippingId><![CDATA[71]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Marko Shipping]]></ShippingName> <ShippingDescription><![CDATA[marko]]></ShippingDescription> <ShippingId><![CDATA[72]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[andrea winter copy]]></ShippingName> <ShippingDescription><![CDATA[opis]]></ShippingDescription> <ShippingId><![CDATA[73]]></ShippingId> <StaticPriceFormula><![CDATA[10]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[andrea winter copy1]]></ShippingName> <ShippingDescription><![CDATA[opis]]></ShippingDescription> <ShippingId><![CDATA[74]]></ShippingId> <StaticPriceFormula><![CDATA[10]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[_Anicawer]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[76]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[wesd]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[77]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0">

192 PUBLICSAP CPQ API Documentation

SOAP API

<ShippingName><![CDATA[testjovana_13]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[78]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="1"> <ShippingName><![CDATA[mdTEST]]></ShippingName> <ShippingDescription><![CDATA[qwe]]></ShippingDescription> <ShippingId><![CDATA[79]]></ShippingId> <StaticPriceFormula><![CDATA[10]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[TestShipping23]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[80]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[test]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[81]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[wert]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[82]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[etdhgf]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[83]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[_AnicaMijailovicqew]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[84]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[A]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[85]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[B]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[86]]></ShippingId> <StaticPriceFormula><![CDATA[1]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Shipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[87]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage>

SAP CPQ API DocumentationSOAP API PUBLIC 193

</Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[ShippingM]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[88]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[ship_ship__ship_ship_ship_ship_ship]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[89]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[New Shipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[90]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[brankatest]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[91]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[_Anicaaa]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[92]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[NewShipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[93]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[new1]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[94]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[new]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[95]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[System Id Shipping 2]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[96]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[System Id Release]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription>

194 PUBLICSAP CPQ API Documentation

SOAP API

<ShippingId><![CDATA[97]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[System Id Release 2]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[98]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[NenadIDShipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[99]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[Ajax shipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[100]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[vezba_shipping]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[101]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[nemanja]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[102]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[001]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[103]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[marija]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[104]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[BojanaSh]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[105]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[bojanatestship]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[106]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0">

SAP CPQ API DocumentationSOAP API PUBLIC 195

<ShippingName><![CDATA[test Shipping Ivan]]></ShippingName> <ShippingDescription><![CDATA[opis]]></ShippingDescription> <ShippingId><![CDATA[107]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[test Shipping Ivan 1]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[108]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[MasaShip]]></ShippingName> <ShippingDescription><![CDATA[]]></ShippingDescription> <ShippingId><![CDATA[109]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[MasaShipp]]></ShippingName> <ShippingDescription><![CDATA[desc]]></ShippingDescription> <ShippingId><![CDATA[110]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> <Shipping Selected="0" Editable="0"> <ShippingName><![CDATA[UrosShipping]]></ShippingName> <ShippingDescription><![CDATA[Test ]]></ShippingDescription> <ShippingId><![CDATA[111]]></ShippingId> <StaticPriceFormula><![CDATA[]]></StaticPriceFormula> <ErrorMessage><![CDATA[]]></ErrorMessage> </Shipping> </Shippings> <Customers> <Customer ForceZipCodeCheck="0" CustomerRoleType="1" Editable="1" Visible="0" Required="0" Personal="1" Rank="1"> <CustomerId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></CustomerId> <ShopCartId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></ShopCartId> <UserId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></UserId> <FirstName Editable="1" Visible="1" Required="0" FieldDisplayName="First Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="1" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_FIRST_NAME"><![CDATA[]]></FirstName> <LastName Editable="1" Visible="1" Required="0" FieldDisplayName="Last Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="2" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_LAST_NAME"><![CDATA[]]></LastName> <Company Editable="0" Visible="1" Required="0" FieldDisplayName="Company" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="5" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COMPANY"><![CDATA[]]></Company>

196 PUBLICSAP CPQ API Documentation

SOAP API

<Address1 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (1)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="6" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_ADDR1"><![CDATA[]]></Address1> <Address2 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (2)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="7" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ADDR2"><![CDATA[]]></Address2> <City Editable="1" Visible="1" Required="0" FieldDisplayName="City" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="8" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_CITY"><![CDATA[]]></City> <StateAbbrev Editable="0" Visible="1" Required="0" FieldDisplayName="State/Province" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="States" FieldErrorMessage="" Rank="9" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_STATE"><![CDATA[]]></StateAbbrev> <ZipCode Editable="1" Visible="1" Required="0" FieldDisplayName="ZIP/Postal Code" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="11" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ZIP_CODE"><![CDATA[]]></ZipCode> <CountryAbbrev Editable="1" Visible="1" Required="0" FieldDisplayName="Country" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Countries" FieldErrorMessage="" Rank="12" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COUNTRY"><![CDATA[USA]]></CountryAbbrev> <Country Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></Country> <TerritoryId Editable="1" Visible="1" Required="0" FieldDisplayName="Territory" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Territories" FieldErrorMessage="" Rank="13" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="teritory_id"><![CDATA[0]]></TerritoryId> <TerritoryName Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></TerritoryName> <BusinessPhone Editable="0" Visible="1" Required="0" FieldDisplayName="Phone" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="14" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_PHONE"><![CDATA[]]></BusinessPhone> <BusinessFax Editable="1" Visible="1" Required="0" FieldDisplayName="Fax" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="15" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_FAX"><![CDATA[]]></BusinessFax> <Email Editable="0" Visible="1" Required="0" FieldDisplayName="Email" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="16" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_E_MAIL_ADDR"><![CDATA[]]></Email> <DirtyFlag Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[4]]></DirtyFlag> <CustomerCode Editable="1" Visible="1" Required="0" FieldDisplayName="Customer Id" FieldDisplayType="" FieldDisplaySize="0"

SAP CPQ API DocumentationSOAP API PUBLIC 197

FieldSelectListData="" FieldErrorMessage="" Rank="3" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="customer_code"><![CDATA[]]></CustomerCode> <RevisionNumber Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></RevisionNumber> <CRMAccountId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Account Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="17" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_AccountId"><![CDATA[]]></CRMAccountId> <CRMContactId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Contact Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="18" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_ContactId"><![CDATA[]]></CRMContactId> <Province Editable="1" Visible="1" Required="0" FieldDisplayName="Province" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="10" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_PROVINCE"><![CDATA[]]></Province> <OwnerName Editable="0" Visible="1" Required="0" FieldDisplayName="Owner name" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="99999" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="1" CustomerInfoColumn=""><![CDATA[Milos Grujic]]></OwnerName> <PrimaryIndustry Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></PrimaryIndustry> <CustomerPassword Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerPassword> <CustomerType Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerType> <Active Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[1]]></Active> <Title Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></Title> <Actions> <Action ActionId="1" ActionName="Edit" /> <Action ActionId="2" ActionName="Add" /> <Action ActionId="3" ActionName="Delete" /> <Action ActionId="4" ActionName="Lookup" /> <Action ActionId="5" ActionName="CRM Lookup" /> </Actions> </Customer> <Customer ForceZipCodeCheck="0" CustomerRoleType="2" Editable="1" Visible="0" Required="0" Personal="1" Rank="3"> <CustomerId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></CustomerId>

198 PUBLICSAP CPQ API Documentation

SOAP API

<ShopCartId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></ShopCartId> <UserId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></UserId> <FirstName Editable="1" Visible="1" Required="0" FieldDisplayName="First Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="1" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_FIRST_NAME"><![CDATA[]]></FirstName> <LastName Editable="1" Visible="1" Required="0" FieldDisplayName="Last Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="2" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_LAST_NAME"><![CDATA[]]></LastName> <Company Editable="0" Visible="1" Required="0" FieldDisplayName="Company" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="5" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COMPANY"><![CDATA[]]></Company> <Address1 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (1)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="6" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_ADDR1"><![CDATA[]]></Address1> <Address2 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (2)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="7" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ADDR2"><![CDATA[]]></Address2> <City Editable="1" Visible="1" Required="0" FieldDisplayName="City" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="8" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_CITY"><![CDATA[]]></City> <StateAbbrev Editable="1" Visible="1" Required="0" FieldDisplayName="State/Province" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="States" FieldErrorMessage="" Rank="9" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_STATE"><![CDATA[]]></StateAbbrev> <ZipCode Editable="1" Visible="1" Required="0" FieldDisplayName="ZIP/Postal Code" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="11" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ZIP_CODE"><![CDATA[]]></ZipCode> <CountryAbbrev Editable="1" Visible="1" Required="0" FieldDisplayName="Country" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Countries" FieldErrorMessage="" Rank="12" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COUNTRY"><![CDATA[USA]]></CountryAbbrev> <Country Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></Country> <TerritoryId Editable="1" Visible="1" Required="0" FieldDisplayName="Territory" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Territories" FieldErrorMessage="" Rank="13" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="teritory_id"><![CDATA[0]]></TerritoryId> <TerritoryName Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData=""

SAP CPQ API DocumentationSOAP API PUBLIC 199

FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></TerritoryName> <BusinessPhone Editable="0" Visible="1" Required="0" FieldDisplayName="Phone" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="14" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_PHONE"><![CDATA[]]></BusinessPhone> <BusinessFax Editable="1" Visible="1" Required="0" FieldDisplayName="Fax" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="15" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_FAX"><![CDATA[]]></BusinessFax> <Email Editable="0" Visible="1" Required="0" FieldDisplayName="Email" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="16" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_E_MAIL_ADDR"><![CDATA[]]></Email> <DirtyFlag Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></DirtyFlag> <CustomerCode Editable="1" Visible="1" Required="0" FieldDisplayName="Customer Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="3" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="customer_code"><![CDATA[]]></CustomerCode> <RevisionNumber Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></RevisionNumber> <CRMAccountId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Account Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="17" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_AccountId"><![CDATA[]]></CRMAccountId> <CRMContactId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Contact Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="18" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_ContactId"><![CDATA[]]></CRMContactId> <Province Editable="1" Visible="1" Required="0" FieldDisplayName="Province" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="10" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_PROVINCE"><![CDATA[]]></Province> <OwnerName Editable="0" Visible="1" Required="0" FieldDisplayName="Owner name" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="99999" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="1" CustomerInfoColumn=""><![CDATA[]]></OwnerName> <PrimaryIndustry Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></PrimaryIndustry> <CustomerPassword Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerPassword> <CustomerType Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerType>

200 PUBLICSAP CPQ API Documentation

SOAP API

<Active Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[1]]></Active> <Title Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></Title> <Actions> <Action ActionId="1" ActionName="Edit" /> <Action ActionId="2" ActionName="Add" /> <Action ActionId="3" ActionName="Delete" /> <Action ActionId="4" ActionName="Lookup" /> </Actions> </Customer> <Customer ForceZipCodeCheck="0" CustomerRoleType="3" Editable="1" Visible="0" Required="0" Personal="1" Rank="2"> <CustomerId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></CustomerId> <ShopCartId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></ShopCartId> <UserId Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></UserId> <FirstName Editable="1" Visible="1" Required="0" FieldDisplayName="First Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="1" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_FIRST_NAME"><![CDATA[]]></FirstName> <LastName Editable="1" Visible="1" Required="0" FieldDisplayName="Last Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="2" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_LAST_NAME"><![CDATA[]]></LastName> <Company Editable="0" Visible="1" Required="0" FieldDisplayName="Company" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="5" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COMPANY"><![CDATA[]]></Company> <Address1 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (1)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="6" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_ADDR1"><![CDATA[]]></Address1> <Address2 Editable="1" Visible="1" Required="0" FieldDisplayName="Address (2)" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="7" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ADDR2"><![CDATA[]]></Address2> <City Editable="1" Visible="1" Required="0" FieldDisplayName="City" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="8" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_CITY"><![CDATA[]]></City> <StateAbbrev Editable="0" Visible="1" Required="0" FieldDisplayName="State/Province" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="States" FieldErrorMessage="" Rank="9" IsAjaxField="0"

SAP CPQ API DocumentationSOAP API PUBLIC 201

IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_STATE"><![CDATA[]]></StateAbbrev> <ZipCode Editable="1" Visible="1" Required="0" FieldDisplayName="ZIP/Postal Code" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="11" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_ZIP_CODE"><![CDATA[]]></ZipCode> <CountryAbbrev Editable="1" Visible="1" Required="0" FieldDisplayName="Country" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Countries" FieldErrorMessage="" Rank="12" IsAjaxField="0" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="CUSTOMER_COUNTRY"><![CDATA[USA]]></CountryAbbrev> <Country Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></Country> <TerritoryId Editable="1" Visible="1" Required="0" FieldDisplayName="Territory" FieldDisplayType="SelectList" FieldDisplaySize="200" FieldSelectListData="Territories" FieldErrorMessage="" Rank="13" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="teritory_id"><![CDATA[0]]></TerritoryId> <TerritoryName Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></TerritoryName> <BusinessPhone Editable="0" Visible="1" Required="0" FieldDisplayName="Phone" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="14" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_PHONE"><![CDATA[]]></BusinessPhone> <BusinessFax Editable="1" Visible="1" Required="0" FieldDisplayName="Fax" FieldDisplayType="TextField" FieldDisplaySize="200" FieldSelectListData="" FieldErrorMessage="" Rank="15" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_BUSINESS_FAX"><![CDATA[]]></BusinessFax> <Email Editable="0" Visible="1" Required="0" FieldDisplayName="Email" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" Rank="16" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_E_MAIL_ADDR"><![CDATA[]]></Email> <DirtyFlag Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[4]]></DirtyFlag> <CustomerCode Editable="1" Visible="1" Required="0" FieldDisplayName="Customer Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="3" IsAjaxField="1" IncludeInAjaxLookup="1" IsLookupField="1" IncludeInLookupResult="1" CustomerInfoColumn="customer_code"><![CDATA[]]></CustomerCode> <RevisionNumber Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[0]]></RevisionNumber> <CRMAccountId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Account Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="17" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_AccountId"><![CDATA[]]></CRMAccountId> <CRMContactId Editable="1" Visible="1" Required="0" FieldDisplayName="CRM Contact Id" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="18" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CRM_ContactId"><![CDATA[]]></CRMContactId>

202 PUBLICSAP CPQ API Documentation

SOAP API

<Province Editable="1" Visible="1" Required="0" FieldDisplayName="Province" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="10" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn="CUSTOMER_PROVINCE"><![CDATA[]]></Province> <OwnerName Editable="0" Visible="1" Required="0" FieldDisplayName="Owner name" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="99999" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="1" CustomerInfoColumn=""><![CDATA[Milos Grujic]]></OwnerName> <PrimaryIndustry Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></PrimaryIndustry> <CustomerPassword Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerPassword> <CustomerType Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></CustomerType> <Active Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[1]]></Active> <Title Editable="0" Visible="0" Required="0" FieldDisplayName="" FieldDisplayType="" FieldDisplaySize="0" FieldSelectListData="" FieldErrorMessage="" Rank="0" IsAjaxField="0" IncludeInAjaxLookup="0" IsLookupField="0" IncludeInLookupResult="0" CustomerInfoColumn=""><![CDATA[]]></Title> <Actions> <Action ActionId="1" ActionName="Edit" /> <Action ActionId="2" ActionName="Add" /> <Action ActionId="3" ActionName="Delete" /> <Action ActionId="4" ActionName="Lookup" /> <Action ActionId="5" ActionName="CRM Lookup" /> </Actions> </Customer> </Customers> <Actions /> <ScParams> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Additional Comments" FieldDisplayType="LongTextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[4]]></ScParamId> <Label><![CDATA[Additional Comments]]></Label> <StrongName><![CDATA[Additional Comments]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[3]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[4]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[ ]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Project Name" FieldDisplayType="TextField"

SAP CPQ API DocumentationSOAP API PUBLIC 203

FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[57]]></ScParamId> <Label><![CDATA[Project Name]]></Label> <StrongName><![CDATA[Copy of Project Name]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[2]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Custom_Casee" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[54]]></ScParamId> <Label><![CDATA[Custom_Casee]]></Label> <StrongName><![CDATA[Custom_Casee]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[26]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Custom_Test" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[60]]></ScParamId> <Label><![CDATA[Custom_Test]]></Label> <StrongName><![CDATA[Custom_Test]]></StrongName> <Content><![CDATA[22]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[22]]></CalculationFormula> <CalculationType><![CDATA[1]]></CalculationType> </SCParam> <SCParam Required="0" Editable="0" TriggerSaveAction="1" Visible="1" FieldDisplayName="Customer Comment" FieldDisplayType="LongTextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="1"> <ScParamId><![CDATA[29]]></ScParamId> <Label><![CDATA[Customer Comment]]></Label> <StrongName><![CDATA[Customer Comment]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[0]]></ShowInTab> <Rank><![CDATA[0]]></Rank>

204 PUBLICSAP CPQ API Documentation

SOAP API

<CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[4]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<*TABLE( select action_comment from cart_history where cart_id='<* CART_ID *>'and owner_id='<* CO_INFO(ID) *>' and action_comment!=' ' order by action_date desc )*>]]></CalculationFormula> <CalculationType><![CDATA[2]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Customer's Language" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[30]]></ScParamId> <Label><![CDATA[Customer's Language]]></Label> <StrongName><![CDATA[Customer's Language]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[0]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="customJR" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[62]]></ScParamId> <Label><![CDATA[customJR]]></Label> <StrongName><![CDATA[customJR]]></StrongName> <Content><![CDATA[jecaRelease]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[jecaRelease]]></CalculationFormula> <CalculationType><![CDATA[3]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="CustomS40" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[61]]></ScParamId> <Label><![CDATA[CustomS40]]></Label> <StrongName><![CDATA[CustomS40]]></StrongName> <Content><![CDATA[200]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[200]]></CalculationFormula>

SAP CPQ API DocumentationSOAP API PUBLIC 205

<CalculationType><![CDATA[1]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Invoice Number" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[8]]></ScParamId> <Label><![CDATA[Invoice Number]]></Label> <StrongName><![CDATA[Invoice Number]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[10]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="IvanCustomField" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[46]]></ScParamId> <Label><![CDATA[IvanCustomField]]></Label> <StrongName><![CDATA[IvanCustomField]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="IvanCustomFieldAddItem" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[50]]></ScParamId> <Label><![CDATA[IvanCustomFieldAddItem]]></Label> <StrongName><![CDATA[IvanCustomFieldAddItem]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="JecaCecaCostum" FieldDisplayType="SelectList" FieldDisplaySize="350" FieldSelectListData="Attribute_934" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[59]]></ScParamId> <Label><![CDATA[JecaCecaCostum]]></Label>

206 PUBLICSAP CPQ API Documentation

SOAP API

<StrongName><![CDATA[JecaCecaCostum]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[2]]></ScParamType> <StdAttrCode><![CDATA[934]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[2]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="jvCustomField" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[56]]></ScParamId> <Label><![CDATA[jvCustomField]]></Label> <StrongName><![CDATA[jvCustomField]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="KacaCF" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[40]]></ScParamId> <Label><![CDATA[KacaCF]]></Label> <StrongName><![CDATA[KacaCF]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[48]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<*CTX( Date.AddDays(2).InUSDateFormat )*>]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="KacaCF1" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[41]]></ScParamId> <Label><![CDATA[KacaCF1]]></Label> <StrongName><![CDATA[KacaCF1]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[3]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode>

SAP CPQ API DocumentationSOAP API PUBLIC 207

<IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="KacaCF2" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[42]]></ScParamId> <Label><![CDATA[KacaCF2]]></Label> <StrongName><![CDATA[KacaCF2]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="0" TriggerSaveAction="1" Visible="1" FieldDisplayName="KacaCustomField" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="1"> <ScParamId><![CDATA[44]]></ScParamId> <Label><![CDATA[KacaCustomField]]></Label> <StrongName><![CDATA[KacaCustomField]]></StrongName> <Content><![CDATA[0.000000000000000000]]></Content> <ShowInTab><![CDATA[48]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<*CTX( Quote.CurrentItem.ListPrice.DefaultDecimal )*>]]></CalculationFormula> <CalculationType><![CDATA[2]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="0" Visible="1" FieldDisplayName="Main" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[35]]></ScParamId> <Label><![CDATA[Main]]></Label> <StrongName><![CDATA[Main]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="majaE" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2">

208 PUBLICSAP CPQ API Documentation

SOAP API

<ScParamId><![CDATA[45]]></ScParamId> <Label><![CDATA[majaE]]></Label> <StrongName><![CDATA[majaE]]></StrongName> <Content><![CDATA[2015.04.17 10:06:36.82]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<*CTX( Date.Format(yyyy.MM.dd HH:mm:ss.ff) )*>]]></CalculationFormula> <CalculationType><![CDATA[2]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Maxi123" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[39]]></ScParamId> <Label><![CDATA[Maxi123]]></Label> <StrongName><![CDATA[Maxi123]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<* Eval(<*CTX( Quote.CustomField(Maxi123) )*>+1) *>]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="1" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="May custom field" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="3"> <ScParamId><![CDATA[37]]></ScParamId> <Label><![CDATA[May custom field]]></Label> <StrongName><![CDATA[May custom field]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[45]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Opportunity Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[14]]></ScParamId> <Label><![CDATA[Opportunity Name]]></Label> <StrongName><![CDATA[Opportunity Name]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank>

SAP CPQ API DocumentationSOAP API PUBLIC 209

<IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="PO Number" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[6]]></ScParamId> <Label><![CDATA[PO Number]]></Label> <StrongName><![CDATA[PO Number]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[6]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Polje1" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[47]]></ScParamId> <Label><![CDATA[Polje1]]></Label> <StrongName><![CDATA[Polje1]]></StrongName> <Content><![CDATA[000127000021-1-]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<*CTX( Quote.QuoteNumber )*>]]></CalculationFormula> <CalculationType><![CDATA[3]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Polje2" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[48]]></ScParamId> <Label><![CDATA[Polje2]]></Label> <StrongName><![CDATA[Polje2]]></StrongName> <Content><![CDATA[-2--2--2-]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam>

210 PUBLICSAP CPQ API Documentation

SOAP API

<SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Polje3" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[49]]></ScParamId> <Label><![CDATA[Polje3]]></Label> <StrongName><![CDATA[Polje3]]></StrongName> <Content><![CDATA[blablablablablabla]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Post" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[36]]></ScParamId> <Label><![CDATA[Post]]></Label> <StrongName><![CDATA[Post]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Project Name" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[1]]></ScParamId> <Label><![CDATA[Project Name]]></Label> <StrongName><![CDATA[Project Name]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[1]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Quote Expiration Date" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[27]]></ScParamId> <Label><![CDATA[Quote Expiration Date]]></Label> <StrongName><![CDATA[Quote Expiration Date]]></StrongName> <Content><![CDATA[17/05/15]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[0]]></Rank>

SAP CPQ API DocumentationSOAP API PUBLIC 211

<CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[3]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<*CTX( Date.AddDays(30) )*>]]></CalculationFormula> <CalculationType><![CDATA[1]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="qwert3" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[53]]></ScParamId> <Label><![CDATA[qwert3]]></Label> <StrongName><![CDATA[qwert3]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[7]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[3]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="qwerty" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[51]]></ScParamId> <Label><![CDATA[qwerty]]></Label> <StrongName><![CDATA[qwerty]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[0]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="qwerty2" FieldDisplayType="LongTextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[52]]></ScParamId> <Label><![CDATA[qwerty2]]></Label> <StrongName><![CDATA[qwerty2]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[4]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType>

212 PUBLICSAP CPQ API Documentation

SOAP API

</SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="RkField" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[58]]></ScParamId> <Label><![CDATA[RkField]]></Label> <StrongName><![CDATA[RkField]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Terms" FieldDisplayType="SelectList" FieldDisplaySize="350" FieldSelectListData="Attribute_866" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[5]]></ScParamId> <Label><![CDATA[Terms]]></Label> <StrongName><![CDATA[Terms]]></StrongName> <Content><![CDATA[Net 30]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[5]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[2]]></ScParamType> <StdAttrCode><![CDATA[866]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[Net 30]]></CalculationFormula> <CalculationType><![CDATA[1]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="TestApp" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[31]]></ScParamId> <Label><![CDATA[TestApp]]></Label> <StrongName><![CDATA[TestApp]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<*CTX( Quote.CurrentItem.Attribute(TestApp).Value )*>]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="TestApp1" FieldDisplayType="SelectList" FieldDisplaySize="350" FieldSelectListData="Attribute_871" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[32]]></ScParamId> <Label><![CDATA[TestApp1]]></Label> <StrongName><![CDATA[TestApp1]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab>

SAP CPQ API DocumentationSOAP API PUBLIC 213

<Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[2]]></ScParamType> <StdAttrCode><![CDATA[871]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<*CTX( Quote.CurrentItem.Attribute(TestApp1).Value )*>]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="TestApp2" FieldDisplayType="SelectList" FieldDisplaySize="350" FieldSelectListData="Attribute_872" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[33]]></ScParamId> <Label><![CDATA[TestApp2]]></Label> <StrongName><![CDATA[TestApp2]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[2]]></ScParamType> <StdAttrCode><![CDATA[872]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="TestCustom" FieldDisplayType="SelectList" FieldDisplaySize="350" FieldSelectListData="Attribute_877" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[43]]></ScParamId> <Label><![CDATA[TestCustom]]></Label> <StrongName><![CDATA[TestCustom]]></StrongName> <Content><![CDATA[0]]></Content> <ShowInTab><![CDATA[6]]></ShowInTab> <Rank><![CDATA[5]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[2]]></ScParamType> <StdAttrCode><![CDATA[877]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[<* CART_ID *>]]></CalculationFormula> <CalculationType><![CDATA[1]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Tracking Number" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[19]]></ScParamId> <Label><![CDATA[Tracking Number]]></Label> <StrongName><![CDATA[Tracking Number]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[8]]></ShowInTab> <Rank><![CDATA[12]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem>

214 PUBLICSAP CPQ API Documentation

SOAP API

<IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> <SCParam Required="0" Editable="1" TriggerSaveAction="1" Visible="1" FieldDisplayName="Uslov" FieldDisplayType="TextField" FieldDisplaySize="350" FieldSelectListData="" FieldErrorMessage="" AccessLevel="2"> <ScParamId><![CDATA[34]]></ScParamId> <Label><![CDATA[Uslov]]></Label> <StrongName><![CDATA[Uslov]]></StrongName> <Content><![CDATA[]]></Content> <ShowInTab><![CDATA[5]]></ShowInTab> <Rank><![CDATA[0]]></Rank> <CalculationRank><![CDATA[0]]></CalculationRank> <IsGlobal><![CDATA[1]]></IsGlobal> <IsLineItem><![CDATA[0]]></IsLineItem> <ScParamType><![CDATA[1]]></ScParamType> <StdAttrCode><![CDATA[0]]></StdAttrCode> <IsTransferToItem><![CDATA[0]]></IsTransferToItem> <IsPlaceOrder><![CDATA[0]]></IsPlaceOrder> <CalculationFormula><![CDATA[]]></CalculationFormula> <CalculationType><![CDATA[0]]></CalculationType> </SCParam> </ScParams> <OrderStatus> <OrderStatusId><![CDATA[1]]></OrderStatusId> <OrderStatusName><![CDATA[Open]]></OrderStatusName> <OrderStatusNameDefaultLanguage><![CDATA[Open]]></OrderStatusNameDefaultLanguage> </OrderStatus> <ActiveEditableGroup>0</ActiveEditableGroup> <HasDeleteItemActionsAvailable>0</HasDeleteItemActionsAvailable> <MT_PATH>/mt/ALLDEMOS/</MT_PATH> <SHOW_MARGIN_HEALTH>1</SHOW_MARGIN_HEALTH> <SHOW_PRICES>1</SHOW_PRICES> <PlaceOrder_OverrideGenericEmail>0</PlaceOrder_OverrideGenericEmail> <EnableResponsAbilityIntegretaion>0</EnableResponsAbilityIntegretaion> <UseRecurringPriceAndCost>1</UseRecurringPriceAndCost> <SHOW_FAVORITES>1</SHOW_FAVORITES> <DISPLAY_QUOTE_NUMBER_AND_CUSTOMER_NAME>1</DISPLAY_QUOTE_NUMBER_AND_CUSTOMER_NAME> <OwnerIdCrypted>o6Ya4iCZz7k%3d</OwnerIdCrypted> <CartIdCrypted>8WAJprWoDho%3d</CartIdCrypted> <CollaborationProcesses> <CollaborationProcess> <CollaborationBar>Ask an Expert</CollaborationBar> <DiscussionLinkLabel>Link to Quote</DiscussionLinkLabel> <DiscussionTitle>Ask a New Question or Search Existing Knowledge Base </DiscussionTitle> <ButtonLabel>Ask a New Question</ButtonLabel> <Rank>1</Rank> <CreateCode>ho38c7t%2F5dSaLKh8cZ5hYDT4rN%2Bhy5aGUWACLGUlUbM%3D</CreateCode> <ListCode>O80aMiYYG%2Bs2pJgCXBPB%2FDT4rN%2Bhy5aGUWACLGUlUbM%3D</ListCode> <Id>1</Id> <Link>http://test.webcomcpq.com/quotation/Cart.aspx?quote=CECDC8D2CDCE&amp;domain=ALLDEMOS&amp;IsGuestUser=0&amp;linkLabel=Link to Quote</Link> <ResponsAbilityProcessState>visible</ResponsAbilityProcessState> </CollaborationProcess> </CollaborationProcesses> <ItemTypes Title="Make item" Save="Save" Cancel="Cancel"> <ItemType Value="0" Name="Base" Label="Base" /> <ItemType Value="1" Name="Alternative" Label="Alternative for item" /> <ItemType Value="2" Name="Variant" Label="Variant for item" /> <ItemType Value="3" Name="Optional" Label="Optional" /> </ItemTypes> <History CanUndo="0" CanRedo="0" /> <ApprovalRules IsApprovalNeeded="0">

SAP CPQ API DocumentationSOAP API PUBLIC 215

<ErrorMessages /> </ApprovalRules> <ShowProposalOnCart>0</ShowProposalOnCart> <ShowQuoteOnViewProposal>0</ShowQuoteOnViewProposal> </Cart>

2.9.3 Output XML Schema - Get Quote Data

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Cart"> <xs:complexType> <xs:sequence> <xs:element name="DateOrdered"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DateClosed"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DateCreated"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DateModified"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="SubCartId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension>

216 PUBLICSAP CPQ API Documentation

SOAP API

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="SubOwnerId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ActiveRevision"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="GlobalsCsv"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="RevisionNumber"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MarketId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MarketFactor"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PaymentApproved"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

SAP CPQ API DocumentationSOAP API PUBLIC 217

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PaymentMethod"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TrackingKey"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CRMAccountRoleId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Revision"> <xs:complexType> <xs:sequence> <xs:element name="MasterId" type="xs:string" /> <xs:element name="ParentId" type="xs:string" /> <xs:element name="CartId" type="xs:string" /> <xs:element name="Name" type="xs:string" /> <xs:element name="Description" type="xs:string" /> <xs:element name="RevisionNumber" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="CartComment"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalProductModelPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" />

218 PUBLICSAP CPQ API Documentation

SOAP API

</xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalPromoDiscountAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="AveragePromoDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalNetPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="AverageProductDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalProductDiscountAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

SAP CPQ API DocumentationSOAP API PUBLIC 219

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="AverageProductMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalProductMultiplierAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="AdditionalMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="AdditionalMultiplierAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="OverallDiscountAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

220 PUBLICSAP CPQ API Documentation

SOAP API

<xs:element name="OverallDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="SubTotalAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalChannelMarkupPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalChannelMarkupAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="EndUserSubTotalAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" />

SAP CPQ API DocumentationSOAP API PUBLIC 221

</xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalGrossMarginPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalGrossMarginAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MarginHealthColor"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MarginHealthImage"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalChannelCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalChannelGrossMarginPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

222 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalChannelGrossMarginAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalChannelCommisionPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalChannelCommisionAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalUserCommisionPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalUserCommisionAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

SAP CPQ API DocumentationSOAP API PUBLIC 223

<xs:element name="TotalShippingStaticPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalShippingCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="VatAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="VatPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TaxPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TaxAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" />

224 PUBLICSAP CPQ API Documentation

SOAP API

</xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalWeight"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalUpfrontAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalMonthlyFeeAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MonthlyFee"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="NumberOfPayments"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

SAP CPQ API DocumentationSOAP API PUBLIC 225

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalCustomColumn1"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalCustomColumn2"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalCustomColumn3"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TotalCustomColumn4"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MainItems"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="MainItem"> <xs:complexType> <xs:sequence> <xs:element name="Id"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:id"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" />

226 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Rank"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CartItem"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="RolledUpCartItem"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ParentItem"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Quantity"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension>

SAP CPQ API DocumentationSOAP API PUBLIC 227

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PartNumber"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Cost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ExtendedCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductModelPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PromoDiscountAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

228 PUBLICSAP CPQ API Documentation

SOAP API

<xs:element name="PromoDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="BaseListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ExtendedListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UnitDiscountAmount">

SAP CPQ API DocumentationSOAP API PUBLIC 229

<xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DiscountAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Multiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UnitMultiplierAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MultiplierAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="NetPrice"> <xs:complexType>

230 PUBLICSAP CPQ API Documentation

SOAP API

<xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ExtendedAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ManufacturesGrossMargin"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ChannelMarkupPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ChannelMarkupAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="EndUserNet"> <xs:complexType> <xs:simpleContent>

SAP CPQ API DocumentationSOAP API PUBLIC 231

<xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="EndUserExtendedAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ChannelMarginPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductTypeName"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductTypeId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductTypeSystemId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

232 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ChannelCommisionPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ChannelCommisionAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UserCommisionPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UserCommisionAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="IsOptional"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

SAP CPQ API DocumentationSOAP API PUBLIC 233

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MarginHealthColor"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MarginHealthImage"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductSystemId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductName"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" />

234 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductNameInDefaultLanguage"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Description"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DescriptionLong"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UserDescription"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CategoryId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" />

SAP CPQ API DocumentationSOAP API PUBLIC 235

</xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DateAdded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ItemDeliveryMethod"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ItemDeliveryStatus"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="EffDate"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="GroupId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType>

236 PUBLICSAP CPQ API Documentation

SOAP API

</xs:element> <xs:element name="BaseQuantity"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DefaultDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MinDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MaxDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DefaultMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MinMultiplier">

SAP CPQ API DocumentationSOAP API PUBLIC 237

<xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MaxMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Weight"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UpfrontPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UpfrontAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MonthlyFeeAmount"> <xs:complexType> <xs:simpleContent>

238 PUBLICSAP CPQ API Documentation

SOAP API

<xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn1"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn2"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn3"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn4"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="IsSimple"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

SAP CPQ API DocumentationSOAP API PUBLIC 239

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ItemShippingCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductWizardCfgId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductWizardCfgAttrCode"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="RolledUpListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="RolledUpExtendedListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="RolledUpNetPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

240 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="RolledUpExtendedAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="IsComplete"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="IsInvalid"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="RolledUpEndCustomerUnitPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="RolledUpEndCustomerExtendedPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="LineItems"> <xs:complexType> <xs:sequence>

SAP CPQ API DocumentationSOAP API PUBLIC 241

<xs:element maxOccurs="unbounded" name="LineItem"> <xs:complexType> <xs:sequence> <xs:element type="xs:int" name="Id"/> <xs:element type="xs:string" name="Rank"/> <xs:element type="xs:string" name="CartItem"/> <xs:element type="xs:string" name="RolledUpCartItem"/> <xs:element type="xs:string" name="ParentItem"/> <xs:element name="Quantity"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PartNumber"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element type="xs:string" name="UnitOfMeasure"/> <xs:element name="Cost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension>

242 PUBLICSAP CPQ API Documentation

SOAP API

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ExtendedCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductModelPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PromoDiscountAmount"> <xs:complexType> <xs:simpleContent>

SAP CPQ API DocumentationSOAP API PUBLIC 243

<xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PromoDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="BaseListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent>

244 PUBLICSAP CPQ API Documentation

SOAP API

</xs:complexType> </xs:element> <xs:element name="ExtendedListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> <xs:attribute type="xs:string" name="FieldErrorMessage"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UnitDiscountAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DiscountAmount"> <xs:complexType> <xs:simpleContent>

SAP CPQ API DocumentationSOAP API PUBLIC 245

<xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Multiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> <xs:attribute type="xs:string" name="FieldErrorMessage"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UnitMultiplierAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MultiplierAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension>

246 PUBLICSAP CPQ API Documentation

SOAP API

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="NetPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ExtendedAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ManufacturesGrossMargin"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ChannelMarkupPercent"> <xs:complexType> <xs:simpleContent>

SAP CPQ API DocumentationSOAP API PUBLIC 247

<xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ChannelMarkupAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="EndUserNet"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="EndUserExtendedAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent>

248 PUBLICSAP CPQ API Documentation

SOAP API

</xs:complexType> </xs:element> <xs:element name="ChannelMarginPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element type="xs:string" name="ProductTypeName"/> <xs:element type="xs:string" name="ProductTypeNameInDefaultLanguage"/> <xs:element type="xs:unsignedByte" name="ProductTypeId"/> <xs:element type="xs:string" name="ProductTypeSystemId"/> <xs:element type="xs:unsignedByte" name="ProductTypeRank"/> <xs:element type="xs:unsignedByte" name="ProductTypeAddToCRM"/> <xs:element name="ChannelCommisionPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ChannelCommisionAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension>

SAP CPQ API DocumentationSOAP API PUBLIC 249

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UserCommisionPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UserCommisionAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element type="xs:unsignedByte" name="IsOptional"/> <xs:element type="xs:string" name="MarginHealthColor"/> <xs:element type="xs:string" name="MarginHealthImage"/> <xs:element type="xs:string" name="MRCMarginHealthColor"/> <xs:element type="xs:string" name="MRCMarginHealthImage"/> <xs:element type="xs:short" name="ProductId"/> <xs:element type="xs:string" name="ProductSystemId"/> <xs:element type="xs:string" name="ProductName"/> <xs:element type="xs:string" name="ProductNameInDefaultLanguage"/> <xs:element type="xs:string" name="Description"/> <xs:element type="xs:string" name="DescriptionLong"/> <xs:element name="UserDescription">

250 PUBLICSAP CPQ API Documentation

SOAP API

<xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element type="xs:short" name="CategoryId"/> <xs:element type="xs:string" name="DateAdded"/> <xs:element type="xs:string" name="ItemDeliveryMethod"/> <xs:element type="xs:unsignedByte" name="ItemDeliveryStatus"/> <xs:element type="xs:string" name="EffDate"/> <xs:element type="xs:string" name="GroupId"/> <xs:element name="BaseQuantity"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DefaultDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

SAP CPQ API DocumentationSOAP API PUBLIC 251

<xs:element name="MinDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MaxDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DefaultMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MinMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/>

252 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MaxMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DefaultMRCDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MinMRCDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MaxMRCDiscountPercent">

SAP CPQ API DocumentationSOAP API PUBLIC 253

<xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DefaultMRCMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MinMRCMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MaxMRCMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/>

254 PUBLICSAP CPQ API Documentation

SOAP API

</xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Weight"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UpfrontPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UpfrontAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MonthlyFeeAmount"> <xs:complexType>

SAP CPQ API DocumentationSOAP API PUBLIC 255

<xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn1"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn2"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn3"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension>

256 PUBLICSAP CPQ API Documentation

SOAP API

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn4"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn5"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomColumn6"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element type="xs:string" name="ProductVersion"/> <xs:element type="xs:string" name="ExternalId"/> <xs:element type="xs:string" name="ExternalCartItem"/>

SAP CPQ API DocumentationSOAP API PUBLIC 257

<xs:element type="xs:string" name="UPC"/> <xs:element type="xs:string" name="MPN"/> <xs:element type="xs:string" name="LeadTime"/> <xs:element type="xs:unsignedByte" name="Inventory"/> <xs:element type="xs:unsignedByte" name="ProductDisplayInfo"/> <xs:element type="xs:string" name="FamilyCode"/> <xs:element type="xs:string" name="PRODUCT_WEIGHT"/> <xs:element name="ForwardCurrencyRate"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ItemType"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:unsignedByte"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element type="xs:unsignedByte" name="BaseItem"/> <xs:element name="MRCListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension>

258 PUBLICSAP CPQ API Documentation

SOAP API

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCExtendedListPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> <xs:attribute type="xs:string" name="FieldErrorMessage"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCDiscountAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCUnitDiscountAmount"> <xs:complexType>

SAP CPQ API DocumentationSOAP API PUBLIC 259

<xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCNetPrice"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCExtendedAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCGrossMarginPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension>

260 PUBLICSAP CPQ API Documentation

SOAP API

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCExtendedCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> <xs:attribute type="xs:string" name="FieldErrorMessage"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCMultiplierAmount"> <xs:complexType>

SAP CPQ API DocumentationSOAP API PUBLIC 261

<xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedunsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedunsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCUnitMultiplierAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCChannelMarkupPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCChannelMarkupAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension>

262 PUBLICSAP CPQ API Documentation

SOAP API

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCChannelMarginPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCChannelMarginAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCEndUserNet"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MRCEndUserExtendedAmount"> <xs:complexType> <xs:simpleContent>

SAP CPQ API DocumentationSOAP API PUBLIC 263

<xs:extension base="xs:float"> <xs:attribute type="xs:unsignedByte" name="Editable"/> <xs:attribute type="xs:unsignedByte" name="EditableGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element type="xs:string" name="CartItemGuid"/> <xs:element type="xs:string" name="BaseItemGuid"/> <xs:element type="xs:string" name="ParentItemGuid"/> <xs:element type="xs:unsignedByte" name="AttributeRank"/> <xs:element type="xs:unsignedByte" name="AttributeSubRank"/> <xs:element name="Details"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Detail"> <xs:complexType> <xs:sequence> <xs:element name="Id" type="xs:unsignedByte" /> <xs:element name="CartId" type="xs:unsignedByte" /> <xs:element name="UserId" type="xs:unsignedByte" /> <xs:element name="CartItem" type="xs:unsignedByte" /> <xs:element name="Sequence" type="xs:unsignedByte" /> <xs:element name="ActualShipDate" type="xs:string" /> <xs:element name="EstimatedShipDate" type="xs:string" /> <xs:element name="SN" type="xs:string" /> <xs:element name="TrackingNumber" type="xs:string" /> <xs:element name="TrackingURL" type="xs:string" /> <xs:element name="MiscDetail01" type="xs:string" /> <xs:element name="MiscDetail02" type="xs:string" /> <xs:element name="MiscDetail03" type="xs:string" /> <xs:element name="MiscDetail04" type="xs:string" /> <xs:element name="MiscDetail05" type="xs:string" /> </xs:sequence>

264 PUBLICSAP CPQ API Documentation

SOAP API

</xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="AppliedPromotions"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Promotion"> <xs:complexType> <xs:sequence> <xs:element name="PromoId" type="xs:unsignedByte" /> <xs:element name="ActionRank" type="xs:unsignedByte" /> <xs:element name="ModifiedAmount" type="xs:float" /> <xs:element name="Description" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute type="xs:unsignedByte" name="CanOverrideMinMaxValues"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Actions"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Action"> <xs:complexType> <xs:sequence> <xs:element name="ActionId" type="xs:unsignedByte" /> <xs:element name="ActionName" type="xs:string" /> <xs:element name="ActionNameInDefaultLanguage" type="xs:string" /> <xs:element name="UpgradeType" type="xs:unsignedByte" /> <xs:element name="ClientScript" type="xs:string" /> <xs:element name="EndStatusId" type="xs:unsignedByte" />

SAP CPQ API DocumentationSOAP API PUBLIC 265

<xs:element name="EndStatusName" type="xs:string" /> <xs:element name="SortOrder" type="xs:unsignedByte" /> <xs:element name="ActionDisplayLevel" type="xs:boolean" /> <xs:element name="Image" type="xs:string" /> <xs:element name="LightningImg" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="KeyAttributes"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="KeyAttribute"> <xs:complexType> <xs:sequence> <xs:element name="Rank" type="xs:unsignedByte" /> <xs:element name="Expression" type="xs:string" /> <xs:element name="Label" type="xs:string" /> <xs:element name="Value" type="xs:string" /> <xs:element name="CartItemId" type="xs:integer" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Details"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Detail"> <xs:complexType> <xs:sequence> <xs:element name="Id" type="xs:unsignedByte" /> <xs:element name="CartId" type="xs:unsignedByte" /> <xs:element name="UserId" type="xs:unsignedByte" /> <xs:element name="CartItem" type="xs:unsignedByte" /> <xs:element name="Sequence" type="xs:unsignedByte" /> <xs:element name="ActualShipDate" type="xs:string" /> <xs:element name="EstimatedShipDate" type="xs:string" /> <xs:element name="SN" type="xs:string" /> <xs:element name="TrackingNumber" type="xs:string" /> <xs:element name="TrackingURL" type="xs:string" /> <xs:element name="MiscDetail01" type="xs:string" />

266 PUBLICSAP CPQ API Documentation

SOAP API

<xs:element name="MiscDetail02" type="xs:string" /> <xs:element name="MiscDetail03" type="xs:string" /> <xs:element name="MiscDetail04" type="xs:string" /> <xs:element name="MiscDetail05" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="AppliedPromotions"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Promotion"> <xs:complexType> <xs:sequence> <xs:element name="PromoId" type="xs:unsignedByte" /> <xs:element name="ActionRank" type="xs:unsignedByte" /> <xs:element name="ModifiedAmount" type="xs:float" /> <xs:element name="Description" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="CanOverrideMinMaxValues" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ProductTypes"> <xs:complexType> <xs:sequence> <xs:element name="ProductType"> <xs:complexType> <xs:sequence> <xs:element name="PTName"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTRank"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

SAP CPQ API DocumentationSOAP API PUBLIC 267

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ProductModelSubTotal"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTPromoDiscountAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTPromoDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTListSubTotal"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" />

268 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTMultiplierAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTDiscountAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTSubTotal"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

SAP CPQ API DocumentationSOAP API PUBLIC 269

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTChannelMarkupPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTChannelMarkupAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTEndUserSubTotal"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTChannelCommisionPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTChannelCommisionAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string">

270 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTUserCommisionPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTUserCommisionAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTGrossMarginPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTGrossMarginAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" />

SAP CPQ API DocumentationSOAP API PUBLIC 271

<xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTChannelCost"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTChannelGrossMarginPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTChannelGrossMarginAmount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MarginHealthColor"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="MarginHealthImage"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" />

272 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTDefaultDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTMinDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTMaxDiscountPercent"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTDefaultMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTMinMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" />

SAP CPQ API DocumentationSOAP API PUBLIC 273

</xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTMaxMultiplier"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTCustomColumn1"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTCustomColumn2"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTCustomColumn3"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PTCustomColumn4"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="EditableGroup" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType>

274 PUBLICSAP CPQ API Documentation

SOAP API

</xs:element> </xs:sequence> <xs:attribute name="CanOverrideMinMaxValues" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="PromoCodes" /> <xs:element name="AdditionalDiscounts"> <xs:complexType> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> <xs:element name="Markets"> <xs:complexType> <xs:sequence> <xs:element name="Market"> <xs:complexType> <xs:sequence> <xs:element name="MarketName" type="xs:string" /> <xs:element name="MarketId" type="xs:string" /> <xs:element name="MarketFactor" type="xs:string" /> <xs:element name="MarketCode" type="xs:string" /> <xs:element name="CurrencyCode" type="xs:string" /> <xs:element name="CurrencyQuote" type="xs:string" /> <xs:element name="CurrencyDescription" type="xs:string" /> <xs:element name="CurrencySign" type="xs:string" /> <xs:element name="CurrencyDefault" type="xs:string" /> </xs:sequence> <xs:attribute name="Selected" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Shippings"> <xs:complexType> <xs:sequence> <xs:element name="Shipping"> <xs:complexType> <xs:sequence> <xs:element name="ShippingName" type="xs:string" /> <xs:element name="ShippingId" type="xs:string" /> <xs:element name="StaticPriceFormula" type="xs:string" /> <xs:element name="ErrorMessage" type="xs:string" /> </xs:sequence> <xs:attribute name="Selected" type="xs:unsignedByte" use="required" /> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> </xs:complexType>

SAP CPQ API DocumentationSOAP API PUBLIC 275

</xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Customers"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Customer"> <xs:complexType> <xs:sequence> <xs:element name="CustomerId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ShopCartId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" />

276 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="UserId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="FirstName"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" />

SAP CPQ API DocumentationSOAP API PUBLIC 277

<xs:attribute name="FieldDisplaySize" type="xs:unsignedShort" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="LastName"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedShort" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Company"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" />

278 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedShort" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Address1"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedShort" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Address2"> <xs:complexType> <xs:simpleContent>

SAP CPQ API DocumentationSOAP API PUBLIC 279

<xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedShort" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="City"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedShort" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension>

280 PUBLICSAP CPQ API Documentation

SOAP API

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="StateAbbrev"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ZipCode"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" />

SAP CPQ API DocumentationSOAP API PUBLIC 281

<xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CountryAbbrev"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TerritoryId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" />

282 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="TerritoryName"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="BusinessPhone"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" />

SAP CPQ API DocumentationSOAP API PUBLIC 283

<xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="BusinessFax"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Email"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" />

284 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedShort" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DirtyFlag"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomerCode"> <xs:complexType> <xs:simpleContent>

SAP CPQ API DocumentationSOAP API PUBLIC 285

<xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="RevisionNumber"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension>

286 PUBLICSAP CPQ API Documentation

SOAP API

</xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CRMAccountId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CRMContactId"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" />

SAP CPQ API DocumentationSOAP API PUBLIC 287

<xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Province"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="OwnerName"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" />

288 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Rank" type="xs:unsignedInt" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="PrimaryIndustry"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomerPassword"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" />

SAP CPQ API DocumentationSOAP API PUBLIC 289

<xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="CustomerType"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Active"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" />

290 PUBLICSAP CPQ API Documentation

SOAP API

<xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Title"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsAjaxField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInAjaxLookup" type="xs:unsignedByte" use="required" /> <xs:attribute name="IsLookupField" type="xs:unsignedByte" use="required" /> <xs:attribute name="IncludeInLookupResult" type="xs:unsignedByte" use="required" /> <xs:attribute name="CustomerInfoColumn" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Actions"> <xs:complexType> <xs:sequence>

SAP CPQ API DocumentationSOAP API PUBLIC 291

<xs:element maxOccurs="unbounded" name="Action"> <xs:complexType> <xs:attribute name="ActionId" type="xs:unsignedByte" use="required" /> <xs:attribute name="ActionName" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="CustomerRoleType" type="xs:unsignedByte" use="required" /> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="Personal" type="xs:unsignedByte" use="required" /> <xs:attribute name="Rank" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Actions"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Action"> <xs:complexType> <xs:sequence> <xs:element name="ActionId" type="xs:unsignedByte" /> <xs:element name="ActionName" type="xs:string" /> <xs:element name="ActionNameInDefaultLanguage" type="xs:string" /> <xs:element name="UpgradeType" type="xs:unsignedByte" /> <xs:element name="ClientScript" type="xs:string" /> <xs:element name="EndStatusId" type="xs:unsignedByte" /> <xs:element name="EndStatusName" type="xs:string" /> <xs:element name="SortOrder" type="xs:unsignedByte" /> <xs:element name="ActionDisplayLevel" type="xs:boolean" /> <xs:element name="Image" type="xs:string" /> <xs:element name="LightningImg" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ScParams"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="SCParam">

292 PUBLICSAP CPQ API Documentation

SOAP API

<xs:complexType> <xs:sequence> <xs:element name="ScParamId" type="xs:string" /> <xs:element name="Label" type="xs:string" /> <xs:element name="StrongName" type="xs:string" /> <xs:element name="Content" type="xs:string" /> <xs:element name="ShowInTab" type="xs:string" /> <xs:element name="Rank" type="xs:string" /> <xs:element name="IsGlobal" type="xs:string" /> <xs:element name="IsLineItem" type="xs:string" /> <xs:element name="ScParamType" type="xs:string" /> <xs:element name="StdAttrCode" type="xs:string" /> <xs:element name="IsTransferToItem" type="xs:string" /> <xs:element name="IsPlaceOrder" type="xs:string" /> <xs:element name="CalculationFormula" type="xs:string" /> <xs:element name="CalculationType" type="xs:string" /> </xs:sequence> <xs:attribute name="Required" type="xs:unsignedByte" use="required" /> <xs:attribute name="Editable" type="xs:unsignedByte" use="required" /> <xs:attribute name="Visible" type="xs:unsignedByte" use="required" /> <xs:attribute name="FieldDisplayName" type="xs:string" use="required" /> <xs:attribute name="FieldDisplayType" type="xs:string" use="required" /> <xs:attribute name="FieldDisplaySize" type="xs:unsignedShort" use="required" /> <xs:attribute name="FieldSelectListData" type="xs:string" use="required" /> <xs:attribute name="FieldErrorMessage" type="xs:string" use="required" /> <xs:attribute name="AccessLevel" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="OrderStatus"> <xs:complexType> <xs:sequence> <xs:element name="OrderStatusId" type="xs:string" /> <xs:element name="OrderStatusName" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="MT_PATH" type="xs:string" /> <xs:element name="SHOW_MARGIN_HEALTH" type="xs:unsignedByte" /> <xs:element name="SHOW_PRICES" type="xs:unsignedByte" /> <xs:element name="PlaceOrder_OverrideGenericEmail" type="xs:unsignedByte" />

SAP CPQ API DocumentationSOAP API PUBLIC 293

<xs:element name="OwnerIdCrypted" type="xs:string" /> <xs:element name="CartIdCrypted" type="xs:string" /> <xs:element name="History"> <xs:complexType> <xs:attribute name="CanUndo" type="xs:unsignedByte" use="required" /> <xs:attribute name="CanRedo" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> <xs:element name="ApprovalRules"> <xs:complexType> <xs:sequence> <xs:element name="ErrorMessages" /> </xs:sequence> <xs:attribute name="IsApprovalNeeded" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> <xs:element name="ShowProposalOnCart" type="xs:unsignedByte" /> <xs:element name="ShowQuoteOnViewProposal" type="xs:unsignedByte" /> </xs:sequence> <xs:attribute name="CartCompositeNumber" type="xs:string" use="required" /> <xs:attribute name="CartId" type="xs:unsignedByte" use="required" /> <xs:attribute name="OwnerId" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> </xs:schema>

2.10 Get Quote Items Attributes SOAP API

Function name: GetQuoteItemsAttributes

Authentication: SOAP API authentication [page 376]

GetQuoteItemsAttributes function returns attributes (all or only the specified ones) from desired quote.

NoteIn XML, Line Items are stored in <PRODUCT> nodes, just like Main Items. They are not present in <ATTRIBUTE> node. Also, for Line Items, following nodes are always empty: <ProductId>, <IsSimple>, <IsValid>, <DescriptionLong>

294 PUBLICSAP CPQ API Documentation

SOAP API

2.10.1 Get Quote Items Attributes - Input Parameters

Get Quote Items Attributes - Input parameters:

Tag Data Type Description Required Comments

Username String Only SAP CPQ admin­istrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor user name

Password String Only SAP CPQ admin­istrators can execute this function. Pass­word is defined in SAP CPQ Setup.

Yes SAP CPQ administra­tor's password for the administrator user name provided in the username element

CartCompositeNum­ber

String Cart composite num­ber.

Yes System quotation number of a cart to get properties of

Revision Integer or Null Cart revision number. No If null, active revision will be returned

AttributeNames String Array Attribute names to get from cart.

No Can be empty array – use in conjunction with next tag.

GetAllAttributes Boolean Get or don’t get all at­tributes from cart.

Yes If TRUE, it will return all attributes from cart.

2.10.2 Get Quote Items Attributes - Output Parameters

Tag Data Type Description Required Comments

CART XML Output result. Yes Result is an XML for­matted string.

2.10.3 Result XML Examples

Input attributes were: “Processor”, “Monitor”, “Hard Drive” and “Toner”.

<?xml version="1.0" encoding="utf-16"?> <CART> <DateOrdered /> <DateClosed /> <DateCreated>7/22/2009</DateCreated> <DateModified>7/24/2009</DateModified> <CartCompositeNumber>00010007</CartCompositeNumber> <CartId>7</CartId> <OwnerId>1</OwnerId> <ActiveRevision>1</ActiveRevision>

SAP CPQ API DocumentationSOAP API PUBLIC 295

<RevisionNumber>0</RevisionNumber> <OrderStatusId>1</OrderStatusId> <OrderStatusName>Open</OrderStatusName> <PRODUCT> <ProductId>1</ProductId> <Name>SMB2 Desktop computer</Name> <ProductType>Hardware</ProductType> <IsSimple>0</IsSimple> <IsValid>1</IsValid> <Description>SMB2 Desktop Computer with:AMD Athlon 3000+ Processor,256MB-DDR Memory,250GB Hard Disc,CD-R 52/16/52 Drive,19inch Flat Screen Monitor</Description> <DescriptionLong>SMB2 Desktop computer</DescriptionLong> <CatCode>SMB2-A3-256-H25-C519F</CatCode> <Cost>0.0000000000</Cost> <Price>345</Price> <Qty>1</Qty> <CartItem>1</CartItem> <BOM> <BOMITEM> <ITEMNUM>1</ITEMNUM> <CONDITIONID>4</CONDITIONID> <CHARTID>3</CHARTID> <CHARTNAME><![CDATA[proba]]></CHARTNAME> <PARTTYPE><![CDATA[Hardware]]></PARTTYPE> <PARTNAME><![CDATA[SMB2 Desktop computer]]></PARTNAME> <PARTDESCRIPTION><![CDATA[Reliable Desktop computers for any kind of exploitation]]></PARTDESCRIPTION> <PARSEDPARTNAME><![CDATA[]]></PARSEDPARTNAME> <PARSEDPARTDESCRIPTION><![CDATA[]]></PARSEDPARTDESCRIPTION> <QUANTITY><![CDATA[1]]></QUANTITY> <PARSEDQUANTITY><![CDATA[]]></PARSEDQUANTITY> </BOMITEM> </BOM></PRODUCT> </CART>

2.10.4 Output XML Schema - Get Quote Items Attribute

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="CART"> <xs:complexType> <xs:sequence> <xs:element name="DateOrdered" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="DateClosed" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="DateCreated" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="DateModified" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CartCompositeNumber" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CartId" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="OwnerId" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="ActiveRevision" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="RevisionNumber" type="xs:string" minOccurs="0" maxOccurs="1" />

296 PUBLICSAP CPQ API Documentation

SOAP API

<xs:element name="OrderStatusId" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="OrderStatusName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="PRODUCT" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="ProductId" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="ProductType" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="IsSimple" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="IsValid" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="DescriptionLong" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CatCode" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Cost" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Price" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Qty" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CartItem" type="xs:integer" maxOccurs="1" minOccurs="0"/> <xs:element name="BOM" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="BOMITEM" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="ITEMNUM" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CONDITIONID" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CHARTID" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CHARTNAME" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="PARTTYPE" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="PARTNAME" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="PARTDESCRIPTION" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="PARSEDPARTNAME" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="PARSEDPARTDESCRIPTION" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="QUANTITY" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="PARSEDQUANTITY" type="xs:string" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ATTRIBUTE" maxOccurs="unbounded" minOccurs="0"> <xs:complexType>

SAP CPQ API DocumentationSOAP API PUBLIC 297

<xs:sequence> <xs:element name="AttributeName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="AttributeDisplayValue" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="AttributeValueCode" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="AttributeQuantity" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="AttributeCost" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="AttributePrice" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="AttributeDescription" type="xs:string" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.11 New Quote from Salesforce SOAP API

Function Name: NewQuoteFromSF

Function description: NewQuoteFromSF function creates a quote, billing info, shipping info, end user info, quote properties, sets attributes, calculates shipping method and saves the quote while you have a Salesforce session established. Also, it optionally links and maps newly created quote with CRM opportunity. You will use this method in situations when you want to simulate quote creation, as if user landed from Salesforce.

Authentication: SOAP API authentication [page 376]

New Quote from SalesForce - Input Parameters [page 298]

2.11.1 New Quote from SalesForce - Input Parameters

Tag Data Type Description Required Comments

domainName String (50) Name of the domain. Yes

sessionId String (100) SalesForce session Id. Yes

298 PUBLICSAP CPQ API Documentation

SOAP API

Tag Data Type Description Required Comments

sfAPIUrl String(100) SalesForce API Url. This parameter is ac­tually the apiPartner­URL parameter that is sent in the SAP CPQ IFRAME URL when users are directed from SFDC to SAP CPQ during new quote creation. Step by step instructions how to ob­tain this parameters are added below this table.

Yes

newQuoteXML String(8000) Cart XML document. Yes XML needs to arrive HTML encoded. Other­wise bad request mes­sage would be re­turned

Obtaining sfAPIUrl (apiPartnerURL) Parameter

Log into your SFDC account. Edit the existing SAP CPQ quote or click on “Add New” to create the new one. You are brought to the SFDC screen that loads SAP CPQ IFRAME. On that screen, right click the Salesforce header and choose “view source” as shown on the image below:

SAP CPQ API DocumentationSOAP API PUBLIC 299

In the source code window that will open, press ctrl+F to find the following string: “<iframe” (without quotes). There may be more than one IFRAME in the page source, look for the one that has a SAP CPQ URL in the “src” attribute, as shown on the image below (first highlighted row of text):

When you locate the SAP CPQ IFRAME, you will also see the apiPartnerURL parameter (second highlighted line of text in the screen above.). Copy it properly! The whole SRC of the IFRAME will look like below. You can extract two parameters from this src as we did.

<iframe frameborder="0" height="1000" id="j_id1" name="j_id1" src="https://sandbox.webcomcpq.com/salesforce/[email protected]&amp;apiPartnerURL=https://c.na9.visual.force.com/services/Soap/u/16.0/00DE0000000c5Vk&amp;apiSessionID=00DE0000000c5Vk!AQ4AQIN69C4Hl3Wmr1lVb313gCWBYDS9pEhRqYVokbi_D6joZyfcx7P0KtAFrmK4ydsXCirYoPQwMenHsh2JyYquls7BQqeK&amp;domain_name=CRM&amp;apiPass=Password&amp;action=New&amp;sfqpOpportunityID=006E000000DCfyc" title="Content" width="100%"></iframe>

Sample parameters:

● apiPartnerUrl: https://c.na9.visual.force.com/services/Soap/u/16.0/00DE0000000c5Vk● apiSessionID: 00DE0000000c5Vk!

AQ4AQIN69C4Hl3Wmr1lVb313gCWBYDS9pEhRqYVokbi_D6joZyfcx7P0KtAFrmK4ydsXCirYoPQwMenHsh2JyYquls7BQqeK

You can also find the apiSessionID in the same IFRAME src, look for the another portion of bolded text in the above example.

You will also notice that NewQuoteFromSF API method does not require username and password - just the domain. The username will be determined based on SF session ID provided. (So you need to log in to SFDC and perform the above steps to establish SF session, which will drive SAP CPQ user - this means that you need to use a SF login that does have a mapped SAP CPQ user in place.)

The rest of the API flow is just as if you called regular new quote API. The only difference is that you use salesforce for login, and that SAP CPQ will have SF session available in case it needs to talk to SAP CPQ during the new quote creation process.

Noteif using new quote from SF, the created quote owner will be the very same user that is used to log in to SAP CPQ (user mapped from SFDC whose session ID you took).

300 PUBLICSAP CPQ API Documentation

SOAP API

Data Definition for New Quote From SalesForce input XML

Field Name Description Sample Data Type Size

MarketCode Code of the Market USD Text 25

ShippingMethod Name of the Shipping method

FedEx International Priority

Text 100

ShippingPrice Price for the shipping method

125 Text 10

TaxExempt Tax Exempt. 1 Boolean 3

Possible values: True, False, 1, 0

CartComment Cart Comment Text 1000

PromoCode Promo Code Text 50

CRM/[ApplyMap­pings]

“1” for “Yes/True” TRUE Unsigned Byte

0 for “No/False” (De­fault if omitted)

CRM/OpportunityId CRM Opportunity id 892ADE6756HIX Text 50

CRM/Opportunity­Name

CRM Opportunity name

“TEST OPPORTUNITY” Text 250

Quantity Item Quantity 1 Text 5

CatalogueCode Catalog Code A2223B Text 50

ItemPrice Price per one item 100 Text 10

Attribute/Name Attribute name SerialNumber Text 50

Attribute/Value Attribute value SN1234 Text 50

Property/Name Property name Project Code Text 50

Property/Value Property Value 555 Text 100

CustomerRoleType 1 for Bill to 1 Unsigned Byte

2 for Ship to

3 for End user

Id ID from SAP CPQ 12345 Text 20

ExternalId External ID (not from SAP CPQ)

1 Text 20

FirstName First Name Harry Text 100

LastName Last Name Bruce Text 100

Company Company Name Webcom Text 100

Address1 The first address 8601 RR 2222 Text 100

Address2 The second address xxx Text 100

City City Austin Text 100

SAP CPQ API DocumentationSOAP API PUBLIC 301

Field Name Description Sample Data Type Size

StateAbbrev State (2 chars) TX Text 2

ZipCode Zip Code 78730 Text 10

CountryAbbrev Country/Region (3 chars)

USA Text 3

TerritoryName Territory Name North America Text 100

BusinessPhone Phone Number Text 100

BusinessFax Fax Number Text 100

EMail Email address Text 100

CRMAccountId CRM Contact ID Text 100

CRMContactId CRM Account ID Text 100

Cart → PRE­VENT_EMPTY_QUOTE

Attribute to prevent empty quote. This at­tribute is optional.

Text 100

Input XML Example

<?xml version="1.0" encoding="utf-8"?> <Cart PREVENT_EMPTY_QUOTE="1"> <MarketCode>USD</MarketCode> <ShippingMethod></ShippingMethod> <ShippingPrice>1</ShippingPrice> <TaxExempt>0</TaxExempt> <CartComment></CartComment> <PromoCode>A223344</PromoCode> <Crm ApplyMappings="1"> <OpportunityId>892ADE6756HIX</OpportunityId> <OpportunityName>Test opportunity</OpportunityName> </Crm> <Items> <Item> <Quantity>1</Quantity> <CatalogueCode>A2223B</CatalogueCode> <ItemPrice>100</ItemPrice> <Attributes> <Attribute> <Name>ExampleName</Name> <Value>100</Value> <Value>101</Value> </Attribute> </Attributes> </Item> <Item> <Quantity>2</Quantity> <CatalogueCode>A4541V</CatalogueCode> <ItemPrice>120</ItemPrice> <Attributes> <Attribute> <Name>ExampleName</Name> <Value>100</Value> </Attribute> <Attribute> <Name>OtherExampleName</Name>

302 PUBLICSAP CPQ API Documentation

SOAP API

<Value>161</Value> </Attribute> </Attributes> </Item> </Items> <Properties> <Property> <Name>GP Order Number</Name> <Value></Value> </Property> <Property> <Name>Project Code</Name> <Value></Value> </Property> </Properties> <Customers> <Customer CustomerRoleType="1"> <Id></Id> <ExternalId></ExternalId> <FirstName>Harry</FirstName> <LastName>Bruce</LastName> <Company>Procter &amp; Gamble Company, The</Company> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail> <CRMAccountId>0036000000Kq8eU</CRMAccountId> <CRMContactId>0016000000F0qvQ</CRMContactId> </Customer> <Customer CustomerRoleType="2"> <Id></Id> <ExternalId></ExternalId> <FirstName>Harry</FirstName> <LastName>Bruce</LastName> <Company>Procter &amp; Gamble Company, The</Company> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail> <CRMAccountId>0036000000Kq8eU</CRMAccountId> <CRMContactId>0016000000F0qvQ</CRMContactId> </Customer> <Customer CustomerRoleType="3"> <Id></Id> <ExternalId></ExternalId> <FirstName>Harry</FirstName> <LastName>Bruce</LastName> <Company>Procter &amp; Gamble Company, The</Company> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone>

SAP CPQ API DocumentationSOAP API PUBLIC 303

<BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail> <CRMAccountId>0036000000Kq8eU</CRMAccountId> <CRMContactId>0016000000F0qvQ</CRMContactId> </Customer> </Customers> </Cart>

2.12 Request for Quotation SOAP API

Function name: RequestForQuotation

Function description: RequestForQuotation function creates a new quote in context of the SAP Commerce Cloud integration with Variant Configuration configurable products, SAP Commerce quote details, related comments (on quote and item level), sales area details and pricing procedure name.

● API parameters username/password identifies the API user.● Owner API parameter defines the username of the owner of a newly created quote.

Authentication: SOAP API authentication [page 376]

Input XML Schema - Request for Quotation [page 304]

Output XML Schema - Request for Quotation [page 306]

Request for Quotation - Input Parameters [page 307]

Request for Quotation - Output Parameters [page 310]

Result XML Examples - Request for Quotation [page 311]

2.12.1 Input XML Schema - Request for Quotation

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Cart"> <xs:complexType> <xs:sequence> <xs:element name="ExternalId" type="xs:short" maxOccurs="1" minOccurs="1"/> <xs:element name="PricingProcedureName" type="xs:string" maxOccurs="1" minOccurs="0"/> <xs:element name="PromotionsSummary" type="xs:string" maxOccurs="1" minOccurs="0"/> <xs:element name="DistributionChain" type="xs:string" maxOccurs="1" minOccurs="1"/> <xs:element name="Currency" type="xs:string" maxOccurs="1" minOccurs="1"/> <xs:element name="CartComments" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="CartComment" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence>

304 PUBLICSAP CPQ API Documentation

SOAP API

<xs:element type="xs:string" name="UserFullName" maxOccurs="1" minOccurs="1"/> <xs:element type="xs:string" name="UserEmail" maxOccurs="1" minOccurs="1"/> <xs:element type="xs:string" name="UserCompany" maxOccurs="1" minOccurs="0"/> <xs:element type="xs:string" name="Comment" maxOccurs="1" minOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element>1 </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Items" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Item" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="ExternalCartItem" type="xs:string" maxOccurs="1" minOccurs="0"/> <xs:element name="ConfigurationId" type="xs:string" maxOccurs="1" minOccurs="0"/> <xs:element name="Quantity" type="xs:byte" maxOccurs="1" minOccurs="1" /> <xs:element name="CatalogueCode" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="ItemComments" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="ItemComment" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="UserFullName" type="xs:string"/> <xs:element name="UserEmail" type="xs:string"/> <xs:element name="UserCompany" type="xs:string"/> <xs:element name="Comment" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Properties"> <xs:complexType> <xs:sequence> <xs:element name="Property"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string"/> <xs:element name="Value" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Customers" minOccurs="1" maxOccurs="1"> <xs:complexType>

SAP CPQ API DocumentationSOAP API PUBLIC 305

<xs:sequence> <xs:element name="Customer" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="Id" type="xs:unsignedInt" minOccurs="0" maxOccurs="1" /> <xs:element name="ExternalId" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="FirstName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="LastName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Company" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Address1" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Address2" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="City" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="StateAbbrev" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="ZipCode" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CountryAbbrev" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="TerritoryName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="BusinessPhone" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="BusinessFax" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="EMail" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CRMAccountId" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CRMContactId" type="xs:string" minOccurs="0" maxOccurs="1" /> </xs:sequence> <xs:attribute type="xs:byte" name="CustomerRoleType"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute type="xs:byte" name="PREVENT_EMPTY_QUOTE"/> </xs:complexType> </xs:element> </xs:schema>

2.12.2 Output XML Schema - Request for Quotation

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element name="Status" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element name="Message" type="xs:string" maxOccurs="1" minOccurs="1" />

306 PUBLICSAP CPQ API Documentation

SOAP API

<xs:element name="QuoteStatus" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="QuotationNumber" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="QuoteLink" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="QuoteSSOLink" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Error" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="ErrorCode" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Description" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="NodeName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Value" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Sequence" type="xs:unsignedInt" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.12.3 Request for Quotation - Input Parameters

Tag Data Type Description Required Comments

Username String (50) Only SAP CPQ admin users can execute this function. SAP CPQ user is defined in SAP CPQ admin.

Yes SAP CPQ admin user­name

Password String (50) Only SAP CPQ admin users can execute this function. Password is defined in SAP CPQ admin.

Yes SAP CPQ admin pass­word for the admin username provided

Owner String (50) Quote owner. No If not provided, the previously defined username will be set as the owner.

Quote payload in XML format

XML XML Object Yes XML structure is shown below

SAP CPQ API DocumentationSOAP API PUBLIC 307

Data Definition for Request for Quotation Input XML

Field Name Description Type Size

ExternalId External quote ID Text 100

PromotionsSummary Summary details of all pro­motions given on the SAP Commerce side on quote and item level

Text 3000

PricingProcedureName Name of the pricing proce­dure used on the SAP Com­merce side to obtain price details for configurable prod­ucts

Text 100

DistributionChain Combination of sales organi­zation and distribution chan­nel

Text

Currency Currency of the specified market

Text 3

UserFullName Name of the user; Applies to both cart and item level com­ments;

Text 250

UserEmail Email address of the user; Applies to both cart and item level comments;

Text 250

UserCompany Company the user belongs to; Applies to both cart and item level comments;

Text 250

Comment Comment on cart and item level

Text 2000

CatalogueCode Catalog code Text 50

Quantity Item quantity Text 5

ConfigurationId External configuration ID rep­resenting Variant Configura-tion of a specific configurable item

Text 100

ExternalCartItem External quote item Text 50

CustomerRoleType 1 for Bill to Unsigned Byte

ExternalId Customer ID in SAP ERP Text 20

FirstName First name Text 100

LastName Last name Text 100

Company Company name Text 100

Address1 The first address Text 100

Address2 The second address Text 100

308 PUBLICSAP CPQ API Documentation

SOAP API

Field Name Description Type Size

City City Text 100

StateAbbrev Two-letter state abbreviation Text 2

ZipCode ZIP code Text 10

CountryAbbrev Three-character country/region abbreviation

Text 3

TerritoryName Territory name Text 100

BusinessPhone Phone number Text 100

BusinessFax Fax number Text 100

EMail Email address Text 100

CRMAccountId CRM account ID Text 100

CRMContactId CRM contact ID Text 100

Cart ? PRE­VENT_EMPTY_QUOTE

Attribute that prevents an empty quote; The attribute is optional.

Text 100

Property/Name Quote custom field (prop­erty) name

Text 50

Property/Value Quote custom field (prop­erty) value

Text 100

Input XML Example

<Cart PREVENT_EMPTY_QUOTE="1"> <ExternalId>000458</ExternalId> <PricingProcedureName>FX56R</PricingProcedureName> <PromotionsSummary>10% discount on all products</PromotionsSummary> <DistributionChain>USD_K3</DistributionChain> <Currency>USD</Currency> <CartComments> <CartComment> <UserFullName>Sandra Smith</UserFullName> <UserEmail>[email protected]</UserEmail> <UserCompany>Acme</UserCompany> <Comment>Comment on the cart level</Comment> </CartComment> </CartComments> <Items> <Item> <ExternalCartItem>1</ExternalCartItem> <ConfigurationId>94fefea8-93ef-4408-ac65-c454a89be23b</ConfigurationId> <Quantity>3</Quantity> <CatalogueCode>P-crr-911</CatalogueCode> <ItemComments> <ItemComment> <UserFullName>Sandra Smith</UserFullName> <UserEmail>[email protected]</UserEmail> <UserCompany>Acme</UserCompany> <Comment>Comment on the item level</Comment> </ItemComment>

SAP CPQ API DocumentationSOAP API PUBLIC 309

</ItemComments> </Item> <Item> <ExternalCartItem>2</ExternalCartItem> <ConfigurationId>94fefea8-93ef-4408-ac65-c454a89be23b</ConfigurationId> <Quantity>1</Quantity> <CatalogueCode>P-crr-911</CatalogueCode> <ItemComments> <ItemComment> <UserFullName>Sandra Smith</UserFullName> <UserEmail>[email protected]</UserEmail> <UserCompany>Acme</UserCompany> <Comment>Comment on the item level</Comment> </ItemComment> </ItemComments> </Item> </Items> </Cart>

2.12.4 Request for Quotation - Output Parameters

Tag Data Type Description Required Comments

Result XML This function will gen­erate XML document as result of the per­formed actions

Yes Result is always gener­ated

XML Data Definition

Element Name Data Type Description Required Comments

Result Y

Status String(10) OK if passed values are verified and place or­der action is executed, otherwise NOK

Y

Message String (500) Message generated by SAP CPQ

Y

QuoteStatus String(100) Current quote status N Only if placement is successful

QuotationNumber String(20) SAP CPQ system quo­tation number

N Only if placement is successful

QuoteLink String(100) Direct link to the SAP CPQ quote

Y Only if placement is successful

QuoteSSOLink String(100) Single-sign on link to the SAP CPQ quote

N Only if placement is successful

310 PUBLICSAP CPQ API Documentation

SOAP API

Element Name Data Type Description Required Comments

Error N If an error occurs, this node will contain info about it.

ErrorCode String(50) Error code Y

Description String(500) Error description mes­sage

Y

NodeName String(100) Name of the node that caused the error

N If applicable, this node will contain the name of the input XML node containing the invalid value

Value String(100) Value of the node that caused the error

N If applicable, this node will contain the invalid value that caused the error.

Sequence Unsigned Int Sequence number/ID of the item that caused the error

N Included only if appli­cable. If one of the items caused the error, the sequence will be the ordinal number of the item in the input XML. If one of the cus­tomers caused the er­ror, the sequence will be CustomerRoleType. If an invalid quote property was supplied, the sequence will con­tain the ordinal num­ber of the property in the input XML.

2.12.5 Result XML Examples - Request for Quotation

Example of successful quote creation:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>OK</Status> <Message>New Quote Created</Message> <QuoteStatus>Open</QuoteStatus> <QuotationNumber>000010000034</QuotationNumber> <QuoteLink>https://v60test.webcomcpq.com/Login.aspx?quote=CED2CECFC7</QuoteLink> <QuoteSSOLink>https://v60test.webcomcpq.com/sso/login.aspx?u=ghLanimluj64XgtspvrSZSYYPG6TG7Ja86t1m5yLilE=&d=webcomqa&quotenumber=00010108</QuoteSSOLink> </Result>

SAP CPQ API DocumentationSOAP API PUBLIC 311

Example of invalid catalog code (part number) in the first item in the input XML:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>NOK</Status> <Message>Quote is not created</Message> <Error> <ErrorCode>101001</Description> <Description>Invalid part number</Description> <NodeName>CatalogueCode</NodeName> <Value>A4541V</Value> <Sequence>1</Sequence> </Error> </Result>

Example of missing shipping method in the input XML:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>NOK</Status> <Message>Quote is not created</Message> <Error> <ErrorCode>101002</ErrorCode> <Description>Required field Shipping method is missing</Description> <NodeName>ShippingMethod</NodeName> </Error> </Result>

Example of invalid customer ID supplied in the input XML:

<?xml version="1.0" encoding="utf-8" ?> <Result> <Status>NOK</Status> <Message>Quote is not created</Message> <Error> <ErrorCode>101003</ErrorCode> <Description>Supplied customer id is not found in CPQ db</Description> <NodeName>Customer/Id</NodeName> <Sequence>1</Sequence> </Error> </Result>

Example of invalid ZIP code for Ship to customer:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>NOK</Status> <Message>Quote is not created</Message> <Error> <ErrorCode>101003</ErrorCode> <Description>Zip code is invalid</Description> <NodeName>ZipCode</NodeName> <Sequence>2</Sequence> </Error> </Result>

Example of invalid quote property:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>NOK</Status> <Message>Quote is not created</Message> <Error> <ErrorCode>101003</ErrorCode>

312 PUBLICSAP CPQ API Documentation

SOAP API

<Description>Unkonwn quote property ‘Some Property’</Description> <NodeName>Property</NodeName> <Sequence>2</Sequence> </Error> </Result>

2.13 Search Quotes SOAP API

Function name: SearchQuotes

Function description: this method enables the external system to retrieve quotes from SAP CPQ based on provided search criteria. This method is only available if SAP CPQ user account that is used to make a call is set as an administrative account. The maximum number of quotes that can be returned is 2000.

Parameters:

● Username = CPQUsername#CPQDomainName● Password = CPQPassword● SearchCriteriaXML = XML used to define quotes that are returned

Authentication: SOAP API authentication [page 376]

Input XML Document

<Root> <SearchCriteria>Criteria for search</SearchCriteria> </Root>

NoteSearchCriteriaXML sent as a part of SOAP request body needs to be wrapped with <![CDATA[]]>, so for example the input stated above needs to be phrased like this: <![CDATA[<Root> <SearchCriteria>Criteria for search</SearchCriteria></Root>]]>

Examples:

● DATE_MODIFIED > '8/3/2011 13:50:20'Returns all quotes that have been modified after this date/time

● DATE_CREATED > '9/24/2011 00:00:00'Returns all quotes that have been created after this date/time

● DATE_MODIFIED > '8/3/2011 13:50:20' AND ORDER_STATUS = '2'Returns all quotes that have been modified after this date/time that are in status ‘Order Placed’

If Criteria for search is empty, SAP CPQ will return all quotes (top 2000 quotes).

SAP CPQ API DocumentationSOAP API PUBLIC 313

Result XML Document

2.14 Search Quotes from SF SOAP API

Function name: SearchQuotesFromSF

Function description: this method enables external system to retrieve quotes from SAP CPQ based on provided search criteria in the same way as SearchQuotes with the difference that authentication is done with data received from Salesforce (session ID and API URL). This method is only available if SAP CPQ user account that is used to make call is set as administrative account. Maximum number of quotes that can be returned is 2000.

314 PUBLICSAP CPQ API Documentation

SOAP API

Parameters:

● DomainName = SAP CPQ domain name● SFSessionId = Salesforce Session ID (used to log in to Salesforce API)● SFAPIUrl = Salesforce API URL (used to log in to Salesforce API)● SearchCriteriaXML = XML used to define quotes that are returned

Authentication: SOAP API authentication [page 376]

Input XML Document

<Root> <SearchCriteria>Criteria for search</SearchCriteria> </Root>

Examples:

● DATE_MODIFIED > '8/3/2011 13:50:20'Returns all quotes that have been modified after this date/time

● DATE_CREATED > '9/24/2011 00:00:00'Returns all quotes that have been created after this date/time

● DATE_MODIFIED > '8/3/2011 13:50:20' AND ORDER_STATUS = '2'Returns all quotes that have been modified after this date/time that are in status ‘Order Placed’

If Criteria for search is empty, SAP CPQ will return all quotes (top 2000 quotes).

SAP CPQ API DocumentationSOAP API PUBLIC 315

Result XML Document

2.15 New Quote SOAP API

NewQuote function creates a quote, billing info, shipping info, end user info, quote properties, sets attributes, calculates shipping method and saves the quote. Also, it optionally links and maps newly created quote with CRM opportunity. The method also supports creation of parent/child systems in a quote.

● API parameters username/password identifies the API user● Owner API parameter defines username of the owner of a newly created quote

316 PUBLICSAP CPQ API Documentation

SOAP API

● Based on ItemPrice XML node system will calculate discounts and check for discounting rules on main items only - not for line items

Related Information

SOAP API Authentication [page 376]

2.15.1 New Quote - Input Parameters

Tag Data Type Description Required Comments

Username String (50) Only SAP CPQ administrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administrator username.

Password String (50) Only SAP CPQ administrators can execute this function. Password is defined in SAP CPQ Setup.

Yes SAP CPQ administrator password for the administrator username provided in the username element.

Owner String (50) Username of the quote owner.

Yes If not provided, username will be the owner of the quote.

XML XML XML Object Yes XML structure is shown below.

Data Definition for New Quote Input XML

Field Name Description Simple Data Type Size

MarketCode Code of the market USD Text 25

PricebookCode Code of the pricebook USD Default Text 100

ShippingMethod Name of the shipping method

FedEx International Priority

Text 100

ShippingPrice Price for the shipping method

125 Text 10

TaxExempt Tax exempt 1 Boolean 3

SAP CPQ API DocumentationSOAP API PUBLIC 317

Field Name Description Simple Data Type Size

Possible values: True, False, 1, 0

Text 1000

CartComment Cart comment Text 50

PromoCode Promo code TRUE Unsigned Byte

CRM/[ApplyMappings]

“1” for “Yes/True”

0 for “No/False” (Default if omitted)

CRM/OpportunityId

CRM Opportunity Id. This field will be populated only in case of Siebel CRM and Salesforce integrations.

892ADE6756HIX Text 50

CRM/OpportunityName

CRM Opportunity name. This field will be populated only in case of Siebel CRM and Salesforce integrations.

“TEST OPPORTUNITY”

Text 250

Items/Item Item node

Quantity Item Quantity 1 Text 5

CatalogueCode Catalog Code A2223B Text 50

ProductName Product Name A screwdriver +, type 1 Text 255

ItemPrice the Net Price of an item

100 Text 10

Items/Item/Attributes/Attribute

Atrribute node

Name Attribute name SerialNumber Text 50

Value Attribute value, if the attribute type is on the following list. For other display types, use value code instead.

DisplayOnlyText

FreeFormMatchLower

FreeFormMatchUpper

HiddenCalculatedMatchUpper

SN1234 Text 50

318 PUBLICSAP CPQ API Documentation

SOAP API

Field Name Description Simple Data Type Size

HiddenCalculatedMatchLower

FreeInputNoMatching

HiddenCalculatedNoMatching

ConfigControl

FreeFormSetMatchLower

FreeFormSetMatchUpper

FreeFormExactMatch

FreeFormExactMatchWOtherwiseOption

AutoCompleteCustomTable

AutoCompleteQuoteTable

Button

FileAttachment

Property/Name Cart custom field (property) name

Project Code Text 50

Property/Value Cart custom field (property)Value

555 Text 100

Customers/Customer Customer node

[CustomerRoleType]

1 for Bill to

2 for Ship to

3 for End user

1 Unsigned Byte

Id ID from SAP CPQ 12345 Text 20

ExternalId External ID (not from SAP CPQ)

1 Text 20

FirstName First Name Harry Text 100

LastName Last Name Bruce Text 100

SAP CPQ API DocumentationSOAP API PUBLIC 319

Field Name Description Simple Data Type Size

Company Company Name SAP Text 100

Address1 The first address 8601 RR 2222 Text 100

Address2 The second address xxx Text 100

City City Austin Text 100

StateAbbrev State (2 chars) TX Text 2

ZipCode Zip Code 78730 Text 10

CountryAbbrev Country/Region (3 chars)

USA Text 3

TerritoryName Territory Name North America Text 100

BusinessPhone Phone Number Text 100

BusinessFax Fax Number Text 100

EMail Email address Text 100

CRMAccountId CRM Contact ID Text 100

CRMContactId CRM Account ID Text 100

Cart → PREVENT_EMPTY_QUOTE

Attribute to prevent empty quote. This attribute is optional.

Text 100

2.15.1.1 New Quote - Input XML Example

<?xml version="1.0" encoding="utf-8"?> <Cart PREVENT_EMPTY_QUOTE="1"> <MarketCode>USD</MarketCode> <PricebookCode>USD_Default</PricebookCode> <ShippingMethod></ShippingMethod> <ShippingPrice>1</ShippingPrice> <TaxExempt>0</TaxExempt> <CartComment></CartComment> <PromoCode>A223344</PromoCode> <Crm ApplyMappings="1"> <OpportunityId>892ADE6756HIX</OpportunityId> <OpportunityName>Test opportunity</OpportunityName> </Crm> <Items> <Item> <Quantity>1</Quantity> <ProductName>A screwdriver +, type 1</ProductName> <CatalogueCode>A2223B</CatalogueCode> <ItemPrice>100</ItemPrice> <Attributes> <Attribute> <Name>ExampleName</Name> <Value>100</Value> <Value>101</Value> </Attribute> </Attributes> </Item>

320 PUBLICSAP CPQ API Documentation

SOAP API

<Item> <Quantity>2</Quantity> <ProductName>A screwdriver -, type 1</ProductName> <CatalogueCode>A4541V</CatalogueCode> <ItemPrice>120</ItemPrice> <Attributes> <Attribute> <Name>ExampleName</Name> <Value>100</Value> </Attribute> <Attribute> <Name>OtherExampleName</Name> <Value>161</Value> </Attribute> </Attributes> </Item> </Items> <Properties> <Property> <Name>GP Order Number</Name> <Value></Value> </Property> <Property> <Name>Project Code</Name> <Value></Value> </Property> </Properties> <Customers> <Customer CustomerRoleType="1"> <Id></Id> <ExternalId></ExternalId> <FirstName>Harry</FirstName> <LastName>Bruce</LastName> <Company>Procter &amp; Gamble Company, The</Company> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail> <CRMAccountId>0036000000Kq8eU</CRMAccountId> <CRMContactId>0016000000F0qvQ</CRMContactId> </Customer> <Customer CustomerRoleType="2"> <Id></Id> <ExternalId></ExternalId> <FirstName>Harry</FirstName> <LastName>Bruce</LastName> <Company>Procter &amp; Gamble Company, The</Company> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail> <CRMAccountId>0036000000Kq8eU</CRMAccountId> <CRMContactId>0016000000F0qvQ</CRMContactId> </Customer> <Customer CustomerRoleType="3"> <Id></Id>

SAP CPQ API DocumentationSOAP API PUBLIC 321

<ExternalId></ExternalId> <FirstName>Harry</FirstName> <LastName>Bruce</LastName> <Company>Procter &amp; Gamble Company, The</Company> <Address1>Procter &amp; Gamble Plaza</Address1> <Address2></Address2> <City>Cincinnati</City> <StateAbbrev>OH</StateAbbrev> <ZipCode>45402</ZipCode> <CountryAbbrev>US</CountryAbbrev> <TerritoryName></TerritoryName> <BusinessPhone>(513) 698-6421</BusinessPhone> <BusinessFax>(513) 983-4381</BusinessFax> <EMail></EMail> <CRMAccountId>0036000000Kq8eU</CRMAccountId> <CRMContactId>0016000000F0qvQ</CRMContactId> </Customer> </Customers> </Cart>

An example of XML containing parent-child configurations in quote is provided below. Consider the following scenario:

You want to send parent item with container and child item configuration via XML. There are attributes that are present both on parent and child items, and are set to transfer from parent to child via container column. Attribute is set to be propagated from parent to child and XML has that attribute stated only on parent product.

When quote is created, only parent product would have that attribute selected. But, if child product is edited, propagation would be done and attribute would be selected on child product as well. So, in order to have the desired configuration state in the quote, you should select all attributes via XML both on parent and child configurations.

<?xml version="1.0" encoding="utf-8"?> <Cart> <MarketCode>USD</MarketCode> <Crm ApplyMappings="0"> <OpportunityId>0006500243422</OpportunityId> <OpportunityName>Test opportunity</OpportunityName> </Crm> <Items> <Item> <Quantity>1</Quantity> <ProductName>Parent</ProductName> <ItemPrice>100.00</ItemPrice> <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>1&lt;2&lt;a href="#"&gt;'test"&lt; &gt;&lt;/a&gt;</Value> </Attribute>

322 PUBLICSAP CPQ API Documentation

SOAP API

<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> <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>

SAP CPQ API DocumentationSOAP API PUBLIC 323

</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> </Columns> </Row> </Rows> </Attribute> </Attributes> </Product> <Columns> <Column> <Name>ProductContainer</Name> <Value></Value> </Column> <Column> <Name>Monitor</Name> <Value>T17</Value> </Column> <Column> <Name>Hard disk</Name> <Value>60GB</Value> </Column> <Column> <Name>Processor</Name> <Value></Value> </Column> <Column> <Name>SomeAttribute</Name> <Value>222</Value> </Column> </Columns> </Row> <Row> <Product> <Name>Nested-First</Name> <CatalogCode>PN-SMB10</CatalogCode> <Attributes> <Attribute> <Name>Memory</Name> <Value>16GB</Value> </Attribute> <Attribute>

324 PUBLICSAP CPQ API Documentation

SOAP API

<Name>Warranty</Name> <Value>dddd</Value> </Attribute> </Attributes> </Product> <Columns> <Column> <Name>SomeAttribute</Name> <Value>222</Value> </Column> <Column> <Name>doesNotExist</Name> <Value>someValue</Value> </Column> </Columns> </Row> </Rows> </Attribute> <Attribute> <Name>NonProductContainer</Name> <Rows> <Row> <Columns> <Column> <Name>Test1</Name> <Value>bbbbb</Value> </Column> <Column> <Name>Test2</Name> <Value>C2</Value> </Column> </Columns> </Row> <Row> <Columns> <Column> <Name>Test1</Name> <Value>iiii</Value> </Column> <Column> <Name>Test2</Name> <Value>A3</Value> </Column> </Columns> </Row> </Rows> </Attribute> </Attributes> </Item> </Items> <Properties> </Properties> <Customers> </Customers> </Cart>

Tips and Tricks

When users are using SOAP 1.2. for calls to our API they may get an “object null reference error.” This can happen because the SOAP 1.2. propagates the namespace from the SOAP envelope. To avoid this error for now, users should put an empty namespace in the root node. An example is provided in the following text.

<Cart xmlns="">

SAP CPQ API DocumentationSOAP API PUBLIC 325

<MarketCode>USD</MarketCode> <ShippingMethod>Standard Shipping</ShippingMethod> <Crm><OpportunityId>testing</OpportunityId></Crm> <Items> <Item> <Quantity>1</Quantity> <ProductName>A screwdriver +, type 1</ProductName> <CatalogueCode>000123456789</CatalogueCode> </Item> </Items> <Properties /> <Customers /> </Cart>

2.15.2 New Quote - Output Parameters

Tag Data Type Description Reqiored Comments

Result XML This function will generate XML document as result of the performed actions

Yes Result is always generated

XML Definition

Element Name Data Type Description Required Comments

Result Y

Status String(10) OK if passed values are verified and place order action is executed, otherwise NOK

Y

Message String (500) Message generated by SAP CPQ

Y

QuoteStatus String(100) Current quote status N Only if placement successful

QuotationNumber String(20) SAP CPQ system quotation number

N Only if placement successful

QuoteLink String(100) Direct link to the SAP CPQ quote

Y Only if placement successful

QuoteSSOLink String(100) Single-sign on link to the SAP CPQ quote

N Only if placement successful

Error N If any error occurs this node will contain info about it.

326 PUBLICSAP CPQ API Documentation

SOAP API

Element Name Data Type Description Required Comments

ErrorCode String(50) Error code Y

Description String(500) Error description message

Y

NodeName String(100) Name of a node that caused the error

N If applicable, this node will contain name of the input XML node that hold invalid value

Value String(100) Value of the node that caused the error

N If applicable, this node will contain invalid value that caused the error.

Sequence Unsigned Int Sequence number/Id of the item that caused the error

N Included only if applicable. If the cause is in one of the Items, then sequence will be the ordinal number of the item in the input XML. (zero-based) If the cause is in one of the Customers then sequence will be CustomerRoleType. If an invalid quote property was supplied, sequence will hold ordinal number of property in the input XML.

2.15.3 Result XML Examples

Example for the successful quote creation:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>OK</Status> <Message>New Quote Created</Message> <QuoteStatus>Open</QuoteStatus> <QuotationNumber>000010000034</QuotationNumber> <QuoteLink>https://v60test.webcomcpq.com/Login.aspx?quote=CED2CECFC7</QuoteLink> <QuoteSSOLink>https://v60test.webcomcpq.com/sso/login.aspx?u=ghLanimluj64XgtspvrSZSYYPG6TG7Ja86t1m5yLilE=&d=webcomqa&quotenumber=00010108</QuoteSSOLink> </Result>

Example for the invalid Catalog code (part number) in the first item in the input XML:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>NOK</Status>

SAP CPQ API DocumentationSOAP API PUBLIC 327

<Message>Quote is not created</Message> <Error> <ErrorCode>101001</Description> <Description>Invalid part number</Description> <NodeName>CatalogueCode</NodeName> <Value>A4541V</Value> <Sequence>1</Sequence> </Error> </Result>

Example for the missing shipping method in the input XML:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>NOK</Status> <Message>Quote is not created</Message> <Error> <ErrorCode>101002</ErrorCode> <Description>Required field Shipping method is missing</Description> <NodeName>ShippingMethod</NodeName> </Error> </Result>

Example for the invalid customer Id supplied in input XML:

<?xml version="1.0" encoding="utf-8" ?> <Result> <Status>NOK</Status> <Message>Quote is not created</Message> <Error> <ErrorCode>101003</ErrorCode> <Description>Supplied customer id is not found in CPQ db</Description> <NodeName>Customer/Id</NodeName> <Sequence>1</Sequence> </Error> </Result>

Example for the invalid ZIP code for Ship to customer:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>NOK</Status> <Message>Quote is not created</Message> <Error> <ErrorCode>101003</ErrorCode> <Description>Zip code is invalid</Description> <NodeName>ZipCode</NodeName> <Sequence>2</Sequence> </Error> </Result>

Example for the invalid quote property:

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>NOK</Status> <Message>Quote is not created</Message> <Error> <ErrorCode>101003</ErrorCode> <Description>Unkonwn quote property ‘Some Property’</Description> <NodeName>Property</NodeName> <Sequence>2</Sequence> </Error> </Result>

328 PUBLICSAP CPQ API Documentation

SOAP API

2.15.4 New Quote Details

<MarketCode >

● If this field is missing, quote’s owner’s default market will be used for the quote.● If this field is supplied, the value found in XML has to match one of the market codes in the SAP CPQ

system.● If the match is not found, the quote will not be created and the result sent to the API caller will contain the

reason for the API call’s failure.

<ShippingMethod>

● This field is required● Value found in XML has to match one of the valid shipping methods from SAP CPQ system.● If the match is not found, the quote will not be created and the result sent to the API caller will contain the

reason for the API call’s failure.

<ShippingPrice>

● This field is not required● If this node is empty or not found, cpq will provide the shipping price based on the shipping method

specified in the node <ShippingMethod>.● If this node is found and is not empty, the numeric value written in the node will be used as shipping price.

If the value is not numeric, the quote will not be created and the result sent to the API caller will contain the reason for the API call’s failure. If the shipping price is found to be 0, the shipping price will be set to zero without further calculations.

<TaxExempt>

● This field is not required● It can have following values: 0, 1, true, false● If node is missing, or it doesn’t have one of the values above, it will be considered to be false (or 0)● If the node of the value is 0 or false, the tax calculated for the created quote will be included in the total

price.● If the node of the value is 1 or true, the tax calculated for the created quote will not be included to the total

price.

<CartComment>

● This field is not required.● The value written in this node will be saved as created quote’s comment.

<PromoCode>

● This field is not required● If this field exists and is not empty, the value written in this node has to be a valid promo code. Valid promo

codes are kept in SAP CPQ database.● If this field exists and is not empty, the value written in this node has to be a valid promo code. Valid promo

codes are kept in SAP CPQ database.

<Crm>

● This node, is optional, but if present, then it must have its children populated.● (Attribute) ApplyMappings – This attribute is optional. If omitted, default is false. This attribute is

intended for users to choose if they want to execute CRM mappings when linking opportunity to newly

SAP CPQ API DocumentationSOAP API PUBLIC 329

created quote. If this is set to true, CRM mappings would be executed. If false, the quote will only be linked to opportunity, without any data exchange between SAP CPQ and CRM system in any direction.

<OpportunityId>

● This field is required if it is contained in Crm node (which is optional – this means that Crm node, along with this child of it can be omitted from the input XML, but if Crm node is present, this node is a required node.

● Id from the CRM opportunity. If supplied, the quote will be attached to the opportunity on the CPQ side. But field mappings will not be done by default. Attribute called ApplyMappings needs to be set to true, if caller wants CRM mappings to be executed. In this case, complete mappings are executed, and all needed data is exchanged between SAP CPQ and CRM. Note that this option results in slower API requests, since additional communication needs to be done between SAP CPQ and CRM. If network errors occur, this can also lead to API call failures. If this call to CRM fails for any reason, new quote won't be created, and the API caller will get NOK result XML which will contain error that CRM system reported. If ApplyMappings attribute is set to “false” or omitted from input XML, mappings won't be executed, and the API caller is responsible to maintain data integrity between SAP CPQ quotes and CRM opportunities. All fields which get copied from opportunity to quote won't get copied, so API caller must provide them manually via new quote input XML. This option is however, faster than when mappings are executed. Please note that CRM mappings need an CRM administrative account set up in SAP CPQ in order to be executed. So if you use this option, and if the account is not set up, API call will fail, and you will be notified about error, in result xml.

<OpportunityName>

● This node is optional. If supplied, opportunity name will be populated when likning quote to opportunity. Please note that, when ApplyMappings attribute is set to “1”, the opportunity name node will be ignored, and the opportunity name will be populated while doing mappings. (It will be downloaded from CRM).

<Items>

● All nodes labeled <Item> found under <Items> will be added to the quote● If reverse search for any of the items catalogue codes returns negative result, the quote will not be created.

<Item> n <Quantity>

● This is required field.● The value of this node has to be numeric, otherwise the quote will not be created and the result sent to the

API caller will contain the reason for the API call’s failure.● The value written in this node will be applied to the main configuration item● Additional configuration items will have quantities that are set up as default quantities for these attributes

in product’s model administration.● If in the product’s model administration the quantity of main configuration item is set up to be applied to

additional configuration items, the value of this node will be multiplied with default quantities for additional configuration items.

n <CatalogueCode>

● This is required field.● SAP CPQ will perform the reverse search based on this catalogue code.● If the appropriate product model is found based on the catalogue code, SAP CPQ will add main and

additional configuration items (if any) for this product model to the quote.● If no product model is found based on the catalogue number, the quote will not be created and the result

sent to the API caller will contain the reason for the API call’s failure.

330 PUBLICSAP CPQ API Documentation

SOAP API

n <ItemPrice>

● This field is not required.● If this field is not found or is empty, the product model configuration price will be calculated by the

appropriate formula defined for this product model in administration. In the created quote, default discounts will be applied to main and additional configuration items.

● If this field has numeric value that will be the price in the quote for this product model. The product model configuration price will be calculated by the appropriate formula defined for this product model in administration. In the created quote, default discounts will be applied to additional configuration items. For main configuration item, discount will be calculated based on the value written in this node. Formula used for calculating discount for main configuration item: (<ItemPrice> - sum(discounted additional conf. items)) / (price for main conf. item from product model)

n <Attributes>

● This field is not required.● If this node is supplied, attributes for the item will be set as given in the input xml. This will change the

product configuration, which may turn to an incomplete product after change.

<Attribute>-:$ <Name> n

● This field is required.● The field represents the attribute name.● If there is no attribute in item with given name, quote will not be created, and the API call will fail and the

result will contain the reason for API call's failure.

<Value>

● This field is required● If the attribute has several values, each one that needs to be set should be set in the separate value XML

tag.● The field is used to set a value to an attribute with given name● If the attribute is not a free form attribute, and the value is not found to be valid for that attribute, the API

call will fail and the result will contain the reason for API call's failure.

<Properties> * <Property> o <Name> n

● This field is required.● This field represents the strong name defined in SAP CPQ administration for some quote property.● If the value of this node does not correspond to some of the strong names defined for the owner of the

created quote, the quote will not be created and the result sent to the API caller will contain the reason for the API call’s failure.

● to add a quote with the date in a format different from user's date format, use the two attributes DateFormat and DateSeparator and enter the date format in uppercase:

Properties DateFormat="ddmmyyyy" DateSeparator="/"> <Property> <Name>DATE</Name> <Value>2020-10-19</Value> </Property>

o <Value> n

● This field is required.● The value of this node will be saved for the quote property with the strong name in the node <Name>.

SAP CPQ API DocumentationSOAP API PUBLIC 331

<Customers>

● <Customer CustomerRoleType=“1”>-:$Before a customer is added to a quote, a lookup is performed in order to find out if such a customer already exists in the SAP CPQ system.Search is performed first by looking if the SAP CPQ customer's ID is present in input XML. (Node “ID”). If there is a customer with a supplied ID, that customer will be used. If this ID is supplied wrong, the API call will fail, resulting in a message about the error that occurred. If SAP CPQ customer's ID is not present in input XML (since it is not a required node), then the External customer's ID is searched (if present). It is contained in the “ExternalId” node in input XML. This node is intended to uniquely identify customers by using their IDs from an external system that has integration with SAP CPQ. SAP CPQ customers have that ID stored in the “customer code” field in the database. If “ExternalId” node is present in input XML, then customers are searched by this ID. If a match is found, this customer is used by API. If this search fails, API call will fail, and the caller will get the error message describing the problem.The flow for customer lookup according to their ID or external ID is presented in the following text:1. First, SAP CPQ looks up an active local customer with the provided ID/External ID. If such a customer

exists in the system, they are retrieved.2. If a customer with the provided ID/External ID doesn't exist in the system, SAP CPQ looks up an active

global customer with the provided ID/External ID. Global customer visibility is taken into consideration in this scenario. If a customer with the provided ID/External ID exists and is visible to the lookup performer, they are retrieved.

3. If a customer with the provided ID/External ID doesn't exist in the system or isn't visible to the lookup performer, SAP CPQ checks if the customer with the provided ID/External ID is an active local customer of another user. Local customer visibility is taken into consideration in this scenario. If a customer with the provided ID/External ID exists and is visible to the lookup performer, they are retrieved.

NoteIf a customer is looked up according to their external ID, and more than one customer has an identical external ID, the first customer in the list is retrieved.

This ExternalId is not required, and when not supplied, customers are being searched by combination of first name, last name, company and address1. The search is case insensitive. If a customer is found, it will be used. Otherwise, if there’s no SAP CPQ customer with this combination of first name and last name, a new Customer will be created for that quote, using the supplied data. In any of these searches, if multiple records are found, the API will use the first one that database engine returns. Therefore, it is recommended not to use ambiguous customers identification in SAP CPQ system. Note that it is recommended to use Ids or ExternalIds since identification just by First name and Last name can cause to creation of many new customers over relatively small period of time, if there are many mismatches during customers searching.

● (attribute) CustomerRoleType – defines customer role for this customer (1 is for ‘Bill To’, 2 is for ’Ship To’ and 3 is for ‘End User’).All customer roles that are used in the system have to be defined in the XML, otherwise the quote will not be created and the result sent to the API caller will contain the reason for the API call’s failure.

<Id>

● Not required.

<ExternalId>

● Not required.

332 PUBLICSAP CPQ API Documentation

SOAP API

<FirstName>

● Required.

<LastName>

● Required.

<Company>

● Not required.

<Address1>

● Required.

<Address2>

● Not required.

<City>

● Required.

<StateAbbrev>

● Required.● Two letter abbreviation for one of the States defined in SAP CPQ Setup. If supplied value is not recognized

as valid two letter state abbreviation the quote will not be created and the result sent to the API caller will contain the reason for the API call’s failure.

<ZipCode>

● Required.

<CountryAbbrev>

● Required.● Three letter country/region abbreviation for one of the Countries/Regions defined in SAP CPQ Setup. If

supplied value is not recognized as valid three letter country/region abbreviation the quote will not be created and the result sent to the API caller will contain the reason for the API call’s failure.

<TerritoryName>

● Not required.● If supplied it should contain a name of a defined Territory in SAP CPQ Setup. If the value is not recognized

as valid Territory name the quote will not be created and the result sent to the API caller will contain the reason for the API call’s failure.

<BusinessPhone>

● Not required.

<BusinessFax>

● Not required.

<Email>

● Required.● This field should contain valid email address. If the value is not valid email address the quote will not be

created and the result sent to the API caller will contain the reason for the API call’s failure.

SAP CPQ API DocumentationSOAP API PUBLIC 333

<CRMAccountId>

● Not required.

<CRMContactId>

● Not required.

2.15.5 New Quote - Execution Flow

1. API Cart is deserialized from input XML This will break if input XML is not valid XML.2. API Cart is checked if it contains all required fields This will brake if API Cart (input XML) is missing some

required filed.3. New Current Cart is created – it’s empty.4. Current Cart Market is set based on MarketCode field from API Cart API call will fail if MarketCode field in

API Cart has a value not recognized as SAP CPQ defined market.5. All Properties from API Cart will be added to Current Cart. If a property is not recognized API call will fail.6. For each Customer for API Cart, a search is performed on saved SAP CPQ customers. If match found that

customer will be added to Current Cart. If no match is found a new Customer will be created based on data from API Cart. If searching by either SAP CPQ or External ID, and if that search fails, API call will fail.

7. If Crm/OpportunityId node is present, and if Crm node has ApplyMappings attribute set to true, CRM mappings OnQuoteCreate/Update with direction CRM → SAP CPQ will be executed. Values from CRM are downloaded to SAP CPQ quote. If mapping function fails, the API call will fail, too. Newly created quote will be deleted, and the caller will get the error message describing what happened. If Crm node has no ApplyMapping attribute present, or if attribute is set to “0” (false), this step will not be executed at all.

8. For each item in API Cart a reverse search will be performed. If search fails API call will fail too. If search is successful a new item will be added to Current Cart. It will have default discounts set. If item's catalog code reverses to an incomplete configuration, and cart owner's group doesn't allow incomplete configurations to be stored, API call will fail, and the caller will be notified of error.

9. For each item and for each of it's attributes that are given values in XML, the values will be set. If attribute has an invalid name for that item, or if attribute has an invalid value, the API call will fail. Setting Attributes for items can lead to incomplete configurations. If configuration is incomplete, and quote owner user belongs to a group that is set not to be able to create quotes with incomplete configurations, API call will fail, and the user will get an error message about it.

10. If PromoCode is found in API Cart it will be checked and if valid special discounts will be applied to Current Cart items. This will overwrite default discounts. If PromoCode is invalid API call will fail.

11. Shipping method in Current Cart will be selected as specified by ShippingMethod field from API Cart. If such shipping method is not available the API call will fail. ShippingCost from API Cart is set to Current Cart.

12. For each item in API Cart, if ItemPrice is available, discount of corresponding Main item in Current Cart will be recalculated to match the specified price in API Cart. This will not affect additional line items, if any, of that item – just the main item discount. This will overwrite previously set discounts (default or promo code discounts). This may exceed allowed discount.

13. If CRM Crm/OpportunityId node is present in input XML, SAP CPQ quote will be linked with CRM opportunity. Additionally, if Crm node has ApplyMappings node present, and set to “1” (true), mappings OnQuoteCreate/Update with direction SAP CPQ → CRM will be executed. Values from SAP CPQ quote are uploaded to CRM. If mapping function fails for some reason, API call will fail, the newly created quote

334 PUBLICSAP CPQ API Documentation

SOAP API

will be deleted, and the caller will get an error message describing what happened. If ApplyMappings node is not present, or if it is set to “0” (false), mappings won't be executed. The quote will be only linked to opportunity, without any mappings. If Optional OpportunityName node is present, in the case when no mappings are executed, opportunity name will be populated from this node.

14. The quote is saved

● Alternative Flows – API Call failures● Input XML is invalid XML● Input XML does not contain all required fields● Supplied MarketCode is not valid SAP CPQ Market code● Unrecognized quote property strong name● Invalid Zip code supplied in input Customer● Invalid PartNumber is supplied● Invalid attribute name is supplied● Invalid attribute value is supplied● Invalid PromoCode is supplied● Invalid customer Id is supplied● Supplied ShippingMethod is not available● CRM mappings failed due to communication or other error type

2.15.6 Input XML Schema - New Quote

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Cart"> <xs:attribute name="PREVENT_EMPTY_QUOTE" type="xs:integer" use="optional"/> <xs:complexType> <xs:sequence> <xs:element name="MarketCode" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ShippingMethod" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="ShippingPrice" minOccurs="0" maxOccurs="1" type="xs:decimal" /> <xs:element name="TaxExempt" type="yesno" minOccurs="0" maxOccurs="1" /> <xs:element name="CartComment" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="PromoCode" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Crm" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="OpportunityId" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="OpportunityName" type="xs:string" minOccurs="0" maxOccurs="1" /> </xs:sequence> <xs:attribute name="ApplyMappings" type="yesno" use="required" /> </xs:complexType> </xs:element> <xs:element name="Items" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">

SAP CPQ API DocumentationSOAP API PUBLIC 335

<xs:complexType> <xs:sequence> <xs:element name="Quantity" type="xs:decimal" maxOccurs="1" minOccurs="1" /> <xs:element name="CatalogueCode" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="ProductName" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="ItemPrice" type="xs:decimal" minOccurs="0" maxOccurs="1" /> <xs:element name="Attributes" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="Attribute" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Value" type="xs:string" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Properties" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Property" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Value" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Customers" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="3" name="Customer" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Id" type="xs:unsignedInt" minOccurs="0" maxOccurs="1" /> <xs:element name="ExternalId" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="FirstName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="LastName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Company" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Address1" type="xs:string" minOccurs="0" maxOccurs="1" />

336 PUBLICSAP CPQ API Documentation

SOAP API

<xs:element name="Address2" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="City" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="StateAbbrev" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="ZipCode" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CountryAbbrev" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="TerritoryName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="BusinessPhone" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="BusinessFax" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="EMail" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CRMAccountId" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="CRMContactId" type="xs:string" minOccurs="0" maxOccurs="1" /> </xs:sequence> <xs:attribute name="CustomerRoleType" type="customerRole" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="yesno"> <xs:restriction base="xs:string"> <xs:enumeration value="0" /> <xs:enumeration value="1" /> <xs:enumeration value="true" /> <xs:enumeration value="false" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="customerRole"> <xs:restriction base="xs:string"> <xs:enumeration value="1" /> <xs:enumeration value="2" /> <xs:enumeration value="3" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.15.7 Output XML Schema - New Quote

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element name="Status" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element name="Message" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="QuoteStatus" type="xs:string" maxOccurs="1" minOccurs="0" />

SAP CPQ API DocumentationSOAP API PUBLIC 337

<xs:element name="QuotationNumber" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="QuoteLink" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="QuoteSSOLink" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Error" maxOccurs="1" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="ErrorCode" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="Description" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="NodeName" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Value" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Sequence" type="xs:unsignedInt" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.15.8 Login after API Quote Creation

This feature allows you to log in to SAP CPQ after quote has been created through API without having to enter un/pass/domain name. This is a single-sign on functionality when SAP CPQ is integrated with external system.

NewQuote API method generates 2 new nodes in result XML:

● QuoteLink○ This node is always a part of result XML when quote has been successfully created.○ This node contains link to the login page. In its query string there will be an encrypted quote name.

When users are redirected to this link, they will have to enter un/pass/domain in order to enter quote.○ Example: https://v60test.webcomcpq.com/Login.aspx?quote=CED2CECFC7

● QuoteSSOLink○ This node is a part of result XML when quote has been successfully created and if application

paremeter ‘Send Single Sign On Link to the Quote as result of NewQuote API method’ is set to TRUE○ This node contains link to the single-sign on page. In its query string there will be a quote number that

is not encrypted, domain name and username encrypted in standard way for single-sign on functionality. When users are redirected to this link, they won’t have to enter username/password/domain in order to enter quote. Instead, they will be automatically redirected to the quote (if correct parameters have been passed on to SSO login page).

○ Example for content of the node: https://dev.webcomcpq.com/sso/login.aspx?u=ghLanimluj64XgtspvrSZSYYPG6TG7Ja86t1m5yLilE=&d=webcomqa&quotenumber=00010108

338 PUBLICSAP CPQ API Documentation

SOAP API

Example for the result XML:

<?xml version="1.0" encoding="utf-8"?> <Result><Status>OK</Status><Message>New Quote Created</Message><QuoteStatus>Open</QuoteStatus><QuotationNumber>00010108</QuotationNumber><QuoteLink>https://v60test.webcomcpq.com/Login.aspx?quote=CED2CECFC7</QuoteLink><QuoteSSOLink>https://v60test.webcomcpq.com/sso/login.aspx?u=ghLanimluj64XgtspvrSZSYYPG6TG7Ja86t1m5yLilE=&d=webcomqa&quotenumber=00010108</QuoteSSOLink> </Result>

2.16 Place Order SOAP API

PlaceOrder function creates a quote, billing info, shipping info, end user info, quote properties, calculates shipping method and executes SAP CPQ place order action.

Place order has the same effect as a call to NewQuote to create a new quote and a call to PerformCartAction to execute Place Order action. It has the same prototype (input and output) as NewQuote method. Refer to New Quote SOAP API [page 316] for more details.

● API parameters username/password identifies the API user● Owner API parameter defines username of the owner of a newly created quote● Based on ItemPrice XML node system will calculate discounts and check for discounting rules on main

items only - not for line items● If the discount is overridden and user may override the discount then the quote will be created but 'place

order' action will not be executed

Related Information

SOAP API Authentication [page 376]

2.16.1 Place Order - Input Parameters

Tag Data Type Description Required Comments

Username String (50) Only SAP CPQ admin users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administrator username

SAP CPQ API DocumentationSOAP API PUBLIC 339

Tag Data Type Description Required Comments

Password String (50) Only SAP CPQ admin users can execute this function. Password is defined in SAP CPQ Setup.

Yes SAP CPQ administrator password for the administrator username provided in the username element.

Owner String(50) Username of the quote owner

No If not provided, Username will be the owner of the quote.

XML XML XML Object Yes

Refer toNew Quote SOAP API [page 316] for input and output description

2.16.2 Place Order - Execution Flow

1. NewQuote method is called. If NewQuote method fails, PlaceOrder method will fail too.2. Each item in new quote is checked if it exceeds discount. If discount is exceeded API call will fail, but the

quote will be created.3. If any product in the generated quote is an incomplete product, the place order API call will fail, but the

quote will be created.4. The PlaceOrder workflow action is checked if available. If it’s not available API call will fail.5. Place Order action is called if available in workflow. Email notification is sent to quote owner and owner's

ordering parent, saying that the order is placed.

2.16.3 XML Schema - Place Order

PlaceOrder web method has the same input and output schema as NewQuote web method [page 317].

2.17 Validate Catalogue Codes SOAP API

ValidateCatalogueCodes function executes reverse search on supplied part numbers.

Result of this function is validity status for each supplied catalogue code. If code is valid, result will also contain product name and item list price.

● API parameters username/password identifies the API user● Maximum number of catalog codes per one call is limited to 5 in order to obtain optimal function and

system resources usability.

340 PUBLICSAP CPQ API Documentation

SOAP API

Related Information

SOAP API Authentication [page 376]

2.17.1 Validate Catalogue Codes - Input Parameters

Tag Data Type Description Required Comments

Username String (50) Only SAP CPQ admin users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administrator user name

Password String (50) Only SAP CPQ administrators can execute this function. Password is defined in SAP CPQ Setup.

Yes SAP CPQ password for the administrator user name provided in the username element

ValidateCatalogueCodesXML

XML Object Passing Company Data

Yes XML structure is shown below

Field Name Description Sample Data Type Size

CatalogueCode A catalog code to validate

A-22-C4 Text 250

Input XML Example

<?xml version="1.0" encoding="utf-8"?> <CatalogueCodes> <CatalogueCode>A2223A</CatalogueCode> <CatalogueCode>A2223B</CatalogueCode> <CatalogueCode>A2223C</CatalogueCode> </CatalogueCodes>

2.17.2 Validate Catalogue Codes – Output Parameters

Tag Data Type Description Required Comments

Result XML This function will generate XML document as result of the performed actions,

Yes Result is always generated.

SAP CPQ API DocumentationSOAP API PUBLIC 341

XML definition

Element Name Data Type Description Required Comments

Result Y

Item Node that contains catalog code validation results

Y

Status String (50) Valid or Invalid Y

Sequence Number Sequence of the catalog code

Y Ordinal number if the CatalogueCode from the input XML

CatalogueCode String(200) Supplied catalog code Y A catalog code being validated

ProductName String(100) Name of the product N Only if catalog code is valid

ItemPrice Number Item List Price N Only if catalog code is valid. Nondiscounted List Price of the item with such catalog code.

2.17.3 Result XML Examples

Example for one valid and one invalid CatalogueCode.

<?xml version="1.0" encoding="utf-8"?> <Result> <Item> <Status>Valid</Status> <Sequence>1</Sequence> <CatalogueCode>A2223A</CatalogueCode> <ProductName>Tablet PC X20</ProductName> <ItemPrice>2345</ItemPrice> </Item> <Item> <Status>Invalid</Status> <Sequence>2</Sequence> <CatalogueCode>A2223B</CatalogueCode> </Item> </Result>

2.17.4 Input XML Scheme - Validate Catalogue Codes

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="CatalogueCodes">

342 PUBLICSAP CPQ API Documentation

SOAP API

<xs:complexType> <xs:sequence> <xs:element maxOccurs="5" name="CatalogueCode" type="xs:string" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.17.5 Output XML Scheme - Validate Catalogue Codes

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Item" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Status" type="validInvalid" maxOccurs="1" minOccurs="1" /> <xs:element name="Sequence" type="xs:unsignedInt" maxOccurs="1" minOccurs="1" /> <xs:element name="CatalogueCode" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element minOccurs="0" name="ProductName" type="xs:string" maxOccurs="1" /> <xs:element minOccurs="0" name="ItemPrice" type="xs:decimal" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="validInvalid"> <xs:restriction base="xs:string"> <xs:enumeration value="Valid" /> <xs:enumeration value="Invalid" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.18 Get Cart Properties SOAP API

GetCartProperties function returns values for specified quote properties.

If no quote property is explicitly specified values of all properties will be returned.

● API parameters username/password identifies the API user

SAP CPQ API DocumentationSOAP API PUBLIC 343

Related Information

SOAP API Authentication [page 376]

2.18.1 Get Cart Properties - Input Parameters

Tag Data Type Description Required Comments

Username String (50) Only SAP CPQ administrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administrator user name

Password String (50) Only SAP CPQ administrators can execute this function. Password is defined in SAP CPQ Setup.

Yes SAP CPQ administrator password for the administrator user name provided in the username element

QuotationNumber String (20) System quotation number

Yes System quotation number of a cart to get properties of

Properties Array Array of properties string names to retrive

No If null or empty all properties will be retured

2.18.2 Get Cart Properties – Output Parameters

Tag Data Type Description Required Comments

Result XML This function will generate XML document as result of the performed actions.

Yes Result is always generated.

Output XML definition

Element Name Data Type Description Required Comments

Result Y

344 PUBLICSAP CPQ API Documentation

SOAP API

Element Name Data Type Description Required Comments

Status String (50) NOK N Appears if an error has occurred (invalid login, unknown quote…)

Message String(1000) Error message N Only if NOK Status It holds error description

Properties N Only if OK Node that contains all required properties

Property N Only if OK Node that contains info about one of required properties.

StringName String(100) String name of the property

Y Name that identifies a property system wide.

Label String(100) Label of the property Y Label that describes a property.

Value String(2000) Value of the property Y

Status String (50) NOK N Appears in Property tag if supplied strong name is not recognized.

Message String(1000) Error message N Only if NOK It holds error description: “Unknown string name”

2.18.3 Result XML Examples

Example for two valid string names:

<Result> <Properties> <Property> <StrongName>GPQuotationNumber</StrongName> <Label>GP Quotation#</Label> <Value>123456</Value> </Property> <Property> <StrongName>QuotationName</StrongName> <Label>Quote Name</Label> <Value>Test Quote</Value> </Property> </Properties> </Result>

Example for one valid and one invalid string name:

<Result> <Properties>

SAP CPQ API DocumentationSOAP API PUBLIC 345

<Property> <StrongName>GPQuotationNumber</StrongName> <Label>GP Quotation#</Label> <Value>123456</Value> </Property> <Property> <StrongName>QuotationName</StrongName> <Status>NOK</Status> <Message>Unknown property</Message> </Property> </Properties> </Result>

Example for response for non-existing quote:

<Result> <Status>NOK</Status> <Message>Unknown quote 0012300456</Message> </Result>

Example for response for invalid login:

<Result> <Status>NOK</Status> <Message>Invalid login</Message> </Result>

2.18.4 Output XML Schema - Get Cart Properties

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element name="Status" type="oknok" minOccurs="0" maxOccurs="1" /> <xs:element name="Message" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Properties" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Property" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="StrongName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element minOccurs="0" name="Status" type="oknok" maxOccurs="1" /> <xs:element minOccurs="0" name="Message" type="xs:string" maxOccurs="1" /> <xs:element minOccurs="0" name="Label" type="xs:string" maxOccurs="1" /> <xs:element minOccurs="0" name="Value" type="xs:string" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence>

346 PUBLICSAP CPQ API Documentation

SOAP API

</xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.19 Get Cart Actions SOAP API

GetActionList gets the available actions for given quote and for supplied username, based on quote’s status. This method is a part of existing SAP CPQ API.

● API parameters username/password identifies the API user.

Related Information

SOAP API Authentication [page 376]

2.19.1 Get Action List – Output parameters

Tag Data Type Description Required Comments

Result XML This function will generate XML document wit list of available actions

Yes Result is always generated

XML definition

XML Definition

Element Name Data Type Description Required Comments

Result

Result String (50) OK or NOK Y If OK, API call is performed successfully If NOK an error has occurred.

SAP CPQ API DocumentationSOAP API PUBLIC 347

Element Name Data Type Description Required Comments

Reason String(200) Error message Y Empty if no error occurred.

Action String(50) Action name Y Name of the action that can be performed on quote.

2.19.2 Get Action List - Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only SAP CPQ users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes Username of API use

Password String (25) Only SAP CPQ users can execute this function. Password is defined in SAP CPQ Setup.

Yes Password of API user

OrderID Number (8) Order# (8-digit number)

Yes SAP CPQ System quotation number

2.19.3 Output XML Schema - Get Action List

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RESULT"> <xs:complexType> <xs:sequence> <xs:element name="RESULT" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="REASON" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element maxOccurs="unbounded" name="ACTION" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.19.4 Result XML Examples

Example for successful API call:

<RESULT>

348 PUBLICSAP CPQ API Documentation

SOAP API

<RESULT>OK</RESULT> <REASON> </REASON> <ACTION>Copy</ACTION> <ACTION>Delete</ACTION> <ACTION>Edit</ACTION> <ACTION>View</ACTION> </RESULT>

Example for non-successful API call:

<RESULT> <RESULT>NOK</RESULT> <REASON>Reason why...</REASON> </RESULT>

2.20 Perform Cart Action SOAP API

PerformCartAction performs a workflow action.

Based on the workflow setup certain actions may not be able to be performed by certain users or while a cart (quote, order, and so on) is in a certain status. This method is a part of existing SAP CPQ API.

● API parameters username/password identifies the API user.

Related Information

SOAP API Authentication [page 376]

2.20.1 Perform Cart Action - Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only SAP CPQ users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes Username of API user

Password String (25) Only SAP CPQ users can execute this function. Password is defined in SAP CPQ Setup.

Yes Password of API user

compositeCartId Number (8) Order# (8-digit number)

Yes SAP CPQ System quotation number

SAP CPQ API DocumentationSOAP API PUBLIC 349

Tag Data Type Description Required Comments

erpId String(255) Not Used No This field is kept for backwards compatibility purpose - it is ignored today

ActionXML XML Action description Yes It is recommended to obtain a list of available actions using GetActionList API call prior to executing an action using this function (PerformCartAction).

NoteParameters for custom actions are not suppported in the Perform Cart Action Web Method. Parameters are used only for a few standard actions that need parameters (Accept Proposal, Change Status, Create Partial Order and Order Status Update). In most cases, the parameter is the status.

Input XML Definition

Element Name Data Type Description

Action/Name Tag containing action name

Name of the SAP CPQ Workflow action

Action/Parameters Additional parameters One node for each action parameter

NoteThe Reassign action is not supported by API.

Input XML Example

<ACTION> <NAME>Change Status</NAME> <PARAMETER name="NewStatus">Order Placed</PARAMETER> </ACTION>

350 PUBLICSAP CPQ API Documentation

SOAP API

<COMMENTS> Node Details

Only the Accept Proposal action supports sending comments, while the other three actions (Change Status, Create Partial Order and Order Status Update) do not.

<CommentSource>

● The node is not required and refers to the system from which the comment originates (SAP Commerce Cloud, SAP CLM or SAP CPQ).

<CartComments>

● The <UserFullName> subnode is required.● The <UserEmail> subnode is required.● The <UserCompany> subnode is optional.● The <Comment> subnode refers to the comment on the quote level and is optional. However, if the subnode

is provided empty, the comment will not be saved.

<ItemComments>

● The <ItemId> subnode refers to the quote item ID in SAP CPQ and is required.● The <UserFullName> subnode is required.● The <UserEmail> subnode is required.● The <UserCompany> subnode is optional.● The <Comment> subnode refers to the comment on the item level and is optional. However, if the subnode

is provided empty, the comment will not be saved.

Input XML Example with <COMMENTS> Node

<?xml version="1.0" encoding="utf-8"?> <ACTION> <NAME>Accept Proposal</NAME> <ORDER_ID>123456</ORDER_ID> <EXTERNAL_QUOTE_STATUS>Ordered</EXTERNAL_QUOTE_STATUS> <COMMENTS> <CommentSource>SAP Commerce Cloud</CommentSource> <CartComments> <CartComment> <UserFullName>Sandra Smith</UserFullName> <UserEmail>[email protected]</UserEmail> <UserCompany>Acme</UserCompany> <Comment>Comment on the Cart Level</Comment> </CartComment> </CartComments> <ItemComments> <ItemComment> <ItemId>4280</ItemId> <UserFullName>Sandra Smith</UserFullName> <UserEmail>[email protected]</UserEmail> <UserCompany>Acme</UserCompany> <Comment>Comment on the item level</Comment> </ItemComment> </ItemComments> </COMMENTS> </ACTION>

SAP CPQ API DocumentationSOAP API PUBLIC 351

2.20.2 Perform Cart Action – Output Parameters

Tag Data Type Description Required Comments

Result XML This function will generate XML document as result of the performed actions

Yes Result is always generated

XML definition

Element Name Data Type Description Required Comments

Result Y

Result String (50) OK or NOK Y If OK action is performed successfully If NOK an error has occurred.

Reason String(200) Error message Y Empty if no error occurred.

Status String(100) String(100)

Order status name Y Name of the order status the cart is in after the action is performed.

COMPOSITENUMBER String(100) Cart composite number

N Cart composite number of the quote on which the action is performed.

2.20.3 Result XML Examples

Example for successful action execution:

<RESULT> <RESULT>OK</RESULT> <REASON> </REASON> <STATUS>CM Order receipt</STATUS> </RESULT>

Example for non-successful action execution:

<RESULT> <RESULT>NOK</RESULT> <REASON>Reason why...</REASON> <STATUS>Disty PO</STATUS> </RESULT>

352 PUBLICSAP CPQ API Documentation

SOAP API

2.20.4 Input XML Schema - Perform Cart Action

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="ACTION"> <xs:complexType> <xs:sequence> <xs:element name="NAME" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="PARAMETER" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="name" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Input XML Schema with <COMMENTS> Node

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="ACTION"> <xs:complexType> <xs:sequence> <xs:element name="NAME" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="PARAMETER" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="name" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ORDER_ID" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="EXTERNAL_QUOTE_STATUS" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="COMMENTS" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="CommentSource" minOccurs="1" maxOccurs="1" /> <xs:element name="CartComments" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="CartComment" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="UserFullName" minOccurs="1" maxOccurs="1" /> <xs:element type="xs:string" name="UserEmail" minOccurs="1" maxOccurs="1" />

SAP CPQ API DocumentationSOAP API PUBLIC 353

<xs:element type="xs:string" name="UserCompany" minOccurs="0" maxOccurs="1" /> <xs:element type="xs:string" name="Comment" minOccurs="1" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ItemComments" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="ItemComment" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element type="xs:short" name="ItemId" minOccurs="1" maxOccurs="1" /> <xs:element type="xs:string" name="UserFullName" minOccurs="1" maxOccurs="1" /> <xs:element type="xs:string" name="UserEmail" minOccurs="1" maxOccurs="1" /> <xs:element type="xs:string" name="UserCompany" minOccurs="0" maxOccurs="1" /> <xs:element type="xs:string" name="Comment" minOccurs="1" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.20.5 Output XML Schema - Perform Cart Action

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RESULT"> <xs:complexType> <xs:sequence> <xs:element name="RESULT" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="REASON" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="STATUS" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

354 PUBLICSAP CPQ API Documentation

SOAP API

2.21 Add Items Data SOAP API

AddItemsDataWebMethod adds/updates quote/order item(s) data.

Each order item can have quantity greater than 1. In order to add individual data for quantity each for item (serial #, tracking #, license #,…). Item sequence is used to identify data records for quantity each. Not all tags have to be included. Only tags containing data will be evaluated.

Related Information

SOAP API Authentication [page 376]

2.21.1 Add Items Data - Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only SAP CPQ users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes Username of API user

Password String (25) Only SAP CPQ users can execute this function. Password is defined in SAP CPQ Setup.

Yes Password of API user

OrderID Number (8) Order# (8-digit number)

Yes SAP CPQ System quotation number

ERPOrderID String (255) External System (ERP) Order Number assigned to the SAP CPQ OrderID

No

ItemObjects XML Object passing Item(s) Data

Yes The Items Object XML structure is shown below

SAP CPQ API DocumentationSOAP API PUBLIC 355

ItemObjects XML definition

Element Name Data Type Description Required Comments

ItemObjects Only SAP CPQ users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes

ItemObject There will be one ItemObject node for each Item on the order function. Password is defined in SAP CPQ Setup.

Yes If Order has 3 Items, there will be 3 <ItemObject> nodes

ItemID Number (5) Order Item Number Yes

ItemDetail String (255) There will be one ItemDetail node for each quantity for the Item

Yes If the Item qty is 5, there will be 5 <ItemDetail> nodes

ItemSequence Number (8) Item Sequence Number

Yes

SerialNumberEach

String (255) (Phantom/SubItem) Serial Number

No

TrackingNumber String (255) Tracking Number No

TrackingURL String (255) Tracking URL No

EstimatedShipDate

Date Estimated Ship Date No

ActualShipDate Date Actual Ship Date No

LicenseKeyNumber

String (255) License Key Assigned to the Item Sequence Level (Phantom/SubItem)

No

MiscItemDetail01

String (255) Miscellaneous Data Element for Item Detail level

No

MiscItemDetail02

String (255) Miscellaneous Data Element for Item Detail level

No

MiscItemDetail03

String (255) Miscellaneous Data Element for Item Detail level

No

MiscItemDetail04

String (255) Miscellaneous Data Element for Item Detail level

No

356 PUBLICSAP CPQ API Documentation

SOAP API

Element Name Data Type Description Required Comments

MiscItemDetail05

String (255) Miscellaneous Data Element for Item Detail level

No

Input XML Example

<ItemObjects> <ItemObject> <ItemID>1</ItemID> <ItemDetail> <ItemSequence>6845</ItemSequence> <SerialNumberEach> WEBKD982</SerialNumber> <TrackingNumber>1Z0E35F4M375139076</TrackingNumber> <TrackingURL> http://wwwapps.ups.com/etracking/tracking.cgi?TypeOfInquiryN umber=T&AcceptUPSLicenseAgreement=yes&InquiryNumber1=1Z0E35F4M3751 39076 </TrackingURL> <EstimatedShipDate>02/15/2007</EstimatedShipDate> <ActualShipDate>02/12/2007</ActualShipDate> <LicenseKeyNumber> ABC-333-DEF-4546YUZ </LicenseKeyNumber> </ItemDetail> <ItemDetail> <ItemSequence>0240</ItemSequence> <SerialNumberEach> UIE65432</SerialNumber> <TrackingNumber>1Z0E35F4M37763189076</TrackingNumber> <TrackingURL> http://wwwapps.ups.com/etracking/tracking.cgi?TypeOfInquiryN umber=T&AcceptUPSLicenseAgreement=yes&InquiryNumber1=1Z0E35F4M3776 3189076 </TrackingURL> <EstimatedShipDate> 02/15/2007</EstimatedShipDate> <ActualShipDate>02/12/2007</ActualShipDate> <LicenseKeyNumber></LicenseKeyNumber> </ItemDetail> </ItemObject> <ItemObject> <ItemID>2</ItemID<ItemDetail> <ItemSequence>0320</ItemSequence> <SerialNumberEach> WER56432</SerialNumber> <TrackingNumber>1Z0E35F4M39433489076</TrackingNumber> <TrackingURL> http://wwwapps.ups.com/etracking/tracking.cgi?TypeOfInquiryN umber=T&AcceptUPSLicenseAgreement=yes&InquiryNumber1=1Z0E35F4M3943 3489076 </TrackingURL> <EstimatedShipDate>01/29/2007</EstimatedShipDate> <ActualShipDate>02/26/2007</ActualShipDate> <LicenseKeyNumber> </LicenseKeyNumber> </ItemDetail> </ItemObject> </ItemObjects>

SAP CPQ API DocumentationSOAP API PUBLIC 357

2.21.2 Input XML Schema - Add Items Data

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="ItemObjects"> <xs:complexType> <xs:sequence> <xs:element name="ItemObject" minOccurs="1" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:choice maxOccurs="unbounded" minOccurs="1"> <xs:element name="ItemID" type="xs:unsignedInt" maxOccurs="1" minOccurs="1" /> <xs:element name="ItemDetail" maxOccurs="1" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="ItemSequence" type="xs:unsignedInt" maxOccurs="1" minOccurs="1" /> <xs:element name="SerialNumberEach" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="TrackingNumber" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="TrackingURL" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="EstimatedShipDate" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="ActualShipDate" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="LicenseKeyNumber" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element minOccurs="0" name="MiscItemDetail01" type="xs:string" maxOccurs="1" /> <xs:element minOccurs="0" name="MiscItemDetail02" type="xs:string" maxOccurs="1" /> <xs:element minOccurs="0" name="MiscItemDetail03" type="xs:string" maxOccurs="1" /> <xs:element minOccurs="0" name="MiscItemDetail04" type="xs:string" maxOccurs="1" /> <xs:element minOccurs="0" name="MiscItemDetail05" type="xs:string" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

358 PUBLICSAP CPQ API Documentation

SOAP API

2.21.3 Output XML Schema - Add Items Data

Output XML Definition

Element Name Data Type Description Required Comments

Result XML Y

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RESULT"> <xs:complexType> <xs:sequence> <xs:element name="RESULT" type="oknok" maxOccurs="1" minOccurs="1" /> <xs:element name="REASON" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

XML Description

<RESULT> <RESULT>OK or NOK new status applied</RESULT> <REASON> NOK error description otherwise empty</REASON> </RESULT>

2.22 Perform Quote Action SOAP API

performQuoteAction performs any action on a quote.

Based on the Workflow setup certain actions may not be able to be performed by certain users or while a quote is in a certain status.

● API parameters username/password identifies the API user.

Related Information

SOAP API Authentication [page 376]

SAP CPQ API DocumentationSOAP API PUBLIC 359

2.22.1 Perform Quote Action – Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only SAP CPQ users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes Username of API user

Password String (25) Only SAP CPQ users can execute this function. Password is defined in SAP CPQ Setup.

Yes Password of API user

OrderID Number (8) Order# (8-digit number)

Yes SAP CPQ System quotation number

ERPOrderID String (255) External System (ERP) Order Number assigned to the SAP CPQ OrderID

No

XML XML XML Object Yes

Data Definition for Perform Quote Action input XML

Element Name Data Type Description Required Comments

Action/Name Tag containing action name

Y Name of the SAP CPQ Workflow action

Action/Parameters Additional parameters N One node for each action parameter

Input XML Example

<?xml version="1.0" encoding="utf-8"?> <ACTION> <NAME>Change Status</NAME> <PARAMETER name="NewStatus">Order placed</PARAMETER> </ACTION>

360 PUBLICSAP CPQ API Documentation

SOAP API

2.22.2 Perform Quote Action – Output Parameters

Tag Data Type Data Type Description Required Comments

Result XML This function will generate XML document as result of the performed actions.

Yes Result is always generated

2.22.3 Result XML Examples

Example for successful action execution:

<RESULT> <RESULT>OK</RESULT> <REASON> </REASON> <STATUS>CM Order receipt</STATUS> </RESULT>

Example for non-successful action execution:

<RESULT> <RESULT>NOK</RESULT> <REASON>Reason why...</REASON> <STATUS>Disty PO</STATUS> </RESULT>

2.22.4 Input XML Schema - Perform Quote Action

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="ACTION"> <xs:complexType> <xs:sequence> <xs:element name="NAME" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="PARAMETER" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="name" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

SAP CPQ API DocumentationSOAP API PUBLIC 361

2.22.5 Output XML Schema - Perform Quote Action

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RESULT"> <xs:complexType> <xs:sequence> <xs:element name="RESULT" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="REASON" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="STATUS" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

2.23 Perform Quote Action From SF SOAP API

PerformQuoteActionFromSF performs any action on a quote in SalesForce.

Based on the Workflow setup certain actions may not be able to be performed by certain users or while a quote is in a certain status.

● API parameter username identifies user● API parameters sessionID and url are received from SalesForce● API parameter domain identifies domain under which the quote is created● API parameter opportunityId identifies opportunity where the quote belongs to

Related Information

SOAP API Authentication [page 376]

2.23.1 Perform Quote Action From SF – Input Parameters

Tag Data Type Description Required Comments

Domain String (50) SAP CPQ Domain where user belongs to.

Yes Name of SAP CPQ domain

362 PUBLICSAP CPQ API Documentation

SOAP API

Tag Data Type Description Required Comments

Username String (50) Only SAP CPQ users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes Username of API user

SessionID String (8) Session ID received from SalesForce.

Yes

Url String (255) URL received from SalesForce.

Yes

OrderID String (8) Unique order quote number

Yes SAP CPQ System quotation number

OpportunityID String (255) Opportunity under which quote is created.

Yes

XML XML XML Object Yes

Data Definition for Perform Quote Action From SF Input XML

Element Name Data Type Description Required Comments

Action/Name Tag containing action name

Y Name of the SAP CPQ Workflow action

Action/Parameters Additional parameters N One node for each action parameter

Input XML Example

<?xml version="1.0" encoding="utf-8"?> <ACTION> <NAME>CHANGE STATUS</NAME> <PARAMETER name="NewStatus">CM Order receipt</PARAMETER> </ACTION>

SOAP Request Sample

<?xml version=“1.0” encoding=“utf-8”?> <soap:Envelope xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=“http://www.w3.org/2001/XMLSchema”><soap:Body><performQuoteActionFromSF xmlns=“http://webcominc.com/”><domainName>testCPQDomainName</domainName>

SAP CPQ API DocumentationSOAP API PUBLIC 363

<userName>SalesforceUserName</userName><sessionId>00DW0000000WWWW!AQ4AQGDD6zof6rXz3LmE1fW2SDhh7RG__0tKfFlYHK6a9BX7XdGVO5T2hzY6tV1.1R3eRyQFaxjLkzPtvMO8CKo7gZPKf35W</sessionId><url>https://c.cs13.visual.force.com/services/Soap/u/16.0/00DW0000000WWWW</url><compositeCartId>00020085</compositeCartId><opportunityId>008900000011W7L</opportunityId><strDoc>&lt;ACTION&gt;&lt;NAME&gt;CHANGE STATUS&lt;/NAME&gt;&lt;PARAMETER name=“NewStatus”&gt;Open&lt;/PARAMETER&gt;&lt;/ACTION&gt;</strDoc></performQuoteActionFromSF></soap:Body></soap:Envelope><?xml version=“1.0” encoding=“utf-8”?><soap:Envelope xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=“http://www.w3.org/2001/XMLSchema”><soap:Body><performQuoteActionFromSF xmlns=“http://webcominc.com/”><domainName>testCPQDomainName</domainName><userName>SalesforceUserName</userName><sessionId>00DW0000000WWWW!AQ4AQGDD6zof6rXz3LmE1fW2SDhh7RG__0tKfFlYHK6a9BX7XdGVO5T2hzY6tV1.1R3eRyQFaxjLkzPtvMO8CKo7gZPKf35W</sessionId><url>https://c.cs13.visual.force.com/services/Soap/u/16.0/00DW0000000WWWW</url><compositeCartId>00020085</compositeCartId><opportunityId>008900000011W7L</opportunityId><strDoc>&lt;ACTION&gt;&lt;NAME&gt;CHANGE STATUS&lt;/NAME&gt;&lt;PARAMETER name=“NewStatus”&gt;Open&lt;/PARAMETER&gt;&lt;/ACTION&gt;</strDoc></performQuoteActionFromSF></soap:Body> </soap:Envelope>

2.23.2 Perform Quote Action From SF – Output Parameters

Tag Data Type Description Required Comments

Result XML This function will generate XML document as result of the performed actions

Yes Result is always generated

2.23.3 Result XML Examples

Example for successful action execution:

<RESULT> <RESULT>OK</RESULT> <REASON> </REASON> <STATUS>CM Order receipt</STATUS> </RESULT>

Example for non-successful action execution:

<RESULT> <RESULT>NOK</RESULT> <REASON>Reason why...</REASON> <STATUS>Disty PO</STATUS>

364 PUBLICSAP CPQ API Documentation

SOAP API

</RESULT>

2.23.4 Input XML Schema - Perform Quote Action From SF

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="ACTION"> <xs:complexType> <xs:sequence> <xs:element name="NAME" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="PARAMETER" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="name" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.23.5 Output XML Schema - Perform Quote Action From SF

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RESULT"> <xs:complexType> <xs:sequence> <xs:element name="RESULT" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="REASON" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="STATUS" type="xs:string" maxOccurs="1" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="oknok"> <xs:restriction base="xs:string"> <xs:enumeration value="OK" /> <xs:enumeration value="NOK" /> </xs:restriction> </xs:simpleType> </xs:schema>

SAP CPQ API DocumentationSOAP API PUBLIC 365

2.24 Set Cart Properties SOAP API

SetCartProperties sets/updates custom fields of a quote.

● API parameters username/password identifies SAP CPQ user● OrderID identifies quote

Related Information

SOAP API Authentication [page 376]

2.24.1 Set Cart Properties - Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only SAP CPQ users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes Username of API user

Password String (25) Only SAP CPQ users can execute this function. Password is defined in SAP CPQ Setup.

Yes Password of API user

OrderID String (8) Order# Yes SAP CPQ System quotation number

ERPOrderID String (255) External System (ERP) Order Number assigned to the SAP CPQ OrderID

No

XML XML XML Object Yes

Data Definition for Set Cart Properties input XML

Field Name Description Sample Data Type Size

CartProperty/Name Name of the custom field

1W before Quote Expiration Date

Text 100

366 PUBLICSAP CPQ API Documentation

SOAP API

Field Name Description Sample Data Type Size

CartProperty/Value Value of the custom field

11/2/2011 Text 100

Input XML Example

<?xml version="1.0" encoding="utf-8"?> <CartProperties> <CartProperty> <Name>1W before Quote Expiration Date</Name> <Value>11/2/2011</Value> </CartProperty> </CartProperties>

2.24.2 Set Cart Properties - Output Parameters

Tag Data Type Description Required Comments

Result XML This function will generate XML document as result of the performed actions

Yes Result is always generated

2.24.3 Input XML Schema - Set Cart Properties

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="CartProperties"> <xs:complexType> <xs:element name="CartProperty" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Value" type="xs:string" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:complexType> </xs:element> </xs:schema>

SAP CPQ API DocumentationSOAP API PUBLIC 367

2.24.4 Output XML Schema - Set Cart Properties

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element name="Properties"> <xs:complexType> <xs:sequence> <xs:element name="Property"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="StrongName"/> <xs:element type="xs:string" name="Status"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.25 Set Cart Properties For Every Quote In Opportunity SOAP API

SetCartPropertiesForEveryQuoteInOpportunity performs setting/updating of custom fields for every quote in the opportunity by using setCartProperties web method.

● API parameter username identifies user● API parameters sessionId and url are received from SalesForce● API parameter domain identifies domain under which the quotes are created● API parameter opportunityId identifies opportunity where the quotes belong to

Related Information

SOAP API Authentication [page 376]

368 PUBLICSAP CPQ API Documentation

SOAP API

2.25.1 Set Cart Properties For Every Quote In Opportunity - Input Parameters

Tag Data Type Description Required Comments

Domain String (50) SAP CPQ domain where user and quotes belong to.

Yes Name of SAP CPQ domain

Username String (20) Only SAP CPQ users can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes Username of API user

SessionID String (8) Session ID received from SalesForce.

Yes

URL String (255) URL received from SalesForce.

Yes

OrderID String (8) Unique order quote number

Yes SAP CPQ System quotation number

OpportunityID String (255) Opportunity under which quotes are created.

Yes

XML XML XML Object Yes

Data Definition for Set Cart Properties For Every Quote In Opportunity input XML

Field Name Description Sample Data Type Size

CartProperty/Name Name of the custom field

1W before Quote Expiration Date

Text 100

CartProperty/Value Value of the custom field

11/2/2011 Text 100

Input XML Example

<?xml version="1.0" encoding="utf-8"?> <CartProperties> <CartProperty> <Name>1W before Quote Expiration Date</Name> <Value>11/2/2011</Value> </CartProperty> </CartProperties>

SAP CPQ API DocumentationSOAP API PUBLIC 369

2.25.2 Set Cart Properties For Every Quote In Opportunity - Output Parameters

Tag Data Type Description Required Comments

Result XML This function will generate XML document as result of the performed actions.

Yes Result is always generated

2.25.3 Input XML Schema - Set Cart Properties For Every Quote In Opportunity

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="CartProperties"> <xs:complexType> <xs:element name="CartProperty" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:element name="Value" type="xs:string" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:complexType> </xs:element> </xs:schema>

2.26 Set Cart Item Properties SOAP API

SetCartItemProperties updates the value of custom fields on your quote items.

To call this method you must provide an input XML, which should follow this pattern:

<CartItems> <CartItem> <CartItemGuid>7c65d5af-d404-4fd7-bb8f-d5dc297faec0</CartItemGuid> <CartItemCustomFields> <CartItemCustomField> <Name>Sample_Cart_Item_CF</Name> <Value>This was edited externally. Via API</Value> </CartItemCustomField> </CartItemCustomFields> </CartItem> </CartItems>

● API parameters username/password identify the API user

370 PUBLICSAP CPQ API Documentation

SOAP API

● API parameter cart composite number identify the quote● API parameter cart revision identify quote revision

You must provide Guid for each quote item and name of each custom field (See previous XML example) to be able to call this function properly. To find Guid you can call function GetQuoteData, providing quote composite number. This function will return quote XML where you can find (among other information) Guids that you need.

The Name node must contain the name of the custom field.

The Value node must contain the value you want to send.

Related Information

SOAP API Authentication [page 376]

2.26.1 Set Cart Item Properties - Result XML

Tag Data Type Description Required Comments

Result XML This function will generate XML document as result of the performed actions

Yes Result is always generated

Sample XML Response - No Error

<Result> <CartItem guid="7c65d5af-d404-4fd7-bb8f-d5dc297faec0"> <CartItemCustomField name="Sample_Cart_Item_CF"> <Status>OK</Status> <Message></Message> </CartItemCustomField> </CartItem> </Result>

Sample XML Response - Wrong Cart Item Guid Provided

If you provide a wrong cart item guid through input XML, SAP CPQ will not be able to find the appropriate quote item field and an error XML will be returned

<Result> <Status>NOK</Status> <Message>Cart Item Custom Field is null or empty</Message>

SAP CPQ API DocumentationSOAP API PUBLIC 371

</Result>

Sample XML Response - Wrong Custom Field Name Provided

If you provide a wrong name for custom field (non existing custom field name) through input XML, SAP CPQ will not be able to find it and an error XML will be returned. In this example, we provided name Sample_Cart_Item_FC instead of Sample_Cart_Item_CF

<Result> <CartItem guid="7c65d5af-d404-4fd7-bb8f-d5dc297faec0"> <CartItemCustomField name="Sample_Cart_Item_FC"> <Status>NOK</Status> <Message>Cart Item Custom field not found</Message> </CartItemCustomField> </CartItem> </Result>

2.26.2 Set Cart Item Properties - Input Parameters

Set Cart Item Properties - Input parameters.

Tag Data Type Description Required Comments

username String Only SAP CPQ administrators can execute this function. SAP CPQ user is defined in SAP CPQ Setup.

Yes SAP CPQ administrator user name

password String Only SAP CPQ administrators can execute this function. Password is defined in SAP CPQ Setup.

Yes SAP CPQ administrator password for the administrator user name provided in the username element

cartCompositeNumber

String Cart composite number.

Yes System quotation number of a cart to get properties of

revNumrevNum Integer or Null Cart revision number. No If null, active revision will be returned

372 PUBLICSAP CPQ API Documentation

SOAP API

2.27 Create New Quote and Get Quote Data SOAP API

CreateNewQuoteAndGetQuoteData creates a quote with the following items: provided products, information, sets attributes, saves quote and returns quote details and attributes.

It can create billing info, shipping info, calculate shipping method, end-user info, quote properties, links and maps, newly created quote with CRM opportunity.

Related Information

SOAP API Authentication [page 376]

2.27.1 Create New Quote and Get Quote Data - Input Parameters

● API parameters username/password identifies the API user.● Owner API parameter defines username or the owner of a newly created quote.● Based on Product/ItemPrice XML the node system will calculate discounts and check for discounting rules

on main items only – not on line items.

Tag Data Type Description Required Comments

username String (50) Valid username and valid tenant separated by # sign. (username#tenat)

Yes

password String (50) Valid SAP CPQ password provided for the username provided in the username element

Yes

owner String (50) Username of the quote owner

No If not provided then the username will be the owner of the quote.

inputXml String (8000) Input XML object in a form of a string

Yes XML needs to arrive HTML encoded. Otherwise bad request message would be returned

attributeNames List of strings Input XML object in a form of a string

Yes If not provided then the quote will be created, but the error

SAP CPQ API DocumentationSOAP API PUBLIC 373

Tag Data Type Description Required Comments

message will be displayed.

Data Definition for New Quote Input XML

Field Name Description Sample Data Type Size

MarketCode Code of the Market USD Text 25

ShippingMethod Name of the Shipping method

FedEx International Priority

Text 100

ShippingPrice Price for the shipping method

125 Text 10

TaxExempt Tax Exempt. 1 Boolean 3

Possible values: True, False, 1, 0

CartComment Cart Comment Text 1000

PromoCode Promo code Text 50

CRM/[ApplyMappings]

“1” for “Yes/True” TRUE Unsigned Byte

0 for “No/False” (Default if omitted)

Text

CRM/OpportunityId

CRM Opportunity id 892ADE6756HIX Text 50

CRM/OpportunityName

CRM Opportunity name

“TEST OPPORTUNITY”

Text 250

Items/Item Item node Text

Quantity Item Quantity 1 Text 5

CatalogueCode Catalog Code A2223B Text 50

ProductName Product Name A screwdriver +, type 1 Text 255

ItemPrice Price per one item 100 Text 10

Items/Item/Attributes/Attribute

Atrribute node Text

Name Attribute name SerialNumber Text 50

Value Attribute value SN1234 Text 50

Property/Name Cart custom field (property) name

Project Code Text 50

374 PUBLICSAP CPQ API Documentation

SOAP API

Field Name Description Sample Data Type Size

Property/Value Cart custom field (property)Value

555 Text 100

Customers/Customer

Customer node

[CustomerRoleType]

1 for Bill to

2 for Ship to

3 for End user

1 Unsigned Byte

Id ID from SAP CPQ 12345 Text 20

ExternalId External ID (not from SAP CPQ)

1 Text 20

FirstName First Name Harry Text 100

LastName Last Name Bruce Text 100

Company Company Name Webcom Text 100

Address1 The first address 8601 RR 2222 Text 100

Address2 The second address xxx Text 100

City City Austin Text 100

StateAbbrev State (2 chars) TX Text 2

ZipCode Zip Code 78730 Text 10

CountryAbbrev Country/Region (3 chars)

USA Text 3

TerritoryName Territory Name North America Text 100

BusinessPhone Phone Number Text 100

BusinessFax Fax Number Text 100

EMail Email address Text 100

CRMAccountId CRM Contact ID Text 100

CRMContactId CRM Account ID Text 100

Cart → PREVENT_EMPTY_QUOTE

Attribute to prevent empty quote. This attribute is optional.

Text 100

Simple XML Example

(for complex XML take a look at the New Quote - Input Parameters [page 317])

<Cart> <Items> <Item>

SAP CPQ API DocumentationSOAP API PUBLIC 375

<Quantity>1</Quantity> <CatalogueCode>PartNumber</CatalogueCode> </Item> </Items> <Properties> <Property> <Name>CustomFieldName</Name> <Value>123456</Value> </Property> </Properties> </Cart>

2.27.2 Create New Quote and Get Quote Data - Output Parameters

Output XML Example

<?xml version="1.0" encoding="utf-16"?><CART> <DateCreated>3/4/2015</DateCreated> <CartCompositeNumber>00020158</CartCompositeNumber> <PRODUCT> <Name>Config</Name> <ProductType>Accessories</ProductType> <CatCode>217ANGU</CatCode> <Cost>0.00</Cost> <Price>100.00</Price> <Qty>1</Qty> <ATTRIBUTE> <AttributeName>001</AttributeName> <AttributeDisplayValue>val1</AttributeDisplayValue> <AttributeValueCode>val1</AttributeValueCode> <AttributeQuantity>1</AttributeQuantity> <AttributeCost>0</AttributeCost> <AttributePrice>0</AttributePrice> <AttributeDescription><![CDATA[]]></AttributeDescription> </ATTRIBUTE> </PRODUCT> </CART>

2.28 SOAP API Authentication

The authentication for all SAP CPQ SOAP APIs is handled in the same way - username/domain and password are sent in each XML request.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webcominc.com/"> <soapenv:Header/> <soapenv:Body> <web:SimpleProductAdministration> <!--Optional:--> <web:userName>CPQ_Test_User</web:userName> <!--Optional:-->

376 PUBLICSAP CPQ API Documentation

SOAP API

<web:password>ABCpassword567</web:password> <!--Optional:--> <web:action>ADDORUPDATE</web:action> <!--Optional:--> <web:xDoc> <Products SkipCategoriesonProductUpdate="True"> <Product> <Identificator>PartNumber</Identificator> <PartNumber>SDF234</PartNumber> <PricingCode>65</PricingCode> <Categories> <USEnglish><! [CDATA[Hardware]]></USEnglish> </Categories> <DisplayType>Configurable</DisplayType> <ProductTypes>Hardware</ProductTypes> <ProductName> <USEnglish><! [CDATA[Hardware]]></USEnglish> </ProductName> <Description> <USEnglish>This is a test description.</USEnglish> </Description> <Permissions>CFO</Permissions> </Product </Products> </web:xDoc> </web:SimpleProductAdministration> </soapenv:Body> </soapenv:Envelope>

2.29 SOAP API Error Codes

Error Code - General API Error Message

100000 Unexpected exception

101001 Invalid login username/password supplied

Error Code - New Quote API Error Message

100011 Invalid customer role supplied. Allowed range is from 1 to 3

100012 Attribute "CustomerRoleType" is required for node customer

100013 First name is either not existing or is empty string, but it is a required field

100014 Last name is either not existing or is empty string, but it is a required field

100015 Address1 is a required field, and it is either not supplied or is empty

100016 City is a required field, and it is either not supplied or empty

SAP CPQ API DocumentationSOAP API PUBLIC 377

Error Code - New Quote API Error Message

100017 StateAbbrev is a required field, and it is either not supplied or empty

100018 Zip code is a required field, and You either did not supply it or left it empty

100019 CounrtyAbbrev is a required field and You either didn't sup­ply it or left it empty

100020 EMail field is not supplied, or is supplied empty, and it is re­quired

100022 Supplied owner username not found in CPQ database

100023 Invalid Market

100024 A minimum of {{requiredNumberOfCustomers}} customers needs to be supplied

100025 Supplied State AbbrevParameter Is Invalid

100026 Supplied CountryAbbrev parameter is invalid

100027 Supplied TerritoryName parameter is invalid

100028 Supplied email address is invalid

100029 Quote must have at least one item

100030 The item with catalogue code {{mi.PartNumber.Value}} does not exit

100031 Promo code {{apiCart.PromoCodes[0].CodeValue.Value}} is not a valid PromoCode

100032 Internal error

100043 You supplied an invalid string for customer ID

100044 Customer with supplied ID is not available

100045 Attribute name node is either not supplied or left blank

100046 At least one attribute value is required

100047 The name You supplied is not valid for the item

100048 You supplied an invalid value for attribute

100049 Customer with supplied External ID is not available

378 PUBLICSAP CPQ API Documentation

SOAP API

Error Code - New Quote API Error Message

100050 OpportunityId node is required

100051 Mappings failed while downloading data from CRM

100053 Supplied quantity parameter must be greater than zero

100055 Cart property value not applicable

100056 You cannot create quotes with incomplete configurations

100057 Mappings failed while uploading data to CRM

API_NewQuote_ParameterMissing All parameters not sent

API_NewQuote_UserNotMappedInCPQ USER NOT MAPPED IN CPQ

API_NewQuote_ProductIsObsolete You cannot add to quote the obsolete product

API_NewQuote_InvalidScparamDateFormat Cart property value not applicable

Error Code - Uer Administration API Error Message

103002 Approving parent user not found in CPQ database

103003 Ordering parent user not found in CPQ database

103004 Managing parent user not found in CPQ database

103005 Password cannot be blank

103006 First name cannot be blank

103007 User type cannot be blank

103008 Supplied user type is unknown in CPQ

103009 User's country/region cannot be blank

103010 Company code not found in CPQ

103011 Company with company code {{companyCode}} does not exist, and cannot be updated

103014 User with username {{username}} does not exist, and can­not be updated

103018 Node {{nodeName}} is required

103019 Can not convert value of {{nodeName}} : {{innerText}} to boolean

SAP CPQ API DocumentationSOAP API PUBLIC 379

Error Code - Uer Administration API Error Message

103020 Country/Region {{Country}} does not exist

103021 Brand for provided brand name not found

103022 Custom field not recognized

103023 User with username {{username}} already exists, and cannot be added

103025 Node {{nodeName}} has invalid attribute value

Error Code - Customers Administration API Error Message

104003 Customer delete failed

104004 Saving customer failed

104005 Found {{number}} cutomers

104006 Invalid territory name

104007 Invalid country/region or state

104008 Deserialization failed

104009 Unknown owner username

104010 Invalid OwnerID

104011 No Customers Provided

104012 Unknown action

104013 You shouldn't provide ID element when adding new cutomer

104014 Specified Custom Field doesn’t exist in the system

Error code - Custom Table Administration API Error Message

105001 Invalid table name

105002 Invalid action

105003 column is necessery for this action

105004 Number of provided rows must be between 1 and defined limit

105005 Column missing or invalid column name

380 PUBLICSAP CPQ API Documentation

SOAP API

Error code - Custom Table Administration API Error Message

105007 column is not allowed for this action

105009 No entries found for provided SearchCriteria

105010 Missing column for update

105012 Colum names muste be unique

105013 Number of values doesn't match the number of columns provided

Error Code - Company Administration API Error Message

106001 Company name is a required field

106002 Required node COMPANYCODE not supplied

106003 Node value {{nodeValue}} is too big. Max size is {{maxSize}}

106004 Node value {{nodeValue}} is not in the right format

106005

Error Code - CREATENEWQUOTEANDGETQUOTEDATA API Error Message

107001 ProductName is a required parameter

107002 Invalid ProductName

Error Code - PriceBook administration through Custom table API Error Message

108001 Provided date is not valid

108002 Provided price is not valid

Error Code - Salesforce API Error Message

SF_ParamMissing_SessionId Login Data is incorrect. Please contact your SalesForce ad­ministrator

SF_ParamMissing_Url Login Data is incorrect. Please contact your SalesForce ad­ministrator

SF_ParamMissing_Pass Login Data is incorrect. Please contact your SalesForce ad­ministrator

SF_ParamUncorrect_Pass Login Data is incorrect. Please contact your SalesForce ad­ministrator

SAP CPQ API DocumentationSOAP API PUBLIC 381

Error Code - Salesforce API Error Message

SF_DomainUncorrect Domain that Salesforce provided does not exist in CPQ. Please contact your SalesForce administrator

SF_NoCRMAdminAccount Administrative Salesforce account is not set up. Please con­tact your CPQ administrator

SF_LoginUnsuccessfulWithCRMAdminAccount Logging into Salesforce with administrative Salesforce ac­count failed. Please contact your CPQ administrator

SF_LoginUnsuccessfulWithProvidedSessionIdAndUrl Logging into Salesforce with provided parameters failed. Please contact your CPQ or Salesforce administrator

SF_ErrorInQuery There has been an error in query made to Salesforce

SF_ErrorInRetrieve There has been an error in query made to Salesforce

SF_ErrorInDescribe There has been an error in query made to Salesforce

SF_ErrorMalFormedQuery There has been an error in query made to Salesforce

SF_ErrorMalFormedRetrieve There has been an error in query made to Salesforce

SF_ErrorQueryIdDoesNotExist There has been an error in query made to Salesforce

SF_ErrorQueryIsNotValid There has been an error in query made to Salesforce

SF_ObjectNotQueriable There has been an error in query made to Salesforce

SF_ObjectNotRetrievable There has been an error in query made to Salesforce

SF_ObjectNotCreatable There has been an error in query made to Salesforce

SF_ObjectNotUpdatable There has been an error in query made to Salesforce

SF_ObjectNotDeletable There has been an error in query made to Salesforce

SF_CrUpdOpp_RoleMissingForOppAccount Opportunity cannot be created because the customer role that is used for creating Opportunity Account is empty

SF_CrUpdOpp_AccountIdNotProvided Opportunity cannot be created because the Account Id of the customer role that is used for creating Opportunity Ac­count is empty

SF_CrUpdOpp_StdPriceBookNotDefined Standard Price book is not defined in Salesforce. Please con­tact your Salesforce administrator

SF_ObjectNotQueriable There has been an error in query made to Salesforce

SF_ObjectNotRetrievable There has been an error in query made to Salesforce

SF_CrUpdOpp_OppNotCreated There was en error while creating new opportunity

382 PUBLICSAP CPQ API Documentation

SOAP API

Error Code - Salesforce API Error Message

SF_CrUpdOpp_OppNotUpdated There was an error while updating opportunity

SF_CrUpdOpp_CreatingOppLineItems There was an error while creating opportunity line items

SF_CrUpdOpp_NoPartNumberForProduct Item # {{item_number}} was not added to the opportunity because it does not have part number

SF_CustRoles_CreatingAccCont There was an error while creating/updating accounts and contacts in Salesforce from CPQ customer roles

SF_CartNotLoaded Cart has not been loaded. Please select a cart

SF_SalesForceNotSelected CPQ has not been set up to be integrated with Salesforce. Please contact your CPQ administrator

SF_CreateSfQuote An error happened when attached quote informations were populated in Salesforce

SF_NoCRMItemMappinsDefined There are no mappings defined for SF_Product2 and Oppor­tunityLineItem in Admin ⇒ Setup⇒ CRM Integration Sutup ⇒ CRM Item Mappings

SF_NoIdentifingCRMItemMappingDefined None of mappings defined in Admin ⇒ Setup⇒ CRM Integra­tion Sutup ⇒ CRM Item Mappings has value true in the Iden­tifing Product column

SF_FieldTooLong Filed size of a field: {{fieldName}} is too long

SF_UnableToCastField Field : {{fieldName}} can not be converted to number

LX_LoadingConfiguration Error loading configuration

Error Code - Cross Reference Error Message

CR_ProductNotFound The part number is {{param}} . Product that matches the part number you inserted could not be found

CR_ProductFoundNoCrossRef Competition product ' {{param}} ' matches the code you in­serted , but it is not referenced to any home product

CR_ProductFoundNoConditition Competition product ' {{param}} ' matches the code you in­serted , but it can not be referenced to any home product be­cause a condition is not met

CR_ProductFoundHeaderMessage For the part number ' {{param1}} ' , ' {{param2}} ' , reference is made to home product ' {{param3}} '

CR_AttrValueRefNotFound Reference for competition's attribute ' {{params1}} ' with at­tribute value ' {{params2}} ' could not be found

SAP CPQ API DocumentationSOAP API PUBLIC 383

Error Code -Microsoft CRM Error Message

MSCRM_NoCrmUserMapped Cpq User does not have CRM user mapped and CRM admin account hasn't been set up

MSCRM_LoginUnsuccessfulWithCRMUserAccount Logging into MSCRM with user's account failed

MSCRM_LoginUnsuccessfulWithCRMAdminAccount Logging into MSCRM with admin's account failed

MSCRM_NoDiscoveryServiceUrl Discovery Service Url hasn't been set up. Please contact your CPQ administrator

MSCRM_DomainUncorrect Domain that MS CRM provided does not exist in CPQ. Please contact your MS CRM administrator

MSCRM_MSCRMNotSelected CPQ has not been set up to be integrated with MS CRM. Please contact your CPQ administrator

MSCRM_UserIdNotProvided MS CRM UserId was not provided. Please contact your MS CRM administrator

MSCRM_CrUpdOpp_OppNotUpdated There was an error while updating opportunity

MSCRM_CrUpdOpp_CreatingOppLineItems There was an error while creating opportunity line items

MSCRM_CustRoles_CreatingAccCont There was en error while creating new opportunity

MSCRM_CrUpdOpp_OppNotCreated There was en error while creating new opportunity

MSCRM_CrUpdOpp_AccountIdNotProvided Opportunity cannot be created because the Account Id of the customer role that is used for creating Opportunity Ac­count is empty

MSCRM_CartNotLoaded Cart has not been loaded. Please select a cart

MSCRM_CrUpdOpp_RoleMissingForOppAccount Opportunity cannot be created because the customer role that is used for creating Opportunity Account is empty

MSCRM_OppDoesntHavePriceList Opportunity does not have price list set. In order to success­fully create products in MS CRM, opportunity should have price list selecte

Error Code - SAP CRM API Error Message

SAPCRM_DomainIncorrect Incorrect domain name is not provided. Please contact your SAP CRM administrator

SAPCRM_MissingDomain Domain name is not provided. Please contact your SAP CRM administrator

SAPCRM_SAPCRMNotSelected CPQ has not been set up to be integrated with SAP CRM. Please contact your CPQ administrator

384 PUBLICSAP CPQ API Documentation

SOAP API

2.30 Pricing API

With this API, you can create, delete or modify pricebooks.

DELETE PRICEBOOK [page 385]

INSERT PRICEBOOK [page 389]

UPDATE PRICEBOOK [page 392]

Pricing Table Administration Details [page 395]

Pricing Table Web Method - Input Parameters [page 396]

Input XML Example for INSERTROWS action [page 397]

Input XML Example for UPDATEROWS Action [page 397]

Input XML Example for DELETEROWS Action [page 398]

Input XML Example for EXPORTROWS action [page 398]

Input XML Schema - DELETE ROWS action [page 399]

Input XML Schema - EXPORT ROWS action [page 399]

INPUT XML Schema - INSERT ROW Action [page 400]

INPUT XML Schema - UPDATE ROW action [page 401]

OUTPUT XML Example - UPDATE ROWS action [page 401]

Output XML Schema - INSERT ROWS action [page 402]

Output XML Schema - UPDATE ROWS action [page 402]

Pricing Table Administration - Output Parameters [page 403]

Upsert API Method for Pricebook [page 405]

Upsert Pricebook With Distribution Chain [page 407]

Related Information

SOAP API Authentication [page 376]

2.30.1 DELETE PRICEBOOK

XML Example - Delete [page 386]

XML Schema - Delete [page 387]

SAP CPQ API DocumentationSOAP API PUBLIC 385

2.30.1.1 XML Example - Delete

Input example:

<Root OnError="IGNORE" Report="ALL"> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Price</Column> <Column>Cost</Column> <Column>RecurringPrice</Column> <Column>RecurringCost</Column> <Column>ValidFrom</Column> <Column>ValidUntil</Column> <Column>PriceDescription</Column> <Column>Delete</Column></Columns><Rows> <Row> <Value>PartNumberXYZ</Value> <Value>123</Value> <Value>100</Value> <Value>50</Value> <Value>25</Value> <Value>10</Value> <Value>01/01/2013</Value> <Value>08/15/2013</Value> <Value>desc</Value> <Value>1</Value> </Row></Rows> </Root>

Value for Delete node must be 1 in order to delete row.

Output examples:

Succesfull

<Result xmlns="http://webcominc.com/"> <Status>ALL_ENTRIES_IMPORTED</Status><Message /><Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value>PartNumberXYZ</Value> <Value>123</Value> <Value>OK</Value> <Value>Entry deleted.</Value> </Row> </Rows></Root> </Result>

Error

<Result xmlns="http://webcominc.com/"> <Status>ERRORS_FOUND_WHEN_IMPORTING</Status>

386 PUBLICSAP CPQ API Documentation

SOAP API

<Message /><Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value /> <Value>123</Value> <Value>NOK</Value> <Value>Part Number Column empty.</Value> </Row> </Rows></Root> </Result>

2.30.1.2 XML Schema - Delete

Input schema:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="10" minOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="10" minOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute type="xs:string" name="OnError"/> <xs:attribute type="xs:string" name="Report"/> </xs:complexType></xs:element> </xs:schema>

SAP CPQ API DocumentationSOAP API PUBLIC 387

Output schema:

Success:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://webcominc.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Status"/> <xs:element type="xs:string" name="Message"/> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

Error:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://webcominc.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Status"/> <xs:element type="xs:string" name="Message"/> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows">

388 PUBLICSAP CPQ API Documentation

SOAP API

<xs:complexType> <xs:sequence> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

2.30.2 INSERT PRICEBOOK

XML Example - Insert [page 389]

XML Schema - Insert [page 390]

2.30.2.1 XML Example - Insert

Input example:

<Root OnError="IGNORE" Report="ALL"> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Price</Column> <Column>Cost</Column> <Column>RecurringPrice</Column> <Column>RecurringCost</Column> <Column>ValidFrom</Column> <Column>ValidUntil</Column> <Column>PriceDescription</Column> <Column>Delete</Column></Columns><Rows> <Row> <Value>PartNumberXYZ</Value> <Value>123</Value> <Value>100</Value> <Value>50</Value> <Value>25</Value> <Value>10</Value> <Value>01/01/2013</Value> <Value>08/15/2013</Value> <Value>desc</Value> <Value>0</Value> </Row>

SAP CPQ API DocumentationSOAP API PUBLIC 389

</Rows> </Root>

Output examples:

Succesfull

<Result xmlns="http://webcominc.com/"> <Status>ALL_ENTRIES_IMPORTED</Status><Message /><Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value>PartNumberXYZ</Value> <Value>123</Value> <Value>OK</Value> <Value>Entry inserted.</Value> </Row> </Rows></Root> </Result>

Error

<Result xmlns="http://webcominc.com/"> <Status>ERRORS_FOUND_WHEN_IMPORTING</Status><Message /><Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value /> <Value>123</Value> <Value>NOK</Value> <Value>Part Number Column empty.</Value> </Row> </Rows></Root> </Result>

2.30.2.2 XML Schema - Insert

Input schema:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns">

390 PUBLICSAP CPQ API Documentation

SOAP API

<xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="10" minOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="10" minOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute type="xs:string" name="OnError"/> <xs:attribute type="xs:string" name="Report"/> </xs:complexType></xs:element> </xs:schema>

Output schema:

Success:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://webcominc.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Status"/> <xs:element type="xs:string" name="Message"/> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>

SAP CPQ API DocumentationSOAP API PUBLIC 391

</xs:element> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

Error:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://webcominc.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Status"/> <xs:element type="xs:string" name="Message"/> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

2.30.3 UPDATE PRICEBOOK

XML Example - Update [page 393]

XML Schema - Update [page 394]

392 PUBLICSAP CPQ API Documentation

SOAP API

2.30.3.1 XML Example - UpdateInput example:

<Root OnError="IGNORE" Report="ALL"> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Price</Column> <Column>Cost</Column> <Column>RecurringPrice</Column> <Column>RecurringCost</Column> <Column>ValidFrom</Column> <Column>ValidUntil</Column> <Column>PriceDescription</Column> <Column>Delete</Column></Columns><Rows> <Row> <Value>PartNumberXYZ</Value> <Value>123</Value> <Value>100</Value> <Value>50</Value> <Value>25</Value> <Value>10</Value> <Value>01/01/2013</Value> <Value>08/15/2013</Value> <Value>desc</Value> <Value>0</Value> </Row></Rows> </Root>

Output examples:

Succesfull

<Result xmlns="http://webcominc.com/"> <Status>ALL_ENTRIES_IMPORTED</Status><Message /><Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value>PartNumberXYZ</Value> <Value>123</Value> <Value>OK</Value> <Value>Entry updated.</Value> </Row> </Rows></Root> </Result>

Error:

<Result xmlns="http://webcominc.com/"> <Status>ERRORS_FOUND_WHEN_IMPORTING</Status><Message /><Root> <Columns>

SAP CPQ API DocumentationSOAP API PUBLIC 393

<Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value /> <Value>123</Value> <Value>NOK</Value> <Value>Part Number Column empty.</Value> </Row> </Rows></Root> </Result>

2.30.3.2 XML Schema - Update

Input schema:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="10" minOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row" minOccurs="1" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="10" minOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute type="xs:string" name="OnError"/> <xs:attribute type="xs:string" name="Report"/> </xs:complexType> </xs:element> </xs:schema>

Output schema:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://webcominc.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Result"> <xs:complexType> <xs:sequence>

394 PUBLICSAP CPQ API Documentation

SOAP API

<xs:element type="xs:string" name="Status"/> <xs:element type="xs:string" name="Message"/> <xs:element name="Root" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="4" minOccurs="4"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

2.30.4 Pricing Table Administration Details

<Columns> - required

<Column> - required, representing Column name, for all actions of table with provided name.

<ColumnName> - required

<PartNumber> - required

<Price> - required

<Cost> - required

<RecurringPrice> - optional

<RecurringCost> - optional

<PriceCode> - optional

<ValidFrom> - optional

<ValidUntil> - optional

<PriceDescription> - optional

<Delete> - optional

SAP CPQ API DocumentationSOAP API PUBLIC 395

<Rows> - required for all actions

- <Row> - required, representing values for provided columns

- <SearchCriteria> - required, for Export action

- <Value> - required, for all actions

Column and value node must be provided in matching order.

2.30.5 Pricing Table Web Method - Input Parameters

Tag Data Type Description Required Comments

Username String (20) Only CPQ admin users can execute this func­tion. CPQ user is de­fined in CPQ admin.

Yes CPQ admin user name

Password String (25) Only CPQ admin users can execute this func­tion. Password is de­fined in CPQ admin.

Yes CPQ admin password for the admin user name provided in the username element

Action String (50) Action that will be exe­cuted for the AUXTable

Yes Examples: 1. CREATET­able 2. DELETEROWS

TableName String(100) Name of the table on which the action will be performed – no white spaces allowed

Yes ExternalPrices

AUXTablesproperties XML Object Passing User Data

Yes The AUXTablesproper­ties XML structure for each action is shown

Input XML definition – for other actions

Field Name Description Sample Data Type Size

Column The name of the col­umn from specified ta­ble. Only alphanumeric signs are allowed. White spaces aren’t al­lowed.

PriceCode Text 50

Value Columns PartNumber, PriceCode and Price­Description

ABC123 nvarchar 200

396 PUBLICSAP CPQ API Documentation

SOAP API

Field Name Description Sample Data Type Size

Value Columns Price, Cost, RecurringPrice, Recur­ringCost

123 decimal decimal

2.30.6 Input XML Example for INSERTROWS action

Maximum number of rows is 50. Column node can’t have ‘CpqTableEntryId’ value.

<Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Price</Column> <Column>Cost</Column> <Column>RecurringPrice</Column> <Column>RecurringCost</Column> <Column>PriceDescription</Column> <Column>ValidFrom</Column> <Column>ValidUntil</Column> </Columns> <Rows> <Row> <Value>ABCD123</Value> <Value>888</Value> <Value>123</Value> <Value>11</Value> <Value>5</Value> <Value>3</Value> <Value>price desc</Value> <Value>01/01/2013</Value> <Value>10/15/2013</Value> </Row> </Rows> </Root>

2.30.7 Input XML Example for UPDATEROWS Action

Maximum number of rows is 20. Column node must have ‘CpqTableEntryId’ value in the first place. The update will be performed for each row, based on first value (that represents CpqTableEntryId) , on provided columns with provided values.

<Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Price</Column> <Column>Cost</Column> <Column>RecurringPrice</Column> <Column>RecurringCost</Column> <Column>PriceDescription</Column> <Column>ValidFrom</Column> <Column>ValidUntil</Column> <Column>CpqTableEntryId</Column>

SAP CPQ API DocumentationSOAP API PUBLIC 397

</Columns> <Rows> <Row> <Value>ABC555</Value> <Value>Jack</Value> <Value>123</Value> <Value>222</Value> <Value>111</Value> <Value>222</Value> <Value>price desc</Value> <Value>01/01/2013</Value> <Value>10/15/2013</Value> <Value>14</Value> </Row> <Row> <Value>333</Value> <Value>Jack</Value> <Value>5555</Value> <Value>5555</Value> <Value>5555</Value> <Value>5555</Value> <Value>price desc</Value> <Value>01/01/2013</Value> <Value>10/15/2013</Value> <Value>15</Value> </Row> </Rows> </Root>

2.30.8 Input XML Example for DELETEROWS Action

Maximum number of rows is 20. Column node must have ‘CpqTableEntryId’ value only. The delete will be performed for each row, based on value (that represents CpqTableEntryId).

<Root> <Columns> <Column> CpqTableEntryId</Column> </Columns> <Rows> <Row> <Value>23</Value> </Row> <Row> <Value>27</Value> </Row> </Rows> </Root>

2.30.9 Input XML Example for EXPORTROWS action

Maximum number of rows is 1. Column node can’t have ‘CpqTableEntryId’ value. The search will be performed on search criteria, where AND condition will be used between values. All table rows that matches the condition will be returned. Maximum number of returning rows is 20. If search returns more than 20, the error message will be returned. The result XML will be explained later.

<Root>

398 PUBLICSAP CPQ API Documentation

SOAP API

<Columns> <Column>PartNumber</Column> </Columns> <SearchCriteria> <Value>99</Value> </SearchCriteria > </Root>

In case of input XML example for EXPORTTABLE action, the input XML is ignored.

2.30.10 Input XML Schema - DELETE ROWS action

Maximum number of rows is 20. Column node must have ‘CpqTableEntryId’ value only. The delete will be performed for each row, based on value (that represents CpqTableEntryId).

<xs:schema attributeFormDefault=“unqualified” elementFormDefault=“qualified” xmlns:xs=“http://www.w3.org/2001/XMLSchema”> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:byte" name="Value"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

2.30.11 Input XML Schema - EXPORT ROWS action

Maximum number of rows is 1. Column node can’t have ‘CpqTableEntryId’ value. The search will be performed on search criteria, where AND condition will be used between values. All table rows that matches the condition will be returned. Maximum number of returning rows is 20. If search returns more than 20, the error message will be returned. The result XML will be explained later.

<xs:schema attributeFormDefault=“unqualified” elementFormDefault=“qualified” xmlns:xs=“http://www.w3.org/2001/XMLSchema”> <xs:element name="Root">

SAP CPQ API DocumentationSOAP API PUBLIC 399

<xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="SearchCriteria"> <xs:complexType> <xs:sequence> <xs:element type="xs:byte" name="Value"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

2.30.12 INPUT XML Schema - INSERT ROW Action

<xs:schema attributeFormDefault=“unqualified” elementFormDefault=“qualified” xmlns:xs=“http://www.w3.org/2001/XMLSchema”> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="unbounded" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="unbounded" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

400 PUBLICSAP CPQ API Documentation

SOAP API

2.30.13 INPUT XML Schema - UPDATE ROW action

Maximum number of rows is 20. Column node must have ‘CpqTableEntryId’ value in the first place. The update will be performed for each row, based on first value (that represents CpqTableEntryId) , on provided columns with provided values.

<xs:schema attributeFormDefault=“unqualified” elementFormDefault=“qualified” xmlns:xs=“http://www.w3.org/2001/XMLSchema”> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="unbounded" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="unbounded" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

2.30.14 OUTPUT XML Example - UPDATE ROWS action

Success message:

<?xml version=“1.0” encoding=“utf-16”?> <Result xmlns=“http://webcominc.com/”> <Status>ALL_ENTRIES_IMPORTED</Status><Message /><Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value>PartNumberXYZ</Value> <Value /> <Value>OK</Value> <Value>Entry updated.</Value> </Row> </Rows>

SAP CPQ API DocumentationSOAP API PUBLIC 401

</Root> </Result>

Error message:

<?xml version=“1.0” encoding=“utf-16”?> <Result xmlns=“http://webcominc.com/”> <Status>ERRORS_FOUND_WHEN_IMPORTING</Status><Message /><Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value /> <Value /> <Value>NOK</Value> <Value>Part Number Column empty.</Value> </Row> </Rows></Root> </Result>

2.30.15 Output XML Schema - INSERT ROWS action

<xs:schema attributeFormDefault=“unqualified” elementFormDefault=“qualified” targetNamespace=“http://webcominc.com/” xmlns:xs=“http://www.w3.org/2001/XMLSchema”> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Status"/> <xs:element type="xs:string" name="Message"/> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

2.30.16 Output XML Schema - UPDATE ROWS action

<xs:schema attributeFormDefault=“unqualified” elementFormDefault=“qualified” targetNamespace=“http://webcominc.com/” xmlns:xs=“http://www.w3.org/2001/XMLSchema”> <xs:element name="Result"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Status"/> <xs:element type="xs:string" name="Message"/> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="Columns"> <xs:complexType>

402 PUBLICSAP CPQ API Documentation

SOAP API

<xs:sequence> <xs:element type="xs:string" name="Column" maxOccurs="unbounded" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rows"> <xs:complexType> <xs:sequence> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Value" maxOccurs="unbounded" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

2.30.17 Pricing Table Administration - Output Parameters

Tag Data Type Description Required Comments

Result XML This function will gen­erate XML document as result of the per­formed actions.

Yes Result is always gener­ated

XML Definition

Element Name Data Type Description Description Comments

Result Y

Status String(10) OK if passed values are verified and success­fully passed requested action, otherwise NOK

Y

Message String (500) Message generated by CPQ

Y

SAP CPQ API DocumentationSOAP API PUBLIC 403

Element Name Data Type Description Description Comments

Root N For search, if any row matches provided con­ditions, it will contain XML for result

Error N If any error occurs this node will contain info about it.

ErrorCode String(50) Error code Y

Description String(500) Error description mes­sage

Y

Result XML Examples

Example for the successful InsertRow action

<?xml version="1.0" encoding="utf-8"?> <Result xmlns="http://webcominc.com/"> <Status>OK</Status> <CpqTableEntryId>19</CpqTableEntryId> <Message>action 'INSERTROWS' for PricingTestTable succeeded</Message><Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Price</Column> <Column>Cost</Column> <Column>RecurringPrice</Column> <Column>RecurringCost</Column> <Column>PriceDescription</Column> </Columns> <Rows> <Row> <Value>ABCD123</Value> <Value>888</Value> <Value>123</Value> <Value>11</Value> <Value>5</Value> <Value>3</Value> <Value>price desc</Value> </Row> </Rows> </Root></Result>

404 PUBLICSAP CPQ API Documentation

SOAP API

2.30.18 Upsert API Method for Pricebook

Please note that this is different web method - not the standard Pricing API method. Following logic is implemented:

● When going through rows in XML, API method will look for part number and price code provided in row. If there is no price code, only part number will be used. If part number is empty, error “Part Number Column empty” will be sent as error for this row.

● If part number and price code are provided, API method will look for pricebook entries by part number and price code. If price code is not provided, API method will look for pricebook entries with same part number and empty price code.

● If API method finds pricebook entry(s) by part number (and possibly price code), all rows that match this condition will be updated with provided data in same row. Row will be updated with only provided columns. Columns that are not provided will not be updated.

● If API method doesn’t find pricebook entry by part number (and possibly price code), new entry will be added to the pricebook. When adding new entry to the pricebook, entered data will be same as if entry was added manually (with zeros set for empty prices and decimal places added at the end of the number). If price code or Price Description are empty, they will be left empty in new pricebook entry.

● If columns Delete is found in the row, it will be managed :If value is 1 :When adding new entry, this row will be skipped. When updating existing entry, this row will be deleted. If value is 0 or empty:Row will be created/updated as if column Delete was not sent

● Depending on Root node attribute “OnError” :If node is not included or if its value is “IGNORE”, CPQ will commit all changes to rows where no errors happened. If value of the node is “STOP”, CPQ will not commit any changes to the table. However, all rows will be processed and all errors will be reported in return XML.

● Depending on Root node “Report”: If node is not included or if its value is “ERRORS_ONLY”, CPQ will return only errors in result XML. If node’s value is “ALL”, CPQ will return result of all rows in return XML

● When creating result XML, for each row CPQ will return :Part Number and Price Code used for entry identification, Status – OK or NOK, Message: If upsert is successful, message will be :Entry inserted (when insert occurred), Entry updated (when updated occurred), Entry deleted (when delete occurred. If upsert is not successful, message will be sent according to the error that happened.“Incorrect characters found in price” – if non-numeric values are sent for price or “Part Number Column empty” – if row is missing part number.

● Maximum number of entries that can be handled in one call is 2000.

Input Parameters

Tag Data Type Description Required Comments

Username String Only CPQ admin users can execute this func­tion. CPQ user is de­fined in CPQ admin.

Yes CPQ admin user name

Password String Only CPQ admin users can execute this func­tion. Password is de­fined in CPQ admin.

Yes CPQ admin password for the admin user name provided in the username element

SAP CPQ API DocumentationSOAP API PUBLIC 405

Tag Data Type Description Required Comments

Pricebook Code String Code of pricebook that is being updated

Yes Code of pricebook that is being updated

XML String Data for populating pri­cebook

Yes XML should contain columns and rows(en­tries) to pricebook. Columns must be de­fined first. Only column PartNumber is re­quired. Other columns are optional.Value for column Delete may be 1, 0 or empty

Input XML Example

<?xml version="1.0" encoding="utf-8"?> <Root OnError="IGNORE" Report="ALL"><Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Price</Column> <Column>Cost</Column> <Column>RecurringPrice</Column> <Column>RecurringCost</Column> <Column>PriceDescription</Column> <Column>Delete</Column> </Columns> <Rows> <Row> <Value>PartNumberXYZ</Value> <Value></Value> <Value>100</Value> <Value>50</Value> <Value></Value> <Value></Value> <Value>0</Value> <Value>0</Value> </Row> </Rows> </Root>

NoteSearchCriteriaXML sent as a part of SOAP request body needs to be wrapped with <![CDATA[]]>, so for example the input stated above needs to be phrased like this: <![CDATA[<Root> <SearchCriteria>Criteria for search</SearchCriteria></Root>]]>

Result XML Example

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

406 PUBLICSAP CPQ API Documentation

SOAP API

<Result> <Status>ALL_ENTRIES_IMPORTED</Status> <Message></Message> <Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value>PartNumberXYZ</Value> <Value></Value> <Value>OK</Value> <Value>Entry Inserted</Value> </Row> </Rows> </Root> </Result>

Possible Status Nod Values in Result XML

● ALL_ENTRIES_IMPORTEDIf all rows have been inserted/updated/deleted successfully

● ERRORS_FOUND_WHEN_IMPORTINGIf error occurred when importing at least one row

● NO_PART_NUMBER_COLUMN_PROVIDEIf part number column hasn’t been provided in columns header.

● INCORRECT_USERNAME_AND_PASSWORDIf username/password combination is not correct.

● DOMAIN_NOT_PROVIDEDIf domain name has not be provided

● NO_INPUT_XMLIf XML wasn’t provided

● PRICEBOOK_CODE_DOESNT_EXISTPricebook with provided pricebook code doesn’t exits

● INVALID_COLUMN_NAMEIf invalid column name has been specified

● MAXIMUM_NUMBER_OF_ROWS_EXCEEDEDIf allowed number of rows has been exceeded.

2.30.19 Upsert Pricebook With Distribution Chain

Function name: UpsertPricebookWithDistributionChain

Note: This is not the standard Pricing API method.

The following logic is implemented:

SAP CPQ API DocumentationSOAP API PUBLIC 407

● When going through rows in XML, API method will look for part number and price code provided in row. If there is no price code, only part number will be used. If part number is empty, error “Part Number Column empty” will be sent as error for this row.

● If part number and price code are provided, API method will look for pricebook entries by part number and price code. If price code is not provided, API method will look for pricebook entries with same part number and empty price code.

● If API method finds pricebook entry(s) by part number (and possibly price code), all rows that match this condition will be updated with provided data in same row. Row will be updated with only provided columns. Columns that are not provided will not be updated.

● If API method doesn’t find pricebook entry by part number (and possibly price code), new entry will be added to the pricebook. When adding new entry to the pricebook, entered data will be same as if entry was added manually (with zeros set for empty prices and decimal places added at the end of the number). If price code or Price Description are empty, they will be left empty in new pricebook entry.

● If columns Delete is found in the row, it will be managed :If value is 1 :When adding new entry, this row will be skipped. When updating existing entry, this row will be deleted. If value is 0 or empty:Row will be created/updated as if column Delete was not sent.

● Depending on Root node attribute “OnError” :If node is not included or if its value is “IGNORE”, SAP CPQ will commit all changes to rows where no errors happened. If value of the node is “STOP”, SAP CPQ will not commit any changes to the table. However, all rows will be processed and all errors will be reported in return XML.

● Depending on Root node “Report”: If node is not included or if its value is “ERRORS_ONLY”, SAP CPQ will return only errors in result XML. If node’s value is “ALL”, SAP CPQ will return result of all rows in return XML.

● When creating result XML, for each row SAP CPQ will return :Part Number and Price Code used for entry identification, Status – OK or NOK, Message: If upsert is successful, message will be :Entry inserted (when insert occurred), Entry updated (when updated occurred), Entry deleted (when delete occurred. If upsert is not successful, message will be sent according to the error that happened.“Incorrect characters found in price” – if non-numeric values are sent for price or “Part Number Column empty” – if row is missing part number.

● Maximum number of entries that can be handled in one call is 2000.

Input Parameters

Tag Data Type Description Required Comments

Username String Only SAP CPQ admin users can execute this function. SAP CPQ user is defined in SAP CPQ admin.

Yes SAP CPQ admin user name

Password String Only SAP CPQ admin users can execute this function. Password is defined in SAP CPQ admin.

Yes SAP CPQ admin pass­word for the admin user name provided in the username element

408 PUBLICSAP CPQ API Documentation

SOAP API

Tag Data Type Description Required Comments

Distribution Chain String A combination of sales organization and distri­bution channel

Yes Displayed as a six-character code in SAP CPQ pricebooks in the format 0001_01

Currency String Currency for the price­book that is being up­dated

Yes Currency for the price­book that is being up­dated

XML String Data for populating the pricebook

Yes XML should contain columns and rows(en­tries) to pricebook. Columns must be de­fined first. Only column PartNumber is re­quired. Other columns are optional.Value for column Delete may be 1, 0 or empty

Input XML Example

<?xml version="1.0" encoding="utf-8"?> <Root OnError="IGNORE" Report="ALL"><Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Price</Column> <Column>Cost</Column> <Column>RecurringPrice</Column> <Column>RecurringCost</Column> <Column>PriceDescription</Column> <Column>Delete</Column> </Columns> <Rows> <Row> <Value>PartNumberXYZ</Value> <Value></Value> <Value>100</Value> <Value>50</Value> <Value></Value> <Value></Value> <Value>0</Value> <Value>0</Value> </Row> </Rows> </Root>

NoteSearchCriteriaXML sent as a part of SOAP request body needs to be wrapped with <![CDATA[]]>, so for example the input stated above needs to be phrased like this: <![CDATA[<Root> <SearchCriteria>Criteria for search</SearchCriteria></Root>]]>

SAP CPQ API DocumentationSOAP API PUBLIC 409

Result XML Example

<?xml version="1.0" encoding="utf-8"?> <Result> <Status>ALL_ENTRIES_IMPORTED</Status> <Message></Message> <Root> <Columns> <Column>PartNumber</Column> <Column>PriceCode</Column> <Column>Status</Column> <Column>Message</Column> </Columns> <Rows> <Row> <Value>PartNumberXYZ</Value> <Value></Value> <Value>OK</Value> <Value>Entry Inserted</Value> </Row> </Rows> </Root> </Result>

2.31 DoYouSeeMe API

The purpose of this function is to test whether the credentials you're using in the API call from an external system to SAP CPQ are valid.

● XML Example - DoYouSeeMe [page 410]● XML Schema - DoYouSeeMe [page 411]

Related Information

SOAP API Authentication [page 376]

2.31.1 XML Example - DoYouSeeMe

Input example:

<doUSeeMe xmlns="http://webcominc.com/"> <username>user#domain</username> <password>password123</password> </doUSeeMe>

In username field type username + '#' + domain name, in order to log in to your domain.

410 PUBLICSAP CPQ API Documentation

SOAP API

Output example:

Success

<ICANSEEYOU> <USERNAME>user</USERNAME> <DOMAIN>domain</DOMAIN> </ICANSEEYOU>

Error:

<NO> <REASON>Unknown domain 'domainX'</REASON> </NO>

2.31.2 XML Schema - DoYouSeeMe

Input schema:

Success:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://webcominc.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="doUSeeMe"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="username"/> <xs:element type="xs:string" name="password"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Output schema:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="ICANSEEYOU"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="USERNAME"/> <xs:element type="xs:string" name="DOMAIN"/> </xs:sequence> </xs:complexType></xs:element><xs:element name="NO"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="REASON"/> </xs:sequence> </xs:complexType></xs:element> </xs:schema>

SAP CPQ API DocumentationSOAP API PUBLIC 411

3 XWS (EXTERNAL WEB SERVICE)

XWS is an SAP CPQ tag that allows external services to be called. It also allows for external, noncurrent, product data to be evaluated and used inside expressions.

This tag should be used if a product needs to use data from another product, from any table located in the database, or from some other external source.

Syntax for the XWS tag is <*XWS(FunctionName, FunctionParameters)*>. For example <*XWS(GETPRODUCTPRICE, Product Name)*> or <*XWS(GETPRODUCTCATCODE, Product Name)*> or <*XWS(GETPRODUCTDESCRIPTION, Product Name)*> would return product price, product part number or product description for a referenced product. For more information on referenced products and product’s hierarchy, see the chapter on Product’s Hierarchy.

Another standard example of using the XWS tag would be using it to obtain data from an uploaded table in the database. The expression would likely look like: <*XWS(AUXTABLE, <table_name >, <return_column_name>, <condition_column_1_name>, <condition_value_1>, <condi tion_column_2_name>, <condition_value_2>…) *>. To avoid using an HTTP post with an XWS call, the AUX tag can be used instead to access uploaded table data. Using this tag instead ensures a faster result. The syntax is the same as XWS call except the AUX TABLE is removed and XWS is replaced with AUX.

Example

The following expression would be used to return a value from the field CONTRACT_PRICE in the table called CONTRACTS, where part number in the PartNumber field is equal to the configured part number of the product: <*AUX(AUXTABLE,CONTRACTS,C ONTRACT_PRICE,PartNumber,<* ProductCode *>)*>

412 PUBLICSAP CPQ API Documentation

XWS (EXTERNAL WEB SERVICE)

4 Invalid XML Characters

This topic contains a list of invalid XML characters.

If any of the special characters from the table below are used in an XML document, loading the document results in an Invalid XML error. The table lists the invalid characters, as well as what they should be replaced with in the XML. Furthermore, issues could be caused by badly formatted tags, such as <b> instead of <b/>.

Invalid XML Characters Replace with

”<” ”&amp;lt;”

”>” ”&amp;gt;”

“\”” ”&amp;quot;”

“\'” ”&amp;apos;”

”&” ”&amp;amp;”

To review an example code that uses the SAP CPQ API click User API Example

SAP CPQ API DocumentationInvalid XML Characters PUBLIC 413

5 API Example

A common use of SAP CPQ’s API is to change the status of a quote. This type of action falls under the set of user side functions.

This set includes the function performCartAction, which performs a workflow action. Based on the Workflow setup, certain actions may be restricted because of a user’s rights and the quote status.

This function is usually preceded by the function getActionList, which returns a list of actions available for the specified quote. One of these actions is then used in the performCartAction function.

To access SAP CPQ’s API, use the following URLs:

● <application root>/wsAPI/CPQAPI.asmx - this is the set of user-level functions● <application root>/wsAPI/wssrv.asmx - this is the set of administrator-level functions

For example, to access the functions on the www.webcomcpq.com installation, the following URLs would be used: www.webcomcpq.com/wsAPI/CPQAPI.asmx and www.webcomcpq.com/wsAPI/wssrv.asmx. To view the list of functions that an API URL contains, enter the URL into any web browser. Click a function to view the parameters that the function takes.

Using the desired installation’s URL, the performCartAction function will use the following parameters: Username, Password, OrderID, ERPOrderID, and Action.

The Username and Password can be any user created on that installation. If the installation is multitenant, then the domain should be included with the Username preceded by a #. For example, to log in with the username Joe that is in the Webcom domain, Joe#Webcom would be used.

NoteInactive users can't perform any API calls, since their login data is checked, just as in the standard web-based SAP CPQ application. Don't forget that all API calls are case-sensitive.

SAP CPQ Workflow is applied to this user when performing an API function. In this example, the user needs to have the correct rights to change a quote’s status.

OrderID is the number of the quote that the function will be performed on. SAP CPQ Workflow is applied to the quote used. For this example, the quote needs to be in the correct status in order for a status change to be performed.

The ERPOrderID is an external system’s (SAP ERP) order number that has been assigned to the SAP CPQ OrderID. It is not required but is available if necessary.

The Action parameter is XML that describes the action being performed. The XML includes two elements to describe the action: ActionName and ActionParameters. ActionName is the name of the action that will be performed on the quote. ActionParameters is any parameters the action needs. For this example, CHANGESTATUS is the ActionName and the new status is the ActionParameters.

The following is example XML that changes the status of a quote to Quote Won: <ACTION>-:$ <NAME>CHANGESTATUS</NAME>-:$ <PARAMETER name=“NewStatus” >Quote Won</PARAMETER>-:$ </ACTION>

414 PUBLICSAP CPQ API Documentation

API Example

More than one action may be included in the XML as long as it stays within the Action tag and includes the same elements.

After the performCarAction function is executed, XML is returned that gives the result of the action. If it was performed correctly, an OK will be included within a RESULT tag. If it failed to complete the action, a NOK will be included. The reason it failed will be included within a REASON tag. In addition, the status the function attempted to change the quote to will be included within a STATUS tag.

SAP CPQ API DocumentationAPI Example PUBLIC 415

6 External Webservices

6.1 UPS Shipping Integration

For UPS integration the following application parameters should be set:

● UNITOFMEASUREMENT - by default set to grams● UPSAccessLicenseNumber● UPSFromZipCode● UPSURL (for example, https://www.ups.com/ups.app/xml/Rate)● UPSUser● UPSPassword

Weight is calculated during integration and need to be setup for every product.

The tag UPSSHIPPING(code) should be used, code is one of UPS defined codes, for example, code 14 states for 'UPS Next Day Early AM'.

Code United States Domestic Shipments

01 UPS Next Day Air

02 UPS Second Day Air

03 UPS Ground

12 UPS Three-Day Select

13 UPS Next Day Air Saver

14 UPS Next Day Air® Early A.M.

59 UPS Second Day Air A.M.

65 UPS Saver

Code Shipments Originating in United States

01 UPS Next Day Air

02 UPS Second Day Air

03 UPS Ground

07 UPS Worldwide Express

08 UPS Worldwide Expedited

11 UPS Standard

416 PUBLICSAP CPQ API Documentation

External Webservices

Code Shipments Originating in United States

12 UPS Three-Day Select

14 UPS Next Day Air® Early A.M.

54 UPS Worldwide Express Plus

59 UPS Second Day Air A.M.

65 UPS Saver

Code Shipments Originating in Puerto Rico

01 UPS Next Day Air

02 UPS Second Day Air

03 UPS Ground

07 UPS Worldwide Express

08 UPS Worldwide Expedited

14 UPS Next Day Air Early A.M.

54 UPS Worldwide Express Plus

65 UPS Saver

Code Shipments Originating in Canada

01 UPS Express

02 UPS Expedited

07 UPS Worldwide Express

08 UPS Worldwide Expedited

11 UPS Standard

12 UPS Three-Day Select

13 UPS Saver

14 UPS Express Early A.M.

54 UPS Worldwide Express Plu

65 UPS Saver

Code Shipments Originating in Mexico

07 UPS Express

08 UPS Expedited

54 UPS Express Plus

65 UPS Saver

Code Polish Domestic Shipments

07 UPS Express

08 UPS Expedited

SAP CPQ API DocumentationExternal Webservices PUBLIC 417

Code Polish Domestic Shipments

11 UPS Standard

54 UPS Worldwide Express Plus

65 UPS Saver

82 UPS Today Standard

83 UPS Today Dedicated Courrier

84 UPS Today Intercity

85 UPS Today Express

86 UPS Today Express Saver

Code European Union

07 UPS Express

08 UPS Expedited

11 UPS Standard

54 UPS Worldwide Express Plus

65 UPS Saver

Code Shipments Originating in Other Countries/Regions

07 UPS Express

08 UPS Expedited

11 UPS Standard

54 UPS Worldwide Express Plus

65 UPS Saver

Code Freight Shipments

TDCB Trade Direct Cross Border

TDA Trade Direct Air

TDO Trade Direct Ocean

308 UPS Freight LTL

309 UPS Freight LTL Guaranteed

310 UPS Freight LTL Urgent

NoteSAP CPQ uses a standard size package during UPS integration. The package used by default is UPS Letter Envelope.

418 PUBLICSAP CPQ API Documentation

External Webservices

7 REST API

Most of SAP CPQ REST APIs are developed according to SAP's guidelines and standards.

To use REST APIs, start by consulting the detailed documentation:

● REST API documentation is maintained on Swagger .● Custom table APIs are described in a separate platform● Custom APIs, which can reference a global script created in SAP CPQ to an external server by using a web

service client (such as Postman) to initiate a certain operation or retrieve data are detailed on Custom API (Global Scripts Consumed as REST API Web Services) [page 457].

● You can see which API endpoints belong to User Interface APIs in User Interface API [page 460]. This type of API isn't intended for administrators, but for the system to use.

● API packages are described in the SAP API Business Hub:○ The next generation SAP Configure Price Quote APIs used for the Quote 2.0 engine○ Get standard and subscription billing products○ APIs used for creation and synchronization of business partners and partner functions

REST API Authentication [page 420]All SAP CPQ REST APIs are stateful except the endpoints authenticated with basic HTTP authentication, bearer tokens and JWT tokens. These endpoints are stateless (no session).

Script API [page 431]You can deploy scripts to SAP CPQ from an external environment intended for development (such as GitHub).  By shifting the process of script development from SAP CPQ to an external system, you can improve the process of script development, automated testing and change management.

SCIM API [page 441]

Configurations API [page 444]Configurations REST API is used for working with configurable products.

Custom Table API [page 447]

Rate Plans API [page 447]

REST API for Updating Ship To, Bill To and End User [page 448]

API for Content Upload [page 448]The API for content upload enables a streamlined management of images and content files mainly for content providers that do not have the login rights for SAP CPQ.

REST API Error Codes [page 454]

Custom API (Global Scripts Consumed as REST API Web Services) [page 457]Global Scripts created in SAP CPQ can act as REST API web services. In other words, you can send an API request which references a global script created in SAP CPQ to an external server by using a web service client (such as Postman) to initiate a certain operation or retrieve data.

User Interface API [page 460]User Interface API is intended for SAP CPQ to use to perform certain operations, such as retrieving user types.

SAP CPQ API DocumentationREST API PUBLIC 419

7.1 REST API Authentication

All SAP CPQ REST APIs are stateful except the endpoints authenticated with basic HTTP authentication, bearer tokens and JWT tokens. These endpoints are stateless (no session).

Different REST APIs in SAP CPQ support different authentications types:

● Bearer Token API Authentication [page 421]● JWT Bearer Token API Authentication [page 425]● Stateful API Authentication (authentication with cookies) [page 427]● Basic API Authentication [page 430]

In the following sections, you can learn more about each authentication type and find out for which APIs it can be used.

NoteMethods available for REST APIs are listed and described in Swagger https://webcomcpq.com/webapihelp/index.

To check the supported authorization for an endpoint in Swagger, click the (padlock) icon.

Bearer Token API Authentication [page 421]

JWT Bearer Token API Authentication [page 425]

Stateful API Authentication (authentication with cookies) [page 427]

Basic API Authentication [page 430]

420 PUBLICSAP CPQ API Documentation

REST API

7.1.1 Bearer Token API Authentication

This type of authentication is used for authentication of all endpoints that begin in api/v1/admin and /api/script/v1/.

Note

To check the supported authorization for an endpoint in Swagger, click the (padlock) icon.

In order to access any part of SAP CPQ Setup via REST API, you need to be logged in.

Password Grant (Access Token)You need to provide the username, password, and an appropriate domain to make a POST request to the server to exchange the password for an access token. Along with this data, the following information needs to be provided:

● Route: /basic/api/token● Method: POST● Body: grant_type=password&username={username}&password={password}&domain={domain}● Response:

{ "access_token": "{access token}", "token_type": "bearer", "expires_in": 299,"refresh token": "{refresh token}" }

SAP CPQ API DocumentationREST API PUBLIC 421

Once you receive an access token, you can access certain parts of Setup (corresponding to endpoints which use the bearer token are marked as such in Authorization Info). The initially obtained access token has a validity period of 5 minutes, but can be extended with the use of refresh tokens.

Refresh Token GrantEach refresh token extends the session by additional 20 minutes and there is no upper limit on the number of refresh tokens that can be issued. By using refresh tokens, you bypass authentication with username and password each time the session expires.

● Route: /basic/api/token● Method: POST● Body: grant_type=refresh_token&refresh_token={refresh_token}● Response:

{ "access_token": "{access token}", "token_type": "bearer", "expires_in": 299,"refresh token": "{refresh token}" }

422 PUBLICSAP CPQ API Documentation

REST API

After receiving the token, you need to update the request in one of the two following ways:

NoteIf you are updating the request in the Headers tab, enter Bearer followed by a single blank space and the token.

SAP CPQ API DocumentationREST API PUBLIC 423

NoteAccess tokens grant administrators a 5-minute access to SAP CPQ to execute API calls. After 5 minutes, the access token is no longer valid. To prolong the access time, you can either use a new access token or you can use the refresh token:

● If you use a new access token, you’ll get another 5 minutes to call the APIs. You need to set grant_type to password and you need to send the username and the password (if an access token expires and you use a new one, every time you’ll need to send the username and the password).

● If you use a refresh token, you get an additional 20 minutes during which you can use the access token (without the username and password) and get another 5 minutes to call SAP CPQ APIs. This gets you a new pair of access and refresh tokens which you can reuse again in the same way. The best time to use the refresh token is when the time granted via the access token is nearing the end.For refresh tokens, grant_type should be set to refresh_token, you don’t need to send the username and password, and you need to populate refresh_token with the token you received. A refresh token lasts for 20 minutes and it can be used only once.

Bearer Token with Scope

The following information is required for generating a bearer token for the configurations_admin scope [page 444]:

● Route: /basic/api/token● Method: POST● Body:

grant_type=password&username={username}&password={password}&domain={domain}&scope=configurations_admin

● Response:

{ "access_token": "{access token}", "token_type": "bearer", "expires_in": 299,"refresh token": "{refresh token}"}

The scope claim contains the list of requested scopes separated by commas.

424 PUBLICSAP CPQ API Documentation

REST API

7.1.2 JWT Bearer Token API Authentication

To generate a JWT token, follow these steps:

1. Get the bearer token.

2. Use the access_token to get the JWT token.

SAP CPQ API DocumentationREST API PUBLIC 425

3. Use this JWT as bearer token to call custom API.

Generate JWT Token in SAP CPQ

1. Go to Setup General Application Parameters General Parameters and generate a shared secret key in Shared secret.

2. Generate a JWT token.You can use https://jwt.io/, for example.

3. Pass the token in Authorization.

426 PUBLICSAP CPQ API Documentation

REST API

7.1.3 Stateful API Authentication (authentication with cookies)

This authentication type is used for responsive design APIs. If you are calling an API from a SAP CPQ page using JavaScript, no additional steps are required as you are already authenticated. However, if you are calling the API from a third-party tool, you should first log in calling the method /api/rd/v1/Core/LogIn. This creates a session and gets the CSRF header token.

This call will set two cookies that you should set with these API calls:

● ASP.NET_SessionId● Webcom-lbal (or Webcom-ID - the name varies depending on the environment)

Note

To check the supported authorization for an endpoint in Swagger, click the (padlock) icon.

SAP CPQ API DocumentationREST API PUBLIC 427

If the POST method is executed, the CSRF token needs to be sent as well.

428 PUBLICSAP CPQ API Documentation

REST API

import clr clr.AddReference("System.Net")from System.Net import CookieContainerfrom System.Net import Cookiefrom System.Net import WebRequestfrom System.Net import HttpWebResponsebaseUrl = 'https://sandbox.webcomcpq.com/api/rd/v1/'webRequest = WebRequest.Create(baseUrl + 'Core/LogIn?username=usernameGoesHere&password=passwordGoesHere&domain=domainGoesHere')webRequest.CookieContainer = CookieContainer()webRequest.Method = 'POST'webRequest.ContentLength = 0response = webRequest.GetResponse()cookies = response.CookiesnewRequest = WebRequest.Create(baseUrl + 'QuoteList/GetInitData?tabId=1')# 1 in tabId is for My Quotes tabnewRequest.Method = 'GET'# we are creating cookie container to collect cookiesnewRequest.CookieContainer = CookieContainer()# setting cookies from the response of the login requestnewRequest.CookieContainer.Add(cookies)

SAP CPQ API DocumentationREST API PUBLIC 429

newResponse = newRequest.GetResponse()data = StreamReader(newResponse.GetResponseStream()).ReadToEnd() Trace.Debug(data)

Using this technique creates a session (SAP CPQ currently relies primarily on sessions) and returns a CSRF token which is used for POST methods.

NoteIf the CSRF token returns null even though you've followed the instructions provided in this topic, contact the SAP CPQ Support team.

7.1.4 Basic API Authentication

The following image shows an example of how basic authentication works.

Note

To check the supported authorization for an endpoint in Swagger, click the (padlock) icon.

430 PUBLICSAP CPQ API Documentation

REST API

7.2 Script API

You can deploy scripts to SAP CPQ from an external environment intended for development (such as GitHub).  By shifting the process of script development from SAP CPQ to an external system, you can improve the process of script development, automated testing and change management.

APIs are introduced for the following SAP CPQ objects: 

● Global Scripts API [page 431]● Custom Actions API [page 433]● Custom Calculations API [page 434]● Product-Level Scripts API [page 435] (global and local)● Responsive Design Templates API [page 438] 

The authentication method used for these APIs is OAuth basic (username and password) [page 430]. 

7.2.1 Global Scripts API

Endpoints:

§ GET - /api/script/v1/GlobalScripts + query parameters § POST - /api/script/v1/GlobalScripts/ § PUT - /api/script/v1/GlobalScripts/{id} § GET - /api/script/v1/GlobalScripts/{id} § GET - /api/script/v1/GlobalScripts/{id}/versions + query parameters

SAP CPQ API DocumentationREST API PUBLIC 431

§ GET - /api/script/v1/GlobalScripts/{id}/versions/{version id} § DELETE - /api/script/v1/GlobalScripts/{id}

Methods: GET, POST, PUT, DELETE

Authentication: OAuth basic (username and password) [page 430]

Schema:

{ "ScriptDefinition": { "Id": { "type": "integer", "description": "ID of Global script" }, "Name": { "type": "string", "description": "Name of Global script" }, "Description?": { "type": "string", "description": "Description of Global script" }, "Script": { "type": "string", "description": "Script code"// It will return BadRequest if content is not OK (syntax checker will run on this script) }, "Active?": { "type": "boolean", "description": "Parameter for defining if Global script is active. Default value will be false" }, "Module?": { "type": "boolean", "description": "Module" }, "StartDate?": { "type": "string", // ISO format should be used - yyyy-mm-dd "description": "Start date of Global script activity" }, "EndDate?": { "type": "string", // ISO format should be used - yyyy-mm-dd "description": "End date of Global script activity" }, "ModifiedBy?": { "type": "string", "description": "ID of user that modified script" // Should represent userName in CPQ, and we can use integration user for fallback (if ModifiedBy is null). If ModifiedBy does not exist BadRequest will be returned }, "ModifiedOn?": { "type": "string", "description": "Date when script was modified " // Parameter will be used only for Get methods. It will take DateTime.Now }, }, "ForceProxyGeneration?": { "type": "boolean", "description": "Proxy Generation" // Default value will be False }, "Events": { "type": "array",

432 PUBLICSAP CPQ API Documentation

REST API

"description": "List of events to which script will be assigned", "items": { "type": "object", "properties": { "rank?": { "type": "integer", "description": "event ranking for global script" // If it is not provided, it will be automatically assigned by CPQ system - it will be assigned highest rank number (it will be the last executed script for concerned event) }, "EventID": { "type": "integer" }, }, }, }, }

7.2.2 Custom Actions API

Endpoints:

§ GET - /api/script/v1/CustomActions + query parameters § POST - /api/script/v1/CustomActions/ § PUT - /api/script/v1/CustomActions/{id} § GET - /api/script/v1/CustomActions/{id} § GET - /api/script/v1/CustomActions/{id}/versions + query parameters § GET - /api/script/v1/CustomActions/{id}/versions/{version id} § DELETE - /api/script/v1/CustomActions/{id}

Methods: GET, POST, PUT, DELETE

Authentication: OAuth basic (username and password) [page 430]

Schema:

{ "ActionDefinition": { "Id": { "type": "integer", "description": "CPQ internal ID of Custom Action" }, "Name": { "type": "string", "description": "Name of Custom Action" }, "System ID?": { "type": "string", "description": "System ID of Custom Action" }, "Placement": { "type": "char", "description": "Placement of Custom Action" }, "PrimaryAction?": { "type": "boolean",

SAP CPQ API DocumentationREST API PUBLIC 433

"description": "Parameter for defining if Custom Action is Primary. Default value will be false" }, "Script": { "type": "string", "description": "Script code"// It will return BadRequest if content is not OK (syntax checker will run on this script) }, "ModifiedBy?": { "type": "string", "description": "ID of user that modified script" // Should represent userName in CPQ, and we can use integration user for fallback (if ModifiedBy is null). If ModifiedBy does not exist BadRequest will be returned }, "ModifiedOn": { "type": "string", "description": "Date when script was modified " // Parameter will be used only for Get methods. It will take DateTime.Now }, }, "ActionCondition": { "GlobalCondition": { "type": "string", "description": "Global Condition of Custom Action" }, "PreActionCondition": { "type": "string", "description": "Pre Condition of Custom Action" }, "PostActionCondition": { "type": "string", "description": "Post Condition of Custom Action" }, }, "ForceProxyGeneration?": { "type": "boolean", "description": "Proxy Generation" }, }

7.2.3 Custom Calculations API

Endpoints:

§ GET - /api/script/v1/CustomCalculations + query parameters § POST - /api/script/v1/CustomCalculations/ § PUT - /api/script/v1/CustomCalculations/{id} § GET - /api/script/v1/CustomCalculations/{id} § GET - /api/script/v1/CustomCalculations/{id}/versions + query parameters § GET - /api/script/v1/CustomCalculations/{id}/versions/{version id} § DELETE - /api/script/v1/CustomCalculations/{id}

Methods: GET, POST, PUT, DELETE

434 PUBLICSAP CPQ API Documentation

REST API

Authentication: OAuth basic (username and password) [page 430]

Schema:

{ "CalculationDefinition": { "Id": { "type": "integer", "description": "ID of Custom Calculation" }, "Name": { "type": "string", "description": "Name of Custom Calculation" }, "Active": { "type": "boolean", "description": "Parameter for defining if Custom Calculation is active. Default value will be False" }, "RowType": { "type": "enum", "description": "Row Type for Custom Calculation" }, "Description?": { "type": "string", "description": "Description of Custom Calculation" }, "Script": { "type": "string", "description": "Script code"// It will return BadRequest if content is not OK (syntax checker will run on this script) }, "ModifiedBy?": { "type": "string", "description": "ID of user that modified script" // Should represent userName in CPQ, and we can use integration user for fallback (if ModifiedBy is null). If ModifiedBy does not exist BadRequest will be returned }, "ModifiedOn?": { "type": "string", "description": "Date when script was modified " // Parameter will be used only for Get methods. It will take DateTime.Now }, }, "ForceProxyGeneration?": { "type": "boolean", "description": "Proxy Generation" // Default value will be False }, }

7.2.4 Product-Level Scripts API

Endpoints:

Product local scripts (Schema1):

SAP CPQ API DocumentationREST API PUBLIC 435

§ GET - /api/script/v1/ProductScripts/{product id} + query parameters § GET - /api/script/v1/ProductScripts/{product id}/versions + query parameters § GET - /api/script/v1/ProductScripts/{product id}/versions/{versionId} § POST - /api/script/v1/ProductScripts/{product id}/Script § PUT - /api/script/v1/ProductScripts/{product id}/Script/{id} § DELETE - /api/script/v1/ProductScripts/{product id}/Script/{id} Product Global scripts (Schema2): § PUT - /api/script/v1/ProductScripts/{product id}/GlobalScripts/{id}/attach § PUT - /api/script/v1/ProductScripts/{product id}/GlobalScripts/{id}/dettach

Methods: GET, POST, PUT, DELETE

For attaching global scripts to products, POST method is used. The appropriate global script ID should be provided. In other scenarios, if ID is passed, it will be ignored. For detaching global scripts from products, POST method is used. The appropriate global script ID should be provided.

Authentication: OAuth basic (username and password) [page 430]

Schema:

○ Schema1: { "ProductScriptDefinition": { "Id": { "type": "integer", "description": "ID of Product script" }, "Name": { "type": "string", "description": "Name of Product script", }, "Description?": { "type": "string", "description": "Description of Product script" }, "Script": { "type": "string", "description": "Script code"// It will return BadRequest if content is not OK (syntax checker will run on this script) }, "Active?": { "type": "boolean", "description": "Parameter for defining if Product script is active. Default value will be false" }, "StartDate?": { "type": "string", // ISO format should be used - yyyy-mm-dd "description": "Start date of Product script activity" }, "EndDate?": { "type": "string", // ISO format should be used - yyyy-mm-dd "description": "End date of Product script activity" }, "ModifiedBy?": { "type": "string", "description": "ID of user that modified script" // Should represent userName in CPQ, and we can use integration user for fallback (if ModifiedBy is null). If ModifiedBy does not exist BadRequest will be returned },

436 PUBLICSAP CPQ API Documentation

REST API

"ModifiedOn?": { "type": "string", "description": "Date when script was modified " // Parameter will be used only for Get methods. It will take DateTime.Now }, }, "ForceProxyGeneration?": { "type": "boolean", "description": "Proxy Generation" // Default value will be False }, "Events": { "type": "array", "description": "List of events to which script will be assigned", "items": { "type": "object", "properties": { "rank?": { "type": "integer", "description": "event ranking for global script" // If it is not provided, it will be automatically assigned by CPQ system - it will be assigned highest rank number (it will be the last executed script for concerned event) }, "EventID": { "type": "integer" }, }, }, }, } ○ Schema2: { "ChangeSetId?": { "type": "String", "description": "Change set ID" // If ChangeSet is null, default Change set will be used. If ChangeSet does not exist BadRequest will be returned }, "Events": { "type": "array", "description": "List of events to which script will be assigned", "items": { "type": "object", "properties": { "rank?": { "type": "integer", "description": "event ranking for global script" // If it is not provided, it will be automatically assigned by CPQ system - it will be assigned highest rank number (it will be the last executed script for concerned event) }, "EventID": { "type": "integer" }, }, }, } }

SAP CPQ API DocumentationREST API PUBLIC 437

7.2.5 Responsive Design Templates API

Endpoints:

Responsive Templates (Schema1): § GET - /api/responsiveTemplate/v1/customResponsiveTemplates + query parameters § GET - /api/responsiveTemplate/v1/customResponsiveTemplates/{id} § POST - /api/responsiveTemplate/v1/customResponsiveTemplates § PUT - /api/responsiveTemplate/v1/customResponsiveTemplates/{id} § GET - /api/responsiveTemplate/v1/customResponsiveTemplates/{templateId}/versions + query parameters § GET - /api/responsiveTemplate/v1/customResponsiveTemplates/{templateId}/versions/{versionId} § DELETE - /api/responsiveTemplate/v1/customResponsiveTemplates/{id} System Templates (Schema2): § GET - /api/responsiveTemplate/v1/systemResponsiveTemplates + query parameters § GET - /api/responsiveTemplate/v1/systemResponsiveTemplates/{id}

Methods: GET, POST, PUT, DELETE

Authentication: OAuth basic (username and password) [page 430]

Schema:

○ Schema1: { "Id": { "type": "integer", "description": "CPQ internal ID of Responsive Template" }, "TemplateId": { "type": "int "description": "Template Id" if not exists BadRequest will be returned }, "Name": { "type": "string", "description": "Name of template" }, "Description?": { "type": "string", "description": "Description of Global script" }, "Default?": { "type": "boolean", "description": "Parameter for defining if Template is Default. Default value will be false" }, "Content": { "type": "string", "description": "Template code" } } ○ Schema2:

438 PUBLICSAP CPQ API Documentation

REST API

{ "SystemTemplates": { "type": "array", "description": "List of system templates", "items": { "type": "object", "properties": { "Page: { "type": "string", "description": "" }, "Id": { "type": "integer", "description": "" }, "Content": { "type": "string", "description": "content of template" } }, } } }

7.2.6 Continuous Integration/Continuous Delivery (CI/CD) Process in SAP CPQ – Best Practices

The page describes the recommended method of establishing integration of SAP CPQ with external applications for deployment and continuous integration/continuous delivery processes.

In establishing this integration, you reduce high manual effort, automate the process of testing scripts, prevent overlapping of modifications you and other administrators perform and improve the overall development process.

Continuous Integration/Continuous Delivery Pipeline

This section outlines the recommended process of deployment of changed SAP CPQ objects through the example of scripts, as they are the most complex entity which requires testing. You can apply this method for deployment of scripts modified in a development tenant, which will be sent to an SAP CPQ QA/UAT/testing tenant once the testing and versioning of scripts is complete, and finally to the production environment.

NoteIf you are only using the testing and production tenants, the CI/CD pipeline starts from step 6.

1. Filter the changed scripts and move them to the CI/CD tool. Refer to the methods of filtering the modified scripts [page 441] you wish to send to the CI/CD tool.

SAP CPQ API DocumentationREST API PUBLIC 439

Note

Filtering and moving scripts is done with the GET API method. Refer to SAP CPQ Swaggerdocumentation for details regarding the AuditTrail and GlobalScripts APIs.

2. Send a pull request to the Version Control System’s (VCS) development tenant.3. Use the GET API method to reach the endpoint from which you wish to retrieve SAP CPQ scripts.

The CI/CD tool pulls the scripts from SAP CPQ and iterates through them to test for any mistakes.4. When the scripts are tested and no errors are found, send a pull request to the VCS’s test branch.

The CI/CD tool picks up the scripts for further testing.5. When testing is complete, send a merge request to SAP CPQ test tenant to update the modified scripts.6. Issue a pull request from VCS test to VCS master branch.7. Use the GET API method to retrieve scripts from SAP CPQ test tenant.

The pipeline is initiated, and the CI/CD tool pulls the scripts from SAP CPQ to test them.8. Issue a pull request to send the modified and tested scripts to the SAP CPQ production environment.

Once the merge request is approved, the scripts are sent to the main branch in the SAP CPQ Production environment.

NoteThe outlined method can be used with various types of Continuous Integration/Continuous Delivery tools and Version Control Systems.

NoteAt any given moment, if the scripts contain errors, they can be fixed in the external application for testing and versioning, and sent to SAP CPQ via the API, so that no script modifications are compromised in SAP CPQ.

Sending Scripts to CI/CD Tool [page 441]

440 PUBLICSAP CPQ API Documentation

REST API

7.2.6.1 Sending Scripts to CI/CD Tool

You can use Script API [page 431] to push modified scripts into an external version control system (such as GitHub), which can feed it back into a higher SAP CPQ environment once the script changes are validated with a CI/CD tool.

Once you modify scripts, either via the SAP CPQ editor, or your local editor (and send them to SAP CPQ), you can filter the modified scripts you wish to move to the CI/CD tool in two ways:

● If several scripts needs to be versioned, extract the changed objects from SAP CPQ via the CI/CD tool by using the GET API method that corresponds to the modified script. To retrieve the scripts changed in a specific time frame, you can filter their Date Modified column to get only the entities which were modified between certain dates.

● If a large number of scripts needs to be versioned, extract the changed objects by calling the Change Set API or Audit Trail API, which return all changes made in the specified time frame, and then call the GET API method for the modified entities.

NoteIt is also possible to set up a periodic pull of modified scripts via the CI/CD tool (this approach is recommended if only a few scripts are changed, as simultaneous changes on a larger number of scripts performed by several developers could lead to overlapping inconsistent script modifications.

7.3 SCIM API

The SAP CPQ SCIM API enables you to manage users and their group assignments. If the SAP CPQ users are centrally managed in an external system, such as SAP Identity Authentication Service, this API can be used to integrate with the external system for user provisioning.

The System for Cross-domain Identity Management (SCIM) specifications are designed to make identity management in cloud-based applications and services easier. This API follows the SCIM protocol (RFC7644) which makes integration easier when SAP CPQ is integrated with other SCIM-compliant systems.

You can use this API to:

● Create a new user (POST on /Users)● Retrieve a list of users (GET on /Users)

NoteSCIM API supports filtering by the following parameters:○ id○ userName○ groups○ emails○ name.familyName for operator eq○ lastModified for operators eq, gt, ge, lt and le

SAP CPQ API DocumentationREST API PUBLIC 441

● Retrieve user details (GET on /Users/{id})● Update user details (PUT on /Users/{id})● Activate or deactivate a user (PATCH on /Users/{id})● Delete a user (DELETE on /Users/{id})● Retrieve a list of groups (GET on /Groups)

NoteFiltering by DisplayName and Id using the operator eq is supported.

● Retrieve group details (GET on /Groups/{id})● Unassign or assign users to a group (PATCH on /Groups/{id})

Authorization Check

Administrators can access SCIM APIs via basic authorization [page 430]. However, if the Access Rights feature is enabled for the tenant (Enable Access Rights toggle switch is turned on in Setup Users Access Rights ), the system performs additional authorization check:

● if users are listed as access rights administrators, they have full access to SCIM APIs, that is, they can perform GET, POST, DELETE, and PATCH actions.

● if users are not listed as access rights administrators, the system checks whether they have enabled access to managing users. If the access is enabled, they can access SCIM APIs. This is managed in Users

Access Rights Access Rights Settings . Besides, if the Read-only function is turned on, only GET endpoints can be accessed.

Mappings between SCIM API and SAP CPQ

The following table shows the detailed mappings between the field names in SCIM API and the corresponding user fields in SAP CPQ Setup.

SCIM API Field Names SAP CPQ User Fields Notes

userName Username

emails Email If a user has multiple emails, the pri­mary email (the value of primary pa­rameter is true) will be mapped.

familyName Last Name

givenName First Name

organization Company Company is identified by its system ID, for example, company_cpq.

442 PUBLICSAP CPQ API Documentation

REST API

SCIM API Field Names SAP CPQ User Fields Notes

phoneNumbers Phone and Fax When the field type is work, it's map­ped to Phone; When the field type is fax, it's mapped to Fax.

streetAddress Address(1) Only when the field type is home, streetAddress is mapped to Address(1).

locality City

region State

postalCode ZIP Code

country Country/Region

groups The groups in SCIM API are handled as follows:

● ADMINISTRATOR groupIf user is in this group, the user will be marked as administrator in SAP CPQ.

● Group with suffix -USERTYPEThis group is used to specify the user’s user type. The user type is referred by its system id without the suffix. For example, if the user type Sales Manager has system ID Sales_Manager_cpq, then it should be Sales_Manager_cpq-USERTYPE. To create or update a user, there must be one and only one -USERTYPE group.

● Permission groupOther groups are permission groups. They are also referred by their system IDs.

isSsoUser Is SSO User

User Creation

Users can be created in two steps via SCIM API. In the first step of user creation via API, you can send the user information without stating their user type and permission group. They will be assigned the System user type and marked as inactive, which means they can’t log into SAP CPQ until their user type and permission group are stated in the following API call.

SAP CPQ API DocumentationREST API PUBLIC 443

User Deletion

The user cannot be deleted if:

● User is other users' ordering, approval or managing parent.● User has been blocked for deletion. For more information, see Block Users from Being Deleted.

Soft-deleted User

If the user cannot be physically deleted from the system (for example, there are still quotes linked to the user) the user will be marked as soft-deleted user and set to inactive. The soft-deleted user will not be visible in SAP CPQ and it can't be exported.

Soft-deleted User Reinstatement

When creating a user with the same user name of the soft-deleted user, if the first name, last name and email are all the same as the soft-deleted user’s first name, last name and email, the soft-deleted user will be reinstated. If any of the first name, last name or email is different, the user reinstatement will be rejected.

Related Information

Access Rights

7.4 Configurations API

Configurations REST API is used for working with configurable products.

You can use this API to:

● create a configuration for the product with the specified system ID and initialize the configurator (POST /api/configuration/v1/configurations)

● get the model of the active tab for the specified configuration (GET /api/configuration/v1/configurations/{configurationId}/display)

● change the attribute value for the specified configuration (PATCH /api/configuration/v1/configurations/{configurationId}/attributes/{standardAttributeCode})

● change the attribute value quantity for the specified configuration (PATCH /api/configuration/v1/configurations/{configurationId}/attributes/{standardAttributeCode}/attributeValues/{attributeValueId})

● delete the configuration with the specified configuration ID (DELETE /api/configuration/v1/configurations/{configurationId})

444 PUBLICSAP CPQ API Documentation

REST API

● get the configuration by the specified configuration ID (GET /api/configuration/v1/configurations/{configurationId})

● update the header level fields of the configuration with the specified configuration ID (PATCH /api/configuration/v1/configurations/{configurationId})

● clone the configuration with the specified configuration ID POST /api/configuration/v1/configurations/{configurationId}/clone

● partially update the configuration context for the current session (PATCH /api/configuration/v1/configurations/configurationContext)

● create or update the configuration context for the specified owner ID (POST /api/configuration/v1/configurations/configurationContext)

● get the configuration context for the specified configuration (GET /api/configuration/v1/configurations/{configurationId}/configurationContext)

● partially update the configuration context for the specified configuration (PATCH /api/configuration/v1/configurations/{configurationId}/configurationContext)

Note

More details are available in the Configurations API documentation . In addition, you can learn about the limitations of this API in Limitations and Known Issues 2205.

Configurations API AuthenticationThis endpoint is authenticated with bearer authentication combined with ASP.NET_SessionId [page 421]. This API is stateful and relies on the ASP.NET session. When the first call to the API is issued, a session is created and a session ID is returned in the response. This session ID should be used in follow-up requests for optimal performance.

Scope Description

configurations_admin Full privilege scopes, where all API endpoints are available and resources are accessed via the privileges of the logged-on SAP CPQ user.

configurations_user Limited scope where restrictions specific to the SAP Commerce Cloud integration apply, where the API is called from an insecure client.

Once obtained, a bearer token with scope can be used for authentication the same way as a regular bearer token. It should be passed through the Authorization header in each API request:

POST /api/configuration/v1/configurations HTTP/1.1

Host: {CPQ url}

Authorization: Bearer {access token}

Content-Type: application/json

Body:

{ "ProductSystemId": "{product system ID}"}

SAP CPQ API DocumentationREST API PUBLIC 445

When making the first request, only the bearer token should be provided.

Using the bearer token and gettting the session ID from the response to the first request:

In the next request, the bearer token and the cookies from the first response should be used.

446 PUBLICSAP CPQ API Documentation

REST API

7.5 Custom Table API

Custom table REST APIs are available to simplify custom table operations.

JWT Bearer token authorization [page 420] is supported for this API. Specifically, to be able to use the API, you first need to generate a shared secret key in SAP CPQ as explained here [page 425].

You can use this API to:

● create a new custom table (POST custom-table/v1/customTables/ )● update a custom table (PATCH custom-table/v1/customTables/{table})● delete a custom table (DELETE custom-table/v1/customTables/{table})● insert a new custom table row (POST custom-table/v1/customTables/{table}/entries)● update a custom table row (PUT custom-table/v1/customTables/{table}/entries)● delete a custom table row (DELETE custom-table/v1/customTables/{table}/{id})● update or create custom table rows (PATCH custom-table/v1/customTables/{table}/entries)

Note

All endpoints with detailed descriptions are available in the Custom Table API documentation .

Related Information

REST API Authentication [page 420]

7.6 Rate Plans API

URL:  /setup/api/v1/admin/sb/ratePlansByProduct

Method: GET

Input parameters: id (required): product ID

Authentication: Bearer Token [page 420]

Schema: Rate Plans Schema [page 447]

7.6.1 Rate Plans Schema

[ { "Id": "string", "Code": "string",

SAP CPQ API DocumentationREST API PUBLIC 447

"Description": "string", "RatePlanTemplateId": "string", "Snapshots": [ { "EffectiveAt": "string", "Parameters": [ { "Code": "string", "Value": "string", "Type": "string" } ] } ] } ]

7.7 REST API for Updating Ship To, Bill To and End User

You can use this REST API to update:

● Ship To and End User data for a specific quote (without changing that data in other quotes or in the Setup)● Bill To data (which will be updated in every quote with the same customer and in the Setup) 

This API is used only for Quote 2.0.

Request method: PATCH 

URL: https://ENVIRONMENT/api/v1/quotes/QUOTEID/customers/CUSTOMERROLEID

CUSTOMERROLEID has one of the following values:  

● Bill To: 1 ● Ship To: 2 ● End Customer: 3 

Example URL: https://devfl.webcomcpq.com/api/v1/quotes/123/customers/1 

7.8 API for Content Upload

The API for content upload enables a streamlined management of images and content files mainly for content providers that do not have the login rights for SAP CPQ.

Example

In a company that uses SAP CPQ, a designer is in charge of providing images and content files for administrators. As sales is not part of his day-to-day activities, the designer does not have the login rights for SAP CPQ.

448 PUBLICSAP CPQ API Documentation

REST API

Previously, the designer would have to prepare the material and send it to the administrator who could upload it to SAP CPQ. The new API allows the designer to upload the content to a central repository on the server. After the system detects the changes, the content is pushed via the API to SAP CPQ.

NoteThe API is tenant specific and is off by default for the existing and new SAP CPQ tenants. To turn on/off the API, use the application parameter Enable API For Content Upload in Setup General Application Parameters General Parameters .

Supported Content Types and Formats

When uploading/updating/deleting content, you should define the content type so that the system could locate it in the appropriate folder in the repository. The API can manage the following content types:

● product images● category images● attribute images● quote action images● custom images● content files

NoteThe content files managed via the API are uploaded to the root content directory in SAP CPQ.

The format of the content must comply with the formats supported by the API:

● Content files - the formats stated in Manage Content Documents in SAP CPQ.

● Images - JPG, JPEG, PNG, GIF, BMP, TIF, JFIF and TIFF.

SAP CPQ API DocumentationREST API PUBLIC 449

Security

Only SAP CPQ administrators have the permissions for authenticating and enabling the API for content upload. For ensuring that the content is managed securely:

● Data is sent between the browser and the repository via a secured HTTPS protocol.● Users can be authenticated via Basic authentication [page 430], JWT Bearer Tokens [page 425] and the

OAuth protocol.

7.8.1 Requests and Examples

The content upload API is a REST API.

You can use these methods to send requests via the API:

● GET● POST● PUT● DELETE

Depending on the content you wish to manage, use one of the following in the URL request:

● productimage● attributeimage● categoryimage● quoteactionimage● customimage● contentfile

450 PUBLICSAP CPQ API Documentation

REST API

GET

When making a GET request, add the file name after the file type:

SAP CPQ API DocumentationREST API PUBLIC 451

POST

The following image shows a request for creating files via the API:

PUT

You can create/update multiple files at once or update one individual file via the API.

452 PUBLICSAP CPQ API Documentation

REST API

The API returns the same response for POST and PUT requests:

SAP CPQ API DocumentationREST API PUBLIC 453

NoteTo update one file via the PUT request, state the file name in the request after the file type.

DELETE

State in the request the name of the file you wish to delete:

NoteAn appropriate message will inform you of the success of each request.

7.9 REST API Error Codes

API

Error Code Error Message

110000 Error code for API - failed model validation

110001 Error code for API - failed model validation - field is required

110002 Error code for API - failed model validation - field is too long

110003 Error code for API - failed model validation - field exceeds range

110004 Error code for API - failed model validation - invalid date for­mat

454 PUBLICSAP CPQ API Documentation

REST API

Error Code Error Message

110005 Error code for API - failed model validation - enum field is not valid

110006 Error code for API - failed model validation - string array item is too long

110007 Error code for API - failed model validation - list cannot be empty

110008 Error code for API - failed model validation - item key not unique

110009 Error code for API - failed model validation - invalid email ad­dress

110010 Error code for API - failed model validation - entity is already in use

111000 Error code for API - invalid owner

112000 Error code for API - generic validation error

113000 Error code for API - http response error

114000 Error code for API - parameters validation failed

115000 Error code for API - unauthorized user

116000 Error code for API - internal server error

117000 Error code for API - unauthorized scope

118000 Error code for API - resource not found

119000 Error code for API - action not allowed

119500 Error code for API - action timeout

Entity

Error Code Error Message

120001 Error code for entity - invalid system ID

Configurator

Error Code Error Message

131101 Error code for configuration context - load failed

131102 Error code for configuration context - load failed - not valid

131201 Error code for external configuration context - not found

132001 Error code for configurator - configuration not found

132002 Error code for configurator - configuration initialization

132003 Error code for configurator - configuration cannot be loaded, because it is invalid

132004 Error code for configurator - configuration cannot be loaded due to an error in product definition

SAP CPQ API DocumentationREST API PUBLIC 455

Error Code Error Message

132005 Error code for configurator - configuration cannot be loaded due to an error with pricing procedure determination

132006 Error code for configurator - product can't be opened in con­figurator due to an error in product attribute definition

132101 Error code for configurator - action not allowed - no permis­sions

132102 Error code for configurator - action not allowed - configura-tion is permanent

132204 Error code for configurator - product definition in the Exter­nal Configurator is invalid or incompatible with SAP CPQ rules

132205 Error code for configurator - External configuration type is not supported for Quote 1.0

Product

Error Code Error Message

140001 Error code for product - not found

140002 Error code for product - invalid product definition

Permission Group

Error Code Error Message

150001 Error code for permission group - field is too long

External Communication

Error Code Error Message

160001 Error code for external communication - generic error

160002 Error code for communication with SAP Cloud Integration - generic error

Quote

Error Code Error Message

181001 Quote item field value is not a number and can't be mapped to a pricing condition.

181002 Quote header field value is not a number and can't be map­ped to a pricing condition.

181003 The result of mapping quote item columns to pricing condi­tions is invalid. See the log for more details.

181004 The result of mapping quote header columns to pricing con­ditions is invalid. See the log for more details.

182001 Quote pricing procedure is not determined.

182002 Condition rate is maintained in a different currency than the one that is used on the quote/pricing document.

456 PUBLICSAP CPQ API Documentation

REST API

Error Code Error Message

182003 Pricing condition has multiple records that cannot be sum­med up (different calculation type, condition base or rate quantity).

182004 Multiple pricing conditions have been determined that are mapped to the same field.

182005 Pricing condition has unsupported time-based calculation type.

182006 Passed if-match header parameter (etag) value did not match expected value. Another user made changes to the pricing document.

Product Logic

Error Code Error Message

190001 Error code for product logic - state is invalid

Scripting

Error Code Error Message

200001 Error code for scripting - invalid operation

External Configurator

Error Code Error Message

210001 Error code for external configuration - script not found

210002 Error code for external configuration - invalid script

210003 Error code for external configuration - using the Favorites feature is not supported

7.10 Custom API (Global Scripts Consumed as REST API Web Services)

Global Scripts created in SAP CPQ can act as REST API web services. In other words, you can send an API request which references a global script created in SAP CPQ to an external server by using a web service client (such as Postman) to initiate a certain operation or retrieve data.

For example, after establishing a session with an integrated system, it is possible to retrieve data from a quote and send it to that system whenever a change is made to the quote (that is, when the condition in a global script is met.

The limit of payloads for the Custom API is 4MB.

NoteIf the integration with Salesforce is enabled, during the script execution, a session will be created for the logged-in administrator. That administrator should be logged in both in SAP CPQ and Salesforce.

SAP CPQ API DocumentationREST API PUBLIC 457

7.10.1 Custom API Authentication

Custom API calls can be authenticated with Basic Auth, No Auth and JWT Token methods.

Basic Authentication

When authenticated with the Basic Auth method, the API request needs to include the script name in the URL.

Examplehttps://cpqenvironment.webcomcpq.com/CustomApi/ExecuteScript?scriptname=test

No Authentication

Each custom API request authenticated with the No Auth method needs to include the script name, along with the access credentials (the administrator’s username and password) in the URL.

Examplehttps://cpqenvironment.webcomcpq.com/CustomApi/ExecuteScript?username=darmstrong&password=123&domain=default&scriptname=test

458 PUBLICSAP CPQ API Documentation

REST API

JWT Token Authentication

Custom API authentication with JWT tokens is performed in the same way as it is for other REST APIs. Refer to REST API Authentication [page 420] for more details.

7.10.2 Consume IronPython Global Scripts as REST API Webservices

SAP CPQ global scripts can be used to act as REST API web services. The client can call the server using a designated IronPython script to get an operation done or to retrieve some data.

Context

On this page you can learn how to make a HTTP post to SAP CPQ, so it executes an IronPython script and gets the response back.

Procedure

1. Create an IronPython global script in Setup Develop Global Scripts .

SAP CPQ API DocumentationREST API PUBLIC 459

For example, the script can be used for retrieving the Bill To customer’s first and last name, in which case it should contain the following lines:

billto = Quote.BillToCustomer billto.FirstName = Param.BillToCustomerName[“FirstName”]billto.FirstName = Param.BillToCustomerName[“FirstName”]

2. Create an HTTP POST request with content type application/x-www-form-urlencoded.

The URL should transfer the script name, SAP CPQ login information, and quote composite number (if a quote needs to be loaded before the script is executed (for example, when changing quote custom fields).

URL example:

http://dev.webcomcpq.com/customapi/executescript?scriptname=ScriptNameGoesHere&username=darmstrong &password=passwordGoesHere&domain=LoginDomainGoesHere&QuoteCompositeNumber=QuoteToLoadBeforeExecutingScriptGoesHere

3. Add the information that should be passed in the script to the request body in JSON format as a part of the variable named Param.

For example, the variable can contain the first and last name of the customer who receives the billing information in SAP CPQ.

Param={ “BillToCustomerName” :{FirstName: “John”,LastName: ”Smith”}}

4. Send the custom API call.

The response should contain the information requested in the Param variable (in this example the Bill-To customer’s first and last name).

7.11 User Interface API

User Interface API is intended for SAP CPQ to use to perform certain operations, such as retrieving user types.

It is not recommended for end users, since all operations performed with this API require several iterations to complete. In other words, they aren’t very user-friendly unlike SAP Standard REST APIs [page 419].

All APIs which contain the /rd/ element in their endpoints are User Interface APIs.

● Approval History● Approvals● Assets● Cart● CartDocuments● CartList● Catalog

460 PUBLICSAP CPQ API Documentation

REST API

● ChangeSets● CompareProducts● Configurator● Core● CustomerFeedback● Customers● DealView● Favorites● InvolvedParties● ProductDetails● QuoteLanding● QuoteList● RecentlyVisitedObjects● Recommendations● Revisions● SapCRMLanding● SBProviderRD● SegregationOfDutiesRD● UserPersonalization

SAP CPQ API DocumentationREST API PUBLIC 461

Important Disclaimers and Legal Information

HyperlinksSome 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.

Videos Hosted on External PlatformsSome 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.

Beta and Other Experimental FeaturesExperimental 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 CodeAny 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.

Bias-Free LanguageSAP supports a culture of diversity and inclusion. Whenever possible, we use unbiased language in our documentation to refer to people of all cultures, ethnicities, genders, and abilities.

462 PUBLICSAP CPQ API Documentation

Important Disclaimers and Legal Information

SAP CPQ API DocumentationImportant Disclaimers and Legal Information PUBLIC 463

www.sap.com/contactsap

© 2022 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