개발자愛/SAP
[ABAP] 팝업 창을 이용 - 유저로 부터 File Path 요청하기
밋첼™
2009. 12. 11. 02:12
쉽게 사용하던 것으로 파일 명까지 물어보았으나,
단순히 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

이 경우는 버튼에 이벤트를 걸어둔 것.
단순히 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

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