안녕하세요..
엑셀로 업로드하여 BDC 실행하는 프로그램을 개발 중인데..
개발은 다 끝나서 성공적으로 업로드가 되었는데..
문제는 엑셀에 숫자가 아니라 '289/88R1221' 이런 형식으로 특수기호가 들어간 Data가 있으니깐...
아래 부분에서 런타임 에러가 발생하는겁니다...
이 경우 어떻게 처리해야 될지..도움 좀 부탁드려요...
감사합니다..
-------------
FIELD-SYMBOLS <ls>.
REFRESH gt_xls. CLEAR gt_xls.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 2
i_end_col = 100
i_end_row = 65536
TABLES
intern = gt_xls.
IF sy-subrc <> 0.
g_error = gc_x.
MESSAGE s171(5k).
EXIT.
ELSE.
REFRESH gt_upload. CLEAR gt_upload.
SORT gt_xls BY row col.
LOOP AT gt_xls.
AT NEW row.
CLEAR gt_upload.
ENDAT.
'
LOOP AT gt_xls.
AT NEW row.
CLEAR gt_upload.
ENDAT.
ASSIGN COMPONENT gt_xls-col OF STRUCTURE gt_upload TO <ls>.
IF sy-subrc = 0.
<ls> = gt_xls-value. <===런타임 에러 발생 부분
ENDIF.
AT END OF row.
APPEND gt_upload.
ENDAT.
ENDLOOP.
댓글 5
-
andy
2009.04.29 23:38
-
블랙아이즈
2009.04.30 00:11
좀더 자세한 설명을 부탁드리겠습니다...^^
-
테라스
2009.04.30 02:03
IF sy-subrc = 0.
<ls> = gt_xls-value. <===런타임 에러 발생 부분
ENDIF.
이 부분을
IF sy-subrc = 0.
TRY.
<ls> = gt_xls-value.
CATCH cx_sy_conversion_no_number.
CATCH cx_sy_conversion_overflow.
ENDTRY.
ENDIF.
이렇게 바꿔보시면 될거 같습니다.
인터널 테이블의 데이터 타입과 실제 엑셀파일에서 들어온 데이터의
타입이 일치하지 않아서 발생하는 문제 같네요.
-
블랙아이즈
2009.04.30 19:38
테라스님..감사합니다..위와 같이 수정하는 정상적으로 리스트에 보여지네요..감사합니다. 잘 배웠습니다..^^
그리고 답변 주신 andy님에게도 감사드립니다.
-
Will
2009.07.16 02:41
배웠습니다~ 떙큐~
CALL METHOD cl_gui_frontend_services=>gui_upload
이 메소드를 사용해 보는 건 어떠세요?
파일 내용을 itab으로 바꿔주는 메소드입니다. ^^