안녕하세요 많은 도움 받고 있습니다. 감사합니다.
이번에 부딪친 문제는요..
KCD_EXCEL_OLE_TO_INT_CONVERT
펑션을 사용사여 엑셀파일을 업로드 하고 있습니다.
헌데 이 펑션의 import 값중 I_END_ROW 유형이 4자리로 되어 있어..
엑셀의 행 수가 10000건이 넘으면
ROW값이 9999 의 다음값은 0000 이 들어가버리게 됩니다. 하여 데이터들이 겹치게 됩니다..
어떤 방법으로 만건이상의 엑셀파일을 업로드 할 수 있을지 알려주세요!!
감사합니다.!!!
댓글 5
-
해처리
2009.10.21 22:05
-
MadMax
2009.10.22 17:38
KCD_EXCEL_OLE_TO_INT_CONVERT 복사해서 새로 만드세요..
Function parameters 에 assign 되어 있는 structure 변경해야 합니다..
-
페리
2009.10.23 01:31
I_BEGIN_ROW = 1.
I_END_ROW = 5000.
DO.
CLEAR: LT_EXCEL, LT_EXCEL[].
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = LV_FILENAME
I_BEGIN_COL = 1
I_BEGIN_ROW = I_BEGIN_ROW
I_END_COL = 200
I_END_ROW = I_END_ROW
TABLES
INTERN = LT_EXCEL[]
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF LT_EXCEL[] IS INITIAL.
EXIT.
ENDIF.
SORT LT_EXCEL BY ROW COL.
LOOP AT LT_EXCEL.
MOVE LT_EXCEL-COL TO L_INDEX.
ASSIGN COMPONENT L_INDEX OF STRUCTURE T_OUTTAB TO.
MOVE LT_EXCEL-VALUE TO.
AT END OF ROW.
APPEND T_OUTTAB. CLEAR : T_OUTTAB.
ENDAT.
ENDLOOP.
ADD 5000 TO I_BEGIN_ROW.
ADD 5000 TO I_END_ROW.
ENDDO.
전 이렇게 했답니다. -
츄리닝
2009.10.24 00:25
일단은 급해서 쪼개서 했는데요 ㅋㅋ
페리님처럼..하면 될꺼같네요!!
역쉬 머리를 굴려야하겠어요^-^
감사합니당!!!^-^ -
쿵푸ㅋ
2011.01.03 23:06
row가 4자리까지라서 9999건 이상일때는 앞 자리가 잘려서나오는 경우 말씀이시죠?
예) 21477 => 1477
그래서 9999건 이상일 때는 row 필드 길이를 늘린 itab에 옮겨서 썼어요.
ROW 필드에는 SY-TABIX 값을 넣어서 옮겼습니다.
TYPE-POOLS: kcde.
DATA: it_excel TYPE STANDARD TABLE OF kcde_intern_struc ,
is_excel TYPE kcde_intern_struc.
TYPES: BEGIN OF st_cells,
row(10) TYPE n,
col TYPE kcde_cells-col,
value TYPE kcde_cells-value,
END OF st_cells.
DATA: gt_cells TYPE TABLE OF st_cells,
gs_cells TYPE st_cells,
lv_tabix TYPE sy-tabix.
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
filename =
'C:DOCUMENTS AND SETTINGSADMINISTRATOR바탕 화면TEST.XLSX'
i_begin_col = 1
i_begin_row = 1
i_end_col = 1
i_end_row = 21000
TABLES
intern = it_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
CLEAR: is_excel, gs_cells.
LOOP AT it_excel INTO is_excel.
CLEAR lv_tabix. lv_tabix = sy-tabix.
MOVE-CORRESPONDING is_excel TO gs_cells.
IF lv_tabix > 9999.
gs_cells-row = lv_tabix.
ENDIF.
APPEND gs_cells TO gt_cells.
CLEAR: is_excel, gs_cells.
ENDLOOP.
본인한테 가장 편한 방법을 사용하면 되겠지만 쪼개서 쓰는 거보다 간편한 것 같아서요.
파라미터 ype이 "I" 타입이라 숫자 4자리 이상 들어갈거 같은데요?
혹시 넘겨주는 값의 변수 타입이 4자리 아닌가요?