In NetWeaver 7.0 Enhancement Package 2 (EHP2) BRFplus comes with a bunch of improvements. In this blog I want to show and explain some of them. The screenshots are taken from our development system. Most likely there will be further changes until shipment so that the final screens will look different.
- Deep Types Expression Type Formula
Expression Type Static Method
Expression Type Table Operations
Expression Type Loop
Web Service Generation
Workbench and Catalog
The screenshot shows the BRFplus workbench. On the left side you can see the four navigation options: Repository, Recently Used, Favorites and Catalog. Catalog is selected. In the navigation pane below you can see a catalog for a customer scoring example. A catalog allows creation of any structure to organize the artifacts of the use case, such as Functions, Expressions, Rulesets or Context Data Objects. With NW 7.0 EHP2 Catalogs are integrated into the workbench.
On the right side, ruleset “Ruleset Score” is displayed. It contains several rules and additional variables. It will be evaluated when function “Propensity to Pay” is executed. Rule 4 is currently in change mode. You can see that the rules have a description and that their validity can be limited to a time period. Note that the nested objects (such as the context data object “Delta Score” in the action part of rule 4) are not shown with their technical names but with their more descriptive text. This display behavior is configurable as of NW 7.0 EHP2.
A rule in NW 7.0 EHP2 can change the context by assigning a value or taking a value from another context data object or an expression that returns a calculated value. Additionally rules can trigger actions.
!http://carstenziegler.com/BRFplus/TechEd/Workbench_Catalog_small.png|height=400|alt=BRFplus Workbench and Catalog|width=640|src=http://carstenziegler.com/BRFplus/TechEd/Workbench_Catalog_small.png|border=0!
The screenshot shows the new configuration popup. In the configuration you can customize the look and feel of the BRFplus workbench as well as features that are offered to the end user. Note that you can also set the configuration when calling the workbench from your ABAP code. By doing so you can limit the options of a user very easily.
The screenshot shows function “Versioning Test” that has two versions. The versions are listed with their activation timestamp. Also, there is a small protocol that summarizes the changes. However, you can also visually compare versions (see next screenshot), display a specific version, compare an object with another one, delete inactive versions or create a new version based on an existing one.
!http://carstenziegler.com/BRFplus/TechEd/Version_Compare_1_small.png|height=331|alt=BRFplus Version Comparison|width=436|src=http://carstenziegler.com/BRFplus/TechEd/Version_Compare_1_small.png|border=0!
The screenshot shows two versions of Function “Versioning Test”. As you can see, the signature was changed between the two versions. The display of historic versions also enables navigation to nested objects such as the data objects used in the signature.
*!http://carstenziegler.com/BRFplus/TechEd/Version_Compare_small.png|height=378|alt=BRFplus Version Comparison|width=632|src=http://carstenziegler.com/BRFplus/TechEd/Version_Compare_small.png|border=0! </p><p>Deep Types </p><p>The screenshot contains many new features in NW 7.0 EHP2. On the left side you can see the repository navigation. It is possible to expand an object to see the referenced objects or usages of the object. The repository is well organized with grouping for the artifacts (Catalog Data Objects, Expressions) including sub types such as the Expression Types of the expressions.</p><p>On the right side you can see a Data Object of type Structure. This structure shows how BRFplus allows definition of “deep”, i.e. complex types with a hierarchical structure. The structure has components like tables, structures and element. </p><p> </p><p>!http://carstenziegler.com/BRFplus/TechEd/Repository_Deep_Structure_small.png|height=385|alt=BRFplus Deep Type|width=624|src=http://carstenziegler.com/BRFplus/TechEd/Repository_Deep_Structure_small.png|border=0!</p><p>Expression Type Formula</p><p>There are several changes in the Formula Expression Type. On the left side you can see the context data objects including a structure that is expanded. Now it is easily possible to directly use components of a structure in expressions. Above the list of context data objects you can see the help provided for formula functions. Now you can immediatelly see the formula function syntax and a documentation link is provided as well. The list of formula functions can now be filtered by different categories, and there is also a free text filter. It is possible to define new categories for custom functions. </p><p>*!http://carstenziegler.com/BRFplus/TechEd/Formula_small.png|height=309|alt=BRFplus Formula|width=557|src=http://carstenziegler.com/BRFplus/TechEd/Formula_small.png|border=0!*</p><p>Expression Type Static Method</p><p>The screenshot shows an improved Expression Type “Static Method”. Most likely the name will be changed because of the new capabilities. Now it is possible to call a function module or a static method without the need to use an encapsulating class implementing a special interface. It is possible now to bind the function module/method signature against nested expressions or context data objects.</p><p>*!http://carstenziegler.com/BRFplus/TechEd/ACTN_FM_ROLLBACK_small.png|height=207|alt=BRFplus ABAP Call|width=431|src=http://carstenziegler.com/BRFplus/TechEd/ACTN_FM_ROLLBACK_small.png|border=0!*</p><p>Expression Type Table Operations</p><p>The new Expression Type “Table Operations” supports the following table-oriented functions:</p><ul><li>Has at least <number> entries in <table> with <condition></li><li>Has exactly <number> entries in <table> with <condition></li><li>Has not more than <number> entries in <table> with <condition></li><li>Number of lines in <table> with <condition></li><li>Minimum over <column> with <condition></li><li>Maximum over <column> with <condition></li><li>Total over <column> with <condition></li><li>Average over <column> with <condition></li><li>First line in <table> with <condition></li><li>Last line in <table> with <condition></li><li>All lines in <table> with <condition></li><li>Sort <table> by <column> <column> <column> …</li><li>Delete first line in <table> with <condition></li><li>Delete last line in <table> with <condition></li><li>Delete all lines in <table> with <condition></li></ul><p>!http://carstenziegler.com/BRFplus/TechEd/Table_Op_small.png|height=213|alt=BRFplus Table Operations|width=433|src=http://carstenziegler.com/BRFplus/TechEd/Table_Op_small.png|border=0!</p><p>Expression Type Loop</p><p>If the Expression Type “Table Operation” does not solve your problem, you also may consider using the new Expression Type “Loop”.</p><p>It features the following modes:</p><ul><li>Loop mode “Repeat <number> times”</li><li>Loop mode “Repeat until <condition>”</li><li>Loop mode “While <condition> repeat”</li><li>Loop mode “For each line in <table> with <condition>”</li></ul><p>Inside of the loop rules can be used to perform any kind of operation including changing context values, calling expressions or triggering actions. </p><p>!http://carstenziegler.com/BRFplus/TechEd/Loop_small.png|height=246|alt=BRFplus Loop|width=434|src=http://carstenziegler.com/BRFplus/TechEd/Loop_small.png|border=0!</p><p>Web Service Generation*
Last but not least, let’s have a look at a screenshot for the web service generation. Functions define the signature to the rules and rulesets. Once defined, it is very easy to generate a web service. The only inputs needed are shown in the screenshot.
Of course this is just a small set of screenshots. There are many more changes and we are still not done with everything you will get with NW 7.0 EHP2. Now since we are int he final stage of development we focus mostly on usability improvements. I hope this creates some excitement for using BRFplus. 🙂