Annibale,
GetPrinter() does not set the printer for you. You need to use SET PRINTER TO with the return value from GetPrinter() to do that;
LOCAL lcPrinter
lcPrinter = ""
lcPrinter = GetPrinter()
IF NOT EMPTY( lcPrinter) && did the user make a choice
SET PRINTER TO ( lcPrinter )
ENDIF
RETORT FORM ... TO PRINT NOCONSOLE