【SAP ABAP】基本構文:内部テーブル操作(APPEND、INSERT、COLLECT、LOOP AT、READ TABLE、MODIFY、SORT、DELETE)

登場人物紹介

三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退しSAPの後進育成と啓蒙活動に従事中!
若者に負けぬようX(旧Twitter)も奮闘中。

この記事を読むメリット

  • APPEND命令、INSERT命令、COLLECT命令、LOOP AT命令、READ TABLE命令、MODIFY命令、SORT命令、DELETE命令を使用して、内部テーブル操作を行えるようになります。
博士

今回はABAPの内部テーブル操作について説明するぞい!

内部テーブル操作はABAPプログラミングの基本であり、重要なスキルです。
本記事では、APPEND命令、INSERT命令、COLLECT命令、LOOP AT命令、READ TABLE命令、MODIFY命令、SORT命令、DELETE命令の基本的な使い方について解説します。

SAPフリーランスバンク SAPフリーランスバンク

新着のSAPフリーランス案件

【MM】

【PP】

【製造業S/4HANAマスタ移行支援(MM/PP)】東京・大崎(ハイブリッド)/要件検討・設計・開発/即日~長期

要スキル:

① シニアコンサルタント枠(2名募集)

  • SAP(S4)マスタの移行対応経験
  • SAP(S4) MM/PPモジュールの導入経験、特に品目マスタ、BOM(部品表)、作業手順マスタの移行経験(他ERPからの移行経験者優遇)
  • 高度なPowerPoint資料作成スキル(迅速性、正確性、デザイン性)

② ジュニアコンサルタント~システムエンジニア枠(4名募集)

  • SAP(S4)マスタの移行に関する基本設計から開発までの一連の経験
  • MM、PPいずれかのモジュール経験、およびABAP開発経験
  • Fiori開発経験があれば尚可
月額単価:
~1,050,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

製造業における基幹システム刷新の一環として、既存ERPからSAP S/4HANAへ移行する新規導入プロジェクトです。 この重要なプロジェクトにおいて、MM/PP領域のマスタデータ移行に関する基本設計から実際の移行作業までを中心メンバーとして担当していただきます。

主な業務内容:

  • SAP S/4HANAへのマスタデータ(品目マスタ、BOM、作業手順マスタ等)移行対応
  • 既存ERPからのデータ抽出、変換、ロード計画の策定および実行支援
  • マスタデータ移行に関する基本設計、詳細設計
  • アドオンプログラムの開発(ABAP)、Fiori画面の開発(該当者の方)
  • 移行リハーサル、本番移行の実施および移行後のフォローアップ
  • 各種ドキュメント作成(設計書、手順書、報告書など)

【SD】

【食品メーカーS/4HANA導入支援(販売・物流)】東京・リモート併用/構想・要件定義/即日~長期

要スキル:
  • SAP導入プロジェクトにおけるリードまたはサブリードのご経験(M、SCクラス相当)
  • SAP販売・物流領域(特にSDモジュール)に関する深い業務知識およびシステム知見
  • SAP導入プロジェクトの構想策定・要件定義フェーズから参画したご経験
【尚可】
  • 食品製造業に関する業務知識またはシステム導入のご経験
月額単価:
~1,400,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

食品プロセス系メーカーにおける基幹システム刷新の一環として、SAP S/4HANAを国内拠点に導入するプロジェクトです。 プロジェクトの初期段階である構想策定・要件定義フェーズから、販売・物流領域(SD中心、関連するMM、FI-AR等)の専門家として、新業務プロセスの設計とシステム要件の具体化をチームで推進していただきます。

主な業務内容:

  • SAP S/4HANA導入における販売・物流領域の構想策定支援
  • 現行業務プロセスの分析、課題抽出、および新業務フローの設計・提案
  • SAP標準機能をベースとしたシステム要件定義、Fit&Gap分析
  • プロトタイピングの計画および推進サポート
  • 関係部署(営業、物流、経理等)との連携、調整業務
  • 各種ドキュメント作成(構想書、要件定義書、議事録等)

【CO】

【FI】

【Y社SAP新規導入(会計アドオン開発)】東京・豊洲(リモート併用)/外部設計~テスト/即日~2025/12(延長可能性有)

要スキル:
  • SAP会計系アドオンの外部設計から開発、単体テストまでの一連の実務経験(SE兼PGとして)
  • 外部設計~単体テストまでの各種作業を自立して遂行できる能力
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

Y社のSAP新規導入プロジェクトにおいて、会計系アドオン機能の実現が重要な課題となっています。 本プロジェクトでは、外部設計書の作成から開発、単体テストに至るまでの一連の工程を担当頂く想定です。

主な業務内容:

  • SAP会計系アドオン(FI/COなど)に関する外部設計書の作成
  • 詳細設計、プログラム開発(ABAP等)
  • 単体テストの計画、実行、エビデンス作成
  • 結合テスト以降のサポート、不具合修正
  • 関連ドキュメントの作成および更新

【FI】

【精密機器S/4HANA導入(ABAP開発)】大阪・常駐/アドオン開発/2025/6~2025/11

要スキル:
  • ABAPでの開発実務経験
【尚可】
  • FI(財務会計)モジュールが関連するSAPプロジェクトでの開発経験
月額単価:
~800,000円 / 月
稼働場所:
大阪府
稼働率:
100%
作業内容:

精密機器企業におけるSAP S/4HANA新規導入に伴い、業務要件に合わせたアドオン機能の開発が多数発生しています。 本プロジェクトでは、これらアドオン機能の設計・開発・テストをABAP開発を担当していただきます。

主な業務内容:

  • SAP S/4HANA環境におけるアドオン機能のABAPプログラミング
  • 設計書に基づく開発、単体テストの実施、テスト仕様書作成
  • 既存プログラムの調査、改修(必要な場合)
  • 開発関連ドキュメントの作成および更新
  • チーム内での情報共有、連携

【CO】

【FI】

【MM】

【PP】

【SD】

【その他】

【S/4HANA導入(フルモジュール)テストリード】大阪・リモート併用/テスト計画・管理/即日~2027/8

要スキル:
  • SAP S/4HANA導入プロジェクトにおけるモジュールコンサルティング経験(5年以上目安)
  • テスト方針書、計画書の作成経験(結合テスト、インターフェイステスト、統合テスト、パフォーマンステスト等)
  • 上記テストの全体管理経験(進捗管理、不具合管理、課題管理)
【尚可】
  • SAP S/4HANA導入プロジェクトにおける要件定義から本番稼働までの支援経験
月額単価:
~1,500,000円 / 月
稼働場所:
大阪府
稼働率:
100%
作業内容:

SAP S/4HANAを基盤とした新生産調達システムの導入プロジェクトであり、SD/MM/PP/FI/CO/PSのフルモジュールが対象となります。 この大規模プロジェクトにおいて、テストフェーズ全体の品質と進捗を担保するため、テストリードとして計画から管理までを中心となって推進していただきます。

主な業務内容:

  • SAP S/4HANA導入プロジェクトにおけるテスト戦略の立案、テスト方針書・計画書の作成(結合テスト、インターフェイステスト、統合テスト、パフォーマンステスト等)
  • 各テストフェーズの準備、実行支援、および進捗管理
  • 不具合管理プロセスの策定・運用、課題管理および解決推進
  • テスト結果の分析、評価、および報告書作成
  • 関係部署やベンダーとの連携、調整業務

【CO】

【FI】

【MM】

【SD】

【SAP運用保守(FI/CO/SD/MM/CRM)】東京・リモート併用/問題解決・カスタマイズ等/2025/7~長期

要スキル:
  • SAPシステムにおける運用保守業務、またはそれに準ずる業務に従事したご経験
月額単価:
~800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

稼働中のSAPシステム(FI/CO, SD/MM, CRMなど)における日々の運用保守、およびユーザーサポートが主なミッションです。 業務部門からの問い合わせ対応やシステム課題の解決、既存ベンダーとの連携を通じて、システムの継続的な安定稼働と利用部門の業務効率維持を中心メンバーとして支援していただきます。

主な業務内容:

  • FI/CO、SD/MM、CRMモジュールに関するユーザーからの問い合わせ対応、調査、回答
  • システム障害発生時の一次切り分け、原因調査、恒久対策の検討・実施
  • 運用上の課題に対する改善提案、および簡単なカスタマイズの実施
  • 既存協力ベンダーとの連携、作業依頼、進捗管理
  • 各種ドキュメント(手順書、FAQなど)の作成、更新

【CO】

【FI】

【MM】

【PP】

【SD】

【SAP運用保守リーダー(得意モジュール担当)】フルリモート/チーム立ち上げ/即日~長期

要スキル:
  • 基幹システムの運用保守経験(SAP以外のシステム経験も可、モジュール不問)
  • 運用保守チームにおけるマネジメント経験
【尚可】
  • 運用保守チームの立ち上げに携わったご経験
  • SAP S/4HANA環境での実務経験
  • SAPの販売、購買、SCM、会計領域いずれかの業務知識またはシステム知見
月額単価:
~1,200,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:

SAP S/4HANA環境において、安定稼働を支える運用保守チームをゼロから立ち上げ、軌道に乗せていく重要なミッションです。これまでの知見を結集し、最適な運用体制の構築をリードしていただきます。

主な業務内容

  • SAP S/4HANAシステムの運用保守チームの立ち上げ、およびリーダー業務(ご経験や得意分野に応じたモジュールチームをお任せします)
  • 運用設計、プロセス構築、ドキュメンテーション整備
  • チームメンバーのマネジメント、育成サポート
  • システム障害対応、問い合わせ対応、定期メンテナンス計画・実行
  • 業務部門との連携、改善提案

【CO】

【FI】

【MM】

【PP】

【SD】

【S/4HANAデータ移行支援(計画・要件定義)】フルリモート/上流工程リード/即日~長期

要スキル:
  • 基幹システム刷新プロジェクトにおけるデータ移行の実務経験(計画、要件定義、調整、実行の各フェーズでのご経験)
  • 顧客や関連部署との折衝・調整に関する豊富なご経験
  • SAP S/4HANA環境での実務経験
【尚可】
  • SAPの販売、購買、SCM、会計領域いずれかの業務知識またはシステム知見
  • S/4HANAのデータ移行関連作業(対象定義、クレンジング、移行手順設計、移行ツール開発/テスト、移行リハーサル等)のご経験
月額単価:
~1,300,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:

SAP S/4HANAへのシステム刷新におけるデータ移行フェーズにおいて、計画策定から実行管理に至るまでの一連のプロセスを中心となって推進していただきます

主な業務内容:

  • SAP S/4HANA導入に向けたデータ移行計画の策定および見直し
  • データ移行に関する要件整理、課題の洗い出しと解決策の提示
  • ビジネス部門やIT部門、外部ベンダーなど、多数のステークホルダーとの調整業務
  • データ移行の実行管理、進捗管理、品質管理、リスク管理
  • 各種ドキュメント作成(計画書、設計書、報告書など)

【MM】

【SD】

【専門商社向けS/4HANA導入(SD/MM)】東京・品川/新規構築・要件定義/即日~長期 ※ジュニア可

要スキル:
  • SAP SD/MMモジュールのコンサルティング経験(ジュニアレベルも可)
  • アドオン機能の設計経験
  • SAP S/4HANA環境での実務経験または強い学習意欲
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

専門商社におけるビジネス拡大と経営基盤強化を目的とした、複数会社統合に伴う新規基幹システム導入プロジェクトです。

SAP S/4HANAを基盤とし、SD/MM領域を中心としたコンサルティング業務を中心メンバーとして推進していただきます。

主な業務内容:

  • SAP SD/MMモジュールに関する要件定義、Fit&Gap分析
  • アドオン機能の設計、開発チームとの連携
  • システム設定、テスト計画・実行支援
  • ユーザー部門や関連部署との調整、各種ドキュメント作成
  • S/4HANA導入に伴う各種コンサルティング業務

【MM】

【SD】

【商社向けS/4HANA導入・開発支援(ロジ領域 SD/MM)】東京/IF・帳票・アドオン/即日~長期

要スキル:
  • 基本設計書から詳細設計、そして単独での開発が可能な方
  • SAP SD/MMモジュールにおけるアドオン開発(IF、帳票等)の実務経験
  • ロジスティクス領域のカスタマイズ設定や標準機能に関する深い知識、および設計・アドオン開発経験
  • IDOCを利用した帳票出力に関する開発経験
  • クラス、ALVを用いた開発経験
  • S/4HANAの新しいSQL構文に対する学習意欲と適応力
【尚可】 ODataを利用した開発経験
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
複数の企業が一つになる統合プロジェクト。その基幹システムをSAP S/4HANAで新たに構築します。 今回募集するのは、この大規模プロジェクトのロジスティクス領域(SD/MMがメイン)において、要件定義フェーズから参画いただき、主に以下の業務をご担当いただきます。 インターフェース(IF)、帳票、アドオン機能の開発
  • 基本設計書を深く理解し、詳細設計から単独での開発遂行までをお任せします。
  • SD/MMモジュールにおけるアドオン開発(IF、帳票など)が中心です。
  • IDOCを用いた帳票出力や、クラスベース、ALVでの開発経験を存分に活かせます。
  • S/4HANAの新しいSQL構文にも柔軟に対応し、スキルアップを目指せる環境です。
この記事のポイント

内部テーブル(Internal Table)について

ABAPの内部テーブルはメモリ内で動的にデータを格納できるデータ構造で、データベースから取得したデータやプログラム内で生成したデータを操作する際に非常に便利です。
DBテーブルと同様に以下のような表形式でメモリ内で格納され、更新や削除といった操作が可能です。

内部テーブルのイメージ

内部テーブルの種類

標準テーブル(Standard Table)

標準テーブルとは、ABAPで使用される最も一般的な内部テーブルです。内部テーブル宣言時に’TYPE STANDARD TABLE OF’と記述することで標準テーブルが宣言されますが、’TYPE TABLE OF’と記述した場合も標準テーブルの宣言だとみなされます。順序やキーに関係なく、抽出したデータがそのままの形で格納されます。

DATA: lt_standard TYPE STANDARD TABLE OF ty_structure.

ソートテーブル(Sorted Table)

ソートテーブルとは、格納されているデータが特定のキーによってソートされる内部テーブルです。
データを格納する際に指定したキーでソートをかけてから格納するため、標準テーブルと比べて挿入時に時間がかかりますが、ソートテーブル内のデータを条件付きで読み込む場合は処理効率が向上します。
ソートテーブルを宣言する際には、必ずキーの設定をする必要があります。

DATA: lt_sorted TYPE SORTED TABLE OF ty_structure WITH UNIQUE KEY key_field.

ハッシュテーブル(Hashed Table)

ハッシュテーブルとは、キーによってデータに高速にアクセスできる内部テーブルです。
キーが一意である必要があります。データの検索やアクセスが非常に迅速に行えるため、大規模なデータセットに対して有効です。

DATA: lt_hashed TYPE HASHED TABLE OF ty_structure WITH UNIQUE KEY key_field.
博士

まずは、内部テーブルにデータを挿入する方法を説明するぞい!
データを挿入するためにはAPPEND命令、INSERT命令、COLLECT命令があるのじゃ。

APPEND命令

APPEND命令は、内部テーブルの末尾に新しい行を追加します。

基本の構文
 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.

このプログラムでは、内部テーブルに行を追加する方法を示しています。APPEND命令を使って、作業領域のデータを内部テーブルの末尾に追加します。

実行結果

ABAP、内部テーブル操作、APPEND(実行結果)

APPEND命令の注意点

  • 重複チェック無し
    APPEND命令は重複チェックを行いません。重複を避けるには事前に検索や条件分岐を使用して確認が必要です。
  • ハッシュテーブルには利用不可
    ハッシュテーブルにデータを追加する場合は、INSERT命令を使用します。
  • 初期化の必要性
    作業領域を使いまわす場合は、適切な初期化が必要です。例えば、CLEAR命令を使って初期化を行います。(APPEND命令に限らず、以下の命令でも同様)

INSERT命令

INSERT命令、内部テーブルの指定した位置に新しい行を挿入します。

基本の構文
 INSERT 作業領域 TO TABLE 内部テーブル INDEX インデックス.
 ※作業領域と内部テーブルのデータ型は一致している必要があります。
 ※’INDEX’を指定しない場合は、APPENDと同じく最後の行にデータ追加されます。

使用例
" 最初に2行追加しておく
ls_employee-id = 2.
ls_employee-name = 'Alice'.
ls_employee-age = 30.
APPEND ls_employee TO lt_employees.

ls_employee-id = 4.
ls_employee-name = 'Charlie'.
ls_employee-age = 28.
APPEND ls_employee TO lt_employees.

" 2番目の位置に行を挿入する
ls_employee-id = 3.
ls_employee-name = 'Bob'.
ls_employee-age = 25.
INSERT ls_employee INTO lt_employees INDEX 2.

" 最初に行を追加する
ls_employee-id = 1.
ls_employee-name = 'David'.
ls_employee-age = 35.
INSERT ls_employee INTO lt_employees INDEX 1.

" 内部テーブルの内容を出力する
LOOP AT lt_employees INTO ls_employee.
  WRITE: / 'ID:', ls_employee-id, 'NAME:', ls_employee-name, 'AGE:', ls_employee-age.
ENDLOOP.

このプログラムでは、内部テーブル lt_employees に従業員データを追加および挿入し、その内容を出力しています。具体的には、最初に2行のデータを APPEND 命令で末尾に追加し、次に INSERT 命令で特定の位置(2番目と1番目)に新しい行を挿入しています。(データ定義部分の記載は省略しています)

実行結果

ABAP、内部テーブル操作、INSERT(実行結果)

INSERT命令の注意点

  • 範囲外インデックスの確認
    指定したインデックスが内部テーブルの範囲外でないことを確認してください。範囲外の場合、sy-subrcに0以外の数値が設定されます。
  • 重複行の取り扱い
    標準テーブル(STANDARD TABLE)では重複を許可しますが、ソート済みテーブル(SORTED TABLE)やハッシュテーブル(HASHED TABLE)では重複行が存在する場合、エラーが発生します。事前に重複チェックを行うことが重要です。
  • パフォーマンスの考慮
    APPEND命令のほうが処理速度が速いため、要件を満たせる場合は、可能な限りAPPEND命令を利用するようにしましょう。

COLLECT命令

COLLECT命令は、内部テーブルに行を追加する際、キーが同じ行が既に存在する場合は数値項目を集計し、存在しない場合は新しい行を追加します。

基本の構文
 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.

このプログラムでは、COLLECT 命令を使用して売上データを内部テーブル lt_sales に追加しています。COLLECT 命令により、同じキー(ここでは id と product が同じ)の行が既に存在する場合、数値フィールド amount が集計されます。

実行結果

ABAP、内部テーブル操作、COLLECT(実行結果)

COLLECT命令の注意点

  • キー設定の確認
    COLLECT命令を使用する前に、内部テーブルのキーが正しく設定されていることを確認してください。キーが正しく設定されていないと、期待した結果が得られない場合があります。
  • 数値項目の集計
    COLLECT命令はキーが同じ行が存在する場合に数値項目を集計します。非数値項目のデータは集計されず、最初に出現した値が保持されます。
博士

次は、内部テーブルのデータを操作するための方法を説明するぞい!
データを操作するためにはLOOP AT命令、READ TABLE命令、MODIFY命令、SORT命令、DELETE命令があるのじゃ。

LOOP AT命令

LOOP AT命令は、内部テーブルのデータを読み込む際に使用します。
基本構文やプログラム例は下記の「LOOP命令(LOOP~ENDLOOP)」の説明をご参照ください。

また、「フィールドシンボル」についての説明もご参照ください。
フィールドシンボルを使用することで、内部テーブルの行を直接操作します。

READ TABLE命令

READ TABLE命令は、内部テーブルからデータを検索するために使用されます。基本的な構文はシンプルで、様々なオプションを使うことで柔軟な検索が可能です。sy-subrcを使って検索結果を判断し、必要に応じてエラーハンドリングを行います。(読み取りに失敗した場合、sy-subrcは0以外の値を返します。)

基本の構文
 READ TABLE 内部テーブル [INTO 作業領域/ASSIGNING <フィールドシンボル>] [オプション].

WITH KEYオプション

特定のキーで検索します。WITH KEYオプションを使用する場合、指定したキーが内部テーブルのキー項目と一致していることを確認してください。キーが一致していないと、正しい結果が得られません。

使用例
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.

このプログラムでは、customer_idをキーにして内部テーブルlt_customersからデータを検索し、検索結果を作業領域ls_customerに格納します。データが見つかった場合、その旨を出力します。

実行結果

ABAP、内部テーブル操作、READ TABLE(実行結果)

INDEXオプション

特定のインデックス(行番号)を指定して検索します。INDEXオプションを使用する場合、指定するインデックスが内部テーブルの範囲内であることを確認してください。

使用例
" INDEXオプションを使って検索
READ TABLE lt_customers INTO ls_customer INDEX 2.

このプログラムでは、インデックス2の行を内部テーブルlt_customersから検索し、結果を作業領域ls_customerに格納します。

TRANSPORTINGオプション

特定の項目だけを読み取ります。TRANSPORTINGオプションを使用して特定の項目だけを読み取る場合、必要な項目が全て指定されていることを確認してください。指定されていない項目は読み取られないため、後続の処理でデータが不足する可能性があります。

使用例
" TRANSPORTINGオプションを使って検索
READ TABLE lt_customers INTO ls_customer INDEX 2 TRANSPORTING customer_name.

このプログラムでは、customer_name項目のみを内部テーブルlt_customersから検索し、結果を作業領域ls_customerに格納します。

BINARY SEARCHオプション

テーブルがソートされている場合にバイナリ検索を使用します。BINARY SEARCHオプションを使用する場合、内部テーブルが検索キーでソートされていることを確認してください。ソートされていない場合、正確な検索結果が得られない可能性があります。

使用例
" BINARY SEARCHオプションを使って検索
READ TABLE lt_customers INTO ls_customer WITH KEY customer_id = '12345' BINARY SEARCH.

このプログラムでは、customer_idをキーにしてバイナリ検索を使用して内部テーブルlt_customersからデータを検索し、結果を作業領域ls_customerに格納します。

TRANSPORTING NO FIELDSオプション

データを転送せず、検索結果のみを取得します。TRANSPORTING NO FIELDSオプションを使用する場合、データを転送せずに検索結果のみを取得するため、データの存在チェックのみに使用します。このオプションを使用する場合、内部テーブルの構造やデータに依存しない検索が行われます。

使用例
" TRANSPORTING NO FIELDSオプションを使って検索
READ TABLE lt_customers TRANSPORTING NO FIELDS WITH KEY customer_id = '12345'.

このプログラムでは、customer_idをキーにして内部テーブルlt_customersからデータを取得せずに検索結果のみを取得します。

READ TABLE命令の注意点

  • 検索結果の確認
    READ TABLE命令の実行後は、sy-subrcを必ず確認して検索結果を判断する必要があります。sy-subrcが0であれば検索成功、0以外であれば検索失敗となります。これにより、適切なエラーハンドリングを行うことができます。
  • 複数条件の検索
    複数の条件を使って検索を行う場合、条件の指定方法に注意が必要です。複数条件を正しく組み合わせないと、期待した結果が得られない可能性があります。

MODIFY命令

MODIFY命令は、内部テーブルの既存の行を変更します。

基本の構文
・単一行の変更または挿入する場合
 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.

このプログラムでは、MODIFY命令を使用して内部テーブル ‘lt_employees’の既存の行を変更しています。ここでは’ID’が’2’の従業員の名前を’Bob’から’Robert’に変更しています。

実行結果

ABAP、内部テーブル操作、MODIFY(実行結果)

MODIFY命令の注意点

  • 行の存在確認
    行を変更する前に、必ずその行が存在するかどうかを確認する必要があります。
  • キーの変更に注意
    MODIFY命令を使用して内部テーブルを更新しますが、キーが変更される場合、意図しない動作を引き起こす可能性があります。

SORT命令

SORT命令は、内部テーブルを特定の項目でソートします。

基本の構文
 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.

このプログラムでは、SORT命令を使用して内部テーブル ‘lt_employees’を’name’項目でソートし、ソート後の内容を出力しています。

実行結果

ABAP、内部テーブル操作、SORT(実行結果)

SORT命令の注意点

  • パフォーマンスの考慮
    ソートは処理時間がかかるため、必要な場合のみ実行するようにします。特に、大量のデータを扱う場合、ソート処理のパフォーマンスに注意が必要です。

DELETE命令

DELETE命令は、特定の条件に一致する行を内部テーブルから削除します。

基本の構文
・条件を使用して複数の行を削除する場合
 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.

このプログラムでは、DELETE命令を使用して内部テーブル ‘lt_employees’から名前が’Alice’の行を削除し、残りの行の内容を出力しています。

実行結果

ABAP、内部テーブル操作、DELETE(実行結果)

DELETE命令の注意点

  • 条件を精査
    条件に誤りがあると、意図しない行が削除される可能性があります。削除条件は慎重に設定してください。
  • 全行の削除
    内部テーブルのデータをすべて削除するには、CLEAR命令を使用することもできます。

まとめ

ABAPの内部テーブルに関する基本的な操作方法を説明しました。内部テーブルはデータ操作を効率化し、複雑なデータ処理を簡素化するための重要なツールです。さらに深く理解するためには、実際に手を動かしてコードを書いてみることが大切です。

新着のSAPフリーランス案件

【MM】

【PP】

【製造業S/4HANAマスタ移行支援(MM/PP)】東京・大崎(ハイブリッド)/要件検討・設計・開発/即日~長期

要スキル:

① シニアコンサルタント枠(2名募集)

  • SAP(S4)マスタの移行対応経験
  • SAP(S4) MM/PPモジュールの導入経験、特に品目マスタ、BOM(部品表)、作業手順マスタの移行経験(他ERPからの移行経験者優遇)
  • 高度なPowerPoint資料作成スキル(迅速性、正確性、デザイン性)

② ジュニアコンサルタント~システムエンジニア枠(4名募集)

  • SAP(S4)マスタの移行に関する基本設計から開発までの一連の経験
  • MM、PPいずれかのモジュール経験、およびABAP開発経験
  • Fiori開発経験があれば尚可
月額単価:
~1,050,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

製造業における基幹システム刷新の一環として、既存ERPからSAP S/4HANAへ移行する新規導入プロジェクトです。 この重要なプロジェクトにおいて、MM/PP領域のマスタデータ移行に関する基本設計から実際の移行作業までを中心メンバーとして担当していただきます。

主な業務内容:

  • SAP S/4HANAへのマスタデータ(品目マスタ、BOM、作業手順マスタ等)移行対応
  • 既存ERPからのデータ抽出、変換、ロード計画の策定および実行支援
  • マスタデータ移行に関する基本設計、詳細設計
  • アドオンプログラムの開発(ABAP)、Fiori画面の開発(該当者の方)
  • 移行リハーサル、本番移行の実施および移行後のフォローアップ
  • 各種ドキュメント作成(設計書、手順書、報告書など)

【SD】

【食品メーカーS/4HANA導入支援(販売・物流)】東京・リモート併用/構想・要件定義/即日~長期

要スキル:
  • SAP導入プロジェクトにおけるリードまたはサブリードのご経験(M、SCクラス相当)
  • SAP販売・物流領域(特にSDモジュール)に関する深い業務知識およびシステム知見
  • SAP導入プロジェクトの構想策定・要件定義フェーズから参画したご経験
【尚可】
  • 食品製造業に関する業務知識またはシステム導入のご経験
月額単価:
~1,400,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

食品プロセス系メーカーにおける基幹システム刷新の一環として、SAP S/4HANAを国内拠点に導入するプロジェクトです。 プロジェクトの初期段階である構想策定・要件定義フェーズから、販売・物流領域(SD中心、関連するMM、FI-AR等)の専門家として、新業務プロセスの設計とシステム要件の具体化をチームで推進していただきます。

主な業務内容:

  • SAP S/4HANA導入における販売・物流領域の構想策定支援
  • 現行業務プロセスの分析、課題抽出、および新業務フローの設計・提案
  • SAP標準機能をベースとしたシステム要件定義、Fit&Gap分析
  • プロトタイピングの計画および推進サポート
  • 関係部署(営業、物流、経理等)との連携、調整業務
  • 各種ドキュメント作成(構想書、要件定義書、議事録等)

【CO】

【FI】

【Y社SAP新規導入(会計アドオン開発)】東京・豊洲(リモート併用)/外部設計~テスト/即日~2025/12(延長可能性有)

要スキル:
  • SAP会計系アドオンの外部設計から開発、単体テストまでの一連の実務経験(SE兼PGとして)
  • 外部設計~単体テストまでの各種作業を自立して遂行できる能力
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

Y社のSAP新規導入プロジェクトにおいて、会計系アドオン機能の実現が重要な課題となっています。 本プロジェクトでは、外部設計書の作成から開発、単体テストに至るまでの一連の工程を担当頂く想定です。

主な業務内容:

  • SAP会計系アドオン(FI/COなど)に関する外部設計書の作成
  • 詳細設計、プログラム開発(ABAP等)
  • 単体テストの計画、実行、エビデンス作成
  • 結合テスト以降のサポート、不具合修正
  • 関連ドキュメントの作成および更新

【FI】

【精密機器S/4HANA導入(ABAP開発)】大阪・常駐/アドオン開発/2025/6~2025/11

要スキル:
  • ABAPでの開発実務経験
【尚可】
  • FI(財務会計)モジュールが関連するSAPプロジェクトでの開発経験
月額単価:
~800,000円 / 月
稼働場所:
大阪府
稼働率:
100%
作業内容:

精密機器企業におけるSAP S/4HANA新規導入に伴い、業務要件に合わせたアドオン機能の開発が多数発生しています。 本プロジェクトでは、これらアドオン機能の設計・開発・テストをABAP開発を担当していただきます。

主な業務内容:

  • SAP S/4HANA環境におけるアドオン機能のABAPプログラミング
  • 設計書に基づく開発、単体テストの実施、テスト仕様書作成
  • 既存プログラムの調査、改修(必要な場合)
  • 開発関連ドキュメントの作成および更新
  • チーム内での情報共有、連携

【CO】

【FI】

【MM】

【PP】

【SD】

【その他】

【S/4HANA導入(フルモジュール)テストリード】大阪・リモート併用/テスト計画・管理/即日~2027/8

要スキル:
  • SAP S/4HANA導入プロジェクトにおけるモジュールコンサルティング経験(5年以上目安)
  • テスト方針書、計画書の作成経験(結合テスト、インターフェイステスト、統合テスト、パフォーマンステスト等)
  • 上記テストの全体管理経験(進捗管理、不具合管理、課題管理)
【尚可】
  • SAP S/4HANA導入プロジェクトにおける要件定義から本番稼働までの支援経験
月額単価:
~1,500,000円 / 月
稼働場所:
大阪府
稼働率:
100%
作業内容:

SAP S/4HANAを基盤とした新生産調達システムの導入プロジェクトであり、SD/MM/PP/FI/CO/PSのフルモジュールが対象となります。 この大規模プロジェクトにおいて、テストフェーズ全体の品質と進捗を担保するため、テストリードとして計画から管理までを中心となって推進していただきます。

主な業務内容:

  • SAP S/4HANA導入プロジェクトにおけるテスト戦略の立案、テスト方針書・計画書の作成(結合テスト、インターフェイステスト、統合テスト、パフォーマンステスト等)
  • 各テストフェーズの準備、実行支援、および進捗管理
  • 不具合管理プロセスの策定・運用、課題管理および解決推進
  • テスト結果の分析、評価、および報告書作成
  • 関係部署やベンダーとの連携、調整業務

【CO】

【FI】

【MM】

【SD】

【SAP運用保守(FI/CO/SD/MM/CRM)】東京・リモート併用/問題解決・カスタマイズ等/2025/7~長期

要スキル:
  • SAPシステムにおける運用保守業務、またはそれに準ずる業務に従事したご経験
月額単価:
~800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

稼働中のSAPシステム(FI/CO, SD/MM, CRMなど)における日々の運用保守、およびユーザーサポートが主なミッションです。 業務部門からの問い合わせ対応やシステム課題の解決、既存ベンダーとの連携を通じて、システムの継続的な安定稼働と利用部門の業務効率維持を中心メンバーとして支援していただきます。

主な業務内容:

  • FI/CO、SD/MM、CRMモジュールに関するユーザーからの問い合わせ対応、調査、回答
  • システム障害発生時の一次切り分け、原因調査、恒久対策の検討・実施
  • 運用上の課題に対する改善提案、および簡単なカスタマイズの実施
  • 既存協力ベンダーとの連携、作業依頼、進捗管理
  • 各種ドキュメント(手順書、FAQなど)の作成、更新

【CO】

【FI】

【MM】

【PP】

【SD】

【SAP運用保守リーダー(得意モジュール担当)】フルリモート/チーム立ち上げ/即日~長期

要スキル:
  • 基幹システムの運用保守経験(SAP以外のシステム経験も可、モジュール不問)
  • 運用保守チームにおけるマネジメント経験
【尚可】
  • 運用保守チームの立ち上げに携わったご経験
  • SAP S/4HANA環境での実務経験
  • SAPの販売、購買、SCM、会計領域いずれかの業務知識またはシステム知見
月額単価:
~1,200,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:

SAP S/4HANA環境において、安定稼働を支える運用保守チームをゼロから立ち上げ、軌道に乗せていく重要なミッションです。これまでの知見を結集し、最適な運用体制の構築をリードしていただきます。

主な業務内容

  • SAP S/4HANAシステムの運用保守チームの立ち上げ、およびリーダー業務(ご経験や得意分野に応じたモジュールチームをお任せします)
  • 運用設計、プロセス構築、ドキュメンテーション整備
  • チームメンバーのマネジメント、育成サポート
  • システム障害対応、問い合わせ対応、定期メンテナンス計画・実行
  • 業務部門との連携、改善提案

【CO】

【FI】

【MM】

【PP】

【SD】

【S/4HANAデータ移行支援(計画・要件定義)】フルリモート/上流工程リード/即日~長期

要スキル:
  • 基幹システム刷新プロジェクトにおけるデータ移行の実務経験(計画、要件定義、調整、実行の各フェーズでのご経験)
  • 顧客や関連部署との折衝・調整に関する豊富なご経験
  • SAP S/4HANA環境での実務経験
【尚可】
  • SAPの販売、購買、SCM、会計領域いずれかの業務知識またはシステム知見
  • S/4HANAのデータ移行関連作業(対象定義、クレンジング、移行手順設計、移行ツール開発/テスト、移行リハーサル等)のご経験
月額単価:
~1,300,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:

SAP S/4HANAへのシステム刷新におけるデータ移行フェーズにおいて、計画策定から実行管理に至るまでの一連のプロセスを中心となって推進していただきます

主な業務内容:

  • SAP S/4HANA導入に向けたデータ移行計画の策定および見直し
  • データ移行に関する要件整理、課題の洗い出しと解決策の提示
  • ビジネス部門やIT部門、外部ベンダーなど、多数のステークホルダーとの調整業務
  • データ移行の実行管理、進捗管理、品質管理、リスク管理
  • 各種ドキュメント作成(計画書、設計書、報告書など)

【MM】

【SD】

【専門商社向けS/4HANA導入(SD/MM)】東京・品川/新規構築・要件定義/即日~長期 ※ジュニア可

要スキル:
  • SAP SD/MMモジュールのコンサルティング経験(ジュニアレベルも可)
  • アドオン機能の設計経験
  • SAP S/4HANA環境での実務経験または強い学習意欲
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:

専門商社におけるビジネス拡大と経営基盤強化を目的とした、複数会社統合に伴う新規基幹システム導入プロジェクトです。

SAP S/4HANAを基盤とし、SD/MM領域を中心としたコンサルティング業務を中心メンバーとして推進していただきます。

主な業務内容:

  • SAP SD/MMモジュールに関する要件定義、Fit&Gap分析
  • アドオン機能の設計、開発チームとの連携
  • システム設定、テスト計画・実行支援
  • ユーザー部門や関連部署との調整、各種ドキュメント作成
  • S/4HANA導入に伴う各種コンサルティング業務

【MM】

【SD】

【商社向けS/4HANA導入・開発支援(ロジ領域 SD/MM)】東京/IF・帳票・アドオン/即日~長期

要スキル:
  • 基本設計書から詳細設計、そして単独での開発が可能な方
  • SAP SD/MMモジュールにおけるアドオン開発(IF、帳票等)の実務経験
  • ロジスティクス領域のカスタマイズ設定や標準機能に関する深い知識、および設計・アドオン開発経験
  • IDOCを利用した帳票出力に関する開発経験
  • クラス、ALVを用いた開発経験
  • S/4HANAの新しいSQL構文に対する学習意欲と適応力
【尚可】 ODataを利用した開発経験
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
複数の企業が一つになる統合プロジェクト。その基幹システムをSAP S/4HANAで新たに構築します。 今回募集するのは、この大規模プロジェクトのロジスティクス領域(SD/MMがメイン)において、要件定義フェーズから参画いただき、主に以下の業務をご担当いただきます。 インターフェース(IF)、帳票、アドオン機能の開発
  • 基本設計書を深く理解し、詳細設計から単独での開発遂行までをお任せします。
  • SD/MMモジュールにおけるアドオン開発(IF、帳票など)が中心です。
  • IDOCを用いた帳票出力や、クラスベース、ALVでの開発経験を存分に活かせます。
  • S/4HANAの新しいSQL構文にも柔軟に対応し、スキルアップを目指せる環境です。

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

新卒でSAPエンジニアとしてABAPでの新規開発や保守業務を担当。
業務内容としてはロジ系(MM/SD)がメインで、ABAPの開発が最も得意。

この記事のポイント