Donnerstag, März 11, 2010

Fehler im Buch: Next Generation ABAP Development

Ich bin derzeit dabei, das Buch "Next Generation ABAP Development" im Original zu lesen. Dabei ist mir im Kapitel 3.4 auf Seite 109 ein klassischer Fehler aufgefallen. Ich suche auch ausgerechnet schon seit längerem nach einer Möglichkeit, unbegrenzt viele Zeichen aus einer Excel-Tabelle in eine beliebige SAP-Tabelle hochzuladen und habe angefangen, mir einen solchen Funktionsbaustein selbst zu schreiben. Auf jener Seite wird eine Standard-Methode angegeben, wie man das machen sollte. Ich war schon froher Hoffnung, Sie funktioniert aber nur nicht:

* File auswählen
call method cl_gui_frontend_services=>file_open_dialog
exporting
multiselection = abap_false
file_filter = '*.xls'
default_extension = 'xls'
changing
file_table = retfiletable
rc = retrc
user_action = retuseraction.

* filename+Pfad lesen
read table retfiletable into filename index 1.

start-of-selection.

data l_filename type string.

l_filename = filename.

* Inhalt des Files lesen
call method cl_gui_frontend_services=>gui_upload
exporting
filename = l_filename
has_field_separator = abap_true
changing
data_tab = iimport.



Das hat mich ziemlich wahnsinnig gemacht.

Stattdessen muss es heißen:


* File auswählen
* abgeändert in Tab getrenntes Text-File, damit gui_upload funktioniert
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
multiselection = abap_false
file_filter = '*.txt' " '*.xls'
default_extension = 'TXT' " 'XLS'
CHANGING
file_table = retfiletable
rc = retrc
user_action = retuseraction.

* filename+Pfad lesen
READ TABLE retfiletable INTO filename INDEX 1.

START-OF-SELECTION.

DATA l_filename TYPE string.

l_filename = filename.

* Inhalt des Files lesen
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = l_filename
filetype = 'ASC'
has_field_separator = abap_true "Tabstop getrennt
CHANGING
data_tab = iimport.


Das setzt allerdings wiederum voraus, dass man vorher das .xls-File als mit tab getrenntes .txt-File speichert. Dann funktioniert alles tadellos.

Labels: , , , ,