1. 程式人生 > >SAP S4CRM和C4C的技術比較

SAP S4CRM和C4C的技術比較

一點 ren strip 號稱 bsp 人在 ash 分配 down

如果您對SAP S/4HANA for Customer Management(以下簡稱S4CRM)和SAP Cloud for Customer(以下簡稱C4C)不甚熟悉,那我建議您可以先瀏覽我之前寫的這兩篇微信公眾號文章。

  • SAP的這三款CRM解決方案,您能區分清楚麽
  • Hello World, S/4HANA for Customer Management 1.0

發布了這兩篇文章之後,我在後臺收到很多朋友的留言,詢問S4CRM和C4C相比較的各種問題。因此我寫了這篇文章,統一作答。

Jerry受家中長輩影響,從小就是一個三國演義迷,小學還未畢業,羅貫中的三國演義就已讀過無數遍了。幼時也曾纏著長輩追問諸葛亮和周瑜誰在智力上更甚一籌,直到初中時我入坑“暗榮”發布的三國誌V, 才從遊戲中找到了答案。
為了寫這篇文章,Jerry又一次打開了玩了無數次的三國誌V。好吧,周大都督智力值只比諸葛丞相低1點,但是武力值高18點。一代儒將,文武雙全,“曲有誤,周郎顧”,名不虛傳。
技術分享圖片

技術分享圖片

大學畢業參加工作後不久,又趕上真三國無雙V的發布。
技術分享圖片

技術分享圖片

這部毀譽參半的作品在我這個三國迷看來卻稱得上又一款神作,雖然該作品也有很多我想吐槽的地方,比如周大都督的兵器居然和孫大聖的一樣,而赤壁之戰周公瑾借此在世界軍事史以弱勝強的著名戰例中留下濃墨重彩一筆的“火計”,居然分配給了陸遜這個小說中我非常討厭的家夥,然後補了一個和趙雲一樣的技能“神速”,囧。不過瑕不掩瑜,我又是玩的不亦樂乎,以至於在很長的幾年時間裏,我的很多論壇賬號的頭像都是用的下圖這種:
技術分享圖片

諸葛亮和周瑜這對人物,無論是在三國演義書中,還是在數不清的以三國為題材的電腦遊戲裏,各自都有大量的粉絲。如果要問誰更優秀,在Jerry看來這個問題本身就很荒謬,兩人在蜀和吳擔任的角色不同,這根本沒有可比性。不過要問Jerry更喜歡哪一個,答案毫無疑問是諸葛丞相,畢竟作為一個土生土長的成都人,而且在武侯區又住了那麽多年。

為了避免這篇文章成為三國遊戲介紹雜文,讓我們言歸正傳。
Jerry在S/4HANA for Customer Management(以下簡稱S4CRM)和Cloud for Customer(以下簡稱C4C)開發團隊都工作過,這篇文章給出這兩款產品一些技術層面的比較。

下圖是我原創的表格。

註:表格中S4CRM指2018年2月28日發布的1.0版本。
技術分享圖片

部署方式

這一差異顯而易見,本地部署和雲端部署的區別導致了表格裏其他比較項目的差異。

SAP標準UI開發方式

S4CRM和C4C的UI雖然看起來都是Fiori風格,但實現技術不同。

S4CRM的標準UI采用的仍然是SAP CRM WebClient UI技術,只不過SAP WebClient UI團隊的開發同事們巧妙地設計了一系列CSS,並且對WebClient UI的框架做了一些調整(所謂的”Visual Harmonization”), 使得其視覺效果和體驗接近於原生的Fiori應用。

如果看到一個界面風格和原生Fiori應用很類似的UI,您不能判定該UI到底是基於WebClient UI還是SAP UI5,可以打開Chrome開發者工具,倘若能找到下圖紅色區域所示的CRM Application Frame和帶有/bc/bsp的ICF路徑,則該UI是基於WebClient UI開發的。
技術分享圖片

如果在Sources標簽頁內能看到加載了下圖所示的UI5庫文件,說明該UI是基於SAP UI5開發的。
技術分享圖片

當然也可以安裝我的博客Chrome Development Tool tips used in my daily work提到的UI5 Inspector:

安裝之後在Chrome開發者工具會多出一個名為UI5的標簽頁,如果一個UI基於SAP UI5,則該標簽頁會顯示對應信息,否則顯示空白。

技術分享圖片

而C4C的標準UI則是基於SAP UI Designer和SAP UI5協作而成的。C4C標準UI也符合著名的“二八定律”,即80%的標準UI布局類似,只是呈現的業務數據有差異。例如下圖紅色區域我們稱之為工作中心(Work Center),藍色區域為工作中心視圖(Work Center View),綠色區域稱為Object Work List。

技術分享圖片

C4C裏不同的應用盡管功能各異,但用戶都是通過工作中心-工作中心視圖-OWL這個統一的方式去訪問。為了避免開發此類布局基本類似的UI模型造成的重復勞動,我們使用UI Designer,以所見即所得的方式開發UI模型。

例如Tickets這個視圖裏的OWL基於的UI模型名稱可以通過Chrome開發者工具找到: /BYD_COD/ServiceOnDemand/AgentQueue/SEOD_Ticket_SADL_OWL

技術分享圖片

該模型在UIDesigner裏打開如下圖所示。我們首先從UI控件工具箱裏拖拽出一個表格控件放到該模型UI區域,再指定該表格需要顯示哪些列,並維護每列需要顯示Ticket這個Business Object上哪些字段的內容。
技術分享圖片

在UI Designer裏開發的UI模型保存之後,在ABAP後臺以XML的格式存儲。運行時這些UI模型的內容被讀到C4C前臺,通過C4C UI框架翻譯成SAP UI5控件渲染給終端用戶。

對於UI Designer技術上不能支持的剩下20%的需求,我們仍然會采用原生的SAP UI5開發。比如下圖這種地圖和C4C標準UI的集成,就是成都SAP研究院的C4C開發團隊通過SAP UI5實現的。

技術分享圖片

Partner UI開發方式

對S4CRM來說,因為是本地部署,Partner可以直接登錄後臺進行開發,所以理論上來說,只要SAP標準開發能實現的功能,Partner也能做。

有的朋友抱怨WebClient UI和其他開源UI框架相比顯得比較笨重,有的特效不易實現。其實,我的個人看法是,WebClient UI底層是基於SAP BSP的,而BSP又支持原生HTML和Javascript的開發,因此BSP其實也是靈活和開放的。

例如您可以參考我的這篇文章使用WebClient UI實現下面的效果:

技術分享圖片

Display count down in WebClient UI

技術分享圖片

以及在BSP裏使用Vue:

技術分享圖片

對於C4C的Partner來說,只能使用UI Designer進行UI開發。C4C標準的UI5開發那條途徑沒有對Partner開放。不過存在一個輕量級的替代方案:使用C4C HTML mashup擴展C4C標準UI。

下面是SAP Community上的一篇博文,介紹了如何調用微軟新聞API,取回最新的新聞並顯示在C4C的客戶明細頁面裏。

技術分享圖片

SAP後臺開發方式

S4CRM和C4C後臺都是基於ABAP Netweaver,因此對於SAP標準開發人員來說,進行這兩個產品的後臺開發使用的工具相同:SAPGUI或者ABAP Development Tools。關於更多ABAP Development Tools的介紹,請參考我的微信公眾號文章那些年我用過的SAP IDE 。

S4CRM的Service Request的實現是基於One Order這個技術框架,Jerry是該開發框架的一員,而C4C的Service Request則基於ESF(Enterprise Service Framework)框架,Jerry在C4C項目中對該框架也有所了解,因此這裏可以多說一句。One Order和ESF這兩個框架其實現都有著Java Spring裏依賴註入和控制反轉的影子,即SAP應用開發人員只需要專註於將具體的業務邏輯實現在框架規定的技術模型裏——One Order裏稱為回調(Callback), ESF裏稱為Determination,而無需操心這些模式何時調用——這些模型實例的初始化,執行上下文的準備,以及模型與模型之間的依賴,模型與框架的協同工作(orchestration)等等工作都由ESF框架本身完成,這極大程度地降低了應用開發的編程復雜度,提高了應用程序的健壯性。

下圖是S4CRM裏One Order的部分回調截圖,紅色區域即為具體的回調函數。

技術分享圖片

下圖是S/4HANA裏的BO Determination的一個例子。因為C4C的後臺對Partner不可見,因此不允許在社交媒體上發布任何關於C4C後臺的截圖,這裏我采用S/4HANA的截圖代替,因為二者技術原理類似。

技術分享圖片

Partner 後臺開發方式

對S4CRM來說,SAP開發人員和Partner采用的開發工具和開發方式相同。

對C4C Partner來說,只允許使用SAP Cloud Application Studio進行後臺的二次開發。這是因為C4C基於雲的部署模式,多個客戶以不同租戶(tenant)的方式,共享同一物理服務器。直接用SAPGUI和ABAP Development Tools創建的後臺模型均為所有租戶可見。因此,SAP提供了新的開發工具Cloud Application Studio供Partner進行後臺二次開發。使用該工具創建的後臺模型由所謂的PDI(Partner Development Infrastructure)統一管理,確保其租戶隔離性(Tenant Isolation)。

我在SAP Community上也寫過很多關於Cloud Application Studio的文章,您可以通過這個鏈接獲得。

與其他系統集成的技術手段

S4CRM不存在C4C裏開箱即用的Web Service和OData Service,需要Partner自行將function module通過事務碼SOAMANAGER暴露成Web Service。具體步驟參考我的博客: Step by step to create, consume and trace web service in ABAP system

另一方面,雖然S4CRM不需要再借助CRM中間件進行S4CRM和S/4HANA的數據同步,但是仍然可以使用CRM中間件裏的一個模塊,XIF(External Interface) Adapter來和第三方系統交互。XIF Adapter在整個交互場景中扮演的角色如下:

技術分享圖片

具體例子參考我的博客:Step by step to send IDoc data into external receiver via XIF adapter

有趣的是,傳統的SAP CRM和C4C也是可以通過PI(Process Integration)和XIF Adapter進行集成的, 請參考我的博客: Replicate CRM Opportunity to SAP Cloud for Customer using PI and XIF Adapter

和S4CRM相比,作為一款雲解決方案,C4C同其他系統的交互手段要豐富得多。下圖是C4C提供的標準集成場景一覽:

技術分享圖片

SAP Help裏描述的這些OData Service也是開箱即用的:

技術分享圖片

C4C所有的集成方式都記錄在一位印度美女同事Sapna Ramaiah的博客裏,閱讀量超過4萬:

SAP Hybris Cloud for Customer – All About Integration

技術分享圖片

Key User Extensibility

S4CRM沒有繼續使用源自SAP CRM的AET(Application Extension Tool), 而是采用了S/4HANA的擴展工具S/4HANA Key User Tool。該工具的一個特色就是支持在瀏覽器裏書寫ABAP代碼,其原理在我的微信公眾號文章 那些年我用過的SAP IDE裏有過介紹。

C4C裏的Key User Tool無論從使用方式還是從功能上來說都和S/4HANA Key User Tool非常類似,這在我看來一點也不奇怪。這篇介紹S/4HANA Key User Tool的博客的作者,Thomas Schneider,曾經是大名鼎鼎的SAP PDI的首席架構師:

The Key User Extensibility Tools of S/4 HANA

技術分享圖片

Thomas博士1996年進入SAP工作至今,出版過多部SAP技術著作。我去德國Walldorf總部出差時,曾看到不少同事桌上都擺著他的一兩本書。

技術分享圖片

C4C的Key User Tool給我留下深刻印象的一個強大功能是提供了靈活的規則(Rule)編輯功能來控制UI上某個元素的顯示/隱藏。這種規則甚至可以通過腳本代碼來定義。

因為對這個功能的實現很好奇,我做過一些研究並把結果寫在了這篇博客裏:

How to change UI element visibility dynamically via Rule Editor – and how it works under the hood

技術分享圖片

而S/4HANA Key User Tool也毫不遜色,甚至支持直接在瀏覽器裏編寫ABAP代碼:

技術分享圖片

具體原理在我的公眾號文章那些年我用過的SAP IDE裏介紹。

Office integration

S4CRM和C4C均支持Excel導出,具體實現參考我的博客:

Excel export in CRM and C4C

技術分享圖片

PDF格式的導出也是均支持的,只是具體實現方式有所區別。

  • S4CRM的做法

  • C4C的做法

C4C除了Excel導出外,還支持通過Excel上傳的方式將本地數據導入至C4C系統。

技術分享圖片

值得一提的是,SAP CRM支持更為強大的word模板功能,即用戶可以在本地開發一個word模板文件,將裏面的字段綁定到CRM標準的BO模型字段上。比如下圖我將該模板分配給CRM Product(產品)這個BO,然後將BO上需要的字段從文檔右邊的樹形結構拖拽到文檔左邊:

技術分享圖片

技術分享圖片

運行時只要我從某個產品明細頁面打開該模板,該模板裏綁定到BO模型字段上的字段就會自動顯示對應的BO模型字段的內容,如下圖所示:

技術分享圖片

具體步驟參考我的博客:

Create Webservice enabled word document in attachment assignment block

這個功能S4CRM 1.0不支持。

成都SAP研究院開發團隊

成都SAP研究院的S4CRM和C4C兩支開發團隊的人員組成差不多,都由在SAP CRM領域耕耘多年的老兵加上剛畢業的新人組成。至於兩支隊伍的羽毛球水平,麻將水平,K歌水平,對美食的喜愛程度等等,均不在本文討論範疇內,有興趣私聊。

這裏放幾張成都SAP研究院C4C開發團隊的青年才俊們的一些圖片。您使用的C4C RUI裏的部分JavaScript和CSS代碼,就是由這些前端專家們貢獻的。大家不僅寫代碼了得,而且也很會玩。

這張圖片裏有一位號稱"成都C4C小彭於晏"的同事 技術分享圖片

技術分享圖片

中間這位眾矢之的是SAP成都研究院C4C開發團隊一位才華橫溢的程序猿,精通ABAP, UI5, Java,nodejs, PHP等技術,同時擅長講各種段子,很多段子都是原創。
技術分享圖片

技術分享圖片

比較了這麽多,我想表達的觀點就是,S4CRM和C4C作為SAP推出的兩款定位不同的CRM解決方案,均是全球CRM領域的佼佼者,地位就如同諸葛亮和周瑜在群英薈萃的三國時代一樣,沒有誰更優或者誰可以替代誰一說。

最後是一些我寫過的針對一些具體的技術點,S4CRM和C4C的實現差異的比較:

(1) OData Service backend implementation in C4C, CRM and S4 HANA

(2) Excel export in CRM and C4C

(3) Saved query in C4C, CRM and S/4 HANA

(4) Direct navigation in CRM WebUI, CRM Fiori and C4C

(5) Formatted Text Edit in CRM and Cloud for Customer

(6) How Table column resize works in CRM and Cloud for Customer

(7) Document flow API in SAP CRM and C4C
要獲取更多Jerry的原創技術文章,請關註公眾號"汪子熙"或者掃描下面二維碼:

技術分享圖片

技術分享圖片

SAP S4CRM和C4C的技術比較