Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[ABAP] Datei via FTP einlesen

Empfohlene Antworten

Veröffentlicht

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?

passiven FTP-modus mal versucht?

geht glaub ich über den befehl PASV.

wenn über den aktiven modus nämlich keine datenkanal aufgemacht werden kann, muss es zwangsläufig einen timeout geben.

s'Amstel

  • Autor

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

  • Autor

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?

  • Autor

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

  • Autor

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.