One truth, multiple views on it: The various BOPF modeling environments
One particular thing which always causes a headache for BOPF-newbies is the multitude of tools which can be used in order to model a business object.
Therefore, I would like to give a brief overview and explain their dedicated purpose and powers. But before we head there, let me explain one elementary thing:
One (Meta-) Model (instance)
No matter with which tool you change the configuration, it will the same model which is getting manipulated. Precisely, the model of your business object is an instance of a model of business objects, the so-called “meta-model” (model of models). What is funky about it: also the meta-model is built with BOPF as a business object. The technical name of the meta-model is /BOBF/CONF_MODEL. As such it features plenty of nodes capturing the model information (such as – well – your business object’s nodes or the configuration of your validations) as well as a lot of business logic which is getting executed as you interact with the meta-model through one of the modelling environments. One of the strengths of BOPF is that the business logic is independent of the UI, so no matter your weapon of choice, the business object will (technically) look the same afterwards. You could even use the test-UI (BOBT), load business object /BOBF/CONF_MODEL and model your monster business object. But I recommend you not to do that, there are more comfortable modeling UIs. Let’s look at them from oldest to latest.
The full-blown SAP-internal workbench (BOBF, /BOBF/CONF_UI)
The so-called “Conf-UI” is THE almighty tool for modifying every aspect which the BOPF BO model covers (whether you call this “modelling” or “configuration” (of a meta-model-instance) is a matter of personal liking). However, SAP is not too confident about the usability of the transaction and obviously scared of the potential need of support if customers use all the options. E. g. it has turned out that – although technically possible – the buffer-class for each node should not be changed: The buffer-classes provided by SAP do a decent job and, what’s more important, fulfill the quite complex contract. Options like these should be hidden from customer’s eyes (or fingers, to be precise).
Therefore, the complete transaction is an SAP-internal tool and editing Business Objects or creating new ones is not possible in the Conf-UI. Unless you set a Set-Get-Parameter (Paul has already disclosed this in “ABAP to the future”, but I won’t do this here as well): Whatever you do in this mode is not supported by SAP and I urge you not to do that!
The Conf-UI allows to model a lot of unsupported features (such as multiple node categories), especially some options on the menu. Don’t use it unless you want to do some research on the full power of BOPF (no productive use).
For the supported set of features, a limited version of the Conf-UI exists:
The Business object Builder, Expert version (BOBX)
BOBX essentially is a Conf-UI in which all the unsupported features are hidden while offering the option to create custom business objects from scratch. I highly recommend using the BOBX wherever possible.
Some supported features are hidden in the standard view. Switch to the extended view in order to be able to e. g. specify a custom database access class.
If your business object does not behave the way you expect it to, you can always create an OSS-ticket and benefit from the brilliant and very helpful (no irony here!) BOPF support. And do believe me: They immediately see if you tweaked your business object with the Conf-UI. However, if there is some model-feature you’re missing, you might check the full-fledged version and explain to the BOPF-team in a ticket why you think this should be available in the BOBX as well.
The BOBX limits the the features which can be modeled to the supported features
BOPF in Eclipse (BiE)
If you’re already using ABAP in eclipse, you also might want to model your business objects within the same workbench. And you can. The only thing you need to do is to remember to install the proper plugin in your eclipse installation. It’s available in the same repository as ABAP in eclipse. BiE has a different paradigm than the previous two: It offers not only less, but more powerful modeling options which are then translated to the basic model elements. Due to usability and the integration into the modelling environment, even the first version of BiE is worth a look.
BOPF in eclipse: Lots of navigation options (blue) and a usecase-driven detail screen (in red)
BiE detail: Powerful breadcrumbs-navigation
Sample of BiE: An action configuration including the trigger actions.
You can even switch between the BOBX and the BiE, but be careful not to edit with the Conf-UI: You will not be able to switch to the released tools once you saved your object in BOBF.
The BOBF enhancement workbench or the BO builder (/BOBF/CUST_UI, BOB)
BOPF configurations can be extended – with BOPF configurations. This basically means that the enhancement is some business object which relates to the extended BO. At runtime, BOPF will merge the BO with its extensions so that it behaves like a single one. However, only a limited set of features can actually be extended.
The BO builder has much limited features (those necessary for enhancement) and displays entities from all nodes. Recommendation: Use BOBX for custom objects instead.
The BO builder allows to navigate the host object in a similar way like the Conf-UI or the BOBX. Also in BOB it is possible to create custom business objects, but the features offered are much reduced compared to the BOBX. Recently, BOBX was also enabled to model extensions, so in my opinion, there’s no need to use BOB at all.
Use BOBX if your development environment is the SAPGui, if you have move to ABAP in Eclipse, use the Eclipse-based editor. Keep your hand off the Conf-UI though it might be tempting to use it.
Thanks Oliver for this great overview! If you now start creating enhancement objects in BOBX instead of using the depricated BOB transaction, please install note
Really Really Cool 🙂
last week I spoke to Martin Fischer at sitMUC about our efforts using bopf. He told me about htis blog.
We developed our bopf objects with BOBX and AiE. This seems to work fine. But for Special Features like archiving we switched for some objects to BOBF.
For now, we aren't able to edit in BOBF saved objects with BOBX anymore. Additionally we don't see all of our bopf objects in AiE - but this is not only related to by BOBF edited objects.
What is your recommendation?
Is there a way to restore to a BOBX compatible meta-model or do we have to create all of our objects again - by deleting them first?
We found that the flag CUSTOMER_BO in table /BOBF/OBM_BO a bopf object BOBX-ready restores. Is this true - or are we off the track?
Isn't it wonderful that ABAP is a system in which you can debug the existing sources?
Afaik, the flag you mentioned is in fact the one switching the supported modeling environments for each BO. As I wrote in my blog, all operate on the same meta-model-instance, so there's no need to "restore" something. The tricky part is that there you might have created a configuration in tx BOPF which could not have been created via BOBX (e. g. a rare combination of timepoints). If you switch back to BOBX by setting the mentioned indicator, you might not be able to see all the effective configuration anymore. There is - as per my knowledge - no tool validating whether your configuration is compatible with BOBX (yet). Thus, I'd carefully validate what you did (hint: use the version comparison from the tools-menu in BOBF) and if you are confident, switch back as soon as possible. The longer you work in BOPF, the more likely it is to manipulate your BO in an incompatible manner.
Thanks Oliver for your feedback.
We will track our changes and decide whether to delete the related BOs or switch the flag of them.
Another point is the described AiE problem. I will take a look on it and may set up a ticket for that issue.
How status and action management can be done using BOPF ADT ?
There is no option to do settings for the BOPF object where I can assign the Status class .
status and action management is not offered in BOPF's eclipse at the moment. However it might be possible for you to simulate status and action management by using a status variable and the corresponding actions and property determinations to achieve the same behavior in a non-modeled fashion.
I thought I was going mad, but I just went back to the system I used when I wrote my book and transaction BOBX does not exist in that system. It must have come in with a higher release.
I have a 7.5 system now and it's lovely, and naturally good old BOBX is there. And SAP have put all the documentation into the screen of transaction BOB.
I also notice I can get into BOBF without setting a special parameter, I don't know if that implies it is not so secret any more. In any event it is crawling with new goodies that look a million dollars.
But you can't use them, that's naughty, so if you have access to a 7.5 system don't you dare look at transaction BOBF.
Just to be clear, that's transaction BOBF we are talking about. Don't look at it.
You can open any door in the castle, but not that one. You can eat fruit from any tree in the garden but not that one.
We should be safe now. No-one in the history of the universe has ever disobeyed a rule like that.
Also, when you create things like determinations in BOB, you get guided by a so called "wizard".
In BOBX you are an expert (hence the X) and so the system presumes you know what you are doing, doesn't propose class names and suchlike, and instead gives you several tabs to fill in, the same information the wizard would take you through.