xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

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

xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von DeathAndPain (Top Expert / 1806 / 214 / 396 ) »
Hallo zusammen,

zum Erzeugen von .xlsx-Dateien aus internen Tabellen verwende ich die Klasse CL_SALV_TABLE. Die Vorgehensweise ist hier beschrieben (Variante 1). Großer Vorteil des Ansatzes ist, dass er ohne OLE komplett auf dem Server läuft. Damit erfordert er kein installiertes Excel auf dem Clientrechner und ist auch hintergrundfähig.

Nun würde mich interessieren, ob es mit dieser Vorgehensweise auch möglich ist, die erzeugte Excel-Datei mit mehreren Tabreitern auszustatten, wobei jeder Tabreiter dann eine interne Tabelle beherbergt. Gibt diese Klasse das her?

Vielen Dank!

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


Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von a-dead-trousers (Top Expert / 4288 / 214 / 1143 ) »
Nope. Intern wird ein Template verwendet das nur mit einer Tabelle befüllt werden kann. Was du brauchst ist ABAP2XSLX.
https://community.sap.com/t5/applicatio ... p/13365240
Hier wird ABAP2XSLX zwar nur zum Zusammenfügen verwendet aber man sieht schön, dass mehrere Arbeitsblätter möglich sind. Ich persönlich würde im Sinne eines einheitlichen Ansatzes komplett auf ABAP2XSLX wechseln anstatt mehrere Technologien wie in diesem Beispiel zu mischen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von DeathAndPain (Top Expert / 1806 / 214 / 396 ) »
Vielen Dank. Aber da ich mittlerweile nicht mehr inhouse arbeite, sondern als Berater, ist es nicht praktikabel, Kunden nahezulegen, irgendwelche Fremd-Tools auf ihrem SAP-Server zu installieren, damit ich meine Reports besser schreiben kann. Damit werde ich wohl auf Tabs verzichten müssen.

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von rob_abc (ForumUser / 59 / 12 / 18 ) »
Nun, wäre es nicht eine Beratungsleistung dem Kunden gegenüber die Installation von ABAP2XSLX zu empfehlen? Es ist seit vielen Jahren DER Standard. Etwas anderes für Excel zu benutzen macht es allen anderen Entwicklern später nur schwerer. Wenn ABAPGIT schon da ist, dann dauert die Installation wenige Minuten. Ohne ABAPGIT ist eher doof, da Basis, Netzwerk und co benötigt wird, um die Verbindung zu GITHUB freischalten zu lassen.

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von DeathAndPain (Top Expert / 1806 / 214 / 396 ) »
Das Problem ist die praktische Durchsetzbarkeit. Wer kann entscheiden, ob das installiert werden soll? Wer hat die Berechtigungen auf dem Kundensystem UND das Know-How UND die Zeit UND den Willen, das zu tun? Wer bezahlt die Stunden, die für die Einrichtung mit Test und Gängig-machen anfallen? Wie soll man den Kunden überzeugen, all diesen Aufwand und ggf. Geld flüssig zu machen für ein Hintergrundtool, von dem er nichts direkt "spürt", nur damit ich ein bisschen besser für ihn programmieren kann?

Und das Tool ist kompliziert zu installieren. Ich habe bei meinem vorigen Arbeitgeber vor Jahren schon mal versucht, das zu machen und habe irgendwann aufgegeben, nach meiner Erinnerung weil die Installationsdoku so mies bzw. kaum vorhanden war bzw. nicht funktioniert hat. (Ich weiß nicht mehr genau, woran es gelegen hat; das ist Jahre her, aber ich würde vermuten, da waren irgendwelche Github-Repositories, die outdated waren und neue Versionen waren nicht vernünftig auffindbar oder ohne aktualisiertes Installationsskript mangels professioneller Produktpflege.) Und da war ich inhouse, hatte selbst alle Rechte und musste nicht jede Stunde dokumentieren, was ich gemacht habe und für wen, damit sie in Rechnung gestellt werden kann! Das ist halt das Problem bei offener Software: Niemand bezahlt dafür, also macht sich auch niemand die Mühe detaillierter und aktuell gehaltener Dokumentation.

Wenn ich es damals ums Verrecken hätte hinbekommen wollen, hätte ich es irgendwann sicherlich geschafft. Aber schon damals habe ich irgendwann die Relation zwischen Aufwand und Nutzen nicht mehr gesehen. Ich werde den Teufel tun, mir als neuer Mitarbeiter der Beratungsgesellschaft bei irgendwelchen Kunden dieserart die Finger zu verbrennen. Und das nur, damit ich bei Excel-Dateien, die ich auch so problemlos erzeugen kann, auch Tabreiter und vielleicht noch das eine oder andere Goodie nutzen kann.

Das passt alles nicht.

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von whaslbeck (ForumUser / 65 / 13 / 7 ) »
Hallo,

nur zur Info: ABAPGIT funktioniert auch ganz gut offline, d.h. du kannst auch ein ZIP aus github exportieren und mit ABAPGIT importieren.
Installation von ABAP2XLSX ist somit in ein paar Minuten erledigt, ohne die Basis zu belästigen etc.

Walter

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von black_adept (Top Expert / 3950 / 105 / 886 ) »
rob_abc hat geschrieben:
19.04.2024 07:59
. Ohne ABAPGIT ist eher doof, da Basis, Netzwerk und co benötigt wird, um die Verbindung zu GITHUB freischalten zu lassen.
Geht auch recht simpel ohne ABPAGIT, da irgendwo im GIT auch ein Transportfile rumliegt, der eine (ich glaube ich hatte das 2019 oder so gepusht ) brauchbare Version von ABAP2XLSX enthält, was die Installation ungemein vereinfacht.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von DeathAndPain (Top Expert / 1806 / 214 / 396 ) »
Ich kann nicht einfach in ein Kundensystem ein irgendwo heruntergeladenes Transportfile importieren. Und auch ABAPGit würde ich mich nicht trauen, ohne Absegnung durch den Kunden zu installieren. Immerhin ist das nach meinem Verständnis ein Programm, das eigenständig Verbindungen mit dem Internet aufnehmen und Sourcecodes in das SAP-System einspielen kann. Auch wenn es jemanden braucht, der nachher auf den Knopf drückt und das macht, sehe ich da im Prinzip ein mögliches Sicherheitsproblem (Stichwort "Lieferkettenangriff"). Auf diese Weise kommt Software ins System, die aus dem Internet heruntergeladen und auf dem Server installiert wird, ohne dass zwischendurch noch eine Fachkraft auf den heruntergeladenen Code draufschaut, ihn auf Unbedenklichkeit prüft und dann ins System übernimmt.

Bei meinem vorherigen Arbeitgeber habe ich ABAPGit nach meiner Erinnerung installiert. Aber da war ich Inhouse-Fachkraft mit entsprechenden Kompetenzen und Verantwortung. Als externer Berater hat man da schon eine etwas andere Position.

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von whaslbeck (ForumUser / 65 / 13 / 7 ) »
Hallo,
DeathAndPain hat geschrieben:
20.04.2024 13:30
Ich kann nicht einfach in ein Kundensystem ein irgendwo heruntergeladenes Transportfile importieren. Und auch ABAPGit würde ich mich nicht trauen, ohne Absegnung durch den Kunden zu installieren...
da stimme ich dir 100% zu. Als Inhouse Entwickler habe ich ein anderes Verständnis und einen anderen "Tellerrand" (in Bezug auf die lokale IT, Infrastruktur, Sicherheitspolicy etc.) und kann daher eher beurteilen, ob es sinnvoll ist, die externe Komponente XY zu installieren.
Von einem externen Dienstleister würde ich daher schon erwarten, das er auf mich zukommt wenn etwas in der Richtung vorhat. Dann kann man sich das zusammen anschauen und abwägen, ob es sinnvoll ist.

Das man sich mit der Installation von 3rd-Party Produkten immer auch ein Risiko einhandelt ist auch klar. Selbst wenn man sich die Mühe machen würde, jeden Sourccode zu auditieren, ist man nie 100% sicher (ich sag' nur xz Backdoor).

Schade ist halt, das ein in der Business-Welt so essenzielles und verbreitetes Tool wie Excel (ob man es mag oder nicht) von SAP nach wie vor nur sehr hablherzig unterstützt wird. Es gibt zig Klassen, aber jede ist anders kaputt. Wenn man als Entwickler dem Kunden ein einigermassen ansehnliches XLSX bauen will, bleibt nur ABAP2XLSX oder eine komplette Eigenentwicklung der Excel-Ausgabe. Aber das will kein Kunde bezahlen.

Walter

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von DeathAndPain (Top Expert / 1806 / 214 / 396 ) »
whaslbeck hat geschrieben:
20.04.2024 15:56
da stimme ich dir 100% zu. Als Inhouse Entwickler habe ich ein anderes Verständnis und einen anderen "Tellerrand" (in Bezug auf die lokale IT, Infrastruktur, Sicherheitspolicy etc.) und kann daher eher beurteilen, ob es sinnvoll ist, die externe Komponente XY zu installieren.
Und Du hast Ahnung und kannst dazu eine fundierte Meinung abgeben. Das ist keineswegs selbstverständlich. Viele Kunden haben keine eigene Entwicklungsabteilung und sind praktisch nur Anwender, die vom Berater wollen, dass er sie unterstützt, damit ihr System das tut, was es soll. Die können gar nicht beurteilen, wie ein ABAPGit oder ABAP2XLSX funktioniert und was es aus technischer Sicht (und Sicht der Risikoabwägung) bedeutet, sowas zu installieren. Dessen sind sie sich zumindest insoweit bewusst, als sie in Zweifel risikoavers sind. Ich glaube nicht, dass sich so ein Kunde auf ein solches Abenteuer einlassen würde, nur damit die aus SAP erzeugten Excel-Listen mehrere Tabreiter haben können. Die grundlegende Funktionalität der Erzeugung einer .xlsx-Datei bekommt man ja auch so hin.

Aber ja: weshalb die SAP das nicht fest einbaut, dass ABAP mit einfachen, vordefinierten Klassen vollwertige Office-Dokumente oder auch PDFs erzeugen kann, ist mir auch schleierhaft. Das ist ja keine Raketenwissenschaft; das kann heutzutage jedes LibreOffice (PDFs auch jeder Browser usw.).

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von DeathAndPain (Top Expert / 1806 / 214 / 396 ) »
Auf der anderen Seite verstehe ich aber auch nicht, weshalb ABAP2XLSX bzw. seine Installation so kompliziert gestrickt sein muss, dass man zur Installation Riesenfaxen machen muss mit Git und so und ohne aufwendige Analyse gar keinen Überblick mehr hat, was man sich damit alles wo installiert. Im Grunde müsste es doch möglich sein, diese Funktionalität in eine große Klasse zu packen. Auch von SE24-Klassen gibt es eine Quellcodeansicht, die die vollständige Klasse mit Definition und Implementation in einem geschlossenen Quelltext (d.h. einfach nur Textdatei, die man theoretisch auch in ein Forum wie dieses hier posten könnte) anzeigt - Eclipse stellt Klasse ja immer so dar, und das finde ich sogar angenehmer als die fragmentierte Darstellung in der SE24, in der man immer nur einen Ausschnitt des Quellcodes (Methode, Attributliste etc.) so dargestellt bekommt, als ob er ein eigenes Include wäre.

Wenn man ABAP2XLSX einfach als (include-freie) geschlossene ASCII-Datei herunterladen und per Copy&Paste in eine in der SE24 rasch neu angelegte und in Eclipse geöffnete Klasse reinkopieren könnte, dann hätte ich bedeutend weniger Bauchschmerzen damit. Dann würde ich wissen, dass ich diese eine Textdatei und sonst keinen Befehl Code in das System übernehme, und jemand, der ABAP kann, kann solch Textdatei auch überfliegen und sich einigermaßen ein Gefühl dafür verschaffen, was sie tut und dass sie nichts tut, was sie nicht tun soll. Aber Git und drück auf den Knopf und dann wird direkt aus dem Internet heruntergeladen und irgendwo im System installiert und man hat gar kein Gefühl dafür, was da alles installiert worden ist und wo - das ist mir nix. Und von der Anforderung her, einfach nur eine (XLSX-Export-)Klasse bereitzustellen, die in ABAP geschrieben ist und nichts anderes macht als das, finde ich solch Installationsoverhead auch komplett unnötig.

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von whaslbeck (ForumUser / 65 / 13 / 7 ) »
Hallo,
DeathAndPain hat geschrieben:
20.04.2024 19:40
Auf der anderen Seite verstehe ich aber auch nicht, weshalb ABAP2XLSX bzw. seine Installation so kompliziert gestrickt sein muss...

Wenn man ABAP2XLSX einfach als (include-freie) geschlossene ASCII-Datei herunterladen und per Copy&Paste...
Das sehe ich auch als grösstes Problem von OpenSource ABAP Komponenten - oder generell von OpenSource Komponenten. Die Komplexität der Installation ist halt auch ein wesentlicher Akzeptanzfaktor.
Wenn ich nach OpenSource-Lösungen für ein aktuelles Problem suche, landen die mit den meisten Dependencies und dem grösseren "Installationshandicap" erst mal weiter unten auf der Liste von Dingen, die man sich ansieht.
Im Falle ABAP Komponenten wäre die Idealvorstellung tatsächlich ein einzelnes Objekt, also eine Klasse oder ein Report. Leider gibt es das nicht so oft. ABAPGIT_STANDALONE ist da ein gutes Vorbild. Copy'n'Paste - fertig.
ABAP2XLSX hat leider alles, was man eigentlich nicht unbedingt haben will (DDIC Objekte, Klassenhierachien und Interfaces etc.). Auch wenn die Installation an sich eigentlich sehr schnell erledigt ist (wie vorher schon mal geschrieben geht das auch offline mit Import des ZIP-Archivs aus Github), hat man sich trotzdem viel Zeug in den Namensraum eingetreten.

Aber in der Abwägung was mir ABAP2XLSX an Möglichkeiten bringt und Entwicklungszeit spart, gehe ich diesen Kompromiss gerne ein.

Walter

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von ST22 (Specialist / 277 / 41 / 40 ) »
ABAP2XLSX ist aber doch auch als Gemeinschaftsprojekt entstanden und ich denke, nur durch die Aufteilung und Strukturierung war das so möglich.
Wenn man so viel Nutzen mehr oder weniger kostenfrei bekommt, kann man sich bei der Installation auch ein wenig Mühe geben und Aufwand reinstecken.
VG
Frank
P.S. Ich verstehe natürlich, dass das bei externen Kunden nicht so ohne weiteres geht

Re: xlsx mit CL_SALV_TABLE aus interner Tabelle erstellen - kann man auch mehrere Tabreiter erzeugen?

Beitrag von whaslbeck (ForumUser / 65 / 13 / 7 ) »
ST22 hat geschrieben:
21.04.2024 17:57
ABAP2XLSX ist aber doch auch als Gemeinschaftsprojekt entstanden und ich denke, nur durch die Aufteilung und Strukturierung war das so möglich.
Wenn man so viel Nutzen mehr oder weniger kostenfrei bekommt, kann man sich bei der Installation auch ein wenig Mühe geben und Aufwand reinstecken.
das ist klar und ich habe auch größten Respekt vor Entwicklern, die ihre z.T. unbezahlte Freizeit in solche Projekte stecken.

Das man jedoch auch ein verteiltes Entwicklungsmodell mit getrennten Objekten und eine einfache Auslieferung an den "Endkunden" unter einen Hut bekommen kann, zeigt das ABAPGIT Projekt: Entwicklung als Gemeinschaftsprojekt - aber mit klaren Development Guidelines.
Damit ist es dann auch möglich einerseits mit getrennten Klassen und Interfaces etc. zu arbeiten und anderseits durch einen Build-Prozess mit abapmerge letztendlich ein einzelnes Objekt zu erzeugen.

Walter

Seite 1 von 1

Vergleichbare Themen

7
Antw.
972
Views
JSON-String aus interner Tabelle erstellen
von DeathAndPain » 11.01.2021 17:04 • Verfasst in ABAP® Core
2
Antw.
3888
Views
Salv Table - Layouts speichern
von JohnLocklay » 14.06.2019 11:33 • Verfasst in ABAP Objects®
3
Antw.
1946
Views
GUI Status verhindert on click Event des SALV Table
von Pinguincommander » 05.02.2019 09:51 • Verfasst in ABAP® Core
1
Antw.
6163
Views
Net Connector Table RMPS_T1024 / TBL1024 erzeugen
von Hellfire » 19.09.2014 19:27 • Verfasst in Development Related
2
Antw.
2090
Views
Problem beim Erstellen eines Table Controlls
von Nautilus » 05.11.2005 17:17 • Verfasst in Dialogprogrammierung

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.