본문 바로가기

개발자愛/SAP

[ABAP] 팝업 창을 이용 - 유저로 부터 File Path 요청하기

쉽게 사용하던 것으로 파일 명까지 물어보았으나,

단순히 File 의 Path 만을 요청할 때 사용하면 유용한 Method

역시나 계속해서 잊어버리므로 메모;;;


  *-- TOP 선언부
*-- For Select Folder
DATA: OBJFILE TYPE REF TO CL_GUI_FRONTEND_SERVICES.
DATA: PICKEDFOLDER TYPE STRING.
DATA: INITIALFOLDER TYPE STRING.

*&---------------------------------------------------------------------*
*&      Form  GET_FILE_PATH
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_FILE_PATH USING P_FILE.
*-- 1. ONLY USE FILE PATH
  CREATE OBJECT OBJFILE.
  REFRESH IT_PATH.
  CLEAR : OK_PATH.

  DATA : L_INT TYPE I.
  DATA : PFOLDER LIKE RLGRAP-FILENAME.

  OBJFILE->GET_TEMP_DIRECTORY( CHANGING TEMP_DIR = INITIALFOLDER
                               EXCEPTIONS CNTL_ERROR = 1
                                         ERROR_NO_GUI = 2
                                         NOT_SUPPORTED_BY_GUI = 3 ).


  OBJFILE->DIRECTORY_BROWSE( EXPORTING INITIAL_FOLDER = INITIALFOLDER
                             CHANGING SELECTED_FOLDER = PICKEDFOLDER
                             EXCEPTIONS CNTL_ERROR = 1
                                        ERROR_NO_GUI = 2
                                        NOT_SUPPORTED_BY_GUI = 3 ).


  IF SY-SUBRC = 0.
    PFOLDER = PICKEDFOLDER.
    L_INT = STRLEN( PFOLDER ).
    "국가별로 다르나 Length 제한
    IF L_INT > 40.
      MESSAGE E001 WITH 'The file path is too long! Select simple path!'.
      OK_PATH = 'X'.
      CLEAR : OK_CODE, SAVE_CODE.
      EXIT.
    ELSEIF L_INT = 0.
      MESSAGE E001 WITH 'You have to select folder.'.
      OK_PATH = 'X'.
      CLEAR : OK_CODE, SAVE_CODE.
      EXIT.
    ENDIF.

    MOVE : PFOLDER TO IT_PATH-PATH.
    APPEND IT_PATH.
  ELSE.
    MESSAGE S001 WITH 'An error has occured picking a folder' DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM. " GET_FILE_PATH







이 경우는 버튼에 이벤트를 걸어둔 것.