Wednesday, November 24, 2010

PDF Factsheet customizing using CRMVC_BUIL_PRT in SM34

The account overview page in SAP CRM (component BP_HEAD/BPHEADOverview) contains a button 'PDF Factsheet'. This PDF Factsheet will only be shown if the proper customizing has been done in SM34, as described here:

Open transaction SM34 and enter view cluster CRMVC_BUIL_PRT.


Here you have to assign the form (smartform) name of the factsheet to the authorization (PFCG) role that is assigned to the business role.

If you do not do this you will not see the PDF Fact Sheet button.


The standard form is CRM_ACC_ACCOUNT_OVERVIEW_PRN and uses class CL_UIU_PRN_ACCOUNT to move data from the screen to the smartform.


If you make a copy of one of the standard entries, you will get the standard PDF Fact Sheet.


If not all components from the factsheet are interesting (very likely), you can delete them in customizing by deleting the assignment between the print object and the related objects in the SM34 --> CRMVC_BUIL_PRT.


Select the row you want to change and click on 'Related Objects'.


In t
he next screen, if you delete the component, it will no longer show up in the factsheet. So for instance if the SALES AREAS are of no interest to your users, you can delete the assignement to the component SALES_AREAS here, and the factsheet will no longer contain this information.

There is a special component in the factsheet for R/3 data. If you wish to delete this from the factsheet you can do this by deleting the data from the view column in the fact sheet customizing in SM34.


Deleting items from the assigned objects in customizing will also improve the performance of the creation of the factsheet, because retrieving the information takes time. Especially some of the the R/3 info blocks can be a menace performance-wise.


If you wish to moderate the fact sheet, check next week's the posting.

Wednesday, November 17, 2010

SAP CRM Performance: Caching of MIME components

SAP CRM is a web based application. Static components of web pages are stored locally automatically using web caching. Web caching is part of the HTTP protocol http://en.wikipedia.org/wiki/Web_cache.

Caching of components influences the performance of the webclient. Particularly caching of frequently viewed components such as the skins is of great influence.

There are several tools available to test the performance of a webpage like httpwatch and ieinspector. These tools tell you which components on the site are loaded from the cache and which are coming from the server.If lots of info is coming from the server, you might have to check the cache expiration settings.


Every component of a web page can have its own expiration period in client cache. The expiration period in SAP is set in transaction SE80, under the option MIME Repository.


The skins that are available in SAP CRM are stored in the folder SAP/BC/BSP/SAP/thtmlb_styles/sap_skins. If any of the skins has a expiration period of 0, this means that every refresh of the screen will involve a full refresh from the server.

Of course if you have created your own company-specific skin in SAP CRM, you will have to have your settings correct. Especially if you have chosen to have a logo image somewhere in the screen which is not very well compressed.

See also the following SAP Notes:
Note 1242585 - SAP expiration header for static HTTP objects
Note 1162605 - Network performance for CRM (IC) Webclient
Note 1162685 - SAP CRM Webclient Performance

Wednesday, November 10, 2010

SAP CRM Performance: Account Overview Filter on Transactions using BADI CRM_BP_UIU_BT

In the CRM Webclient, it is very often that the standard contact history assignment block in the account overview or in the customer fact sheet does not meet up to the requirements of the users. For instance, SAP will always select all historical contacts. This of course will take some time in case of large 'busy' accounts.

Customizing can be done to improve the performance on this assignment block, by setting a maximum number of selected activities. The selection on the database will then be 'up to n rows'. The effect of this is that the system will select the first n rows it finds.

As the crmd_order_index is sorted by guid, the outcome of the selection is not guaranteed. Most likely, the system will show the n oldest activities, and the chance that the most recent activity is shown, decreases overtime as more activities are created in the system.

Especially in a B2B environment with many contacts on large accounts, this can become a problem.


The solution is to implement your own logic in the BADI CRM_BP_UIU_BT. Here, you can delete items based on their contents. This will improve performance as after the BADI, more details will be retrieved from the system, and less data is moved to the browser.

In our example, we added coding to delete marketing-related activities from the overview, for the account manager business role, as this is of less interest for them. After reading the current profile, we used the following code to narrow the selection:

CASE lv_profile_name.
WHEN '[PROFILE_NAME]'.
CLEAR ls_selrow.
ls_selrow-attr_name = 'PROCESS_TYPE'.
ls_selrow-sign = 'I'.
ls_selrow-option = 'NE'.
ls_selrow-low = '[PROCESS_TYPE]'.
APPEND ls_selrow TO ct_selection_param.

WHEN OTHERS.

ENDCASE.

Wednesday, November 3, 2010

Deleting personalized views

When changing a configuration in an overview screen, there is always the risk that users have maintained their own personalized view. The change you have made, will then not be applied to these users, unless they click the button ‘reset to default’ in the personalization screen.


You can determine which users have maintained a personal view by checking table BSPC_DL_PERSSTOR. In this table, you can select the changed view, and see the users.


You can now of course email them to delete their personalized view, or you can (a littlebit more forced) just delete the entries from the table. SAP has supplied a SE38 program to delete the personalized views.



The program is called BSP_DLC_DELETE_PERSONALIZATION.
In this program, you can set for instance the component, viewname and rolekey of the personalized views to be deleted. Be aware that the program will not show you an overview of the views to be deleted, so be sure to check the table before executing the program.