2008년 06월 17일
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 | 2008/06/17 04:12 | Report | 트랙백 | 덧글(0)














☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]