As I have been once working as a developer in S/4HANA for Customer Management (S4CRM) and Cloud for Customer(C4C) development team, in this blog I will give some brief introduction regarding the technical difference between these two products.
Note: S4CRM mentioned in this table has version 1.0 released on Feb 28, 2018.
Deployment Strategy
This biggest difference directly leads to other divergences mentioned in the table.
SAP Standard UI
Although UI of both looks like Fiori application, they are fundamentally developed by different UI technology.
S4CRM UI is still built based on SAP CRM WebClient UI. The WebClient framework team colleagues did some tricks: a new theme called Belize is introduced with a series of visual harmonization done in WebClient UI framework, so that WebClient UI application built on top of it has a similar look-and-feel with those native Fiori application.
Suppose you have seen a UI and you could not be sure about whether it is built on SAP WebClient UI or SAP UI5, you can open it via Chrome development tool.
If you could find CRM Application Frame there or ICF path containing /bc/bsp, you can ensure that this UI is based on WebClient UI.
And these UI5 library files give you a hint that the UI is based on SAP UI5.
Once installed, there is a new tab named UI5 in Chrome development tool. It will show corresponding content if a UI5 application is opened, and empty content for a non-UI5 application.
On the other hand, C4C standard UI is developed based on SAP UI Designer + SAP UI5.
It also follows Pareto Principle, which means 80% of C4C standard UI has similar layout style: in the following C4C UI, the element in red area is called "Work Center", blue area as "Work Center View", and green area as "Object Work List".
Although there are different application in C4C, users still use the unique way to access them: start from a given Work Center, choose a Work Center View from it, and perform search in OWL. In order to avoid the repeated effort to build such UI, UI Designer is introduced to enable developers to build UI via a WYSIWYG way.
For example we can find UI model name of the OWL in Tickets view via Chrome development tool: /BYD_COD/ServiceOnDemand/AgentQueue/SEOD_Ticket_SADL_OWL
The model is opened in UI Designer as below. We first drag a table control from UI Designer toolbox, and then specify which columns should be displayed, and bind each column with the corresponding fields of Tickets business object, so that the Tickets business data could be displayed in the table in the runtime.
The UI model developed by UI Designer is stored in ABAP backend with XML format. When a C4C UI is launched, the model content is loaded to frontend, and interpreted by C4C UI5 framework: controls drawn in UI Designer is translated and converted to UI5 control instead, and rendered by browser in the end.
For the left 20% requirement which could not be covered by UI5 designer due to technical reasons, we still use SAP UI5 to fulfill them. Take the map integration as below for example, it is SAP Chengdu C4C development team who has integrated the Auto Navi Map into C4C via SAPUI5.
Partner UI
In S4CRM, since partners can directly log on system via SAPGUI, so in principle, functions implemented by SAP Standard development could be achieved by partners as well.
I heard some complains that WebClient UI is a little bit cumbersome compared with some other open-source UI framework - it is difficult to implement some features by WebClient UI. In my opinion, since WebClient UI is based on SAP BSP, and in SAP BSP, it is still allowed to directly program with HTML + JavaScript, so it means flexibility is still available in WebClient UI.
For example you can follow my blog to fulfill these features:
It is only allowed to develop UI via UI Designer for C4C partners. It is not possible for them to develop using SAP UI5. Nevertheless an alternative exists: C4C HTML mashup.
SAP Backend Development
Both S4CRM and C4C are deployed on ABAP Netweaver。So both SAP employees working on these two products are using SAPGUI or ABAP Development Tools for their daily work. For more information regarding ABAP Development Tools, you can refer to my blog
那些年我用过的SAP IDE.
The Service Request model in S4CRM is built based on technical framework called "One Order", while Service Request in C4C is built by ESF(Enterprise Service Framework). Both One Order and ESF work by following the similar principle as in Spring framework in Java:
dependency injection and
dependency inversion.
That is, it is only necessary for SAP developers to concentrate on implementing business logic into framework specific models(named Callback in One Order and determination in ESF) without caring about when they should be called. Instead, the model initialization, the execution context preparation, dependency management among models, and model orchestration with ESF, all such stuff are covered by ESF. By this way the programming complexity is reduced with application robustness enhanced.
The red highlighted function modules below give an example how callbacks in One Order framework look like.
Here below is one example of BO determination in S/4HANA. Because C4C backend is invisible to C4C partners & customers and thus is not allowed to divulge any C4C backend detail in public. As a result I use S/4HANA determination in ESF here instead, as both ESF in C4C and S/4HANA has similar technical implementation.
Partner Backend Development
For backend development, the same tool(SAPGUI or ABAP Development Tools) are used in SAP standard development and partner development.
For C4C partners, it is only allowed to use SAP Cloud Application Studio for partner developpment. This is due to the cloud deployment approach of C4C: multiple C4C customers can share the same physical server with different tenants on the server. Cloud Application Studio is introduced to be used by C4C partners so that artifacts coud be developed and managed by PDI(Partner Development Infrastructure) in a tenant specific way.
You can find a list of my blogs related to Cloud Application Studio from this
link.
Integration
There is no out-of-the-box Web services and Odata services in S4CRM. Instead you have to use tcode SOAMANAGER to wrap remote-enabled function modules into Web Service or develop OData services by yourself. You can find details step about Web service development from my blog
Step by step to create, consume and trace web service in ABAP system.
On the other hand, although it is now not necessary to leverage CRM Middleware to achieve data exchange between S4CRM and S/4HANA any more, nevertheless you can still use XIF Adapter to integrate S4CRM with external system. XIF Adapter works as the role demonstrated in below diagram:
As a cloud solution, C4C has a rich set of integration approaches with other systems.
Here below is an overview of standard integration scenario available in C4C:
This
SAP Help also documents the standard OData services which are ready for use:
All C4C Integration related stuff are well maintained in this blog from Sapna Ramaiah:
Key User Extensibility
S4CRM does not continue to use SAP CRM Application Extension Tool for extensibility purpose, but choose S/4HANA Key User Tool in S/4HANA instead. One cool feature of this tool is that it can enable you to directly write ABAP code in the browser. I was once very curious about how this feature is implemented in browser and documented my research findings in my blog:
An overview introduction of S/4HANA Key User Tool could be found from blog:
And one feature of C4C Key User Tool which I feel very impressive is it is possible to hide/show a given UI element via rule edit. Even scripting is allowed there.
I was once obsessed with this feature and made research how it works:
Office integration
Excel export is supported in both S4CRM and C4C. Details could be found from my blog:
PDF export is also supported in both product with different technical implementation:
Besides Export export, it is also supported to import local data into C4C via excel import.
In SAP CRM On-Premises there is more powerful function related to word template: a word template file could be created. A business object model in SAP CRM could be bound into this template file, whose fields are displayed in a hierarchy tree in word file and could be dragged from the tree and dropped into the word file. Once done, a binding relationship is established between the UI element in word file and corresponding bound BO field.
In the example below I create a word template and assign it with Product business object in CRM.
In the runtime, once I open such template file from the detail page of a given product in CRM WebClient UI, the fields in word template bound to Product business object are filled by corresponding values automatically.
Details step could be found from my blog:
Such function is not supported in S4CRM 1.0.
In the end I list several comparison in regard to some concrete technical points:
Hope this blog can help you gain a basic understanding the technical differences between S4CRM and C4C.