Additional Blogs by Members
cancel
Showing results for 
Search instead for 
Did you mean: 
former_member182046
Contributor

CRM as the enfant terrible

Sometimes, SAP’s Customer Relationship Management (CRM) gives the impression of being the enfant terrible of the Business Suite. When, a few years back, Web Dynpro was announced as SAP’s future user interface technology, CRM came up with their own user interface which was not based on Web Dynpro but on a proprietary solution available only to CRM. It looked vaguely similar to the Enterprise Portal (L-shaped navigational frame) but didn’t use it. Instead, CRM had its own navigational frame, role concept, and of course programming technique for user interfaces. Why on Earth did SAP have to develop two different user interface technologies for web programming on top of the ABAP server? (By the way, Web Client UI but not Web Dynpro uses BSP as an underlying technology layer.)

Historical causes

The cause for the confusion is easy to understand. When SAP was forced to come out with a nifty, web-based user interface for CRM, Web Dynpro wasn’t ready. Based on the rumours I have heard, the specification concept papers were almost completed, and I assume there must have been some prototypes lying around. CRM didn’t have the time to wait until Web Dynpro was available so they took the concept papers, implemented the parts they liked and took the liberty to deviate where they felt like it.

Similarities with Web Dynpro

The result was a framework that bears many similarities with Web Dynpro:

  • generative approach
  • based on the Model-View-Controller (MVC) paradigm
  • window controllers, view controllers, component controllers and custom controllers each possess a context which is structured as a tree and may be bound to the context of other controllers
  • views and windows possess inbound and outbound plugs for navigation
  • applications are built out of components, which expose component interfaces
  • context nodes of the component controller may be exposed in the component interface for cross-component binding
  • elements of the view context may be used in the user interface

Fig. 1: Web Client UI Framework Design Time in ECC 6.0

The design time uses some of the same icons to represent components, custom controllers, and other building blocks. Even most of the classes bear the infix “_WD_”, i.e. their names start with CL_BSP_WD_. There are more similarities, but of course also huge differences and some real advantages, about which I will blog in future instalments. For now, let it suffice that if you understand Web Dynpro programming and have a basic grasp of web programming, you will find working with the Web Client UI Framework rather easy.

BO-Awareness: The competitive edge of the framework’s architecture

Each application in the Web Client UI Framework consists of three layers:

  • The Presentation or UI layer is responsible for the visual part of the application. It consists of web pages that are rendered at runtime on the basis of BSP extensions, and underlying controller classes that contain navigation logic and calls to business logic.
  • The Business Layer consists of the BOL (Business Object Layer) and the GenIL (Generic Interaction Layer). The BOL encapsulates the business object data and state and exposes them to the presentation layer and programming APIs in a standard way. The GenIL communicates with the underlying application engine, e.g. SAP CRM.
  • The Application Layer represents the business application engine.

Fig. 2: Architecture of the Framework

The distinguishing feature of the Web Client UI Framework is the Business Layer consisting of BOL and GenIL, and more importantly the fact that the Presentation Layer is aware of the the Business Layer: Business Objects are exposed to the Presentation Layer in a standardized, consistent way. The Presentation Layer has access to BOL metadata and “knows” the object model, which objects are search objects and which represent business objects, which methods and attributes each object has, and how to represent them in the user interface.

It “knows” how to lock or unlock an entity, how to access related objects (child or parent nodes connected through composition or association). It can rely on a standardized behaviourof the business objects as far as transactionality, locking, instance lifecycle, and so on are concerned.

This puts the Presentation Layer in the position to easily implement CRUD (Create, Read, Update, Delete) user interfaces for BOL entities: The programmer doesn’t have to bother with all the complicated code that is identical in all entity maintenance screens such as searching and picking objects, displaying them, switching between display and edit mode, locking and unlocking objects, cancelling changes (and reverting to the previous state) or saving them, and so on. All this is extremely tedious if you have to code it by hand. By being “BO-aware”, the Presentation Layer of the Web Client UI Framework protects you from implementing tons of boilerplate code, giving it a substantial edge over Web Dynpro, which is – as of now – not “BO-aware”.

Current state of Web Client UI Framework in CRM

As of CRM 7.0, all of CRM’s user interfaces have been migrated to the Web Client UI Framework. Customers and partners who have made their own extensions to SAPGui-based transaction CRMD_ORDER or web-based CRM user interfaces in earlier releases must migrate to Web Client UI Framework 7.0. That is bad news for many who would rather not reprogram their user interfaces in a different technology, especially if they have invested in Web Dynpro training and learn now that they have to invest more in Web Client UI Framework training for their developers. It is also bad news for users of the SAP Business Partner, but I will blog about this subject separately.

Fig. 3: Web Client UI Framework in ERP 6.0 EHP 4

Current state of Web Client UI Framework beyond CRM

The good news is that as of Web Client UI Framework Release 7.0 (WEBCUIF 700), the one that comes with CRM 7.0, the framework is available not only in CRM systems but also in the ERP system. In fact, it has been in General Availability since 21/11/2008 (!) on any ABAP system with NetWeaver 7.0 EHP 1. This is the case for

  • CRM 7.0
  • ERP 6.0 EHP 4
  • NetWeaver ABAP 7.0 EHP 1 (such as the SCN trial)

I don’t know which other applications are already on ABAP 7.01 but they, too, should be compatible with WEBCUIF 7.00.

Installation

Web Client UI Framework 7.00 is automatically part of ERP 6.0 EHP 4 (it comes with the installation of EHP 4) as well as CRM 7.0. On other ABAP systems, you can check if software component WEBCUIF 7.00 is installed, and, if you are on ABAP 7.01, it should be possible to install WEBCUIF as an ABAP Add-on. Please refer to the notes below for further information, especially about the risks and restrictions for your future upgrade path.

Getting it to work on the ERP system

Exploring a bit in our ERP 6.0 EHP 4 sandbox, I found most of the framework to be present: The BOL and GenIL layers (including model browser and BOL browser), the UI framework layer, design time, runtime, BSP extensions, and even the start UI frame application. Additionally, there are some sample UI and BOL/GenIL components based on the SFLIGHT application.

Most of the nodes in the customizing tree (SPRO) as well as the transaction codes for table view and viewcluster maintenance are missing, so you have to know the names of the table views and go directly through transaction SM31.

In order to get it to work and explore the sample applications, I had to

  • start up the ICM (transaction SMICM)
  • create a business role (transaction CRMC_UI_PROFILE) and assign it to navigational bar profile UIF
  • assign it to my user (transaction SU3, parameter id CRM_UI_PROFILE, value * or name of the business role)
  • activate all the CRM-related ICF nodes (transaction SICF, nodes /sap/bc/bsp/sap/ and below, see related note 1295006)
  • enable single sign-on on the ABAP system (note 612670)

Next steps

I will keep exploring the framework and keep you posted about my progress. I will also try to blog about the underlying BOL and GenIL layers and their role in application development. Finally, I’ll write about the impact on SAP Business Partner.

Related notes

Further resources

20 Comments