PR

【ABAP】検索ヘルプの付与(VALUE-REQUEST)を3分で解説

ABAP

特定の画面項目でF4ヘルプを要求した際にカスタマイズされた検索ヘルプを表示する方法(ON VALUE-REQUEST)を解説します。

検索ヘルプとは、選択画面の各項目に値を入力する際に、値入力をアシストしてくれる機能のこと。

検索ヘルプ,SAP

通常、検索ヘルプはディクショナリオブジェクトに割り当てることによって付与するのが一般的ですが、ここではプログラム中で検索ヘルプを付与する方法を解説します。

検索ヘルプの利用方法・登録方法は以下の記事をご参照ください。

このページで学べる内容
  • 前提:イベントブロックとは?(AT SELECTION-SCREEN)
  • 検索ヘルプの付与方法(VALUE-REQUEST)
  • 検索ヘルプを利用したサンプルコード

ABAPerを目指す方であれば知っておきたい重要知識です。是非最後までご覧ください。

スポンサーリンク

前提:イベントブロックとは?

検索ヘルプを付与する方法を正確に理解するためには、イベントブロックについての理解が必須のため、ここではイベントブロックについて簡単におさらいしておきます。

前提 イベントブロックとは、一言で言うとイベントを定義した1つの塊です。

ABAP イベントブロック
イベントとは?

ユーザによるキーボードの操作マウスのクリックなどによって、システムに何らかの変更が加えられシステムの状態が変化する出来事のことです。

例えば・・・

「”Enter”ボタンを押す」

「"戻るボタン" をマウスでクリックする」

「"選択画面" が表示される」

上記のようなシステムに対する何らかのアクション・何らかのリクエストをイベントと総称します。

今回解説する「AT SELECTION-SCREEN ON VALUE-REQUEST」は「ユーザが〇〇項目の検索ヘルプを利用したとき」というイベントを示します。

そのイベントが実行された場合に動くポップアップ画面等を用意しておくイメージです。

このページでは、検索ヘルプイベントの定義方法の解説がメインとなりますので、イベントブロックについて1から学習したいという方は以下の記事をご覧ください。

 AT SELECTION-SCREEN ON VALUE-REQUEST

検索ヘルプを付与するには、「〇〇項目の検索ヘルプが呼び出されたとき」というイベントを作成します。構文ルールは以下の通り。

AT SELECTION-SCREEN ON VALUE-REQUEST FOR <input_field>.

実際のサンプルコードがこちら。

* アップロードファイルの画面項目
SELECTION-SCREEN BEGIN OF LINE.
  SELECTION-SCREEN COMMENT (10) TEXT-S01 FOR FIELD P_FLNM.
  PARAMETERS P_FLNM TYPE STRING.
SELECTION-SCREEN END OF LINE.

* 検索ヘルプの付与
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FLNM.
  " 検索ヘルプが呼び出されたときの処理↓
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    CHANGING
      FILENAME = LV_FILENAME
      PATH     = LV_PATH
      FULLPATH = P_FLNM.   

PARAMETERS命令で定義した画面項目に対して、「当該項目のヘルプが呼び出されたとき」というイベントを定義しています。(以下の部分)

* 検索ヘルプの付与
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FLNM.

その際、このイベントブロックの配下に記述されているクラスが実行される、という仕組みです。

  " 検索ヘルプが呼び出されたときの処理↓
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    CHANGING
      FILENAME = LV_FILENAME
      PATH     = LV_PATH
      FULLPATH = P_FLNM.   

もう1個別のサンプルコードを記載しておきます。

REPORT ZSAMPLE.

PARAMETERS: p_purch_order TYPE EKKO-EBELN.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_purch_order.
  DATA: lt_ekko TYPE TABLE OF EKKO,
        ls_ekko TYPE EKKO,
        lv_selected TYPE EKKO-EBELN.

  SELECT * FROM EKKO INTO TABLE lt_ekko.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'EBELN'
      value_org       = 'S'
    TABLES
      value_tab       = lt_ekko
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.

  IF sy-subrc = 0.
    READ TABLE lt_ekko WITH KEY EBELN = lv_selected INTO ls_ekko.
    IF sy-subrc = 0.
      p_purch_order = ls_ekko-EBELN.
    ENDIF.
  ENDIF.

このサンプルコードでは、選択画面で「p_purch_order」パラメータのF4ヘルプが要求されたときに、「AT SELECTION-SCREEN ON VALUE-REQUEST」イベントがトリガーされます。

データベースから購入オーダーの一覧(EKKOテーブル)を取得し、標準検索ヘルプ関数「F4IF_INT_TABLE_VALUE_REQUEST」を呼び出す仕組みです。

ディクショナリ入力ヘルプが存在する場合

画面項目に検索ヘルプが紐づいている場合(これをディクショナリ入力ヘルプと呼びます)、上記で説明したようなコードは不要です。

SAP,検索ヘルプ

上記「会社コード」項目は、ディクショナリを参照していますが、そのディクショナリには検索ヘルプが付与されているため、特段の設定をせずとも検索ヘルプが利用可能な状態になっています。

さて、この場合「VALUE-REQUEST」で検索ヘルプを付与するとどうなるでしょうか。

* 画面項目「会社コード」
PARAMETERS P_BURKS TYPE BUKRS.

* 検索ヘルプの付与
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_BUKRS.
  " 検索ヘルプが呼び出されたときの処理↓
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      FILE_NAME = P_BUKRS.

結果は、ディクショナリ入力ヘルプよりも、「VALUE-REQUEST」の検索ヘルプが勝ちます。つまり、上記のサンプルコードを実行した場合、会社コードの入力ヘルプではなく、ファイル選択のヘルプが呼び出されます。(結果が言わずもがなエラーです。)

あまり、利用する機会はないものの一応頭に入れておくと良いかと思います。

SAP/ABAPを1から勉強したい方は

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPBASISSAP
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました