SAP 개발을 하다보면 Excel 을 업로드 해야 할 일이 많이 있다. Excel 을 업로드 하는 함수는 여러 종류가 있는데 오늘은 GUI_UPLOAD 를 이용하는 방법을 설명하려고 한다. 다른 함수들은 사용자의 PC의 특성을 타서 실행이 안되는 경우가 있는데 이러한 경우 처리하기가 매우 까다롭다. ( Excel 업로드가 안된다고 사용자 PC 를 포멧하라고 할 수도 없다. ) GUI_UPLOAD 는 이러한 문제가 별로 발생하지 않아서 최후의 선택으로 사용한다.
TYPES TRUXS_T_TEXT_DATA(4096) TYPE C OCCURS 0. DATA : L_RAW_DATA TYPE TRUXS_T_TEXT_DATA WITH HEADER LINE. DATA : L_FILENAME TYPE STRING. CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = L_FILENAME FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = ' ' HEADER_LENGTH = 0 READ_BY_LINE = 'X' * DAT_MODE = ' ' * CODEPAGE = ' ' * IGNORE_CERR = ABAP_TRUE * REPLACEMENT = '#' * CHECK_BOM = ' ' * VIRUS_SCAN_PROFILE = * NO_AUTH_CHECK = ' ' * ISDOWNLOAD = ' ' * IMPORTING * FILELENGTH = * HEADER = TABLES DATA_TAB = L_RAW_DATA * CHANGING * ISSCANPERFORMED = ' ' EXCEPTIONS FILE_OPEN_ERROR = 1 FILE_READ_ERROR = 2 NO_BATCH = 3 GUI_REFUSE_FILETRANSFER = 4 INVALID_TYPE = 5 NO_AUTHORITY = 6 UNKNOWN_ERROR = 7 BAD_DATA_FORMAT = 8 HEADER_NOT_ALLOWED = 9 SEPARATOR_NOT_ALLOWED = 10 HEADER_TOO_LONG = 11 UNKNOWN_DP_ERROR = 12 ACCESS_DENIED = 13 DP_OUT_OF_MEMORY = 14 DISK_FULL = 15 DP_TIMEOUT = 16 OTHERS = 17. IF SY-SUBRC <> 0. MESSAGE I001 WITH '업로드 오류가 발생하였습니다.' DISPLAY LIKE 'E'. EXIT . ENDIF. * TAB 으로 구분된 내용을 잘라서 Internal Table 에 append 한다. LOOP AT L_RAW_DATA. SPLIT L_RAW_DATA AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB " Tab을 기준으로 분리 INTO LS_ITAB-FIELD1 LS_ITAB-FIELD2 LS_ITAB-FIELD3 LS_ITAB-FIELD4 APPEND : LS_ITAB TO LT_ITAB. CLEAR : LS_ITAB. ENDLOOP. * Header line 삭제 IF LT_ITAB[] IS NOT INITIAL. DELETE LT_ITAB INDEX 1. ELSE. MESSAGE I001 WITH '데이타가 존재하지 않습니다.' . ENDIF.
GUI_UPLOAD 함수의 장점은 속도가 빠르다는 것이다. 데이터의 양이 많을 경우 다른 OLE 를 사용해서 업로드하는 함수에 비해 처리 속도가 빠르다. 단점으로는 다른 함수의 경우 지정한 Internal table 에 바로 입력까지 가능하거나 Row, Col 단위의 처리가 가능하나 GUI_UPLOAD 의 경우 텍스트 형태로 업로드가 되기 때문에 하나하나 분리하여 필요에 따라 변형을 해 주어야 한다.
SAP 라는 시스템이 큰 만큼 다양한 방법이 있지만 여러 종류를 사용할 줄 알아야 문제가 생겼을 때 다른 방식으로 처리를 할 수 있을 것이다. 댓글이나 질문은 항상 환영합니다.^^
반응형
'SAP > Function' 카테고리의 다른 글
RKD_WORD_WRAP : 스트링을 글자수 대로 테이블로 잘라주는 함수 (0) | 2015.03.03 |
---|---|
저장,삭제시 확인 팝업용 함수 - POPUP_TO_CONFIRM (0) | 2014.11.17 |
ABAP DATE 를 FLOAT 으로 변환하는 함수 (0) | 2014.09.23 |
SAP WBS code 필드 Conversion 함수 (0) | 2014.08.28 |
Material Internal No 를 External No 로 변경하는 함수 (0) | 2014.08.19 |
Call Transaction 권한 체크 (0) | 2014.07.29 |
Table 조회시 Day, Select 시 TAG 으로 나오는 경우 (0) | 2014.07.28 |
ST03 Transaction 사용 내역 조회 함수 (0) | 2014.04.11 |
SE93 Tcode 에서 Package 가져오기(RS_ACCESS_PERMISSION) (0) | 2014.04.11 |
소수점 올림, 반올림, 내림 함수 (0) | 2014.03.19 |