PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
MSExecAuto CTBA102 com Excel
Versão:
12.1.25
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LeArqTXT.prw (anexo)
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário KAIOSUX KAIOSUX em 30/07/2020, 19:37 h
Local: BA  Registro: 05/05/2019  Postagens: 6
U fiz o execauto mas to com outro problema quando eu importo um arquivo com uma linha vai que é uma beleza, agora quando tem outra linha da PAU.

CT2_DATA CT2_LOTE CT2_SBLOTE CT2_DOC CT2_LINHA
20150401 389651 001 000001 001
20150401 389651 001 000001 002

#include "totvs.ch"
#include "protheus.ch"

User Function CARGACT2()

Local cArq := "CT2.csv"
Local cDir := "C:\01\"
Local cLinha := ""
Local lPrim := .T.
Local aCampos := {}
Local aDados := {}
LOCAL nCont := 0
Local aCab := {}
Local aItens := {}

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Private CTF_LOCK := 0
Private lSubLote := .T.

If !File(cDir+cArq)
MsgStop("O arquivo " +cDir+cArq + " não foi encontrado. A importação será abortada!","[AEST901] - ATENCAO")
Return
EndIf

FT_FUSE(cDir+cArq)
ProcRegua(FT_FLASTREC())
FT_FGOTOP()
While !FT_FEOF()

IncProc("Lendo arquivo texto...")

cLinha := FT_FREADLN()

If lPrim
aCampos := Separa(cLinha,";",.T.)
lPrim := .F.
Else
AADD(aDados,Separa(cLinha,";",.T.))


nCont++


EndIf

FT_FSKIP()
EndDo

//******************INCIO
For nX:=1 To nCont

dbSelectArea("CT2")
dbSetOrder(1)

If !dbSeek(xFilial("CT2")+aDados[nx,2]+aDados[nx,3]+aDados[nx,4]+aDados[nx,5]+aDados[nx,6]) //inicio valida se o doc ja foi lançado valida até a linha

aAdd(aCab, {‘DDATALANC‘ ,STOD(aDados[nx,2]) ,NIL} )
aAdd(aCab, {‘CLOTE‘ ,aDados[nx,3] ,NIL} )
aAdd(aCab, {‘CSUBLOTE‘ ,aDados[nx,4] ,NIL} )
aAdd(aCab, {‘CDOC‘ ,aDados[nx,5] ,NIL} )
aAdd(aCab, {‘CPADRAO‘ ,‘‘ ,NIL} )
aAdd(aCab, {‘NTOTINF‘ ,0 ,NIL} )
aAdd(aCab, {‘NTOTINFLOT‘ ,0 ,NIL} )

aAdd(aItens,{ {‘CT2_FILIAL‘ ,aDados[nx,1] , NIL},;
{‘CT2_LINHA‘ , aDados[nx,6] , NIL},;
{‘CT2_MOEDLC‘ ,‘01‘ , NIL},;
{‘CT2_DC‘ ,aDados[nx,7] , NIL},;
{‘CT2_DEBITO‘ ,aDados[nx,8] , NIL},;
{‘CT2_CREDIT‘ ,aDados[nx,9] , NIL},;
{‘CT2_VALOR‘ , VAL(aDados[nx,10]) , NIL},;
{‘CT2_ORIGEM‘ ,‘CTBA102‘ , NIL},;
{‘CT2_HP‘ ,‘‘ , NIL},;
{‘CT2_HIST‘ ,aDados[nx,11] , NIL},;
{‘CT2_CCD‘ ,aDados[nx,12] , NIL},;
{‘CT2_CCC‘ ,aDados[nx,13] , NIL}})

MSExecAuto({|x, y,z| CTBA102(x,y,z)}, aCab ,aItens, 3)

If lMsErroAuto
lMsErroAuto := .F.
MostraErro()
MsgAlert("ERRO Lançamento" , "Teste Carga CT2")
lRet := .F.
Exit
Endif

else //se o doc ja existir mostra mensagem
MsgAlert("ERRO Lançamento Duplicado, verifique a data, lote, numero do doc, e linha" , "Teste Carga CT2")
EXIT
Endif //fim da valida se o doc ja foi lançado

Next nX

FT_FUSE()

ApMsgInfo("Importação concluída!")

Return

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 31/07/2020, 08:23 h
Local: SP  Registro: 20/08/2010  Postagens: 670



.    pergunta: qual o erro apresentado?




Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário CJ_CAMPOS CJ_CAMPOS em 31/07/2020, 09:44 h
Local: SP  Registro: 22/04/2020  Postagens: 61
Creio que falta a linha do documento ...

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário KAIOSUX KAIOSUX em 31/07/2020, 09:58 h
Local: BA  Registro: 05/05/2019  Postagens: 6
Só processa uma linha.

Não da erro.

Alguem tem esse fonte funcionando ?

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 31/07/2020, 10:57 h
Local: SP  Registro: 20/08/2010  Postagens: 670
você pode anexar o arquivo neste tópico ?
5 ou 6 linhas bastam.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário CJ_CAMPOS CJ_CAMPOS em 31/07/2020, 12:18 h
Local: SP  Registro: 22/04/2020  Postagens: 61
Tente desta maneira..

#include "totvs.ch"
#include "protheus.ch"

User Function CARGACT2()

Local cArq := "CT2.csv"
Local cDir := "C:\01\"
Local cLinha := ""
Local lPrim := .T.
Local aCampos := {}
Local aDados := {}
LOCAL nCont := 0
Local aCab := {}
Local aItens := {}
Local nX := 1 /// Insira esta linha.

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Private CTF_LOCK := 0
Private lSubLote := .T.

If !File(cDir+cArq)
     MsgStop("O arquivo " +cDir+cArq + " não foi encontrado. A importação será abortada!","[AEST901] - ATENCAO")
     Return
EndIf

FT_FUSE(cDir+cArq)
ProcRegua(FT_FLASTREC())
FT_FGOTOP()

While !FT_FEOF()

     IncProc("Lendo arquivo texto...")

     cLinha := FT_FREADLN()

     If lPrim
          aCampos := Separa(cLinha,";",.T.)
          lPrim := .F.
     Else
          AADD(aDados,Separa(cLinha,";",.T.))


          nCont++


     EndIf

     FT_FSKIP()
EndDo

//******************INCIO
For nX:=1 To nCont

     dbSelectArea("CT2")
     dbSetOrder(1)

     // Escolha um dos dois abaixo , ou respeita o arquivo origem, ou respeita a valor do xFilial("CT2")
     If !dbSeek(xFilial("CT2")+aDados[nx,2]+aDados[nx,3]+aDados[nx,4]+aDados[nx,5]+aDados[nx,6]) //inicio valida se o doc ja foi lançado valida até a linha
     If !dbSeek(aDados[nx,1]+aDados[nx,2]+aDados[nx,3]+aDados[nx,4]+aDados[nx,5]+aDados[nx,6]) //inicio valida se o doc ja foi lançado valida até a linha

          If nX == 1 // Fazer somente para a primeira linha
               aAdd(aCab, {'DDATALANC' ,STOD(aDados[nx,2]) ,NIL} )
               aAdd(aCab, {'CLOTE' ,aDados[nx,3] ,NIL} )
               aAdd(aCab, {'CSUBLOTE' ,aDados[nx,4] ,NIL} )
               aAdd(aCab, {'CDOC' ,aDados[nx,5] ,NIL} )
               aAdd(aCab, {'CPADRAO' ,'' ,NIL} )
               aAdd(aCab, {'NTOTINF' ,0 ,NIL} )
               aAdd(aCab, {'NTOTINFLOT' ,0 ,NIL} )
          Endif

          aAdd(aItens,{ {'CT2_FILIAL' ,aDados[nx,1] /* ou XFILIAL("CT2" )*/ , NIL},;
          {'CT2_LINHA' , aDados[nx,6] , NIL},;
          {'CT2_MOEDLC' ,'01' , NIL},;
          {'CT2_DC' ,aDados[nx,7] , NIL},;
          {'CT2_DEBITO' ,aDados[nx,8] , NIL},;
          {'CT2_CREDIT' ,aDados[nx,9] , NIL},;
          {'CT2_VALOR' , VAL(aDados[nx,10]) , NIL},;
          {'CT2_ORIGEM' ,'CTBA102' , NIL},;
          {'CT2_HP' ,'' , NIL},;
          {'CT2_HIST' ,aDados[nx,11] , NIL},;
          {'CT2_CCD' ,aDados[nx,12] , NIL},;
          {'CT2_CCC' ,aDados[nx,13] , NIL}})

          MSExecAuto({|x, y,z| CTBA102(x,y,z)}, aCab ,aItens, 3)

          If lMsErroAuto
               lMsErroAuto := .F.
               MostraErro()
               MsgAlert("ERRO Lançamento" , "Teste Carga CT2")
               lRet := .F.
               Exit
          Endif

     else //se o doc ja existir mostra mensagem
          MsgAlert("ERRO Lançamento Duplicado, verifique a data, lote, numero do doc, e linha" , "Teste Carga CT2")
          EXIT
     Endif //fim da valida se o doc ja foi lançado

Next nX

FT_FUSE()

ApMsgInfo("Importação concluída!")

Return

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário INFOBRENO INFOBRENO em 31/07/2020, 12:41 h
Local: MT  Registro: 02/03/2011  Postagens: 117
Anexei um que utilizo aqui na empresa e está importando certinho, veja se te ajuda.
Breno Nogueira

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário KAIOSUX KAIOSUX em 31/07/2020, 14:29 h
Local: BA  Registro: 05/05/2019  Postagens: 6
Ajustamos aqui pessoal.

Problema no array apenas.

Para quem precisar segue em anexo.

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal