1. 程式人生 > >SAP中的BRF+

SAP中的BRF+

scratch 工廠 editor abap 表達式 自定義應用 接下來 可能 時間

即便努力去嘗試最小化SAP系統中的自定義內容,大量自定義業務邏輯通常還是無法避免的。在過去,這意味著需要在系統的各種地方引入自定義ABAP代碼,包括user-exits,enhancement,BAdi和自定義程序等等。考慮到SAP系統的復雜性和相互依賴性,人們不得不小心翼翼地管理基於ABAP的自定義內容,以保證業務邏輯在不同的功能區域一致、且不重復。

現在,Business Rule Framework Plus(業務規則框架,以下簡稱BRFplus或BRF+)來了,它是SAP推出的新功能,可以在一個位置、通過可復用的方式管理你的所有自定義業務邏輯。

本文鏈接:http://www.cnblogs.com/hhelibeb/p/9021665.html

英文標題:BRFplus - a hidden gem within your SAP system

可用性

通常來說,BRF+功能在任何基於合適版本的SAP NeWeaver的系統都可用。要快速地檢驗它是否在你的系統上可用,只需要執行事務代碼BRFPULS或者BRF+。如果你看到了在新瀏覽器窗口打開的web應用,那麽基本上你的環境允許使用BRF+。(如果不能的話打開的話,有可能是系統本身不支持,也有可能是沒有配置webdynpro相關服務等)

值得註意的是,在2013年,SAP發布了一個名為Decision Service Management(DSM)的解決方案,它建立在BRF+的基礎上,並且添加了某些新的功能。最重要的是DSM允許跨SAP系統和實例的中央業務規則管理。然而,DSM需要額外的許可證,相反一般

BRF+通過已有的SAP許可證就可以使用。我們發現對絕大多數客戶來說,DSM的功能有點過了頭,BRF+則更適合使用。

使用場景

現在你知道了一點BRF+的歷史,那麽在你能用它來做什麽呢?這裏是一些真實世界利用BRF+滿足業務需求的例子:

  • 輸出表單中的Logo判斷
  • 服務提醒文檔的默認優先級和截止日期判斷
  • 銷售訂單的默認工廠判斷
  • SAP Transportation Management中的默認載具判斷

從技術的觀點看,BRF+最常見的用例是在user-exits和增強中的自定義業務邏輯實施中。事實上,在這些情況下,BRF+是我們實現自定義業務邏輯的首選實現手段。它在較高層面上可以被描述為2步:

  1. 在BRF+中創建一個function,依據需要的業務邏輯,它接收輸入、進行處理,然後給出輸出結果。
  2. 通過ABAP在user-exits/BAdi/enhancement/自定義程序等地方調用先前創建的BRF+應用。

很重要的一點是,在上述的(aforementioned)方式中你還是需要寫一些ABAP代碼來調用BRF+ function。(和完全使用ABAP代碼實現業務邏輯的)區別在於,通常來說,在這種情況下,ABAP代碼只負責調用BRF+,不會直接包含業務邏輯。你可能要問這樣做的好處在哪裏。它的好處是:

  • BRF+ function易於復用,通常可以大大地減少系統中重復業務邏輯實現的數量。
  • BRF+包含一個巨大的expression庫,可以加速映射業務規則的開發過程,特別是這些業務規則比較復雜的情況下。使用ABAP編碼來從零開始(from scratch)實現某些東西,也許可以花上數天甚至數周的時間,但是在BRF+裏只要使用expression就可以快速地建模實現。
  • 你的所有自定義業務邏輯可以在一個地方實現——BRF+事務。你不需要從龐大的自開發程序、增強中搜尋代碼以調整現有的業務邏輯。
  • 對現有的業務邏輯的簡單調整可以經由非編碼的方式實現,不需要開發人員的參與。

最後一點值得詳細闡述(elaborating on)。SAP通常建議通過BRF+工具讓業務用戶代替ABAP開發者來作為他們自己的邏輯的維護者。坦白說,這種建議有點誇張(exaggerattion)。實際上,BRF+元素(function, expression等)的創建依然是一件相當技術性的活動。大部分沒有技術背景的SAP專家可能會發現,想要掌握BRF+的全部內容是件具有挑戰性的事情。了解一些基本的編程概念,如變量和循環,會對BRF+的使用起很大幫助,即便你只是通過鼠標來創建這些對象,而不是(as opposed)寫ABAP代碼。但是撇開陡峭的學習曲線不說,在具備足夠多的學習時間和努力的情況下,SAP功能分析師當然是可以精通BRF+的,由此便可以在不依賴開發者的情況下構建復雜的自定義業務邏輯。然而,業務用戶完全是另一回事。業務用戶對BRF+進行某些實驗性的調整是可能的,例如改變已有的decision table中的值,但是BRF+內的主要變更還是需要由IT團隊進行。

特性

BRF+中包含很多了不起的特性,使得它是一個傑出的業務規則框架。

expressions

在許多方面上expressions是BRF+中第一個令人心動的東西。它們是預包裝的邏輯對象,可以在BRF+環境中大大加速業務規則的建模。雖然BRF+中支持多種表達式類型,但最常用的一種是Decision Table。如果你熟悉SAP系統中的條件技術,decision table會給你相似的感覺,並且它會提供擴展性更強的功能。除了(In addition to)可以從表的頂部檢索到底部直到找到匹配的記錄為止外,你也可以維護輸入值為多值的range、sets、通過空白來表示任意值、以及使用其它一些邏輯操作符等。

技術分享圖片

customizing and master data applications

自定義和主數據應用(customizing and master data applications)是BRF+中的一個靈巧的特性。自定義應用需要使用SAP transports來在不同SAP系統之間移動修改,相反主數據應用允許直接在每個SAP系統和client直接進行修改。在你將主數據值,比如客戶、供應商、物料等是業務邏輯的一部分時特別有用。記住因為在多數情況下BRF+通過ABAP調用,function本身需要存在在一個自定義應用中。但是這些自定義級別的function接下來可以利用存在於主數據級別應用下的expressions(例如decision tables)。一言蔽之(In a nutshell),你可以在一個業務規則中混合使用自定義和主數據BRF+對象。

user interface

BRF+中的建模大多通過“點擊”的用戶界面進行,通過事務代碼BRF+訪問它。你可以通過簡單地右擊屏幕左側的節點來創建新的對象,並且通過上下文菜單選擇合適的條目。

api

你也可以通過API和BRF+交互。這意味著你不僅可以通過事務BRF+來創建和更新BRF+對象,你也可以通過標準交付ABAP類和方法(standard delivered ABAP classes and methods)實現同樣的事情。例如,在某個場景中我們需要存儲美國的柴油平均價到BRF+的decision table中。我們可以創建一個自定義ABAP程序通過公網服務來查找上周的柴油價格,並且最後經由BRF+ API更新decision表。

web services

BRF+ functions可以很容易地暴露為web services。這意味著你可以同時在SAP和非SAP系統中消費BRF+業務邏輯。

HELPER TOOLS

BRF+伴隨著大量的工具,可以幫助你開發、導入/導出、檢查和BRF+對象和排查故障。其中某些工具可以從BRF+事務中的菜單訪問,不過最簡單的查找他們的方式是在SE38中運行程序FDT_HELPERS。較早地了解這些工具,你就可以在將來省下很多時間。例如,下圖裏選中的工具允許你快速地識別和解決大部分有關系統間傳輸BRF+對象的問題。

技術分享圖片

總而言之,大部分SAP客戶都可以在不需要額外許可證的條件下使用BRF+。我們鼓勵你們仔細了解BRF+、並且開始為你們的自定義業務邏輯需求使用它。

SAP中的BRF+