본문 바로가기

ABAP 물타기/Report

파일다운로드 Use SMW0

  • 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