Structure Customizing
Subdivision of objects should be done in multi-level master data/movement data
Functionally separate parts of an object should be outsourced and linked into separate objects so that the objects do not become too large/complex
Depending on the use case, use by copying/referencing/linking/BOMs should be implemented:
Use of master data in transaction data by copying
Element linking: if data does not need to be inherited, either specifying the rule name of the object as the element value (to be preferred) or a LINK to the object is sufficient. A LINK initializes more data and is therefore slower than linking with the element value.
If data is to be inherited, the use of primary references is preferred. Here the following applies: No reference to transaction data in master data.
Linking within master data or transaction data can also be done using LINK/BOM
Development environment/architecture
The SUPER class should be used for redefinitions, if there are several redefinitions of a class, e.g. VART and generation classes.
The FACTORY should always be used for instantiation, if possible by SINGLETON
Customer logic implementations should be done only through the official APIs if possible:
Object-related customer implementations should be performed in a VART class Z-interface that inherits from the default /SCT/QP_IF_VART interface, if possible.
Access to QPPD functionality should be done via the VART class or BUS if possible.
Furthermore, if possible, no redefinitions of object types, MODEL, controllers, etc. should be made.
Further possibilities are:
CHECK and generation classes
TOE plausibility classes
BADI
VART event handlers (ON methods
Furthermore, if possible, no redefinitions of object types, MODEL, controllers, etc. should be made
BUILDER
The builder should be implemented via the VART class, using the methods of the VART interface.
For example, resolving master data
The BUILDER builds nodes and the generation methods generate values
=> What happens if the values of the objects are changed dynamically? Backward calculation of operations: The user changes values on the operations, so the nodes would have to be deleted/rebuilt.
Generation methods
Generation methods generate values, but can also be used to plausibilize values that have dependencies on other elements of the node/object.
The plausibility check of values with dependencies should be realized by TOE if possible.
Plausibility checks
Depending on the dependencies of the elements, the check can be performed on the element by TOE/object types, by the generation classes/nodes, and by check class/BUILDER at the object level
Single values are checked by TOE
Global Generation
Fixed processing from "top to bottom" or "bottom to top" is preferred
As few dependencies as possible should be created between the nodes so that global generation does not have to run through too often to achieve a consistent state
Access of customer developments to data
Describe diagram ( to do)
Change: Z-VART class is a wrapper for BUS/CONTROLLER etc.