파일 경로 가져오기 (+ 바탕화면 지정)

happyivory·2023년 11월 10일
0

EXCEL

목록 보기
2/3
post-thumbnail

INCLUDE ZTEST_FILEPATH_SEL.

PARAMETERS: P_FILE1 TYPE RLGRAP-FILENAME DEFAULT 'C:\',
            P_FILE2 TYPE RLGRAP-FILENAME DEFAULT 'C:\'.

1. 사용자가 파일 경로만 선택할 수 있도록

PERFORM GET_FILEPATH1 USING P_FILE1.

FORM GET_FILEPATH1 USING PV_FILE.

  DATA : LD_INITIAL_FOLDER TYPE STRING,
         LD_WINDOW_TITLE   TYPE STRING,
         LD_SELECTED       TYPE STRING.

  LD_WINDOW_TITLE = '디렉토리 경로'.

* 폴더에 다운로드
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE
    EXPORTING
      WINDOW_TITLE         = LD_WINDOW_TITLE    "제목
      INITIAL_FOLDER       = LD_INITIAL_FOLDER
    CHANGING
      SELECTED_FOLDER      = LD_SELECTED
    EXCEPTIONS
      CNTL_ERROR           = 1
      ERROR_NO_GUI         = 2
      NOT_SUPPORTED_BY_GUI = 3
      OTHERS               = 4.

  PV_FILE = LD_SELECTED.

ENDFORM.

결과 화면

2. 사용자가 파일 경로 & 파일명 입력하게끔

PERFORM GET_FILEPATH2 USING P_FILE2.

FORM GET_FILENAME2  USING PV_FILE.

  DATA : LT_FILE_TABLE  TYPE FILETABLE,
         LS_FIEL_TABLE  TYPE FILE_TABLE,
         LV_FILE_FILTER TYPE STRING,
         LV_SUBRC       TYPE I,
         LV_ACTION      TYPE I.

  CLEAR : LT_FILE_TABLE, LT_FILE_TABLE[],
          LS_FIEL_TABLE,
          LV_FILE_FILTER,
          LV_SUBRC,
          LV_ACTION.

  CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
        " Microsoft Excel 파일(*.XLS;*.XLSX;*.XLSM)|*.XLS;*.XLSX;*.XLSM|
              CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL
        " 모든 파일(*.*)|*.*|
         INTO LV_FILE_FILTER.

*- FIle Select
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
    EXPORTING
      WINDOW_TITLE            = 'File Path'
      DEFAULT_EXTENSION       = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
      DEFAULT_FILENAME        = ''
      FILE_FILTER             = LV_FILE_FILTER " 내가 선택할 수 있는 파일 종류
      WITH_ENCODING           = ''
*     initial_directory       = 'C:\'
      MULTISELECTION          = ' '
    CHANGING
      FILE_TABLE              = LT_FILE_TABLE
      RC                      = LV_SUBRC
      USER_ACTION             = LV_ACTION
    EXCEPTIONS
      FILE_OPEN_DIALOG_FAILED = 1
      CNTL_ERROR              = 2
      ERROR_NO_GUI            = 3
      NOT_SUPPORTED_BY_GUI    = 4
      OTHERS                  = 5.

  CALL METHOD CL_GUI_CFW=>FLUSH.

  CASE LV_ACTION.
    WHEN  CL_GUI_FRONTEND_SERVICES=>ACTION_OK.
      READ TABLE LT_FILE_TABLE INDEX 1 INTO LS_FIEL_TABLE.

      IF SY-SUBRC EQ 0.
        CLEAR : PV_FILE.

        PV_FILE = LS_FIEL_TABLE.
      ELSE.
      ENDIF.
    WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.
      EXIT.
    WHEN OTHERS.
      EXIT.
  ENDCASE.

ENDFORM.

결과 화면

+번외

기본 경로 바탕화면으로 자동 지정하기

DATA: DESKTOPDIRECTORY TYPE STRING.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_DESKTOP_DIRECTORY
  CHANGING
    DESKTOP_DIRECTORY = DESKTOPDIRECTORY.

0개의 댓글

관련 채용 정보