I suspect part of your issue is with the way you're constructed your heredoc. Try it like so:
$ ftp -n ${FTP_HOST} << STOP
user ${FTP_USERNAME} ${FTP_PASSWORD}
binary
lcd ${FTP_FROM_DIR}
cd ${FTP_TO_DIR}
put ${reportFileName}   
STOP
If you truly want those spaces/tabs in the command then you'll need to change to this form of the heredoc:
$ ftp -n ${FTP_HOST} <<-STOP
    user ${FTP_USERNAME} ${FTP_PASSWORD}
    binary
    lcd ${FTP_FROM_DIR}
    cd ${FTP_TO_DIR}
    put ${reportFileName}   
STOP
Whenever you have spaces/tabs within your heredoc you need to make use of the <<- for to tell the shell to strip the leading spaces/tabs out prior to running the commands that are contained within.
A sidebar on using echo
When you're parsing variables within scripts and you innocently use echo to print messages you're typically getting more than just the string you're interested in. echo will also include a trailing newline character. You can see it here in this example:
$ echo $(echo hi) | hexdump -C
00000000  68 69 0a                                          |hi.|
00000003
The 0a is the ASCII code for a newline. So you'll typically want to disable this behavior by using the -n switch to echo:
$ echo -n $(echo hi) | hexdump -C
00000000  68 69                                             |hi|
00000002
Or even better upgrade to using printf.
References