基本の構文 APPEND 作業領域 TO 内部テーブル. ※作業領域と内部テーブルのデータ型は一致している必要があります。
使用例
TYPES: BEGIN OF ty_employee,
id TYPE i,
name TYPE string,
age TYPE i,
END OF ty_employee.
DATA: lt_employees TYPE STANDARD TABLE OF ty_employee,
ls_employee TYPE ty_employee.
ls_employee-id = 1.
ls_employee-name = 'Alice'.
ls_employee-age = 30.
APPEND ls_employee TO lt_employees.
ls_employee-id = 2.
ls_employee-name = 'Bob'.
ls_employee-age = 25.
APPEND ls_employee TO lt_employees.
LOOP AT lt_employees INTO ls_employee.
WRITE: / 'ID:', ls_employee-id, 'NAME:', ls_employee-name, 'AGE:', ls_employee-age.
ENDLOOP.
基本の構文 COLLECT 作業領域 TO 内部テーブル. ※作業領域と内部テーブルのデータ型は一致している必要があります。
使用例
TYPES: BEGIN OF ty_sales,
id TYPE i,
product TYPE string,
amount TYPE i,
END OF ty_sales.
DATA: lt_sales TYPE SORTED TABLE OF ty_sales WITH UNIQUE KEY id product,
ls_sales TYPE ty_sales.
ls_sales-id = 1.
ls_sales-product = 'ProductA'.
ls_sales-amount = 100.
COLLECT ls_sales INTO lt_sales.
ls_sales-id = 1.
ls_sales-product = 'ProductA'.
ls_sales-amount = 150.
COLLECT ls_sales INTO lt_sales.
ls_sales-id = 2.
ls_sales-product = 'ProductB'.
ls_sales-amount = 200.
COLLECT ls_sales INTO lt_sales.
" 内部テーブルの内容を出力する
LOOP AT lt_sales INTO ls_sales.
WRITE: / 'ID:', ls_sales-id, 'PRODUCT:', ls_sales-product, 'AMOUNT:', ls_sales-amount.
ENDLOOP.
TYPES: BEGIN OF ty_customer,
customer_id TYPE string,
customer_name TYPE string,
customer_address TYPE string,
END OF ty_customer.
DATA: lt_customers TYPE TABLE OF ty_customer,
ls_customer TYPE ty_customer.
" データを内部テーブルに挿入する例
APPEND VALUE #( customer_id = '12345' customer_name = 'John Doe' customer_address = '123 Main St' ) TO lt_customers.
APPEND VALUE #( customer_id = '67890' customer_name = 'Jane Doe' customer_address = '456 Elm St' ) TO lt_customers.
" WITH KEYオプションを使って検索
READ TABLE lt_customers INTO ls_customer WITH KEY customer_id = '12345'.
IF sy-subrc = 0.
WRITE: / 'データが見つかりました。'.
ELSE.
WRITE: / 'データが見つかりませんでした。'.
ENDIF.
基本の構文 ・単一行の変更または挿入する場合 MODIFY TABLE 内部テーブル FROM 作業領域 [TRANSPORTING 項目名]. ・条件を使用して複数の行を変更する場合 MODIFY 内部テーブル FROM 作業領域 TRANSPORTING 項目名 WHERE 条件. ・変更する行を指定して行を変更する場合 MODIFY 内部テーブル FROM 作業領域 INDEX インデックス [TRANSPORTING 項目名]. ※作業領域と内部テーブルのデータ型は一致している必要があります。 ※TRANSPORTINGを指定することで更新対象の項目を指定することができます。
使用例
TYPES: BEGIN OF ty_employee,
id TYPE i,
name TYPE string,
age TYPE i,
END OF ty_employee.
DATA: lt_employees TYPE SORTED TABLE OF ty_employee WITH UNIQUE KEY id,
ls_employee TYPE ty_employee.
ls_employee-id = 1.
ls_employee-name = 'Alice'.
ls_employee-age = 30.
APPEND ls_employee TO lt_employees.
ls_employee-id = 2.
ls_employee-name = 'Bob'.
ls_employee-age = 25.
APPEND ls_employee TO lt_employees.
READ TABLE lt_employees INTO ls_employee WITH KEY id = 2.
IF sy-subrc = 0.
ls_employee-name = 'Robert'.
MODIFY TABLE lt_employees FROM ls_employee.
ENDIF.
LOOP AT lt_employees INTO ls_employee.
WRITE: / 'ID:', ls_employee-id, 'NAME:', ls_employee-name, 'AGE:', ls_employee-age.
ENDLOOP.
基本の構文 SORT 内部テーブル BY 項目 [ASCENDING|DESCENDING]. ※ASCENDING(昇順)またはDESCENDING(降順)を選択します。指定しない場合はデフォルトでASCENDINGで並び替えされます。
使用例
TYPES: BEGIN OF ty_employee,
id TYPE i,
name TYPE string,
age TYPE i,
END OF ty_employee.
DATA: lt_employees TYPE STANDARD TABLE OF ty_employee,
ls_employee TYPE ty_employee.
ls_employee-id = 1.
ls_employee-name = 'Charlie'.
ls_employee-age = 30.
APPEND ls_employee TO lt_employees.
ls_employee-id = 2.
ls_employee-name = 'Alice'.
ls_employee-age = 25.
APPEND ls_employee TO lt_employees.
ls_employee-id = 3.
ls_employee-name = 'Bob'.
ls_employee-age = 20.
APPEND ls_employee TO lt_employees.
SORT lt_employees BY name ASCENDING.
LOOP AT lt_employees INTO ls_employee.
WRITE: / 'ID:', ls_employee-id, 'NAME:', ls_employee-name, 'AGE:', ls_employee-age.
ENDLOOP.
基本の構文 ・条件を使用して複数の行を削除する場合 DELETE 内部テーブル WHERE 条件. ・削除する行を指定して行を削除する場合 DELETE 内部テーブル INDEX インデックス. ・テーブルキーを使用して行を削除する場合 DELETE TABLE 内部テーブル FROM 作業領域. ※作業領域と内部テーブルのデータ型は一致している必要があります。
使用例
TYPES: BEGIN OF ty_employee,
id TYPE i,
name TYPE string,
age TYPE i,
END OF ty_employee.
DATA: lt_employees TYPE STANDARD TABLE OF ty_employee,
ls_employee TYPE ty_employee.
" データの追加
ls_employee-id = 1.
ls_employee-name = 'Alice'.
ls_employee-age = 30.
APPEND ls_employee TO lt_employees.
ls_employee-id = 2.
ls_employee-name = 'Bob'.
ls_employee-age = 25.
APPEND ls_employee TO lt_employees.
" 条件を指定して削除する
DELETE lt_employees WHERE name = 'Alice'.
" 残りの行の内容を出力する
LOOP AT lt_employees INTO ls_employee.
WRITE: / 'ID:', ls_employee-id, 'NAME:', ls_employee-name, 'AGE:', ls_employee-age.
ENDLOOP.