您的位置:首页 > 运维架构

ABAP用FILE_OPEN_DIALOG打开多个文件后打印出名称

2015-01-22 16:50 351 查看
此实例将演示用CL_GUI_FRONTEND_SERVICES下的静态方法FILE_OPEN_DIALOG打开多个文件后打印出打开文件的名称。具体程式如下。

  DATA FILE_TABLE TYPE FILE_TABLE. "引用FILE_TABLE对象

  *SELECT-OPTIONS:i_file FOR FILE_TABLE NO INTERVALS.

  DATA: lt_file_names TYPE FILETABLE,

   lwa_file_name LIKE LINE OF lt_file_names,

   lv_subrc TYPE I.

  SELECT-OPTIONS: i_file FOR FILE_TABLE NO INTERVALS.

  AT SELECTION-SCREEN ON VALUE-REQUEST FOR i_file-low.

   CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

   EXPORTING

  * WINDOW_TITLE =

  * DEFAULT_EXTENSION =

  * DEFAULT_FILENAME =

  * FILE_FILTER =

   INITIAL_DIRECTORY = 'd:temp'

   MULTISELECTION = 'X'

   CHANGING

  file_table = lt_file_names[]

   rc = lv_subrc "打开文件的数量

  * USER_ACTION =

   EXCEPTIONS

   file_open_dialog_failed = 1

   cntl_error = 2

  error_no_gui = 3

   OTHERS = 4.

  IF sy-subrc <> 0.

  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

  i_file-sign = 'I'.

  i_file-option = 'EQ'.

  LOOP AT lt_file_names INTO lwa_file_name.

   i_file-low = lwa_file_name.

  APPEND i_file.

  ENDLOOP.

  START-OF-SELECTION.

   WRITE:'打开文件的数量:',lv_subrc LEFT-JUSTIFIED.

   LOOP AT i_file.

   WRITE: / i_file-low.

   ENDLOOP.

  程序运行如下:

  

  以下代碼功能與上面的類似:

  

  "DATA FILE_TABLE TYPE FILE_TABLE. "引用FILE_TABLE对象

  *SELECT-OPTIONS:i_file FOR FILE_TABLE NO INTERVALS.

  DATA: lt_file_names TYPE FILETABLE,

   lwa_file_name LIKE LINE OF lt_file_names,

   lv_subrc TYPE I.

  DATA:BEGIN OF i_file_table OCCURS 0,

   i_file_name TYPE STRING,

  END OF i_file_table.

  DATA:my_file_table LIKE STANDARD TABLE OF i_file_table,

   my_wa_file_table LIKE LINE OF my_file_table.

  PARAMETERS: i_file LIKE FILE_TABLE OBLIGATORY LOWER CASE. "RLGRAP-FILENAME

  AT SELECTION-SCREEN ON VALUE-REQUEST FOR i_file.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

   EXPORTING

  * WINDOW_TITLE =

  * DEFAULT_EXTENSION =

  * DEFAULT_FILENAME =

  * FILE_FILTER =

   INITIAL_DIRECTORY = 'd:temp'

   MULTISELECTION = 'X'

   CHANGING

   file_table = lt_file_names[]

  rc = lv_subrc "打开文件的数量

  * USER_ACTION =

   EXCEPTIONS

  file_open_dialog_failed = 1

   cntl_error = 2

  error_no_gui = 3

   OTHERS = 4.

  IF sy-subrc <> 0.

   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

   ENDIF.

   READ TABLE lt_file_names INDEX 1 INTO lwa_file_name.

  i_file = lwa_file_name.

   LOOP AT lt_file_names INTO lwa_file_name.

   "i_file_table-i_file_name = lwa_file_name. "有表頭

   "APPEND i_file_table.

   my_wa_file_table-i_file_name = lwa_file_name.

   APPEND my_wa_file_table TO my_file_table.

  CLEAR my_wa_file_table.

  ENDLOOP.

  START-OF-SELECTION.

   IF my_file_table IS INITIAL.

     MESSAGE 'IMPORT FILES IS EMPTY' TYPE 'S'.

     EXIT.

   ENDIF.

  WRITE:'打开文件的数量:',lv_subrc LEFT-JUSTIFIED.

  * LOOP AT i_file_table. "有表頭

  * WRITE: / i_file_table-i_file_name.

  * ENDLOOP.

   LOOP AT my_file_table INTO my_wa_file_table.

   WRITE: / my_wa_file_table-i_file_name.

  ENDLOOP.

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: