ich arbeite momentan an einer neuen Import-Möglichkeit zur Massenpflege von Einkaufsinfosätzen.
Dafür sollen Excel-Dateien eingelesen und die Daten dann weggeschrieben werden, zur genaueren Vorgehensweise habe ich mir schon einiges angeschaut und auch verschiedene Fuba's geprüft.
Daher meine Frage, gibt es sinnvolle Alternativen (Fubas/Klassenmethoden) zu "ALSM_EXCEL_TO_INTERNAL_TABLE"?
Habe mir u.a. auch den FAA_FILE_UPLOAD_EXCEL angeschaut, der die Excel-Datei zeilenweise einliest. Leider werden Kommata dabei automatisch zu Punkten gewandelt und Punkte bleiben Punkte, wodurch in ABAP nicht mehr nachvollziehbar ist, was es vorher ist.
Wichtig ist, dass sowohl .xls wie auch .xlsx Dateien eingelesen werden können, daher fällt zum Beispiel "FILE_READ_AND_CONVERT_SAP_DATA" auch raus.
Bei "TEXT_CONVERT_XLS_TO_SAP" bin ich mir grad unsicher, wie genau der Import-Parameter "i_tab_raw_data" auszusehen hat. Ich mein, der Datentyp ist klar, aber was dadrin stehen soll weiß ich nicht, da der Fuba leider keine Doku hat und bei uns nicht verwendet wird.
Auch Zweifel ich da an der Kompatibilität mit XLS...
Achso, aus folgendem Grund suche ich eine Alternative zu "ALSM_EXCEL_TO_INTERNAL_TABLE":
Dieser liest nur 50 Zeichen aus den Zellen ein, wenn Texte mitgepflegt werden, ist das eindeutig zu wenig.
Kann ich mir den FuBa alternativ auch kopieren und entsprechend umschreiben, dass mehr als 50 Zeichen möglich sind (neuen DDIC-Typ anlegen etc.)?
Oder sollte ich mir mittels der OLE2-Methoden eine komplett eigene Klasse zum Einlesen schreiben? Das Endergebnis soll nämlich möglichst objektorientiert programmiert sein, über Sinn und Unsinn lässt sich dabei streiten, da ich mir sicher bin, dass ich FuBa's etc. brauche...
Über einen kleinen Schubser in die richtige Richtung wäre ich hier sehr dankbar.
das benutze ich immer wenn ich mal Excelfiles hochladen will, funzt auch mit grossen Zellen, da man seine datatab selber definieren kann.
geht mit xls und xlsx.
vielen Dank, da wird ja auch der "TEXT_CONVERT_XLS_TO_SAP" verwendet.
Was ich da nicht verstanden hatte, ist warum man diesem als Import-Parameter "i_tab_raw_data = it_raw " mitgibt, it_raw vorher nicht irgendwie gefüllt wird.
Aber wenn du sagst, dass der so funktioniert und auch mit xlsx funktioniert, werde ich das mal testen.
also ich hab bis jetzt keine Schwierigkeiten gehabt. Sie schreiben zwar das es mit xlsx nicht unbedingt immer läuft, scheint aber auf die Komplexität des Excel Files anzukommen.
zur Not kannst du ja deine andere Idee immer noch aufgreifen und den "ALSM_EXCEL_TO_INTERNAL_TABLE" kopieren und die struktur nach deinen Wünschen anpassen das wäre auch noch ein gangbarer Weg.
Also mit einfachen xlsx-Dateien läuft es auf jeden Fall bei mir.
Nur fürchte ich, dass ich alle "Spalten" meiner internen Tabelle als Strings deklarieren muss, damit es zu keinen Konvertierungsfehlern kommt.
Und dann muss ich schauen, wie ich es in ABAP in die Typen konvertiere, die ich brauche.
Denn die Excel-Files werden wahrscheinlich aufgrund unterschiedlichen Anforderungen der einzelnen Einkaufsbereiche nicht gleich aufgebaut sein, manche brauchen weniger Felder, andere mehr...
Da muss ich mal schauen, wie ich es mache, eventuell versuch ich auch, denen eine feste Struktur vorzugeben, würde es für mich auf jeden Fall einfacher machen.
eigentlich ist es ja egal.... wieviele Spalten Die nun füllen oder nicht, du musst halt nur wissen welcher User aus welcehm Bereich sein excel hochlädt dann weisst du ja wie deine Rawtab gefüllt ist,
bzw. in welcher reihenfolge die Felder der einzelnen Abteilungen daher kommen. das mapping macht dann halt a bissl mehr arbeit, aber du kannst jedem Bereich sein eigen excel geben.
Ja, ich hab auch schon daran gedacht, die Header-Zeile vorzugeben und anhand der Spaltenüberschriften mir die Daten richtig zu konvertieren und dann beim Ändern der Einkaufsinfosätze auch nur die Daten zu ändern, die ich in der internen Tabelle hab... Naja, mal schaun
Hallo,
ich muss diese Thema noch mal aufgreifen da ich ein aktuelles Problem mit dem Baustein habe. Ich versuche eine .xlsx Datei hochzuladen. Das Problem, was ich dabei habe ist, das der Baustein den ganzen Dateiinhalt in eine Zeile fortschreibt. Technisch wird nicht nach, wie in der Datei jede Zeile mit dem "row" Wert hochgezählt, sondern alles in eine Zeile und der "Columnwert" hochgezählt.
Kennt jemand dieses Problem? Weiß jemand Rat?