コンテンツフレーム起動

ダイアログモジュールの入力ヘルプ 文書を SAP ライブラリストラクチャに組み込む

イベントキーワード PROCESS ON VALUE-REQUEST を使用して POV イベントでダイアログモジュールを呼び出すことができます。

PROCESS ON VALUE-REQUEST.
...
  FIELD <f> MODULE <mod>.
...

PROCESS ON VALUE-REQUEST 命令の後は、MODULE 命令のみを使用することができます。ユーザが項目 <f> F4 を選択すると、FIELD <f> 命令に属するモジュール <mod> が呼び出されます。同一の項目<f> に対して FIELD 命令が複数ある場合は、最初の命令のみが実行されます。モジュール<mod> は、通常の PAI モジュールと同様に ABAP プログラムで定義されます。ただし、PROCESS ON HELP-REQUEST イベントでは Dynpro 項目 <f> の内容が FIELD 命令によって移送されていないため、この項目の内容を使用することはできません。モジュール内で独自の値一覧をプログラムすることができるようになります。ただし、このプロシージャは、検索ヘルプを実際に使用することができない場合のみ推奨されます。Dynpro からの項目内容の取得などの標準動作の一部はシステムによって実行されるため、検索ヘルプの定義は PROCESS ON VALUE-REQUEST よりもはるかに容易です。また、システム全体で F4 ヘルプの外観と印象を確実に統一することもできます。さらに、Dynpro ごとに項目に対する入力ヘルプの割当をやり直す必要もなくなります。

検索ヘルプ ( および検索ヘルプExit) の説明とは異なりますが、標準 F4 機能の一部を直接使用しなければならない状況もあります。このような場合に、POV イベントで使用可能な標準汎用モジュールがいくつかあります。これらの汎用モジュールは検索ヘルプおよびその他のすべての入力ヘルプをサポートし、Dynpro と入力ヘルプ間のデータ移送を実行します。これらにはすべて F4IF_ の接頭辞があります。その主なものは以下のとおりです。

        F4IF_FIELD_VALUE_REQUEST

ABAP ディクショナリの入力ヘルプを動的に呼び出します。構造のコンポート名または ABAP ディクショナリのデータベーステーブルをインポートパラメータ TABNAME および FIELDNAME で汎用モジュールに渡します。汎用モジュールによって、このコンポーネントの ABAP ディクショナリ入力ヘルプ が起動されます。関連する Dynpro 項目すべてが読み込まれます。インポートパラメータDYNPPROGDYNPNR およびDYNPROFIELD を指定すると、ユーザの選択が Dynpro 上の対応項目に返されます。テーブルパラメータ RETURN_TAB を指定した場合は、選択がテーブルに返されます。

        F4IF_INT_TABLE_VALUE_REQUEST

この汎用モジュールは、ABAP プログラムで作成した値一覧を表示します。この値一覧は、テーブルパラメータ VALUE_TAB として汎用モジュールに渡されます。インポートパラメータ DYNPPROGDYNPNR およびDYNPROFIELD を指定すると、ユーザの選択が Dynpro 上の対応項目に返されます。テーブルパラメータ RETURN_TAB を指定した場合は、選択がテーブルに返されます。

さらに、DYNP_VALUES_READ DYNP_VALUES_UPDATE という 2 つの汎用モジュールがあり、これらは Dynpro 項目の値を読み込み、POV イベントで値を返すことができます。詳細については、それぞれの汎用モジュール文書を参照してください。

例

ダイアログモジュールの入力ヘルプ

REPORT DEMO_DYNPRO_F4_HELP_MODULE.

TYPES: BEGIN OF VALUES,
         CARRID TYPE SPFLI-CARRID,
         CONNID TYPE SPFLI-CONNID,
       END OF VALUES.

DATA: CARRIER(3) TYPE C,
      CONNECTION(4) TYPE C.

DATA: PROGNAME LIKE SY-REPID,
      DYNNUM   LIKE SY-DYNNR,
      DYNPRO_VALUES TYPE TABLE OF DYNPREAD,
      FIELD_VALUE LIKE LINE OF DYNPRO_VALUES,
      VALUES_TAB TYPE TABLE OF VALUES.

CALL SCREEN 100.

MODULE INIT OUTPUT.
  PROGNAME = SY-REPID.
  DYNNUM   = SY-DYNNR.
  CLEAR: FIELD_VALUE, DYNPRO_VALUES.
  FIELD_VALUE-FIELDNAME = 'CARRIER'.
  APPEND FIELD_VALUE TO DYNPRO_VALUES.
ENDMODULE.

MODULE CANCEL INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE VALUE_CARRIER INPUT.

  CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
       EXPORTING
            TABNAME           = 'DEMOF4HELP'
            FIELDNAME         = 'CARRIER1'
            DYNPPROG          =  PROGNAME
            DYNPNR            =  DYNNUM
            DYNPROFIELD       = 'CARRIER'.

ENDMODULE.

MODULE VALUE_CONNECTION INPUT.

  CALL FUNCTION 'DYNP_VALUES_READ'
       EXPORTING
            DYNAME                   = PROGNAME
            DYNUMB                   = DYNNUM
            TRANSLATE_TO_UPPER       = 'X'
       TABLES
            DYNPFIELDS               = DYNPRO_VALUES.

  READ TABLE DYNPRO_VALUES INDEX 1 INTO FIELD_VALUE.

  SELECT  CARRID CONNID
    FROM  SPFLI
    INTO  CORRESPONDING FIELDS OF TABLE VALUES_TAB
    WHERE CARRID = FIELD_VALUE-FIELDVALUE.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
       EXPORTING
            RETFIELD         = 'CONNID'
            DYNPPROG         = PROGNAME
            DYNPNR           = DYNNUM
            DYNPROFIELD      = 'CONNECTION'
            VALUE_ORG        = 'S'
       TABLES
            VALUE_TAB        = VALUES_TAB.

ENDMODULE.

Dynpro 100 の次画面 ( 静的定義) は同じ Dynpro です。これは次のようなレイアウトになります。

このグラフィックは添付のテキストに説明されています

入力項目はプログラム項目 CARRIER CONNECTION から取得されています。押しボタンの機能コードは CANCEL で機能タイプは E です。

この Dynpro 制御ロジックは次のとおりです。

PROCESS BEFORE OUTPUT.
  MODULE INIT.

PROCESS AFTER INPUT.
  MODULE CANCEL AT EXIT-COMMAND.

PROCESS ON VALUE-REQUEST.
  FIELD CARRIER MODULE VALUE_CARRIER.
  FIELD CONNECTION MODULE VALUE_CONNECTION.

ユーザが個別の項目で入力ヘルプを選択すると、以下のように表示されます。

         航空会社 項目には POV モジュールVALUE_CARRIER が呼び出されます。汎用モジュール F4IF_FIELD_VALUE_REQUEST によって ABAP ディクショナリからの構造 DEMOF4HELP のコンポーネント CARRIER1 に入力ヘルプ、すなわち検索ヘルプ DEMOF4DE が表示されます。ユーザの選択は Dynpro 項目 CARRIER に返されます。

         フライト番号 項目には POV モジュールVALUE_CONNECTION が呼び出されます。汎用モジュール DYNP_VALUE_READ によって、Dynpro 項目 CARRIER の値がプログラムに移送されます。次に、プログラムは、SELECT 命令を使用してデータベーステーブル SPFLI から対応する値を内部テーブル VALUES_TAB に読み込み、この内部テーブルを F4IF_INT_TABLE_VALUE_REQUEST に渡します。これによって内部テーブルが入力ヘルプとして表示され、ユーザの選択が Dynpro 項目 CONNECTION に配置されます。

 

 

 

 

 

コンテンツフレーム終了