CPE price determination using BRF+

Commodity Pricing Engine (CPE) is used to determine price components for products that consist of commodities such as oil, metals, agri products, etc. Prices for such commodities are published on various exchanges across the world such as NYMEX, ICE, LME, etc. To price a deal for such commodities, traders need to consider and agree with the counterparty on various pricing aspects such as the commodity curve to be used, the pricing period for which the quotation needs to be included, any surcharges/discounts that need to be applied, currency conversion (if required). CPE allows users to build complex formulas around index-based prices that are constantly changing.  The structure of CPE formulas is a combination of several rules and routines that instruct the system on how to derive pricing considering all the factors mentioned above. Major components of CPE pricing include:

  • Formula Key
    • Combination Routine
    • Qty Conversion Rule
    • Splitting Routine
    • Term Key
      • Quotation Rule
      • Term Rule
        • Period Determination Rule
        • Period Determination Rule for Currency
        • Calculation Rule
        • Surcharge Rule

Unlike previous F&A pricing where formula was maintained as condition record associated with condition type, formula in CPE is identified using a Formula Key and can either be copied from deal, manually entered on a logistics document (contracts, orders etc.) or determined using BRF+. Since Formula Key is a pre-configured combination of all the underlying components and settings that make up a CPE Formula, once the Formula Key is determined, all other pricing components mentioned above can be read from config as well.

However, due to the variability of pricing done on commodity deals, these pricing components may vary depending on document data such as MoT, ship-to, location, etc. For example, in the case of delivered sales, a trader may agree to use different quotations, period determination rules to deliver the product at different customer locations. In such case, BRF+ is used to determine pricing components within a formula.

The Works: Pricing Procedure in logistics documents is linked to CPE application and Function in config:


This application in BRF+ consists of various objects such as Functions, Expressions, Rulesets etc:

Each Function has an assigned Ruleset that is structured like an access sequence. Each rule with a Ruleset corresponds to access:

However, unlike a pricing condition access sequence, a Ruleset is generally structured from most specific to generic so that if Rule 1 condition is met, further rules are not executed. Each rule queries a Decision Table using document data (input structure) to fetch the values required in the output structure. In this case Rule 1 determines Formula Key for a Condition Type using Sales Area, Sold-to, Ship-to party, and Material:

Similarly, other pricing components can be determined specific to document data using other Functions, Rulesets, Decision Tables. For example, for a specific Sales Area, Customer, Material, if a specific Term Key, Quotation Rule needs to be determined at Term 1 rather than default Formula config, then that could be derived using relevant record in Decision Table:

Term 1 in Formula Config:

Quotation Rule assigned to Term Key “CT_GSF_EU2” in config:

However, Term Key “CT_GSF_EU2”, Quotation Rule “GS_US” are determined in logistics document due to relevant values maintained in Decision Table in BRF+:

Conclusion: BRF+ provides a flexible framework to business users to define their own pricing component determination rules without need for coding or system config. Pricing components can be determined on sales, purchase and transfer documents depending on values derived from BRF+ decision tables.

Please share your feedback or thoughts in a comment and stay tuned for future blogs related to CPE. In addition, please refer following link to find additional info about Commodity Pricing:

Commodity Pricing Engine | SAP Help Portal