ABAP 検索ヘルプ(F4)でサーバーのァイル一覧を表示

  選択画面&イベント

概要

アドオンプログラムでサーバーへのファイル入出力のプログラムを作る場合に使用する事ができる検索ヘルプについて記載。
サーバーを使用する場合はバックエンドの処理が多いと考えられるので使用頻度は高くないと思うが、こうゆう事もできるんだなという事だけ認識しておけばいいだろう。

サンプルコード

SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-t01.
PARAMETERS:
  p_serve      TYPE dxfields-longpath OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b01.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_serve.

*** Get application host ****
DATA: instancenumber  LIKE  instanz-systemnr,
      destination TYPE  string,
      rfcsi_export  LIKE  rfcsi.

CALL FUNCTION 'GET_SYSTEM_NUMBER'
  IMPORTING
    instancenumber = instancenumber.

CONCATENATE sy-host '_' sy-sysid '_' instancenumber INTO destination.
CONDENSE destination NO-GAPS.
*** Get application host ****

DATA: lv_dir TYPE dxfields-longpath VALUE '/usr/sap/trans/'.
DATA: lv_mask TYPE dxfields-filemask VALUE '*.*'.
DATA: lv_host type MSXXLIST-NAME.

lv_host = destination.
CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
  EXPORTING
    I_LOCATION_FLAG       = 'A'
    I_SERVER              = lv_host
    I_PATH                = lv_dir
    FILEMASK              = lv_mask
*   FILEOPERATION         = 'R'
  IMPORTING
*   O_LOCATION_FLAG       =
*   O_SERVER              =
    O_PATH                = p_serve
*   ABEND_FLAG            =
* EXCEPTIONS
*   RFC_ERROR             = 1
*   ERROR_WITH_GUI        = 2
*   OTHERS                = 3
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

補足

通常AL11等でサーバーのディレクトリを確認した際は使用しないものも見えると思う。実際ユーザーに開放する際は
特定のディレクトリのみ見せる方が良い為、変数:lv_dirに最初にアクセスするパスを記述している。
変数:lv_hostに何も値をセットしない場合、アプリケーションサーバーが一つであっても「どのサーバーにするか?」というポップアップが表示される。
その為、サーバー名を変数:destinationに自作してそれを設定している。

ローカルのファイルを検索する場合はこちらを参照