
The Entity Manipulation Language (EML) is a subset of ABAP for accessing RAP business objects (RAP BOs). EML statements allow the data content of a RAP BO (transactional buffer) to be read or modified and the persistent storage of modified data to be triggered.
ABAP EML can be used in all ABAP programs to consume RAP BOs. In particular, they can be used in the implementation of a RAP BO in a behavior implementation (ABAP behavior pool) itself. For the latter, there are some special EML variants.
The execution of an EML statement triggers processes in the RAP runtime framework that call the implementation of the RAP BOs. For unmanaged RAP BOs or unmanaged parts of managed RAP BOs, the implementation is part of an ABAP behavior pool. Otherwise, it is part of the RAP provider framework.
The operands of EML statements are mainly special data objects for passing data to and receiving results or messages from RAP BOs. These data objects are structures and internal tables whose types are tailor-made for this purpose and derived from the RAP BO definition, namely the involved CDS views, and behavior definitions.

The EML example shows the update of one or several instances of business objects Z00_R_Travel. This business object consists of only one entity, its root entity. The name of the root entity is also Z00_R_Travel.
The update of the BO instances takes place in EML statement MODIFY ENTITIES, where the first occurrence of Z00_R_Travel specifies the business object and the second occurrence of Z00_R_Travel identifies the name of the root entity.
The data changes are not written to the database directly. Instead, they are collected in data buffers on the application server and saved on the database later. The so called save sequence is triggered by EML statement COMMIT ENTITIES. Statement ROLLBACK ENTITIES is available to discard not yet saved changes in case of errors.
Note
Statements COMMIT ENTITIES and ROLLBACK ENTITIES are only needed outside of behavior implementations. When using EML inside a behavior implementation, the RAP runtime framework takes care of the commit and rollback.
The input for the update statement is provided in an internal table named travels after addition WITH.
Note
Internal table travels is a good example of a derived data type. The DATA declaration uses the syntax variant TYPE TABLE FOR, followed by a keyword to specify the purpose of the data object and the name of the BO entity. In our case, the keyword is UPDATE and the name of the entity is Z00_R_Travel. As a result, the travels data object is an internal table which is tailor-made for an update operation on BO entity Z00_R_Travel.
Note
The declaration of data object travel uses TYPE STRUCTURE FOR. It is not meant for use in EML statements, but rather as work area for internal table travels.
Data objects failed and failed_late are also declared with derived data types. They belong to a group of derived types called response types. Response types are always structure types for the entire business object. They are not specific for individual entities or a certain operation like create, update, or delete.








