The key is the Prompt: variable.
We want/need to use "Prompt:DBPROMPT_NOPROMPT" but you'll find, if you add this to the connection string, it will fail with an error "you do not have access to the data source" (although the "Test Connection" button will work). Saving it as-is and running the load script gave the error "Format of the initialization string does not conform to the OLE DB specification"
Searching for that error message on Google turned up this page, OLE DB Error: "Format of the initialization string does not conform to the OLE DB specification."
In there it says,
Here is what OLE DB help document says:
Property group: Initialization
Property set: DBPROPSET_DBINIT
Typical R/W: R/W
Indicates whether to prompt the user during initialization. One of the following values:
DBPROMPT_PROMPT—Always prompt the user for initialization information.
DBPROMPT_COMPLETE—Prompt the user only if more information is needed.
DBPROMPT_COMPLETEREQUIRED—Prompt the user only if more information is needed. Do not allow the user to enter optional information.
DBPROMPT_NOPROMPT—Do not prompt the user.
This is the enumerated value in oledb.h:
#define DBPROMPT_PROMPT 0x01
#define DBPROMPT_COMPLETE 0x02
#define DBPROMPT_COMPLETEREQUIRED 0x03
#define DBPROMPT_NOPROMPT 0x04
So you shoud say in this way in connection string: "...;Prompt=3;"
So all I had to do was change the final statement to ;Prompt=4" and voila! it works!
So my whole conenction statement (note: I have moved the USER ID and PASSWORD into the Qlik Management Console for 'protection' against prying eyes) is;
OLEDB CONNECT32 TO [Provider=MDrmSap.2;Data Source="SAP_SYSTEM_ID";SFC_CLIENT=100;SFC_LANGUAGE=EN;Prompt=4]