您好,登錄后才能下訂單哦!
相信通過Jerry的前一篇文章 30分鐘用Restful ABAP Programming模型開發(fā)一個支持增刪改查的Fiori應(yīng)用,想必大家對Restful ABAP Programming模型已經(jīng)有了一個最基本的了解吧?
簡單回憶一下,我們在前一篇文章里,在SAP云平臺ABAP編程環(huán)境里創(chuàng)建了一個Z表,然后基于這張自定義數(shù)據(jù)庫表創(chuàng)建了CDS view,基于該view創(chuàng)建Service Definition,把view暴露成服務(wù),然后通過Behavior Definition實現(xiàn)對Z表的增刪改查。
第一篇文章有朋友留言,詢問通過RAP模型生成的Fiori應(yīng)用如何部署到云上。這位朋友忘記了Jerry從始至終都是在SAP云平臺ABAP環(huán)境上操作的啊,所以這個生成的Fiori應(yīng)用也直接在云上可用了。
雙擊Service Binding里的TravelProcessor或者右鍵菜單里選擇Open Fiori Elements App Preview, 就可以訪問Fiori應(yīng)用。
稍稍有點經(jīng)驗的顧問朋友們都明白,一個模型只有增刪改查的功能是不能滿足客戶實際需求的。在SAP Cloud for Customer里,開發(fā)顧問可以在Cloud Application Studio里創(chuàng)建beforeSave和afterModify這些腳本文件并實現(xiàn)業(yè)務(wù)邏輯,Jerry也曾經(jīng)介紹過,它們相當于S/4HANA BOPF框架里創(chuàng)建的determination.
除了上述在運行時特定的時間點才能觸發(fā)(beforeSave,afterModify)的邏輯外,Action機制則提供了自由度更高的業(yè)務(wù)邏輯編寫機制。體現(xiàn)在UI上,Action邏輯一般通過UI按鈕觸發(fā)。
Validation比較容易理解——自定義的數(shù)據(jù)校驗邏輯。
本文按照順序介紹Action和Validation.
為了介紹在Restful ABAP Programming模型下如何開發(fā)Action,Jerry需要在第一篇文章創(chuàng)建的SFLIGHT表增添一個表示航班預(yù)訂狀態(tài)的字段,并開發(fā)一個Action,當其被調(diào)用時,修改這個狀態(tài)。
(1)在數(shù)據(jù)庫表里增添一個OVERALL_STATUS字段:
當然在對應(yīng)的CDS view上也要通過@UI相關(guān)的注解把這個字段配置到UI上。通過注解lineItem和identification分別把view的這個字段顯示在搜索結(jié)果的table控件和航班信息明細頁面的字段上。通過label指定UI上顯示的標簽,通過注解的dataAction把這個狀態(tài)字段綁定到一個名為acceptTravel的Action上。
重新激活CDS view后,我們就能在工具欄上看到CDS view里通過label維護的標簽文本為Accept Travel了:
因為缺乏實現(xiàn),此時點擊無效果。
(2) 在Behavior Definition的聲明部分,添加如下三行代碼:
上面的代碼除了定義一個Action外,還聲明了兩個Validation,在特定字段發(fā)生變化并保存時觸發(fā)校驗邏輯,字段名稱維護在大括號內(nèi)。
剩下的就是ABAP編程實現(xiàn)了。在Behavior Definition的ABAP實現(xiàn)類里,聲明下面這些ABAP類方法,來實現(xiàn)Behavior Definition里的定義。
首先看Action的實現(xiàn),位于ABAP方法SET_STATUS_COMPLETED里:
將輸入?yún)?shù)travel_id指定的航班預(yù)訂記錄的狀態(tài)字段置為A - Accepted.
現(xiàn)在我選中ID為22這條記錄,點擊Accept Travel按鈕:
點擊之后,狀態(tài)成功被置為A了:
再來加上對航班日期的校驗:如果航班結(jié)束日期在起始日期之前,顯然不合理,需要彈一條錯誤消息。
第87行到第91行把輸入?yún)?shù)包含的航班信息讀到內(nèi)表lt_travel_result里,然后第95行把結(jié)束日期和起始日期做比較,如果后者早于前者,進入97行開始的IF分支,彈一個錯誤信息到UI.
錯誤信息仍然和傳統(tǒng)的ABAP編程一樣,通過ABAP Message類定義:
現(xiàn)在把結(jié)束日期維護成起始日期之前,保存的時候就看到了期望的錯誤消息:
至此,我們這個SFLIGHT模型除了增刪改查之外,又增添了Action和Validation的功能。
這個系列的下一篇文章,Jerry會聊聊在SAP云平臺ABAP編程環(huán)境里對基于Restful ABAP Programming模型應(yīng)用的簡單調(diào)試,敬請期待。
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。