Quantcast
Channel: Customer Relationship Management (SAP CRM)
Viewing all 228 articles
Browse latest View live

Date expired Territories and its reactivation in SAP CRM

$
0
0

For Territories with expired date need to run below mentioned reports in SAP GUI to reactivate to system default or evergreen date and use it for future.

 

  1.CRM_TERRMAN_SET_EXPIRY :

 

Before specifying a particular territory we need to run this report and to set expired flag

 

SAP CRM 40.png

   2. CRM_TERRMAN_TERR_REACTIVATE :

 

In this report we can specify the range of territories which needs the expired date needs to be changed to evergreen date

 

SAP CRM 41.png

 

Once we specify the range and execute the end date will be set to evergreen date by default.

 

SAP CRM 42.png

 

3.SAP CRM WEB UI :

 

Below screen shot shows the territories with end date :

 

 

SAP CRM 43.png

 

After running the above mentioned reports territory T332 “Valid To” has been changed to 12/31/999


SAP CRM 44.png


4.SAP Note :


SAP has recommended this note


2151085 - Unable to set new validity period for deleted territory.


Please do let me know if you want to add some more points to this topic.



SAP CRM web UI - session time out warning message

$
0
0

End user /Agents working on web UI with any of the transactions or pulling up business partner some time if they leave the screen idle will lead to time out hence losing of the data or need to rework hence this functionality will help to overcome this scenario.

 

We need to implement SAP NOTE – 2119701 which has again following pre-requisite notes needs to taken care 2092893, 2096030, 2097954, 2098586


1.Below screen shot shows the “times out limit” option available on the right hand side top corner before “Personalize” option.


SAP CRM1.png

2.Screen shot below shows the small window popping up as “Session Time Out Warning”

 

SAP CRM2.png

3.Once the time limit reached system ask for option “Restart” or “Offline Access”

Restart Option – Will reload the page to Business roles selection screen

Offline Access – Will keep alive on the same page

 

SAP CRM3.png

【CRM-BTX-BF-ATP】ATP check does not block when inputting items with same product

$
0
0

Dear consultants,

 

 

I came to a problem like this:

1. ERP stock has 100 pieces of product A. (ERP, T-code CO09)

2. In CRM order, add item 10 with product A, quantity 100 pieces, hit enter, ATP check result is ok, ATP light is green, so far it is ok.

3. Then add item 20 with same product A, 100 pieces, enter, ATP check is ok, light is green too <------------!!!!(not expected)

 

 

Customer expects quantity can be reserved after inputting item 10, and item 20 ATP check should not pass.

Finally, I found that this can be controlled on ERP, via T-code OVZ2, you can set up "Block QtRq" for relevant group.

2016-01-18_9-59-27.png

 

 

Tips:

1. Why did I write this blog?

    SD-BF-AC colleagues/ consultants might be very familiar to T-code OVZ2, but for CRM colleagues, some times we cannot think of this customizing place.

    So I share it here for your reference. For similar issue, this should be a good start.

2. What is OVZ2?

    You can refer to SD-BF-AC note: 1918247 - Blocking concept during the availability check

3. In this blog, I used R/3 ATP check scenario.

 

Hope the information can be helpful for you.

If you have more detailed information or comments for this topic, welcome to share together and appreciate in advance.

 

Best regards,

Yuan

sCRM ( Simple CRM ) - Point of View

$
0
0

Would sCRM (the name To-Be Decided) co deployed with S/4
HANA make paradigm shift in Enterprise software deployment and running it?

 

 

Simple answer would be yes. But that needs to become
reality, there are lot of aspects on the product to be made clear. The Roadmap
for sCRM is listed out below.  
 
S4 HANA CRM Roadmap.png 
Source: SAP Roadmap for S/4 HANA

 

Traditionally SAP CRM deployed as an independent unit having
separate schema ID. This gives a flexibility of deploying it standalone or
integrated with SAP ECC.This flexibility comes at cost of maintaining duplicate
maintenance of some master data ( Customer, Products etc.,) and interface
structure ( SAP CRM Middleware ) for data transfer among SAP CRM, SAP ECC and
SAP BW.

 

 

This duplicate master data maintenance brings in additional
confusion for deciding on leading system to create data (Customer Master).

 

 

Will the upcoming sCRM co deployment do away with this
bottleneck?

 

 

It is still not clear on the roadmap of sCRM. However the
hope is very high on Simple, Lean and Agile application which would excite both
customers as well as SI vendors. On that premise, Will the co deployment fuses
the common database tables mainly between CRM and ECC i.e., Customer Data
Model, Product (Material), Sales order Data model etc.? If the co deployment of
CRM and ECC achieves this and brings seamless interconnection between CRM
processes (Customer facing processes) and ECC Processes (Fulfilment processes),
this would greatly reduce the pain of CRM middleware monitoring and periodic
interventions.

 

 

SAP CRM depends on lot of other SAP Products to carry out
business transactions. i.e., Campaign Management or TPM needs Planning
application to maintain planning values. This Planning application reside in BW
and this has multitude of versions (BW-BPS, BI-IP, BPC & IBP (on HANA)). Moreover
the options available for single planning can be done in either BW-BPS or
BI-IP. Hope, this will get realigned and would be single application for
planning purposes common to CRM, APO and ECC.

 

 

Nowadays trend is towards customer experience with the help
of Omni channel. SAP CRM web channel is in distributed format at present. SAP
CRM is interfaced with Hybris which has separate schema. This distributed
format would need data exchange between these two systems to achieve near
customer experience in the Omni channel world. When sCRM is the Product, would
we expect CRM and Hybris would merge into single system?

 

 

On the User Experience front, there were different UIs for
CRM and ECC. Will sCRM along with S/4 HANA have harmonized uniform User
Experience?

 

 

If this co deployment would do away with duplicate data
maintenance and middleware tweaking, how this would help deploying sCRM as
standalone (without S/4 HANA as backend). So sCRM should address the deployment
options with great agility.

How to deactive unwanted system status from DB table CRM_JEST

$
0
0

Dear all,

 


You may come to system status issue like this, end user added system status unexpectedly and randomly, what worse is the issue cannot be reproduced. You just want to deactive this unwanted system status from CRM_JEST DB table. Then how to achieve this? I summarized steps here for your reference.

 

For example, in this quotation, you want to deactive I1610 "Payment requested".

    quotation.png

 

  1. T-code SE16.
  2. Input table CRM_JEST.
  3. Input OBJNR guid, F8.
  4. You want to set last entry “system status I1610” to inactive. Now INACT field is blank, this means it is active.

     1.png

   5. Select this entry, double click the GUID field, system will jumps to details view.

     2.png

  6. In Transaction input field, input /h, hit Enter to start debug mode, hit Enter again, debugger will start up.

  7. In debug mode, hit F6, see “code” field value is SHOW, change it to EDIT, Enter, F8 to continue.

    3.png

   8. Now INACT field becomes to be editable. Hit F4, in pop-up, select Inactive, click ok, save.

   5.png

   9. Then check the transaction document again, the target system status should be inactive now.

 

See! It works now! But please notice that this way is not a safe approach and not recommended. And this will be considered as customer modification. Before doing this, please always review the risks you may suffer. Hope this document can be helpful for you.

 

Thank you.

Best regards,

Yuan

 

 

Easy Condition Entry on CRM WebUI

$
0
0

There has been some inquiries on Easy Condition Entry recently in SCN. For examples,

1, Why is Condition Type 1 not filled in Item AB on webui?

2, Why must condition type allow manual entry to be used in Easy Condition Entry?

3, How to do quick entry of a condition type w/o navigating to item details?

4, How to add 6th or 7th condition types in Easy Condition Entry?

This WIKI intends to provide a clear introduction of business scenario and customizing to this functionality on WebUI.

 

There is always a necessity that we have to input a manual value to a condition type for an item/product in a sales order. What ordinarily comes to our mind is that we need to navigate to item detail by clicking on EIDT button in front of this item in the Item assignment block. But it is also commonly agreed that it is very time-consuming and sometimes exhausting if too many items' conditions shall be modified. A vivid example is that we have 1000 items in a contract and we have to change PR00 from 10 USD to 12 USD for the item 10 to item 600. I cannot even imagine this is happening to me. Definitely a nightmare!

 

The Easy Condition Entry will make it much easier for us as it provides a way to change a condition value for a item on header without going to the item details. In item assignment block on header, we can add a field for condition value of PR00 in the item list. We can input a new value manually into this field and PR00 on item level will be changed accordingly and all other condition values and net value on item will be updated as well.

 

So how to customize it?

1, SPRO -> CRM -> Basic Functions -> Pricing -> Pricing in the Business Transaction -> Set Up Easy Condition Entry

Fill the pricing procedure and up to 5 condition types in sequence.

Make sure the condition types allow manual entry for item. Otherwise, you will get an error that this condition type does not allow manual entry.

2016-2-11 8-08-21.jpg

 

2, Log on WebUI, click on personalize button on Item assignment block, you will be able to find the following fields.

Condition Amount 1 - 5

Condition Currency 1 - 5

Condition Price Unit 1 - 5

Condition Type 1 - 5

Condition Unit 1 - 5

Condition Value 1 - 5

 

There is a mapping between these fields and condition types maintained in point 1. Specifically,

Condition *** 1 <-> Z1

Condition *** 2 <-> Z2

Condition *** 3 <-> Z3

Condition *** 4 <-> Z4

Condition *** 5 <-> Z5

For example, if you enter 12 USD in Condition Value 1 for item 10 in Item assignment block, the Z1's condition value in Item 10 will be changed to 12 USD and all other conditions and net value will be updated as well.

 

2016-2-2 7-44-48.jpg

 

3, Q&A

Q: Why is Condition Type 1 not filled in Item assignment block on WebUI?

A: Please refer to point 1 and customize "Set Up Easy Condition Entry".

 

Q: Why condition type must allow manual entry to be used in Easy Condition Entry?

A: This is standard by design. The purpose of Easy Condition Entry is to allow manually change values of a condition type so it must allow manual entry.

 

Q: How to do quick entry of a condition type w/o going to item details?

A: Follow this WIKI and implement Easy Condition Entry.

 

Q: How to add 6th or 7th condition types in Easy Condition Entry?

A: This is not possible. Backend customizing in "Set Up Easy Condition Entry" only allows up to 5 condition types.

 

Hope I have made it clear. Feel free to raise any question in the reply.

 

Spencer

SAP CRM On-Premise Update: Q1 2016

$
0
0

Welcome Back!

 

Welcome to the Q1 2016 edition of the SAP CRM (On-Premise) quarterly update. It’s hard to believe that another year is over already and that we're already two months into 2016. I hope that you had an enjoyable, relaxing and refreshing holiday break. And now that you're back to work and ready to tackle new challenges and projects, I hope you can take advantage of some of the exciting new information highlighted in this post!


SAP CRM Continuous Innovation

 

As we mentioned in the SAP CRM Update: Q3, 2015 not only has SAP has committed to continue supporting SAP CRM through at least 2025 via mainstream maintenance, but SAP is also still actively investing in SAP CRM via quarterly releases with new functionality and enhancements. In October of Q3 SAP released EHP3 SP10, which introduced several updates such as: visualization of account search result list via GIS map integration, prevention of inadvertent deletion of contact persons that are still linked to active accounts, as well as various industry-specific enhancements for the Utilities sector. You can find the full details of what’s included in SP10 here. And then on Jan 21 we released the next enhancement package for CRM 7.0, EHP4.

 

However, support packs and enhancement packages are not the only ways that SAP CRM is delivering new innovations to customers. We are also continually developing and releasing new features via SAP Notes based on requests submitted by customers as part of the SAPCustomer Connection program. As described in this recent blog post, SAP just released fifty-six (56) new customer-requested CRM enhancements as part of the CRM2015 Customer Connection program.

That’s nearly twice as many enhancements as were delivered last year for the CRM2014 edition of the program. And just recently on Feb 4, we announced that for the CRM2016 round of the Customer Connection program, SAP will is planning to hopefully roll out about 100 more additional customer-requested enhancements! A full list of all SAP enhancements, including those from Customer Connection program, can be found in the SAP Improvement Finder tool.

In addition to the customer-requested enhancements delivered via the SAP Customer Connection program, SAP is also working on some other new innovations and products. Here are a few highlights of what's new and what's coming:

 

  • SAP Master Data Governance (MDG) Integration: SAP’s Master Data Governance (MDG) solution helps keep enterprise data (customer data, supplier data, financial data, material and asset data, etc.) clean across the entire SAP Business-Suite landscape. In earlier versions of SAP MDG, such as MDG 6.1, integration with SAP CRM was difficult and very restrictive. However with MDG 7.0, integration with SAP CRM has been greatly improved and simplified. As a result, master data maintenance can be performed on the CRM system and the MDG hub system can be used as an intermediary between the CRM and ERP clients without a need for middleware, as was previously required. See SAP Note 1929736 and the SAP MDG / CRM Integration Guide for full details.

  • HANA-Live Analytics – Improvement over CRM Interactive (OLTP) Reporting: With EHP3 SP05 for CRM 7.0, SAP released an exciting new analytics offering for CRM On-Premise called HANA-Live Analytics.  Similar to the older existing CRM Live (OLTP) Reporting option, HANA-Live Analytics allows real-time embedded reports using live CRM data without the need for BI/BW. Additionally, SAP HANA-Live Analytics offers a number of improvements and advantages over the old CRM Interactive (OLTP) Reporting. Check out the recent blog post, “SAP HANA-Live Analytics versus CRM Interactive (OLTP) Reporting” to find out where it makes sense to position each option.

  • “Fiori-Style” Blue Crystal Theme for SAP CRM: The SAP Blue Crystal theme is the standard UI design used in SAP Fiori applications. Blue Crystal is also available as a UI option for the SAP GUI. And now Blue Crystal can also be selected as a personalization theme for the CRM WebClient UI – providing a similar visual experience to SAP Fiori. It is important to note however, that while Blue Crystal harmonizes color scheme and design with Fiori, Blue Crystal is not actually built on HTML5/ SAPUI5, nor does it replicate Fiori's user interaction or navigation paradigm. For more details see this blog post as well SAP Note 2227135 - New visual design Blue Crystal for the CRM WebClient and SAP Note 2239424 - Blue Crystal Theme in Interaction Center for full details.

 

blue crystal.jpg
Screenshot of new "Fiori-style" Blue Crystal UI theme for SAP CRM

 

  • SAP CRM and ECC Co-Deployment: SAP HANA SPS 09 introduces the possibility to run multiple independent SAP HANA databases in one single SAP HANA system (SID) and manage them as a single unit. SAP refers to this functionality as “Multi-tenant database containers” and it is specifically designed to simplify database administration. SAP CRM customers can use this new multi-database container option to run SAP CRM and SAP ERP on the same HANA database. However, this approach doesn’t involve an actual consolidation of the CRM and ERP data models, nor a merging of any database tables. It also does not eliminate the need for middleware replication of data between CRM and ERP. See this blog post for more information.

  • Limited offline capabilities for select CRM Fiori apps:  With CRM 7.0 EHP3 SP10, released in October of this year, SAP CRM customers can run Fiori in the Cloud connected to their SAP CRM system. Among other things, Fiori Cloud Edition enables Fiori apps to be run in offline mode on smartphones and tablets. As a first step for CRM, with SAP Fiori 1.0 (wave 10) for SAP CRM 7.0 EHP3 SP10, we’ve enabled partial offline capabilities for two CRM Fiori apps: My AccountsandMy Contacts; click on the corresponding SAP Online Help links for a full list of supported capabilities and restrictions. Also, as a prerequisites SAP Mobile Platform (or its cloud edition HCPms) and SAP Mobile Secure are both required; see Jutta Weber’s blog post, “Using CRM Fiori apps offline” for more details.

 

  • Next-Gen Customer Engagement Center on Hybris-as-a-Service (YaaS): On Dec 15, 2015 SAP released a first version of our new, next-generation Omni-channel Customer Engagement Center, built on the Hybris-as-a-service YaaS cloud stack. This packaged set of on micro-services is primarily targeted at e-commerce customers who need to quickly implement a lightweight (but state-of-the-art) support desk to assist their customers using the company’s web storefront. The solution will potentially support all real-time communication mediums such as: voice calling, video chat, co-browsing, page-push, P2P file sharing, etc., via rich WebRTC browser-to-browser based communication. This offering is currently only available in the United States. Click here for more details and pricing information.

Blue Crystal.png
Screenshot of next-gen Customer Engagement Center (CEC) on YaaS

 

 

Industry Spotlight: Consumer Products Trade Promotion (TPx) – Customer Business Planning (CBP)

 

One of the strengths of SAP CRM has always been our industry focus – especially in sectors where end-to-end integration across the SAP landscape is a key differentiator over the competition. One such example is in the Consumer Products (CP) Sector with the Trade Promotion portfolio. The SAP Trade Management suite is very strategic in the CP portfolio. It has been an integral part of SAP CRM since 2001. With each CRM release we’ve continued to enhance the capabilities with market-leading processes such as: Funds & Claims, embedded analysis with Trade Promotion Effectiveness (TPE), Promotion Prediction & Optimization capability (TPO) and – in more recent times – tight integration with Demand Signal Management (DSiM).

 

The TPM suite now offers a variety of deployment options as well, exploiting the flexibility the HANA Enterprise Cloud and subscription pricing. There are now in excess of 100+ customers, with over 16,000 users promoting billions of Dollars/Euros through our TPM solution. TPM continues to be an area of innovation; we are extremely excited about the latest enhancement – Customer Business Planning– released earlier in October this year. Customer Business Planning fills the largest functional gap in our solution, and it is changing the conversation with customers of all sizes around the globe.Click here to read this blog post for full details.

 

 

Register for SAP Insider CRM2016 Conference (Las Vegas, NV, Mar 21 - 23)

 

Join me and several hundred other SAP customers, partners, and product experts at the CRM2016 SAP Insider conference in Las Vegas, Nevada, Mar 21 - 23.. I'll be giving two presentations -- one on SAP Fiori for CRM and the other on What's New in SAP CRM. Click here for full details.



Generating Microsoft Word Doc with dynamic data

$
0
0

In many cases there is a requirement to generate Microsoft word doc , which contains standard template data as well as dynamic variable data for creating an attachment.

 

Though there is standard functionality to create attachment in CRM with templates , but many times it may not suffice our requirement .

 

In this blog , I will provide steps which can be used to generate Microsoft word documents as attachment with dynamic data.

 

Software Required : Microsoft Word Content Control Tool Kit

 

 

 

 

pic1.png

Step 1 :  Create a Microsoft word template using the Content controls.

 

You can create the Microsoft word template , which contains the fixed text as well as dynamic data that you want to populate. The dynamic data will be handled by content controls at run time .

 

Content controls are predefined pieces of contents that include text blocks, drop-down menus, check boxes, and pictures, etc. You can map content controls with elements in an custom XML file so that the data can be automatically populated in the document.


pic2.png

 

Step 2:  Binding content controls to the custom XML part

 

Open the Word template you have just created in step 1 in word content control toolkit . Bind  the content controls to Custom XML parts.

 

Step 3 : Uploading the template to the MIME folder

 

Now upload the word template with content controls into the Mime repository in the SAP system  .

Go to SE80 and select MIME Repository, and expand to folder  . You can select the folder in which you want to upload the template.

Right-click your folder and choose Import MIME Objects. Select and upload the template.

On the Create New Document screen, select Application-Specific MIME Object as the document class, enter a document name, and choose Save.



Step 4 : Generate the XML data


Go to transaction XSLT_TOOLS and create a simple transformation Z_XML_GEN.


This transformation will  contain the dynamic data that you want to fill into the template . In our case we want to fill the Sold to name and sold to number from the SAP system .


Hence we write this transformation.This will generate custom XML with the data for sold to name and  sold to id.


pic3.png


Step 5: Fetch the Word Document template


Now in your program (where you actually want to generate the word template ), first we need to fetch the word template which we uploaded in Mime repository (step 3). It will be loaded in variable docx.



pic4.png


Step 6: Fetch Data and Call the transformation to generate custom XML


Now fill the data Sold to name and sold to id into structure ls_data (this structure can contain 2 fields sold_to_name and sold_to_id).  And call the transformation Z_GEN_XML with this data . The transformation will generate the custom XML  with the data for sold to name and sold to id. This will be stored in variable 'texts'


pic5.png


Step 7: Create the style sheets for the word template .


In step 5 we had fetched the word template from the mime repository into variable docx. Now we generate style sheet for this docx. Data stored in variable lt_xslttab.


pic6.png


Step 8 : Merge data


Merge the word template style sheet created in step 7 with the XML data generated from transformation in step 6.



pic8.png


pic7.png


Step 9 : Generate the attachment object with the merged data



lv_doc now contains the template data along with the merged data . Make sure everything is in  XSTRING format. With this you can now create a attachment object(the programming for this is easy , you can simply refer the standard coding for that ) and display it in the web UI.


pic9.png



SAP CRM and Cloud for Customer ROI Panel Discussion at SAP CRM Insider 2016

$
0
0


SAP CRM Insider 2016 - March 21st-23rd in Las Vegas


If you are planning on attending the SAP CRM Insider 2016 in Las Vegas, March 21st - 22nd, please join me and 4 leading customers as they share their strategies for maximizing ROI for SAP CRM and SAP Cloud for Customer.


You won't want to miss the interactive discussion with our panelist: Barbara Judd, Graybar; Glenn Michaels, Kiewit; Angela Looney, Prime Source Building Products and Cris Franco, Yaskawa Americas on March 22nd at 12:45 pm to 2 pm.


Hear for yourself where they are finding $$$,  as they make their customer journey into the future.


You just might come away with your plan on increasing your companies Return on Investment for SAP CRM and SAP Cloud for Customer.


Read more about the conference and additional customer speakers in the Featured Content for CRM


Hope to see you in Las Vegas!


Regards,

Anne

BOL or Function Modules - Which API to use in CRM Development?

$
0
0

 

Introduction

If you have been following the CRM space on SCN a little bit you might have noticed that there are quite often questions on how to create of update data using a certain function module or BAPI. Whenever these kinds of questions are asked I usually answer that in my opinion it is better to use the BOL to update or create data in CRM instead of the function modules. Also quite regularly Stephen Johannes and I disagree whether this is the right approach (cf. for example this discussion  Use CRM_ORDER_MAINTAIN FM to change CREATED_BY field into an order).

Basically Stephen argues (@Stephen: please correct me if I paraphrase your opinion incorrectly) that the function module based APIs have been around long before the BOL and that the BOL uses these function modules underneath. Consequently, the function modules should offer better performance than the BOL. Furthermore, as the function modules is the underlying API it is better to learn and use them in the first place. In contrast I usually argue that in my opinion the BOL is the cleaner API and that clean and succinct code should be a higher priority than performance in almost all scenarios.

After the last discussion I had with Stephen via private messages I decided to write a blog which tries to compare the two approaches side by side. Using two typical scenarios, the creation of business partner data and the creation of orders, this blog shows the difference in the resulting program code when using function modules in contrast to BOL. Furthermore, the performance of the two approaches in the context of a mass creation of the respective objects is compared. As a result of this blog I hope to provide a suitable basis for the decision between the different API options for different usage scenarios.

The blog is organized as follows. Firstly, a brief introduction to the function modules based APIs and the BOL, mainly providing references to existing documents, is given. Next, the mini-framework used to implement the different scenarios for performance comparison is introduced. The main part of the blog is the comparison of the business partner and order creation using function modules and BOL. The blog closes by providing a short summary of the results.

 

Introduction to the function module APIs and the BOL

In the context of these blog two different function module based APIs are used. To create business partner data the business partner BAPIs are used. According to the definition in the SAP Library a BAPI  is "A Business Application Programming Interface (BAPI) is a precisely defined interface providing access to processes and data in business application systems such as R/3." While a BAPI is supposed to be a stable interface to some defined business process or data it is implemented using plain function modules. As an example consider the BAPI method ChangeAddress of the business object BusinessPartner. It is implemented by the function module BAPI_BUPA_ADDRESS_CHANGE (see screenshot of transaction BAPI below). Therefore, this blog will refer to function module based APIs to subsume BAPIs as well as function modules not available via BAPIs.


2016-01-07 13_50_33-ABAP - CFD_100_drumm_en - Eclipse.png

The nice feature of the BAPIs in contrast to some other function modules is that most of the BAPI function modules contain extensive documentation. This is quite helpful in understanding how to use them. Note also, that the BAPI are usually implemented using some internal function module. For example, the function module BAPI_BUPA_CREATE_FROM_DATA is implemented using the function module BUPA_CREATE_FROM_DATA.

The second function module based API used in this blog is CRM_ORDER_MAINTAIN. It is the function module to create and updates orders in SAP CRM. Unfortunately, it is not released for customer usage. But that usually doesn't stop customer form using function modules . In contrast to the  business partner BAPIs there is also no documentation available for this function module. This is most likely one of the reasons why there is such a large number of discussions on the topic in SCN. For an example of how to use CRM_ORDER_MAINTAIN see CREATE using CRM_ORDER_MAINTAIN simple example (for those new to CRM and/or ABAP) or the code examples below.

 

In contrast to the function module APIs the BOL is an object oriented programming and data model that "stores the data of the business objects together with a defined set of attributes and relationships during runtime of a CRM WebClient UI session." (Business Object Layer - Web Services - SAP Library). In the BOL the relations between business objects are explicitly modelled. As an example consider the screen shot of the BP component in transaction GENIL_MODEL_BROWSER below. It shows the relation between a business partner header object and its addresses.

 

2016-03-04 16_43_03-_ABAP_ - CFD_100_drumm_en - Eclipse.png

 

The BOL programming model allows to work with all business objects in CRM using a unified API. A nice introduction if given in the following blog: http://www.abaplog.com/Icerik/27/introduction-to-bol-programming. For further details regarding the BOL programming model see How To Guide Business Object Layer Programming. The implementation of the BOL is based on existing APIs for the different business objects. The business partner BOL objects are implemented using the same function modules used to implement the business partner BAPIs. The same is true for the one order BOL objects. These are implemented using CRM_ORDER_MAINTAIN.

 

Note that for the purpose of this blog I omitted a discussion of the XIF interface (cf. e.g. External Data Loads for CRM 4.0 using XIF adapter | SCN). The reason is that the XIF interface is used to create BDocs CRM that are processes asynchronously. Therefore a direct comparison of the XIF interface and the other approaches would have been quite difficult.

 

Performance Comparison Framework

In order to compare the performance of the different programming model I created a simple performance testing framework (see UML diagram below, getting this created in SE80 would deserve a blog on it own ). It basically consists of two parts. A random test data generator consisting of the interface ZCD_IF_PERF_TEST_DATA_GEN and the two implementation ZCD_CL_PERFORMANCE_GEN_1O_DATA and ZCD_CL_PERFORMANCE_GEN_BP_DATA. This is used to generate random test data for the different performance tests. The second part consists of the interface ZCD_IF_PERFORMANCE_TEST and its implementations ZCD_CL_PERF_CREATE_BP_BAPI, ZCD_CL_PERF_CREATE_BP_BOL, ZCD_CL_PERF_CREATE_ORDER_BAPI and ZCD_CL_PERF_CREATE_ORDER_BOL. These are the implementation of the different test scenarios using the functions modules and the BOL respectively.

2016-02-03 21_49_41-ABAP - CFD_100_drumm_de_[CFD] UML_CLASS_DIAGRAM - Eclipse.png

In order to execute the different performance test I also implemented a small report that allows to select the different scenarios, the number of objects to create and whether or not to execute a commit after creation of an object.

2016-02-03 21_52_08-ABAP - CFD_100_drumm_de_[CFD] ZCD_BOL_PERFORMANCE - Eclipse.png

 

The main part of this report is shown in the following code snippet. In order to ensure that the performance measurement are not falsified by the need for compilation or uncached data a warm up is performed prior to the actual performance measurement (lines 64-68, full source code available at #10751306 - Pastie). Note, that in this warm up code single commits are executed to also ensure that the commit code and data is cached.

 

2016-03-07 20_44_28-ABAP - Programm ZCD_BOL_PERFORMANCE [CFD] - Aktiv, Gesperrt - CFD_100_drumm_en -.png

Scenario 1: Business Partner Creation

The first scenario to compare the performance of function module based APIs and the BOL is business partner creation. The scenario for this test is the creation of a business parter of type person with an standard address and an email as address independent communication data.

 

The implementation of this scenario using function module BAPI_BUPA_CREATE_FROM_DATA is given in the following code snippet (full source code available at #10751310 - Pastie).

2016-03-07 20_43_03-ABAP - Globale Klasse ZCD_CL_PERF_CREATE_BP_BAPI [CFD] - Aktiv - CFD_100_drumm_e.png

The same scenario implemented using the BOL is shown in the following snippet (#10751311 - Pastie)

2016-03-07 20_41_34-ABAP - Globale Klasse ZCD_CL_PERF_CREATE_BP_BOL [CFD] - Aktiv - CFD_100_drumm_en.png

Both implementations are similar in length. In my opinion the BOL implementation is a little cleaner as different "parts" (e.g. address, email) of the business partner are nicely separated into different objects.

In order to test this scenario the class ZCD_CL_PERFORMANCE_GEN_BP_DATA is implemented to return test data in the structure given in the below. First and last name consist of a fixed prefix concatenated with a timestamp. A random street and house number is selected in Aachen as the default address. Finally the email address is simply the concatenation of the first an last name followed by a constant.

 

FIRSTNAMELASTNAMECITYSTREETHOUSE_NOE_MAIL
TestName201603071927261138TestLastName20160307192726190AachenWildbacher Mühle1166TestName201603071927261138.TestLastName20160307192726190@test.de
TestName20160307192726178TestLastName201603071927261353AachenWolfsacker309TestName20160307192726178.TestLastName201603071927261353@test.de

 

In order to compare the performance of the two APIs the following performance tests where performed:

  1. creation of 50 business partners without a commit
  2. creation of 50 business partners with a bulk commit after the creation.

 

Creation of 50 business partners without a commit

The results of executing the performance test without a commit a given in the following screen shots. The first screen shot shows the performance of the business partner creation using the using function module BAPI_BUPA_CREATE_FROM_DATA, the second using the BOL.The first call to ZCD_CL_PERF_CREATE_BP_BOL->ZCD_IF_PERFORMANCE_TEST~RUN in both traces is the creation of 10 business partners to warm up before the performance test, the second call is the actual performance test creating 50 business partners.

The surprising result of these test is that the BOL API is more the 5 times as fast (1.2s vs. 5.3s) as the function module based API when it comes to just creating objects in memory. I haven't investigated the underlying reason for this behaviour yet.

2016-03-07 21_00_54-ABAP - CFD_100_drumm_en_20_30_50, 04.01.2016 ZCD_BOL_PERFORMANCE_BP_BAPI_NO_COMM.png2016-03-07 21_01_23-ABAP - CFD_100_drumm_en_20_52_52, 04.01.2016 ZCD_BOL_PERFORMANCE_BP_BOL_NO_COMMI.png

 

Creation of 50 business partners with a bulk commit after the creation.

The results of executing the performance test using a bulk commit is given in the following screen shots. Again, the first screen shot shows the performance of  BAPI_BUPA_CREATE_FROM_DATA, the second of the BOL. Like in the traces before the first call to ZCD_CL_PERF_CREATE_BP_BOL->ZCD_IF_PERFORMANCE_TEST~RUN in both traces is the creation of 10 business partners to warm up before the performance test, the second call is the actual performance test.

In this case the result are quite interesting. On first sight the BAPI implementation provides better performance then the BOL (10.9s vs. 12.4s). However, when viewed in detail the reason for this is that the war up phase is much faster in the BAPI compared to the BOL (2.1s vs 6.5s). In contrast the bulk creation of the 50 business partners is faster in the BOL (5.7s vs 8.6s). This again is a quite surprising result. There reason is, that in the warm up phase a single commit strategy was used (cf. previous section). It seems to be the case that the BAPI_BUPA_CREATE_FROM_DATA works very well in the single commit scenario. In contrast to that the BOL performs much better in the bulk commit scenario.

2016-03-07 21_02_17-ABAP - CFD_100_drumm_en_20_45_56, 04.01.2016 zcd_bol_performance_bp_bapi_bulk_co.png2016-03-07 21_02_55-ABAP - CFD_100_drumm_en_21_34_11, 04.01.2016 ZCD_BOL_PERFORMANCE_BP_BOL_BULK_COM.png

 

Scenario 2: One Order Creation

The second scenario to compare the performance of function module based APIs and the BOL is the creation of an order. The scenario for this test is the creation of an activity for a given business parter. For this activity the description, category code group and code are set.

 

An excerpt of the implementation of this scenario using the CRM_ORDER_MAINTAIN function module is give in the following code snippet. The actual implementation is about 150 lines of code and available at #10751374 - Pastie.2016-03-07 21_31_15-ABAP - Globale Klasse ZCD_CL_PERF_CREATE_ORDER_BAPI [CFD] - Aktiv - CFD_100_drum.png

In contrast to that the implementation of the same scenation using the BOL is very concise (available at #10751380 - Pastie).

2016-03-07 21_31_47-ABAP - Globale Klasse ZCD_CL_PERF_CREATE_ORDER_BOL [CFD] - Aktiv - CFD_100_drumm.png

It is obvious from these code snippets that the BOL API for creating orders in CRM is much easier to use. First, the code is much more readable. Only about 30 lines of code are required to create an activity using the BOL compare to 150 using the function module API. Second, the objects are again nicely structured (partner set, activity extension). Third, the is no need to fill input field tables or use magic constants.

 

In order to test this scenario the class ZCD_CL_PERFORMANCE_GEN_1O_DATA is implemented to return test data in the structure given in the below. The partner and process type are constants. The description consists of a fixed prefix concatenated with a timestamp. The category and code group are again constants. Finally, the code is selected at random from the code group.

 

PARTNERPROCESS_TYPEDESCRIPTIONCATEGORYCODEGROUPCODE
11172404ZA01Test Activity 20160307203338.8610000815202ZK000007Z005
11172404ZA01Test Activity 20160307203338.8610000136202ZK000007Z001

 

In order to compare the performance of the two APIs the following performance tests where performed:

  1. creation of 50 orders without a commit
  2. creation of 50 orders with a bulk commit after the creation.

 

Creation of 50 orders without a commit

The results of executing the performance test without a commit a given in the following screen shots. The first screen shot shows the performance of the order creation using the using function module CRM_ORDER_MAINTAIN, the second using the BOL. As in the business partner scenario the first call to ZCD_CL_PERF_CREATE_BP_BOL->ZCD_IF_PERFORMANCE_TEST~RUN in both traces is the warm up before the performance test, the second call is the actual performance test. Again the result of this test is that the BOL API is faster hen function module based API when it comes to just creating objects in memory. However, with 14.6s vs. 13.6s the difference is not as big as in the business partner case.

 

2016-03-07 21_56_59-ABAP-Profiling - CFD_100_drumm_en_21_49_44, 04.01.2016 ZCD_BOL_PERFORMANCE_1O_BA.png2016-03-07 21_54_51-ABAP - CFD_100_drumm_en_21_57_55, 04.01.2016 ZCD_BOL_PERFORMANCE_1O_BOL_NO_COMMI.png

Creation of 50 orders with a bulk commit

The results of executing the performance test using a bulk commit is given in the following screen shots. Again, the first screen shot shows the performance of  CRM_ORDER_MAINTAIN, the second of the BOL. Also the first call to ZCD_CL_PERF_CREATE_BP_BOL->ZCD_IF_PERFORMANCE_TEST~RUN in both traces is the warm up before the performance test, the second call is the actual performance test.

The creation of 50 order using bulk commit is the first scenario in which the function module API (i.e. CRM_ORDER_MAINTAIN)outperforms the BOL API (13.1 vs. 14.5s).

2016-03-07 21_55_10-ABAP - CFD_100_drumm_en_21_51_21, 04.01.2016 ZCD_BOL_PERFORMANCE_1O_BAPI_BULK_CO.png2016-03-07 21_54_27-ABAP - CFD_100_drumm_en_22_02_06, 04.01.2016 ZCD_BOL_PERFORMANCE_1O_BOL_BULK_COM.png

Conclusion

So what is the conclusion of these test? First, it is save to say the the general assumption of the BOL being slower then the function module based APIs is wrong. In contrast, there are scenarios in which the BOL APIs significantly outperform the corresponding function module APIs. Second, in the scenarios in which the BOL APIs are slower, the margin is not very big. In contrast, the complexity of the code is in the case of CRM_ORDER_MAINTAIN much higher. Which also accounts to lower readability and reduce maintainability. So starting with the simpler and cleaner programming model of BOL should always be the first choice. Starting with the function module APIs is in my opinion a clear case of premature optimization. Or as Donald Knuth put it: premature optimization is the root of all evil (or at least most of it) in programming (https://en.wikiquote.org/wiki/Donald_Knuth). Third, if in the case of a data migration hundreds of thousands of objects need to be created using the XIF interface might be the better approach. The XIF interface creates BDocs. Using the standard CRM middleware features those can be processed in parallel, reprocessed and so on.

In summary, there are only very view scenarios in which using the function module based APIs make sense.

 

Christian

Extend ELM for Custom fields

$
0
0

Business Scenario : Business wants to extend ELM functionality to upload Business partners on the basis of a custom field

 

Assuming the custom field to be External Identification number (ID_EXT) for BP.

 

Steps:

  • Extend the Standard Extension structures to include the custom fields using Append Structures.

          Structure for Person: CRMT_MKTLIST_PER

          Structure for Organization: CRMT_MKTLIST_ORG_EXT

 

  • Implement the BADI Implementation for BADI CRM_MKTLIST_BADI.

          Add the logic to influence the standard update of BP using custom fields based on Custom Business process.

          Methods to be used: CREATE_BUSINESS_PARTNERS, UPDATE_ORGANIZATION, UPDATE_PERSON.

 

  • We can further influence the behavior such that the custom field is a mandatory field by deriving messaging around this field.
    • For ex, Custom field can be determined as a key field by influencing Web UI Behavior

               Web UI Component/View - ELMMAPOE/VSEditHeaderAndFields

               We can include logic in Event 'DONE' to read the individual field value header values and determine if the custom field is included in the uploaded data or not.

 

Logic

 

  lr_cuco_mapping ?= me->get_custom_controller( controller_id = 'ELMMAPOE/CUCOOverviewAndEdit' ).

   lr_col ?=   lr_cuco_mapping->typed_context->format->collection_wrapper.

 

CHECK lr_col IS BOUND.

 

lr_entity ?= lr_col->get_current().

 

CHECK lr_entity IS BOUND.

lr_col_fields ?= lr_entity->get_related_entities( iv_relation_name = 'ELMMAPFormatFieldRel' ).

 

CHECK lr_col_fields IS BOUND.

lr_bol ?= lr_col_fields->get_current().

 

WHILE lr_bol IS BOUND.

   lv_field = lr_bol->get_property_as_string( 'FIELD_NAME' ).

 

    < Implement Custom Business logic here >

 

   lr_bol ?=    lr_col_fields->get_next().

ENDWHILE.

 

By this way we can include Custom fields and associated custom behavior around ELM.

Advanced Inbound Email Handling

$
0
0

Introduction

In the context of a customer project we recently implemented ERMS in SAP CRM (E-Mail Response Management System - SAP Library) for the handling of inbound customer emails. An nice collection of links to documentation, best practices and OSS notes related to ERMS is available in the blog´ERMS Configuration Guides and Documentation by John Burton.

In the context of our project we faced the challenge, that not all customer emails could directly be routed to the SAP CRM system. Instead, some customer email would arrive e.g. in the private email inboxes of customer agents or general purpose inboxes. Therefore, the requirement was to being able to manually select and forward emails from those inboxes to the CRM system. However, the problem with forwarding of emails is that the information in the email header regarding sender and receiver is changed. Consequently, it is not possible to e.g. send automatic responses to the original sender of the email.

In this blog I'll share how we solved the scenario mentioned above. In particular the described approach shows what is possible with inbound email handling in

 

Solution Approach

The first thing I did was to ask on twitter if someone ever solved a similar problem. In the cause of this discussion Gregor Wolf gave me the hint that it might be possible to implement something in the inbound email handling to solve our requirement. He also warned me, that it also might be quite difficult. Unfortunately, there is not much documentation available regarding inbound email processing besides the following to articles:

Nevertheless, it is enough information so I could come up with an initial solution approach. The solution approach consists of the following steps:

  1. Instead of simply forwarding emails to the CRM system, the initial email is forwarded as an attachment. The advantage of this approach is that the original email will be available as a MIME object in the email and therefore the original sender information is still available. Furthermore, email clients can be configured to always forward emails as attachments.
  2. In the inbound email processing the following steps are executed:
    • check if the email is sent from a list of defined email addresses (basically the list of email inboxes from which forwarding is allowed)
    • check if it contains an attachment of type email
    • If this is the case stop the processing of the current email and continue the inbound processing with the attached email.

 

Solution

While the solutions approach looks quite simple it took a significant amount of debugging and trail and error to get it finally working. The code snippet below (also available here: #10770844 - Pastie) shows the implementation of the interface IF_INBOUND_EXIT_BCS( for detailed configuration instructions see the article by Thomas Jung mentioned above):

2016-03-23 09_43_17-ABAP - CVQ_100_drumm_de_.adt_classlib_classes_zc_crm_cl_email_inbound_zc_crm_cl_.png

Lines 34-40 check if the email was sent from one of the defined email inboxes. If yes, lines 42-49 check if there is an email MIME object attached to the inbound email. If one is found it is converted into a new inbound send request (lines 50-58), the new inbound send request is processed (lines 65 and 66) and the original inbound request is terminated (line 68). If anything goes wrong, the system simply continues with the standard inbound processing (line 72 ff).

 

With this implementation in place the inbound processing in transaction SCOT shows how emails a processed (cf. screenshot below). First a email from c.drumm@... is send to test-crm@..., the CRM inbound mailbox. This email contains an email as an attachment. Therefore, the processing of the initial inbound request is terminated (no internal recipient) and new inbound send request is created. The new inbound send request is created for the original sender christian.dr...@... and the original recipient c.drumm@...

2016-03-23 09_52_08-ABAP - CVQ_100_drumm_de - Eclipse.png

I hope this blog helps anybody trying to implement advances inbound email handling in CRM.

 

Christian

Territory check / validation on item and BP in CRM documents - KBA 2291621

$
0
0

Hi Gurus,

 

We may perform check on item or BP to validate if the product or BP  is allowed by the territory of the person responsible in the document.

You find customizing, system logic and solutions in SAP Note/KBA 2291621 Territory Check/Validation on Item and Business Partner in CRM.

 

Spencer

Some data are not extracted by datasource 0CRM_QUOTA_ORDER_I

$
0
0

Symptom: There is one quotation with 2 items. One of the items can be extracted in RSA3 using datasource 0CRM_QUOTA_ORDER_I. The other cannot.

 

The reason why this item can not be extracted in datasource 0CRM_QUOTA_ORDER_I is that this item do not have any of the following status:

 

GC_STATUS-INQUIRY                                           I1076

GC_STATUS-QUOTATION                                      I1055

GC_STATUS-QUOTATION_ACCEPTED                  I1079

 

If an item does not have any of the above status, it is filtered out in the mapping function of this datasource.

The status for the items can be found in table CRM_JEST.

 

Below is the corresponding code:

 

FM: CRM_BW_QUOT_ORDER_I_MAP

 

if ls_status-status eq gc_status-inquiry   or                         >>>line 234

                 ls_status-status eq gc_status-quotation or

                 ls_status-status eq gc_status-quotation_accepted.

 

                 lv_quot_inqu = 'X'.

 

 

              endif.

 

 

 

Please refer to the below help document for more information about the extract fields about this datasource.

 

Order / Quotation Item - Sales Analyses - SAP Library

How to Delete personalized views of crm webui

$
0
0

In the CRM webui users might have maintained their own personalized view and if you have made any changes to the view screen,then the changes will not be

applied to those users,unless they click the button ‘reset to default’ in the personalization screen.

So you need to inform the users about the new view,this can be done by the following steps

1.Determine the users who had maintained the personalized view of specific component/page by checking table BSPC_DL_PERSSTOR.

(This table has fields-User Name,Component Name,Page,Role Config. Key,Component Usage,Object Type,Object Subtype,Configuration type and more)

2.After getting the result lists,inform the specific users to delete their personalized view by clicking the button ‘reset to default’

or

If you want to delete users personalized view, then goto SE38->program:BSP_DLC_DELETE_PERSONALIZATION->execute(F8).

You can input fields for instance the component, viewname and rolekey of the personalized views to be deleted.


troubleshooting for full load issue(CRM -> BW)

$
0
0

Hi,

 

 

Have you encountered the issue that some of the fields are blank in the full load result? I would like to share checking process for this kind of issue with you today.

 

  1. check if this issue could be reproduced by RSA3 in source system
    If not, please check the PSA table in BW system. There should be value for the affected fields. Then you need to check the this issue further in BW system.
    If yes, please check the following steps.
  2. check where the affected field should get value from by transaction code BWA1 (for example, the affected datasource is 0CRM_OPPT_H, the affected field is MKT_ELEMENT)
    1.png
    In the mapping tab, we could find that field MKT_ELEMENT gets value from segment field OBJKEY_A in segment DOC_FLOW.
  3. run function module CRM_ORDER_READ by transaction code SE38, and check the segment and segment field in step 2.
    For the sample document, there is value for segment field OBJKEY_A. Then please refer to subsequent steps and check this issue further.If there is no value for segment field OBJKEY_A, the current behavior is correct. In other words, there is no problem with this extractor.
    2.png
  4. find the mapping module by transaction code BWA1
    3.png
  5. set breakpoint at function module CRM_BW_OPPT_H_MAP and check why the value of segment field OBJKEY_A is not mapping to affected field MKT_ELEMENT.

 

Best Regards,

Grace

How to find database table name which stores service order requested start date and end date

$
0
0


Suppose you need to investigate which database table stores the value of Requested start date and end date:

clipboard1.png

You can just activate SQL trace via tcode ST05, make changes on either field, and save the change. Then display trace and search with keyword "update":

clipboard2.png

You could find one record whose UPDATE statement contains the changed date you maintained in WebUI, which indicates the table SCAPPTSEG is what we are looking for.

clipboard3.png

When we browse this table in SE11, we didn't know the relationship between APPT_GUID or APPL_GUID with the service order guid.

clipboard4.png

We can click the display source code button in ST05:

clipboard5.png

And set a breakpoint on the very code where the table is updated. From the callstack we can know the function module CRM_DATES_UPDATE_DU is updating this table.

clipboard6.png

Perform where used list on CRM_DATES_UPDATE_DU and we can get CRM_DATES_SAVE_OB,

clipboard7.png

then CRM_DATES_SAVE_EC:

clipboard8.png

In this function, we can know the relationship between appl_guid and service order guid:


clipboard9.png

I use a simple report below to illustrate the process how to get requested start and end date starting from Service order guid:

*&---------------------------------------------------------------------*
*& Report ZDISPLAY_REQUEST_DATE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zdisplay_request_date.
PARAMETERS: guid TYPE crmt_object_guid OBLIGATORY DEFAULT '00163EA720041EE19BB780506245F081'.
DATA: lt_dates TYPE STANDARD TABLE OF scapptseg,      lv_link  TYPE crmd_link-guid_set.
START-OF-SELECTION.  SELECT SINGLE guid_set INTO lv_link FROM crmd_link WHERE guid_hi = guid AND objtype_set = '30'.  IF sy-subrc <> 0.    WRITE: / 'no requested data maintained'.    RETURN.  ENDIF.  SELECT * INTO TABLE lt_dates FROM scapptseg WHERE appl_guid = lv_link.  READ TABLE lt_dates ASSIGNING FIELD-SYMBOL(<start>) WITH KEY appt_type = 'SRV_CUST_BEG'.  IF sy-subrc = 0.    WRITE: / 'requested start: ' , <start>-tst_from.  ENDIF.  READ TABLE lt_dates ASSIGNING FIELD-SYMBOL(<end>) WITH KEY appt_type = 'SRV_CUST_END'.  IF sy-subrc = 0.    WRITE: / 'requested end: ' , <end>-tst_from.  ENDIF.

Note: "30" means object name "APPOINTMENT",  you can find the relationship from this table CRMC_OBJECTS:


clipboard11.png

An example of how to find database table and field where Material text and product text is stored in ERP and CRM

$
0
0

Recently I am working on a project whose prerequisite is that developer must figure out how a field for example Material description in ERP and Product description in CRM is stored.


clipboard1.png

For example, user can maintain description for Material in ERP and Product in CRM:

clipboard2.png

clipboard3.png

And my aim is to find out which two database tables store the content of the description field in ERP and CRM.

 

How to find the database tables and fields where this description is stored in ERP and CRM separately?

 

1. Log on to a CRM system, tcode R3AC1, Position, type "Material":

clipboard4.png

Click tab "Mapping Modules:"

clipboard5.png

Double click this subroutine:

clipboard6.png

then double click again:

clipboard7.png

clipboard8.png

MARC: Plant Data for Material in ERP

clipboard9.png

MAKT: Material Descriptions table in ERP

clipboard10.png

Double click this subroutine:

clipboard11.png

Clear enough now?

clipboard12.png

Note that com_product is not database table but just a structure. The structure is used as input to call product API to save the change triggered from ERP into CRM database table. However in this very case, it is fortunate enough since the database table COMM_PRODUCT has exactly the same name of fields:

clipboard13.png

From line 23, keyword "shtext" and "short_text", we can know the product descrption is modelled as set type in CRM product. 

clipboard14.png

Please read set type concept from sap help

Then find potential database table which stores product text in CRM using "*" in SE16:

clipboard16.png

And this is just what I am looking for:

clipboard17.png

clipboard18.png

Cloud for Customer and ECC Integration Question

$
0
0

All of the information I've been able to find has Cloud for Customer integrating with ECC via PI or Hanna Cloud Integration (HCI).  We will be looking to integrate Cloud for Customer with ECC soon, but are using PO instead of PI.  Will we be able to integrate C4C with ECC using PO or can we only use PI or HCI?

Standard customizing of survey (CRM SURVEY SUITE) published in internal CRM server

$
0
0

This post explains how to customize survey (example taken for service request object) using the SAP standard functionality through CRM SURVEY SUITE.

 

More precisely, it indicates the customizing steps to send a mail form that includes a link to the survey.

Once completed the result of the survey will get back to the crm object.

 

 

Technical pre-requisite


1. Business fonction


Business function (SFW5) CRM_SHSVC must be activated

 

2. SICF


The following standard SICF must be active :

  • crm_svy_public  BSP http Survey Server Public
  • crm_svy_server  BSP http Survey Server
  • iccmp_survey ICWC Survey Component
  • svy_h
  • svy_m
  • svy_popups
  • svy_s


3. Connector ID


The survey functionality using http connection requires a connector ID that needs to be maintained for each environment desired. This is explained in OSS note 1734718 - Setup of Connector ID parameter in CRM survey suite .

  • Go Transaction Code SM59.
  • Choose Create and press F8.
  • Enter the following data
  • RFC Destination = CONNECTOR_<CRM system name>_<Client>,e.g., CAT_CAD_240
  • Connection Type = T (TCP/IP Connection)
  • Description = CAT Server
  • Choose Enter.

Technical settings

  • Activation Type = Registered Server Program
  • Program ID = CONNECTOR_<CRM system name>_<Client>
  • Gateway host = Host name of the CRM system
  • Gateway service = sapgw<CRM system number>.

 

Note the RFC destination that will be used later in the customizing.

 

 

CUSTOMIZING


1. Creating the survey in Crm_survey_suite


Go to transaction CRM_SURVEY_SUITE. (If a dump occurs, follow the instructions of note OSS 857535)

 

Create the survey needed in the folder desired (SERVICE for example):

 

Capture1.PNG

Capture2.PNG

 

Capture3.PNG

 

Once the survey page is displayed, click SAVE. The following page appears :

 

Capture4.PNG

 

Give a description of the survey:

 

Capture5.PNG

 

Click on save: The survey is saved and can be customized as needed.

 

The survey can also be customized in the web_ui under the marketing business role.



2. Link the survey with the transaction type needed


Once the survey is created, you need to indicate to which transaction type it has to be linked. Follow the path:

 

Transaction SPRO >>Customer Relationship Management> Transactions > Settings for Service Requests > Questionnaires > Define Determination for Surveys in Service Requests

 

Capture6.PNG

 

 

Click on ‘New entries’ and enter the following :

Déterm : 0

Description : Name of the survey given

Valide du :  as required

Fin valid :  as required

Type opér : Transaction type you want the survey to be linked to

Type pos : empty

ID : Id of the survey customized


3. Action profile


If you want to send the survey depending on conditions, you can create an action profile.

The method of the action needs to be set up to ESSC_SRV_SVY:

Capture7.PNG

 

Click on edit and then on the 'glass' icon.

 

3 element need to be customized in the container:



  • MAIL_FORM_TEMPLATE: ID of the mail form used to send the link that will display the survey with Type Name ‘CRMT_PML_ID’.

 

Capture8.PNG

 

In the Initial value tab, enter the ID of the mail form template used.

 

 

Save and enter the next element:

 

  • SVY_TEMPLATE: ID of the survey customized previously with type Name CRM_SVY_DB_SID.

 

Capture9.PNG


In the Initial value tab, enter the ID of the survey form created.

Save and enter the next element:

 

  • DEFAULT_SENDER_EMAIL: Sender email address used to send the mail form with type name ‘AD_SMTPADR’.

Capture10.PNG


In the Initial value tab, enter the mail address that will be used to send the mailform.

 

  Once all 3 elements are completed, the container looks like this:

 

Capture11.PNG

 

Then, set up the conditions to execute the actions in dedicated customizing.


4. Create Mail Form


In order to send the URL link that will display the satisfaction survey, create a mail form in the marketing business role.

This mail form should have the ID that has been mentioned in the container previously.

 

Be aware that this mail form must contain the following words: Customer Satisfaction Survey


Indeed, it is those words that will be recognized by the method call mentioned in the action profile and will create the survey link composed by: the link of the survey + the GUID of the CRM object.

Thanks to the GUID of the CRM object, the result will automatically gets back to the object mentioned and will be visible in the object!!


5. Customizing of the inbound and outbound survey link


Go to transaction CRM_SURVEY_SUITE and click on the customized survey.

Click on Other functions/Options:

Capture12.PNG

 

The following window appears  and check the following boxes in the part ‘Data storage and Evaluation’:

  • Save completed Questionnaire
  • Completed questionnaire changeable later
  • Evaluation withtout business Information Warehouse

 

In the part ‘Interface to Application’, complete the following:

  • Callback to PBO: CRM_SVY_ESSC_PBO
  • Callback to PAI : CRM_SVY_SERVICE_PAI

 

In the part ‘Authorization’, tick the box: Publicly Available

 

Capture13.PNG

 

In the Scenarios tab, tick the following:

Capture14.PNG

 

 

6.       HTTP customizing


Go to transaction CRM_SURVEY_SUITE and go to Survey Repository



Capture15.PNG  

 

Following page appears and in the Paramters XMLs folder, click on http.

This file will be used to create the survey link and publish it to the CRM server. Thus, it needs to be adapted to the server URL


Capture17.PNG

 

Select this file and click on export in the navigation bar. Save it on a personal folder and then open it with an XML editor.

 

 

The following attributs need to be modify:

 

Capture18.PNG

  • Action : Modify the URL of the server/port used in the environment

The following part needs to be complete: */sap/bc/bsp/sap/crm_svy_public/survey.htm ?cmd=svyResult »

 

  • Access URL : Modify the URL of the server/port used in the environment

The following part needs to be complete: */sap/bc/bsp/sap/crm_svy_public/survey.htm ?cmd=svyPresGet »

 

  • Connector ID : Fill in the connector ID as desribed in the technical part

 

Save this document with a new name, like  CRM_SVY_PARAM_HTTP_OK

 


Import the new file :


On the http folder, click on F7, the following page appears:

Capture19.PNG

 

Fill in with the name of the new file created :

 

Capture20.PNG


Click on the green tick and look up for the file in your personal folder.

 

When finished, the system will indicates that the file has been imported correctly:

 

Capture21.PNG

 

 

7.       HTTP customizing needs to be indicated in SPRO


Go to  SPRO >Customer Relationship Management>  Transactions > Settings for Service Requests > Questionnaires > Define URL for surveys


To set up the link that will be published in the server, enter the following:


  • Cat: I Inter
  • Option Get : http
  • Nom de fichier: CRM_SVY_PARAM_HTTP_OK.XML (or the name of the file imported)
  • Option Set : http
  • Nom de fichier : CRM_SVY_PARAM_HTTP_OK.XML (or the name of the file imported)

Et :

  • Cat: I Extern
  • Option Get: http
  • Nom de fichier: CRM_SVY_PARAM_HTTP_OK.XML (or the name of the file imported)
  • Option Set : http
  • Nom de fichier : CRM_SVY_PARAM_HTTP_OK.XML (or the name of the file imported)


 

==> Survey is now customized and is ready to be used!

In the transaction type, Questionnaires assignment block will display the survey.

 

When the mail form is sent, it will have the URL survey link. When the user clicks on 'Send' , the result will get back to this survey.

This will be indicated by a star (*) next to the survey ID => It means that the survey has been completed by a user.

 

 

 

More information

 

You can find more information about survey thanks to those nice and well documented wiki page:

 

- Survey Rendering in CRM WEB UI

- Survey processing without opening a connection to the CRM Backend from the Internet - CRM - SCN Wiki


Viewing all 228 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>