sap link를 이용한 데이타 다운로드

REPORT  ythrpar16.

DATA: BEGIN OF itab OCCURS 0 ,
      objname(40),
      END   OF itab.

DATA: BEGIN OF bdcdata OCCURS 0.
        INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.

DATA : lv_fname TYPE string.
DATA:  mstext(50).

DATA: in_file LIKE rlgrap-filename,
      zobject TYPE trobjtype.

DATA: count TYPE i,
      file_talbe TYPE STANDARD TABLE OF file_info,
      wa_talbe LIKE LINE OF file_talbe.

CALL METHOD cl_gui_frontend_services=>directory_list_files
  EXPORTING
    directory                   = 'C:\FILE\타모듈\'
    files_only                  = 'X'
  CHANGING
    file_table                  = file_talbe
    count                       = count
  EXCEPTIONS
    cntl_error                  = 1
    directory_list_files_failed = 2
    wrong_parameter             = 3
    error_no_gui                = 4
    not_supported_by_gui        = 5
    OTHERS                      = 6.

START-OF-SELECTION.

  LOOP AT file_talbe INTO wa_talbe.
    CLEAR: in_file, zobject.
    zobject = wa_talbe-filename+0(4).
    CONCATENATE 'C:\FILE\타모듈\' wa_talbe-filename+0(11) INTO in_file.
    PERFORM  get_data_section.
    PERFORM download_data.
  ENDLOOP.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  get_in_file
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_in_file .
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_path         = 'C:\FILE\'
      mask             = ',*.*,*.*.'
      mode             = 'O'
      title            = 'File Uploading Path'
    IMPORTING
      filename         = in_file
    EXCEPTIONS
      inv_winsys       = 01
      no_batch         = 02
      selection_cancel = 03
      selection_error  = 04.

  CASE sy-subrc.
    WHEN 1.
      MESSAGE s899(zmpp) WITH 'E : INV_WINSYS!'.
    WHEN 2.
      MESSAGE s899(zmpp) WITH 'E : NO_BATCH!'.
    WHEN 3.
      MESSAGE s899(zmpp) WITH 'E : SELECTION_CANCEL!'.
    WHEN 4.
      MESSAGE s899(zmpp) WITH 'E : SELECTION_ERROR!'.
  ENDCASE.

ENDFORM.                    " get_in_file
*&---------------------------------------------------------------------*
*&      Form  get_data_section
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data_section .
  lv_fname =   in_file.
  CLEAR itab. REFRESH itab.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename            = lv_fname
      has_field_separator = 'X'
    TABLES
      data_tab            = itab.

ENDFORM.                    " get_data_section
*&---------------------------------------------------------------------*
*&      Form  download_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM download_data .
  DATA: line TYPE i,
        pct  TYPE i,
        sytabix(4),
        t_line(4),
        t_pct(4).
  DESCRIBE TABLE itab LINES line.
  t_line = line.
  LOOP AT itab.
    pct = sy-tabix * 100 / line .
    CLEAR: mstext.
    sytabix = sy-tabix.
    t_pct = pct.
    CONCATENATE   sytabix '/' t_line ':' t_pct  '%' '진행중 >>' itab-objname
                         INTO   mstext
                         SEPARATED   BY  space.
    REFRESH bdcdata.     CLEAR bdcdata.
    PERFORM dynpro USING:
                'X'       'ZSAPLINK'      '1000',
                ' '       'BDC_OKCODE'    '=OBJ',
                'X'       'ZSAPLINK'      '1000',
                ' '       'BDC_SUBSCR'    'ZSAPLINK',
                ' '       'BDC_OKCODE'    '=UPDOWN',
                ' '       'BDC_SUBSCR'    'ZSAPLINK',
                ' '       'BDC_CURSOR'    'EXPORT',
                ' '       'IMPORT'        '',
                ' '       'EXPORT'        'X',
                'X'       'ZSAPLINK'      '1000',
                ' '       'BDC_SUBSCR'    'ZSAPLINK',
                ' '       'BDC_CURSOR'    'OBJNAME',
                ' '       'EXPORT'        'X',
                ' '       'PLUGIN'        zobject,
                ' '       'OBJNAME'       itab-objname,
                ' '       'BDC_OKCODE'    '=ONLI',
                'X'       'SAPLSWXML_IO'  '0200',
                ' '       'BDC_OKCODE'    '=CANC'.


    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'   ">Progress bar
            EXPORTING
                   percentage  =   100         ">백분율
                   text        =   mstext
            EXCEPTIONS
                   OTHERS      =   1.

    CALL TRANSACTION 'ZSAPLINK' USING     bdcdata
                                MODE     'N'
                                UPDATE   'S'.


  ENDLOOP.
ENDFORM.                    " download_data
*&---------------------------------------------------------------------*
*&      Form  dynpro
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0147   text
*      -->P_0148   text
*      -->P_0149   text
*----------------------------------------------------------------------*
FORM dynpro  USING    dynbegin name value.
  CLEAR bdcdata.
  IF dynbegin = 'X'.
    MOVE : name      TO bdcdata-program,
           value     TO bdcdata-dynpro,
           dynbegin  TO bdcdata-dynbegin.
  ELSE.
    MOVE : name      TO bdcdata-fnam,
           value     TO bdcdata-fval.
  ENDIF.
  APPEND bdcdata.
ENDFORM.                    " DYNPRO

by saper | 2008/06/17 04:12 | Report | 트랙백 | 덧글(0)

트랙백 주소 : http://saper.egloos.com/tb/478910
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶