Wednesday, March 30, 2011

SAP CRM on your iPhone


As of CRM 7.0, it is possible to connect mobile devices to SAP CRM using Sybase Unwired Platform technology. Basically, you will need a SAP NW Mobile instance, a SUP server and a Sybase Relayserver. SAP delivers standard out-of-the-box mobile applications that connect to the SAP CRM system via the Sybase Uwired Platform. Currently, two standard applications are available, Sybase Mobile Sales for SAP CRM and Sybase Mobile Workflow.

More applications are already being developed by SAP.

Wednesday, March 23, 2011

Changing the Work Area Title of an overview page

In the CRM Webclient, every overview page you call has a caption in the header. This caption gives you information of the data below. For instance, in the BP_HEAD/BPHEADOVERVIEW, the account number and the address is shown. In the BT126H_CALL/SALESCALLOVVIEWSET for instance, the information is the transaction type and transaction description.


In some cases you might want to add information to this Work Area Title. This would be particularly useful if you are dealing with information that is important to the agent, but is not available in any assignment block. For instance, you might consider:

Wednesday, March 16, 2011

Webclient UI enhancements: Testing with the standard coding

What if you are facing issues in an enhanced component, but you are not sure if this is a problem in the standard or in the enhancement?

To make this analysis, you could of course delete the enhancement, and put it back in place once you have found the problem, but this is quite extensive, as you would have to re-insert all the coding you had done before.

An easier way is to change the entries in the view BSPWDV_EHSET_DEF.
This view contains all the redefinitions. The view can be called from the BSP Workbench (BSP_WD_CMPWB) in Environment --> Enhancement definitions.

Here, you can change whether the system looks at the redefined BSP, or at the standard. You can also choose to change whether the system looks at the redefined views or the standard view by changing the view controller.

If you change the entries here and restart the browser, you will notice the system runs the standard code. Don’t  forget to put the original settings back though.

Wednesday, March 9, 2011

Save objects in the memory using the BDC (Business Data Context)

In the Interaction Center Webclient, a mechanism called Business Data Context (a.k.a. BDC) is used.
Don’t let them confuse you… BDC is sometimes also referred to as GDC (Global Data Context). It is actually the same.

The BDC is a set of objects stored in the Global Memory of your session. For instance, the CURRENTCUSTOMER is occupied when the business partner in the IC Webclient is confirmed.

Objects from the BDC can be used in the transaction launcher, but of course also in coding.

Standard, the Webclient UI (so for instance the SALESPRO role), does not use the BDC. However, it can be very interesting to know for instance what the last shown customer is, or what the last shown product was, or you can implement a button that calls a launch transaction, and just before calling the launch transaction, you fill the BDC with your current context (i.e., a button on the BP_HEAD).

The objects in the BDC are defined in the IMG:
Customer Relationship Management --> UI Framework --> Technical Role Definition --> Define Global Data Context Parameters

Here, you can add a parameter like ZACCOUNT of type BuilHeader or ZPRODUCT of type Product.

Now in the BSP Workbench, for instance in the BP_HEAD, you can add the following code:

-----------------------------------------
data: __gdc type ref to if_crm_ui_data_context,
        lr_BuilHeader type ref to CL_CRM_BOL_ENTITY.

__gdc ?= cl_crm_ui_data_context_srv=>get_instance( ).

TRY.
       lr_BuilHeader ?= <BuilHeader from the context>.
CATCH CX_SY_MOVE_CAST_ERROR.
ENDTRY.
 
__gdc->set_entity( name = 'ZACCOUNT' value = lr_BuilHeader ).
-----------------------------------------

If you implement this for instance in the BP_HEAD/BPHEADOverview --> DO_PREPARE_OUTPUT, the ZACCOUNT in the BDC will be overwritten every time a different customer is shown. This way, the parameter will always hold the last shown customer. This you might for instance use to call a transaction in the ERP system with a parameter.

Wednesday, March 2, 2011

Performance of the Agent Inbox: Change the Evaluation Path of AI_ORGUS

In the agent inbox, when searching for items of a “my groups”, SAP CRM automatically decides to not only search for items in “your” group, but also for items for all members of the group.

When you do a sql trace, you will notice that when working with big groups (for instance a call center), this can consume quite some time.

To avoid long runtimes in the agent inbox, you can decide to adjust the evaluation path AI_ORGUS in SPRO.

IMG --> SAP Customizing Implementation Guide --> SAP NetWeaver --> Application Server --> Business Management --> Basic Settings --> Maintain Evaluation Paths.

AI_ORGUS is used to decide which partners should be considered in the search.

Find AI_ORGUS and mark all checkboxes in the skip column (on the right).
Now when searching for inbox items, the system will only retrieve inbox items which have been assigned directly to the group (i.e., the group is the responsible department in the partner schema), and not also to members of the group.

Of course, you will have to make sure that the responsible department is part of the partner procedure and is always determined correctly in your process... Otherwise, open items might not be picked up.

NOTE: SAP has decided to reuse the AI_ORGUS (while AI stands for Agent Inbox) in the Pipeline Perfomance functionality. If you adjust the evaluation path for a faster inbox, you should be aware that without any adjustments, the PPM will not work as designed anymore.

Adjust (or enhance) method CL_CRM_PPM_UM_TOOLKIT-->GET_TEAM_OF_ORGUNIT

What you want to do is to replace AI_ORGUS with for instance ZPPM_ORGUS. ZPPM_ORGUS should be a copy of the original AI_ORGUS. Or you can convince OSS of the design error (reusing AI_ORGUS in a different context), and get a note.