wir haben folgende Anforderung:
Es soll in einer Prozesskette im BW einen Schritt geben, in dem eine Datei von einem Laufwerk in die AL11 hochgeladen wird, um diese in den weiteren Schritten der Prozesskette zu verarbeiten.
Die Idee dazu war ein Programm, welches in die Prozesskette eingeplant wird. Das Einplanen hat geklappt, aber genau der Schritt läuft jedes Mal auf einen Fehler, sodass wir die Prozesskette an der Stelle immer manuell betätigen müssen.
Die Recherche zu dem Programm ZFILETOAL11 hat ergeben, dass der Baustein ARCHIVFILE_CLIENT_TO_SERVER der richtige sein soll. Das haben wir ausprobiert und festgestellt, dass unser Pfad leider zu lang ist (70 Zeichen erlaubt der Baustein). Somit haben wir den Baustein durchleuchtet und die SCMS-Funktionen rauskopiert.
data: lv_path type c length 150, lv_target type c length 150.
if sy-subrc <> 0.
message 'Es gibt ein Problem beim DOWNLOAD' type 'E'.
else.
message 'Alles hat geklappt.' type 'I'.
endif.
else.
message 'Es gibt ein Problem beim UPLOAD' type 'E'.
endif.
endif.
Wenn ich das Programm nun in der SE38 (oder auch in der TA) aufrufe, lädt es die Datei wie gewünscht in die AL11 hoch. Auch Mitarbeiter, die nicht auf den lv_path auf dem Laufwerk berechtigt sind, können durch das Programm die Datei in die AL11 laden. Auch, wenn wir den Baustein ARCHIVFILE_CLIENT_TO_SERVER in der SE37 testen, wird eine Datei von einem kürzeren Pfad hochladen.
Jedoch bricht das Programm in der Prozesskette und als Job immer ab. Der Debugger sagt "Fehler beim Transfer" im SCMS-UPLOAD. Laut weiterer Recherche wird ein Baustein benötigt, der im Background laufen kann. Jegliche Suchergebnisse zum Background führen aber wieder zu dem Baustein ARCHIVFILE_CLIENT_TO_SERVER. Bei SAP direkt ist der Baustein nicht freigegeben, da kommen wir nicht weiter.
Hat jemand hier vielleicht eine Alternative zu dem Baustein oder generell eine funktionierende Lösung zu dem Problem?
Auf welchem Betriebssystem laufen eure Applikationsserver?
Unter Windows könntet ihr euch mit einem Netzwerkshare behelfen.
Unter Unix/Linux könnt ihr mit SAMBA/CIFS ein Netzwerkshare simulieren.
Was generell immer geht ist FTP oder HTTP.
Die Netzwerkshares können vom Appl.Server via OPEN DATASET direkt gelesen werden. Für FTP braucht es FTP_SERVER_TO_R3 und für HTTP braucht es HTTP_GET_FILE.
Wenn ihr dann auch noch mit ARCHIVOBJECT_CREATE_TABLE anstatt ARCHIVFILE_CLIENT_TO_SERVER arbeitet, ist die Länge des Pfades auch kein Problem mehr.
PS.: Bitte die Code-Tags für Quellcode verwenden. Danke.
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.
Danke für deine Antwort.
Wir haben Windows Applikationsserver.
SAPFTP und SAPFTPA wurden mit dem Report RSFTP005 eingerichtet.
Soweit ich informiert bin, können wir SAP keinen direkten Zugriff auf das Laufwerk geben. Wir werden deine gelisteten Bausteine ausprobieren.
Vom Server (in Hintergrundausführung) aus funktioniert nur SAPFTPA.
Zugriff auf Laufwerke ist nicht unbedingt notwendig. Soweit ich weiß kann der SAP Windows-Kernel auch mit der "\\server\freigabe"-Syntax umgehen. Natürlich nur sofern der Windows-Benutzer unter dem das SAP-System läuft auch berechtigt ist auf die Netzwerkfreigabe zuzugreifen.
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.
Der Baustein SCMS_UPLOAD mit dem Parameter frontend = 'X' funktioniert nur im Frontend. Wenn der Parameter frontend auf abap_false gesetzt wird und ihr sicherstellt, dass der Windows-Benutzer SAPService<SID> Zugriff auf die Datei hat, sollte es funktionieren. <SID> ist die 3-stellige System-Id.