eine Anforderung lautet, dass ein Dokument aus dem Archiv in einer externen Software angezeigt werden soll. Dazu callt diese einen RFC-fähigen FUBA (mit dem Dokumentenlink) und als Ergebnis soll man dort das Dokument sehen. Weiß hier wer, wie das funktionieren könnte? Das Dokument anzeigen würde ja einfach über den FUBA OBJECT_DISPLAY_CONNECTIONS gehen, aber das würde dann ja im SAP und nicht auf der externen Software zu sehen sein oder?
Der RFC Baustein müsste das Archiv-Object (ARCHIVOBJECT_GET_TABLE) auslesen und in Form von BINÄR-Daten zurückliefern.
(Entweder XSTRING oder Tabelle mit Binärem Zeilenaufbau)
Die externe Software muss natürlich mit SAP-RFC Aufrufen umgehen können (Login, RFC-Protokoll usw.)
Alternativ könntes du auch einen Webservice mit derselben Funktion in SAP bereitstellen. Dann entfält das RFC-Protokoll und evtl. auch der Login (Kommt auf die gewünschten Sicherheitsvorkehrungen an)
Wenn das externe Programm über den SAPgui aufgerufen wird, könntest du das Dokument auch per GUI_DOWNLOAD erst auf die Platte des Benutzers packen und dann per Aufrufparameter des Programms (sofern vorhanden) aufrufen.
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.
Ahh, vielen Dank für den Hinweis. Verstehe ich das also erstmal richtig, dass ich diesem FB neben der Objekt-ID dann noch eine Tabelle bei BINARCHIVOBJECT mitgeben muss, die dann automatisch mit den Binärzeilen gefüllt werden würde, die übergebe ich dann an das externe Programm, was daraus das Dokument herstellen muss?
Du musst aber auch die BINLENGTH mit übergeben.
Da es sich bei BINARCHIVOBJECT um eine Tabelle mit fixer Zeilenlänge handelt, stehen in der letzten Zeile am Schluss "unnötige" Leerzeichen und da kann es vorkommen, dass andere Programme damit ein Problem haben. Über BINLENGTH (die gesamte Dateigröße) kann man dann nachdem alle Zeilen der Tabelle zusammengefügt wurden die Leerzeichen am Ende abschneiden.
Meine Empfehlung: Mach das alles in SAP und gib bei deinem neuen RFC-FB (od. Webserivice) ein Feld vom Typ XSTRING zurück.
CONCATENATE LINES OF binarchivobject INTO ld_stream IN BINARY MODE.
IF XSTRLEN( ld_stream ) GT binlength.
ld_stream = ld_stream(binlength).
ENDIF.
Dann muss die externe Software das nicht machen und eine potentielle Fehlerquelle ist dadurch weniger.
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.
Ich habe das jetzt auch mal mit einem Webservice ausprobiert. Leider geht da bei der Konvertierung der String ^@ verloren. Ich müsste den also vorher im Programm durch was anderes substituieren und das dann am Ende wieder rückgängig machen. Welche(s) Zeichen könnte ich dafür verwenden?