What are Enhancement Implementations and How are They Used?

Enhancement Implementations are objects created in the Cloud Application Studio, that can be used to add custom logic into standard processes within SAP Business ByDesign.

While this sounds similar to the Business Object Extensions discussed in previous blog posts, Enhancement Implementations can be used to affect or alter the standard SAP Business ByDesign logic beyond what SAP has made available in the Public Solution Model. However, because of this, they can only be used in very specific and pre-defined ways.

To use Enhancement Implementations, an Enhancement Implementation logic is created within one of the Cloud Application Studio solutions. It can be one of many different objects within the solution – for example, if you want custom Business Objects to effect the logic you add with the Enhancement Implementation, you can add them both within the same solution.

All Enhancement Implementations provide specific Input data and Output data, though the type of data varies between Enhancement Implementations. The typical Input data type is a Business Transaction Document Reference which will provide us with context. For example, it will tell us that the Document Type is a Sales Order and that the Document ID is 1234. You can then use custom code to retrieve Sales Order 1234, parse data within it, and then return an Output value based on custom logic. These Output values could be a true/false value, an amount, or even something more complex. We’ll explore several examples later.

Why do We Need Enhancement Implementations?

Enhancement Implementations in SAP Business ByDesign exist to allow partners and customers to work together to add their own specific business logic to more general scenarios. In recognition that it’s practically impossible to design a system that will support every single potential scenario out of the box, SAP has provided partners with the ability to support these unique scenarios. The reason that partners should be involved in this process is that it usually requires detailed knowledge of the business data stored in SAP Business ByDesign, and how to retrieve and parse it in order to produce the results that support the customers’ required business logic.

For example, in the Tax Validity Enhancement Implementation, there are many different methods that may be used for determining whether freight is taxable or not, and they can vary from system to system – one customer may include both shipping and handling in the total Freight Price (which some states consider taxable), whereas other customers may separate these values. It could even be the case that on some Sales Orders, shipping and handling is combined and on other orders for the same client, shipping and handling are separated. The enhancement option gives us the ability to make this determination based on whatever logic is required.

Examples of Enhancement Implementation

1. Tax Validity for Freight Charges

Enhancement Implementation “DetermineTaxValidityforFreightCharges”
You can see what an Enhancement Implementation looks like in the Cloud Application Studio below – it appears as an “.enht” type object, which contains both an “.absl” script file, which stores the code used for the determination of how the enhancement implementation will function, and an “.fltr” file which can be used to restrict when this Enhancement Implementation is applied.

Within the script file, we can see this Enhancement Implementation provides us with an input data type that provides the Document Type, and Document UUID (Universally Unique Identifier). With these, we can then retrieve the Sales Order, and use it to look at the Product Recipient (Ship-To) Party’s Address.

The Output data type is an Inclusion/Exclusion code, which would have the value of either “I” for Include or “E” for Exclude – that is, “I” indicates we include Freight in the Tax calculation, and “E” indicates we should exclude Freight from the Tax calculation.

We can parse through the Sales Order data to determine whether or not to include or exclude Freight in the tax calculation. We set the result as “I” or “E” according to our custom logic, then return that result value.

We don’t need to know the code that happens next, only that it will affect the SAP standard tax calculation by not taxing the Freight Price if we return “E” and taxing it if we return “I”.
The below example shows what we would use if we wanted to only charge tax on Freight if the Ship-To state is in California.
The additional benefit to having this as an Enhancement Implementation is that we don’t interfere with any of the standard logic, such as nexus-based taxability logic. So we can still return an “I” even if the company doesn’t have nexus in the state, because all the standard logic still applies even while taking our additional logic into account.

2. Default Multiple E-mail Addresses for Document Output

Enhancement Implementation “MultipleReceiverMailAddressProcessing”

This Enhancement Implementation can be used to automatically determine which e-mail addresses should be included as a To, CC, or BCC for the e-mail output of a document, such as a Sales Order. You can see that, within the studio, it’s structured nearly identically to the Freight Tax enhancement implementation.

The example code below shows one way we could automatically send the Sales Order Confirmation e-mail to the e-mail address stored in the Contact Party of the Sales Order, as well as BCC the Employee Responsible.

As we can see, we’re using standard Business Data stored in SAP Business ByDesign as the basis for our custom logic.

We can see that the Output data type is more complex than just the “I” or “E” above. In this example, it’s actually storing multiple values of a specific data type that represents the E-Mail Recipient Type and the E-mail address.

3. Accounting Coding Block Adjustment

Enhancement Implementation “CodingblockSubstitution”
This Enhancement Implementation can be used to automatically adjust the “Accounting Coding Block” (pictured below) in SAP Business ByDesign.

In our example, we want to automatically adjust the default Account Determination Group if it is Project-related.

The code below assumes that we have a separate Project-related Account Determination Group which is the same as the related base Account Determination Group, but with a “1” as the last character.

While this example just uses standard system data, we could allow more flexibility by making a custom Business Object or Business Configuration Object that allowed users to configure the exact mapping they wanted – perhaps it could default to different Account Determination Groups based on the Coding Block Type Code (e.g. default to a different Account Determination Group for Project versus Sales Order versus Cost Center, etc.)

4. Recognized Revenue Calculation

Enhancement Implementation “SalesAccruralsPOCPlanValuesGet”
This Enhancement Implementations allows for custom logic to determine the “Planned Cost” amount used in “Cost-To-Cost Percentage of Completion”-based Revenue Recognition. This Planned

Cost is then compared to the actual Incurred Cost and can then be used in place of the system calculated Percentage Completion.

The example below shows some very basic code that could be the starting point for a customization to use the Project’s Expense entries as the basis for the Percentage Completion used in revenue recognition.

Once again, we see that we’re retrieving standard system data as the basis for our calculation – our Input Data has provided us with a reference to the related Project, and we parse through the nodes of the Project to calculate our Total Project Expense as the basis for one of our result data elements.

In a more realistic example, we could use a subset of the Project Planned Expenses (those relevant to the particular Sales Order Item) as the basis for the calculation. Even with more complex logic, we could base it entirely on data that is natively stored within SAP Business ByDesign.

5. Barcode Encoding Adjustment

Enhancement Implementation “EncodingBarcode”
This Enhancement Implementation is used to support scenarios in which you print barcodes that contain additional identifiers that your end customers need, but that you do not use in your own warehouse processes.

This Enhancement Implementation is used to support scenarios in which you print barcodes that contain additional identifiers that your end customers need, but that you do not use in your own warehouse processes.

SAP Business ByDesign barcoding supports the use of Application Identifiers, which are used within barcodes to indicate what portion of the barcode contains specific types of information, such as the Product SKU or the quantity. However, there may be additional information that your end customers request (perhaps identifiers specific to them) that you do not need. In order to make these usable for your customers, you can add this data and the associated application identifier to your output labels and forms, but if you then try and scan these, it will interfere with our own internal operations.

In order to support labels and forms that work for both you and your customer, we can use this Enhancement Implementation to filter out unnecessary data within the barcode when you scan it into your system.

As we can see, the Enhancement Implementation looks very familiar.

In this case, we’re using fairly simple code to return an adjusted barcode string value. If the data represented by Application Identifier 11 was in the middle or at the end of the barcode, more complex logic could be used to remove it and return the barcode excluding that portion.


In addition to those shown in this post, there are several dozen more Enhancement Implementations in SAP Business ByDesign covering a wide range of business topics. If you have a need or desire for SAP Business ByDesign to work in a way specific to your business, contact us and we’ll be able to determine if it’s something that can be solved through Enhancement Implementations or other customizations described in the prior customization-related blog posts.

Feel free to reach out by filling out the form below should you have questions or need additional information on SAP Business ByDesign.