SUBMIT - selscreen_parameters

SUBMIT - selscreen_parameters



基本形式

... [USING SELECTION-SET variant]
    [USING SELECTION-SETS OF PROGRAM prog]
    [WITH SELECTION-TABLE rspar]
    [WITH expr_syntax1 WITH expr_syntax2 ...]
    [WITH FREE SELECTIONS texpr] ... .



オプション:

1. ... USING SELECTION-SET variant

2. ... USING SELECTION-SETS OF PROGRAM prog

3. ... WITH SELECTION-TABLE rspar

4. ... WITH expr_syntax1 WITH expr_syntax2 ...

5. ... WITH FREE SELECTIONS texpr



機能

USING-SELECTION-SET では、バリアント variant を用いて選択画面コンポーネントがすべて設定されます。USING-SELECTION-SETS OF PROGRAM を指定すると、別のプログラムに由来するバリアントを使用することができます。WITH SELECTION-TABLE を指定すると、複数の選択画面コンポーネントの値が内部テーブル rspar の内容として転送されます。WITH expr_syntax では、個別の選択画面コンポーネント sel に値が設定されます。WITH FREE SELECTIONS オプションを使用して、論理データベース用選択画面に自由選択を転送することができます。



オプション 1

...USING SELECTION-SET variant


機能

このオプションを指定すると、選択画面のパラメータと選択基準にバリアントの値が設定されます。variant には、命令が実行されるときにアクセスされるプログラムのバリアント名を格納している文字型データオブジェクトを指定しなければなりません。バリアントが存在しないと、エラーメッセージが送信されます。バリアントが別の選択画面に属する場合、バリアントは無視されます。



補足説明

ABAP ワークベンチで、またはプログラムを実行中に選択画面上でジャンプ - バリアントを選択して、選択画面が定義されたどのプログラムのバリアントも登録および管理することができます。



オプション 2

... USING SELECTION-SETS OF PROGRAM prog


機能

このオプションを指定すると、アクセスされるプログラムでプログラム prog のバリアントが使用されます。prog には、命令が実行されるときにプログラム名称を格納している文字型データオブジェクトを指定しなければなりません。このオプションの機能は以下のとおりです。

バリアント variant を USING SELECTION-SET と共に指定すると、このバリアントがプログラム prog で検索されます。


VIA SELECTION-SCREEN を用いて選択画面を表示する場合、プログラム prog のバリアントは、メニューパスジャンプ - バリアントによってアクセスできるすべての機能の影響を受けます。ただし、それらの機能が有効なのは、prog が実行可能プログラムである場合だけです。



補足説明

プログラム prog の選択画面には、アクセスされるプログラムで使用される選択画面と同じパラメータと選択基準が存在するようにしてください。



オプション 3

... WITH SELECTION-TABLE rspar


機能

このオプションを指定すると、選択画面のパラメータと選択基準が内部テーブル rspar から取得されます。rspar には行データ型 RSPARAMS の内部テーブルを指定しなければなりません。構造化データ型 RSPARAMS は ABAP ディクショナリで定義されており、以下のコンポーネントがあります。コンポーネントはすべてデータ型 CHAR です。

SELNAME (長さ 8)


KIND (長さ 1)


SIGN (長さ 1)


OPTION (長さ 2)


LOW (長さ 45)


HIGH (長さ 45)

選択画面のパラメータと選択基準に固有値を設定するには、内部テーブル rspar の行に以下の値を格納しなければなりません。

SELNAME には、選択画面のパラメータまたは選択基準の名称を大文字で格納しなければなりません。


KIND には、選択画面コンポーネントのタイプを格納しなければなりません (パラメータを表す P、選択基準を表す S)


SIGN、OPTION、LOW、および HIGH には、選択基準と同名の選択テーブル列に指定する値を格納しなければなりません。パラメータの場合、値は LOW で指定しなければならず、その他のコンポーネントは無視されます。

ある選択基準の名称が rspar の複数個所にあると、複数行を持つ選択テーブルが定義され、選択基準に渡されます。パラメータ名が複数個所にあると、最後の値がパラメータに渡されます。
汎用モジュール RS_REFRESH_FROM_SELECTOPTIONS によって、現在のプログラムのパラメータまたは選択テーブルの内容をテーブルに入力することができます。



補足説明

選択テーブルとは異なり、テーブル rspar にあるコンポーネント LOW および HIGH のデータ型は常に CHAR 型であり、必要なら転送時にパラメータまたは選択基準の型に変換されます。

値を入力する際、必ず ABAP 値の内部書式で入力し、画面表示の出力書式では入力しないでください。



オプション 4

... WITH expr_syntax1 WITH expr_syntax2 ...


機能

選択画面のパラメータまたは選択基準に値が個別に設定されます。パラメータには単一値が渡され、選択基準には選択テーブルが渡されます。これらの値によって、アクセスされるプログラムですでに指定された値が上書きされます。転送される選択テーブルは、同じ選択基準 sel を指定するすべての WITH sel オプションから構成されます。expr_syntax には以下の命令を指定することができます。ここではパラメータまたは選択基準の名称を sel に直接指定する必要があります。

sel {EQ|NE|CP|NP|GT|GE|LT|LE} dobj [SIGN sign]
単一値が転送されます。
dobj の前にある演算子は選択テーブルの OPTION 列に指定する値に相当します。dobj には、選択画面コンポーネント sel のデータ型に変換可能なデータ型のデータオブジェクトを指定しなければなりません。sign には、文字型項目を指定することができ、この項目には 'I' または 'E' を格納しなければなりません。標準値は 'I' です。
sel が選択基準だと、転送される選択テーブルに 1 行が追加され、演算子が OPTION 列に、dobj の内容がLOW 列に、sign の内容が SIGN 列に格納されます。
sel がパラメータだと、アクセスされるプログラムでの dobj の値に設定されます。演算子やおよび sign の値は考慮されません。


sel [NOT] BETWEEN dobj1 AND dobj2 [SIGN sign]
範囲が転送されます。
この場合、sel は選択基準でなければなりません。dobj には、選択基準 sel の列 LOW および HIGH のデータ型に変換可能なデータ型のデータオブジェクトを指定しなければなりません。sign には、文字型項目を指定することができ、この項目には 'I' または 'E' を格納しなければなりません。標準値は 'I' です。
転送される選択テーブルに 1 行が追加されます。NOT を指定すると、値 'NB' が列 OPTION に格納されます。指定しないと、入力される値は 'BT' です。dobj の内容とsign の内容が列 LOW、HIGH、および SIGN に格納されます。


sel IN rtab
RANGES テーブルが転送されます。
この場合、sel は選択基準でなければなりません。rtab には、選択基準 sel に対する選択テーブルと同じ構造の内部テーブルを指定しなければなりません。この種のテーブルを登録するには、命令 TYPES および DATA のオプション RANGE OF を使用することができます。
転送される選択テーブルにテーブル rtab の行が追加されます。



expr_syntax オプションを複数回指定することができ、同じ選択画面コンポーネントを複数回指定することもできます。



補足説明

演算子 EQ の代わりに = または INCL を使用することもできます。


値を入力する際、必ず画面表示の出力書式でなく ABAP 値の内部書式にしてください。





プログラム report1 に Dynpro 番号 1100 の独立選択画面があります。プログラム report2 で、行データ型 RSPARAMS 内部テーブルと RANGES テーブルにこの選択画面用の値を入力します。SUBMIT のとき、これらのテーブルが単一条件と共に転送されます。



アクセスされるプログラム

REPORT report1.

DATA text TYPE c LENGTH 10.

SELECTION-SCREEN BEGIN OF SCREEN 1100.
  SELECT-OPTIONS: selcrit1 FOR text,
                  selcrit2 FOR text.
SELECTION-SCREEN END OF SCREEN 1100.

...



呼出元プログラム

REPORT report2.

DATA: text       TYPE c LENGTH 10,
      rspar_tab  TYPE TABLE OF rsparams,
      rspar_line LIKE LINE OF rspar_tab,
      range_tab  LIKE RANGE OF text,
      range_line LIKE LINE OF range_tab.

...

rspar_line-selname = 'SELCRIT1'.
rspar_line-kind    = 'S'.
rspar_line-sign    = 'I'.
rspar_line-option  = 'EQ'.
rspar_line-low     = 'ABAP'.
APPEND rspar_line TO rspar_tab.

range_line-sign   = 'E'.
range_line-option = 'EQ'.
range_line-low    = 'H'.
APPEND range_line TO range_tab.

range_line-sign   = 'E'.
range_line-option = 'EQ'.
range_line-low    = 'K'.
APPEND range_line TO range_tab.

SUBMIT report1 USING SELECTION-SCREEN '1100'
               WITH SELECTION-TABLE rspar_tab
               WITH selcrit2 BETWEEN 'H' AND 'K'
               WITH selcrit2 IN range_tab
               AND RETURN.



結果
report1 が report2 からアクセスされた後、アクセスされるプログラムでの選択基準 selcrit1 および selcrit2 に対する選択テーブルには以下のエントリが格納されています。

  SIGN OPTION LOW HIGH
selcrit1 I EQ ABAP  
selcrit2 I BT H K
selcrit2 E EQ H  
selcrit2 E EQ K  


オプション 5

... WITH FREE SELECTIONS texpr


機能

論理データベースの選択画面用の動的選択に値が設定されます。アクセスされるプログラムは、動的選択をサポートする論理データベースにリンクしていなければなりません。texpr はデータ型グループ RSDS に属する型 RSDS_TEXPR の内部テーブルでなければなりません。
texpr では動的選択の選択が内部書式 (逆ポーランド記法) で指定されます。呼出元プログラムで texpr に入力するには、汎用グループ SSEL に属する汎用モジュール FREE_SELECTIONS_INIT、FREE_SELECTIONS_DIALOG、および FREE_SELECTIONS_RANGE_2_EX を使用することができます。最初の 2 つの汎用モジュールではユーザダイアログが実行されますが、FREE_SELECTIONS_RANGE_2_EX には型 RSDS_TRANGE の内部テーブルにある動的選択の各ノードに対する RANGES テーブルを転送することができます。すると RANGES テーブルが行データ型 RSDS_TEXPR のテーブルに変換されます。同じ動的選択がある選択画面が呼出元プログラムにある場合、汎用モジュール RS_REFRESH_FROM_DYNAMICAL_SEL を使用して、あらかじめ動的選択の内容を RSDS_TRANGE 型のテーブルに転送することができます。
内部テーブルデータ型 RSDS_TRANGE の行には、各ノードを表すフラットなコンポーネント TABLENAME、およびノードにある項目を表す型 RSDS_FRANGE_T のテーブル型コンポーネント FRANGE_T があります。RSDS_FRANGE_T の 行には、各項目を表すフラットなコンポーネント FIELDNAME、および ABAP ディクショナリに由来する行データ型 RSDSSELOPT のテーブル型コンポーネント SELOPT_T があります。RSDSSELOPT には 4 つのコンポーネント SIGN、OPTION、LOW、および HIGH があり、RANGES テーブルも対象にすることができます。





プログラム report1 が論理データベース F1Sにリンクしており、この論理データベースではノード SPFLI の動的選択がサポートされています。プログラム report2 では、ノード SPFLI の項目 CONNID に対する選択条件を使用して、ネストされた rsds_trange 型の内部テーブルに条件を入力します。その後、この内部テーブルが rsds_texpr 型のテーブルに変換され、 SUBMIT の時点で転送されます。



アクセスされるプログラム

REPORT report1.

NODES: spfli, sflight, sbook.

...



呼出元プログラム

REPORT report2.

TYPE-POOLS rsds.

DATA: trange TYPE rsds_trange,
      trange_line
        LIKE LINE OF trange,
      trange_frange_t_line
        LIKE LINE OF trange_line-frange_t,
      trange_frange_t_selopt_t_line
        LIKE LINE OF trange_frange_t_line-selopt_t,
      texpr TYPE rsds_texpr.

trange_line-tablename = 'SPFLI'.
trange_frange_t_line-fieldname = 'CONNID'.
trange_frange_t_selopt_t_line-sign   = 'I'.
trange_frange_t_selopt_t_line-option = 'BT'.
trange_frange_t_selopt_t_line-low    = '0200'.
trange_frange_t_selopt_t_line-high   = '0800'.
APPEND trange_frange_t_selopt_t_line
  TO trange_frange_t_line-selopt_t.
trange_frange_t_selopt_t_line-sign   = 'I'.
trange_frange_t_selopt_t_line-option = 'NE'.
trange_frange_t_selopt_t_line-low    = '0400'.
APPEND trange_frange_t_selopt_t_line
  TO trange_frange_t_line-selopt_t.
APPEND trange_frange_t_line TO trange_line-frange_t.
APPEND trange_line TO trange.

CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_EX'
  EXPORTING
    field_ranges = trange
  IMPORTING
    expressions  = texpr.

SUBMIT report1 VIA SELECTION-SCREEN
               WITH FREE SELECTIONS texpr.









评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值