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 |