
SAP
クエリには、複数のオプションがあります。それによって、クエリで生成されたデータを他のソフトウェア製品への追加処理に渡すことができます。オプションの内容は次のとおりです。いずれの場合も、手順は同じです。生成されたデータは内部テーブル
( データテーブル ) に配置され、そこでの項目の順序およびタイプはクエリ一覧における順序とタイプに対応しています。もう 1 つの内部テーブル ( 内容説明テーブル ) には、データテーブルの個別項目に関する内容説明が含まれます。テーブルには、一覧のタイプおよび位置だけでなく、項目名に関する情報も含まれます。これらのテーブルはともに、上記のソフトウェアへの追加処理に渡されます。拡張
SQUE0001 を介した SAP クエリにより、同じインタフェースを使用して他のソフトウェア製品にアクセスすることもできます。 SQUE0001 は、次のコンポーネントで構成されています。
プライベートファイル
機能の多くは、追加機能プールの導入によって過去のものになりました。 ( 追加機能プールを参照してください ) 。 SAP では、互換性の理由により、 プライベートファイル機能が引き続きサポートされています。ただし、プライベートファイルに組み込まれている機能を段階的に再定義して、それらの機能を追加機能プールに追加することができるようにすることをお奨めします。追加機能プールの機能を処理することができるのは、フォアグラウンドのオンラインだけです。したがって、バックグラウンド処理時に呼び出すことはできない点に注意してください。これに対し、プライベートファイルの内容については、バックグラウンド処理時に呼び出すことができます。
SQUE0001
は、次の 2 つのコンポーネントで構成されます。プロジェクトで拡張を
( トランザクション CMOD を使用して ) 有効化すると、 SAP クエリにより生成された各レポートは、 プライベートファイル ( 機能コード : +DAT) と呼ばれる追加対話機能にリンクされます。この プライベートファイルにより、汎用モジュールが呼び出され、上記のテーブル ( データテーブルと内容説明テーブル ) が渡されます。その後、上記のテーブル ( データテーブルと内容説明テーブル ) は汎用モジュールに渡されます。したがって、選択画面には、他の対話式機能 ( EXCEL 、グラフィック、 EIS 、ファイルへのダウンロード、および保存 ) などの追加パラメータが含まれており、ユーザはあらかじめ一覧を照会しなくてもクエリを実行することができます。選択画面では、このパラメータの名称は プライベートファイルになっているため、メニュー拡張にも同じ名称を付けることをお奨めします。これは SAP 標準に対応しています。
拡張を有効化した場合、すべてのクエリを再生成して、追加パラメータが選択画面に表示されるようにします。これを最も効果的に行うには、コンポーネント機能分野の更新に進み、ジャンプ
→ クエリ一覧を選択します。汎用モジュール
EXIT_RSAQEXCE_001このセクションでは、汎用モジュール
EXIT_RSAQEXCE_001 に渡すパラメータと、パラメータの値の解釈方法または処理方法について説明します。次の例は、この処理を示しています。クライアント
03 では、ユーザグループ RX のユーザにより、一行基本一覧、統計、およびランク一覧で構成されるクエリ X1 が登録されています。基本一覧では、次の項目が順番に出力されます。
KNA1-KUNNR |
得意先コード |
KNA1-NAME1 |
名称 |
KNC1-GJAHR |
会計年度 |
KNC1-UM01U |
会計期間 1 の売上 |
T001-WAERS |
通貨コード |
統計では、次の項目が順番に出力されます。
KNA1-LAND1 |
国キー |
KNC1-UM01U |
会計期間 1 の売上 |
項目
KNCI-UM01U については、読込レコード数、パーセント値、および平均値の詳細も必要です。ランク一覧では、次の項目が順番に出力されます。
KNA1-KUNNR |
得意先コード |
KNA1-NAME1 |
名称 |
KNC1-UM01U |
会計期間 1 の売上 |
汎用モジュール
EXIT_RSAQEXCE_001 のパラメータ汎用モジュール
EXIT_RSAQEXCE_001 には、次のパラメータがあります。
PROGRAM |
パラメータを渡すプログラム |
LIST_ID |
渡されたサブ一覧の ID |
LISTTEXT |
渡されたサブ一覧の表題 |
DATATAB |
データテーブル |
LISTDESC |
データテーブルの項目に関する内容説明テーブル |
PROGRAM
パラメータPROGRAM
パラメータには、汎用モジュールを呼び出したクエリレポートの名称が含まれます。この名称により、処理されたクエリを判断することができます。これは名称が必ず次のように構成されているためです。Aqmmb...bq...q
cc |
= グローバル領域のクライアントまたは zz |
b …b |
= ユーザグループ名 |
q …q |
= クエリ名 |
この例の場合、レポートの名称は
AQRX==========X1============ となります。LIST_ID
パラメータLIST_ID
パラメータには、渡されるデータテーブルを指定する 3 文字の ID が含まれます。クエリによって生成された各一覧は、複数のサブ一覧 ( 基本一覧、複数の統計、および複数のランク一覧 ) で構成されます。汎用モジュールに渡されるデータテーブル ( DATATAB) には、 1 つのサブ一覧のデータのみが含まれるのに対し、内容説明テーブル ( LISTDESC) には、すべてのサブ一覧の項目の内容説明が常に含まれます。可能なパラメータ値は次のとおりです。
G00 |
DATATAB に基本一覧のデータが含まれる場合 |
Txx |
DATATAB に統計 XX (01,02,...) のデータが含まれる場合 |
Rxx |
DATATAB にランク一覧 XX (01,02,...) のデータが含まれる場合 |
したがって、
LIST_ID パラメータには、 2 つの機能があります。まず、該当するサブ一覧タイプを判断することができます。次に、内容説明テーブルに該当するエントリを定義することができます。この例では、基本一覧のデータが処理される場合には値
G00 、統計のデータが処理される場合には値 T01 、ランク一覧のデータが処理される場合には値 R01 が LIST_ID パラメータに含まれます。LISTTEXT
パラメータLISTTEXT
パラメータには、クエリの定義時に関連する一覧に割り当てられるテキストが含まれます。DATATAB
パラメータDATATAB
テーブルには渡されるサブ一覧のデータが含まれます。この項目の順序およびタイプは、サブ一覧に出力された項目の順序と対応しています。また、テーブルの各行は一覧の行と対応し、基本一覧に存在するすべての改行が無視されます ( つまり、必ず 1 テーブル行となります ) 。データテーブルの構造は、渡されるサブ一覧の定義方法によって異なるため、その構造をあらかじめ汎用モジュールで定義しておく必要があります。そのために、内容説明テーブル
LISTDESC を使用することができます。データテーブルの個別項目にアクセスするには、フィールドシンボルと ASSIGN COMPONENT 命令を使用します。以下の例の基本一覧を渡す場合、データテーブルの
1 行は 5 つの項目で構成され、各項目のデータ型、長さ、および小数点以下桁数は次のようになります。
1. 項目 : データ型 C 、長さ 10 |
(KNA1-KUNNR) |
2. 項目 : データ型 C 、長さ 35 |
(KNA1-NAME1) |
3. 項目 : データ型 N 、長さ 04 |
(KNC1-GJAHR) |
4. 項目 : データ型 P 、長さ 08 、小数点以下桁数 02 |
(KNC1-UM01U) |
5. 項目 : データ型 C 、長さ 05 |
(T001-WAERS) |
統計を渡す場合は、データテーブルの
1 行は 5 つの項目で構成され、各項目のタイプ、長さ、および小数点以下桁数は次のようになります。
1. 項目 : データ型 C 、長さ 03 |
(KNA1-LAND1) |
2. 項目 : データ型 P 、長さ 16 、小数点以下桁数 02 |
(KNC1-UM01U の合計 ) |
3. 項目 : データ型 I 、長さ 04 |
( 読込レコード数 ) |
4. 項目 : データ型 P 、長さ 04 、小数点以下桁数 03 |
( パーセント値 ) |
5. 項目 : データ型 P 、長さ 16 、小数点以下桁数 02 |
(KNC1-UM01U の平均値 ) |
ランク一覧を渡す場合は、データテーブルの
1 行は 4 つの項目で構成され、各項目のタイプ、長さ、および小数点以下桁数は次のようになります。
1. 項目 : データ型 C 、長さ 06 |
( ランク一覧のランク ) |
2. 項目 : データ型 C 、長さ 10 |
(KNA1-KUNNR) |
3. 項目 : データ型 C 、長さ 35 |
(KNA1-NAME1) |
4. 項目 : データ型 P 、長さ 16 、小数点以下桁数 2 |
(KNC1-UM01U の合計 ) |
項目のデータ型、長さ、および小数点以下桁数を定義するには、
ABAP の命令 DESCRIBE FIELD または内容説明テーブル LISTDESC ( 下記参照 ) のいずれかを使用します。LISTDESC
パラメータLISTDESC
内容説明テーブルには、データテーブル DATATAB の項目の内容説明が含まれます。これには、項目のタイプ、長さ、少数点以下桁数だけでなく、 DESCRIBE FIELD 命令で定義することができない情報も含まれています。この例のような複数のサブ一覧がクエリにある場合は、内容説明テーブルには、このクエリによって渡すことができるすべてのデータテーブル ( つまり、サブ一覧すべて ) の項目の内容説明が常に含まれます。 LIST_ID パラメータを使用して、内容説明テーブルから該当するエントリを検索することができます。したがって、この例では、基本一覧、統計、およびランク一覧のデータテーブルの項目の内容説明が常に内容説明テーブルに含まれます。
内容説明テーブルは
RSAQLDESC 構造を持っており、次の項目が含まれています ( 内容説明テーブル : RSAQLDESC) 。
FNAMENEW |
項目データ型 C 、長さ 70 |
項目名 ( ソース項目 ) ( リリース 4.0) |
FNAMEINT |
項目データ型 C 、長さ 30 |
項目名 ( データテーブル ) |
FKEY |
項目データ型 C 、長さ 1 |
リード列のフラグ |
FGTYPE |
項目データ型 C 、長さ 1 |
グラフィックタイプのフラグ |
FNZERO |
項目データ型 C 、長さ 1 |
ゼロ表示のフラグ |
FSUM |
項目データ型 C 、長さ 1 |
集計フラグ |
FSONLY |
項目データ型 C 、長さ 1 |
ソートフラグ |
FSORT |
項目データ型 N 、長さ 04 |
ソートレベル |
FSODS |
項目データ型 C 、長さ 1 |
ソート方向 |
FSUBT |
項目データ型 C 、長さ 1 |
小計フラグ |
FLPOS |
項目データ型 N 、長さ 4 |
項目の位置 (FPOS 同様 ) |
FNUMB |
項目データ型 C 、長さ 2 |
機能グループの略称 |
FNUMBT |
項目データ型 C 、長さ 24 |
機能グループのテキスト |
LID |
項目データ型 C 、長さ 03 |
サブ一覧の ID |
FPOS |
項目データ型 N 、長さ 02 |
項目の位置 |
FCONT |
項目データ型 N 、長さ 01 |
継続行の数 |
FCURPOS |
項目データ型 N 、長さ 03 |
項目の一覧位置 |
FGRAF |
項目データ型 C 、長さ 01 |
グラフィックのテキストフラグ |
FTYP |
項目データ型 C 、長さ 01 |
項目の ABAP タイプ |
FLEN |
項目データ型 N 、長さ 03 |
項目の長さ |
FDEC |
項目データ型 N 、長さ 02 |
項目の小数点以下桁数 |
FOLEN |
項目データ型 N 、長さ 03 |
項目の出力長 |
FCUR |
項目データ型 C 、長さ 01 |
通貨フラグ |
FADD |
項目データ型 C 、長さ 01 |
内部項目のフラグ |
FDESC |
項目データ型 C 、長さ 40 |
項目の内容説明 ( テキスト ( 長 )) |
FNAME |
項目データ型 C 、長さ 30 |
項目名 ( ソース項目 ) |
FCOL |
項目データ型 C 、長さ 30 |
項目の列ヘッダ |
LID |
項目がどのクエリのサブ一覧に属するかを示します。パラメータ値は LIST_ID パラメータと同じです ( 上記参照 ) 。 | |
FPOS |
LID パラメータによって指定されたサブ一覧での項目の位置を説明します。その位置は、 1 から昇順にカウントされます (01,02,...) 。 | |
FCONT |
項目が出力される継続行の番号です (0,1,...) 。これは一覧の行の幅 (LINE-SIZE) が狭すぎて、数行にもおさまらない場合にのみ発生します。 (FPOS などで行われる ) 項目の採番は、 FCONT 値に依存しないため、影響を受けません。通常、この項目は プライベートファイル機能には必要ありません。 | |
FCURPOS |
項目が数値 (FTYP = P 、 I 、 F) の場合、一覧の行の項目の開始位置を説明します。数値でない場合は、 FCURPOS には値 000 が含まれます。通常、この項目は プライベートファイル機能には必要ありません。 | |
FGRAF |
非数値項目の値をグラフィックのヘルプテキストとして使用する場合、値 X が入ります。通常、この項目は プライベートファイル機能には必要ありません。 | |
FTYP |
ABAP の項目タイプを説明し、値 C 、 D 、 F 、 I 、 N 、 P 、 T 、または X を受け入れることができます。 | |
FLEN |
項目長をバイト単位で表します。 | |
FDEC |
項目の小数点以下桁数を表します。 FTYP に値 P が含まれる場合にのみ、この指定が重要です。それ以外の値の場合、 FDEC には値 00 が入ります。 | |
FOLEN |
クエリの定義時に指定したとおり、サブ一覧の項目の出力長を説明します。 | |
FCUR |
項目を次のように識別します。 F 通貨額の項目W 通貨コードまたは通貨項目M 数量項目E 単位項目 | |
FADD |
項目が、クエリ自体により生成された追加項目かどうかを識別します。次の値が入ります。 R ランク指定 ( ランク一覧のみ )C 読込レコード数 ( 統計のみ )P パーセント指定 ( 統計のみ )M 平均値 ( 統計のみ ) | |
FDESC |
クエリの定義時に表示される項目の内容説明が含まれます。 | |
FNAME |
データテーブルの情報が導出されたクエリレポートの項目名を含みます ( リリース 4.0 まで ) 。 | |
FCOL |
LISTDESC テーブルのエントリで記述されたデータテーブル項目の 1 行の列ヘッダを含みます。 | |
FNAMENEW |
FNAME と同様 ( リリース 4.0 以降 ) | |
FNAMEINT |
データテーブルでの項目名を含みます。この名称を ASSIGN COMPONENT 命令と一緒に使用して、データテーブル内の項目に動的にアクセスします。 | |
FKEY |
項目が一覧のキー項目 ( リード列 ) として出力された場合に値 X が入ります。 | |
FGTYPE |
項目の内容を次のように識別します。 I アイコン | |
FNZERO |
項目が一覧でオプション NO-ZERO で出力された場合に値 X が入ります。 | |
FSUM |
項目が一覧で合計された場合に値 X が入ります。 | |
FSONLY |
一覧がこの項目にしたがってソートされても、項目自体は出力されなかった場合に値 X が入ります。 | |
FSORT |
一覧が項目にしたがってソートされた場合にソート番号が含まれます。 | |
FSODS |
一覧が項目にしたがって降順にソートされた場合に値 X が入ります。 | |
FSUBT |
一覧がこの項目にしたがってソートされ、小計がソート中に生成された場合に値 X が入ります。 | |
FLPOS |
FPOS と同様 | |
FNUMB |
名称が FNAMENEW に保存されている項目の機能グループ | |
FNUMBT |
機能グループのテキスト ( 長 ) | |