brunch

You can make anything
by writing

C.S.Lewis

by 동네아밥 Jul 08. 2021

로컬파일 열기 / SMW0 다운로드 기본소스

이것도 막상 찾으려면 뭔가 더러운 소스밖에 없던데요

진짜 필요해서 막상 찾으려면 소스들이 다 엉망진창와장창인 경우가 많아서 (특히 마스크)

이거 걍 복붙해서 쓰련다.


엑셀 업로드는 각 사이트에 있는거 쓰자. 


로컬파일 열기

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.

작가의 이전글 ALV 스타일 컨트롤
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari