The SCN wiki will not be available for new content submission starting September 4th 6PM CET until September 7th 6PM CET. Please plan your SCN wiki tasks accordingly.
If you are not new to SAP CRM, you might already know some of the tools related to customer enhancements. The enhancement set concept can be used to redefine and enhance existing UI components. If you are not happy with the layout of a given view, you can change it via the UI configuration tool. Both of these tools offer modification free means of altering the default delivery as per the customer's needs.
It is also worth mentioning that customers can add new fields to existing CRM applications. My previous blogs on the application enhancement tool (you can find them here) covers that topic in details. Therefore, in this guide, I will focus on the other (non-structural) enhancement tools.
A common task that our customers often face is to adjust the semantics of the CRM applications so that they fit better their business domain and terminology. Both the configuration tool and the enhancement sets address the required UI layer adjustments. However, they do not tackle one important aspect - the corresponding message texts. Luckily, SAP CRM 7.0 offers a remedy called message replacement.
In this guide, I will walk you through the above scenario. If you are new to SAP CRM, you will have the chance to get a quick introduction into the above mentioned UI framework tools. Those of you who are already familiar with enhancement sets and view configurations will learn about the new message replacement tool. I will also briefly mention how the existing tools have been improved in CRM 7.0.
Enhancing an Existing UI Component
Let's assume that you would like to change the name of the CRM campaign object to 'tactics'. In short, your task is to change the corresponding page titles, .assignment block names, labels and message texts containing 'campaign'.
First we will modify the title of the campaign overview page. Typically, the title text comes from IF_BSP_WD_HISTORY_STATE_DESCR~GET_STATE_DESCRIPTION, implemented as part of the hosting window controller.
Let's open an existing campaign instance and navigate to the technical details of the "parent" window (place the cursor on any of the input fields and press F2).
As per the above screenshot, we need to enhance the MainWindow of the CPG_MAIN component.
Now, let's go to the component workbench and create an enhancement set for the CPG_MAIN component. As you probably already know, an enhancement set groups several enhanced components and contains the enhancement definitions that show which components were altered. If you need more information on the topic, please refer to the user documentation.
The component workbench in SAP CRM 7.0 comes with some usability improvements that facilitate the creation and manipulation of enhancements. For example you can create (or delete) an enhancement set in the workbench, as soon as you need one and without navigating away.
As per our example, we will create an enhancement for the CPG_MAIN component and redefine the MainWindow's controller. While executing these tasks, you will notice that in CRM 7.0 you can access the enhancement set definition repository directly in the workbench - from the System menu.
In CRM 7.0 you could delete not only enhancement sets, but also component enhancements - again without leaving the component workbench.
For simplicity reasons, I have implemented a very rudimentary redefinition of the GET_STATE_DESCRIPTION method. I have substituted the 'Campaign' string (I happen to know its OTR's alias) with 'Tactics'.
If you go back to the Web UI and open a corporate account, you will see that it reads 'Tactics now.
However, the names of two assignment blocks still refer to "campaign". In addition, a column header in the campaign elements block needs to be modified as well.
Configuring the UI
As you already know, the UI configuration tool allows SAP CRM customers to adjust the user interface as per their corporate identity and business needs. In our example, we will use it to rename two assignment blocks and change a column header in one of them. In CRM 7.0 we have improved the usability of the configuration tool. For example, you can drag and drop fields in an intuitive way.
SAP recommends that you always create a copy of the SAP delivered configurations and implement your changes there.
You need to go into the view configuration of the tactics element assignment block and change the column header to 'Tactics Element'.
Your might be tempted to think that you are done. However, there are messages that refer to campaign. For example, if we have a tactics/campaign element that is not assigned to a workflow, you might get a warning message that says 'No workflow is assigned to a campaign element with successor'.
In the past, in order to change the message text, you would have to change the code itself. This was not a modification free way of customizing the system. As a result, you had to maintain your changes with each upgrade.
As of CRM 7.0, the UI framework offers a new feature that supports message replacement. It is available in IMG (and in the component workbench).
First, you need to define a message replacement profile. In our example we will use DEFAULT. Next, you need to redefine the original message with a new one.
The message replacement is business role "sensitive". You need to assign the message replacement profile name to the business role that needs to be affected by the message texts changes. In order to do so, go to Define Business Role in IMG and add a function profile MSG_REPLACE and set its value to the corresponding message replacement profile (DEFAULT as per our example).
If you try to invoke the same warning message now, you will get the new message text.
The example presented above was quite simple, but it puts into perspective three powerful concepts: enhancement sets, view configuration and message replacement. While the first two have undergone a relatively minor "facelift" in CRM 7.0, replacing messages is a new feature.
Those of you who are new to CRM should note that the enhancement set concept allows you to do a lot more than changing texts. You can alter buttons, navigations, views, and much more. Most importantly, your enhancements are "modification free". In this guide I have just scratched the surface of this powerful tool, but feel free to read and experiment further.