SAP中的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步:
- 在BRF+中创建一个function,依据需要的业务逻辑,它接收输入、进行处理,然后给出输出结果。
- 通过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+的更多相关文章
- SAP中关于用户IP信息的获取(转载)
SAP中如何获取登录用户的IP? 或如何查看哪些IP登录到SAP中: 在Table: USR41中查看,具体字段的说明如下: MANDT --- ClientBNAME --- 登录的 ...
- SAP中的Currency Converting Factor
ABAP编程中,有个概念很重要,即Currency Converting Factor(货币转换因子).可能很多ABAP初学者都不知道这是什么东西,这里我们就简单探讨下. 1. 什么是货币转换因子 在 ...
- SAP中主数据和单据的删除
在SAP实际操作的过程中,有些主数据或者单据需要删除,但是删除的方法却不尽相同,所以笔者今天总结了下,供大家参考. 1,用T-Code去删除 例如我们要删除某个物料,我们可以用T-Code MM06 ...
- 如何从SAP中查找BADI
如何从SAP中查找BADI 如何从SAP中查找BADI http://blog.csdn.net/CompassButton/article/details/1231652 BADI作为SAP的第 ...
- .NET连接SAP系统专题:SAP中新建可远程调用的RFC(二)
何谓RFC,就是一个Function,可以被非SAP系统调用,比如VB,C#,Java等.如果我们在RFC中INCLUDE了相关的业务逻辑,那么我们就可以完全操控SAP中的业务数据了.就像在TTE里, ...
- C#如何通过NCO3.0来连接SAP并调用SAP中的RFC
,这是SAP针对.Net开发的专用组件,安装完成之后在C:\Program Files\SAP\SAP_DotNetConnector3_x86目录下面会有sapnco_utils.dll sapnc ...
- 部分2020年交期的PR回写到SAP中
描述:此问题一直存在,只是用户没有发现,最近提出,部分2020年交期的PR回写到SAP中 优化: SELECT MAX (PR.ORDERID), PR.ITEM, SUBSTR (PR.RECOMM ...
- SAP中对于获取订单的状态
在SAP中对于如何获取订单的状态,提供了至少两个函数,分别是 STATUS_READ 和 STATUS_TEXT_EDIT.下面简单介绍这两个函数 1.STATUS_READ 改函数的实现原理大 ...
- 【MM系列】SAP 在SAP中更改基本计量单位
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 在SAP中更改基本计量单位 ...
随机推荐
- Chipmunk Rigid Bodies:cpBody
Chipmunk刚体支持3种不同的类型: Dynamic(动态),Static(静态)以及Kinematic(混合态)刚体.它们拥有不同的行为和性能特征. 动态刚体是默认的刚体类型.它们可以对碰撞做出 ...
- OJ题:字符串最后一个单词的长度
题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 ...
- mac配置java环境
首先下载: 网址如下: http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html 配 ...
- 《高效能程序员的修炼》读后感 By Yong Zhang
想不到我工作中经常GOOGLE搜寻技术问题的stack overflow网站的创办人竟然是<高效能程序员的修炼>一书的作者!看了一遍全书,果然名不虚传. 本书更多的从人文角度而非技术角度去 ...
- SpriteBuilder中节点的%位置移动
在SpriteBuilder中可以将一个节点的位置设为%形式,这意味着在不同的屏幕尺寸中,该节点会定位在相对同一个位置. 比如x和y分别为 50%和50%的位置,在各种屏幕中都会定位到屏幕的中心. 但 ...
- 寻找春天 九宫格日记-2014.04.26
写九宫格日记 总会在听到某一首歌的时候泪流满面:总会在看到某个似曾相识的背影的时候惆怅莫名,总会在嗅到某种香味的时候默默发呆,总会在经过某个地方的时候频频回首.生命有限,不要把它浪费在重复别人的生活上 ...
- 一个很不错的支持Ext JS 4的上传按钮
以前经常使用的swfUpload,自从2010年开始到现在,很久没更新了.而这几年,flash版本已经换了好多个,所以决定抛弃swfupload,使用新找到的上传按钮. 新的上传按钮由harrydel ...
- 《java入门第一季》之java语法部分小案例
到这里举一个小例子把语法部分梳理一下,下一节开始进入java正式基础--面向对象的学习整理. 案例: /* 某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全, 在传递过程中需要加密 ...
- ERP-非财务人员的财务培训教(三)------公司/部门预算编制与评价
一.预算管理中的行为问题 二.编制预算中的问题 三.经营计划与预算制度 第一节 经营目标 第二节 预算编制的内容及说明 第三节 推行预算制度的组织 第 ...
- MTU 最大传输单位
MTU 最大传输单位 通过上面 MAC 封装的定义,现在我们知道标准以太网络frame所能传送的数据量最大可以到达 1500 bytes , 这个数值就被我们称为 MTU (Maximum Trans ...