Desenvolvi o seguinte fonte para gerar etiqueta na impressora térmica, porem quando quando vou executar ele no Protheus a tela fica branca e trava tudo.
Segue fonte.
#INCLUDE "RWMAKE.CH"
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOTVS.CH"
#INCLUDE "TOPCONN.CH"
User Function IDFUNC1()
Local cMPrint := "OS 214" //"Datamax I-4208" "DATAMAX M-4206" //ALLEGRO //ALLEGRO2 //DATAMAX
Local cPorta := "LTP1"
Local cAlias := getNextAlias() //cria um alias temporário
Local cFiltro := "%"
Private cPerg := 'IDFUNC'
Pergunte(cPerg,.T.)
cFiltro += " SRA010.RA_FILIAL = '"+MV_PAR01+"' "
cFiltro += " AND NNA010.NNA_CODIGO = '"+MV_PAR02+"' "
cFiltro += "%"
BeginSql Alias cAlias
SELECT
SRA010.RA_FILIAL,
SRA010.RA_NOME,
SUBSTRING(SRA010.RA_CIC, 1,3)+'.'+SUBSTRING(SRA010.RA_CIC, 4,3 )+'.'++SUBSTRING(SRA010.RA_CIC, 7,3)+'-'++SUBSTRING(SRA010.RA_CIC,10 ,2) AS CPF,
SUBSTRING(SRA010.RA_NASC,7,2)+ '/'+SUBSTRING(SRA010.RA_NASC,5,2)+'/'+SUBSTRING(SRA010.RA_NASC,1,4) AS DATA_NASC,
SUBSTRING(SRA010.RA_ADMISSA,7,2)+ '/'+SUBSTRING(SRA010.RA_ADMISSA,5,2)+'/'+SUBSTRING(SRA010.RA_ADMISSA,1,4) AS DATA_ADMISSAO,
SUBSTRING(SRJ010.RJ_DESC, 1, LEN(SRJ010.RJ_DESC)-1) AS FUNCAO,
NNA010.NNA_CODIGO,
TM0010.TM0_MAT,
(CASE TM0010.TM0_SANGUE
WHEN '1' THEN 'A'
WHEN '2' THEN 'B'
WHEN '3' THEN 'AB'
WHEN '4' THEN 'O'
ELSE '' END) AS T_SANGUE,
(CASE TM0010.TM0_FATORH
WHEN '1' THEN '+'
WHEN '2' THEN '-'
ELSE '' END) AS T_FATOR
FROM SRA010
LEFT JOIN NNA010 ON SRA010.RA_CIC = NNA010.NNA_CPF
LEFT JOIN SRJ010 ON SRA010.RA_CODFUNC = SRJ010.RJ_FUNCAO
LEFT JOIN TM0010 ON SRA010.RA_CIC = TM0010.TM0_CPF
WHERE %exp:cFiltro%
EndSql
(cAlias)->(dbGoTop())
//MSCBPRINTER(cModelPrt, cPorta, nDensidade, nTamanho, lSrv, nPorta, cServer, cEnv, nMemoria, cFila, lDrvWin, cPathSpool)
MSCBPRINTER(cMPrint,cPorta,NIL,,.F.,,,,,,.T.)
MSCBCHKSTATUS(.F.)
While !(cAlias)->(Eof())
//MSCBBEGIN(nxQtde,nVeloc,nTamanho,lSalva)
MSCBBEGIN(1,4)
//MSCBSAY(nXmm, nYmm, cTexto, cRotacao, cFonte, cTam, lReverso, lSerial, cIncr, lZerosL, lNoAlltrim)
MSCBSAY(05,30,OemToAnsi((cAlias)->RA_NOME),"N","3","01")
//AQUI EU MOBTO O RESTANTE DO CODIGO
//MSCBSAYBAR(nXmm, nYmm, cConteudo, cRotacao, cTypePrt, nAltura, lDigVer, lLinha, lLinBaixo, cSubSetIni, nLargura, nRelacao, lCompacta, lSerial, cIncr, lZerosL)
//MSCBSAYBAR(62,54,alltrim((cAlias)->RA_FILIAL+""+TM0_MAT),"N","MB01",10,.F.,.T.,.F.,,2,1,.F.)
MSCBEND()
Enddo
MSCBCLOSEPRINTER()
(cAlias)->(dbCloseArea())
return