클립보드 방식의 엑셀 업로드 함수(ALSM_EXCEL_TO_INTERNAL_TABLE) 오류
1. 문제점
– 특정 사용자 PC에서 엑셀파일 업로드 오류가 발생함.
2. 사용된 함수 : ALSM_EXCEL_TO_INTERNAL_TABLE
3. 오류발생 부분
– 클립보드에 복사한 데이터를 excel_tab으로 가져오지 못함.
4. 해결방안
– 다른 함수로 대체 (TEXT_CONVERT_XLS_TO_SAP)
* Excel Upload 구조.
DATA: BEGIN OF GS_EXCEL,
ZYEAR TYPE ZCOT5445-ZYEAR, " 연도.
ZMONTH TYPE ZCOT5445-ZMONTH, " 월.
KUNNR TYPE ZCOT5465-KUNNR, " 고객.
MATNR TYPE ZCOT5465-MATNR, " 상품.
ECAMT(15), " 금액.
END OF GS_EXCEL,
GT_EXCEL LIKE TABLE OF GS_EXCEL.
DATA:LV_FILE LIKE RLGRAP-FILENAME.
DATA: LV_SUBRC TYPE SY-SUBRC.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
* DEF_FILENAME = L_FILE
* DEF_PATH = 'C:/'
MASK = ',*.*,*.*.'
MODE = 'O' "-. O = Open.
TITLE = 'Select uploading excel file...'
IMPORTING
FILENAME = LV_FILE
EXCEPTIONS
INV_WINSYS = 01
NO_BATCH = 02
SELECTION_CANCEL = 03
SELECTION_ERROR = 04.
PERFORM FILE_READ TABLES GT_EXCEL
USING LV_FILE
'GT_EXCEL'
CHANGING LV_SUBRC.
*&---------------------------------------------------------------------*
*& Form FILE_READ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FILE_READ TABLES PT_DATA LIKE GT_EXCEL
USING PV_FNAME
PV_TNAME
CHANGING PV_SUBRC.
TYPES TRUXS_T_TEXT_DATA(4096) TYPE C OCCURS 0.
DATA: LS_TABLE_NAME(30),
LWA_TEXT_DATA TYPE TRUXS_T_TEXT_DATA.
FIELD-SYMBOLS <IT_FS> TYPE STANDARD TABLE.
* Internal Table Assign
CONCATENATE PV_TNAME '[]' INTO LS_TABLE_NAME.
ASSIGN (LS_TABLE_NAME) TO <IT_FS>.
TRANSLATE PV_FNAME TO UPPER CASE.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_LINE_HEADER = 'X'
I_TAB_RAW_DATA = LWA_TEXT_DATA
I_FILENAME = PV_FNAME
TABLES
I_TAB_CONVERTED_DATA = <IT_FS>
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
IF SY-SUBRC = 1 OR SY-TABIX EQ 2.
MESSAGE I000 WITH '파일을 열 수 없습니다( 파일을 닫고 실행해 주세요 )' DISPLAY LIKE 'E'.
PV_SUBRC = 4.
EXIT.
ELSE.
PV_SUBRC = 4.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
CLEAR: PV_SUBRC.
ENDIF.
PT_DATA[] = <IT_FS>[].
ENDFORM.
잘 보고 가요. 좋은 하루 되세요. ^^
네, 자주 놀러 오세요..