入力パラメータ(WITH PARAMETERS)
2. 入力パラメータ(WITH PARAMETERS)
2. 入力パラメータ(WITH PARAMETERS)
入力パラメータを利用する事により、CDSビューにおいてデータ制限が可能になります。
解説
ABAP側から呼び出す際に、CDSビューにて条件を指定したい項目があれば、SQLのWHERE句で指定は可能です。
しかし、条件を指定したい項目がCDSビューの出力項目にない場合や、パフォーマンスを考慮しCDSビューの結合段階で制限を掛けたい場合に、入力パラメータ(WITH PARMETER)を利用します。
① CDSビューに入力パラメータを定義する
② 入力パラメータをテーブル結合時の条件として定義する
③ ABAP側からデータ抽出する際にパラメータを受け渡す
プログラムの作成
では、実際に入力パラメータ(WITH PARAMETERS)を利用したCDSビュー、ABAPプログラムを作成してみましょう。
CDSビューの仕様
演習内容 | |
---|---|
ビューID | ZIYYMMnnn_samp3_1 (sqlViewName:ZIYYMMnnn_s3_1) |
ビュー説明 | WITH PARAMETERS |
要件概要 | 生徒テーブルと、クラスメンバーテーブルを結合して生徒情報ビューを作成しなさい。 |
結合条件 | 生徒テーブル(zstudents)、クラスメンバーテーブル(zstudents_class)を ID(student_id)をkeyにして結合。<join> |
その他条件 | DB側でデータを絞りこめるように入力パラメータを使用し、 生徒テーブルへの登録日が入力パラメータより後となるように指定。 (zstudents-created_at → P_DATE 入力パラメータ) <P_DATE> |
出力項目 | 生徒情報(ID、クラス、姓、名、誕生日、登録日(=入学日)) |
その他 | :$TMP ローカルオブジェクトで作成 |
CDSビューのソース
ABAPの仕様
演習内容 | |
---|---|
プログラムID | ZRYYMMnnn_samp2_2 |
プログラム名 | (任意) |
要件概要 | 画面入力した日付より後に入学した生徒情報を表示しなさい。 |
入力画面 | 日付(初期値=20190401) |
主処理件 | 生徒情報ビュー(下記新規CDSビュー)より情報抽出 <SELECT * > 生徒情報の画面表示 <cl_demo_output=>display()> |
出力項目 | 生徒情報(ID、クラス、姓、名、誕生日、登録日(=入学日)) |
その他 | :$TMP ローカルオブジェクトで作成 |
ABAPのソース
プログラムの実行
では、作成したプログラムを実行してみましょう。
■2018/4/1で実行
■2019/4/1で実行
(参考)テーブルデータ
・生徒テーブル(zstudents)を確認しましょう。(トランザクションコード : SE11)
・生徒テーブル(zstudents)を確認しましょう。(トランザクションコード : SE16)
・クラスメンバーテーブル(zstudents_class)を確認しましょう。(トランザクションコード : SE11)
・クラスメンバーテーブル(zstudents_class)を確認しましょう。(トランザクションコード : SE16)