- Create Date : 2011-01-03
- Change Date : 2011-01-03
잡담 -ㅂ-;
D제약회사에 플젝을 왔더니 오늘만 비타민 드링크 2개 째다...
이러다 중독 되면 안 되는뎅... ㄷㄷㄷ
파일다운로드 하는 방법으로 SMW0 의 Object를 사용하는 방법이다.
아래 소스로 ... ㅎ
아.. 다운로드 후 바로 실행하는 부분은 주석 처리 한다.
excel 프로세스는 떴는데, 닫히지가 않네, 나중에 보완해야겠다.
*&---------------------------------------------------------------------*
*& Report Z0010
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z0010 MESSAGE-ID ZMSD.
tables: t001, sscrfields.
TYPE-POOLS: ole2,
icon.
*----------------------------------------------------------------------*
* OLE VARIABLES * EXCEL DOWNLOAD
*----------------------------------------------------------------------*
DATA : ty_excel TYPE ole2_object, " Excel object
ty_font TYPE ole2_object, " font
ty_workbook TYPE ole2_object, " list of workbooks
ty_sheet TYPE ole2_object, " workbook's sheets
ty_activesheet TYPE ole2_object, " Active Sheet
ty_cells TYPE ole2_object, " Cells
ty_range TYPE ole2_object,
ty_cfrom TYPE ole2_object,
ty_cto TYPE ole2_object,
ty_application TYPE ole2_object.
DATA: func_a LIKE smp_dyntxt.
DATA : g_key LIKE wwwdatatab.
*DATA : i_key TYPE w3objid.
DATA : gt_html LIKE w3html OCCURS 100 WITH HEADER LINE,
gt_mime LIKE w3mime OCCURS 100 WITH HEADER LINE.
DATA : gv_fname LIKE rlgrap-filename, "VALUE
* 'D:\POSTING_GL_BALANCE.XLS',
gv_fname_tmp TYPE string,
gv_fsize TYPE i.
SELECTION-SCREEN BEGIN OF BLOCK bl01 WITH FRAME TITLE text-t01.
PARAMETERS : p_fname LIKE rlgrap-filename DEFAULT 'C:\' OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bl01.
INITIALIZATION.
func_a-text = 'Download Excel'.
func_a-icon_id = icon_xls.
func_a-icon_text = 'Download Excel'.
sscrfields-functxt_02 = func_a.
SELECTION-SCREEN FUNCTION KEY 2.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'FC02'.
* MESSAGE S000 WITH 'TEST'.
perform find_folder.
PERFORM excel_download.
ENDIF.
START-OF-SELECTION.
WRITE `end of download`.
*&---------------------------------------------------------------------*
*& Form EXCEL_DOWNLOAD
*&---------------------------------------------------------------------*
FORM excel_download .
DATA : i_key TYPE w3objid VALUE 'ZSDR1030ZY'. " SMW0에서 관리
************************************************************************
* Server의 Template File 가져오기
************************************************************************
" Template File 정보
CLEAR: g_key.
SELECT SINGLE f~relid
f~objid
f~checkout
f~checknew
f~chname
f~tdate
f~ttime
f~text
p~devclass
INTO CORRESPONDING FIELDS OF g_key
FROM wwwdata AS f
JOIN tadir AS p
ON f~objid = p~obj_name
WHERE f~srtf2 = 0
AND f~relid = 'MI'
AND p~pgmid = 'R3TR'
AND p~object = 'W3MI'
AND p~obj_name = i_key.
CHECK sy-subrc = 0.
" Template File 읽기
REFRESH : gt_html, gt_mime.
CALL FUNCTION 'WWWDATA_IMPORT'
EXPORTING
key = g_key
TABLES
html = gt_html
mime = gt_mime
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc = 0.
************************************************************************
* Template File을 Local PC로 Download
************************************************************************
gv_fname_tmp = gv_fname.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = gv_fname_tmp
filetype = 'BIN'
bin_filesize = gv_fsize
TABLES
data_tab = gt_mime.
* PERFORM excel_init.
*
*
** Excel Write
*
** SHEET 선택
*
* CALL METHOD OF ty_excel 'Worksheets' = ty_sheet
* EXPORTING
* #1 = 'Sheet1'.
* CALL METHOD OF ty_sheet 'Activate'. "sheet 활성화
*
* SET PROPERTY OF ty_excel 'Visible' = 1.
ENDFORM. " EXCEL_DOWNLOAD
*&---------------------------------------------------------------------*
*& Form EXCEL_INIT
*&---------------------------------------------------------------------*
FORM excel_init .
CREATE OBJECT ty_excel 'EXCEL.APPLICATION'.
* get list of workbooks, initially empty
CALL METHOD OF ty_excel 'WORKBOOKS' = ty_workbook.
GET PROPERTY OF ty_workbook 'Application' = ty_application.
* get list of workbooks, initially empty
CALL METHOD OF ty_workbook 'OPEN'
EXPORTING #1 = gv_fname.
ENDFORM. " EXCEL_INIT
*&---------------------------------------------------------------------*
*& Form FIND_FOLDER
*&---------------------------------------------------------------------*
FORM find_folder .
* data: pFolder like rlgrap-filename.
CLEAR gv_fname.
DATA: objfile TYPE REF TO cl_gui_frontend_services.
DATA: pickedfolder TYPE string.
DATA: initialfolder TYPE string.
CREATE OBJECT objfile.
IF NOT gv_fname IS INITIAL.
initialfolder = gv_fname.
ELSE.
objfile->get_temp_directory( CHANGING temp_dir = initialfolder
EXCEPTIONS cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3 ).
ENDIF.
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.
CONCATENATE pickedfolder '\test123.XLS'
INTO gv_fname.
* gv_fname = pickedfolder.
ELSE.
MESSAGE s000 WITH'An error has occured picking a folder'
DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " FIND_FOLDER
'ABAP 물타기 > Report' 카테고리의 다른 글
Modify Screen 1000 (0) | 2011.01.19 |
---|---|
year month select-optoins (0) | 2011.01.12 |
Possible Entry (0) | 2010.10.26 |
SELECT-OPTIONS 비활성화 및 기본값 주기 (0) | 2010.09.13 |
Message ID (0) | 2010.07.11 |