Word Upload

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Word Upload

Beitrag von Ichse2 (ForumUser / 28 / 9 / 0 ) »
Hallo zusammen,

ich habe die Aufgabe einen vergleich zwischen einem Word und einem SO10 Text zu machen. Mein Problem ist jetzt, dass ich das ganze mit einem GUI_UPLOAD machen wollte aber dann nicht weiß wie ich das ganze weiterformatieren muss um an den Text in der Word zu kommen. Abgespeichert ist das ganze als .docx.
Wäre nett wenn mir jemand helfen kann und bitte keine Internetlinks die hab ich quasi schon durch.

Danke im Vorraus.
Gruß

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


Re: Word Upload

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Für RTF gäbe es einige Import-Optionen, die aber nur den Umfang von RTF 1.5 (oder 1.4?) unterstützen. DOC ist ein Microsoft-spezifisches Format und da kann man maximal über OLE von SAP aus zugreifen. DOCX ist ein auf XML basierendes Format und sollte sich daher auch direkt in SAP bearbeiten lassen (wenn man XML versteht). Es gibt auch eine Library dafür (ABAP2DOCX) aber die scheint leider etwas outdated zu sein. Dann hätte ich da noch auf die Schnelle die Klasse CL_XSL_DOCX gefunden, aber was genau das XSL-FO Format ist mit dem gearbeitet wird, kann ich nicht sagen und vor allem wie man das in einen SO10-Text verwandeln kann.

Nichtsdestotrotz wirst du bei deinem Import Probleme von ganz anderer Seite bekommen: SAPscript (wo die SO10 dazugehört) verwaltet die Formatierungen in sogenanten Stylesheets währen in Word das alles entweder direkt im Text oder zumindest als Formatvorlagen abgespeichert wird. Diese Informationen sind nicht oder nur bedingt kompatibel. Eine reiner textueller Vergleich zwischen SO10 und Word sollte problemlos möglich sein. Sobald aber Formatierungen wie "Fett", "Unterstrichen" usw. dazukommen wird das nicht mehr (so leicht) funktionieren.

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

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: Word Upload

Beitrag von Ichse2 (ForumUser / 28 / 9 / 0 ) »
a-dead-trousers hat geschrieben:
17.11.2020 10:31
Für RTF gäbe es einige Import-Optionen, die aber nur den Umfang von RTF 1.5 (oder 1.4?) unterstützen. DOC ist ein Microsoft-spezifisches Format und da kann man maximal über OLE von SAP aus zugreifen. DOCX ist ein auf XML basierendes Format und sollte sich daher auch direkt in SAP bearbeiten lassen (wenn man XML versteht). Es gibt auch eine Library dafür (ABAP2DOCX) aber die scheint leider etwas outdated zu sein. Dann hätte ich da noch auf die Schnelle die Klasse CL_XSL_DOCX gefunden, aber was genau das XSL-FO Format ist mit dem gearbeitet wird, kann ich nicht sagen und vor allem wie man das in einen SO10-Text verwandeln kann.

Nichtsdestotrotz wirst du bei deinem Import Probleme von ganz anderer Seite bekommen: SAPscript (wo die SO10 dazugehört) verwaltet die Formatierungen in sogenanten Stylesheets währen in Word das alles entweder direkt im Text oder zumindest als Formatvorlagen abgespeichert wird. Diese Informationen sind nicht oder nur bedingt kompatibel. Eine reiner textueller Vergleich zwischen SO10 und Word sollte problemlos möglich sein. Sobald aber Formatierungen wie "Fett", "Unterstrichen" usw. dazukommen wird das nicht mehr (so leicht) funktionieren.
Hi,
erstmal danke für die schnelle Antwort.
Die Formatierung ist mir in dem Fall egal und ich muss den Word inhalt auch nicht in einen SO10 Text bekommen. Ich werde sowohl den SO10 Text Inhalt als auch den Word Inhalt in eine Itab packen und miteinander vergleichen also gilt es nur den Inhalt von der Word in eine Itab zu bekommen. War vielleicht etwas ungünstig beschrieben. Also deine Empfehlung mal mit der Klasse CL_XSL versuchen, nachdem ich die Word mit dem GUI_UPLOAD gezogen habe?

Re: Word Upload

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Jein 😉
Wie gesagt, sagt mir XSL-FO nicht wirklich was und daher weiß ich auch nicht ob man das so einfach weiterverwenden kann.

Meine Empfehlung wäre eher RTF zu verwenden:
Einfach im Word nicht als DOCX sondern als RTF abspeichern, hochladen und dann mit CONVERT_RTF_TO_ITF in dasselbe Format wie der SO10-Text umwandeln.

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

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: Word Upload

Beitrag von Ichse2 (ForumUser / 28 / 9 / 0 ) »
a-dead-trousers hat geschrieben:
17.11.2020 13:36
Jein 😉
Wie gesagt, sagt mir XSL-FO nicht wirklich was und daher weiß ich auch nicht ob man das so einfach weiterverwenden kann.

Meine Empfehlung wäre eher RTF zu verwenden:
Einfach im Word nicht als DOCX sondern als RTF abspeichern, hochladen und dann mit CONVERT_RTF_TO_ITF in dasselbe Format wie der SO10-Text umwandeln.
Und wie würdest du dann den Upload machen?? Weil mit dem GUI_UPLOAD und der Einstellung ASC bekomm ich eine unformatierbare Tabelle zurück. Auch wenn ich eine RTF verwende.

Re: Word Upload

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Da die Daten an den Baustein über den Parameter X_DATATAB übergeben werden, bringt ein ASC Upload nicht viel. Du musst BIN verwenden. In der Schnittstelle von CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD gibt es keine Einschänkung welchen Parametertyp du für DATA_TAB verwenden musst, daher kannst du auch eine Variable vom Typ TDTAB_X256 (Analog zu X_DATATAB) verwenden. So ersparst du dir auch eine zusätzliche Konvertierung.

Ach ja, eines ist bei BIN-Tabellen ganz besonders wichtig: Die Längenangabe, da die Laufzeit ja sonst nicht weis an welcher Position in der letzten Tabellenzeile der Dateiinhalt tatsächlich endet. Daher immer den Parameter FILELENGTH von GUI_UPLOAD versorgen und an die weiterverarbeitenden Bausteine mitgeben.

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

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: Word Upload

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
Was du brauchst ist der Text, der Rest drumherum interessiert dich ja nicht, auf jeden Fall sollte eine .txt dabei rauskommen, dann hat man gute Chancen:
alles in einen String packen, condense ausführen und beide Strings vergleichen. Wenn du Glück hast stimmt es, wenn nicht musst du wohl Stelle für Stelle die erste Differenz suchen um wenigstens protokollieren zu können wo die Unterschiede anfangen. irgendwie so

Re: Word Upload

Beitrag von Ichse2 (ForumUser / 28 / 9 / 0 ) »
deejey hat geschrieben:
19.11.2020 08:57
Was du brauchst ist der Text, der Rest drumherum interessiert dich ja nicht, auf jeden Fall sollte eine .txt dabei rauskommen, dann hat man gute Chancen:
alles in einen String packen, condense ausführen und beide Strings vergleichen. Wenn du Glück hast stimmt es, wenn nicht musst du wohl Stelle für Stelle die erste Differenz suchen um wenigstens protokollieren zu können wo die Unterschiede anfangen. irgendwie so
So einfahc ist es leider nicht. An dieser Stelle erst einmal danke an den Beitrag von trousers der war perfekt. Als RTF konnte ich es jetzt uploaden.
Nächstes Problem ein halbwegs anständiger und simpler weg für den vergleich. Hierbei hab ich zwei itabs die ich vergleichen muss (Zeile für Zeile). Heißt aber wenn eine neue Zeile eingefügt wurde muss ich den Inhalt der anderen Tabelle um eine Zeile verschieben. Das Problem ist rauszufinden in welcher Tabelle etwas neu ist und wo es evtl. hingeschoben wurde usw.
Im Prinzip will ich das hier: https://prlbr.de/2015/textvergleicher/.

Re: Word Upload

Beitrag von tm987456 (ForumUser / 72 / 42 / 15 ) »
Kannst dir das Javascript der Webseite doch anschauen.
https://prlbr.de/2015/textvergleicher/textdiff.js

Re: Word Upload

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Ja, das in ABAP nachzubauen ist ne schöne Fingerübung.
Als Anfägner kann man da einiges daraus lernen:
Die Programmlogik ist ja da und sie funktioniert, also braucht man sich darber keine Gedanken zu machen. Man muss es nur noch in die Syntax der jeweiligen Programmiersprache übersetzen. Mit der Website hat man auch gleich eine Vergleichsmöglichkeit. Perfekt.

Eine kleiner Auszug welche Dinge aus ABAP sicher benötigt werden:

Code: Alles auswählen.

* Teilfeldzugriff auf Zeichenfolge:
ld_teil = ld_text+1(3).
* bzw.
ld_teil = ld_text+ld_index(ld_length).

* Zeichenketten zusammenfügen.
ld_text = ld_text1 && ld_text2 && ld_text3.
* bzw.
concatenate ld_text1 ld_text2 ld_text3 into ld_text.

* Werte zu einer liste hinzufügen:
DATA: lt_text TYPE STANDARD TABLE OF ty_text WITH NO KEY. "= Liste in Javascript
APPEND ld_text TO lt_text.

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

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: Word Upload

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Es gäbe da noch den Funktionsbaustein SVRS_MAKE_TEXT_DELTA wobei ich auf die Schnelle nicht sagen kann ob der so ein tolles Ergebniss wie "diff" liefert, weil der Baustein intern die Verarbeitung auf eine Kernel-Methode abwälzt.
Wie man den korrekt aufruft müsste man anhand des Verwendungsnachweis erruieren können.

EDIT: Über den Verwendungsnachweis hab ich mehrere Möglichkeiten gefunden.
Text in Struktur ABAPTXT255 => Vergleichsergebnisstruktur VXABAPT255
Text in Struktur ABAPTEXT => Vergleichsergebnisstruktur XABAPTEXT
Text in Struktur D022S => Vergleichsergebnisstruktur XD022S

Demnach baut das Ganze auf die Spaltenbezeichner VRSFLAG, NUMBER und LINE auf.

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

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: Word Upload

Beitrag von Alpmann (ForumUser / 62 / 5 / 19 ) »
Hallo Ichse2,

ich habe mich bisher nicht "eingemischt", da ich zu einem Word Upload nichts beisteuern kann. Allerdings habe ich bei uns auch schon mal Texte analysiert. Dies habe ich allerdings wie folgt gemacht:

Mittels des FUBA RFC_READ_TEXT habe ich mir die Texte ins Access gezogen. Dazu habe ich vorab in der Tabelle STXH geschaut, welche Keys ich benötige. Ein kompletter Text ist dann in ein einzelnes Feld geschrieben worden. Ich bin dann nicht mehr auf der Ebene einer Textzeilentabelle.

Konkret habe ich bei uns Informationen aus Texten, die in SD-Aufträgen stehen analysiert. Textpassagen sollten dann zum Teil entfernt werden und die Information in die Kundenklassifizierung übertragen werden.

Das waren dann Fälle, wo zum Beispiel stand "Bitte keine Paletten stapeln." Dies gab es dann in mehreren Sprachen, mit * Blöcken verziert, usw...

Diese Information wird zum Beispiel mittlerweile dazu genutzt, um ein entsprechendes A5 Etikett für die Palette automatisch zu drucken, wenn die VDA-Etiketten für den Warenausgang erstellt werden.

Die Texte konnte ich dann schön innerhalb von Access filtern und auswerten. Wenn hier Leerzeilen den Text verschieben habe ich damit kein Problem.

Ich habe auch schon mal Texte aus den Einkaufsinfosätzen durchsucht, ob da die Lieferantenartikelnummer drin steht und diese mit dem passenden Feld verglichen. Da habe ich einfach mittels VBA instr geguckt, ob die Lieferantenartikelnummer in dem Text vorkommt, oder nicht. Der Rest des Textes war mir an der Stelle dann aber wieder egal.

Hat dann nicht mehr so viel mit ABAP zu tun, wäre aber auch eine Möglichkeit.

mit freundlichen Grüßen
Matthias Alpmann

Folgende Benutzer bedankten sich beim Autor Alpmann für den Beitrag (Insgesamt 2):
Ichse2a-dead-trousers


Seite 1 von 1

Vergleichbare Themen

8
Antw.
3215
Views
OLE - Word-Datei
von Kerstin » 16.07.2008 11:38 • Verfasst in ABAP® Core
2
Antw.
1767
Views
Word ruft SAP
von sapalot » 08.09.2005 20:14 • Verfasst in ABAP® Core
4
Antw.
3129
Views
ABAP und Word?
von ROL_ABAP » 13.12.2012 21:34 • Verfasst in ABAP® für Anfänger
2
Antw.
2353
Views
Word in SAPGui
von Beni » 24.10.2005 11:03 • Verfasst in Dialogprogrammierung
0
Antw.
551
Views
OLE WORD Textmarke
von Kerstin » 21.02.2019 11:15 • Verfasst in ABAP® Core

Über diesen Beitrag



Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 549
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2177
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8772