溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

發(fā)布時(shí)間:2021-12-18 16:14:57 來(lái)源:億速云 閱讀:113 作者:柒染 欄目:軟件技術(shù)

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

C4C用戶通過(guò)Key User Tool這個(gè)工具(類似CRM的Application Enhancement Tool,AET)對(duì)C4C標(biāo)準(zhǔn)UI和客戶定制開(kāi)發(fā)的UI進(jìn)行增強(qiáng)。增強(qiáng)類型分為Personalization和Adaptation,分別針對(duì)同一tenant內(nèi)單個(gè)用戶生效和同一tenant內(nèi)全部用戶生效。

Key User Tool非常容易使用。如果想通過(guò)Adaptation的方式增強(qiáng)UI,登錄C4C ,在頂部菜單欄選擇Adapt -> Edit Master Layout(相應(yīng)的,如果選擇Personalization方式,則通過(guò)下圖Adapt旁邊的Personalize菜單項(xiàng)開(kāi)始)。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

現(xiàn)在將光標(biāo)懸浮在頁(yè)面任意位置,如果頁(yè)面被C4C后臺(tái)設(shè)置為“可以增強(qiáng)”,那么能看到一個(gè)彈出的工具欄,點(diǎn)擊里面的加號(hào)圖標(biāo),就能從下拉菜單中選擇“Add Fields”來(lái)進(jìn)行字段的增強(qiáng)了。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

填寫字段描述,類型等信息之后保存即可。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

大家把上圖C4C擴(kuò)展字段創(chuàng)建頁(yè)面和下圖出現(xiàn)在Jerry前一篇文章的S/4HANA擴(kuò)展字段創(chuàng)建頁(yè)面做對(duì)比,是不是非常相像?

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

對(duì)客戶而言,整個(gè)過(guò)程簡(jiǎn)單易懂,僅僅幾分鐘便完成全部操作。背后的支撐是SAP C4C提供的Extensibility框架, 這正是我要給大家介紹的。首先我們從基本概念說(shuō)起。

Personalization

用戶通過(guò)這種方式對(duì)UI進(jìn)行的調(diào)整,只對(duì)當(dāng)前進(jìn)行Personalization的用戶生效,對(duì)其他用戶不可見(jiàn)。

C4C后臺(tái)有一個(gè)叫XREP的存儲(chǔ)系統(tǒng),設(shè)計(jì)思路和理念同Jerry介紹S/4HANA Extensibility時(shí)提到的LREP一致,只不過(guò)在C4C里換了一個(gè)名字而已,這里的X代表Cross。盡管C4C的客戶和Partner無(wú)法像S/4HANA那樣,登錄后臺(tái)查看XREP的全部?jī)?nèi)容,但仍舊可以通過(guò)UI Designer里的Configuration Explorer,查看XREP里的部分內(nèi)容。如下圖右邊區(qū)域所示,XREP實(shí)質(zhì)上就是一個(gè)用ABAP實(shí)現(xiàn)的分層的文件系統(tǒng)。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

從技術(shù)上講,每個(gè)Personalization施加的UI修改,都會(huì)生成一個(gè)文件,這些文件的C4C官方叫法是Change Transaction,下文簡(jiǎn)稱CT。Personalization產(chǎn)生的CT存儲(chǔ)在C4C后臺(tái)XREP里名叫公式輸入有誤PERS中的CT合并到對(duì)應(yīng)的C4C標(biāo)準(zhǔn)UI上。

Adaptation

技術(shù)上講,Adaptation產(chǎn)生的CT文件會(huì)存儲(chǔ)在該用戶所歸屬的Layer里。例如客戶做的UI修改,會(huì)存儲(chǔ)到名為$Cust的Layer中去。而Partner做的修改,存儲(chǔ)到Partner對(duì)應(yīng)的Solution獨(dú)有的Layer下面。Partner Solution是C4C一個(gè)特有的概念,如下圖Cloud Application Studio中的一個(gè)例子。大家可以把Partner Solution類比成ABAP Package的一個(gè)封裝,一個(gè)Partner Solution里能存放Cloud Application Studio支持的各種資源,比如UI,BO,Web Service,OData開(kāi)發(fā)等等。每個(gè)Partner Solution在XREP里都有對(duì)應(yīng)的Layer。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

我的同事Yang Joey曾經(jīng)在他的文章 SAP成都研究院C4C光明左使:SAP Cloud for Customer 使用SAP UI5的獨(dú)特之處 提到過(guò),C4C的UI界面的源代碼,是以XML格式存儲(chǔ)在ABAP Netweaver后臺(tái)的XREP里的。XREP提供了許多訪問(wèn)這些XML文件的API,比如讀取,解析,激活等等。同S/4HANA LREP一樣,C4C XREP有不同的Layer,分別存儲(chǔ)SAP標(biāo)準(zhǔn)UI,Partner創(chuàng)建的UI,以及用戶所創(chuàng)建的資源。通過(guò)Layer實(shí)現(xiàn)了資源的區(qū)分隔離,使得操作者對(duì)UI的更改不需要修改最底層SAP標(biāo)準(zhǔn)的UI文件。運(yùn)行時(shí),上層的更改覆蓋對(duì)應(yīng)的底層文件的表現(xiàn)。關(guān)于不同層之間合并(Merge)的更多細(xì)節(jié),請(qǐng)參考Jerry文章 SAP產(chǎn)品的Field Extensibility 里S/4HANA章節(jié)里對(duì)LREP的介紹。

運(yùn)行時(shí),C4C框架從XREP Layer 公式輸入有誤Load包含SAP標(biāo)準(zhǔn)UI,以及Partner和客戶進(jìn)行UI更改產(chǎn)生的CT。在Adaptation模式下產(chǎn)生的CT會(huì)被立即合并到對(duì)應(yīng)的UI去,CT合并之后$Load中的UI文件會(huì)被重新生成,以便在下次加載時(shí)前臺(tái)框架總是基于最新合并后的UI源代碼進(jìn)行渲染。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

我們現(xiàn)在以Adaptation的方式修改一個(gè)標(biāo)準(zhǔn)字段的屬性,然后觀察伴隨著這個(gè)修改動(dòng)作,自動(dòng)生成的CT到底是什么樣子的。我們將Employee UI上Manager這個(gè)標(biāo)準(zhǔn)字段的Mandatory屬性打上勾,意思是如果該字段未維護(hù),則對(duì)Employee做的修改無(wú)法成功保存。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

因?yàn)橛脩艉蚉artner無(wú)法登陸C4C后臺(tái),所以我們需要用另一種方式查看生成的CT明細(xì)。在地址欄的url里增加debugMode=true的參數(shù)進(jìn)入調(diào)試模式。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

然后重新加載該頁(yè)面,按住Ctrl + 鼠標(biāo)左鍵點(diǎn)擊“Manager”字段,出現(xiàn)一個(gè)彈出窗口。下圖紅色下劃線標(biāo)注的就是這個(gè)CT在XREP中的存儲(chǔ)路徑。路徑里有個(gè)片段"AddCondition", 提示了這個(gè)CT的類型。點(diǎn)擊超鏈接"Get CTs"查看CT明細(xì)。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

這個(gè)CT的XML內(nèi)容如下:

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

里面包含的一些重要信息:

  • UsedAnchor:這個(gè)屬性是C4C Extensibility設(shè)計(jì)區(qū)分于SAP CRM和S/4HANA的最重要標(biāo)志之一,馬上詳細(xì)介紹。上圖的UsedAnchor類型為SectionGroupAnchor,xrepPath為該Anchor在XREP中的路徑。

  • TargetFile: 說(shuō)明這個(gè)CT會(huì)被合并到哪個(gè)C4C UI上。上圖例子里的值為COD_Employee.TI, 指的是Employee的明細(xì)頁(yè)面,即Employee明細(xì)頁(yè)面上發(fā)生了UI Adaptation操作。

  • AddCondition:說(shuō)明這個(gè)UI修改的具體類型。上圖例子指修改的屬性名稱為"Mandatory", 默認(rèn)值為true。

現(xiàn)在來(lái)細(xì)說(shuō)UsedAnchor。Jerry的文章 SAP產(chǎn)品的Field Extensibility  曾經(jīng)提到,在SAP CRM和S/4HANA的后臺(tái),都有一個(gè)統(tǒng)一的Extensibility注冊(cè)表。每個(gè)應(yīng)用的開(kāi)發(fā)人員,如果希望自己應(yīng)用的UI能夠支持Extensibility,那么需要將框架需要的信息注冊(cè)進(jìn)去。同樣,C4C Extensibility也需要這種注冊(cè)表的邏輯,通過(guò)上面例子里提到的Anchor實(shí)現(xiàn)。

Anchor的中文意思是“錨點(diǎn)”,這個(gè)字用在C4C Extensibility注冊(cè)這個(gè)上下文非常合適。每個(gè)Anchor指向了一個(gè)可以通過(guò)C4C Key User Tool進(jìn)行增強(qiáng)的UI區(qū)域。我們用UI Designer中打開(kāi)剛才修改了Manager字段Mandatory屬性的Employee明細(xì)頁(yè)面,發(fā)現(xiàn)Manager字段位于一個(gè)Section Group中。選中該Group,從頁(yè)面右邊的Extensibility屬性中能發(fā)現(xiàn)維護(hù)有一個(gè)Anchor。該Anchor即我們之前研究的CT的XML內(nèi)容里UsedAnchor字段的值。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

如果一個(gè)Section Group的Extensibility屬性處維護(hù)有Anchor,意思是SAP C4C聲明該Section Group可以被Key User Tool增強(qiáng)。反之,不可增強(qiáng)。在Adaptation模式下將鼠標(biāo)放至這些不可增強(qiáng)的UI上,只會(huì)被高亮,但沒(méi)有任何工具欄顯示。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

除了Key User Tool外,C4C的Partner還有另外一個(gè)途徑對(duì)UI做增強(qiáng),即使用Cloud Application Studio的Extensibility Explorer。選中一個(gè)UI Section Group,如果該Group的Extensibility字段維護(hù)了Anchor,那么可以看到下圖紅色高亮的操作選項(xiàng),按照向?qū)Ъ纯蓪?duì)該UI做增強(qiáng)。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

最后,這些自動(dòng)創(chuàng)建的CT,到底是在何時(shí)何處,由誰(shuí)創(chuàng)建的?

CT ****創(chuàng)建

CT創(chuàng)建的觸發(fā)是在UI端JavaScript代碼中完成,然后投遞到C4C后臺(tái)的。在C4C UI端JavaScript的目錄sap/client/flex/changes文件夾下,存放著不同類型的UI修改對(duì)應(yīng)的處理器(Handler)。比如AddConditionHandler.js這個(gè)文件,負(fù)責(zé)響應(yīng)用戶在Key User Tool里對(duì)UI字段的屬性做了修改的事件。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

而ChangeRegistry.js, 作為響應(yīng)用戶在Key User Tool里操作的入口,將不同類型的UI修改分發(fā)給對(duì)應(yīng)的處理器進(jìn)行處理。

下圖顯示的是當(dāng)"PropertyChange"這個(gè)類型的UI修改發(fā)生時(shí),該修改被ChangeRegistry.js投遞給處理器PropertyChange.js。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

PropertyChange.js會(huì)根據(jù)傳入的事件參數(shù)進(jìn)行解析,判斷出當(dāng)前發(fā)生更改的字段的Property是mandatory,于是進(jìn)入_mandatoryChanged進(jìn)行處理,創(chuàng)建CT記錄這個(gè)修改。

如何進(jìn)行SAP Cloud for Customer Extensibility的設(shè)計(jì)與實(shí)現(xiàn)

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI