ABAP Keyword Documentation → ABAP − Reference → Declarations → Declaration Statements → Data Types and Data Objects → Types and Objects - Overview → Data Objects
Memory Management of Deep Objects
All data types whose data object content represents the actual work data are referred to in ABAP as "flat". The elementary data types of a fixed length are flat, as are structures with solely flat components. The memory requirements of flat data objects are defined statically by the data type. Flat data objects are always static data objects.
On the other hand, data types where the contents of the data objects are references (which, in turn, reference work data in another memory area) are referred to as "deep". Deep refers to types of data reference variables and object reference variables as well as to types of strings, internal tables, and boxed components. Strings and internal tables are dynamic data objects whose memory requirements can change at program runtime and are managed internally using references. Reference variables are static data objects since their actual size is defined, whereas the size of the explicitly referenced objects is dynamic. Boxed components are between these two extremes since their memory requirements are not defined when the program is started in the internal session, but they can still be handled like static data objects with a fixed length. Structures are referred to as deep, regardless of their nesting attributes, if they contain at least one deep component.
When using deep data objects, working memory is requested at program runtime. In the case of reference variables, this is the memory for management information and the objects created (instances of classes and anonymous data objects). In the case of dynamic data objects (strings, internal tables) and boxed components, this is the memory for administration information and for the data objects themselves. Objects referenced by reference variables can themselves, in turn, be dynamic (that is, they are strings or internal tables or contain strings or internal tables).
The requested memory must be available in the session memory of the current internal session, since otherwise runtime errors occur.
Other versions: 7.31 | 7.40 | 7.54
The available session memory is defined using the profile parameters described under Session Memory. It is also possible to define a percentage of the available memory as a limit, over which a runtime warning occurs.
Memory Requirement for Deep Data Objects
Maximum Size of Dynamic Data Objects
Sharing Between Dynamic Data Objects
Complex Data Objects with Deep Components