[SAP] [入門] テーブルデータ参照トランザクションについてのまとめ

こんにちは。
タイトルのとおり、テーブル（DB）データ参照トランザクションのまとめです。テーブルデータ参照トランザクションは新しいトランザクションが作成され、新機能も増えています。SAPの教育や研修担当の方には知識のアップデートにつながるかと思います。皆様の参考になりましたら幸いです。

## 内容

- 対象コード一覧
- SE16Hのサマリ機能
- SE16Sの機能紹介
- まとめ

## 対象コード一覧

上から古い順にまとめました。
|トランザクション<BR>コード|名称|勝手な感想|
|:-:|:-:|:-:|
|SE11|ABAPディクショナリ|テーブルや項目の設定変更や<BR>確認で使用する|
|SE16|データブラウザ|今あえて使う必要なし|
|SE16N|一般テーブル照会|ECC環境用|
|SE16H|一般テーブル照会|S/4HANA環境用|
|SE16S|一般テーブルおよび値検索|複数テーブル参照可能<BR>項目を考慮せず参照|

それぞれの特徴を以下に記載します。

* **SE11 ABAPディクショナリ**
  データの照会には画面遷移が2回発生すること、今はより便利なトランザクションが複数あることなどから、 **テーブル設定の登録・変更・確認などの用途のみに使用し、データ照会には利用しない** ことをお勧めします。

* **SE16 データブラウザ**
  SE11からデータ参照のみの機能を抜き出したようなトランザクションです。今あえてこれを使う必要はないかと思います。

* **SE16N 一般テーブル照会**
  前者2つはテーブルIDを入力する画面と、参照条件を入力する画面が分かれていましたが、このSE16Nから画面が統合されました。そのため前者よりも簡単にデータを紹介することができます。SE16Hが使えない環境であればこれが最適解になるかと思います。

* **SE16H 一般テーブル照会 ※SE16Nと同じ名称**
  SE16Nからの進化版でデータのサマリ・最大値・最小値などの機能がこれまでより簡単に利用できるようになりました。データをエクセルにダウンロードせずとも簡単に合計や集計を行うことができます。これは後述します。
  ※SE16NとSE16Hは、**テーブル項目にテーブルIDを入力してダブルクリックするとそのテーブルのSE11画面に遷移する** という裏技的な機能があります。SE11を開きたかったのについ癖で16Nや16Hを開いてもこれで安心です。
  
* **SE16S 一般テーブルおよび値検索**
  このトランザクションは前者4つとはちょっと傾向が異なります。
  |トランザクション<BR>コード|参照対象<BR>テーブル|参照方法|
  |:-:|:-:|:-:|
  |SE16S以外|１つのみ|項目に参照条件を入力して実行|
  |SE16S|1つまたは複数|参照対象の条件を満たすテーブルの<BR>全項目を参照対象とする|

  同一テーブルの複数項目に入っているデータがある場合、SE16S以外で抽出しようとすると検索条件同士をOR条件で紐づけることができないため、各項目ごとに参照（データ抽出）を行う必要があり、複数項目で条件を満たすデータがある場合、エクセルなどに出力後に重複データをマージする必要が発生します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326392/f51a198c-bbc5-8295-348d-647527ae84aa.png)

  SE16Sは、検索文字列と参照対象のテーブルを指定すると、項目を考慮せずに対象データを取得し、マージも行うため処理が1回で完了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326392/e859c3a9-9e8f-51b2-1e8b-f9d9e40f915b.png)


## SE16Hのサマリ機能

SE16Hのサマリ機能の照会として、お題として「テーブル：MARDの利用可能在庫数(LABST)を品目単位で集計する」という事例です。項目の条件を選択する箇所の右に、出力・合計・グループと言った項目があり、これを利用してデータの参照を行います。
※合計以外にも最大値・最小値の抽出、ソート有無、ソート順指定などが可能ですが、当記事では割愛させていただきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326392/a7e6d15b-a3ea-2e48-6f94-6d30d80612c8.png)

集計ありには品目ごとの利用可能数の合計が表示されており、グループ化されたエントリ数が表示されています。一例として品目135の集計ありと集計なしの結果を囲っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326392/37e8811a-28db-7c2c-4be4-5f9d62eed9f2.png)

## SE16Sの機能紹介

以下、SE16Sの機能照会として、「M始まりのテーブル」すべてから「TEST」を含む項目があるデータを全て抜き出します。なお、下記のサイトを参考にさせていただきました。ありがとうございます！

[SE16S:generic table and value search]（https://www.saptechnicalguru.com/se16s-generic-table-and-value-search/)

検索文字列：TEST を指定して **「アドホック検索文字列登録」を指定する** と、この画面の下部で参照対象とするテーブルを条件指定できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326392/9721fc87-d5db-277d-c860-b6b16887efee.png)

「テーブルからの検索範囲」を指定し、テーブルの検索条件：M*を指定して実行。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326392/193a363f-857e-dbbc-be12-d8c86fd4563b.png)

条件を満たすテーブルとその該当数が一覧表示されます。該当数をクリックすると各テーブルの該当エントリが確認できます。画面はMARAの内容ですが、品目コードと品目グループにおいて「TEST」を含むエントリが抽出されています。
※単語の前後にワイルドカードを指定せずとも「TEST」を含む検索が実行できていることが確認できるかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326392/9fe16a0c-6c29-5e0b-6f09-bc8e0c702add.png)

## まとめ
以下について説明しました。

・データ参照トランザクションの概要
・SE11はデータ参照ではなく、テーブルや項目の設定のために使う
・SE16Hにはサマリなどの機能がある
・SE16Sの活用タイミングや活用方法は各自で考えましょう

今回は以上となります。ありがとうございました。