コンテンツフレーム起動

カーソル位置の検出 文書を SAP ライブラリストラクチャに組み込む

ユーザと Dynpro とのインタラクションのあとに、アクションが行われたときのカーソルの位置を判別する必要がある場合があります。これは、ユーザが選択機能 (F2 またはマウスのダブルクリック) を選択した場合に特に重要です。

カーソルの位置を検出するには、次の命令を使用します。

GET CURSOR FIELD <f> [OFFSET <off>]
                     [LINE <lin>]
                     [VALUE <val>]
                     [LENGTH <len>].

この命令では、ユーザのアクション時にカーソルが置かれていた Dynpro エレメントの名称が移送されます。カーソルがいずれかの項目に置かれていた場合は SY-SUBRC 0 に設定され、それ以外の場合は 4 に設定されます。

GET CURSOR 命令のオプションには、次の機能があります。

        OFFSET を指定した場合、Dynpro エレメント内のカーソル位置が変数 <off> に書き込まれます。

        LINE では、カーソルがテーブルコントロールに置かれている場合に、テーブルの行番号が変数 <lin> に書き込まれます。カーソルがテーブルコントロールに置かれていなかい場合、<lin> はゼロに設定されます。

        VALUE では、Dynpro 項目の内容が表示形式で ( つまりそのすべての書式設定文字と共に) 文字列として変数<val> に書き込まれます。

        LENGTH では、Dynpro 項目の表示長が変数 <len> に書き込まれます。

例

Dynpro 上のカーソル位置

PROGRAM DEMO_DYNPRO_GET_CURSOR.

DATA: OK_CODE LIKE SY-UCOMM,
      SAVE_OK LIKE OK_CODE.

DATA: INPUT_OUTPUT(20) TYPE C,
      FLD(20) TYPE C,
      OFF     TYPE I,
      VAL(20) TYPE C,
      LEN     TYPE I.

CALL SCREEN 100.

MODULE INIT_SCREEN_0100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.
ENDMODULE.

MODULE USER_COMMAND_0100 INPUT.
  SAVE_OK = OK_CODE.
  CLEAR OK_CODE.
  CASE SAVE_OK.
    WHEN 'CANCEL'.
      LEAVE PROGRAM.
    WHEN 'SELE'.
      GET CURSOR FIELD FLD OFFSET OFF VALUE VAL LENGTH LEN.
    ENDCASE.
ENDMODULE.

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

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

エレメント一覧の該当の部分は次のとおりです。

名称

書式

テキスト

機能コード

TEXT1

テキスト

 

入力

 

INPUT_OUTPUT

入出力

CHAR

 

 

TEXT2

テキスト

 

名称

 

FLD

入出力

CHAR

 

 

TEXT3

テキスト

 

オフセット

 

OFF

入出力

INT4

 

 

TEXT4

テキスト

 

内容

 

VAL

入出力

CHAR

 

 

TEXT5

テキスト

 

長さ

 

LEN

入出力

INT4

 

 

EXIT_BUTTTON

 

取消

CANCEL

OK_CODE

OK

OK

 

 

入出力項目の入力属性は、INPUT_OUTPUT 項目以外はすべて無効に設定されています。

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

PROCESS BEFORE OUTPUT.
  MODULE INIT_SCREEN_0100.

PROCESS AFTER INPUT.
  MODULE USER_COMMAND_0100.

モジュール INIT_SCREEN_100 では、PBO イベント時に GUI ステータス STATUS_100 が設定されます。このステータスでは、取消アイコン このグラフィックは添付のテキストに説明されています (F12) が機能コード CANCEL で有効に設定され、機能キー F2 が機能コード SELE で有効になっています。

プログラムを実行すると、ユーザは任意の Dynpro エレメントをダブルクリックによって選択するか、または機能コード SELE に接続された任意の Dynpro エレメントを使用することができます。Dynpro 上の出力項目にはカーソルの位置が戻ります。 

 

 

 

 

 

コンテンツフレーム終了