CRM and CX Blogs by Members
Find insights on SAP customer relationship management and customer experience products in blog posts from community members. Post your own perspective today!
Showing results for 
Search instead for 
Did you mean: 
0 Kudos

This blog will help you on how to create an opportunity from Sales Order header UI based on the user selection/requirement (button type custom UI field indicator(Yes/No) is added), thru the SAP Cloud Application Studio (PDI). Field indicator is created at tenant level and that would be imported into PDI (SDK) thru .ref object. You can also add another field to hold opportunity number in SO header UI for reference.

This process will be run during edit mode of SO.

Create a .XBO for extending CustomerQuote of AP.CRM.Global.

import ABSL;
import AP.CRM.Global;
import AP.Common.GDT;
import AP.PC.SalesTerritoryMgmt.Global;

if( this.CreateOpportunity && this.OpportunityNumber.IsInitial() ) {
// Get the account and ee responsible of the SalesQuote
var accountID;
var eeResponsible;
foreach(var p in this.Party) {
if(p.RoleCode == "1001") {
accountID = p.PartyKey;
if(p.RoleCode == "39") {
eeResponsible = p.PartyKey;
// Get the primary contact as well
var primaryContact = this.Party.MainPartyContactParty.GetFirst();
// Create the opportunity
var oppNode:elementsof Opportunity;
oppNode.Name.content = this.Name.content;
oppNode.ProcessingTypeCode = "OPPT";
var opp = Opportunity.Create(oppNode);
var opportunity = opp;
this.OpportunityNumber = opp.ID.RemoveLeadingZeros().content;
foreach(var p in opp.Party) {
// Set the account party id
if(p.RoleCode == "31") {
p.PartyKey = accountID;
// When there is a primary contact, set it
if(primaryContact.IsSet() && !primaryContact.PartyKey.PartyID.IsInitial()){
var partyContact = p.PartyContactParty.Create();
partyContact.PartyKey.PartyID.content = primaryContact.PartyKey.PartyID.content;
// Set an employee responsible
if(p.RoleCode == "39") {
p.PartyKey = eeResponsible;
// Set the Business Area - Sales Org
opp.SalesAndServiceBusinessArea.SalesOrganisationID =
// Set the Business Area - Dist Channel
opp.SalesAndServiceBusinessArea.DistributionChannelCode =
// Set the Business Area - Division
opp.SalesAndServiceBusinessArea.DivisionCode =



Chandra Gajula