相信經過Jerry的前一篇文章 30分鐘用Restful ABAP Programming模型開發一個支持增刪改查的Fiori應用,想必你們對Restful ABAP Programming模型已經有了一個最基本的瞭解吧?數據庫
簡單回憶一下,咱們在前一篇文章裏,在SAP雲平臺ABAP編程環境裏建立了一個Z表,而後基於這張自定義數據庫表建立了CDS view,基於該view建立Service Definition,把view暴露成服務,而後經過Behavior Definition實現對Z表的增刪改查。編程
第一篇文章有朋友留言,詢問經過RAP模型生成的Fiori應用如何部署到雲上。這位朋友忘記了Jerry從始至終都是在SAP雲平臺ABAP環境上操做的啊,因此這個生成的Fiori應用也直接在雲上可用了。框架
雙擊Service Binding裏的TravelProcessor或者右鍵菜單裏選擇Open Fiori Elements App Preview, 就能夠訪問Fiori應用。ide
稍稍有點經驗的顧問朋友們都明白,一個模型只有增刪改查的功能是不能知足客戶實際需求的。在SAP Cloud for Customer裏,開發顧問能夠在Cloud Application Studio裏建立beforeSave和afterModify這些腳本文件並實現業務邏輯,Jerry也曾經介紹過,它們至關於S/4HANA BOPF框架裏建立的determination. 工具
除了上述在運行時特定的時間點才能觸發(beforeSave,afterModify)的邏輯外,Action機制則提供了自由度更高的業務邏輯編寫機制。體如今UI上,Action邏輯通常經過UI按鈕觸發。spa
Validation比較容易理解——自定義的數據校驗邏輯。3d
本文按照順序介紹Action和Validation.調試
爲了介紹在Restful ABAP Programming模型下如何開發Action,Jerry須要在第一篇文章建立的SFLIGHT表增添一個表示航班預訂狀態的字段,並開發一個Action,當其被調用時,修改這個狀態。blog
(1)在數據庫表裏增添一個OVERALL_STATUS字段:ip
固然在對應的CDS view上也要經過@UI相關的註解把這個字段配置到UI上。經過註解lineItem和identification分別把view的這個字段顯示在搜索結果的table控件和航班信息明細頁面的字段上。經過label指定UI上顯示的標籤,經過註解的dataAction把這個狀態字段綁定到一個名爲acceptTravel的Action上。
從新激活CDS view後,咱們就能在工具欄上看到CDS view裏經過label維護的標籤文本爲Accept Travel了:
由於缺少實現,此時點擊無效果。
(2) 在Behavior Definition的聲明部分,添加以下三行代碼:
上面的代碼除了定義一個Action外,還聲明瞭兩個Validation,在特定字段發生變化並保存時觸發校驗邏輯,字段名稱維護在大括號內。
剩下的就是ABAP編程實現了。在Behavior Definition的ABAP實現類裏,聲明下面這些ABAP類方法,來實現Behavior Definition裏的定義。
首先看Action的實現,位於ABAP方法SET_STATUS_COMPLETED裏:
將輸入參數travel_id指定的航班預訂記錄的狀態字段置爲A - Accepted.
如今我選中ID爲22這條記錄,點擊Accept Travel按鈕:
點擊以後,狀態成功被置爲A了:
再來加上對航班日期的校驗:若是航班結束日期在起始日期以前,顯然不合理,須要彈一條錯誤消息。
第87行到第91行把輸入參數包含的航班信息讀到內表lt_travel_result裏,而後第95行把結束日期和起始日期作比較,若是後者早於前者,進入97行開始的IF分支,彈一個錯誤信息到UI.
錯誤信息仍然和傳統的ABAP編程同樣,經過ABAP Message類定義:
如今把結束日期維護成起始日期以前,保存的時候就看到了指望的錯誤消息:
至此,咱們這個SFLIGHT模型除了增刪改查以外,又增添了Action和Validation的功能。
這個系列的下一篇文章,Jerry會聊聊在SAP雲平臺ABAP編程環境裏對基於Restful ABAP Programming模型應用的簡單調試,敬請期待。
要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":