Komprimieren von HTML im Viewer

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

Komprimieren von HTML im Viewer

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
hi!

Hat hier schon mal jemand versucht dem HTML-Viewer (CL_GUI_HTML_VIEWER) komprimierte HTML-Daten zu schicken?
Ich soll eine Anwendung schreiben, die Daten möglichst flexibel darstellen soll:
Mehrzeilig, Scrollen, Positionieren, Formatieren, Auswählen usw.
Na klar, dass da HTML (inkl. Jquery und CSS) die beste Wahl ist.
Wir haben bereits so eine Anwengung im Einsatz, nur leidet diese an der Datenflut, die ein CL_DD_DOCUMENT erstellt. Daher hab ich das ganze jetzt in Richtung IXML (CL_IXML), CSS und JQuery umgebaut. Der Code ist um einige schlanker und vorallem lasbarer als der "Mist" den ein CL_DD_DOCUMENT erzeugt.
Ich bin auch Web-Entwickler, daher muss mein HTML-Code gewissen Qualitätsansprüchen gerecht werden ;)

Nun, wie gesagt, der Code ist um einige schlanker und die CSS Daten sowie die Script-File werden in separaten Dateien zum Gui übertragen. Diese ändern sich auch nicht im Lauf der Anwendung. Serwohl aber das HTML-Dokument.
Ich hab noch etliche Mechanismen eingebaut, dass nur dann Daten übertragen werden, wenn sich tatsächlich etwas ändert usw.
Das ganze funktioniert inzwischen wieder angenehm zügig im Vergleich zu früher.

Aber dennoch denke ich, dass es durchaus sein kann, dass das HTML Dokument irgendwann wieder zu groß werden könnte. Da wäre es natürlich toll wenn ich die Daten für die Übertragung komprimieren könnte. z.B. mit GZIP. Vom HTTP-Protokoll her gibt es ja den "Content-Encoding: gzip" Header, den ein Server schicken soll, damit der Browser die komprimierten Daten richtig verarbeitet.

Wie kann ich also den HTTP-Server(?) am SAPgui, der die Daten an den IE ausliefert, dazu bewegen einen zusätzlichen Header mit den Daten mitzuschicken?
Oder gibt es eine Möglichkeit, wie ich die Daten SAP-seitig derart modifizieren kann, dass der IE "denkt" es würde ein Header mitgeschickt werden und er die komprimierten Daten richtig darstellt.

Ich weiß, ist ne sehr tricky Frage, aber vielleicht gibts hier ja noch jemanden wie mich, der nicht eher ruhen kann, bis er alles versucht hat.
Jemand der bis in die tiefsten Tiefen des Systems vordringt und keine Skrupel besitzt auch undokumentierte Funktionen zu verwenden :evil:

lg ADT
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

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


Re: Komprimieren von HTML im Viewer

Beitrag von d2demo (ForumUser / 1 / 0 / 1 ) »
Hi,

so wie ich HTTP verstehe, ist dort keine Komprimierung in der von Dir gewünschten Weise vorgesehen. Man kann natürlich im HTTP body Binärcode schicken und dem Browser per Eigenschaften klar machen, wie er damit umgehen soll, aber das passiert dann alles jenseits von HTTP.

Überleg mal, wie Du es in einem non-SAP Umfeld machen würdest. Das Auspacken und Integrieren des so dekomprimierten HTML Codes ins DOM muss der Clientcode selbst bewältigen. Bei non-SAP könnte man den "Auspackcode" (HTML Hülle mit Javascript) vorausschicken und per AJAX das gezippte eigentliche HTML ansynchron nachladen, mit Javascript auspacken (falls es eine geeignete Lib dafür gibt) und ins DOM integrieren.

Der cl_gui_html_viewer erlaubt aber keine ansynchrone Kommunikation (oder doch?), also geht das mit dem Nachladen nicht. Somit bliebe nur, das gezippte HTML und den "Auspackcode" gemeinsam in einem HTTP body zu übertragen. Der "Auspackcode" ist HTML mit Javascript und wie bringt man dort Binärcode unter? Vielleicht eine Javascript Variable definieren die den Binärcode des Zipfiles Base64-codiert enthält. Ich fürchte jedoch, dass die Base64 Codierung wieder etwas von dem auffressen würde, was Du durch die Komprimierung einsparen wolltest.

Bei großen HTML Seiten verliert man leicht den Überblick, wenn die eigentlichen Daten mitten im HTML eingestreut sind. Übersichtlicher wäre da eine Trennung von Daten und HTML, bspw. Daten als XML (iXML) und Generierung des HTML Codes aus diesem XML mit einem geeigneten XSL Stylesheet. Das XSL braucht dann nicht so häufig geändert werden, weil das Veränderliche ja die Daten (XML) sind (Anregung: https://bitbucket.org/repo/all?name=adsadi).

Viele Grüße,
dd

Folgende Benutzer bedankten sich beim Autor d2demo für den Beitrag:
a-dead-trousers


Re: Komprimieren von HTML im Viewer

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
Hi!

Danke mal für die Anregungen.
Normalerweise kann man den Browser mittels zusätzlichem Header (ist Teil der HTTP-Kommunikation mit dem Browser) anweisen, die Daten als gezipptes HTML zu sehen und dies im ersten Schritt auspacken zu lassen. Aber das ist ja das Problem, dass ich nicht weiß wie ich einen zusätzlichen Haeder mitschicken kann. In PHP, dass auf einem WebServer laufen würde, wäre dies der Befehl HEADER().

Dein Hinweis mit XML und XSL ist aber meines erachtens noch um einiges besser 8)
Auf die Idee bin ich bislang noch gar nicht gekommen. Ich hab zwar die Scripte und das Stylesheet in eigene Dateien ausgelagert um sie nicht jedesmal erneut übertragen zu müssen, aber dies auch mit den Daten zu versuchen... Genial!

Voerst werd ich es aber so lassen wie bis jetzt, da ich in dieser Form das HTML mittels Rechtsklick anschauen und auch downloaden kann um etwaige Fehler ohne SAP-Beteiligung testen zu können. Aber sofern es mal Problem wegen der Übertragung gibt, hab ich somit noch ein Ass im Ärmel :up:

thx ADT
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: Komprimieren von HTML im Viewer

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
Hi!

Ich muss dieses Thema wieder mal herauskramen. Nach dem Vorschlag von d2demo hab ich vor ca. zwei Jahren eine Implementierung mit XSL-Transformation auf dem Client verwirklicht. Diese hat auch einigermaßen gut funktioniert. Weil es aber Probleme bei der Stabilität des IE gegeben hat, hab ich dann die Möglichkeit zur Client-Transformation mitels Parameter wieder ausgeschalten. Damals ist der Browser (CL_GUI_HTML_VIEWER) ohne Grund plötzlich abgestürzt und hat den ganzen SAPgui mit in den Tod gerissen. Meine Vermutung war, dass die damals noch neue Variante des IE mit getrennten Prozessen je Fenster schuld daran ist. Wäre nicht das erste Mal gewesen, dass die SAP hier hinterherhinkt.
Wie dem auch sei, sind inzwischen wieder einige Jahre ins Land gezogen und damit auch ein neuer Browser sowie ein neuer SAPgui. Daher wollte ich mal nachschauen, ob inzwischen die Probleme korrigiert wurden.
Jedoch funktioniert die XSL-Transformation nun gar nicht mehr. Ich sehe einfach nur eine weiße Seite mit allen Text-Knoten des XML (nicht das DOM). In der Quellcode-Anzeige wird der XML-Code angezeigt. Früher kam hier die Meldung, dass eine Anzeige aufgrund der Transformation nicht möglich sei.
Sowohl das XML als auch das XSLT wird mit CL_GUI_HTML_VIEWER->LOAD_DATA an den Client geschickt. Im XML hab ich die Anweisung
<?xml-stylesheet type="text/xsl" href="..."?>
drinnen. Das Ganze hab ich sowohl mit der relativen URL als auch mit der absoluten URL (mit SAPHTMLP://htmlviewer.sap.com/...) versucht, aber immer das gleiche Ergebnis.

Weiß jemand...
...ob das generell von der SAP unterbunden wurde? (siehe Absturzproblem im IE)
...wie man im HTML-Viewer die Debug-Console öffnen kann, damit man evtl. Fehler im IE einsehen kann?

Meine Vermutung ist, dass nicht unbedingt die Transformation abgeschaltet ist, sondern dass irgendeine Sicherheitseinstellung (IE, SAP; evtl. wegen XSS) das verhindert. Wenn ich die Error-Logs des IE einsehen könnte, wüsste ich ob es beim Laden des XSL evtl. einen Fehler gibt.

Und nein, das XSL ist vollkommen in Ordnung. Wenn ich es in ABAP (CALL TRANSFORMATION) ausführen lasse, funktioniert es wunderbar.

lg ADT
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

Seite 1 von 1

Vergleichbare Themen

4
Antw.
3684
Views
HTML-Viewer-Control verändert HTML-Quelltext
von paramedic78 » 07.01.2013 14:50 • Verfasst in ABAP® für Anfänger
1
Antw.
1973
Views
XML mit HTML-Viewer?
von ernst » 10.12.2004 13:12 • Verfasst in ABAP Objects®
1
Antw.
1498
Views
HTML-Viewer Formulare
von Stefan7777 » 21.04.2006 11:19 • Verfasst in ABAP® Core
0
Antw.
856
Views
HTML Viewer Berechtigungen mitgeben
von Dyrdek » 08.05.2015 08:47 • Verfasst in ABAP® Core
0
Antw.
1477
Views
Dynamische Dokumente und HTML-Viewer
von webster » 02.01.2007 14:01 • Verfasst in ABAP Objects®

Über diesen Beitrag


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

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.