Skip to Content

Create an ABAP Table Type

Create a table type and use it to retrieve data from a database table.
You will learn
  • How to create and edit a table type for an internal table in the new, form-based Table Types editor
  • How to use this table type to retrieve data from a database table
julieplummer20Julie PlummerNovember 8, 2021
Created by
February 20, 2019


Table types can also be defined in, for example, an ABAP program or class. The differences between the two approaches include:

  • Table types in the ABAP Data Dictionary are maintained in a form-based editor, table types in ABAP in a text-based editor
  • Reuse: Table types can only be used by other Dictionary types if they are defined in the Data Dictionary
  • Modularization: Table types in the Dictionary are stand-alone objects, whereas table types in ABAP are always part of another Repository object

Throughout this tutorial, objects have the suffix XXX. Remember to always replace this with your initials or group number.

  • Step 1
    1. Open your ABAP Project or ABAP Cloud Project from the previous tutorial, then open the package in which you created the database table.

    2. Select your package and choose New > Other ABAP Repository Object > Dictionary > Table Type from the context menu.

      Image depicting step1-new-table-type
    3. Enter a name and description and choose Next.

      Image depicting step1b-name
    4. Create or assign a transport request and choose Finish.

    The table type appears in a new editor.

    Image depicting step1e-table-type-editor
  • Step 2

    Choose the category Dictionary Type For the type name, choose the database table you created in a previous tutorial, for example Z_BOOKING_XXX (replacing XXX with your group number or initials).

    Enter the exact name. The Browse function may not work in some environments.

    Image depicting step2-define-type

    In the ABAP Environment, you can only work with whitelisted objects. The majority of tables you might expect, such as SFLIGHT are not whitelisted. For a complete list of whitelisted objects, see the folder Released Objects. To sort objects by object type, not package, use a Duplicate Tree

    Image depicting step2b-released-objects

    In ABAP on-premise systems, this is not an issue.

  • Step 3
    1. You cannot define your own primary key for a standard table. First, change the access type to Sorted Table.

      Image depicting step3-change-access
    2. Change the Primary Key type to Key Components.

      Image depicting step3b-change-key-type
    3. You can now choose the key fields from a drop-down list, by choosing Auto-complete (Ctrl+Space).

      Image depicting step3c-change-key-comps
    4. Choose each key field in turn, using Auto-complete (Ctrl+Space):

      Image depicting step3d-choose-key-comps

    This is for test purposes only. The access type you choose in real life affects performance. For more information, see:

  • Step 4

    Users may want to query a database table using something other than the primary key. To enable this, create a secondary key.

    1. First, select Secondary Key and choose Create… from the context menu:

      Image depicting step4-secondary-key
    2. Enter a name and choose the component(s) (or fields):

      Image depicting step4b-secondary-key-comps

    The keys are listed.

    Image depicting step4c-keys-list
  • Step 5

    Finally, you will test your table type by using it to:

    • define an internal table
    • get database data into this table
    • output the table content to the console
    1. First create the ABAP Class, by selecting your package and choosing New > ABAP Class from the context menu:

      Image depicting step5-create-class
    2. Enter a name ZCL_GET_ACCOUNT_DATA_XXX and description for your class (replacing XXX with your group number or initials).

    3. Assign a transport request and choose Finish.

    The class appears in a new editor.

  • Step 6
    1. Add the following interface to your class:
       interfaces if_oo_adt_classrun.

    This interface provides a light-weight solution for executing an ABAP program without launching a full user interface.
    It also lets you display text or data in the Console View.

    1. Add the implementation for the main method of this interface by selecting the interface name and choosing Add implementation… from the context menu.
  • Step 7

    You will now add the following code to the main method, remembering to rename the table type and database table to your own (for example, replacing XXX with your group number or initials)..

    1. Create an internal table lt_accounts with the table type that you just created, ZTT_ACCOUNTS_XXX.
      DATA: lt_accounts type ZTT_ACCOUNTS_XXX.
    2. Select data from the database table from the previous tutorial ZTBOOKING_XXX and add it to the internal table.
      select * from ZACCOUNTS_XXX
      into table @lt_accounts.
    3. Output the internal table to the console.

      out->write( EXPORTING
      data = lt_accounts
      name = 'Accounts:' ).
    4. Then save and activate your class using Ctrl+S, Ctrl+F3.

  • Step 8

    The complete class should look like this:

    CLASS zcl_get_account_data_xxx DEFINITION
        INTERFACES if_oo_adt_classrun.
    CLASS zcl_get_account_data_xxx IMPLEMENTATION.
      METHOD if_oo_adt_classrun~main.
        DATA: lt_accounts type ZTT_ACCOUNTS_XXX.
        select * from ZACCOUNTS_XXX
        into table @lt_accounts.
        out->write( EXPORTING
        data = lt_accounts
        name = 'Accounts:' ).
  • Step 9

    Run your class in the console by choosing F9. Your output should look like this:

    Image depicting step9-console
  • Step 10

    Which access type(s) support primary keys defined by key components? Choose all that apply.

Back to top