For security reasons, "ftp://" gets removed when it gets stored on the server. It remains working in your current session because the string is cached on the client exactly as you've typed it in. It's not until you reload the map, and the map requests the popup from the server does the server return the URL without the ftp part.
The database storage is a little more lenient when it comes to storing HTML and will allow ftp. So if you add a new field, and store the full ftp URL in the field, I was able to make it work. Like this:
Where in my case, the ftpfield value is
If you, for example, want a unique ftp document per record, you could split the URL into 2 fields, like this
My data looks like this, where the base URL is in ftp field and the specific file is in its own field. The two fields are then concatenated in the URL.
Note: when you calculate a string field from the table in the map viewer, you need to single quote it.
Hope this helps.
Mike