相信通過Jerry的前一篇文章 ,想必大家對 ABAP 模型已經有了一個最基本的了解吧?
簡單回憶一下,我們在前一篇文章里,在SAP云平臺ABAP編程環境里創建了一個Z表,然后基于這張自定義數據庫表創建了CDS view,基于該view創建 ,把view暴露成服務abap內表指定行添加,然后通過 實現對Z表的增刪改查。
第一篇文章有朋友留言,詢問通過RAP模型生成的Fiori應用如何部署到云上。這位朋友忘記了Jerry從始至終都是在SAP云平臺ABAP環境上操作的啊,所以這個生成的Fiori應用也直接在云上可用了。
雙擊 里的或者右鍵菜單里選擇Open Fiori App , 就可以訪問Fiori應用。
稍稍有點經驗的顧問朋友們都明白,一個模型只有增刪改查的功能是不能滿足客戶實際需求的。在SAP Cloud for 里,開發顧問可以在Cloud 里創建和這些腳本文件并實現業務邏輯,Jerry也曾經介紹過,它們相當于S/4HANA BOPF框架里創建的.
除了上述在運行時特定的時間點才能觸發(,)的邏輯外abap內表指定行添加,機制則提供了自由度更高的業務邏輯編寫機制。體現在UI上,邏輯一般通過UI按鈕觸發。
比較容易理解——自定義的數據校驗邏輯。
本文按照順序介紹和.
為了介紹在 ABAP 模型下如何開發,Jerry需要在第一篇文章創建的表增添一個表示航班預訂狀態的字段,并開發一個,當其被調用時,修改這個狀態。
(1)在數據庫表里增添一個字段:
當然在對應的CDS view上也要通過@UI相關的注解把這個字段配置到UI上。通過注解和分別把view的這個字段顯示在搜索結果的table控件和航班信息明細頁面的字段上。通過label指定UI上顯示的標簽,通過注解的把這個狀態字段綁定到一個名為的上。
重新激活CDS view后,我們就能在工具欄上看到CDS view里通過label維護的標簽文本為 了:
因為缺乏實現,此時點擊無效果。
(2) 在 的聲明部分,添加如下三行代碼:
上面的代碼除了定義一個外,還聲明了兩個,在特定字段發生變化并保存時觸發校驗邏輯,字段名稱維護在大括號內。
剩下的就是ABAP編程實現了。在 的ABAP實現類里,聲明下面這些ABAP類方法,來實現 里的定義。
首先看的實現,位于ABAP方法里:
將輸入參數指定的航班預訂記錄的狀態字段置為A - .
現在我選中ID為22這條記錄,點擊 按鈕:
點擊之后,狀態成功被置為A了:
再來加上對航班日期的校驗:如果航班結束日期在起始日期之前,顯然不合理,需要彈一條錯誤消息。
第87行到第91行把輸入參數包含的航班信息讀到內表里,然后第95行把結束日期和起始日期做比較,如果后者早于前者,進入97行開始的IF分支,彈一個錯誤信息到UI.
錯誤信息仍然和傳統的ABAP編程一樣,通過ABAP 類定義:
現在把結束日期維護成起始日期之前,保存的時候就看到了期望的錯誤消息:
至此,我們這個模型除了增刪改查之外,又增添了和的功能。
這個系列的下一篇文章,Jerry會聊聊在SAP云平臺ABAP編程環境里對基于 ABAP 模型應用的簡單調試,敬請期待。