Code: Alles auswählen.
REPORTtest_excelimport.
TYPE-POOLS: truxs.
TYPES:
BEGIN OF ty_tab,
f1 TYPE char10,
f2 TYPE char10,
f3 TYPE char10,
END OF ty_tab.
DATA:
tab TYPE STANDARD TABLE OF ty_tab,
datei(60) TYPE c .
datei = 'C:\temp\test1.xls'.
CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
EXPORTING
i_filename = datei
i_servertyp = 'OLE2'
i_fileformat = 'XLS'
* I_FIELD_SEPERATOR =
i_line_header = 'X'
* IMPORTING
* E_BIN_FILELENGTH =
TABLES
i_tab_receiver = tab
EXCEPTIONS
file_not_found = 1
close_failed = 2
authorization_failed = 3
open_failed = 4
conversion_failed = 5
OTHERS = 6
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Da hast du recht, sieht bisserle doof aus, wie man es zurückbekommt.m.schwertle hat geschrieben:Allerdings bringt der FILE_READ_AND_CONVERT_SAP_DATA-Baustein gleich ein schnell bearbeitbares Format zustande. Während das Format des ALSM_EXCEL_TO_INTERNAL_TABLE-Bausteins ja wirklich - Verzeihung - bescheuert ist.
Bevor ich da einen komplexen Workaround entwickle, nehme ich lieber den (noch) langsame(re)n Baustein. Oder habt ihr da ne schnelle, einfache Routine, die ihr preisgeben möchtet?
Code: Alles auswählen.
FIELD-SYMBOLS:
<lfs_comp> TYPE ANY.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = lf_file
i_begin_col = 1
i_begin_row = 2
i_end_col = 21
i_end_row = 65535
TABLES
intern = gt_exceldat
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT gt_exceldat INTO gf_exceldat.
ASSIGN COMPONENT gf_exceldat-col OF STRUCTURE gf_excel TO <lfs_comp>.
* man kann gleich anpassungen vornehmen, wie z.b. Feldinhalte nach
* wunsch kürzen, bzw. ungewünschte Werte löschen. etc. etc.
IF gf_exceldat-col EQ '9'.
IF gf_exceldat-value(1) = 'M'.
CLEAR:gf_exceldat-value(1).
CONDENSE gf_exceldat-value NO-GAPS.
ENDIF.
ENDIF.
<lfs_comp> = gf_exceldat-value.
AT END OF row.
APPEND gf_excel TO gt_excel.
CLEAR gf_excel.
ENDAT.
ENDLOOP.