vereinzelt kann es vorkommen, dass beim Einsatz eines Arbeitsverzeichnisses für Upload der Upload mit "fehlerhaftes Sub-Kommando" fehlschlägt.
.
/GIB/CL_DCV_FTP_CONNECTION neues Instanz-Attribut mf_logout type xfeld, protected. METHOD ftp_logout. DATA: lf_exit TYPE xfeld, lf_handle TYPE i, "6131 lr_ftp TYPE REF TO /gib/cl_dcv_ftp_connection. "6131 FIELD-SYMBOLS: <ls_connection> TYPE /gib/dcv_obj_instance_s. "6131 lf_exit = call_badi_logout( ). IF lf_exit = 'X'. EXIT. ENDIF. *# vom FTP-Server abmelden *#6131 erst dann abmelden, wenn alle Verbindungen nicht mehr benötigt werden. *# sonst funktioniert FTP_COMMAND nicht mehr. IF mf_logout = space. mf_logout = 'X'. READ TABLE gt_connection ASSIGNING <ls_connection> WITH KEY data_r = me. IF sy-subrc = 0. <ls_connection>-keyval = 'LOGOUT'. ENDIF. READ TABLE gt_connection TRANSPORTING NO FIELDS WITH KEY keyval = space. IF sy-subrc <> 0. *# dies war die letze Verbindung, jetzt sind alle Verbindungen inaktiv LOOP AT gt_connection ASSIGNING <ls_connection>. lr_ftp ?= <ls_connection>-data_r. lr_ftp->ftp_logout( ). ENDLOOP. ENDIF. ELSE. READ TABLE gt_connection TRANSPORTING NO FIELDS WITH KEY keyval = space. IF sy-subrc <> 0. *##6131 CALL FUNCTION 'FTP_DISCONNECT' ... CLEAR: ms_vmi020. ENDIF. "6131 ENDIF. "6131 ENDMETHOD.
Bei einer Verbindung per Badi tritt der Fehler nicht auf. Der Fehler tritt beim Einsatz von native FTP in Kombination mit einem Arbeitsverzeichnis auf. Das Arbeitsverzeichnis dient dazu, die Datei im UTF-8-Format zu erzeugen. Der Baustein FTP_R3_TO_SERVER versagt diesbezüglich. Der Baustein FTP_COMMAND wird deshalb mit dem entsprechenden PUT-Befehl aufgerufen. Wenn jedoch zwischendurch eine 2. FTP-Verbindung aufgebaut und anschließend abgebaut wird (Logout), dann funktioniert FTP_COMMAND auf der 1. Verbindung, die ja eigentlich noch aktiv sein sollte, nicht mehr.