Excel-Datei einlesen

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
20 Beiträge • Seite 1 von 2 (current) Nächste
20 Beiträge Seite 1 von 2 (current) Nächste

Excel-Datei einlesen

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo,

ich bin auf der Suche nach einem Funktionsbaustein oder Klasse, mit dem ich ein Excel-File einlesen kann, um diese Daten dann innerhalb des Programm´s auswerten zu können.

Jetzt kommt das knifflige:
Die Struktur der Excel, soll nicht hardcodiert sein.
Der Benutzer soll im Besten Fall jede beliebige Excel einlesen können und deshalb sollen die Informationen über den Aufbau der Struktur, in der Excel selbst hinterlegt sein. :shock:
Es geht darum dem Endbenutzer die programmiererei zu sparen.
Er kann dann einfach die Anzahl der Spalten und Zeilen in die Excel eintragen und schon kann das File gelesen werden.

Weiß jemand, ob es da schon irgentetwas in diese Richtung gibt?
Weil ich glaube das selbst zu progammieren wär zu aufwendig, oder?

Hoffe mir kann jemand helfen, :(
Zubasa

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Excel-Datei einlesen

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
FuBa alsm_excel_to_internal_table...

Bisl was musst du da aber auch machen...

Folgende Benutzer bedankten sich beim Autor casman für den Beitrag:
Zubasa


Re: Excel-Datei einlesen

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo,

vielen Dank für die Antwort.
Genau den Fuba habe ich auch gefunden. Und ich glaube mit dem lässt sich was anfangen, wie du ja schon gesagt hast en bissel muss ich auch was machen, aber des müsste ich hinkriegen.

Problem ist nur der Parameter filename:

Code: Alles auswählen.

data itab type table of HRPFDNL_S_EXCEL.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
  EXPORTING
    filename                      = 'Test.xls'
    i_begin_col                   = 1
    i_begin_row                   = 1
    i_end_col                     = 10
    i_end_row                     = 10
  tables
    intern                        = itab
 EXCEPTIONS
   INCONSISTENT_PARAMETERS       = 1
   UPLOAD_OLE                    = 2
   OTHERS                        = 3
          .
IF sy-subrc <> 0.
Write 'Funktioniert nicht!'.
ENDIF.
Was genau muss ich da angeben?
Die Datei liegt im Moment bei mir auf dem Destkop.

So wie der Code jetzt aussieht, funktionert es nicht.

Gruß,
Zubasa

Re: Excel-Datei einlesen

Beitrag von weigo (ForumUser / 45 / 0 / 6 ) »
Hi Zubasa,

du musst die Datei erst öffnen mit der Klasse CL_GUI_FRONTEND_SERVICES.
Schau dir das Beispiel Coding an:

Code: Alles auswählen.

DATA: lv_fname       LIKE rlgrap-filename.
DATA: lv_file_title   TYPE string.
DATA: lv_subrc        TYPE i.
DATA: lt_filetable    TYPE STANDARD TABLE OF file_table.
   
  lv_file_title = 'Test.xls'.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
      window_title            = lv_file_title
      initial_directory       = 'C:\'
    CHANGING
      file_table              = lt_filetable
      rc                      = lv_subrc
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      OTHERS                  = 4.
Danach die interne Tabelle lt_filetable auslesen:

Code: Alles auswählen.

READ TABLE lt_filetable INDEX 1 INTO lv_fname.
In lv_fname steht dann der Name für den Import Parameter filename.

Viele Grüße
weigo

Folgende Benutzer bedankten sich beim Autor weigo für den Beitrag:
Zubasa


Re: Excel-Datei einlesen

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo,

großes Danke für die Antworten :up: .
Hat bis jetzt alles super geklappt.

Kann mir jemand vielleicht noch sagen, für was ich den Fuba: KCD_EXCEL_SHEET_DESCR_LOAD verwenden kann?
Kann ich mit dem eine Struktur für die passende EXCEL erzeugen?

Fuba-Doku ist leider keine vorhanden.

Bzw. Für was sind denn die Parameter, die noch frei sind?

Code: Alles auswählen.

CALL FUNCTION 'KCD_EXCEL_SHEET_DESCR_LOAD'
  EXPORTING
    i_file_id       = lv_fname
    i_appl          =
   I_MANDT          = SY-MANDT
  tables
    e_key           =
    e_head          =
    e_datar         =
    e_file          =
    e_r_h           =
Gruß,
Zubasa

Re: Excel-Datei einlesen

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,
doch ist schon vorhanden , wenn auch :
Kurztext
Excelupload: laden der struktur

Parameter
I_FILE_ID
I_APPL
I_MANDT
E_KEY
E_HEAD
E_DATAR
E_FILE
E_R_H

Exceptions
NOT_FOUND

Funktionsgruppe
KCDP


Immer über SE37 den FB aufrufen und dann F9

Re: Excel-Datei einlesen

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo,

so ich habe gerade erfahren, dass es auch Möglich sein soll, das Programm im Hintergrund ausführen zu lassen.

Und jetzt kann ich den Fuba (ALSM_EXCEL_TO_INTERNAL_TABLE) vergessen, da er nicht dafür geeignet ist.

Ich bin die ganze Zeit schon auf der Suche nach einen passenden, aber bis jetzt hab ich noch keinen gefunden.
Kennt jemand zufällig einen oder auch eine Klasse, mit der dies Möglich ist?

Hoffe mir kann jemand weiter helfen.

Gruß,
Zubasa

Re: Excel-Datei einlesen

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Wie soll denn das gehen? Ein ABAP-Hintergrundprogramm läuft auf dem Server ohne Verbindung zu einem Client. Wie also will der Anwender dem Programm Zugriff auf die Datei geben?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Excel-Datei einlesen

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo,

aha ok ich glaube ihr merkt schon, dass ich nicht ganz so viel ahnunga davon habe, die Welten office und abap zusammen zu bringen.

Fakt ist aber:
- Das Excel-File liegt auf dem Applikationsserver
- Die Daten in der Excel sollen im Programm ausgewertet werden
- und das Programm soll im Hintergruns abspielbar sein.

Ist es wirklich überhaupt nicht Möglich?
Und kenn jemand eine Alternative, bzw. könnte man es auf eine ähnliche weiße bewerkstelligen?

Gruß,
Zubasa

Re: Excel-Datei einlesen

Beitrag von weigo (ForumUser / 45 / 0 / 6 ) »
Hallo Zubasa,

warum bist du so sicher, dass das mit diesem Baustein im Hintergrund nicht geht?
Hast du es ausprobiert?

Was du halt nicht machen kannst, ist die Exceldatei auswählen zu lassen.
Da brauchst du dann User Input.

Du könntest aber die Exceldatei bereits als Selection-Screen Parameter eintragen.
Das könnte dann funktionieren.
Die Datei müsstest du dann entsprechend im Programm erst öffnen.

Probiere das doch einmal aus und schicke dann das Ergebnis.

Viele Grüße
weigo

Re: Excel-Datei einlesen

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
warum bist du so sicher, dass das mit diesem Baustein im Hintergrund nicht geht?
@weigo: Weil es Ralf gesagt hat. Und ich glaube, ich hab noch keinen Beitrag von Ralf gelesen, der grundlegend falsch war. :D


Eigentlich ist es ganz einfach: Damit du ein "richtiges" Excel-File einlesen kannst, musst du irgendwie mit OLE arbeiten. Damit du mit OLE arbeiten kannst, muss ein Excel installiert sein. Alle Bausteine machen nichts anderes als über die SAPGUI-Verbindung die OLE-Funktionen von Excel zum Einlesen zu nutzen. Ergo: Keine Verbindung zu einem lokalen PC -> kein Excel -> kein Import. Das ist eine traurige Erkenntniss, die früher oder später jeder ABAP-Entwickler machen muss.

Wenn du vom Applikationsserver im Hintergrund "eine Art Excel" lesen willst, wirst du kaum umhinkommen, CSV zu verwenden. Da kann man ganz einfach per OPEN DATASET einlesen...

Grüße
Christoph

Re: Excel-Datei einlesen

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
casman hat geschrieben: @weigo: Weil es Ralf gesagt hat. Und ich glaube, ich hab noch keinen Beitrag von Ralf gelesen, der grundlegend falsch war. :D
Alllllter Schwede, da werd ich ja sogar noch rot......


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Excel-Datei einlesen

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
ralf.wenzel hat geschrieben:
casman hat geschrieben: Alllllter Schwede, da werd ich ja sogar noch rot......

Ralf
Hehe, Leistung muss halt auch einfach mal gewürdigt werden. :wink:

Re: Excel-Datei einlesen

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo,

@weigo: Leider ist das ganze ohne Frontend nicht ausführbar.
Nicht mal wenn die Datei lokal bei mir auf dem PC ist, oder liegt in diesem Fall der Fehler bei mir?

Und ich will nur sehr ungern mit CSV arbeiten :cry: :cry: :cry: :cry: :cry: .
Es muss doch eine Möglichkeit geben, .xls im Backend einzulesen :| :| :| .
Oder nicht? (Ich glaube immmer noch daran, dass es irgenteine Lösung geben muss)

Gibt es bei SAP nicht ein Team, dass sich extra mit Office beschäftigt?
Kann ich da mal vorbeischauen? (Standort: Walldorf/Rot)

Gruß,
Zubasa

Re: Excel-Datei einlesen

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Zubasa hat geschrieben:Gibt es bei SAP nicht ein Team, dass sich extra mit Office beschäftigt?
Kann ich da mal vorbeischauen? (Standort: Walldorf/Rot)
Klar, kein Problem. Hingehen, ne Tasse Kaffee abstauben und mal so einen allgemeinen Überblick verschaffen lassen, ehe man mit Detailproblemen wie dem hier geschilderten kommt. Um telefonische Anmeldung wird gebeten....

Gruß


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Vergleichbare Themen

1
Antw.
8762
Views
Excel Datei einlesen
von kostonstyle » 11.12.2006 11:26 • Verfasst in ABAP® für Anfänger
0
Antw.
3957
Views
xml Datei einlesen
von Rabea1103 » 05.03.2009 13:58 • Verfasst in ABAP® Core
2
Antw.
4012
Views
XML Datei in ABAP einlesen
von Zubasa » 31.03.2011 10:53 • Verfasst in ABAP Objects®
4
Antw.
2483
Views
Datei Paketweise einlesen?
von killa12 » 12.10.2010 12:03 • Verfasst in ABAP® Core
0
Antw.
1293
Views
XML-Datei in Kundenauftrag einlesen
von Lori » 02.02.2021 07:14 • Verfasst in Sales and Distribution

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 613
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2240
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8832