Internal tables are temporary tables stored in RAM that consist of rows with an identical structure. They have a body that holds the rows of data and an optional header line. Data can be added to internal tables using APPEND and read using LOOP AT. The OCCURS clause determines how much memory is initially allocated, but more is allocated if needed.