入力パラメータ(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)


NEXT>> 3. 統合処理(UNION)