特定の画面項目へ検索ヘルプを利用する方法(ON VALUE-REQUEST)を解説します。
検索ヘルプとは、選択画面の各項目に値を入力する際に、値入力をアシストしてくれる機能のこと。

通常、検索ヘルプはディクショナリオブジェクトに割り当てることによって付与するのが一般的ですが、ここではプログラム中で検索ヘルプを付与する方法を解説します。
検索ヘルプの利用方法・登録方法は以下の記事をご参照ください。
ABAPerであれば知っておきたい重要知識です。是非最後までご覧ください。
前提:イベントブロックとは?
検索ヘルプを付与する方法を正確に理解するためには、イベントブロックについての理解が必須のため、ここではイベントブロックについて簡単におさらいしておきます。
イベントブロックとは、一言で言うとイベントを定義した1つの塊です。

ユーザによるキーボードの操作、マウスのクリックなどによって、システムに何らかの変更が加えられシステムの状態が変化する出来事のことです。
例えば・・・
「”Enter”ボタンを押す」
「"戻るボタン" をマウスでクリックする」
「"選択画面" が表示される」
今回、検索ヘルプを作成するには「ユーザが〇〇項目の検索ヘルプを利用したとき」というイベントを定義し、そのイベントが実行された場合に動くポップアップ画面等を用意しておくイメージです。
このページでは、検索ヘルプイベントの定義方法の解説がメインとなりますので、イベントブロックについて1から学習したいという方は以下の記事をご覧ください。
AT SELECTION-SCREEN ON VALUE-REQUEST
検索ヘルプを付与するには、「〇〇項目の検索ヘルプが呼び出されたとき」というイベントを作成します。構文ルールは以下の通り。
AT SELECTION-SCREEN ON VALUE-REQUEST FOR(選択項目).
* アップロードファイルの画面項目 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.
ディクショナリ入力ヘルプが存在する場合
画面項目に検索ヘルプが紐づいている場合(これをディクショナリ入力ヘルプと呼びます)、上記で説明したようなコードは不要です。

上記「会社コード」項目は、ディクショナリを参照していますが、そのディクショナリには検索ヘルプが付与されているため、特段の設定をせずとも検索ヘルプが利用可能な状態になっています。
さて、この場合「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から勉強したい方は
SAP/ABAPを1から学習したい初心者の方向けに、できるだけ網羅的にABAPが理解できるよう以下ページに知識体系を整理しています。
特に初心者のうちは、どこから学べばよいか?どう勉強すれば良いか?すらわからない状態になりがち。
ある程度の知識を持ったうえで、はじめて実践的な理解へとつながります。
是非、一度ご覧になってみてください。