天天看點

SAP中的BRF+

複雜系統中的業務邏輯的實作和管理通常有着不低的成本,本文介紹了BRF+這一業務規則架構,可以加速業務邏輯的實作,并統一管理,減少相關實作的備援,確定一緻性,降低變更成本。

即便努力去嘗試最小化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+應用。

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

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

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

特性

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

expressions

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

SAP中的BRF+

customizing and master data applications

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

user interface

BRF+中的模組化大多通過“點選”的使用者界面進行,通過事務代碼BRF+通路它。你可以通過簡單地右擊螢幕左側的節點來建立新的對象,并且通過上下文菜單選擇合适的條目。

api

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

web services

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

helper tools

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

SAP中的BRF+

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

SAP中的BRF+

我的BRF+教程系列:http://www.cnblogs.com/hhelibeb/tag/BRFplus/