* ==================================================================== * Stefanos Moschidis - SAP Certified Technical Consultant * ==================================================================== *&---------------------------------------------------------------------* *& READ DATA FROM AN EXCEL FILE *&---------------------------------------------------------------------* REPORT ZEXCEL_READ LINE-SIZE 255 LINE-COUNT 60. * ====================================================================== * DATA DECLARATIONS SECTION * ====================================================================== DATA : INTERN TYPE STANDARD TABLE OF ALSMEX_TABLINE WITH HEADER LINE . DATA : BEGIN OF MWORKSHEET OCCURS 0 , MCOL_0001 LIKE INTERN-VALUE , MCOL_0002 LIKE INTERN-VALUE , MCOL_0003 LIKE INTERN-VALUE , MCOL_0004 LIKE INTERN-VALUE , MCOL_0005 LIKE INTERN-VALUE , MCOL_0006 LIKE INTERN-VALUE , MCOL_0007 LIKE INTERN-VALUE , MCOL_0008 LIKE INTERN-VALUE , MCOL_0009 LIKE INTERN-VALUE , MCOL_0010 LIKE INTERN-VALUE , MCOL_0011 LIKE INTERN-VALUE , MCOL_0012 LIKE INTERN-VALUE , MCOL_0013 LIKE INTERN-VALUE , MCOL_0014 LIKE INTERN-VALUE , MCOL_0015 LIKE INTERN-VALUE , MCOL_0016 LIKE INTERN-VALUE , MCOL_0017 LIKE INTERN-VALUE , MCOL_0018 LIKE INTERN-VALUE , MCOL_0019 LIKE INTERN-VALUE , MCOL_0020 LIKE INTERN-VALUE , MCOL_0021 LIKE INTERN-VALUE , MCOL_0022 LIKE INTERN-VALUE , MCOL_0023 LIKE INTERN-VALUE , MCOL_0024 LIKE INTERN-VALUE , MCOL_0025 LIKE INTERN-VALUE , MCOL_0026 LIKE INTERN-VALUE , MCOL_0027 LIKE INTERN-VALUE , MCOL_0028 LIKE INTERN-VALUE , MCOL_0029 LIKE INTERN-VALUE , MCOL_0030 LIKE INTERN-VALUE , MCOL_0031 LIKE INTERN-VALUE , MCOL_0032 LIKE INTERN-VALUE , MCOL_0033 LIKE INTERN-VALUE , MCOL_0034 LIKE INTERN-VALUE , MCOL_0035 LIKE INTERN-VALUE , MCOL_0036 LIKE INTERN-VALUE , MCOL_0037 LIKE INTERN-VALUE , MCOL_0038 LIKE INTERN-VALUE , MCOL_0039 LIKE INTERN-VALUE , MCOL_0040 LIKE INTERN-VALUE , MCOL_0041 LIKE INTERN-VALUE , MCOL_0042 LIKE INTERN-VALUE , MCOL_0043 LIKE INTERN-VALUE , MCOL_0044 LIKE INTERN-VALUE , MCOL_0045 LIKE INTERN-VALUE , MCOL_0046 LIKE INTERN-VALUE , MCOL_0047 LIKE INTERN-VALUE , MCOL_0048 LIKE INTERN-VALUE , MCOL_0049 LIKE INTERN-VALUE , MCOL_0050 LIKE INTERN-VALUE , MCOL_0051 LIKE INTERN-VALUE , MCOL_0052 LIKE INTERN-VALUE , MCOL_0053 LIKE INTERN-VALUE , MCOL_0054 LIKE INTERN-VALUE , MCOL_0055 LIKE INTERN-VALUE , MCOL_0056 LIKE INTERN-VALUE , MCOL_0057 LIKE INTERN-VALUE , MCOL_0058 LIKE INTERN-VALUE , MCOL_0059 LIKE INTERN-VALUE , MCOL_0060 LIKE INTERN-VALUE , MCOL_0061 LIKE INTERN-VALUE , MCOL_0062 LIKE INTERN-VALUE , MCOL_0063 LIKE INTERN-VALUE , MCOL_0064 LIKE INTERN-VALUE , MCOL_0065 LIKE INTERN-VALUE , MCOL_0066 LIKE INTERN-VALUE , MCOL_0067 LIKE INTERN-VALUE , MCOL_0068 LIKE INTERN-VALUE , MCOL_0069 LIKE INTERN-VALUE , MCOL_0070 LIKE INTERN-VALUE , MCOL_0071 LIKE INTERN-VALUE , MCOL_0072 LIKE INTERN-VALUE , MCOL_0073 LIKE INTERN-VALUE , MCOL_0074 LIKE INTERN-VALUE , MCOL_0075 LIKE INTERN-VALUE , MCOL_0076 LIKE INTERN-VALUE , MCOL_0077 LIKE INTERN-VALUE , MCOL_0078 LIKE INTERN-VALUE , MCOL_0079 LIKE INTERN-VALUE , MCOL_0080 LIKE INTERN-VALUE , MCOL_0081 LIKE INTERN-VALUE , MCOL_0082 LIKE INTERN-VALUE , MCOL_0083 LIKE INTERN-VALUE , MCOL_0084 LIKE INTERN-VALUE , MCOL_0085 LIKE INTERN-VALUE , MCOL_0086 LIKE INTERN-VALUE , MCOL_0087 LIKE INTERN-VALUE , MCOL_0088 LIKE INTERN-VALUE , MCOL_0089 LIKE INTERN-VALUE , MCOL_0090 LIKE INTERN-VALUE , MCOL_0091 LIKE INTERN-VALUE , MCOL_0092 LIKE INTERN-VALUE , MCOL_0093 LIKE INTERN-VALUE , MCOL_0094 LIKE INTERN-VALUE , MCOL_0095 LIKE INTERN-VALUE , MCOL_0096 LIKE INTERN-VALUE , MCOL_0097 LIKE INTERN-VALUE , MCOL_0098 LIKE INTERN-VALUE , MCOL_0099 LIKE INTERN-VALUE , MCOL_0100 LIKE INTERN-VALUE , MCOL_0101 LIKE INTERN-VALUE , MCOL_0102 LIKE INTERN-VALUE , MCOL_0103 LIKE INTERN-VALUE , MCOL_0104 LIKE INTERN-VALUE , MCOL_0105 LIKE INTERN-VALUE , MCOL_0106 LIKE INTERN-VALUE , MCOL_0107 LIKE INTERN-VALUE , MCOL_0108 LIKE INTERN-VALUE , MCOL_0109 LIKE INTERN-VALUE , MCOL_0110 LIKE INTERN-VALUE , MCOL_0111 LIKE INTERN-VALUE , MCOL_0112 LIKE INTERN-VALUE , MCOL_0113 LIKE INTERN-VALUE , MCOL_0114 LIKE INTERN-VALUE , MCOL_0115 LIKE INTERN-VALUE , MCOL_0116 LIKE INTERN-VALUE , MCOL_0117 LIKE INTERN-VALUE , MCOL_0118 LIKE INTERN-VALUE , MCOL_0119 LIKE INTERN-VALUE , MCOL_0120 LIKE INTERN-VALUE , MCOL_0121 LIKE INTERN-VALUE , MCOL_0122 LIKE INTERN-VALUE , MCOL_0123 LIKE INTERN-VALUE , MCOL_0124 LIKE INTERN-VALUE , MCOL_0125 LIKE INTERN-VALUE , MCOL_0126 LIKE INTERN-VALUE , MCOL_0127 LIKE INTERN-VALUE , MCOL_0128 LIKE INTERN-VALUE , MCOL_0129 LIKE INTERN-VALUE , MCOL_0130 LIKE INTERN-VALUE , MCOL_0131 LIKE INTERN-VALUE , MCOL_0132 LIKE INTERN-VALUE , MCOL_0133 LIKE INTERN-VALUE , MCOL_0134 LIKE INTERN-VALUE , MCOL_0135 LIKE INTERN-VALUE , MCOL_0136 LIKE INTERN-VALUE , MCOL_0137 LIKE INTERN-VALUE , MCOL_0138 LIKE INTERN-VALUE , MCOL_0139 LIKE INTERN-VALUE , MCOL_0140 LIKE INTERN-VALUE , MCOL_0141 LIKE INTERN-VALUE , MCOL_0142 LIKE INTERN-VALUE , MCOL_0143 LIKE INTERN-VALUE , MCOL_0144 LIKE INTERN-VALUE , MCOL_0145 LIKE INTERN-VALUE , MCOL_0146 LIKE INTERN-VALUE , MCOL_0147 LIKE INTERN-VALUE , MCOL_0148 LIKE INTERN-VALUE , MCOL_0149 LIKE INTERN-VALUE , MCOL_0150 LIKE INTERN-VALUE , MCOL_0151 LIKE INTERN-VALUE , MCOL_0152 LIKE INTERN-VALUE , MCOL_0153 LIKE INTERN-VALUE , MCOL_0154 LIKE INTERN-VALUE , MCOL_0155 LIKE INTERN-VALUE , MCOL_0156 LIKE INTERN-VALUE , MCOL_0157 LIKE INTERN-VALUE , MCOL_0158 LIKE INTERN-VALUE , MCOL_0159 LIKE INTERN-VALUE , MCOL_0160 LIKE INTERN-VALUE , MCOL_0161 LIKE INTERN-VALUE , MCOL_0162 LIKE INTERN-VALUE , MCOL_0163 LIKE INTERN-VALUE , MCOL_0164 LIKE INTERN-VALUE , MCOL_0165 LIKE INTERN-VALUE , MCOL_0166 LIKE INTERN-VALUE , MCOL_0167 LIKE INTERN-VALUE , MCOL_0168 LIKE INTERN-VALUE , MCOL_0169 LIKE INTERN-VALUE , MCOL_0170 LIKE INTERN-VALUE , MCOL_0171 LIKE INTERN-VALUE , MCOL_0172 LIKE INTERN-VALUE , MCOL_0173 LIKE INTERN-VALUE , MCOL_0174 LIKE INTERN-VALUE , MCOL_0175 LIKE INTERN-VALUE , MCOL_0176 LIKE INTERN-VALUE , MCOL_0177 LIKE INTERN-VALUE , MCOL_0178 LIKE INTERN-VALUE , MCOL_0179 LIKE INTERN-VALUE , MCOL_0180 LIKE INTERN-VALUE , MCOL_0181 LIKE INTERN-VALUE , MCOL_0182 LIKE INTERN-VALUE , MCOL_0183 LIKE INTERN-VALUE , MCOL_0184 LIKE INTERN-VALUE , MCOL_0185 LIKE INTERN-VALUE , MCOL_0186 LIKE INTERN-VALUE , MCOL_0187 LIKE INTERN-VALUE , MCOL_0188 LIKE INTERN-VALUE , MCOL_0189 LIKE INTERN-VALUE , MCOL_0190 LIKE INTERN-VALUE , MCOL_0191 LIKE INTERN-VALUE , MCOL_0192 LIKE INTERN-VALUE , MCOL_0193 LIKE INTERN-VALUE , MCOL_0194 LIKE INTERN-VALUE , MCOL_0195 LIKE INTERN-VALUE , MCOL_0196 LIKE INTERN-VALUE , MCOL_0197 LIKE INTERN-VALUE , MCOL_0198 LIKE INTERN-VALUE , MCOL_0199 LIKE INTERN-VALUE , MCOL_0200 LIKE INTERN-VALUE , MCOL_0201 LIKE INTERN-VALUE , MCOL_0202 LIKE INTERN-VALUE , MCOL_0203 LIKE INTERN-VALUE , MCOL_0204 LIKE INTERN-VALUE , MCOL_0205 LIKE INTERN-VALUE , MCOL_0206 LIKE INTERN-VALUE , MCOL_0207 LIKE INTERN-VALUE , MCOL_0208 LIKE INTERN-VALUE , MCOL_0209 LIKE INTERN-VALUE , MCOL_0210 LIKE INTERN-VALUE , MCOL_0211 LIKE INTERN-VALUE , MCOL_0212 LIKE INTERN-VALUE , MCOL_0213 LIKE INTERN-VALUE , MCOL_0214 LIKE INTERN-VALUE , MCOL_0215 LIKE INTERN-VALUE , MCOL_0216 LIKE INTERN-VALUE , MCOL_0217 LIKE INTERN-VALUE , MCOL_0218 LIKE INTERN-VALUE , MCOL_0219 LIKE INTERN-VALUE , MCOL_0220 LIKE INTERN-VALUE , MCOL_0221 LIKE INTERN-VALUE , MCOL_0222 LIKE INTERN-VALUE , MCOL_0223 LIKE INTERN-VALUE , MCOL_0224 LIKE INTERN-VALUE , MCOL_0225 LIKE INTERN-VALUE , MCOL_0226 LIKE INTERN-VALUE , MCOL_0227 LIKE INTERN-VALUE , MCOL_0228 LIKE INTERN-VALUE , MCOL_0229 LIKE INTERN-VALUE , MCOL_0230 LIKE INTERN-VALUE , MCOL_0231 LIKE INTERN-VALUE , MCOL_0232 LIKE INTERN-VALUE , MCOL_0233 LIKE INTERN-VALUE , MCOL_0234 LIKE INTERN-VALUE , MCOL_0235 LIKE INTERN-VALUE , MCOL_0236 LIKE INTERN-VALUE , MCOL_0237 LIKE INTERN-VALUE , MCOL_0238 LIKE INTERN-VALUE , MCOL_0239 LIKE INTERN-VALUE , MCOL_0240 LIKE INTERN-VALUE , MCOL_0241 LIKE INTERN-VALUE , MCOL_0242 LIKE INTERN-VALUE , MCOL_0243 LIKE INTERN-VALUE , MCOL_0244 LIKE INTERN-VALUE , MCOL_0245 LIKE INTERN-VALUE , MCOL_0246 LIKE INTERN-VALUE , MCOL_0247 LIKE INTERN-VALUE , MCOL_0248 LIKE INTERN-VALUE , MCOL_0249 LIKE INTERN-VALUE , MCOL_0250 LIKE INTERN-VALUE , MCOL_0251 LIKE INTERN-VALUE , MCOL_0252 LIKE INTERN-VALUE , MCOL_0253 LIKE INTERN-VALUE , MCOL_0254 LIKE INTERN-VALUE , MCOL_0255 LIKE INTERN-VALUE , MCOL_0256 LIKE INTERN-VALUE . DATA : END OF MWORKSHEET . DATA : MAX_COL LIKE INTERN-COL . DATA : MVARIABLE(40) TYPE C . FIELD-SYMBOLS TYPE ANY . DATA : I_PROGRAM_NAME LIKE SY-REPID . DATA : I_INCLNAME LIKE TRDIR-NAME . TYPE-POOLS SLIS . DATA : CT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV . * ================================================================== * SELECTION SCREEN DEFAULT * ================================================================== PARAMETERS : FILENAME LIKE RLGRAP-FILENAME . * ================================================================== AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILENAME . * ================================================================== PERFORM GET_FILE . * ================================================================== START-OF-SELECTION . * ================================================================== PERFORM OPEN_EXCEL_FILE . * ================================================================== END-OF-SELECTION . * ================================================================== PERFORM SHOW_EXCEL_FILE . *&---------------------------------------------------------------------* *& Form open_excel_file *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM OPEN_EXCEL_FILE . CLEAR : INTERN , INTERN[] . CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING FILENAME = FILENAME I_BEGIN_COL = 1 I_BEGIN_ROW = 1 I_END_COL = 256 I_END_ROW = 64000 TABLES INTERN = INTERN EXCEPTIONS INCONSISTENT_PARAMETERS = 1 UPLOAD_OLE = 2 OTHERS = 3. * =============================================================== IF SY-SUBRC EQ 0. * =============================================================== CLEAR : MWORKSHEET , MWORKSHEET[] . SORT INTERN BY ROW . CLEAR MAX_COL . LOOP AT INTERN . * ----------------------------------------------------------- IF MAX_COL LE INTERN-COL . MAX_COL = INTERN-COL . ENDIF . * ----------------------------------------------------------- CLEAR MVARIABLE . CONCATENATE 'MWORKSHEET-MCOL_' INTERN-COL INTO MVARIABLE . ASSIGN (MVARIABLE) TO . IF SY-SUBRC EQ 0 . = INTERN-VALUE . ENDIF . * ----------------------------------------------------------- AT END OF ROW . APPEND MWORKSHEET . CLEAR MWORKSHEET . ENDAT. * ----------------------------------------------------------- ENDLOOP . * =============================================================== ELSE . * =============================================================== MESSAGE I398(00) WITH 'OPENING' FILENAME 'AS EXCEL FILE FAILED' . ENDIF. ENDFORM. " open_excel_file *&---------------------------------------------------------------------* *& Form get_file *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM GET_FILE . CLEAR : CT_FIELDCAT , CT_FIELDCAT[] . CALL FUNCTION 'WS_FILENAME_GET' EXPORTING DEF_PATH = 'C:\' MASK = '*.*' TITLE = 'FILE SELECTION' IMPORTING FILENAME = FILENAME EXCEPTIONS INV_WINSYS = 1 NO_BATCH = 2 SELECTION_CANCEL = 3 SELECTION_ERROR = 4 OTHERS = 5. ENDFORM. " get_file *&---------------------------------------------------------------------* *& Form SHOW_excel_file *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM SHOW_EXCEL_FILE . I_PROGRAM_NAME = I_INCLNAME = SY-REPID . CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = I_PROGRAM_NAME I_INTERNAL_TABNAME = 'MWORKSHEET' I_INCLNAME = I_INCLNAME CHANGING CT_FIELDCAT = CT_FIELDCAT[] EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS = 3. IF ( SY-SUBRC EQ 0 ) AND ( NOT CT_FIELDCAT[] IS INITIAL ) . DELETE CT_FIELDCAT WHERE COL_POS GT MAX_COL . CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING IT_FIELDCAT = CT_FIELDCAT[] TABLES T_OUTTAB = MWORKSHEET[] EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. ENDIF. ENDFORM. " SHOW_excel_file