Learn how to enhance the Mass Change Tool in SAP CRM Intellectual Property Management that is delivered with SAP CRM 7.0 enhancement package 1. Get step-by-step instructions to enhance various areas in the standard Mass Change Tool to support mass updates of custom fields and enable search help, drop-downs, and search capabilities for custom and standard fields in license sales contracts at the header and line-item levels.
Key Concept
The SAP CRM Intellectual Property Management Mass Change Tool allows you to mass maintain various components within a license sales contract or across multiple license sales contracts. After making a few enhancements, you can maintain data such as status, dates, parties involved, rights dimensions, custom fields in the contract header, royalties, advances, rights, and holdback scopes.
In a typical television distribution business scenario, a media company sells the license to air a television series to a channel. In many cases, the series has run for many seasons. The series is represented in SAP CRM Intellectual Property Management (CRM-IPM) as intellectual property (IP) with all the seasons represented as sub-IPs under the series IP. When the license sales contract is created, the series IP along with all the season sub-IPs are added to the contract. You can create royalties, advance, rights, and holdback scopes under both the series IP and season sub-IPs to sell different rights in different areas with specific license fees.
CRM-IPM 7.0 enhancement package 1 has a functionality called the Mass Change Tool. It allows you to maintain elements of the license sales contract for IP. However, there are a few limitations of the standard Mass Change Tool:
- It doesn’t support mass maintaining royalties, advance, rights, and holdback scopes at the sub-IP level.
- It doesn’t support mass changes if there are any errors on the contract. Users often want to use the mass change functionality to fix such errors.
- It doesn’t support mass creation of holdbacks.
- It doesn’t support mass assignment of a holdback to multiple rights scopes during holdback creation. Users have to mass create holdbacks and then go into the contract and assign hold backs to Rights Scope one at a time. This is a vital business requirement and very time consuming without the mass change option.
- It doesn’t support mass creation of Parties Involved and Partner Functions. It allows only mass changes.
This article provides an overview of mass change technical architecture and some basic enhancements, including enabling mass changes for custom fields, F4 search helps, and drop-downs. A thorough understanding of the architecture is essential to perform the advanced enhancements that address the key limitations listed above.
This article covers:
- A high level overview of the technical framework of the Mass Change Tool
- How to add custom fields in the Search operations and enable drop-downs
- How to enable search help for a field in Contract Header Search operations
- How to create a new node and include custom fields at the item-level Change operations
Technical Framework of the Mass Change Tool
The framework of the Mass Change Tool is driven by a configuration view cluster CRMVCL_MAS_CUST. Use transaction code SM34 and follow menu path View Cluster: CRMVCL_MAS_CUST > Business Objects (Figure 1). This is the central place where all Mass Change-related configuration is done, including setting up nodes, operations, and fields that should be available for the user. The Mass Change Tool supports the three business objects shown in Figure 1. The scope of this article is limited to the CRM License Sales Contract, and all of the configuration described here can be easily extended to the other two Business Objects.

Figure 1
Mass Change Tool central configuration
Configuration settings for each section in the hierarchy on the left side of Figure 1 are explained in the following sections, along with screenprints depicting how the configuration entries translate to the actual screens in the tool.
Nodes
Each node in the configuration represents either a dataset (such as status or dates) or a group of fields. The attributes that need to be configured for a node are explained in Table 1. These attributes define the technical name, singular and plural descriptions, hierarchy, and sequence of the node. Some nodes are standard, but you can create custom nodes depending on the requirements. For example, you can create a custom node to show the custom fields. Nodes can be configured to be hierarchical.

Table 1
Configuration settings for a node
Table 1 Configuration settings for a node
Click the Nodes folder on the left to see the standard attributes explained in Table 1 (Figure 2). Detailed steps to create a node are covered in a subsequent section.

Figure 2
The configuration for the contract header node and its sub-nodes
In the CRM WebClient UI, follow License Sales > Mass Change License Sales Contracts to see how the hierarchy is rendered on the screen (Figure 3). Click the New button to bring up the New Step pop-up screen. Select the search help icon next to Contract Header and you can see the nodes configured in Figure 2, with Contract Header rendered as the parent node.

Figure 3
Hierarchical display of nodes along with descriptions
Figure 3 Hierarchical display of nodes along with descriptions
Operations
The Operations folder defines the list of operations that can be performed on a particular node, as well as the underlying class that holds the logic, the view to be displayed, if applicable, and whether the operation is active or inactive. The operations can be Add, Change, Delete, or Search. Details about each attribute are shown in Table 2.

Table 2
Configuration settings for an operation
Figure 4 shows the operations available for the node Contract Header – Party Involved. To see how the operations are displayed in the UI, go to the CRM WebClient UI and follow License Sales > Mass Change License Sales Contracts. Click the New button and in the resulting pop-up screen you can see the options (Figure 5).

Figure 4
Operations available for the node Contract Header – Party Involved

Figure 5
Operations displayed in the CRM WebClient UI
Fields
The fields on which a certain operation is performed are configured in the Fields folder. In addition, here you can configure field attributes such as the placement of the field, the sequence, data type, description, data source for the field, and the underlying classes to influence the field display and to perform validations. For example, in a change operation, the fields that need to be changed are configured here and rendered dynamically. The fields that should show up in the result list assignment block are also configured here. Details about each attribute are shown in Table 3.

Table 3
Configuration settings for a field
In transaction code SM34, follow Business Objects > Nodes > Operations > Fields to see the configured fields for the node Contract Header – Party Involved (Figure 6).

Figure 6
Configured fields for the node Contract Header – Party Involved
Back in the CRM WebClient UI screen, under Procedure Overview select the New button and you can see how to select the change operation for the node Header – Party Involved (Figure 7).

Figure 7
Select the change operation for the node Header – Party Involved
Figure 8 shows the fields that are available to change in the Change operation for the node Header – Party Involved.

Figure 8
The list of fields available in the Change operation for the node Header – Party Involved
Fields (UI)
The Fields (UI) folder defines additional UI attributes, such as mandatory field, field position, search help, Set/Clear/Calculate operations, and units. Details about each attribute are shown in Table 4.

Table 4
Configuration settings for Fields (UI)
The Fields (UI) folder under Operations shows the UI attributes of the Status field in the node Contract Header – Status – Operation Change (Figure 9).

Figure 9
Status field in the node Contract Header – Status – Operation Change
Figure 10 shows how the Status field is rendered on the screen in the CRM WebClient UI.

Figure 10
CRM WebClient UI Status field
Figure 11 shows how the Calculate Operation for a Date field is rendered on the screen.

Figure 11
The calculate operation for a Date field
Title Fields (UI)
The Title Fields (UI) folder defines the titles under which a set of fields needs to be grouped. The position of the title in terms of rows and columns is also specified here. Details about each attribute are shown in in the last four rows of Table 4.
In the Title Fields (UI) folder, you can see the Title Fields (UI) attributes of the field Status in the node Contract Header – Status > Operation – Change (Figure 12).

Figure 12
Title Fields (UI) attributes of the Status field in the node Contract Header – Status > Operation – Change
The actual title text needs to be maintained in the table CRMC_MAS_DVFLDT using transaction SM30 (Figure 13). The Component name field has to be the same as the one maintained under Title Fields (UI).

Figure 13
Title text maintenance
Figure 14 shows how the title is rendered on the screen in the CRM WebClient UI.

Figure 14
Title text in the user interface
Include Custom Fields in the Contract Header Search Operation
In this section, I show how to enable mass changes for a custom field.
Figure 15 shows a field created using the Application Enhancement Tool (AET) at the header level in table CRMD_ORDERADM_H.

Figure 15
A field created using the AET at the header level in table CRMD_ORDERADM_H
The base structure for the Mass Change Header advanced search is CRMT_IPM_CONTRACT_DQUERY_MC. The field ZZAFLD00000F is automatically appended to this structure by AET, as shown in Figure 16. Any field available in this structure can be added to the Search operation.

Figure 16
Field ZZAFLD00000F is automatically appended to the search structure
Tip!
Fields created in table CRMD_CUSTOMER_H are not appended to this structure by AET. In this case, these fields need to be appended manually using the append structure function.
The following steps show how to include this field in the Contract Header Search operation.
Step 1. Navigate to the node Contract Header > Operation – Search shown in Figure 17. (Transaction SM34, View Cluster: CRMVCL_MAS_CUST > Business Objects > BUS2000230 > Nodes > CONT_HEADER > Operations > SRCH > Fields), and create a new entry for the field ZZAFLD00000F. Make sure the field name is the same as the one in the search structure. The values to be entered for each attribute are shown in Table 5.

Figure 17
Configuration settings for the field ZZAFLD00000F

Table 5
Attribute values for the field ZZAFLD00000F
Tip!
Notice that the Field Data Type Component Name is defined as CHAR2 instead of giving the original data element of the field, which is NUMC. This is necessary because otherwise the standard removes leading zeroes in the drop-down key values while rendering on the screen and the selected value is lost. For example, 01 is converted to 1 after the round trip.
The class ZCL_CRM_MAS_BTX_CUSTOM_DDLB shown in Figure 18 (Transaction SM34, View Cluster: CRMVCL_MAS_CUST > Business Objects > BUS2000230 > Nodes > CONT_HEADER > Operations > SRCH > Fields) and Figure 19 is inherited from the standard class CL_CRM_MAS_DESCR_DDLB and ensures that the field is rendered as a drop-down.

Figure 18
Configuration settings to show the field ZZAFLD00000F in the search criteria
The inherited method BUILD_TABLE( ) is called dynamically and custom code should be implemented in the method to populate the drop-down with key or value pairs in the global internal table GT_DDLB_VALUES.
Figure 19 provides sample code to populate the drop-down values.

Figure 19
Sample code for the BUILD_TABLE( ) method in the class ZCL_CRM_MAS_BTX_CUSTOM_DDLB to show the drop-down values
Figure 20 shows the drop-down menu in the search step.

Figure 20
The search step drop-down menu
Step 2. To show the custom field in the Result List assignment block, create the following configuration entry, as shown in Figure 21 (Transaction SM34, View Cluster: CRMVCL_MAS_CUST > Business Objects > BUS2000230 > Nodes > CONT_HEADER > Operations > SRCH > Fields). The values to be entered for each attribute are shown in Table 6.

Table 6
Attribute values to show the field ZZAFLD00000F in the Result List

Figure 21
Configuration settings to show the field ZZAFLD00000F in the Result List
Figure 22 provides sample code for the GET_PROPERTY( ) method in the class ZCL_CUSTOM_ATTR_HANDLER to show the description instead of the key value. Note that the class ZCL_CRM_MAS_BTX_CUSTOM_DDLB used to build the drop-down values is reused here.

Figure 22
Sample code for the GET_PROPERTY( ) method in the class ZCL_CUSTOM_ATTR_HANDLER to show the description instead of the key value
Figure 23 shows the custom field in the Result List showing the description Class 1 instead of the key value 01.

Figure 23
The custom field in the Result List showing the description Class 1 instead of the key value 01
Similarly, the search operation can be enhanced at the item-level nodes, such as Rights Scope, Royalties Scope Flat Fee, Variables, and Holdbacks. The search structures for item-level nodes are shown in Table 7.

Table 7
Various scope types and their corresponding search structures
Tip!
In the Fields node, the Field Usage type DB Search does not apply for the item-level search operations as the database search is only done at the header level search operation.
Enable Search Help for a Field in Contract Header Search Operations
Search for contracts by Product ID, a field used often in searches, is not available by default. However, this field is already available in the search structure CRMT_IPM_MC_HEADER_SEL_CR, so the standard Product search UI component PRD04QR is reused. Create an entry as shown in Figure 24 (Transaction SM34, View Cluster: CRMVCL_MAS_CUST > Business Objects > BUS2000230 > Nodes > CONT_HEADER > Operations > SRCH > Fields) under the Contract Header Search node. The values to be entered for each attribute are shown in Table 8.

Table 8
Attribute values to enable search help for the product ID

Figure 24
Configuration settings to enable search help for the product ID
Figure 25 offers sample code for the redefined methods in search help class ZCL_CRM_SEARCH_HELP_PRODUCT_ID. The method INITIALIZE( ) sets the name of the UI component to be called as a search help and also the title of the pop-up screen.

Figure 25
Sample code for the redefined methods in search help class ZCL_CRM_SEARCH_HELP_PRODUCT_ID
Figure 26 shows the newly added field with the search help pop-up screen.

Figure 26
The newly added field with the search help pop-up
Create a New Node and Include Custom Fields at the Item-Level Change Operation
Figure 27 shows a field created using an AET at the item level in table CRMD_CUSTOMER_I.

Figure 27
A field created using AET at the item level in table CRMD_CUSTOMER_I
To create a new node exclusively for custom fields at the item level (Royalties Scope – Flat Fee) and enable the Change operation for the field ZZAFLD0L00011, take the following steps.
Step 1. Create a new node, ROSF_CUSTOM, with the configuration settings in Table 9, as shown in Figure 28 (Transaction SM34, View Cluster: CRMVCL_MAS_CUST > Business Objects > BUS2000230 > Nodes).

Table 9
Attribute values to create node ROSF_CUSTOM

Figure 28
Configuration settings to create node ROSF_CUSTOM
Step 2. Create an entry under Operations to enable the Change operation for the new node created above, as shown in Figure 29 (Transaction SM34, View Cluster: CRMVCL_MAS_CUST > Business Objects > BUS2000230 > Nodes > ROSF_CUSTOM > Operations). The values to be entered for each attribute are shown in Table 10.

Table 10
Attribute values for the operation change

Figure 29
Configuration settings for the operation change
Step 3. Create three entries under the Fields node as shown in Figure 30 (Transaction SM34, View Cluster: CRMVCL_MAS_CUST > Business Objects > BUS2000230 > Nodes > ROSF_CUSTOM > Operations > CHNG > Fields).
Notice that, in addition to the entry for the custom field – CUSTOM_FLAG, two other entries are configured to show the item number and description in the result list. The values to be entered for each attribute are shown in Table 11.

Table 11
Attribute values to show the field ZZAFLD0L00011

Figure 30
Configuration settings to show the custom field ZZAFLD0L00011 and standard fields Item Number (NUMBER_INT) and Item Description (SCOPE_DESC)
Step 4. Create an entry under the Fields (UI) node for CUSTOM_FLAG to display it as a check box, as shown in Figure 31 (Transaction SM34 > View Cluster: CRMVCL_MAS_CUST > Business Objects > BUS2000230 > Nodes > ROSF_CUSTOM > Operations > CHNG > Fields (UI)). The values to be entered for each attribute are shown in Table 12.

Table 12
Attribute values to show the field ZZAFLD0L00011 as a check box

Figure 31
Configuration settings to show the field ZZAFLD0L00011 as a check box
Step 5. The new node created for Custom Fields appears in the step hierarchy pop-up as shown in Figure 32.

Figure 32
New node Custom Fields is shown under Royalties Scope – Flat Fee
Step 6. When the Custom Fields node is selected, the Change operation is available, as shown in Figure 33.

Figure 33
Operation Change is shown in the drop-down
Step 7. When the operation is selected, the custom field is available as a check box with Set and Clear operations. It’s also available in the Result list along with item number and scope description. All the flat fee royalties scopes in the contract are displayed in the Result list for selection and the custom field can be changed, as shown in Figures 34 and 35.

Figure 34
Custom field ZZAFLD0L00011 is shown as a check box

Figure 35
Custom field ZZAFLD0L00011 is shown in the result list
Figure 35 Custom field ZZAFLD0L00011 is shown in the result list
Similarly, multiple custom fields can be configured in a step and grouped logically if needed under different sections.
Abhishek Gundala
Abhishek Gundala is a manager at Capgemini and has more than 10 years of experience in SAP CRM and ECC. He has strong expertise in CRM WebClient UI, Object Oriented ABAP, and HANA. His experience includes multiple full life-cycle SAP implementations including upgrades to HANA spanning the Media, Services, and Defense industries. Over the years, he played multiple roles as a developer, team lead, technical architect, and project manager.
You may contact the author at agundala@gmail.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.