Tables can be buffered in the R/3 System in three different ways:
- Full buffering:
Either the whole table is in the buffer or the table is not in the buffer at all. All the records of the table are loaded into the buffer when one record of the table is accessed.
- Generic buffering:
When a record of the table is accessed, all the records having this record in the generic key fields (left-justified part of the table key, identified by specifying a number of key fields) are loaded into the buffer. The generic areas of a table are thus fully buffered.
Only 32 bytes of the generic key are distinguished. You can specify a longer generic key, but the part of the key exceeding 32 bytes is not used to create the generic areas.
- Single-record buffering:
Only the records of a table which are really accessed are loaded into the buffer. This saves storage space in the buffer. However, the administrative cost involved for the buffer is greater than for full buffering. Furthermore, many more database accesses are required to load the data records of the table.
Tables buffered by record reside in the single-record table buffer TABLP, fully and generically buffered tables share the full/generic table buffer TABL.

A data record of table TAB (highlighted in green) is accessed. The following graphic shows the contents of the buffer depending on the buffering type selected.
