PR

【ABAP】3分で学ぶSORT命令―内部テーブルのソート

ABAP

内部テーブルを昇順・降順での並び替えを行うSORT命令について解説します。

SORT命令は単純な並び替えを行うだけのように理解してしまいがちですが、実は結構奥が深い(ソートの優先順や、昇順・降順の混合など)命令です。

このページで学べる内容

  • SORT命令の意味と使い方
  • ASCENDING / DESCENDINGオプションの使い方
  • BYオプションの使い方
  • 昇順と降順の組み合わせ

ABAPerであれば、絶対に知っておきたい内容ばかりですので是非最後までご覧ください。

スポンサーリンク

SORT命令:構文ルール

SORT(内部テーブル).


構文は非常に簡単です。オペランド部に並び替えを行いたい内部テーブルを指定するだけです。(ただし、オプションなしのこのままの形で利用することはあまりありません。理由は後述します。

指定する内部テーブルは、標準テーブルかハッシュテーブルでなければなりません。つまりソートテーブルをソートすることはできません。ソートテーブルを指定してしまう場合、プログラム実行時にショートダンプが発生する場合があります。

※ハッシュテーブルやソートテーブルという言葉にピンとこない方は以下の記事をご覧ください。

SORT命令の処理内容

SORT命令の処理は、テーブルキーによって内部テーブルのレコードをソートします。

SORT ITBA1.

と記述した結果は以下の通りです。

ご覧のように、レコードが並び変えられました。

SORT命令は、キー項目であるNUMBER項目を優先してソートします。キーは、内部テーブルの宣言時に指定しているものや、標準テーブルのキー項目を参照している項目が該当します。

また、次に解説するASCENDING / DESCENDINGオプションを利用しない場合は、デフォルトで昇順に並び替えされます。

ASCENDING / DESCENDINGオプション

ASCENDING / DESCENDINGオプションで並び替えの方法を昇順 or 降順で指定することができます。

  • ASCENDING  ⇒ 昇順(デフォルト)
  • DESCENDING ⇒ 降順

SORT ITBA1 DESCENDING.

と記述した結果がこちらです。

NUMBERをキーに降順に並び替えされます。

ASCENDINGオプションはデフォルトなので、指定する必要性はありませんが、ソースコードの可読性向上を目的として明示する場合があります。(「SORT命令はデフォルトで昇順にする」と知っている人ばかりではありません。)

BYオプション

BYオプションで内部テーブルの項目を指定すると、テーブルキーではなく指定した項目に基づいて並び替えされます。


SORT ITBA1 BY PLACE ASCENDING.

項目「PLACE」に基づいて昇順に並び替えされます。

この例では、アルファベットの昇順で並び替えされます。一般的に、SORT命令を用いる場合、必ずBYオプションで項目を指定してあげるのが普通です。どの項目をキーにソートしているのか、BYオプションを使えば一目でわかるためです。

あえて、項目を指定しない意味がないため、基本的には必ずソートする基準の項目を明示しておきましょう。

補足ですが、BYオプションでは項目を複数指定することができます。

次のコードは「PLACE」「CAPITAL」「NUMBER」の順に昇順で並び替えを行う例です。

SORT ITBA1 BY PLACE CAPITAL NUMBER ASCENDING.

昇順と降順の組み合わせ

実際にはあまり用いる場面はありませんが、昇順と降順を組み合わせることも可能です。例えば、次の例では内部テーブルを「基本的には昇順で、CAPITALだけは降順で」並び替えを行います。

SORT ITBA1 ASCENDING BY CAPITAL DESCENDING.


実行結果

繰り返しになりますが、内部テーブルの並び替えをここまで複雑に行う場面はあまり見かけません。

ABAPを勉強中の方は・・・

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPSAP
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました