Dokumente per Batch-Lauf aus DMS runterladen

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

Dokumente per Batch-Lauf aus DMS runterladen

Beitrag von raiden (ForumUser / 7 / 0 / 0 ) »
Hallo zusammen,

ich möchte Nachts im Hintergrund per Scheduler Daten aus dem DMS runterladen.
Also GUI_DOWNLOAD fällt schon mal raus.

Ich bin schon so weit, dass ich die Binärdaten mit dem FuBa "SCMS_DOC_READ" bekomme an der TABLES Schnittstelle "content_bin"

Diese müsste ich jetzt irgendwie in ein Dokument schreiben.

Dazu verwende ich "OPEN DATASET FOR OUTPUT IN BINARY MODE" und "TRANSFER ls_bin-line TO file"
innerhalb eines LOOP mit dem ich Zeilenweise die Binärdaten reinschreibe.

Die Datei wird erstellt hat aber 0 Byte.

Es sind verschiedene Dateien die rausgezogen werden sollen, pdf, tif, jpg etc...

Die Frage ist jetzt muss ich die Daten vorher irgendwie konvertieren? In einen String oder so?
Rein von der Logik her denke ich es ist nicht richtig Binärdaten zeilenweise auszugeben...

Danke schonmal für eure Hilfe!

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


Re: Dokumente per Batch-Lauf aus DMS runterladen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hi!

Grundsätzlich passt es eh wie du es gemacht hast, nur glaub ich ist im BINARY MODE auch die bei jedem Satz zu schreibende Dateigröße mit anzugeben.
(Mit Ausnahme bei einem XSTRING) Sonst hast du hinten außerdem unnötigte NULL-Bytes in der Datei die uU. zu Fehlern führen könnten.

So wie ich den Baustein verstehe, können in der Schnittstelle auch mehrere sog. Komponenten (= Dateien) zurügkgeliefert werden.
Die genauen Infos darüber stehen in ACCESS_INFO.
Ich würde daher an deiner Stelle aus den Daten in einem ersten Schritt einen XSTRING in der richtigen Länge(!) basteln, bevor du die Daten wegsicherst:

Code: Alles auswählen.

data: ld_stream type xstring.
field-symbols: <ls_access> type scms_acinf.
loop at lt_access assigning <ls_access>.
  concatenate lines of lt_content from <ls_access>-first_line to <ls_access>-last_line into ld_stream in byte mode.
  ld_stream = ld_stream(<ls_access>-comp_size). "Die richtige BYTE-Länge
* Ab hier kann die aktuelle Datei gefahrlos weiterverarbeitet werden.
  ...
endloop.
So kannst du die Daten dann problemlos etweder mit OPEN DATASET/TRANSFER ablegen oder z.B. per FTP (FTP_R3_TO_SERVER) übertragen.

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

Re: Dokumente per Batch-Lauf aus DMS runterladen

Beitrag von raiden (ForumUser / 7 / 0 / 0 ) »
Hi, erstmal danke für die Antwort!

Ich habe das so mit deinem Beispiel-Code versucht aber da gibt es einiges was so nicht funktioniert.

Erstmal gibts bei CONCATENATE kein FROM und TO.
Das zweite Problem er meckert, dass der Zeilentyp von lt_content kein Byte Code ist...

Daraufhin hab ich die Funktion SCMS_BINARY_TO_XTRING gefunden die mir einen XSTRING zurückgeben soll.

Damit funktioniert es aber auch nicht. Die exportierten Dateien haben immer noch 0 Bytes...

>>Muss ich vielleicht noch etwas beachten, da es auf einem Windows System gespeichert werden soll?

Re: Dokumente per Batch-Lauf aus DMS runterladen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hi!

Sind in der Tabelle CONTENT_BIN überhaupt Daten?

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

Re: Dokumente per Batch-Lauf aus DMS runterladen

Beitrag von raiden (ForumUser / 7 / 0 / 0 ) »
Hi,

habs debuggt und funktioniert wenn ich nach dem ersten TRANSFER... stoppe und die übertragene PDF Datei öffne.
Er überschreibt mir aber im 2ten Lauf (innerhalb des LOOPs in dem das ganze steckt) die Datei auf 0 Byte weil er da keine Daten findet und den alten Dateinamen noch verwendet.
Mir fehlen wohl noch ein paar IFs und CLEARs.

Von Prinzip her funktioniert es aber super, Danke dir!

An alle die es interessiert, ich habe es dann doch mit dem FUBA 'SCMS_BINARY_TO_XSTRING' gelöst mit dem ich beim Importing-Parameter 'BUFFER' einen XSTRING erhalte und den mit

Code: Alles auswählen.

OPEN DATASET filename IN BINARY MODE FOR OUTPUT MESSAGE error.
 TRANSFER ld_stream TO filename.
CLOSE DATASET filename.
dann in eine Datei in ein freigegebenes Verzeichnis auf einen Windows SNC-Pfad schreibe. (\\server-xyz123\Freigabe\Unterverzeichnis)

Vielen Dank nochmal für die Anregungen!

Seite 1 von 1

Vergleichbare Themen

2
Antw.
4014
Views
SAP-Dokumente Auschecken für Batch
von Dabap » 03.05.2010 12:11 • Verfasst in ABAP® für Anfänger
1
Antw.
7044
Views
ITS - Handgerät will Website runterladen statt darstellen
von TanteAbap » 27.08.2014 11:03 • Verfasst in Web Application Server
3
Antw.
2128
Views
Die Liste als Datei runterladen und Excel weiter zubearbeitn
von philip » 13.01.2017 09:31 • Verfasst in ABAP® für Anfänger
2
Antw.
3508
Views
0
Antw.
1360
Views

Ü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.

Unbeantwortete Forenbeiträge

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