CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = F_NAME
I_BEGIN_COL = '1'
I_BEGIN_ROW = '1'
I_END_COL = '9'
I_END_ROW = '2000'
TABLES
INTERN = INTERN
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE '上传文件到SAP错误!' TYPE 'E'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
***判断是否重复序号
DATA: TEMP_INTERN LIKE TABLE OF INTERN WITH HEADER LINE.
* SORT INTERN BY VALUE.
* DATA:LINE(4).
* DATA:LINE1(4).
* DESCRIBE TABLE INTERN LINES LINE.
* DELETE ADJACENT DUPLICATES FROM INTERN COMPARING COL VALUE.
* DESCRIBE TABLE INTERN LINES LINE1.
* IF LINE <> LINE1.
* MESSAGE 'Excel文件中有重复序号的行项,请检查!' TYPE 'E'.
* ENDIF.
* REFRESH TEMP_INTERN.
*
DATA: TEMP_TYPE LIKE DD01V-DATATYPE.
DATA: F_INDEX LIKE SY-TABIX.
LOOP AT INTERN .
F_INDEX = SY-TABIX.
CASE INTERN-COL .
WHEN '0001'.
"判断是否是纯数字字串
CALL FUNCTION 'NUMERIC_CHECK'
EXPORTING
STRING_IN = INTERN-VALUE
IMPORTING
STRING_OUT = IT_OUT-NUM
HTYPE = TEMP_TYPE.
IF TEMP_TYPE = 'CHAR'.
MESSAGE 'Excel文件中有的序号不是数字,请检查!' TYPE 'E'.
ENDIF.
CLEAR TEMP_TYPE.
WHEN '0002'.
IT_OUT-ISBN1 = INTERN-VALUE .
WHEN '0003'.
IT_OUT-ZMAKTXL1 = INTERN-VALUE .
WHEN '0004'.
IT_OUT-ENDPR1 = INTERN-VALUE .
WHEN '0005'.
IT_OUT-ZPRESS1 = INTERN-VALUE .
WHEN '0006'.
IT_OUT-ZMEDIA1 = INTERN-VALUE .
WHEN '0007'.
IT_OUT-ZAUTHOR1 = INTERN-VALUE .
WHEN '0008'.
IT_OUT-ZPUBDAT1 = INTERN-VALUE .
WHEN '0009'.
IT_OUT-ZPRIDAT1 = INTERN-VALUE .
APPEND IT_OUT.
CLEAR : IT_OUT ,INTERN.
ENDCASE.
ENDLOOP.