E agora usando XmlTag() da SefazClass.
PROCEDURE Main
LOCAL cXml := ""
cXml += [<aut:executarSolicitarAutorizacao soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">]
cXml += [<autorizacao xsi:type="urn:AutorizacaoRequestV2" xmlns:urn="urn:bean.service.ultracard.ultramax.com.br">]
cXml += XmlTag( "codigoCliente", "100008" )
cXml += [<versao xsi:type="xsd:int">2</versao>]
cXml += XmlTag( "codigoDependente", "0" )
cXml += XmlTag( "codigoSubsidio", "100" )
cXml += XmlTag( "numeroRegistroPrescritor", "0" )
cXml += XmlTag( "conselhoPrescritor", "" )
cXml += XmlTal( "estadoConselhoPrescritor", "" )
cXml += [<produtos>]
GeraProduto( @cXml )
cXml += [</produtos>]
cXml += XmlTag( "vendaEntrega", "false" )
cXml += [</autorizacao>]
cXml += [</aut:executarSolicitarAutorizacao>]
Envelope( @cXml )
RETURN cXml
STATIC FUNCTION GeraProduto( cXml )
cXml += [<ProdutoV2>]
cXml += XmlTag( "codigoBarra", "7896641803871" )
cXml += XmlTag( "descricao", "NEOSALDINA DRG 1X20" )
cXml += XmlTag( "codigoFabricante", "9" )
cXml += XmlTag( "fabricante", "TAKEDA PHA" )
cXml += XmlTag( "precoBrutoLoja", "20.29" )
cXml += XmlTag( "precoLiquidoLoja", "20.29" )
cXml += XmlTag( "quantidade", "1" )
cXml += XmlTag( "subTotalLiquidoLoja", "20.29" )
cXml += XmlTag( "porcentagemDesconto", "0.00" )
cXml += XmlTag( "idGrupoProduto", "4" )
cXml += [</ProdutoV2>]
RETURN cXml
STATIC FUNCTION GeraEnvelope( cXml )
LOCAL cInicio := "", cFinal := ""
cInicio += [<soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:aut="http://autorizadorws.ultracard.ultramax.com.br" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">]
cInicio += [<soapenv:Header/>]
cInicio += [<soapenv:Body>]
cFinal += [</soapenv:Body>]
cFinal += [</soapenv:Envelope>]
cXml := cInicio + cXml + cFinal
RETURN cXml
A próxima etapa seria substituir os campos fixos por informações do aplicativo.
É isso que falo sobre NFE, CTE, MDFE, e tudo mais de XML.
Aproveitei esse pra exemplo porque é pequeno.
E no caso dos produtos... provavelmente um do while chamando GeraProduto()
Não fiz nada demais, apenas colei o XML no fonte e fui ajeitando pra facilitar.