Zum Inhalt springen

[ABAP] Datei via FTP einlesen


Shadowman

Empfohlene Beiträge

Hallo Leute,

ich muss eine Datei von einem FTP-Server aus lesen und den Inhalt in eine itab schreiben.

Die Funktionen FTP_CONNECT, FTP_COMMAND und FTP_DISCONNECT habe ich schon gefunden.

Ich connecte erst auf den Server, dann mache ich das Command "cd ordnername" und dann versuche ich "get dateiname". Dabei bekomme ich jedoch ein Timeout. Ich habe auch schon versucht mit "get dateiname C:\datei.txt" die Datei runterzuladen, aber auch hier habe ich ein Timeout bekommen.

Könnte mir dabei vielleicht jemand helfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

super!

das hat mich schonmal weiter gebracht. Aber leider noch nicht ganz zum gewünschten ergebnis. Die Datei wird zwar geladen (bekomme die meldung, dass X byte und Y sekunden geladen wurden), aber der inhalt der datei steht mir nicht zur verfügung.

Wie beschrieben nutze ich "get". Habe gerade versucht eine zieldatei für das get anzugeben und da hat er auch die datei runtergeladen. Gibt es ne möglichkeit in dem Fuba den inhalt direkt abzufangen?

CALL FUNCTION 'FTP_COMMAND'

  EXPORTING

    HANDLE = 1

    COMMAND = FTPCOMMAND

    COMPRESS = 'N'

    RFC_DESTINATION = 'SAPFTP'

*    VERIFY =

  IMPORTING

    FILESIZE = SIZE

*    FILEDATE =

*    FILETIME =

  TABLES

    DATA = RESULT

  EXCEPTIONS

    TCPIP_ERROR =1

    COMMAND_ERROR = 2

    DATA_ERROR = 3

    OTHERS = 4.

Bearbeitet von Shadowman
Link zu diesem Kommentar
Auf anderen Seiten teilen

ausserdem habe ich noch das problem, dass ich auch Dateien einlesen muss, die auf dem applikationsserver abgelegt sind.

habe jetzt hier schon was gelesen, dass GUI_UPLOAD dafür ist um die Datei von einem benutzer aus hochzuladen, aber wie siehts mit WS_UPLOAD aus? kennt jemand den befehl um vom applikationsserver aus hochzuladen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Langsam wirds langweilig...blöde selbstgespräche

ausserdem habe ich noch das problem, dass ich auch Dateien einlesen muss, die auf dem applikationsserver abgelegt sind.

habe jetzt hier schon was gelesen, dass GUI_UPLOAD dafür ist um die Datei von einem benutzer aus hochzuladen, aber wie siehts mit WS_UPLOAD aus? kennt jemand den befehl um vom applikationsserver aus hochzuladen?

Zu GUI_UPLOAD/WS_UPLOAD: GUI_UPLOAD ist der nachfolger, da WS_UPLOAD mit ver. 6.40 obsolet geworden ist.

das thema mit den daten auf dem applikationsserver habe ich jetzt mit einem OPEN DATASET gelöst, aber das problem mit dem FTP bleibt weiterhin bestehen

Link zu diesem Kommentar
Auf anderen Seiten teilen

kann denn niemand helfen?

  [COLOR="RoyalBlue"]CONCATENATE[/COLOR] [COLOR="SeaGreen"]'cd'[/COLOR] PFAD [COLOR="RoyalBlue"]INTO[/COLOR] FTPCOMMAND [COLOR="RoyalBlue"]SEPARATED BY[/COLOR] SPACE.

  [COLOR="RoyalBlue"]PERFORM[/COLOR] command.

  [COLOR="RoyalBlue"]CLEAR[/COLOR] FTPCOMMAND.

  FTPCOMMAND = [COLOR="SeaGreen"]'ascii'[/COLOR].

  [COLOR="RoyalBlue"]PERFORM[/COLOR] command.

  [COLOR="RoyalBlue"]CLEAR[/COLOR] FTPCOMMAND.

  [COLOR="RoyalBlue"]CONCATENATE[/COLOR] [COLOR="SeaGreen"]'get'[/COLOR] DATEI [COLOR="RoyalBlue"]INTO[/COLOR] FTPCOMMAND [COLOR="RoyalBlue"]SEPARATED BY[/COLOR] SPACE.

  [COLOR="RoyalBlue"]perform[/COLOR] command.
[COLOR="RoyalBlue"]FORM[/COLOR] command.

  [COLOR="RoyalBlue"]CALL FUNCTION[/COLOR] 'FTP_COMMAND'

    [COLOR="RoyalBlue"]EXPORTING[/COLOR]

      HANDLE                = [COLOR="RoyalBlue"]1[/COLOR]

      COMMAND               = FTPCOMMAND

      COMPRESS              = [COLOR="SeaGreen"]'N'[/COLOR]

[COLOR="Silver"]*      RFC_DESTINATION       = 'SAPFTP'

*      VERIFY                =[/COLOR]

    [COLOR="RoyalBlue"]IMPORTING[/COLOR]

      FILESIZE              = SIZE

[COLOR="Silver"]*      FILEDATE              =

*      FILETIME              =[/COLOR]

    [COLOR="RoyalBlue"]TABLES[/COLOR]

      DATA                  = RESULT

[COLOR="Silver"]*    EXCEPTIONS

*      TCPIP_ERROR           = 1

*      COMMAND_ERROR         = 2

*      DATA_ERROR            = 3

*      OTHERS                = 4[/COLOR]

.

[COLOR="RoyalBlue"]ENDFORM[/COLOR].

Wieso komme ich damit nicht an den inhalt der von DATEI gespeicherten daten dran?

Bearbeitet von Shadowman
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 6 Monate später...

Vielleicht zu spät, aber dennoch...

Daten auf dem Applikationsserver liest man mit den Befehlen "open dataset" und "read dataset" ein. Die SAP Onlinehilfe gibt dazu auch verständliche Beispiele (bei "read dataset"). Also einfach mal in den Editor geschrieben und F1 gedrückt. Da gibt es auch noch mehr Befehle für die "Dateibearbeitung", aber zuvor genannte sind die wichigsten zum Einlesen.

Die Funktionsbausteine GUI_UPLOAD und WS_UPLOAD sind für Dateiuploads vom Frontend zuständig, erfüllen aber die gleiche Funktionalität und sind nicht auf dem Applikationsserver zu gebrauchen.

WS_UPLOAD ist veraltetet und durch GUI_UPLOAD ersetzt worden. Wo vorhanden (in neueren Releases) sollte aber die Verwendung der entsprechenden Methoden der Klasse CL_GUI_FRONTEND_SERVICES den Funktionsbausteinen vorgezogen werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...