이것도 막상 찾으려면 뭔가 더러운 소스밖에 없던데요
진짜 필요해서 막상 찾으려면 소스들이 다 엉망진창와장창인 경우가 많아서 (특히 마스크)
이거 걍 복붙해서 쓰련다.
엑셀 업로드는 각 사이트에 있는거 쓰자.
로컬파일 열기
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
FM보다는.. 그래도 메서드가 나을 듯
옵션1) 구닥다리
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = ''
DEF_PATH = P_FILE
MASK = ' MS Excel,*.xlsx;*.xls,*.*,*.*.' " *.xls,*.xls.' " ',*.*,*.*.'
MODE = 'O' "S = Save, O = Open
TITLE = `파일 열기`
IMPORTING
FILENAME = P_FILE
EXCEPTIONS
INV_WINSYS = 01
NO_BATCH = 02
SELECTION_CANCEL = 03
SELECTION_ERROR = 04.
*얘는 마스크를 ,로 구분
옵션2) 그나마 최근
CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG(
EXPORTING
WINDOW_TITLE = 'TITLE'
DEFAULT_EXTENSION = '*.xlsx' "뭘 하던 상관없다
DEFAULT_FILENAME = 'DEFAULT_FILENAME' "뭘 하던 상관없다
FILE_FILTER = 'MS Excel (*.xlsx,*.xls)|*.xlsx;*.xls|MS Excel (*.xls)|*.xls|'
INITIAL_DIRECTORY = 'C:\TEMP\'
MULTISELECTION = ' '
CHANGING
FILE_TABLE = FILETABLE
RC = RC
).
IF RC = 1.
DATA(FULLPATH) = FILETABLE[ 1 ].
ENDIF.
*얘는 마스크를 |로 구분
*마스크|실제확장자;확장자2;...|다음항목 마스크|실제확장자;... 와 같이 작성하면 된다.
*RC는 LINES( FILETABLE)을 의미하며, 오류가 발생했으면 -1을 리턴
*어차피 하드코딩해서 파일 필터 작성하면서, 뭐하러 변수 만들어서 넣는거지?
SMW0 다운로드
DATA : ls_wwwdata_item TYPE wwwdatatab.
DATA : lt_mime LIKE w3mime OCCURS 0 WITH HEADER LINE.
DATA : lv_objid TYPE char50,
lv_filename TYPE string,
lv_path TYPE string,
lv_full TYPE string,
lv_fullpath TYPE rlgrap-filename,
lv_excelv_name TYPE rcgfiletr-ftfront,
lv_filesize(10),
lv_size TYPE i.
SELECT SINGLE * FROM wwwdata
INTO CORRESPONDING FIELDS OF ls_wwwdata_item
WHERE objid = lv_objid.
CALL FUNCTION 'WWWDATA_IMPORT'
EXPORTING
key = ls_wwwdata_item
TABLES
mime = lt_mime
EXCEPTIONS
wrong_object_type = 1
import_error = 2
OTHERS = 3.
CALL FUNCTION 'WWWPARAMS_READ'
EXPORTING
relid = ls_wwwdata_item-relid
objid = ls_wwwdata_item-objid
name = 'FILESIZE'
IMPORTING
value = lv_filesize
EXCEPTIONS
entry_not_exists = 1.
lv_size = lv_filesize.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_extension = 'xlsx'
CHANGING
filename = lv_filename
path = lv_path
fullpath = lv_full.
lv_fullpath = lv_full.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_wwwdata_item
destination = lv_fullpath.
lv_excelv_name = lv_fullpath.