天天看點

ABAP用FILE_OPEN_DIALOG打開多個檔案後列印出名稱

  此執行個體将示範用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對象

  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

        MULTISELECTION          = 'X'

      CHANGING

        file_table                      = lt_file_names[]

        rc                                 = lv_subrc  "打開檔案的數量

        file_open_dialog_failed = 1

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

    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.

   IF my_file_table IS INITIAL.

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

        EXIT.

    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.

繼續閱讀