Yo no he conseguido enviarlo directamente como tu estas haciendo. Lo que hacemos es en el evento OnBeforeExecute generar otro fichero en BASE64 y enviarlo.
Código Delphi
[-]
var
ss:TFileStream;
i : Integer;
NficheroTemp : STring;
ListaFichero : TStringList;
Base64: TBase64Encoding;
Salida : Ansistring;
begin
NficheroTemp := Copy(Fichero, 1 , Length(Fichero) - 4) + 'TMP.XML';
ListaFichero := TStringList.Create;
ListaFichero.LoadFromFile(Fichero);
Base64 := TBase64Encoding.Create;
Salida := Base64.Encode(ListaFichero.Text);
Base64.Destroy;
ListaFichero.Clear;
ListaFichero.Add('');
ListaFichero.Add('tb="https://ptbai.ticketbai.eus">');
ListaFichero.Add('');
ListaFichero.Add('');
ListaFichero.Add('');
ListaFichero.Add('');
ListaFichero.Add('');
ListaFichero.Add(salida);
ListaFichero.Add('');
ListaFichero.Add('');
ListaFichero.Add('');
ListaFichero.Add('');
if FileExists(NficheroTemp) then
System.SysUtils.DeleteFile(NficheroTemp);
ListaFichero.SaveToFile(NficheroTemp);
ListaFichero.Destroy;
SOAPRequest.Size := 0;
ss := TFileStream.Create(NFicheroTemp, System.SysUtils.fmOpenRead);
SOAPRequest.Position := 0;
SOAPRequest.CopyFrom( ss, ss.Size);
ss.Free;
SOAPRequest.Position := 0;
if FileExists(NficheroTemp) then
System.SysUtils.DeleteFile(NficheroTemp);