拡張 SQUE0001 : プライベートファイル 

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

項目の内容を次のように識別します。
S    シンボル
I     アイコン

FNZERO

項目が一覧でオプション NO-ZERO で出力された場合に値 X が入ります。

FSUM

項目が一覧で合計された場合に値 X が入ります。

FSONLY

一覧がこの項目にしたがってソートされても、項目自体は出力されなかった場合に値 X が入ります。

FSORT

一覧が項目にしたがってソートされた場合にソート番号が含まれます。

FSODS

一覧が項目にしたがって降順にソートされた場合に値 X が入ります。

FSUBT

一覧がこの項目にしたがってソートされ、小計がソート中に生成された場合に値 X が入ります。

FLPOS

FPOS と同様

FNUMB

名称が FNAMENEW に保存されている項目の機能グループ

FNUMBT

機能グループのテキスト ( )