概要
アドオンプログラムでサーバーへのファイル入出力のプログラムを作る場合に使用する事ができる検索ヘルプについて記載。
サーバーを使用する場合はバックエンドの処理が多いと考えられるので使用頻度は高くないと思うが、こうゆう事もできるんだなという事だけ認識しておけばいいだろう。
サンプルコード
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に自作してそれを設定している。
ローカルのファイルを検索する場合はこちらを参照
最近のコメント