SAP Query(※以下SAPクエリ)は、データを抽出してレポートを出すレポーティングツールのことです。
仕入先明細照会(トランザクションコード:FBL1N)など、一覧系のデータを抽出する標準機能はある程度用意されていますが、例えばBP(ビジネスパートナ)などは一覧表示・抽出系の機能が用意されていません。
一覧表示機能が標準用意されていない場合に、その機能を提供する1つの手段として用いられるのが、SAPクエリです。
このページではSAPクエリの作成手順を解説しつつ、システム的な仕組みが分かるように図付きで説明していきます。
SAPクエリとは何かが知りたい方、SAPクエリを1から知りたい方は特に必見です。
是非最後までご覧ください。早速解説を始めます。
SAPクエリとは?
まずは、結論から。
語弊を恐れずにSAPクエリを簡単に説明すると、SAPクエリとは「誰が」「何を見るか」を定義するデータ参照プログラムです。
この後説明していきますが、SAPクエリを作成する際ABAPによるコーディングは一切行いません。
コーディングはしないのですが、裏側ではシステム的にABAPのプログラム(名称AQから始まるプログラム)が生成されます。システム的に見ると、エンドユーザはクエリを実行する際、間接的にこのプログラムを実行することで標準にはない一覧機能出力機能を利用していると説明できます。
そのため、SAPクエリは「権限制御ができるデータブラウザプログラム」と理解しても、とりあえずは問題ありません。
※生成されたプログラム自体をアドオンPGMで呼び出すことも可能なので、アドオンプログラムと言いつつ、実は「SAPクエリを呼んでいるだけ」というプログラムも存在します。
SAPクエリは「誰が」「何を見るか」を定義するー。ここがポイントになりますので、まずこの点を理解しておきましょう。
ビューとの違いは?
ビューとSAPクエリは何が違うか?
システム的にいうと、ビューはABAPディクショナリで登録することからわかるようにデータベース側の設定です。(厳密にはちょっと異なりますが・・・。)
一方でクエリは上記で解説した通り、ABAPプログラムです。プログラムなので、データベース側の設定というよりは、アプリケーション側の制御と言えます。
ビューは照会だけではなく、更新もできますが、SAPクエリでは更新はできません。
その他にも、SAPクエリは権限にも関わりますが、ビューは関わらないなど違いがあるため、似たようなものではあるが別物である、という前提で理解しておきましょう。
ビュー(View)とは1つ以上のデータベースから任意のデータを選択して、 見たいデータだけ、欲しいデータだけを表示する仕組みのこと。
詳しくはこちらの記事で解説しておりますので、合わせてご覧ください。
SAPクエリの作成手順
早速ですが、ここからはSAPクエリの作成手順を解説していきます。
「誰が」「何を」の原理を知っていれば難しくありませんし、特殊なSAP用語も合わせて解説してきますので、ご安心ください。
トランザクションコード:SQ03ユーザグループ登録
まず初めに登録するのが「誰が」の部分です。
「誰が」の部分は「ユーザグループ」という仕組みを利用します。
この「ユーザグループ」というのは、その名の通りユーザIDをまとめる概念であり、ここがSAPクエリの権限制御の肝になります。
作成するクエリを利用できるユーザを1つの「ユーザグループ」に割り当てないとクエリを利用できません。
「ユーザグループ」自体の登録は名称を入れて「登録」ボタンを押し、画面にしたがい入力を行えばOKです。
登録したユーザグループにユーザIDを割り当てる仕組みです。
割り当てられたユーザのみが、これから作成するSAPクエリを実行できるようになるため、通常はロールの設定と同じように部門単位や、職責単位で設定します。
※ユーザマスタや、ロール設定など詳しく知りたい方はこちらのページをご覧ください。
トランザクションコード:SQ02インフォセット登録
「誰が」の部分に該当するユーザグループの登録が完了したら、次に設定するのが「何を見るか」の部分です。
「何を見るか」の部分の設定を「インフォセット(infoset)」と呼びます。
「インフォセット」では、どのテーブルのどの項目なのか? といった情報はもちろん、どのテーブルとどのテーブルを結合するか? そして、どの項目を表示できるようにするか?を定義します。
トランザクションコード:SQ02の第1画面です。
先ほどと同様、インフォセットの名称を入力し「登録」ボタン押下で画面が遷移していきます。
ちなみに、この画面に「ロール/ユーザグループ割当」ボタンがあることからわかるように「インフォセット」に「ユーザグループ」を割り当てます。
今から作成するインフォセット(どのテーブルのどの項目)を見ることができるのは、ここで割り当てしたユーザグループになります。
先ほど説明した通り、ユーザグループにはユーザIDが割り当てられていますので、ユーザIDとインフォセットは間接的に紐づいている、ということになります。
「登録」ボタンを押下すると上記の画面が出てくるので、画面にしたがいインフォセットの設定を進めていくことになります。
※詳しい解説は別ページに記載します。
ちなみに、データソース欄を見て頂くとわかりますが、先ほど説明したようにテーブルを選択できるのはもちろんですが、プログラムも選択できます。
トランザクションコード:SQ01クエリ設定
さて、ここまでで「誰が」「何を見るか」の2つの次元での設定が終わりました。
「誰が」の部分をユーザグループで、「何を見るか」をインフォセットで定義した状態です。
既に、インフォセットにユーザグループも割当たっている状態です。
ここで最後に設定するのが「どのように表示するか」となります。これがクエリの設定です。
トランザクションコード:SQ01をたたくと、任意のユーザグループ用のクエリ設定画面になりますので、最初にユーザグループの選択を行います。
作成したいクエリ名称を入力し「登録ボタン」を押下すると、先ほどユーザグループに割り当てたインフォセットを選択できるようになります。
あとは、どのように表示するかを決めるクエリの設定を行うことでSAPクエリの実行が可能になります。
SAPクエリの設定はたったこれだけです。
途中、詳しい画面は省きましたが、いちからアドオンプログラムを作るよりは簡単ですね。
標準機能にない一覧照会系の機能をアドオンプログラムでつくる前に一度SAPクエリの機能を用いてみてはいかがでしょうか?
ABAPを1から勉強したい方は
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!