Professional Documents
Culture Documents
BODL
BODL
BODL
In the following, the functions and keywords are listed in alphabetical order:
● Action (Business Object)
● Annotation (Business Object)
● Association (Business Object)
● Business Object (Business Object)
● Default Values (Business Object)
● Dependent Object (Business Object)
● Deployment Unit (Business Object)
● Element (Business Object)
● Import (Business Object)
● Message (Business Object)
● Node (Business Object)
● Raises (Business Object)
● Valuation (Business Object)
List of Annotations
Syntax: [<annotation>[(<parameter>)]?]
Description: Annotations are used to add a category or property to an object specified by
the subsequent keyword. The names of the annotations are predefined and can be displayed
by the code completion. Technically, you can combine as many annotations as you want. But
not all combinations are possible and not all of them make sense. For more information, see
the list of possible combinations below.
Examples: [AlternativeKey] element EmpoyeeID : ID;
Example with annotation and parameter :
[DeploymentUnit(CustomerRelationshipManagement)]
Businessobject BonusRule{ ... };
Example with two annotations:
[DependentObject(TextCollection)][MultipleTexts] node TextCollection;
Item is the name of the composition from the current node to the Item node. SubItem is the
name of the composition from the Item node to the SubItem node.
association ToSubItem to Item.SubItem;
● Association to different business object
association ToServReq to
AP.CRM.Global:ServiceRequest.ServiceRequestOverview using ID;
association ToBP to AP.FO.BusinessPartner.Global:BusinessPartner
using UUID;
● Using keys and root node as a target node The default key of target root node is used.
Description: Default values are initial values that are used to fill fields automatically when a
new instance is created. The studio supports only static default values such as Boolean
values, status information, numeric values, and free text. There is no syntax check for
default values included in quotation marks. Translation of default values is not supported.
Examples Basic data types:
In order to define the dependent object inclusion node, you have to specify a name. You can
either use the dependent object name itself, for example, TextCollection, or add a specific
meaning to the dependent object name, for example,
ProcurementSpecificationTextCollection. If you include a dependent object in a business
object definition several times, you should provide different names for each of the
dependent object inclusion nodes.
You can, for example, use the following syntax:
You can add the same dependent object only once to a business object node. If you choose
to add the reuse UI, you need to provide a Type Code to determine the kind of
TextCollection or AttachmentFolder you intend to use. The lists of codes which are
supported are as shown below:
● TextCollection
Cross-deployment-unit association:
import AP.FO.BusinessPartner.Global;
Syntax: message <message ID> text "<message text>" [: <data type 1>[, <data type2>[,
<data type 3>[, <data type 4>]?]?]?]? ;
Description: Use the message keyword to define a message between two business objects.
The definition of a message includes the message ID, the message text, and, optionally, data
types of up to four message parameters. The parameter names are defined by the system.
The limit for a message ID is 30 characters and for a message text is 73 characters. The
message ID must be unique within the business object; use uppercase for letters. You can
reference data types from different namespaces.
Example Message without parameters:
message ReferenceInvalid text "Reference to sales order &1 invalid for &2" : IntegerValue,
ESF:AdressType;
Syntax: [RelevantForAccessControl[(<parameter>)]?]
Description: To do this, you mark associations as relevant for access control by adding the
annotation RelevantForAccessControl. The following conditions must be met:
● For each business object, you can only use one association that is relevant for access
control.
● The source node of the association must be the root node.
● The target node of the association must be root node of the target business object.
● The target business object must have an association that is relevant for access control. The
target of this association must be the dependent object Access Control List.
● The target business object must support at least one access context. You can find this
information in the Repository Explorer by viewing the documentation of the relevant
business object and by searching for the Supported Access Context section. If this section is
not listed in the documentation, access context is not supported for this business object.
● Label
● Tooltip
Example:
[Transient] element myTransientField : LANGUAGEINDEPENDENT_LONG_Name;
[Transient][Label("MyTransientField")] element myTransientField :
LANGUAGEINDEPENDENT_LONG_Name;
● If the association refers to a subnode of a business object, the valuation is executed on the
subnode instances that belong to the same business object instance as the source node
instance (association within a business object instance).
● If the association refers to the root node of a business object, the valuation is executed on
all
instances of this business object (association across all instances of a business object).
The valuation keyword is followed by one or several conditions, which are evaluated when
the
associations are resolved. You define a condition as follows:
1. You specify the target element.
This element must exist in the target node of the association.
2. You specify one of the following comparison operators:
● == (is equal to)
● < (is less than)
● > (is greater than)
● >= (is greater than or equal to)
● <= (is less than or equal to)
● ! (not equal)
If you want to compare two node elements, you can only use the == operator.
3. You define either an element defined in the source node or a code value.
You can use the AND operator (&&) to connect several conditions. Please note that in this
case the OR operator (|) and the NOT operator (!) are not supported.
In a condition, you can specify elements with non-structured data types only. However, you
can use the element path, for example, Amount.content, to use elements of structured data
types.
The valuation keyword cannot be used together with the using keyword and the
RelevantForAccessControl annotation.
Examples Valuation within a business object instance:
businessobject BusinessObject1 {
[AlternativeKey] element ID:ID;
node CountryNode [0,n]{
element ID:ID;
element CountryCode:CountryCode;
}
association toGermany [0,1]to CountryNode valuation (CountryCode =="DE");
}