아래의 펑션을 사용할때.. 컬럼의 데이타가 32char 로 제한 됩니다.
일반적인 데이타는 사용 가능하나..
롱 텍스트가 존재하는 경우 문제가 걸리겠져?
그럴경우 아래 펑션을 카피해서 Add-On 으로 만들어 사용하시면 됩니다.
tables 의 intern 이란 테이블의 타입중 row, col, value
의 value에 해당하는 Structure를 생성하여 변경하면
어떠한 경우에도 사용 가능 합니다. !!!
>
> CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
> EXPORTING
> FILENAME = P_FILENAME
> I_BEGIN_COL = LO_START_COL
> I_BEGIN_ROW = LO_START_ROW
> I_END_COL = LO_END_COL
> I_END_ROW = LO_END_ROW
> TABLES
> INTERN = LO_ITAB
> EXCEPTIONS
> INCONSISTENT_PARAMETERS = 1
> UPLOAD_OLE = 2.
>
*-- 업로드할 엑셀 파일을 TXT 파일(탭으로 분리된)로 내리지 않고
컬럼 헤더 텍스트가 있는 ROW를 없애고 순수 데이타만으로된 엑셀 파일을
그대로 올리는 프로그램
기본적으로 KCDE_CELLS 타입의 INTERNAL TABLE을 생성하고 이테이블에는
한개의 레코드가 한라인을 생성되는 것이 아니라
엑셀파일의 ROW/COLUMN 정보와 해당 컬럼(셀)의 데이타를 가진 테이블로
업로드되며
이 업로드된 테이블을 LOOPing 하면서 실제 저장될 INTERNAL TABLE에
컴포넌트로 어사인하여 값을 넣으면 만사 오케이! ^____^;
*---------------------------------------------- Created by SeungLyong Lee
^&^ 필드심볼 잘 사용하면 즐코딩 할 수 있습니당..
*&------------------------------------------------------------------*
*& Form F_EXCEL_UPLOAD
*&------------------------------------------------------------------*
FORM F_EXCEL_UPLOAD TABLES P_TABLE
USING P_FILENAME LIKE RLGRAP-FILENAME.
DATA : LO_ITAB TYPE KCDE_CELLS OCCURS 0 WITH HEADER LINE.
DATA : LO_INDEX like sy-tabix.
DATA : LO_START_COL TYPE I VALUE '1',
LO_START_ROW TYPE I VALUE '1',
LO_END_COL TYPE I VALUE '256',
LO_END_ROW TYPE I VALUE '65536'.
FIELD-SYMBOLS : <LO_FS>.
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = P_FILENAME
I_BEGIN_COL = LO_START_COL
I_BEGIN_ROW = LO_START_ROW
I_END_COL = LO_END_COL
I_END_ROW = LO_END_ROW
TABLES
INTERN = LO_ITAB
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2.
IF SY-SUBRC NE 0.
MESSAGE E000(ZMPS) WITH 'File Upload Failed !'(E10).
STOP.
ENDIF.
CHECK NOT LO_ITAB[] IS INITIAL.
SORT LO_ITAB BY ROW COL.
LOOP AT LO_ITAB.
MOVE : LO_ITAB-COL TO LO_INDEX.
ASSIGN COMPONENT LO_INDEX OF STRUCTURE P_TABLE TO <LO_FS>.
MOVE : LO_ITAB-VALUE TO <LO_FS>.
AT END OF ROW.
APPEND P_TABLE.
CLEAR P_TABLE.
ENDAT.
ENDLOOP.
ENDFORM. " F_EXCEL_UPLOAD