I have implemented the following query and used a free form report to generate a invoice document and it works:
Query
 Inv | INV NUMBER #  | INV DATE | CUSTOMER # | 
     | Check _INV    | Check    | _CUS       | 
 Invlines | INV NUMBER #  | INV LINE |  QTY   | DESCRIPTION | AMOUNT | 
          | _INV          | Check    | Check  | Check       | Check  | 
 Invlines | CURRENCY | 
          | Check    | 
 Customer | CUSTOMER # |  VAT   |  NAME  | ADDRESS 1 | ADDRESS 2 | 
          | _CUS       | Check  | Check  | Check     | Check     | 
 Customer | ADDRESS 3 |  TOWN  | POSTAL CODE | REGION | COUNTRY | 
          | Check     | Check  | Check       | Check  | Check   | 
Endquery
Do_It!
However the query obviously captures all the pairs INV / INVLINE(s). And we would like to print/generate report for just ONE invoice.
So before the above query I ask for the invoice number.
But how can I translate the INVNO variable value to the above query so I filter further by just that INV NUMBER # while maintaining the relationship?
Clear                                      
@ 1,5 ?? "Specify Invoice Number: "
Accept "N" to INVNO
If RETVAL = False Then
        Return
EndIf
; WHAT IS MISSING HERE TO USE INVNO provided value in above query ??