目次
この記事のポイント
- SAP Query は ABAP コーディング不要の SAP 標準レポート機能で、3 Tcode で構成する
SQ03= User Group(権限管理)/SQ02= InfoSet(データソース)/SQ01= Query(実行定義)- 基本手順は SQ03 → SQ02 → SQ01 の順で、移送(TR)で他環境へ展開する
- S/4HANA では CDS View + Fiori Elements と併用し、短命レポートは SAP Query・中期運用は CDS という棲み分けが現実解
01WHAT SAP Query とは何か・SQ01/SQ02/SQ03 の役割
SAP Query は SAP ERP / S/4HANA に標準搭載された簡易レポート作成機能で、ABAP のソースコードを 1 行も書かずに業務ユーザーが自分でレポートを定義・実行できます。SAP GUI のメニューでは「クエリ」と表示されます。正式名称は SAP Query で、俗称として ABAP Query とも呼ばれます。
多くの現場で「SAP 標準にない一覧が欲しい」という依頼が来ますが、SAP Query はその最短解になります。購買実績の月次推移、仕入先別の与信残高、プラント別の在庫回転日数など、SAP 標準のトランザクション(ME2N / MB52 / S_ALR_87012193 など)では得られない軸のレポートを、コーディングなしで組めるのが強みです。
3 つの Tcode は「権限」「データソース」「実行」を分担する
SAP Query は 3 つの Tcode の組み合わせで動きます。SQ03 はUser Group(誰がどの InfoSet にアクセスできるかを決める権限の単位)を管理し、SQ02 はInfoSet(複数テーブルを JOIN した Query のデータソース)を定義し、SQ01 はQuery(InfoSet から表示項目と Selection criteria を選び、実行ボタンでレポートを走らせるオブジェクト)を作成・実行します。
この 3 つが分離されている理由は「変更の影響範囲を局所化するため」です。User Group の権限は BASIS 領域、InfoSet のテーブル定義は機能コンサルタント領域、Query の表示仕様は業務ユーザー領域と、責任分界が明確になります。結果として「購買レポートの Selection 項目を追加したい」という現場要望は SQ01 の修正で完結し、SQ02 や SQ03 に手を入れる必要がありません。
用語補足:Query・InfoSet・User Group
Query は「どの項目を、どの条件で実行するか」を定義するレポート雛形。InfoSet はそのレポートが読むデータ源(テーブル/ビューの集合)。User Group は InfoSet と Query の公開範囲を決める権限の単位です。3 つが分離されているため、「権限は変えず、レポートだけ追加」「データソースだけ拡張して、既存レポートはそのまま」という変更が局所化できます。
QuickViewer(SQVI)との違い
似た機能に QuickViewer(SQVI)があります。QuickViewer はトランザクションコード 1 つでテーブルを直接指定して即席レポートを作る簡易機能で、「とりあえず購買発注の中身を 1 回だけ見たい」という確認作業に向きます。ただし移送できない、権限管理が弱い、ALV のレイアウト保存が個人単位に閉じるといった制約があるため、定型運用レポートには SAP Query(SQ01/SQ02/SQ03)を使います。
02POINTS 3 Tcode で作る 5 ステップ運用
ここからは実際に SAP Query を作る手順を 5 ステップで整理します。MM 領域の「購買発注一覧(EKKO+EKPO+LFA1)」を例に、BASIS・機能コンサルタント・業務ユーザーの役割分担も併せて見ていきます。
- ①SQ03 で User Group を作成するBASIS 担当者が
SQ03を起動し、User Group 名(例:Z_MM_PURCHASE)を入力して新規作成します。続けて Edit → Assign User で SAP ユーザー ID を割り当て、Edit → Assign InfoSet(後で SQ02 で作る InfoSet を割り当て)を実行します。User Group は業務単位(購買/販売/経理)で切ると権限管理が破綻しにくいです。 - ②SQ02 で InfoSet を定義する機能コンサルタントが
SQ02を起動し、InfoSet 名(例:Z_MM_PO_HISTORY)を入力して作成します。データソースの選択画面では「テーブル直接指定」を選び、購買発注ヘッダEKKO・発注明細EKPO・仕入先マスタLFA1の 3 テーブルを追加し、JOIN 条件(EKKO-LIFNR = LFA1-LIFNR・EKKO-EBELN = EKPO-EBELN)を設定します。最初から全テーブルを JOIN せず、まず 1〜2 テーブルで動く Query を作り、後で JOIN を追加するのが安全です。 - ③SQ02 で項目を公開するInfoSet の画面で、業務ユーザーに見せたい項目を「出力可(List Field)」「Selection criteria 可(Selection Field)」にチェックします。購買発注番号・購買伝票日付・プラント・仕入先コード・品目コード・数量・金額などを設定し、社外秘項目(銀行口座情報・与信限度額など)は公開しない判断も必要です。
- ④SQ01 で Query を作成する業務ユーザーが
SQ01を起動し、Query 名(例:Z_MM_PO_LIST)を入力して作成します。使う InfoSet(Z_MM_PO_HISTORY)と User Group(Z_MM_PURCHASE)を選び、List Field に表示項目を、Selection Field に絞り込み条件にしたい項目をドラッグします。Sort タブで並び順(例:購買伝票日付 降順 → 仕入先コード 昇順)を指定し、保存します。 - ⑤F8 で実行・移送するQuery 画面で F8 を押すと Selection 入力画面が開き、購買伝票日付のレンジ・仕入先コード・プラントなどを指定してレポートを実行できます。結果は ALV(SAP List Viewer)で表示され、Excel ダウンロード・印刷・バックグラウンド実行(ジョブ登録)も可能です。完成したら SQ02 / SQ01 / SQ03 の各画面でオブジェクトを TR(Transport Request)に割り当て、リリースして QAS・PRD 環境へ移送します。
Selection criteria には索引が効く項目を含める
Selection criteria に主キー・外部キーなど索引(Index)が効く項目を含めてください。含まれていないと全件走査となり、100 万件規模のデータでは応答が返らなくなります。MM 系では購買伝票番号(EKKO-EBELN)・仕入先コード(EKKO-LIFNR)・プラント(EKPO-WERKS)あたりが基本の絞り込み軸になります。
本番に直書きしない・移送運用を守る
SAP Query のオブジェクト(User Group / InfoSet / Query)はすべて移送対象です。DEV で作成・保存し、TR(Transport Request)に紐付けて QAS・PRD へ移送するのが正規運用です。本番に直接 SQ01 で Query を作ると、開発機との差分管理が破綻し、SAP アップグレード(EHP / S/4HANA 移行)の際に未移送オブジェクトが消失する事故につながります。
03INSIGHT CDS View との使い分け判断
SAP Query は万能ではありません。100 万件超の大規模データ、複雑な集計、複数組織の合算、S/4HANA らしい Fiori UI での利用では CDS View(ABAP CDS)に劣ります。S/4HANA では CDS View + Fiori Elements が SAP の推奨アーキテクチャであり、SAP Query は短命な現場レポートや PoC 用途に留めるのが現実解です。
ADT の SAP×AI 案件では、最初の 2〜4 週間に SAP Query で PoC し、「このレポートが本当に業務で使われるか」「Selection 項目はこの軸で十分か」を確認した上で、本番化する段階で CDS View + Fiori Elements にリプレースする二段構えを採っています。SAP Query を捨てずに残しておくと、CDS 側の障害発生時に代替手段として機能するのも利点です。
SAP Query のパラメータ入力は SAP GUI 完結で業務ユーザーがすぐに習得できるのに対し、Fiori Elements は SAP GUI より学習コストが高いです。「誰がどのレポートを使うのか」の利用層に応じて、ツールを使い分けるのが ADT の SAP コンサル方針です。MM 領域の購買・在庫・仕入先レポートは SAP MMとは?購買から入庫・支払までのProcure-to-Payプロセスを解説、入庫/請求仮勘定の消し込みは SAP MMのGR/IR勘定とは?発注・入荷・請求の「ズレ」を解消する仕組み で図解しています。
豆知識:SAP Query は SAP R/3 時代から続く現役機能
SAP Query は SAP R/3(1992 年リリース)の時代から動く機能で、SAP ERP 6.0・S/4HANA でも標準搭載されています。30 年以上動いている理由は「業務ユーザーが ABAP を書かずにレポートを作れる」という価値が普遍的だったから。派手さはありませんが、短期 PoC や臨時レポートの最短解として知っておくと現場で重宝します。
まとめ
- SAP Query は ABAP コーディング不要の SAP 標準レポート機能で、SQ01 / SQ02 / SQ03 の 3 Tcode で構成する
- SQ03 = User Group(権限)/SQ02 = InfoSet(データソース)/SQ01 = Query(実行)の順で役割分担
- 基本手順は SQ03 → SQ02 → SQ01 → F8 実行 → TR 移送の 5 ステップ
- Selection criteria には索引が効く項目(主キー・外部キー)を含めてパフォーマンスを確保する
- 本番に直書きせず、DEV で作成して TR で移送するのが正規運用
- S/4HANA では CDS View + Fiori Elements と併用し、短命レポートは SAP Query・中期運用は CDS という棲み分けが現実解
04FAQ よくある質問
SAP Query は S/4HANA でも動きますか?
はい、S/4HANA でも SAP Query は標準アドオンとして引き続き利用可能です。ただし S/4HANA では CDS View + Fiori Elements でのレポート実装が推奨されており、SAP Query は短命な現場レポートや PoC 用途に留めるのが現実解です。3 か月以内に廃止が決まるレポートなら SAP Query、半期を超える保守が要るなら CDS View に投資するのが経験則です。
SAP Query と QuickViewer(SQVI)の違いは?
QuickViewer(SQVI)はテーブルを直接指定して即席レポートを作る簡易機能で、1 回限りの確認作業に向きます。ただし移送できない、権限管理が弱く SQ02/SQ03 のような User Group 機能がない、ALV のレイアウト保存が個人単位に閉じるといった制約があります。定型運用レポートは SQ01/SQ02/SQ03 の SAP Query で作成するのが原則です。
SAP Query のパフォーマンスを改善するには?
Selection criteria に主キー・外部キーなど索引が効く項目を含める、結合するテーブルを絞る、InfoSet に必要な項目だけ公開する、の 3 点が基本です。MM 系では購買伝票番号・仕入先コード・プラント・品目コードあたりが索引が効く代表例。100 万件を超える大規模データでは CDS View + Fiori のほうが圧倒的に高速です。
InfoSet の項目単位で権限を絞り込めますか?
InfoSet レベルでは不可です。InfoSet に登録した項目は同じ User Group 内のユーザー全員が参照できます。項目単位の権限制御が必要な場合は、CDS View に Data Control Language(DCL)を付けて権限制御し、Fiori Elements のアプリとして公開します。SAP Query は「同じ User Group 内で同じデータを見せる」前提の設計です。
出典・参考
- SAP Help Portal — SAP Query(Basis アドオン) https://help.sap.com/docs/SAP_NETWEAVER_731_BW
- SAP Help Portal — Maintain Queries (SQ01) / Maintain InfoSets (SQ02) / Maintain User Groups (SQ03) https://help.sap.com/docs/
- SAP Community — SAP Query 関連のブログ・Q&A 集 https://community.sap.com/
- SAP Help Portal — ABAP CDS View(S/4HANA の推奨アーキテクチャ) https://help.sap.com/docs/abap-docu
※本記事は上記の公開情報をもとに、アラディンテクノロジー株式会社編集部が独自に整理・考察したものです。内容は執筆時点(2026-09-27)の情報です。SAP Query は SAP NetWeaver の Basis アドオンとして提供されており、S/4HANA でも引き続き利用可能ですが、将来の SAP リリースで仕様が変わる可能性があります。最新仕様は SAP Help Portal でご確認ください。考察部分は当社の見解であり、特定の構成・運用を推奨するものではありません。