EXCEL-Vorlage über BDS befüllen/speichern

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

EXCEL-Vorlage über BDS befüllen/speichern

Beitrag von tfelber (ForumUser / 5 / 0 / 0 ) »
Hallo zusammen,

nachdem ich 2 Tage vergeblich nach hilfreichen Infos recherchiert :shock: habe, wende ich mich jetzt an 'DIE PROFIS'.

Meine Aufgabe:
Eine bestehende EXCEL-Vorlage (formatiert und statische Werte vorausgefüllt) mit Daten, welche über eien ABAP-Programm ermittelt werden zu befüllen. Hört sich einfach an ... ist es aber nicht. Zumal es eben nicht nur ein 'flaches Copy&Paste' einer Tabelle ist, sondern mehrere einzelne Zellbereiche mit Infos aus dem SAP versorgt werden sollen. :?

Ich habe viele Hinweise zur Klasse CL_BDS_DOCUMENT_SET u.ä. sowie zu bestimmten Programmen BDSTESTOO, BCALV_BDS_MAINTENANCE ... gefunden.

Ich habe auch bereits die Vorlage über Transaktion OAER sowie über Report BCALV_BDS_MAINTENANCE hochgeladen. :lol

Aber: :cry: mein Problem ist das fehelnde prinzipielle Verständnis des notwendigen programmseitigen Ablaufes:!:

Also z.B.
- zu befüllende Daten ermitteln
- hochgeladene EXCEL-datei 'finden'
- EXCEL-Arbeitsblatt auswälen
- Zellbereiche im Arbeitsblatt definieren
- Zellbereiche füllen
- EXCEL-datei neuen Namen geben
- EXCEL-Datei auf Appl.-server/Präs.-server abspeichern
...

Das wäre jetzt mein Verständnis des Programms. Nur leider gibt es keine wirkliche Doku zu den Klassen, die OSS-Hinweise sind dürftig ...

Wer kann mir helfen :idea: :idea: :idea: und mir die notwendigen Methoden bzw. Programmschritte in der korrekten Abfolge aufzeigen, um zu meinem Ziel (ausgefüllte abgespeicherte EXCEL-Tabelle) zu gelangen.

Wer helfen kann kriegt den Orden 'certified BDS expert' von der SAP verliehen! :wink:

Danke und Gruß

Tobias

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


Re: EXCEL-Vorlage über BDS befüllen/speichern

Beitrag von GERDLA (Specialist / 116 / 0 / 0 ) »
tfelber hat geschrieben:Hallo zusammen,

nachdem ich 2 Tage vergeblich nach hilfreichen Infos recherchiert :shock: ....

Danke und Gruß

Tobias
Vielleicht hilft Dir dieses Beispiel, habe es mal gefunden:

REPORT TEST_EXCEL.

* Durchführen einer Berechnung in einem Excel-Arbeitsblatt.
*
* Erstellen einer Excel-Datei, in der in Zelle
* C1 die Formel "=A1+B1" steht.
* Die Zellen A1 und B1 werden durch das Programm übergeben.
* Die Zelle C1, in der dann das Ergebnis steht, wird wieder ausgelesen
* und ausgegeben.
*

* Excel-Sheet
PARAMETERS: var_file(30) DEFAULT 'C:/temp/testole' LOWER CASE.
* Ergebnis
DATA: result(50).
TYPE-POOLS ole2 .
* Handles für OLE Objekte
DATA:
h_excel TYPE ole2_object, " Excel object
h_book TYPE ole2_object, " list of workbooks
h_active_window TYPE ole2_object,
cell_out TYPE ole2_object, " cell
cell_in TYPE ole2_object. " cell
*----------------------------------------------------------
START-OF-SELECTION.
* start Excel
CREATE OBJECT h_excel 'EXCEL.APPLICATION'.
* Excel nicht sichtbar ausführen
SET PROPERTY OF h_excel 'Visible' = 0.
* Arbeitsblatt auswählen
CALL METHOD OF h_excel 'Workbooks' = h_book.
* bestehendes File öffnen
CALL METHOD OF h_book 'OPEN'
EXPORTING
#1 = var_file.

*-----------------------------------------------------------
* 1. Zelle, an die Wert übergeben wird (A1)
CALL METHOD OF h_excel 'Cells' = cell_out
EXPORTING
#1 = 1 "Zeile
#2 = 1. "Spalte
* Zellinhalt A1 setzen
SET PROPERTY OF cell_out 'Value' = '200'.
*-----------------------------------------------------------
* 2. Zelle, an die Wert übergeben wird (B2)
CALL METHOD OF h_excel 'Cells' = cell_out
EXPORTING
#1 = 1 "Zeile
#2 = 2. "Spalte
* Zellinhalt B1 setzen
SET PROPERTY OF cell_out 'Value' = '500'.
* Object freigeben
FREE OBJECT cell_out.
*-----------------------------------------------------------
* Zelle, aus der Ergebnis gelesen wird (C1)
CALL METHOD OF h_excel 'Cells' = cell_in
EXPORTING
#1 = 1 "Zeile
#2 = 4. "Spalte
* Zellinhalt lesen
GET PROPERTY OF cell_in 'Value' = result.
* Objekt freigeben
FREE OBJECT cell_in.
* Excel beenden
*-----------------------------------------------------------------------
* see http://support.microsoft.com/default.as ... ;de;503541
* Close without saving
* get active window
CALL METHOD OF h_excel 'ACTIVEWINDOW' = h_active_window.
* set active_window visible
SET PROPERTY OF h_active_window 'VISIBLE' = 1.
*-----------------------------------------------------------------------
* close active_window without saving
CALL METHOD OF h_active_window 'CLOSE'
EXPORTING #1 = 0.
* close Excel
CALL METHOD OF h_excel 'QUIT'.
FREE OBJECT: h_excel, h_active_window.

WRITE: / 'Ergebnis der Berechnung in Excel:', result.

gruss

gerhard

Re: EXCEL-Vorlage über BDS befüllen/speichern

Beitrag von tfelber (ForumUser / 5 / 0 / 0 ) »
Hallo Gerhard,

vielen Dank für Deine Hilfe. :) Das genannte Beispiel ist sicherlich ein Lösungsansatz für kleine Tabellen im Dialogbetrieb. Es ist nur nicht flexibel genug (z.B. Batchfähigkeit, Versionierbarkeit etc.). Ich werde es auf alle Fälle weiter prüfen...

Gibt es vielleicht von andere 'Stelle' noch einen konkreten BDS-Ansatz? :roll:

Grüße

Tobias

Re: EXCEL-Vorlage über BDS befüllen/speichern

Beitrag von JHM (Top Expert / 1211 / 2 / 202 ) »
tfelber hat geschrieben:Gibt es vielleicht von andere 'Stelle' noch einen konkreten BDS-Ansatz?
So ganz sicher bin ich mir, zwar nicht was genau du jetzt suchst, aber vieleicht wird dir

hier zu BDS oder aber
hier zu Ole2 oder aber
hier zum Document Viewer geholfen.
Gruß Hendrik

EXCEL-Datei auf Applikationsserver speichern?

Beitrag von tfelber (ForumUser / 5 / 0 / 0 ) »
Hallo zusammen,

nachdem ich jetzt einige Zeit an meinem Programm herumgefrickelt habe, funktioniert es im Grunde schon recht gut.

An dieser Stelle mal herzlichen Dank (unbekannterweise) an das auf www.tricktresor.de bereitgestellte Demo zu den DOI-Methoden. Habe mich daran gehalten und um die BDS-Dokumenten-URL-Einbindung erweitert. :wink:

Ich bin jetzt in der Lage ein im BDS hinterlegtes EXCEL-Template zu öffnen, es mit Daten zu befüllen und wenn ich möchte im Dialogfenster anzeigen zu lassen. Beim verlassen des Ansichtsdynpros rufe ich jetzt die Methode:

CALL METHOD cl_document->save_as

auf. Damit könnte ich das Ergebnis schon mal lokal abspeichern.

ABER:

Das reicht nicht wirklich, da der Report eigentlich mal im Hintergrund laufen soll. Von daher müsste er auch die Datei auf dem Applikationsserver ablegen.

Mit 'open dataset' etc. wirds ja wohl nicht gehen, wenn ich eine formatierte Excel-Datei habe.

Mit 'CALL METHOD cl_document->SAVE_DOCUMENT_TO_URL' klappt es irgendwie auch (noch) nicht, da der URL-Eingabeparameter für mich nicht ganz klar ist.
Die BDS-Template-URL welche ich für den Aufruf des Templates nutze lautet:
SAPR3://SAPR3CMS/get/300/BDS_DB16/44297CF7FEEF0194000000000A6E0920/Excel_template.xls
Für mich sieht das nach UNIX aus. Es ist aber auch kein Pfad, wie ich ihn mit 'open dataset' (z.B. '/usr/sap/temp/Excel_fertig1.xls') benutzen würde.

Wer weiß, wie der URL-Eingabeparameter gebildet wird bzw. wie ich die verflixte Exceldatei sonstwie im Hintergrund abgespeichert bekomme (ohne das Template zu überschreiben) :?: :?: :?:

Beste Grüße

Tobias

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1048
Views
OLE - Excel-Vorlage mit n-Arbeitsblättern speichern
von s_arnold » 31.08.2006 10:28 • Verfasst in ABAP® Core
4
Antw.
4125
Views
Excel-Datei als PDF speichern
von klaus1704 » 25.07.2013 15:33 • Verfasst in ABAP Objects®
1
Antw.
8695
Views
Ranges in Excel speichern
von hmaxi96 » 08.01.2016 08:46 • Verfasst in ABAP® für Anfänger
2
Antw.
1915
Views
Dateiname und Verzeichnis als Excel-Datei speichern
von Bright4.5 » 04.10.2018 10:14 • Verfasst in ABAP® für Anfänger
8
Antw.
4935
Views
Excel Datei Lesen und in sap Tabelle speichern
von amjahid » 13.11.2007 09:44 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

RFC vs. ODATA
vor 19 Stunden von ewx 3 / 176
Druck von Etiketten via FP_PDF_TEST_01
vor 21 Stunden von Mr_Mkt 3 / 172

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.