中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Restful ABAP Programming模型系列二:Action和Validation的實現

發布時間:2020-08-17 02:18:36 來源:ITPUB博客 閱讀:211 作者:i042416 欄目:云計算

相信通過Jerry的前一篇文章 30分鐘用Restful ABAP Programming模型開發一個支持增刪改查的Fiori應用,想必大家對Restful ABAP Programming模型已經有了一個最基本的了解吧?

簡單回憶一下,我們在前一篇文章里,在SAP云平臺ABAP編程環境里創建了一個Z表,然后基于這張自定義數據庫表創建了CDS view,基于該view創建Service Definition,把view暴露成服務,然后通過Behavior Definition實現對Z表的增刪改查。


Restful ABAP Programming模型系列二:Action和Validation的實現


第一篇文章有朋友留言,詢問通過RAP模型生成的Fiori應用如何部署到云上。這位朋友忘記了Jerry從始至終都是在SAP云平臺ABAP環境上操作的啊,所以這個生成的Fiori應用也直接在云上可用了。

雙擊Service Binding里的TravelProcessor或者右鍵菜單里選擇Open Fiori Elements App Preview, 就可以訪問Fiori應用。


Restful ABAP Programming模型系列二:Action和Validation的實現




Restful ABAP Programming模型系列二:Action和Validation的實現


稍稍有點經驗的顧問朋友們都明白,一個模型只有增刪改查的功能是不能滿足客戶實際需求的。在SAP Cloud for Customer里,開發顧問可以在Cloud Application Studio里創建beforeSave和afterModify這些腳本文件并實現業務邏輯,Jerry也曾經介紹過,它們相當于S/4HANA BOPF框架里創建的determination.

除了上述在運行時特定的時間點才能觸發(beforeSave,afterModify)的邏輯外,Action機制則提供了自由度更高的業務邏輯編寫機制。體現在UI上,Action邏輯一般通過UI按鈕觸發。

Validation比較容易理解——自定義的數據校驗邏輯。

本文按照順序介紹Action和Validation.

為了介紹在Restful ABAP Programming模型下如何開發Action,Jerry需要在第一篇文章創建的SFLIGHT表增添一個表示航班預訂狀態的字段,并開發一個Action,當其被調用時,修改這個狀態。

(1)在數據庫表里增添一個OVERALL_STATUS字段:


Restful ABAP Programming模型系列二:Action和Validation的實現


當然在對應的CDS view上也要通過@UI相關的注解把這個字段配置到UI上。通過注解lineItem和identification分別把view的這個字段顯示在搜索結果的table控件和航班信息明細頁面的字段上。通過label指定UI上顯示的標簽,通過注解的dataAction把這個狀態字段綁定到一個名為acceptTravel的Action上。


Restful ABAP Programming模型系列二:Action和Validation的實現


重新激活CDS view后,我們就能在工具欄上看到CDS view里通過label維護的標簽文本為Accept Travel了:


Restful ABAP Programming模型系列二:Action和Validation的實現


因為缺乏實現,此時點擊無效果。


Restful ABAP Programming模型系列二:Action和Validation的實現


(2) 在Behavior Definition的聲明部分,添加如下三行代碼:


Restful ABAP Programming模型系列二:Action和Validation的實現


  • action ( features: instance ) acceptTravel result [1] $self;
  • validation validateCustomer on save { field customer_id; }
  • validation validateDates on save { field begin_date, end_date; }

上面的代碼除了定義一個Action外,還聲明了兩個Validation,在特定字段發生變化并保存時觸發校驗邏輯,字段名稱維護在大括號內。

剩下的就是ABAP編程實現了。在Behavior Definition的ABAP實現類里,聲明下面這些ABAP類方法,來實現Behavior Definition里的定義。


Restful ABAP Programming模型系列二:Action和Validation的實現


首先看Action的實現,位于ABAP方法SET_STATUS_COMPLETED里:


Restful ABAP Programming模型系列二:Action和Validation的實現


將輸入參數travel_id指定的航班預訂記錄的狀態字段置為A - Accepted.

現在我選中ID為22這條記錄,點擊Accept Travel按鈕:


Restful ABAP Programming模型系列二:Action和Validation的實現


點擊之后,狀態成功被置為A了:


Restful ABAP Programming模型系列二:Action和Validation的實現


再來加上對航班日期的校驗:如果航班結束日期在起始日期之前,顯然不合理,需要彈一條錯誤消息。

第87行到第91行把輸入參數包含的航班信息讀到內表lt_travel_result里,然后第95行把結束日期和起始日期做比較,如果后者早于前者,進入97行開始的IF分支,彈一個錯誤信息到UI.


Restful ABAP Programming模型系列二:Action和Validation的實現


錯誤信息仍然和傳統的ABAP編程一樣,通過ABAP Message類定義:



Restful ABAP Programming模型系列二:Action和Validation的實現


現在把結束日期維護成起始日期之前,保存的時候就看到了期望的錯誤消息:


Restful ABAP Programming模型系列二:Action和Validation的實現


至此,我們這個SFLIGHT模型除了增刪改查之外,又增添了Action和Validation的功能。

這個系列的下一篇文章,Jerry會聊聊在SAP云平臺ABAP編程環境里對基于Restful ABAP Programming模型應用的簡單調試,敬請期待。

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":



Restful ABAP Programming模型系列二:Action和Validation的實現

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

中阳县| 广平县| 石泉县| 邻水| 东城区| 新沂市| 张家界市| 广平县| 乌兰浩特市| 城固县| 井陉县| 砀山县| 灌云县| 思南县| 安顺市| 东平县| 休宁县| 三江| 江安县| 阿拉善盟| 汝南县| 神农架林区| 偃师市| 新野县| 客服| 岳普湖县| 南丰县| 德江县| 贵定县| 象山县| 日土县| 承德市| 随州市| 剑川县| 伊通| 绥芬河市| 青河县| 内乡县| 阜南县| 海林市| 汝南县|