SAPのテーブルの中身を見ることができるトランザクション「SE16」シリーズ。
前回の記事では、SE16、SE16N、SE16H それぞれの特徴と違い、HANAデータベースに最適化されたSE16Hによるテーブル結合の手順など、SE16の利用方法について解説した。

しかし、SE16シリーズには、さらなるバリエーションが存在するのだ。
今回の記事は、SE16シリーズ完全攻略の続編として、SE16の奥深い世界を紹介していく。
中でも、以下のSE16シリーズの特徴と注意すべき点は、SAP関係者なら知っておいて損はないだろう。
- 「SE16_テーブル名」の特徴と注意点
- 未知のテーブルを探せる SE16T の活用方法
- S/4HANAの能力が活きる SE16S, SE16SL の操作方法と使い分け
前の記事と合わせて本記事を読めば、SE16シリーズは完全コンプリート間違いなしだ!
SE16_テーブル名:特定テーブルに特化したSE16
「SE16_テーブル名」とは、たとえば「SE16_MARC」である。要するに、特定のテーブルを組み込んだSE16だ。
「SE16_MARC」はテーブル MARC(品目マスタのプラントデータ)を最初から組み込んだSE16である。トランザクションコード SE16_MARC を起動すると、テーブル MARC が指定された状態でSE16が立ち上がる。
このように、テーブルをあらかじめ組み込むことによって、テーブルを指定する手間を省けるようにしたSE16である。
MARC の他には、BSEG(会計伝票明細)やLFA1(仕入先マスタ)など、利用頻度が高そうなテーブルがラインナップされている。どのような「SE16_テーブル名」が存在するかは、テーブル STSCを「テーブル名 = SE16_*」で検索すれば見つけられる。
しかし、S/4HANAユーザの場合、「SE16_テーブル名」は使用すべきでない。
なぜなら、HANAデータベースに最適化されていないからである。
T-CD: SE93 で SE16_MARC の中を覗くと、その正体は古典的な SE16 を利用した「パラメータトランザクション」であることがわかる。

「SE16_テーブル名」は、SE16H を利用していないので、S/4HANAユーザは使わないほうが賢明だろう。
SE16T:SE16オールスターズ?
「SE16T (検索機能のセントラルアクセス)」 は、 SE16シリーズおよび関連トランザクションコードを集めた、いわば「SE16シリーズのラウンチャー(起動アプリ)」である。
未知のテーブルを検索できる
このSE16Tの中には、下図のように SE16N や SE16H も存在するので、そこから起動することが可能だ。
しかし、トランザクションの起動よりもおすすめしたい機能は、「テーブル検索」である。これは、未知のテーブルを探し出すのに役立つ。
「テーブル検索」下の「機能実行」を起動し、入力項目「テーブル」に探したいテーブル名のキーワードを入力する。すると、入力したキーワードで曖昧検索が行われ、見つかったテーブル名を列挙してくれる。
たとえば、下図のように「テーブル」に「購買」と入力すれば、購買関連のテーブルを一挙に表示してくれるのだ。

SE16シリーズを使用してデータ検索を行いたいが、テーブル名がわからない場合に役立つ機能である。

SE16Tの「テーブル検索」でテーブルを探し出し、SE16NやSE16Hでデータを抽出する・・・
という利用方法を、SAP社は想定しているのかも。
SE16SとSE16SL:テーブル総当たり検索
SE16S:汎用的な総当たり検索
「SE16S(ジェネリックテーブルおよび値検索)」は、SAP S/4HANA環境で使用可能なトランザクションコードである。
従来のSE16、SE16N、SE16Hが特定のテーブルを対象に検索を行うのに対し、SE16Sはテーブルを指定する必要がなく、複数テーブルを横断して検索できるという特徴を持つ。
「ある値が登録されているテーブルを調べたいが、テーブル名や項目名がわからない」
そんな場合にSE16Sは有効だ。たとえば、「TEST」という文字列がどのテーブルに含まれているかを調べたいとき、以下のように操作する。




- 検索文字列入力
-
「検索対象文字列」に、探したい値の文字列を入力する。完全一致でも部分一致でもよく、ワイルドカードの指定は不要だ。
- 検索タイプ
-
「アドホック検索文字列登録」を選択する。
- 検索範囲制限
-
何も設定いsないと全テーブルが対象となる。しかし、範囲が広すぎると検索エラーになる可能性があるため、対象テーブルを絞り込むのが望ましい。
下の例では、「テーブルのみからの検索範囲」に「M*」と入力し、テーブル名が「M」で始まるテーブルを対象としている。
このように設定して実行すれば、「M」で始まるすべてのテーブルとその項目に対して一斉検索が行われ、次のようにヒットしたテーブルの一覧と該当数を表示してくれる。


このように SE16S は、テーブルの総当たり検索を行う。検索対象のテーブル名や項目名が不明な場合でも、有効に機能する。
全テーブルを無差別に検索するのは、従来のRDB(リレーショナル・データベース)では非常に非効率であるが、S/4HANAはインメモリデータベースであるため、こうした負荷の高い処理も可能となっている。
SE16Sは、インメモリデータベースS/4HANAの性能を遺憾なく発揮できる検索と言えるだろう。
SE16SL:項目ベースの総当たり検索
「SE16SL(項目ベースのジェネリックテーブルおよび値検索)」も、SE16Sと同様に「テーブル総当たり検索」である。SE16Sと異なるのは、検索対象の項目と値を特定して検索を行うという点である。


- 検索の目的
-
これから行う検索のタイトルを付ける。検索そのもの影響はないので、わかりやすい名前を付ければよい。
- 検索語句の入力:項目テキスト1
-
検索を行う項目名、または項目の技術名称を入力する。
- 検索語句の入力:検索値1
-
項目に登録されている値を入力する。
上の例では、「勘定科目コード”6300100″が登録されているテーブル」を探そうとして、項目名に ”G/L勘定”、G/L勘定の値として ”63001000” を入力している。
左記の条件で検索実行すると、下図のようにBSEG(会計伝票明細)など、”G/L勘定”という項目名を持ち、且つ、その値に”63001000”が登録されているテーブルを列挙してくれる。


「G/L勘定」など、項目名はわかっているが、その項目がどのテーブルに存在するのかを知らないとき、項目名と登録されている値からテーブルを探し出せる機能である。
SE16SLもまた、インメモリデータベースS/4HANAの性能を活かした検索である。
SE16SとSE16SLの使い分け
SE16Sは、特定の値がどのテーブルに存在するかを広範囲に調査したい場合に適している。テーブルも項目も指定する必要がないため、広範囲な検索が可能だ。検索範囲が広いため、検索時間は長い。
一方のSE16SLは、特定のフィールドに特定の値が設定されているテーブルを効率的に特定したい場合に適している。項目名を指定する必要があるため汎用性はSE16Sよりも劣るが、項目を特定している分、検索時間はSE16Sよりも短い。
SE16SとSE16SLは、そのときの目的や条件によって使い分けるといいだろう。
比較表を以下に纏めておく。
項目 | SE16S | SE16SL |
---|---|---|
検索対象 | 複数テーブルにまたがる汎用的な検索 | 特定のフィールドに基づく検索 |
検索条件 | 任意の文字列 | フィールド名と値の組み合わせ |
処理速度 | やや遅い | 高速 |
主な用途 | 特定の値が、どのテーブルに存在するかを調べる | 特定のフィールドに値が設定されているテーブルを調べる |
SE16シリーズ命名の謎
様々なSE16シリーズを見ているうちに、ひとつの疑問に行き当たる。
SE16シリーズの中には、オリジナルであるSE16の主機能「データブラウザ」を継承していないにもかかわらず、トランザクションコードに「SE16」という名称が含まれているものが存在する。
つまり、オリジナルのSE16とはまったく異なる機能であるにもかかわらず、コード名は「SE16」で始まっているのだ。これは、いったいなぜなのだろう?
SE16N, SE16H は「派生系」
SE16NとSE16Hは、SE16をベースに、次のような機能拡張が施されている。
- SE16N:SE16の新バージョンで、ユーザビリティが向上(ALVグリッド表示、履歴機能など)。
- SE16H:HANAに最適化された高速検索やテーブル結合機能を持つSE16。
これらは「SE16の機能強化版」であるため、命名に「SE16」を使うのは妥当である。
SE16T, SE16S, SE16SL などの「間接系」
他方、SE16TとSE16S, SE16SLは、「テーブルの中身を見る」のではなく、「テーブル構造や関連性を探索する」ためのツールである。このように、SE16TとSE16S, SE16SLは、オリジナルのSE16とは機能も目的も違うのだ。
なのに、なぜSE16シリーズという同じT-CDなのか?
なぜ「SE16」の名を冠するのか?
理由①:ユーザの認知性(ユーザー視点)
- SE16という名前は、SAPユーザにとって「テーブル参照・テーブル分析」と結びついている。
- 類似目的のツールにSE16という接頭辞をつけることで、「これはテーブル関連のツールである」とユーザが直感的に分かるようにしている。
理由②:SAP内部の命名ポリシー(開発者視点)
SAPでは、T-CODE(トランザクションコード)の命名に一定の規則性を持たせる傾向がある。たとえば、MM系であれば「ME」、SD系なら「VA」、PP系であれば「MD」といった具合だ。
この理屈に従えば、「SE16」は「SE16系」に分類されると考えられる。
つまり、SE16は単なるトランザクションコードではなく、「テーブル操作・分析ツール群」を意味しているのだ。
SAPは、この「テーブル操作・分析ツール群」のトランザクションコードを、同一のプレフィックス「SE16」を利用する方針で整理していると考えるのが妥当だろう。
まとめ:SE16シリーズから見えるERPの真の姿
SAPにおいて、「SE16」の名を冠するトランザクションはとにかく多い。
前回の記事では、SE16、SE16N、SE16Hといった「テーブルの内容を調べる」ためのトランザクションを紹介したが、今回は「SE16_テーブル名」といった特定のテーブルに特化したものや、テーブルの内容ではなく、SE16シリーズをまとめたSE16T や、登録されている値や項目名からテーブルを探し出す SE16S, SE16SL を取り上げた。
「テーブルの内容を調べる」あるいは「テーブルを探し出す」という行為は、SAPに限らず、あらゆるITシステムにおける基本的な操作である。そのため、テーブルを調査するための多種多様なトランザクションが用意されているSE16シリーズの存在には納得がいく。
SAPシステムは一般的にブラックボックスであるが、SE16シリーズの多さからは、SAP ERP がリレーショナルデータベースを基盤としたITシステムの一つであることを垣間見ることができる。また、SE16に多くのバリエーションが用意されているのは、基幹業務システムにおいて、データへのアクセスが重要であることの証左でもある。
SE16シリーズを理解し、使いこなすことは、SAP ERPという基幹システムの根本を知るうえで、有効な一歩となるだろう。
コメント